
Post-Quantum Cryptography: How Do We Protect the Internet?
ML-KEM, ML-DSA and SLH-DSA explained, how hybrid TLS already protects your browser, what changes for PKI, and a practical plan to start migrating now.
The previous post ended on an uncomfortable fact: a large enough quantum computer would break RSA and elliptic-curve cryptography, the trust layer under HTTPS, VPNs, PKI and digital signatures. Recorded traffic is already at risk ("harvest now, decrypt later"), and migrations take years.
This post is the good news. The replacement already exists. In August 2024, after an eight-year public competition, the US National Institute of Standards and Technology (NIST) published the first three post-quantum cryptography standards: ML-KEM, ML-DSA and SLH-DSA. NIST is encouraging organisations to begin migrating now. And if you're reading this in a current browser, there's a good chance the connection to this page is already protected by one of them.
While writing this post, I ran a simple check from an ordinary Windows laptop with OpenSSL 3.5 against two of the largest sites on the Internet:
echo | openssl s_client -connect www.google.com:443 -briefProtocol version: TLSv1.3
Ciphersuite: TLS_AES_256_GCM_SHA384
Peer certificate: CN=www.google.com
Signature type: ecdsa_secp256r1_sha256
Verification: OK
Negotiated TLS1.3 group: X25519MLKEM768That last line is post-quantum cryptography, live, by default. The line two above it (an elliptic-curve signature) is the part that hasn't moved yet. Between them, those two lines tell you exactly where the world is in this migration, and this post explains both.
Stage 09 of the learning path
This post opens stage 09, Post-Quantum Cryptography, of the Quantum Computing & Technology learning path. It assumes the threat explained in Why Quantum Computers Threaten Today's Encryption, and it connects directly to this site's PKI series, starting with the Intune PKI deep dive.
Post-quantum cryptography is not quantum cryptography
PQC runs on ordinary computers: your laptop, your phone, your server, your firewall. It's just new mathematics, chosen because it's believed to be hard for quantum computers as well as classical ones. Quantum key distribution (QKD), which uses quantum physics to share keys and needs special hardware, is a different thing, covered in stage 10.
The Migration at a Glance

