Aller au contenu
ecdsa.com

Post-Quantum Algorithm Zoo — zoo des algorithmes post-quantiques : tailles et vitesse de plus de 100 algorithmes

Les 103 algorithmes fournis par liboqs, des normes du NIST aux candidats du tour des signatures supplémentaires : filtrez, triez par taille et choisissez-en un à mesurer. Le banc d’essai compile liboqs en WebAssembly, s’exécute dans un worker en arrière-plan sur votre propre appareil et compare le résultat à ECDSA P-256, Ed25519 ou X25519, mesurés de la même manière.

100 % local : le code des algorithmes n’est téléchargé depuis ce site qu’au moment de la mesure, et il s’exécute dans votre navigateur ; rien sur votre appareil ni sur les résultats n’est envoyé nulle part

103 algorithmes de liboqs 0.15.1 : 38 mécanismes d’encapsulation de clé et 65 schémas de signature, répartis en 15 familles.

ML-KEM-768

Famille
ML-KEM
Type
Mécanisme d’encapsulation de clé
Problème difficile
Réseaux euclidiens modulaires (Module-LWE / Module-SIS)
Statut
Norme NIST
Référence
FIPS 203
Niveau de sécurité NIST
3
Nom dans liboqs
ML-KEM-768

Tailles par rapport aux algorithmes classiques

Clé publique
AlgorithmeClé publique
ML-KEM-768
1 184 o
X25519
32 o
Texte chiffré
AlgorithmeSignature / texte chiffré
ML-KEM-768
1 088 o
X25519
32 o

Clé publique plus texte chiffré : 35,5 fois l’équivalent X25519. Les tailles classiques correspondent aux encodages bruts : points EC non compressés, r‖s pour ECDSA, clé PKCS #1 pour RSA-2048.

  • Normalisé dans FIPS 203 (août 2024). Le KEM à déployer : TLS, SSH et HPKE définissent déjà comment l’utiliser.

Mesurer sur cet appareil

Exécute la génération de clés et l’encapsulation et la décapsulation dans un worker en arrière-plan, pendant au plus 3 secondes environ par opération, ainsi que les mêmes opérations avec X25519 pour comparaison. Chaque résultat est vérifié : un build défectueux ne peut donc pas annoncer une valeur rapide mais fausse.

Point de comparaison classique
Filtrer le zoo
Type

103 algorithmes sur 103

