NTL’s most important security design decision: cryptography is a module, not a foundation.
The Problem with Hardcoded Crypto
Every major protocol today has cryptographic assumptions baked into its core:
- TLS uses RSA or ECDSA for key exchange
- Bitcoin uses secp256k1 for signatures
- Ethereum uses ECDSA with keccak256
- HTTPS certificates depend on RSA/ECC
When quantum computing breaks these schemes (not if — when), every protocol that hardcoded them faces an existential rewrite.
NTL’s Approach
NTL defines a CryptoModule interface that all cryptographic operations go through:
Default Implementation
NTL ships with a default PostQuantumModule that uses:
These are the current NIST Post-Quantum Cryptography standards. When they’re superseded, a new module is published — the protocol doesn’t change.
pq-v1 is specified but not implemented. The only module the reference
implementation provides today is classical-v1 — Ed25519 signatures, X25519
key agreement, BLAKE3 hashing. See
spec/crypto-interface for the full status table.A node configured for a module this build cannot provide fails to start,
naming the modules it does support. It does not silently fall back: an
operator who asked for post-quantum signing and got Ed25519 has been told the
opposite of the truth about their deployment’s confidentiality horizon.
Swapping Modules
crypto_module is a top-level field, not a [crypto] table:
Nodes negotiate crypto modules during the synapse handshake. If two nodes
support different modules they fall back to the highest common module, or
refuse the synapse.
Hybrid Mode
Design, not shipped. hybrid-v1 is specified; no implementation provides it
yet.
The intent is that during the transition period a hybrid mode signs and encrypts with both classical and post-quantum algorithms. This provides backward compatibility with systems that don’t yet support PQ crypto while maintaining quantum resistance.
Last modified on September 11, 2026