Skip to content

Post-Quantum Cryptography

This document covers the fundamentals of post-quantum cryptography and hybrid certificates in QPKI.

For PKI basics (certificates, keys, CAs, trust chains), see PKI Fundamentals.

Current public-key cryptography (RSA, ECDSA, ECDH) is vulnerable to attacks by quantum computers using Shor’s algorithm. While large-scale quantum computers don’t exist yet, data encrypted today could be stored and decrypted later (“harvest now, decrypt later” attacks).

NIST has standardized three post-quantum algorithms:

AlgorithmStandardTypeUse Case
ML-KEMFIPS 203Key EncapsulationKey exchange
ML-DSAFIPS 204Digital SignatureSigning, authentication
SLH-DSAFIPS 205Digital SignatureSigning (stateless)

This PKI implements ML-DSA and SLH-DSA for signatures, and ML-KEM for key material transport.

2.1 ML-DSA (Digital Signatures) - FIPS 204

Section titled “2.1 ML-DSA (Digital Signatures) - FIPS 204”

ML-DSA (Module-Lattice Digital Signature Algorithm) is the standardized version of Dilithium.

VariantSecurity LevelPublic KeySignaturePerformance
ML-DSA-44NIST Level 11,312 bytes2,420 bytesFastest
ML-DSA-65NIST Level 31,952 bytes3,309 bytesBalanced
ML-DSA-87NIST Level 52,592 bytes4,627 bytesMost secure

Recommendation: Use ML-DSA-65 for most applications (equivalent to AES-192 security).

2.2 SLH-DSA (Digital Signatures) - FIPS 205

Section titled “2.2 SLH-DSA (Digital Signatures) - FIPS 205”

SLH-DSA (Stateless Hash-Based Digital Signature Algorithm) is the standardized version of SPHINCS+. It provides an alternative to ML-DSA based on hash functions rather than lattice problems.

VariantSecurity LevelPublic KeySignatureSigning Speed
SLH-DSA-128sNIST Level 132 bytes~7,856 bytesSlow
SLH-DSA-128fNIST Level 132 bytes~17,088 bytesFast
SLH-DSA-192sNIST Level 348 bytes~16,224 bytesSlow
SLH-DSA-192fNIST Level 348 bytes~35,664 bytesFast
SLH-DSA-256sNIST Level 564 bytes~29,792 bytesSlow
SLH-DSA-256fNIST Level 564 bytes~49,856 bytesFast

Variants:

  • s (small) = Smaller signatures, slower signing
  • f (fast) = Larger signatures, faster signing

Recommendation: Use SLH-DSA as a conservative alternative when hash-based security is preferred over lattice assumptions.

ML-KEM (Module-Lattice Key Encapsulation Mechanism) is the standardized version of Kyber.

VariantSecurity LevelPublic KeyCiphertextShared Secret
ML-KEM-512NIST Level 1800 bytes768 bytes32 bytes
ML-KEM-768NIST Level 31,184 bytes1,088 bytes32 bytes
ML-KEM-1024NIST Level 51,568 bytes1,568 bytes32 bytes

Note: ML-KEM is included for key transport but is not used for X.509 certificate signing.

Both algorithms are NIST-standardized for post-quantum signatures, but they differ in fundamental ways:

CriterionML-DSA (FIPS 204)SLH-DSA (FIPS 205)
Math basisLattice problemsHash functions
Maturity of assumption~15 years of analysisDecades (hash security)
Public key size1,312 – 2,592 bytes32 – 64 bytes
Signature size2,420 – 4,627 bytes7,856 – 49,856 bytes
Signing speedFast (~2 ms)Slow (~100 ms for s variants)
Verification speedFast (~1 ms)Fast (~5 ms)
StatelessYesYes

When to use ML-DSA (default choice):

  • General-purpose PKI (CA certificates, TLS, code signing)
  • Bandwidth-sensitive environments (smaller signatures)
  • High-volume signing (fast signing performance)
  • CNSA 2.0 compliance (ML-DSA-65 or ML-DSA-87 recommended)