Algorithmes post-quantiques de liboqs 0.15.1
AlgorithmeFamilleStatutNiveauClé publiqueClé privéeSignature / texte chiffréClé + sortie (échelle logarithmique)
SLH-DSANorme NIST132 o64 o17 088 o
SLH-DSANorme NIST132 o64 o7 856 o
SLH-DSANorme NIST132 o64 o17 088 o
SLH-DSANorme NIST132 o64 o7 856 o
SLH-DSANorme NIST348 o96 o35 664 o
SLH-DSANorme NIST348 o96 o16 224 o
SLH-DSANorme NIST348 o96 o35 664 o
SLH-DSANorme NIST348 o96 o16 224 o
CROSSCandidat du NIST154 o32 o9 120 o
CROSSCandidat du NIST154 o32 o11 980 o
CROSSCandidat du NIST154 o32 o8 960 o
SLH-DSANorme NIST564 o128 o49 856 o
SLH-DSANorme NIST564 o128 o29 792 o
SLH-DSANorme NIST564 o128 o49 856 o
SLH-DSANorme NIST564 o128 o29 792 o
CROSSCandidat du NIST177 o32 o13 152 o
CROSSCandidat du NIST177 o32 o18 432 o
CROSSCandidat du NIST177 o32 o12 432 o
CROSSCandidat du NIST383 o48 o22 464 o
CROSSCandidat du NIST383 o48 o26 772 o
CROSSCandidat du NIST383 o48 o20 452 o
CROSSCandidat du NIST5106 o64 o40 100 o
CROSSCandidat du NIST5106 o64 o48 102 o
CROSSCandidat du NIST5106 o64 o36 454 o
CROSSCandidat du NIST3115 o48 o29 853 o
CROSSCandidat du NIST3115 o48 o41 406 o
CROSSCandidat du NIST3115 o48 o28 391 o
CROSSCandidat du NIST5153 o64 o53 527 o
CROSSCandidat du NIST5153 o64 o74 590 o
CROSSCandidat du NIST5153 o64 o50 818 o
NTRUNon retenu par le NIST1699 o935 o699 o
CRYSTALS-KyberRemplacé1800 o1 632 o768 o
ML-KEMNorme NIST1800 o1 632 o768 o
FalconSélectionné par le NIST, norme en préparation1897 o1 281 o≤ 752 o
FalconSélectionné par le NIST, norme en préparation1897 o1 281 o666 o
NTRUNon retenu par le NIST3930 o1 234 o930 o
SNOVACandidat du NIST11 016 o48 o248 o
SNOVACandidat du NIST11 016 o48 o248 o
SNOVACandidat du NIST11 016 o36 848 o248 o
SNOVACandidat du NIST11 016 o36 848 o248 o
NTRUNon retenu par le NIST31 138 o1 450 o1 138 o
Streamlined NTRU PrimeNon retenu par le NIST31 158 o1 763 o1 039 o
CRYSTALS-KyberRemplacé31 184 o2 400 o1 088 o
ML-KEMNorme NIST31 184 o2 400 o1 088 o
NTRUNon retenu par le NIST51 230 o1 590 o1 230 o
ML-DSANorme NIST21 312 o2 560 o2 420 o
MAYOCandidat du NIST11 420 o24 o454 o
CRYSTALS-KyberRemplacé51 568 o3 168 o1 568 o
ML-KEMNorme NIST51 568 o3 168 o1 568 o
SNOVACandidat du NIST11 579 o48 o379 o
FalconSélectionné par le NIST, norme en préparation51 793 o2 305 o≤ 1 462 o
FalconSélectionné par le NIST, norme en préparation51 793 o2 305 o1 280 o
NTRUNon retenu par le NIST51 842 o2 366 o1 842 o
ML-DSANorme NIST31 952 o4 032 o3 309 o
HQCSélectionné par le NIST, norme en préparation12 249 o2 305 o4 433 o
SNOVACandidat du NIST12 320 o48 o165 o
NTRUNon retenu par le NIST52 401 o2 983 o2 401 o
ML-DSANorme NIST52 592 o4 896 o4 627 o
SNOVACandidat du NIST32 716 o48 o454 o
MAYOCandidat du NIST32 986 o32 o681 o
SNOVACandidat du NIST34 112 o48 o376 o
HQCSélectionné par le NIST, norme en préparation34 522 o4 586 o8 978 o
MAYOCandidat du NIST14 912 o24 o186 o
MAYOCandidat du NIST55 554 o40 o964 o
SNOVACandidat du NIST56 006 o48 o286 o
HQCSélectionné par le NIST, norme en préparation57 245 o7 317 o14 421 o
SNOVACandidat du NIST58 016 o48 o576 o
FrodoKEMNon retenu par le NIST19 616 o19 888 o9 752 o
FrodoKEMNon retenu par le NIST19 616 o19 888 o9 752 o
eFrodoKEMNon retenu par le NIST19 616 o19 888 o9 720 o
eFrodoKEMNon retenu par le NIST19 616 o19 888 o9 720 o
SNOVACandidat du NIST39 842 o48 o124 o
FrodoKEMNon retenu par le NIST315 632 o31 296 o15 792 o
FrodoKEMNon retenu par le NIST315 632 o31 296 o15 792 o
eFrodoKEMNon retenu par le NIST315 632 o31 296 o15 744 o
eFrodoKEMNon retenu par le NIST315 632 o31 296 o15 744 o
FrodoKEMNon retenu par le NIST521 520 o43 088 o21 696 o
FrodoKEMNon retenu par le NIST521 520 o43 088 o21 696 o
eFrodoKEMNon retenu par le NIST521 520 o43 088 o21 632 o
eFrodoKEMNon retenu par le NIST521 520 o43 088 o21 632 o
SNOVACandidat du NIST531 266 o48 o178 o
UOVCandidat du NIST143 576 o237 896 o128 o
UOVCandidat du NIST143 576 o32 o128 o
UOVCandidat du NIST166 576 o348 704 o96 o
UOVCandidat du NIST166 576 o32 o96 o
UOVCandidat du NIST3189 232 o1 044 320 o200 o
UOVCandidat du NIST3189 232 o32 o200 o
Classic McElieceNon retenu par le NIST1261 120 o6 492 o96 o
Classic McElieceNon retenu par le NIST1261 120 o6 492 o96 o
UOVCandidat du NIST1278 432 o237 896 o128 o
UOVCandidat du NIST1412 160 o348 704 o96 o
UOVCandidat du NIST5446 992 o2 436 704 o260 o
UOVCandidat du NIST5446 992 o32 o260 o
Classic McElieceNon retenu par le NIST3524 160 o13 608 o156 o
Classic McElieceNon retenu par le NIST3524 160 o13 608 o156 o
Classic McElieceNon retenu par le NIST51 044 992 o13 932 o208 o
Classic McElieceNon retenu par le NIST51 044 992 o13 932 o208 o
Classic McElieceNon retenu par le NIST51 047 319 o13 948 o194 o
Classic McElieceNon retenu par le NIST51 047 319 o13 948 o194 o
UOVCandidat du NIST31 225 440 o1 044 320 o200 o
Classic McElieceNon retenu par le NIST51 357 824 o14 120 o208 o
Classic McElieceNon retenu par le NIST51 357 824 o14 120 o208 o
UOVCandidat du NIST52 869 440 o2 436 704 o260 o

