A complete blockchain implementation featuring: - synord: Full node with GHOSTDAG consensus - explorer-web: Modern React blockchain explorer with 3D DAG visualization - CLI wallet and tools - Smart contract SDK and example contracts (DEX, NFT, token) - WASM crypto library for browser/mobile
4.4 KiB
4.4 KiB
Phase 0, Milestone 2: Cryptography
Hybrid quantum-resistant cryptographic primitives
Status: ✅ Complete
Priority: Critical
Crate: synor-crypto
Overview
Implement hybrid cryptographic system combining classical Ed25519 with post-quantum Dilithium3 for quantum-resistant security.
Tasks
Task 2.1: Hashing Functions
- Implement Blake3 hashing (primary)
- Implement SHA-256 (compatibility)
- Implement SHA-512 (Ed25519 requirement)
- Add merkle tree support
Files:
crates/synor-crypto/src/hash.rs
Task 2.2: Ed25519 Implementation
- Keypair generation
- Message signing
- Signature verification
- Deterministic key derivation
Files:
crates/synor-crypto/src/ed25519.rs
Task 2.3: Dilithium3 Implementation
- Keypair generation (PQC)
- Message signing
- Signature verification
- Parameter configuration
Files:
crates/synor-crypto/src/dilithium.rs
Task 2.4: Hybrid Signature Scheme
- Combined Ed25519 + Dilithium3 keypair
- Hybrid signature creation
- Hybrid signature verification
- Signature serialization format
Files:
crates/synor-crypto/src/hybrid.rs
Task 2.5: BIP39 Mnemonic Support
- 24-word mnemonic generation
- Mnemonic validation
- Seed derivation from mnemonic
- Passphrase support
Files:
crates/synor-crypto/src/mnemonic.rs
Task 2.6: Key Derivation
- PBKDF2 for password-based derivation
- Argon2id for wallet encryption
- HKDF for key expansion
- BIP32-like hierarchical derivation
Files:
crates/synor-crypto/src/kdf.rs
Task 2.7: Encryption
- AES-256-GCM for symmetric encryption
- ChaCha20-Poly1305 alternative
- Key wrapping for wallet files
Files:
crates/synor-crypto/src/encryption.rs
Validation
Validation Commands
# Run unit tests
cargo test -p synor-crypto
# Run benchmarks
cargo bench -p synor-crypto
# Check for known vulnerabilities
cargo audit
# Lint
cargo clippy -p synor-crypto -- -D warnings
Validation Agents
| Agent | Command | Purpose |
|---|---|---|
code-reviewer |
Review crypto implementation | Security-focused code review |
silent-failure-hunter |
Check error handling | Ensure no silent crypto failures |
Validation Criteria
- Ed25519 signatures match test vectors (RFC 8032)
- Dilithium3 signatures match NIST test vectors
- Hybrid verify requires both signatures valid
- Mnemonic words from BIP39 wordlist
- Encryption uses authenticated modes only
- No use of deprecated crypto primitives
Security Checks
- Private keys zeroed after use
- Constant-time signature verification
- No timing side channels
- RNG properly seeded
- No key material in error messages
- Memory not swapped to disk (mlock where possible)
Test Vectors
// Ed25519 test vector (RFC 8032)
let secret = hex!("9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60");
let public = hex!("d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a");
let message = b"";
let expected_sig = hex!("e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b");
Benchmark Targets
| Operation | Target | Actual |
|---|---|---|
| Ed25519 sign | <50µs | 13µs |
| Ed25519 verify | <100µs | 32.8µs |
| Dilithium3 sign | <200µs | 135µs |
| Dilithium3 verify | <100µs | 44.4µs |
| Hybrid verify | <200µs | 82µs |
| Blake3 1KB | <1µs | 0.6µs |
Dependencies
ed25519-dalek- Ed25519 implementationpqcrypto-dilithium- Dilithium3 PQCblake3- Blake3 hashingaes-gcm- AES-256-GCM encryptionargon2- Password hashingbip39- Mnemonic supportzeroize- Secure memory clearing
Compliance
NIST Standards
- Dilithium3 follows FIPS 204 (draft)
- AES-256-GCM follows FIPS 197
- SHA-256/512 follows FIPS 180-4
Best Practices
- OWASP Cryptographic Storage Cheat Sheet
- CWE-327: Use of Broken Crypto Algorithm (none used)
- CWE-328: Reversible One-Way Hash (none used)
Acceptance Criteria
- All 47 unit tests pass
- Benchmarks meet targets
- No security vulnerabilities in cargo-audit
- Memory properly zeroed after crypto operations
- Test vectors validated
Completed: January 2025