When to use SLH-DSA instead:

  • Maximum conservatism — if lattice-based cryptography were broken, SLH-DSA remains secure because it relies only on hash function security
  • Long-lived root CA certificates where signature size is less critical and signing happens rarely
  • Regulatory environments requiring hash-based signatures as a fallback
  • Environments that already use XMSS/LMS and want a stateless alternative
Use CaseRecommendedRationale
General purposeML-DSA-65Balance of security and size
Long-term secretsML-DSA-87Maximum security
Constrained devicesML-DSA-44Smallest signatures
Conservative root CASLH-DSA-SHA2-192sHash-based, small signatures
High-volume signingML-DSA-65Fast signing (~2 ms)
Regulatory fallbackSLH-DSADifferent mathematical assumption

Pure PQC certificates face challenges:

  1. Existing infrastructure (browsers, TLS libraries) doesn’t recognize PQC
  2. Security uncertainty - PQC algorithms are newer, less analyzed than classical

Hybrid certificates provide:

  • Backward compatibility via classical signature
  • Forward security via PQC material
  • Gradual migration path

QPKI supports three hybrid approaches:

ModeStandardCertificatesDescription
Catalyst (Combined)ITU-T X.509 9.81Dual keys in single cert
CompositeIETF draft-131Single composite key/signature
Separate (Linked)draft-ietf-lamps-cert-binding2Two linked certificates

For technical details on each hybrid mode, see Hybrid Certificates.

PQC certificates are significantly larger than classical ones. This affects TLS handshake size, bandwidth, and storage.

Certificate TypeApproximate Size
ECDSA P-384~1 KB
ML-DSA-65 (pure PQC)~5 KB
ECDSA P-384 + ML-DSA-65 (Catalyst)~6 KB
MLDSA65-ECDSA-P256-SHA512 (Composite)~5.5 KB

4.2 Full Chain Impact (Root → Intermediate → End-Entity)

Section titled “4.2 Full Chain Impact (Root → Intermediate → End-Entity)”
Chain TypeTotal Sizevs Classical
ECDSA P-384 (3 certs)~3 KBbaseline
ML-DSA-65 (3 certs)~15 KB~5x
Catalyst hybrid (3 certs)~18 KB~6x
ML-DSA-87 (3 certs)~21 KB~7x

A typical TLS 1.3 handshake with classical certificates fits in a single TCP round-trip (~1,500 bytes MTU). With PQC certificates:

  • ML-DSA-65 chain (~15 KB): requires TCP fragmentation across ~10 packets. On high-latency links, this adds measurable handshake time.
  • Catalyst hybrid chain (~18 KB): similar fragmentation but provides backward compatibility.
  • Impact in practice: on a 50 ms RTT link, expect 1–3 additional round-trips for certificate transmission.

Mitigations:

  • Use certificate compression (RFC 8879) where supported
  • Prefer s (small) SLH-DSA variants if using hash-based signatures
  • Consider caching and session resumption to amortize handshake cost

PQC in TLS is progressing but not yet universally available:

ComponentPQC Status
Key exchange (ML-KEM)Supported in Chrome, Firefox, OpenSSL 3.5+, BoringSSL. Active in production.
Authentication (ML-DSA certificates)Not yet supported in browsers. OpenSSL 3.6+ has experimental support.
Hybrid certificates (Catalyst/Composite)Not recognized by standard TLS stacks. Requires PQC-aware verifiers.
  1. Internal PKI: deploy PQC and hybrid certificates for internal services where you control both endpoints (mutual TLS, microservices, IoT).
  2. Key exchange: enable ML-KEM key exchange in TLS 1.3 on supported servers (this is separate from certificate authentication).
  3. Prepare certificates: issue hybrid certificates now so PQC material is in place when client support arrives.
  4. Code signing & timestamping: PQC signatures work today for CMS-based workflows (code signing, document signing, long-term archival).
YearExpected Milestone
2025–2026ML-KEM key exchange widely deployed
2027–2028Browser support for ML-DSA certificate authentication (expected)
2028–2030Industry mandates for PQC certificates (CNSA 2.0 timeline)
2030+Classical-only certificates deprecated

Recommendation: start with hybrid Catalyst certificates for maximum backward compatibility, and switch to pure PQC when ecosystem support is confirmed.