Why it matters
Shor's algorithm on a quantum computer recovers private keys from public ones. It breaks:
RSAECDSAEdDSADiffie-HellmanX25519MQV
Key exchange first. Traffic recorded now can be decrypted later: harvest now, decrypt later. Signatures can wait longer, except long-lived keys such as firmware roots.
The standards
| Standard | Algorithm | Type | Status |
|---|---|---|---|
| FIPS 203 | ML-KEM | Lattice key encapsulation | Final 2024 |
| FIPS 204 | ML-DSA | Lattice signatures | Final 2024 |
| FIPS 205 | SLH-DSA | Stateless hash-based signatures | Final 2024 |
| FIPS 206 | FN-DSA | Lattice signatures, compact | In development |
| FIPS to come | HQC | Code-based key encapsulation | Selected 2025 |
| SP 800-208 | LMS, XMSS | Stateful hash-based signatures | Final |
Nine more signature schemes are in round 3 (NIST IR 8610).
In the protocols
| Where | Specification | What it adds |
|---|---|---|
| TLS 1.3 | RFC 10024, 9954 | Hybrid groups such as X25519MLKEM768 |
| SSH | RFC 10042 | mlkem768x25519-sha256, OpenSSH's default |
| X.509 | RFC 9881, 9935, 9909, 10073 | ML-DSA, ML-KEM and SLH-DSA certificates, and 18 composites |
| CMS | RFC 9814, 9882, 9936 | S/MIME and code signing |
| JOSE, COSE | RFC 9964 | ML-DSA for tokens and attestations |
| OpenPGP | RFC 9980 | ML-KEM and ML-DSA composites, and SLH-DSA |
The deadlines
- 2024FIPS 203, 204 and 205 published
- 2026EU: inventories start
- 2027France, NSA: PQC in new products
- 2028UK: migration plan done
- 2030NIST deprecates RSA and ECC. US high-value systems: PQC key exchange
- 2031US high-value systems: PQC signatures
- 2035NIST disallows them. Migration complete
Sources: NIST IR 8547 · EO 14412 · OMB M-26-15 · EU roadmap · NCSC · ANSSI
Hybrid? BSI and ANSSI require it, NCSC prefers pure post-quantum, NIST accepts both.
What has shipped
Key exchange: on by default
- OpenSSH 10.0+:
mlkem768x25519-sha256 - TLS: default in Apple OS 26, JDK 27, Cloudflare and rustls (tracker)
- Signal: ML-KEM-1024 in key agreement and the ratchet
Libraries
- OpenSSL 3.5+: ML-KEM, ML-DSA, SLH-DSA
- Go 1.24+:
crypto/mlkem; 1.27 addscrypto/mldsa - rustls: hybrid by default, ML-DSA certificates since 0.23.44
- AWS-LC, BoringSSL, liboqs, Bouncy Castle
Authentication: the harder half
An ML-DSA-44 signature is 2,420 bytes. ECDSA's is 64.
- Web PKI: Chrome and Let's Encrypt chose Merkle Tree Certificates (tracker)
- OpenSSH 10.6: ML-DSA-44 + Ed25519 keys and CAs
- Private PKI: ML-DSA certificates work today
TLS
Key exchange is on by default in the major stacks. For public certificates, Chrome, Let's Encrypt and Cloudflare chose Merkle Tree Certificates.
Specs: RFC 10024 hybrid groups · RFC 9954 framework · draft-ietf-tls-mlkem ML-KEM alone, in the RFC Editor queue · RFC 10073 composite certificates
| Who | Key exchange | Certificates |
|---|---|---|
| Apple OS 26 | Default X25519MLKEM768 | — |
| Java JDK 27 | Default X25519MLKEM768 | — |
| Cloudflare | Default to origins, about 45 billion connections a day | Planned public MTC CA, free from Q1 2027 |
| rustls | Default since 0.23.27; ML-KEM-1024 in 0.23.37 | Default ML-DSA since 0.23.44, private PKI |
| Chrome | Supported ML-KEM in BoringSSL | Planned MTC root store, phases through Q3 2027 |
| Let's Encrypt | — | Planned Merkle Tree Certificates, chosen June 2026 |
| Go | Supported ML-KEM since 1.24, ML-KEM-1024 in 1.27 | Supported ML-DSA in 1.27 |
| OpenSSL | Supported ML-KEM since 3.5 | Supported ML-DSA, SLH-DSA since 3.5 |
| wolfSSL | — | Supported SLH-DSA in 5.9.4, all 12 parameter sets |
| s2n-tls | Supported hybrid | — |
Blockchains
The most exposed chain has shipped the least.
| Chain | Where it is | What |
|---|---|---|
| Bitcoin | Draft BIPs | BIP-360 and BIP-361 drafted. Over 34% of bitcoin sits behind an exposed public key. |
| Ethereum | Research, Draft EIPs | Hash-based signatures aggregated by leanVM. ML-DSA precompile proposed (EIP-8355). |
| GOAT Network | In progress | Bitcoin L2. Consensus keys moving to ML-DSA-65, bridge to a hash-based STARK verifier. |
| Cosmos | Released code | SDK v0.55: opt-in ML-DSA-65 keys. |
| Algorand | Mainnet | Falcon-1024 accounts. |
| NEAR | Mainnet | ML-DSA-65 access keys. |
What to do now
- Inventory. Find every use of RSA and elliptic curves. A clean scan is not proof.
- Hybrid key exchange. Turn it on, and check middleboxes accept the larger handshake.
- Test vectors. Test against NIST's ACVP vectors, not against yourself.
- Signatures. Private PKI: ML-DSA certificates work today. Public: Merkle Tree Certificates, free from Cloudflare from Q1 2027.
Questions
Where is FN-DSA (Falcon)?
NIST lists FIPS 206 as in development. Implementations follow the round-3 Falcon specification, as Algorand's Falcon-1024 accounts do.
Does my connection already use post-quantum cryptography?
For key exchange, probably: Apple OS 26, JDK 27, OpenSSH 10 and Cloudflare use a hybrid by default.
Should I use a hybrid or post-quantum alone?
BSI and ANSSI say hybrid, NCSC says post-quantum alone, NIST accepts both. For signatures, see RFC 9955.
Is Classic McEliece recommended?
Not for new work, says BSI (October 2026). ML-KEM and FrodoKEM are preferred.
Are hash-based signatures safe to deploy?
SLH-DSA, yes. LMS and XMSS are stateful: reusing a key allows forgeries.
When will a quantum computer break RSA?
Nobody knows. The deadlines are planning dates, not forecasts.
Further reading
- awesome-pqc sources for this page
- Post-Quantum Cryptography project NIST
- RFC 9958, Post-Quantum Cryptography for Engineers IETF
- The state of the post-quantum Internet Cloudflare
- Post-Quantum Ethereum Ethereum Foundation
- Quantum resistance Bitcoin Optech
- Post-quantum Privacy Pass: anonymous credentials from UOV and VOLE-in-the-head Applied PQC blog
- NIST IR 8547, from draft to final: what changed in the transition schedule Applied PQC blog
- The construction of SHRINCS, a semi-stateful hash-based signature scheme Applied PQC blog