Перейти к содержимому
ecdsa.com

Post-Quantum Algorithm Zoo — зоопарк постквантовых алгоритмов: размеры и скорость 100+ алгоритмов

Все 103 алгоритма из поставки liboqs, от стандартов NIST до кандидатов дополнительного отбора схем подписи: фильтруйте, сортируйте по размеру и выберите алгоритм для замера. Бенчмарк использует liboqs, скомпилированную в WebAssembly, работает в фоновом Web Worker на вашем устройстве и сравнивает результат с ECDSA P-256, Ed25519 или X25519, измеренными тем же способом.

100 % локально — код алгоритмов загружается с этого сайта, только когда вы запускаете замер, и выполняется в браузере; никакие сведения о вашем устройстве и результатах никуда не отправляются

103 алгоритма из liboqs 0.15.1: 38 механизмов инкапсуляции ключа и 65 схем подписи в 15 семействах.

ML-KEM-768

Семейство
ML-KEM
Тип
Механизм инкапсуляции ключа
Трудная задача
Модульные решётки (Module-LWE / Module-SIS)
Статус
Стандарт NIST
Спецификация
FIPS 203
Уровень стойкости NIST
3
Имя в liboqs
ML-KEM-768

Размеры в сравнении с классическими алгоритмами

Открытый ключ
АлгоритмОткрытый ключ
ML-KEM-768
1 184 Б
X25519
32 Б
Шифртекст
АлгоритмПодпись / шифртекст
ML-KEM-768
1 088 Б
X25519
32 Б

Открытый ключ вместе с шифртекстом: в 35,5 раза больше, чем у X25519. Размеры классических алгоритмов указаны для необработанных кодировок: несжатые точки эллиптических кривых, r‖s для ECDSA, ключ PKCS #1 для RSA-2048.

  • Стандартизован в FIPS 203 (август 2024 года). Именно этот KEM стоит внедрять: в TLS, SSH и HPKE уже определено, как его использовать.

Замер на этом устройстве

Замер выполняет генерацию ключей и инкапсуляцию и декапсуляцию в фоновом Web Worker, примерно до 3 секунд на каждую операцию, а для сравнения — те же операции для X25519. Каждый результат проверяется, поэтому неисправная сборка не сможет выдать быстрое, но неверное значение.

Классический эталон
Фильтры зоопарка
Тип

103 алгоритма из 103