What is in the zoo

The zoo lists every key encapsulation mechanism and signature scheme of liboqs 0.15.1, the C library of the Open Quantum Safe project, as packaged for the web by @oqs/liboqs-js: 103 parameter sets in 15 families. For each one you see the sizes that decide whether it fits a protocol — public key, private key, signature or ciphertext — its NIST security level, the hard problem it rests on, and how far it has come in standardization. Pick any of them and the lab measures it on your own device against the classical algorithm it would replace.

Where each family stands

The status column follows NIST's post-quantum project as of 20 October 2026:

  • Standards. ML-KEM (FIPS 203), ML-DSA (FIPS 204) and SLH-DSA (FIPS 205), final since August 2024. These are the algorithms to deploy, and the ones TLS, X.509, JOSE and HPKE now define.
  • Selected, standard in preparation. Falcon, which NIST is turning into FN-DSA (FIPS 206, not final yet; liboqs still ships round-3 Falcon, which FN-DSA will not match byte for byte), and HQC, the code-based KEM NIST picked in March 2025 (NIST IR 8545) as a backup resting on a different problem than ML-KEM.
  • Candidates. MAYO, UOV, SNOVA and CROSS are in NIST's process for additional signatures, which looks for schemes with short signatures or assumptions other than lattices. None is a standard; their parameters may still change.
  • Not selected. Classic McEliece, FrodoKEM, NTRU and Streamlined NTRU Prime were evaluated and not chosen by NIST. That is not a verdict of insecurity: Germany's BSI recommends FrodoKEM and Classic McEliece for conservative deployments, both are part of an ISO/IEC 18033-2 amendment, and OpenSSH used sntrup761x25519-sha512 before it moved to ML-KEM.
  • Superseded. CRYSTALS-Kyber as submitted to round 3. FIPS 203 changed it, so Kyber and ML-KEM do not interoperate; liboqs keeps it for existing deployments.

Sizes first

For most systems the bytes matter more than the microseconds. A TLS handshake with X25519MLKEM768 carries 2,336 bytes for the key exchange instead of 64; an ML-DSA-65 signature is 3,309 bytes against 64 for Ed25519. The families spread over four orders of magnitude: UOV signatures start at 96 bytes, with public keys of up to 2.8 MB, Classic McEliece ciphertexts are under 210 bytes with public keys of up to 1.3 MB, and SLH-DSA keys are 32 to 64 bytes with signatures of up to 49,856. The table's last column puts public key plus signature or ciphertext on a logarithmic scale, the only one on which all of them fit. Sort by it to find the smallest exchange of each kind.

How the benchmark measures

Measuring downloads one liboqs module from this site — JavaScript with the WebAssembly embedded, about 18 to 55 KB when compressed — and runs it in a Web Worker, so the page stays responsive even while Classic McEliece generates a megabyte-sized key. For each operation the runner first calibrates a batch: how many operations it takes to last at least 5 milliseconds, because browsers coarsen performance.now() to 0.1 ms on pages that are not cross-origin isolated. It then times eleven batches and reports the median per operation, within a budget of three seconds per operation, so the slowest sets report fewer samples and say so.

Every result is checked while it is measured: each signature must verify, a tampered signature must not, and each decapsulation must recover the encapsulated secret. A miscompiled module cannot report a fast but wrong number. The sizes the module produces are compared with the registry too.

The classical baselines run the same way, through WebCrypto (the browser's native implementation) or through the @noble/curves JavaScript library: ECDSA P-256 and Ed25519 for signatures, X25519 for key encapsulation, used as a KEM by sending a fresh ephemeral public key. Where the browser's WebCrypto lacks Ed25519 or X25519, the JavaScript version stands in and the page says so.

What stays local

The zoo takes no input of yours: keys are generated inside the worker for the measurement and discarded. The modules come from this site, and neither your device's details nor the results are sent anywhere. A share link records only the selected algorithm and the filters.

From the zoo to the standards

To use the standardized algorithms rather than time them, the post-quantum signature lab signs and verifies ML-DSA, SLH-DSA and Falcon with every FIPS option, and the ML-KEM lab runs the TLS hybrids. FN-DSA vs ML-DSA and ML-DSA vs SLH-DSA weigh the signature families against each other, and Post-quantum migration in 2026 explains which deadlines apply.