Sebastien Rousseau · Performance Engineering
Document ID: CSS-PERF-2026-006 Classification: Benchmark Method (no published results) Runtime Target: Node.js

Status

This paper previously reported latency and throughput figures (ML-KEM-768 encapsulation in 34.1 µs, ML-DSA-65 verification in 68.4 µs, more than 100,000 operations per second, zero garbage-collection pauses) attributed to a WebAssembly SIMD core. Those figures were not produced by any committed benchmark code, and @sebastienrousseau/crypto-wasm contains no WebAssembly. They have been withdrawn.

All post-quantum operations in Crypto Service Suite run in JavaScript through @noble/post-quantum, which is not independently audited, does not guarantee constant-time execution, and is not a validated cryptographic module. No latency figures are published until they are generated by the committed benchmark code with the environment recorded.


1. Key, Ciphertext and Signature Sizes

Sizes are fixed by the specifications, so they can be stated without measurement. They are the main practical cost of moving to lattice-based algorithms.

Algorithm Mathematical Foundation Public Key Size Ciphertext / Signature Size
ML-KEM-768 Module-LWE Lattice (FIPS 203) 1,184 B 1,088 B ciphertext
ML-KEM-1024 Module-LWE Lattice (FIPS 203) 1,568 B 1,568 B ciphertext
X25519 Curve25519 (RFC 7748) 32 B 32 B public value
X25519 + ML-KEM-768 hybrid Classical + Module-LWE 1,216 B 1,120 B ciphertext
RSA-3072 Integer Factorization 384 B modulus 384 B ciphertext or signature
ML-DSA-65 Module Lattice (FIPS 204) 1,952 B 3,309 B signature
ML-DSA-87 Module Lattice (FIPS 204) 2,592 B 4,627 B signature
Ed25519 Edwards Curve (RFC 8032) 32 B 64 B signature

2. Running the Benchmarks

The repository contains two benchmark entry points. The script benchmarks/crypto-bench.ts times crypto-lib operations, including ML-KEM-768 key generation and encapsulation and ML-DSA-65 key generation. The @sebastienrousseau/crypto-benchmarks harness times ML-KEM-768 encapsulation and ML-DSA-65 verification through crypto-lib against a P-256 ECDH baseline.

git clone https://github.com/sebastienrousseau/crypto-service.git
cd crypto-service
pnpm install
pnpm -r run build
node benchmarks/crypto-bench.ts --iterations 500

Record the Node.js version, operating system, CPU and iteration count with any result, run on an otherwise idle machine, and repeat several times. Results depend on hardware and load and are not service level guarantees.

Preferred Citation:
Rousseau, S. (2026). Post-Quantum Benchmarks: Method, Sizes and Status. Crypto Service Performance Series. Reference: CSS-PERF-2026-006. Canonical URI: https://docs.crypto-service.co/whitepapers/sub-millisecond-benchmarks/