QNSP

QNSP

Start building free

Live performance

PQC benchmarks — real numbers, reproducible

These are not marketing numbers. Every value below is captured by the same liboqs build that runs in QNSP production, on the host listed in the test environment box. Re-run the script yourself; the JSON output is committed to the repo.

CPU
Apple M4 Max
Cores
14
OS
darwin/arm64
Memory
36 GiB
Node
v24.15.0
liboqs
0.15.0
Generated
2026-04-28 21:19:40Z

Key Encapsulation Mechanisms (KEMs)

p50 latency per operation. 500 iterations per algorithm with one untimed warm-up.

AlgorithmStandardNIST cat.Keygen p50Encaps p50Decaps p50Keygen ops/sPub keyCiphertext
ML-KEM-512FIPS 203L16.0 µs7.0 µs7.0 µs137.2k /s800B768B
ML-KEM-768FIPS 203L30.010 ms0.010 ms0.011 ms99.8k /s1184B1088B
ML-KEM-1024FIPS 203L50.014 ms0.014 ms0.016 ms68.4k /s1568B1568B

Digital signatures

p50 latency per operation. Iteration counts vary by algorithm cost (ML-DSA: 100–200, Falcon: 50, SLH-DSA: 10–25). Message size: 179 bytes.

AlgorithmStandardNIST cat.Keygen p50Sign p50Verify p50Verify ops/sPub keySig size
ML-DSA-44FIPS 204L20.035 ms0.139 ms0.037 ms26.1k /s1312B2420B
ML-DSA-65FIPS 204L30.068 ms0.207 ms0.060 ms16.6k /s1952B3309B
ML-DSA-87FIPS 204L50.097 ms0.246 ms0.095 ms10.3k /s2592B4627B
Falcon-512FN-DSA (NIST round 3)L12.95 ms0.110 ms0.017 ms57.2k /s897B654B
SLH-DSA-SHA2-128fFIPS 205L10.503 ms11.69 ms0.722 ms1.4k /s32B17088B
SLH-DSA-SHA2-256fFIPS 205L52.08 ms39.56 ms1.07 ms945 /s64B49856B

Reproduce these numbers

  1. git clone https://github.com/cuilabs/qnsp
  2. pnpm install
  3. pnpm --filter @qnsp/web-portal run bench:pqc
  4. Diff your output against /pqc-benchmarks/pqc-latest.json. Absolute timings vary with hardware; the cross-algorithm ratios should match.

Source: apps/web/scripts/run-pqc-benchmarks.ts. Schema: apps/web/lib/benchmark-types.ts. The runner uses process.hrtime.bigint() for nanosecond timing and discards the first untimed iteration to remove cold-cache and JIT warmup effects.

What this proves

Production PQC isn't a research problem — it's a measurement problem

ML-KEM-768 (the FIPS 203 default for most QNSP tiers) generates a key pair in microseconds and runs encapsulate / decapsulate at hundreds of thousands of operations per second on commodity hardware. ML-DSA-65 signatures verify orders of magnitude faster than they sign — making PQC viable on the synchronous request path of services that issue many short-lived tokens. SLH-DSA is conservative and slow but produces hash-based signatures with a different security argument than lattice-based schemes, and we benchmark it so customers in regulated sectors can pick it deliberately rather than ruling it out by reputation.

These numbers are why QNSP can run a PQC-only crypto policy at the edge gateway, KMS, and audit-service tiers without extra infrastructure. The same liboqs binary that produced this JSON also handles every key, signature, and audit record on the platform.