Remember from the previous post that public-key cryptography does two jobs: agreeing keys (so data can be encrypted) and signing (so identities and software can be trusted). The three standards split along exactly those lines:
| Standard | Name | Based on | Replaces | Main use |
|---|---|---|---|---|
| FIPS 203 | ML-KEM (from CRYSTALS-Kyber) | Module lattices | ECDH, RSA key transport | Key exchange in TLS, VPNs, messaging |
| FIPS 204 | ML-DSA (from CRYSTALS-Dilithium) | Module lattices | RSA and ECDSA signatures | Certificates, code signing, general signatures |
| FIPS 205 | SLH-DSA (from SPHINCS+) | Hash functions only | RSA and ECDSA signatures | Conservative, long-lived signatures: roots, firmware |
Symmetric encryption (AES) and hashes (SHA-2, SHA-3) stay. They only need larger sizes, as explained in the previous post.
What Makes an Algorithm "Post-Quantum"?
Shor's algorithm works because factoring and discrete logarithms have a hidden repeating structure (a period) that quantum interference can find. Post-quantum algorithms are built on problems with no such structure, where decades of research have found no efficient attack, classical or quantum.
| Family | Hard problem | Examples | Trade-off |
|---|---|---|---|
| Lattice-based | Finding short or closest vectors in a high-dimensional grid; learning with errors | ML-KEM, ML-DSA, FN-DSA (Falcon) | Fast, medium-sized keys; the main workhorse |
| Hash-based | Breaking a cryptographic hash function | SLH-DSA, LMS, XMSS | Very conservative security; big or stateful signatures |
| Code-based | Decoding a random error-correcting code | HQC, Classic McEliece | Well studied; large keys (McEliece) or newer (HQC) |
| Multivariate and isogeny | Solving polynomial systems; maps between curves | Mostly not standardised | Some candidates broken during the competition |
An intuition for lattices
The two main standards use lattices, so it's worth having a picture of them.
Imagine solving a set of simple equations, but every answer has had a small random error added to it. With exact answers, ordinary school algebra solves the system instantly. With small errors sprinkled in, and with hundreds of unknowns, the problem becomes extraordinarily hard: you can't tell which combination of small errors produced what you see. That's the learning with errors (LWE) problem, and ML-KEM and ML-DSA are built on a structured version of it.
Geometrically, it's like being given a point near a regular grid of points in hundreds of dimensions and asked which grid point is closest. In two dimensions you'd just look. In 768 dimensions, with a deliberately skewed grid, no known algorithm, classical or quantum, does much better than an exponential search.
ML-KEM (FIPS 203): The New Key Exchange
What a KEM does
Today, TLS uses Diffie-Hellman: both sides contribute a public value and compute the same secret. ML-KEM is a key encapsulation mechanism (KEM), which works slightly differently:
1. Key generation
2. Encapsulation
3. Decapsulation
You can do all three steps yourself with OpenSSL 3.5 or later:
# 1. Key generation (the client)
openssl genpkey -algorithm ML-KEM-768 -out kem.pem
openssl pkey -in kem.pem -pubout -out kem_pub.pem
# 2. Encapsulation (the server, using only the public key)
openssl pkeyutl -encap -pubin -inkey kem_pub.pem -out ciphertext.bin -secret server_secret.bin
# 3. Decapsulation (the client, using the private key)
openssl pkeyutl -decap -inkey kem.pem -in ciphertext.bin -secret client_secret.bin
cmp server_secret.bin client_secret.bin && echo "shared secrets match"On the test machine, the ciphertext was 1,088 bytes, both secrets were 32 bytes, and they matched.
Parameter sets
| Parameter set | Security category | Roughly comparable to | Public key | Ciphertext |
|---|---|---|---|---|
| ML-KEM-512 | 1 | AES-128 | 800 bytes | 768 bytes |
| ML-KEM-768 | 3 | AES-192 | 1,184 bytes | 1,088 bytes |
| ML-KEM-1024 | 5 | AES-256 | 1,568 bytes | 1,568 bytes |
ML-KEM-768 is the general-purpose default, and it's the one used in today's hybrid TLS. Security-focused government profiles, such as the NSA's CNSA 2.0, specify ML-KEM-1024.
Is it fast?
Yes, and that surprises people. On the same laptop, OpenSSL's built-in benchmark gave:
| Operation | X25519 (classical) | ML-KEM-768 (post-quantum) |
|---|---|---|
| Key generation per second | 37,641 | 31,871 |
| Encapsulations (key derivations) per second | 16,404 | 56,886 |
| Decapsulations per second | 33,293 | 34,471 |
ML-KEM's cost isn't speed; it's size. An X25519 public share is 32 bytes; an ML-KEM-768 public key is 1,184. That's still small enough for almost every protocol, but it adds about a kilobyte in each direction to a handshake, which matters more than you'd think (see the hybrid section below).
ML-DSA (FIPS 204): The New General-Purpose Signature
ML-DSA is the default replacement for RSA and ECDSA signatures: in certificates, in TLS handshakes, in code signing, in documents and in tokens. It's also lattice-based, and its signing process involves a clever trick: it generates a candidate signature, checks whether that signature would leak anything about the private key, and if so throws it away and tries again ("rejection sampling"). That's why signing is a little slower and less predictable than verifying.
| Parameter set | Security category | Public key | Signature |
|---|---|---|---|
| ML-DSA-44 | 2 | 1,312 bytes | 2,420 bytes |
| ML-DSA-65 | 3 | 1,952 bytes | 3,309 bytes |
| ML-DSA-87 | 5 | 2,592 bytes | 4,627 bytes |
Compare that with an ECDSA P-256 public key of 64 bytes and a signature of about 72. ML-DSA signatures are roughly 30 to 60 times bigger. You can see it with real certificates:
openssl genpkey -algorithm ML-DSA-65 -out mldsa.pem
openssl req -x509 -new -key mldsa.pem -subj "/CN=pq-test.contoso.local" -days 365 -outform DER -out mldsa.derRunning this in Git Bash on Windows?
Git Bash rewrites arguments that start with / into Windows paths, so -subj "/CN=..." becomes C:/Program Files/Git/CN=... and OpenSSL rejects it. Prefix the command with MSYS_NO_PATHCONV=1, or run it from PowerShell or WSL.
On the test machine, an otherwise identical self-signed certificate came out at 408 bytes with ECDSA P-256, 805 bytes with RSA-2048, and 5,534 bytes with ML-DSA-65. The benchmark showed about 1,270 ML-DSA-65 signatures and 6,550 verifications per second, against 3,371 signatures per second for RSA-2048: fast enough for almost any use, with optimised implementations faster still.
SLH-DSA (FIPS 205): The Conservative Backup
SLH-DSA is a different kind of insurance. It's built entirely from hash functions, the most studied and trusted building blocks in cryptography. If you believe SHA-256 is secure, you can believe SLH-DSA is secure; it doesn't depend on lattices at all. That matters because lattice cryptography is younger, and nobody wants every signature in the world to rest on a single mathematical assumption.
The price is size and speed:
| Parameter set | Public key | Signature | Signing speed on the test laptop |
|---|---|---|---|
| SLH-DSA-SHA2-128s ("small") | 32 bytes | 7,856 bytes | about 3.5 signatures per second |
| SLH-DSA-SHA2-128f ("fast") | 32 bytes | 17,088 bytes | much faster signing, bigger signatures |
Three and a half signatures per second would be useless for a web server, but it's perfectly fine for things that are signed rarely and trusted for a long time: root CA certificates, firmware images, boot loaders and long-term archives. Verification is fast (about 3,400 per second), which is what devices do most often.
Stateful hash signatures: LMS and XMSS
There's an older family of hash-based signatures, LMS and XMSS, standardised by NIST in 2020 (SP 800-208). They give smaller signatures than SLH-DSA but are stateful: the signer must never reuse a one-time key, so it must track exactly how many signatures it has made. That's manageable inside a tightly controlled firmware-signing HSM, and the NSA's CNSA 2.0 suite requires them for firmware and software signing, but they're dangerous for general use, where a restored backup could cause key reuse.
Why Three Standards, and More Coming?
NIST deliberately didn't pick just one. Cryptographic history is full of algorithms that looked strong until someone found a clever attack, and the post-quantum competition itself had two dramatic examples. In 2022, SIKE, an isogeny-based finalist candidate, was broken by a classical attack that ran on a single laptop in about an hour. The same year, Rainbow, a multivariate signature finalist, was also broken. Neither involved a quantum computer.
That's why the plan relies on diversity:
- ML-KEM and ML-DSA (lattices) for everyday use.
- SLH-DSA (hashes) as a signature backup based on completely different maths.
- FN-DSA (from Falcon), another lattice signature with smaller signatures but trickier implementation, is being standardised as FIPS 206.
- HQC, a code-based KEM, was selected in March 2025 as a backup to ML-KEM, in case lattices ever turn out to be weaker than expected.
It's also why most deployments today use hybrid cryptography.
Bigger Keys, Real Consequences

