PQC Algorithm Reference
Plain-English guide to NIST's finalized post-quantum cryptography standards. What each algorithm does, what it replaces, key sizes, and where to deploy it.
What it does: ML-KEM establishes a shared secret between two parties — like agreeing on an encryption key over an insecure channel — without any eavesdropper being able to derive that secret, even with a quantum computer. It replaces ECDH (used in TLS handshakes, SSH, VPNs, Signal protocol) and RSA key encapsulation.
Where to deploy ML-KEM first
TLS 1.3 key exchange (highest priority — protects against HNDL attacks), VPN key establishment, SSH session key exchange, encrypted messaging key agreement.
What it does: ML-DSA creates unforgeable digital signatures that verify authenticity and integrity of data or messages. A quantum computer running Shor's algorithm can forge ECDSA and RSA signatures — ML-DSA is resistant to this attack.
Where to deploy ML-DSA first
Code signing (software, firmware, documents), TLS certificates (once CAs begin issuing PQC certificates), JWT signing for long-lived tokens, document authentication, PKI root and intermediate CA certificates.
What it does: SLH-DSA is the most conservative PQC signature scheme. Its security relies only on the security of hash functions (SHA2 or SHAKE) — not on lattice assumptions. If lattice-based cryptography (ML-KEM, ML-DSA) were later broken, SLH-DSA would remain secure. Use it for the highest-value, lowest-frequency signing operations.
When to choose SLH-DSA over ML-DSA: Root CA key signing (done rarely, must remain secure for 20+ years), firmware signing for critical infrastructure, offline signing of high-value artefacts. Use ML-DSA for frequent, online signing operations.
FALCON is the compact alternative to ML-DSA. Its smaller signature sizes make it suitable for environments where bandwidth is constrained. However, its implementation complexity means it should only be used by teams with strong cryptographic engineering capability — subtle implementation errors can leak private keys via side channels.
📊 Algorithm Comparison: Classical vs Post-Quantum
Key Exchange / Key Encapsulation
| Algorithm | Quantum Safe? | Public Key | Ciphertext/Share | Speed | Status |
|---|---|---|---|---|---|
| RSA-2048 | Broken by Shor's | 256 bytes | 256 bytes | Slow | Avoid for new deployments |
| ECDH P-256 | Broken by Shor's | 64 bytes | 32 bytes | Fast | Avoid for new deployments |
| X25519 | Broken by Shor's | 32 bytes | 32 bytes | Very fast | Use in hybrid only |
| ML-KEM-512 | Quantum safe | 800 bytes | 768 bytes | Very fast | FIPS 203 — Level 1 |
| ML-KEM-768 | Quantum safe | 1,184 bytes | 1,088 bytes | Very fast | FIPS 203 — Recommended |
| ML-KEM-1024 | Quantum safe | 1,568 bytes | 1,568 bytes | Fast | FIPS 203 — Maximum |
Digital Signatures
| Algorithm | Quantum Safe? | Public Key | Signature Size | Speed | Best Use |
|---|---|---|---|---|---|
| RSA-PSS-2048 | Broken by Shor's | 256 bytes | 256 bytes | Slow sign | Migrate away |
| ECDSA P-256 | Broken by Shor's | 64 bytes | 64 bytes | Fast | Migrate away |
| Ed25519 | Broken by Shor's | 32 bytes | 64 bytes | Very fast | Hybrid use only |
| ML-DSA-44 | Quantum safe | 1,312 bytes | 2,420 bytes | Fast | FIPS 204 — Level 2 |
| ML-DSA-65 | Quantum safe | 1,952 bytes | 3,309 bytes | Fast | FIPS 204 — Recommended |
| ML-DSA-87 | Quantum safe | 2,592 bytes | 4,627 bytes | Fast | FIPS 204 — Level 5 |
| SLH-DSA-SHA2-128s | Quantum safe | 32 bytes | 7,856 bytes | Very slow sign | FIPS 205 — root CAs, firmware |
| SLH-DSA-SHA2-256s | Quantum safe | 64 bytes | 29,792 bytes | Very slow sign | FIPS 205 — max security |
| FALCON-512 | Quantum safe | 897 bytes | 666 bytes | Fast verify | FIPS 206 — compact bandwidth |
Symmetric algorithms — still secure
🚀 Where to Deploy Each Algorithm
| Use Case | Algorithm | Priority | Notes |
|---|---|---|---|
| TLS key exchange | ML-KEM-768 (hybrid with X25519) | Critical | Protects against HNDL — highest priority. Enable now in hybrid mode. |
| TLS certificate signature | ML-DSA-65 (when CAs support) | High | Wait for CA ecosystem support — transitioning slower than key exchange. |
| Code signing | ML-DSA-65 or SLH-DSA-SHA2-128s | High | Use SLH-DSA for root signing keys. ML-DSA for routine signing. |
| SSH session keys | ML-KEM-768 (hybrid) | High | OpenSSH 9.0+ supports hybrid Kyber. Update server and client configs. |
| SSH host authentication | ML-DSA-65 | Medium | Secondary to session key exchange. Update after key exchange migration. |
| VPN key exchange | ML-KEM-768 (hybrid) | High | IPSec/IKEv2 with hybrid PQC. Check vendor support (StrongSwan, WireGuard). |
| PKI root CA | SLH-DSA-SHA2-256s | Medium | Longest-lived keys — use most conservative algorithm. Plan carefully. |
| PKI intermediate CA | ML-DSA-87 or SLH-DSA-SHA2-128s | Medium | Balance security and performance. Intermediate CAs rotated more frequently. |
| JWT signing (long-lived) | ML-DSA-65 | Standard | Replace ES256/RS256 in JWT header. Library support growing (BouncyCastle, etc.) |
| Document signing | ML-DSA-65 | Standard | PDF/XML digital signatures. Wait for tool support — Adobe, DocuSign roadmaps. |
| HSM-protected keys | ML-KEM-768 + ML-DSA-65 | High | Verify HSM firmware PQC support before migration. May require hardware replacement. |
💻 Code Examples — Enabling PQC
OpenSSL 3.5+ — ML-KEM in TLS
Python — ML-DSA signatures with liboqs
🔀 Hybrid Mode — The Safe Transition Strategy
Hybrid mode runs a classical algorithm (X25519, ECDSA) in parallel with a PQC algorithm (ML-KEM, ML-DSA). The combined security is at least as strong as the stronger of the two. If PQC is broken (unlikely but possible — these are new algorithms), classical crypto still protects you. If classical crypto is broken by quantum, PQC still protects you.
Hybrid combinations in production today
| Hybrid Combination | Where Used | Support |
|---|---|---|
| X25519Kyber768 / X25519MLKEM768 | TLS 1.3 key exchange | Chrome 116+, Firefox, Cloudflare, Google, AWS |
| P256Kyber768 / P256MLKEM768 | TLS 1.3 key exchange (FIPS environments) | BoringSSL, some enterprise products |
| ssh-kyber768-x25519 | SSH session key exchange | OpenSSH 9.0+ (hybrid KEX) |
| ECDSA + ML-DSA composite | X.509 certificates | Draft IETF RFC — not yet production |