Постквантовые алгоритмы liboqs 0.15.1
АлгоритмСемействоСтатусУровеньОткрытый ключЗакрытый ключПодпись / шифртекстКлюч + результат (логарифмическая шкала)
SLH-DSAСтандарт NIST132 Б64 Б17 088 Б
SLH-DSAСтандарт NIST132 Б64 Б7 856 Б
SLH-DSAСтандарт NIST132 Б64 Б17 088 Б
SLH-DSAСтандарт NIST132 Б64 Б7 856 Б
SLH-DSAСтандарт NIST348 Б96 Б35 664 Б
SLH-DSAСтандарт NIST348 Б96 Б16 224 Б
SLH-DSAСтандарт NIST348 Б96 Б35 664 Б
SLH-DSAСтандарт NIST348 Б96 Б16 224 Б
CROSSКандидат NIST154 Б32 Б9 120 Б
CROSSКандидат NIST154 Б32 Б11 980 Б
CROSSКандидат NIST154 Б32 Б8 960 Б
SLH-DSAСтандарт NIST564 Б128 Б49 856 Б
SLH-DSAСтандарт NIST564 Б128 Б29 792 Б
SLH-DSAСтандарт NIST564 Б128 Б49 856 Б
SLH-DSAСтандарт NIST564 Б128 Б29 792 Б
CROSSКандидат NIST177 Б32 Б13 152 Б
CROSSКандидат NIST177 Б32 Б18 432 Б
CROSSКандидат NIST177 Б32 Б12 432 Б
CROSSКандидат NIST383 Б48 Б22 464 Б
CROSSКандидат NIST383 Б48 Б26 772 Б
CROSSКандидат NIST383 Б48 Б20 452 Б
CROSSКандидат NIST5106 Б64 Б40 100 Б
CROSSКандидат NIST5106 Б64 Б48 102 Б
CROSSКандидат NIST5106 Б64 Б36 454 Б
CROSSКандидат NIST3115 Б48 Б29 853 Б
CROSSКандидат NIST3115 Б48 Б41 406 Б
CROSSКандидат NIST3115 Б48 Б28 391 Б
CROSSКандидат NIST5153 Б64 Б53 527 Б
CROSSКандидат NIST5153 Б64 Б74 590 Б
CROSSКандидат NIST5153 Б64 Б50 818 Б
NTRUНе выбран NIST1699 Б935 Б699 Б
CRYSTALS-KyberЗаменён1800 Б1 632 Б768 Б
ML-KEMСтандарт NIST1800 Б1 632 Б768 Б
FalconВыбран NIST, стандарт в разработке1897 Б1 281 Б≤ 752 Б
FalconВыбран NIST, стандарт в разработке1897 Б1 281 Б666 Б
NTRUНе выбран NIST3930 Б1 234 Б930 Б
SNOVAКандидат NIST11 016 Б48 Б248 Б
SNOVAКандидат NIST11 016 Б48 Б248 Б
SNOVAКандидат NIST11 016 Б36 848 Б248 Б
SNOVAКандидат NIST11 016 Б36 848 Б248 Б
NTRUНе выбран NIST31 138 Б1 450 Б1 138 Б
Streamlined NTRU PrimeНе выбран NIST31 158 Б1 763 Б1 039 Б
CRYSTALS-KyberЗаменён31 184 Б2 400 Б1 088 Б
ML-KEMСтандарт NIST31 184 Б2 400 Б1 088 Б
NTRUНе выбран NIST51 230 Б1 590 Б1 230 Б
ML-DSAСтандарт NIST21 312 Б2 560 Б2 420 Б
MAYOКандидат NIST11 420 Б24 Б454 Б
CRYSTALS-KyberЗаменён51 568 Б3 168 Б1 568 Б
ML-KEMСтандарт NIST51 568 Б3 168 Б1 568 Б
SNOVAКандидат NIST11 579 Б48 Б379 Б
FalconВыбран NIST, стандарт в разработке51 793 Б2 305 Б≤ 1 462 Б
FalconВыбран NIST, стандарт в разработке51 793 Б2 305 Б1 280 Б
NTRUНе выбран NIST51 842 Б2 366 Б1 842 Б
ML-DSAСтандарт NIST31 952 Б4 032 Б3 309 Б
HQCВыбран NIST, стандарт в разработке12 249 Б2 305 Б4 433 Б
SNOVAКандидат NIST12 320 Б48 Б165 Б
NTRUНе выбран NIST52 401 Б2 983 Б2 401 Б
ML-DSAСтандарт NIST52 592 Б4 896 Б4 627 Б
SNOVAКандидат NIST32 716 Б48 Б454 Б
MAYOКандидат NIST32 986 Б32 Б681 Б
SNOVAКандидат NIST34 112 Б48 Б376 Б
HQCВыбран NIST, стандарт в разработке34 522 Б4 586 Б8 978 Б
MAYOКандидат NIST14 912 Б24 Б186 Б
MAYOКандидат NIST55 554 Б40 Б964 Б
SNOVAКандидат NIST56 006 Б48 Б286 Б
HQCВыбран NIST, стандарт в разработке57 245 Б7 317 Б14 421 Б
SNOVAКандидат NIST58 016 Б48 Б576 Б
FrodoKEMНе выбран NIST19 616 Б19 888 Б9 752 Б
FrodoKEMНе выбран NIST19 616 Б19 888 Б9 752 Б
eFrodoKEMНе выбран NIST19 616 Б19 888 Б9 720 Б
eFrodoKEMНе выбран NIST19 616 Б19 888 Б9 720 Б
SNOVAКандидат NIST39 842 Б48 Б124 Б
FrodoKEMНе выбран NIST315 632 Б31 296 Б15 792 Б
FrodoKEMНе выбран NIST315 632 Б31 296 Б15 792 Б
eFrodoKEMНе выбран NIST315 632 Б31 296 Б15 744 Б
eFrodoKEMНе выбран NIST315 632 Б31 296 Б15 744 Б
FrodoKEMНе выбран NIST521 520 Б43 088 Б21 696 Б
FrodoKEMНе выбран NIST521 520 Б43 088 Б21 696 Б
eFrodoKEMНе выбран NIST521 520 Б43 088 Б21 632 Б
eFrodoKEMНе выбран NIST521 520 Б43 088 Б21 632 Б
SNOVAКандидат NIST531 266 Б48 Б178 Б
UOVКандидат NIST143 576 Б237 896 Б128 Б
UOVКандидат NIST143 576 Б32 Б128 Б
UOVКандидат NIST166 576 Б348 704 Б96 Б
UOVКандидат NIST166 576 Б32 Б96 Б
UOVКандидат NIST3189 232 Б1 044 320 Б200 Б
UOVКандидат NIST3189 232 Б32 Б200 Б
Classic McElieceНе выбран NIST1261 120 Б6 492 Б96 Б
Classic McElieceНе выбран NIST1261 120 Б6 492 Б96 Б
UOVКандидат NIST1278 432 Б237 896 Б128 Б
UOVКандидат NIST1412 160 Б348 704 Б96 Б
UOVКандидат NIST5446 992 Б2 436 704 Б260 Б
UOVКандидат NIST5446 992 Б32 Б260 Б
Classic McElieceНе выбран NIST3524 160 Б13 608 Б156 Б
Classic McElieceНе выбран NIST3524 160 Б13 608 Б156 Б
Classic McElieceНе выбран NIST51 044 992 Б13 932 Б208 Б
Classic McElieceНе выбран NIST51 044 992 Б13 932 Б208 Б
Classic McElieceНе выбран NIST51 047 319 Б13 948 Б194 Б
Classic McElieceНе выбран NIST51 047 319 Б13 948 Б194 Б
UOVКандидат NIST31 225 440 Б1 044 320 Б200 Б
Classic McElieceНе выбран NIST51 357 824 Б14 120 Б208 Б
Classic McElieceНе выбран NIST51 357 824 Б14 120 Б208 Б
UOVКандидат NIST52 869 440 Б2 436 704 Б260 Б

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.