Key exchange grows by about 2 KB per handshake, which almost every network handles easily. Signatures are the hard part, because a TLS handshake doesn't carry just one. A typical server sends a leaf certificate and an intermediate certificate (each containing a public key and a signature), then signs the handshake itself:
| Server authentication data | ECDSA P-256 | ML-DSA-65 |
|---|---|---|
| Leaf certificate (as measured above) | 408 bytes | 5,534 bytes |
| Intermediate certificate | about 408 bytes | about 5,534 bytes |
| Handshake signature | 72 bytes | 3,309 bytes |
| Total | about 0.9 KB | about 14.4 KB |
Fourteen kilobytes doesn't sound like much, but many servers can only send about 14 KB before waiting for the client to acknowledge (TCP's initial congestion window). Real certificates also carry extensions and Certificate Transparency proofs. So moving the whole Web PKI to ML-DSA could add a network round trip to many connections, which is why signature migration on the public Web is moving more slowly and why researchers and the IETF are working on ideas such as certificate compression, smarter trust anchor negotiation and new certificate designs.
Inside an enterprise the trade-off is different: a Wi-Fi authentication or VPN handshake happens far less often than a web page load, and you control both ends.
Hybrid Cryptography: Belt and Braces
Post-quantum algorithms are new, and their implementations are newer. So instead of switching from classical to post-quantum in one step, most deployments today combine both:

