FIPS 203 · 204 · 205 · measured daily

Post-quantum cryptography, measured.

Every NIST-standardized post-quantum algorithm, benchmarked on real silicon and composed into full TLS and SSH handshakes. One thousand timed iterations per operation, garbage collector disabled, process pinned to a core. Every number links to the run that produced it.

Run date
2026-09-21
Commit
Host
Xeon Platinum 8488C
Instance
c7i.large
liboqs
0.15.0
CPU steal
<0.01%
Algorithms tracked
8
3 KEMs, 5 signature schemes
Signing spread
6,579×
ML-DSA-65 against SLH-DSA-SHAKE-128s
Hybrid TLS wire cost
36.5×
2,336 B against classical 64 B
Run integrity
<0.01%
CPU steal on c7i.large. Disclosed, not hidden
Signing time

The gap the standard doesn't warn you about.

Logarithmic axis — on a linear one, all but the largest bar would be invisible. That is the finding, not a plotting convenience.

ML-DSA-44
Lattice · level 2
58.1 µs
ML-DSA-87
Lattice · level 5
112.2 µs
ML-DSA-65
Lattice · level 3
129.3 µs
SLH-DSA-SHAKE-128f
Hash-based
40.74 ms
SLH-DSA-SHAKE-128s
Hash-based
850.80 ms
100 µs1 ms10 ms100 ms1 s
Lattice (FIPS 204)Hash-based (FIPS 205)
FIPS 203

Key encapsulation — ML-KEM.

Replaces RSA and ECC key exchange. Sizes are what goes on the wire.

AlgorithmKeygenEncapDecapEncap ops/secPublic keyCiphertext
ML-KEM-512NIST level 17.7 µs8.8 µs13.9 µs113,728800 B768 B
ML-KEM-768NIST level 317.1 µs19.2 µs19.9 µs52,0101.16 KB1.06 KB
ML-KEM-1024NIST level 521.6 µs23.6 µs25.9 µs42,3871.53 KB1.53 KB
FIPS 204 · 205

Digital signatures — ML-DSA and SLH-DSA.

Note the inversion: the hash-based schemes carry the smallest public keys and the slowest signing on the board.

AlgorithmKeygenSignVerifyPublic keySignatureFamily
ML-DSA-44NIST level 221.9 µs58.1 µs19.8 µs1.28 KB2.36 KBLattice
ML-DSA-65NIST level 330.3 µs129.3 µs29.8 µs1.91 KB3.23 KBLattice
ML-DSA-87NIST level 543.5 µs112.2 µs44.5 µs2.53 KB4.52 KBLattice
SLH-DSA-SHAKE-128sNIST level 1111.54 ms850.80 ms852.1 µs32 B7.67 KBHash
SLH-DSA-SHAKE-128fNIST level 11.75 ms40.74 ms2.42 ms32 B16.69 KBHash
RFC 8554 · RFC 8391 · NIST SP 800-208

Hash-based signatures — for things that must still verify in 2045.

Firmware and boot chains are signed once and verified for the life of the hardware. Their signatures have to outlast the device, which is a different problem from securing a connection today.

LMS, HSS and XMSStracked · awaiting a measurement host rebuild

PQC Arena tracks four parameter sets, with published test vectors and a verification-only path — the operation that matters here, since a firmware signature is produced once and checked on every boot. The schemes are compiled and proven in Q-Advantage’s own reference container. They are not yet enabled in the liboqs build on the host that produces published numbers, and we will not publish a figure measured anywhere else.

Shown here rather than left out. An algorithm absent from a benchmark is indistinguishable from one nobody thought about, and these two are the standardised answer for long-lived signing.

TLS 1.3 key exchange · composed

What it costs inside a real handshake.

Primitives in isolation don't tell you this. Full handshakes, same host, same night.

MLKEM768
Pure post-quantum key exchange
Mean
36.0 µs
Wire
2,272 B
vs classical
−72.2%
median of 9 runs · −81.5% to −60.3%
latest −78.1% · 21 Sep 2026 · 6ed429a
SecP256r1MLKEM768
Hybrid, NIST curve
Mean
182.7 µs
Wire
2,402 B
vs classical
+48.4%
median of 8 runs · +8.5% to +77.7%
latest +12.1% · 21 Sep 2026 · 6ed429a
X25519MLKEM768
Hybrid — the one most stacks deploy
Mean
248.1 µs
Wire
2,336 B
vs classical
+27.9%
median of 9 runs · +16.1% to +76.6%
latest +53.1% · 21 Sep 2026 · 6ed429a
X25519
Classical baseline
Mean
163.4 µs
Wire
64 B
vs classical
baseline
How to read a timing delta from this hostThis run carried <0.01% CPU steal on a burstable instance, which inflates the classical baseline and compresses every delta above. Timing deltas from this host are a distribution, not a verdict. The byte counts are not — those are fixed by the protocol, not the processor. Read the wire column as the durable number. Migration to a dedicated-core instance is scheduled.
Take the data

Nothing here is behind a login.

Current-day snapshot free, forever. Clone the harness and you should reproduce these within run-to-run variance.

Know the cost of post-quantum migration.

Coldproof