Skip to content

Algorithm Reference

Technical reference for NIST post-quantum algorithm variants.

VariantSecurity LevelPublic KeyCiphertextShared Secret
ML-KEM-512Level 1800 B768 B32 B
ML-KEM-768Level 31,184 B1,088 B32 B
ML-KEM-1024Level 51,568 B1,568 B32 B
VariantSecurity LevelPublic KeySignature
ML-DSA-44Level 21,312 B2,420 B
ML-DSA-65Level 31,952 B3,309 B
ML-DSA-87Level 52,592 B4,627 B

SLH-DSA (FIPS 205) — Hash-Based Signatures

Section titled “SLH-DSA (FIPS 205) — Hash-Based Signatures”
VariantSecurity LevelPublic KeySignature
SLH-DSA-128sLevel 132 B7,856 B
SLH-DSA-128fLevel 132 B17,088 B
SLH-DSA-192sLevel 348 B16,224 B
SLH-DSA-192fLevel 348 B35,664 B
SLH-DSA-256sLevel 564 B29,792 B
SLH-DSA-256fLevel 564 B49,856 B

s = small signature (slower), f = fast signing (larger signature)

LevelClassical EquivalentUse Case
Level 1AES-128Standard security
Level 3AES-192Recommended default
Level 5AES-256Maximum security

Source: arXiv:2503.12952 (2025), CPU @ 3.3 GHz

AlgorithmKeyGenSignVerifyTotal
ML-DSA-440.09 ms0.45 ms0.10 ms0.64 ms
ML-DSA-650.15 ms0.70 ms0.15 ms0.99 ms
ML-DSA-870.25 ms0.84 ms0.27 ms1.36 ms
ECDSA P-2560.30 ms0.40 ms0.10 ms0.80 ms
ECDSA P-3840.50 ms0.90 ms0.30 ms1.70 ms

Direct Comparison (Security Level 3: ML-DSA-65 vs ECDSA P-384)

Section titled “Direct Comparison (Security Level 3: ML-DSA-65 vs ECDSA P-384)”
MetricECDSA P-384ML-DSA-65Ratio
KeyGen0.50 ms0.15 ms3x faster
Sign0.90 ms0.70 ms~20% faster
Verify0.30 ms0.15 ms2x faster
Public Key97 B1,952 B20x larger
Signature96 B3,309 B34x larger

Ratios remain valid across different machines. Absolute values are indicative (CPU @ 3.3 GHz).

Sources: OpenSSL Cookbook (x86), arXiv:2503.12952 (x86 @ 3.3 GHz)

AlgorithmSignVerifyRatio vs ML-DSA-65
ML-DSA-650.70 ms0.15 ms
RSA-2048~1 ms0.045 msSign: 1.4x slower
RSA-3072~4.8 ms0.096 msSign: 7x slower

RSA verification is faster, but signing is significantly slower than ML-DSA. For servers that sign frequently, ML-DSA provides better throughput.

Sources: arXiv:2503.12952 (x86 @ 3.3 GHz), conduition.io (Intel 12th gen @ 2.8 GHz)

AlgorithmSignVerifySignaturePublic Key
ML-DSA-650.70 ms0.15 ms3,309 B1,952 B
SLH-DSA-128f~30 ms~10 ms17,088 B32 B
SLH-DSA-128s~200 ms~3 ms7,856 B32 B
MetricML-DSA-65SLH-DSA-128fSLH-DSA-128s
Sign0.70 ms~30 ms~200 ms
Ratio~40x slower~300x slower

When to use SLH-DSA:

  • Conservative security (hash-based, no lattice assumptions)
  • Root of Trust, firmware signing (sign rarely, verify often)
  • Long-term archival signatures

When to use ML-DSA:

  • Performance-critical applications (TLS, API signing)
  • Frequent signing operations
  • Bandwidth-constrained environments

Sources: arXiv:2508.01694 (x86), filippo.io (Apple M1)

AlgorithmOperationTimeRatio vs ML-KEM-768
ML-KEM-768Encaps + Decaps~0.2 ms
X25519ECDHE~0.65 ms~3x slower
RSA-3072Key transport>200 ms~1000x slower

ML-KEM is faster than X25519 for key exchange, despite larger key sizes. RSA key transport is orders of magnitude slower and rarely used in modern TLS.

X25519 = ECDH (Elliptic Curve Diffie-Hellman) on Curve25519.