Notebook 11 — Deployment, FAQ, glossary#
Where PQC is actually running in 2026, common misconceptions, and a vocabulary reference.
Part A — Real-world deployment status (2026)#
Web / TLS#
Chrome, Edge: hybrid
X25519Kyber768(draft-tls-westerbaan) enabled by default since Chrome 124 (April 2024). Now also seesX25519MLKEM768(FIPS 203 version) rolling out in 2025.Cloudflare: edge TLS 1.3 with
X25519MLKEM768available since late 2024. Roughly ~15% of connections use PQ hybrid today.AWS KMS, Amazon s2n-tls, Google ALTS: all have hybrid deployments; internal Google traffic has been PQ-hybrid for several years.
Messaging#
Apple iMessage PQ3 (Feb 2024): first widely deployed PQ key agreement in a consumer product. Uses a KEM (their own construction, evolving to ML-KEM).
Signal PQXDH (Sep 2023): post-quantum extended triple Diffie-Hellman, uses hybrid CRYSTALS-Kyber.
WhatsApp, Telegram: announced migration plans, status varies.
Firmware / code signing#
Microsoft, Google Android: rolling out ML-DSA for certificate authorities and firmware signing.
FIDO2 / WebAuthn: PQ extensions being standardized (2025).
Part B — Migration strategy#
Hybrid first, PQ-only later. Every production deployment in 2024–2026 is hybrid: classical (X25519 or ECDSA) + post-quantum (ML-KEM or ML-DSA) in parallel. The shared secret or signature is valid only if both halves are. This buys:
Safety against surprise cryptanalysis on the new PQ schemes.
Backward compatibility — if the peer doesn’t understand PQ, negotiate down to classical.
Crypto agility. Applications that hard-code RSA/ECDSA are painful to migrate. The lesson: wrap key/signature types behind an algorithm identifier so swapping is a config change, not a code rewrite.
Harvest-now-decrypt-later (HNDL) priority list:
Long-horizon confidential data (medical records, legal docs, government). Migrate now.
Short-lived session keys for ephemeral traffic (web browsing). Less urgent.
Identity and signing keys (certificates): plan a 5–10 year transition.
Part C — FAQ and common misconceptions#
Q: “Grover’s algorithm breaks AES.”
A: No. Grover gives a quadratic speedup. AES-128 drops from 128-bit security to roughly 64-bit quantum security; AES-256 keeps ~128-bit quantum security. Double the key and move on. Symmetric crypto is fine.
Q: “PQC is slow and huge.”
A: Mixed. ML-KEM-768 does encapsulation in ~50 μs in optimized C — faster than RSA-2048. Ciphertext is 1088 bytes (vs 32 for X25519) — noticeably larger but not painful. ML-DSA signatures are ~3 KB vs 64 B for ECDSA — that’s the real size cost. SPHINCS+ signatures can be 40 KB — that’s expensive and why people prefer ML-DSA when possible.
Q: “Quantum computers are 30 years away, why rush?”
A: Three reasons: (1) nobody knows — timelines are guesses. (2) Harvest-now-decrypt-later means attacks on today’s data can happen at Q-Day. (3) Migrations at internet scale take 5–10 years even when we know what to do. Starting in 2024 gives us a buffer.
Q: “If quantum breaks RSA, won’t it also break ML-KEM eventually?”
A: Possibly. Lattice-based cryptography has had ~30 years of study; no polynomial quantum or classical attack has been found, and there are worst-case-to-average-case reductions (solving LWE on average is at least as hard as solving lattice problems in the worst case — an unusually strong guarantee). That said, “no attack yet” is not “no attack forever.” This is why we use hybrid deployments and also standardize SLH-DSA as a backup based only on hash-function security.
Q: “Should I replace my symmetric encryption too?”
A: No. Keep AES-GCM / ChaCha20-Poly1305. Just make sure your asymmetric key establishment is post-quantum.
Q: “Why is ML-KEM’s public key 800 bytes but ECDH’s is 32?”
A: Lattice KEMs encode a k×n vector of coefficients in Z_q. For ML-KEM-512: k=2, n=256, each coefficient 12 bits → 2·256·12/8 = 768 bytes, plus a 32-byte seed. ECDH sends a single curve point (32 bytes). This is a structural cost of lattice schemes — no known way to get dramatically smaller.
Part D — Glossary (quick reference)#
Term |
Meaning |
|---|---|
BDD |
Bounded Distance Decoding. CVP when the target is guaranteed close to the lattice. LWE reduces to BDD. |
CBD |
Centered Binomial Distribution. ML-KEM’s way of sampling small noise. |
CVP |
Closest Vector Problem. Given a target, find the nearest lattice point. |
Encapsulation / Decapsulation |
KEM operations. Encaps produces |
FIPS 203 / 204 / 205 |
NIST standards for ML-KEM, ML-DSA, SLH-DSA. |
FO transform |
Fujisaki-Okamoto. Turns an IND-CPA PKE into an IND-CCA2 KEM. |
Grover’s algorithm |
Quantum search. Quadratic speedup — halves effective symmetric security. |
Hybrid |
Running two KEMs (or signatures) in parallel — e.g., X25519 + ML-KEM. |
IND-CCA2 |
Indistinguishability under adaptive chosen-ciphertext attack. The target for KEMs. |
IND-CPA |
Indistinguishability under chosen-plaintext attack. What K-PKE inside ML-KEM achieves alone. |
KAT |
Known Answer Test. NIST-published test vectors for byte-exact compliance. |
KEM |
Key Encapsulation Mechanism. Public-key protocol producing a shared secret. |
K-PKE |
The IND-CPA public-key encryption scheme inside ML-KEM. |
Lattice |
|
LWE |
Learning With Errors. Given noisy linear samples |
ML-DSA |
Module-Lattice Digital Signature Algorithm. FIPS 204. Dilithium rebranded. |
ML-KEM |
Module-Lattice KEM. FIPS 203. Kyber rebranded. |
Module-LWE (MLWE) |
LWE over vectors of polynomials. ML-KEM’s hardness assumption. |
NTT |
Number-Theoretic Transform. FFT over Z_q; makes polynomial multiplication O(n log n). |
PKE |
Public-Key Encryption. Encrypt with public key, decrypt with private. |
PRF |
Pseudo-Random Function. Keyed, output indistinguishable from random. |
PRNG |
Pseudo-Random Number Generator. |
PQC |
Post-Quantum Cryptography. Schemes conjectured safe against quantum computers. |
Q-Day |
The day a cryptographically relevant quantum computer exists. Date unknown. |
Ring-LWE (RLWE) |
LWE over a single polynomial ring. Predecessor to MLWE. |
R_q |
|
Shor’s algorithm |
Quantum polynomial-time solution to factoring and discrete log. Breaks RSA/ECC. |
SIS |
Short Integer Solution. Sibling hardness assumption to LWE — used by ML-DSA. |
SLH-DSA |
Stateless Hash-Based DSA. FIPS 205. SPHINCS+ rebranded. |
SVP |
Shortest Vector Problem. Find the shortest nonzero vector in a lattice. |
XOF |
Extendable-Output Function. Hash with variable-length output. SHAKE-128/256. |
Further reading#
FIPS 203 — the ML-KEM standard (NIST 2024). The authoritative source.
Peikert, A Decade of Lattice Cryptography (2016) — survey-level.
Albrecht, Player, Scott, On the concrete hardness of Learning With Errors — the LWE estimator.
Bernstein & Lange, Post-quantum cryptography (Nature Reviews, 2017) — friendly overview.
PQCrypto conference — annual academic venue.
pq-crystals.org — Kyber/Dilithium team’s site with reference code.
NIST PQC project page — archive of all candidates, attacks, comments.
Thank you for reading#
You went from “what is a lattice?” to a working ML-KEM implementation, with tests, benchmarks, and a hybrid key exchange. You now have an operational understanding of the crypto that will replace Diffie-Hellman on the internet in the next few years.
If you found bugs, typos, or unclear explanations, please open an issue at github.com/hulryung/ml-kem-notebooks.