The logic is simple: if a future quantum computer breaks X25519, ML-KEM still protects the session. If someone finds a flaw in ML-KEM (or its implementation), X25519 still protects it. The connection is safe as long as either one holds.
Hybrid key exchange is already everywhere
- Browsers: Chrome, Edge and Firefox negotiate X25519MLKEM768 by default, and Apple has added hybrid post-quantum TLS to its platforms.
- Large websites and CDNs: Google, Cloudflare and other major providers support it, so a large share of all HTTPS traffic is already protected against harvest now, decrypt later.
- Libraries and tools: OpenSSL 3.5 (April 2025) includes ML-KEM, ML-DSA and SLH-DSA, and offers the hybrid group by default, as the test above showed. OpenSSH uses a hybrid post-quantum key exchange by default.
- Messaging: Signal (PQXDH) and Apple iMessage (PQ3) added post-quantum key agreement in 2023 and 2024.
- Operating systems: Microsoft has added ML-KEM and ML-DSA to Windows' cryptography libraries, so applications can start using them.
There's one practical lesson from the rollout: when browsers first enabled hybrid key exchange, the larger first message (the TLS ClientHello) broke some old firewalls, proxies and load balancers that assumed it would fit in a single packet. If you run TLS-inspecting middleboxes, test them with post-quantum handshakes now.
You can check any server yourself:
echo | openssl s_client -connect your-server.example.com:443 -groups X25519MLKEM768 -briefIf the output says Negotiated TLS1.3 group: X25519MLKEM768, that endpoint supports hybrid key exchange. If the connection fails, it doesn't, and it's a candidate for your migration list.
Hybrid signatures are less settled
For signatures, "hybrid" means attaching both a classical and a post-quantum signature, or using composite certificates whose key and signature combine both algorithms. The IETF is standardising composite ML-DSA for X.509, but the approach is still being debated, partly because it makes already-large certificates even larger. Expect a mix of composite, dual-chain and pure post-quantum designs while this settles.
What This Means for PKI
This is where the post-quantum migration meets this site's PKI series, and the companion post Quantum-Safe PKI: What Happens to Certificates in the Quantum Era? goes much deeper, with a working post-quantum CA lab. The key insight is that the migration has two very different speeds:
- Key exchange migration mostly doesn't touch your PKI. Hybrid ML-KEM in TLS works with today's RSA and ECDSA certificates. It's a software upgrade to clients, servers and middleboxes, and it's the part that fixes harvest now, decrypt later.
- Signature migration is a PKI project. New algorithms in certificates mean new CA keys, new hierarchies, new templates, and every relying party that checks a certificate (browsers, RADIUS servers, VPN gateways, applications, devices) must understand them.
For an enterprise PKI like the one built in the PKI implementation lab, the practical consequences are:
1. Plan a new hierarchy alongside the old one
2. Choose algorithms by lifetime
3. Check every relying party
4. Watch device key storage
5. Check product support before you plan dates
Short certificate lifetimes are your friend
The public Web is moving to much shorter certificate lifetimes: the CA/Browser Forum has approved a reduction to 47 days by 2029. Short-lived certificates make algorithm changes far easier, because every certificate is replaced within weeks anyway. The same logic applies inside an enterprise: automated, short-lived device certificates (exactly what Intune SCEP gives you) are much easier to migrate than long-lived, manually installed ones.
Where PQC Lands in the Stack
| System | What changes | Who mostly delivers it | State today |
|---|---|---|---|
| Browsers and HTTPS | Hybrid ML-KEM key exchange | Browser vendors, CDNs, web servers | ✅ Widely deployed |
| SSH | Hybrid post-quantum key exchange | OpenSSH and other SSH vendors | ✅ Default in OpenSSH |
| Messaging | Post-quantum key agreement | Signal, Apple and others | ✅ Deployed |
| VPN (IKEv2, TLS VPNs) | ML-KEM in the handshake | VPN gateway and client vendors | Rolling out; check your vendor |
| Internal TLS (apps, APIs, load balancers) | Library upgrades and configuration | You, plus library and appliance vendors | Depends on your stack |
| Public Web PKI certificates | ML-DSA or composite certificates | CAs and browser root programmes | ❌ Not yet |
| Enterprise PKI (AD CS, Cloud PKI) | Post-quantum CAs and templates | Microsoft and other PKI vendors, then you | Early; plan now |
| Code signing and firmware | ML-DSA, SLH-DSA, LMS/XMSS | OS and hardware vendors, your release pipeline | Beginning |
| Identity tokens (SAML, OIDC, JWT) | Post-quantum signature algorithms | Identity providers | Early |
| Smart cards, TPMs, HSMs | Hardware support for new algorithms | Hardware vendors | Arriving gradually |
The pattern is clear: much of the migration arrives through vendors. Your job is to know where cryptography is used, make sure updates can actually be deployed, and push vendors for roadmaps.
The Timelines
| Authority | What it says |
|---|---|
| NIST (US) | Its proposed transition plan (IR 8547) deprecates quantum-vulnerable algorithms such as RSA-2048 and P-256 by 2030 and disallows them by 2035 |
| NSA CNSA 2.0 (US national security systems) | Post-quantum algorithms (ML-KEM-1024, ML-DSA-87, LMS/XMSS) phased in by category, with the transition to complete in the early 2030s |
| UK NCSC | Discovery and planning by 2028, priority migrations by 2031, full migration by 2035 |
| European Union | A coordinated roadmap asks member states to start by the end of 2026, migrate high-risk systems by 2030, and complete as much as feasible by 2035 |
The details differ, but the message is the same everywhere: plan now, protect the highest-risk systems by about 2030, finish by about 2035. For a large organisation, nine years is not a long time.
A Practical Migration Plan
1. Discover: build a cryptographic inventory
openssl s_client check above are good starting points; automated discovery tools help at scale. This inventory is often called a cryptographic bill of materials (CBOM).2. Prioritise: use data lifetime and exposure
3. Prepare: build crypto-agility
4. Turn on hybrid key exchange
5. Migrate signatures and PKI
6. Verify and monitor
Common mistakes
| Mistake | Why it hurts | Better approach |
|---|---|---|
| Waiting for a quantum computer to appear | Recorded data is already exposed, and migration takes years | Start with inventory and hybrid key exchange now |
| Treating it as a one-time algorithm swap | Algorithms may change again; HQC and FN-DSA are still coming | Build crypto-agility |
| Starting with certificates | Signature migration is the slowest, hardest part | Start with key exchange, plan PKI in parallel |
| Forgetting middleboxes | Larger handshakes break old inspection devices | Test firewalls, proxies and load balancers early |
| Rolling your own implementation | Side-channel and implementation bugs are the real risk in new cryptography | Use well-maintained libraries and validated modules |
| Ignoring vendors | Most changes arrive through products you buy | Ask for roadmaps and include PQC in procurement |
Quick Recap
- Post-quantum cryptography is new mathematics that runs on ordinary computers; it's not quantum hardware.
- NIST published three standards in 2024: ML-KEM (FIPS 203) for key exchange, ML-DSA (FIPS 204) for signatures, and SLH-DSA (FIPS 205) for conservative hash-based signatures.
- ML-KEM is as fast as today's key exchange, just bigger: about 2 KB per handshake.
- Post-quantum signatures are much bigger: an ML-DSA-65 certificate measured 5,534 bytes against 408 for ECDSA, which is why signature migration is slower.
- Hybrid key exchange (X25519MLKEM768) is already deployed in browsers and major websites, and protects against harvest now, decrypt later.
- For PKI, plan a parallel post-quantum hierarchy, check every relying party, and watch hardware key storage and product support.
- Timelines converge on about 2030 for high-risk systems and 2035 for everything.
- Start now: inventory, prioritise, build crypto-agility, turn on hybrid key exchange, then migrate signatures.
What's Next on the Learning Path
Stage 10, Quantum Networking, turns from defending against quantum computers to using quantum physics itself: quantum key distribution, teleportation, entanglement distribution and the idea of a quantum internet, and how they compare with the post-quantum cryptography in this post. The full 11-stage path is listed at the end of the beginner's guide.
Written by
Chetan Yamger
Cloud Engineer · AI Automation Architect · Modern Workplace Consultant
Cloud Engineer, AI Automation Architect, and Modern Workplace Consultant based in Amsterdam, Netherlands. Specializing in scalable, secure enterprise solutions with Microsoft Azure, Intune, PowerShell, and AI-driven automation using ChatGPT, Gemini, and modern LLM technologies.
Stay in the loop.
New articles, straight to you.
Deep-dive technical articles on Intune, PowerShell, and AI — no noise, no spam.
Discussion
Share your thoughts — your email stays private
Leave a comment