Pular para o conteúdo
ecdsa.com

Zoo de algoritmos pós-quânticos (Post-Quantum Algorithm Zoo): tamanhos e velocidade de mais de 100 algoritmos

Os 103 algoritmos que a liboqs traz, dos padrões do NIST aos candidatos da rodada de assinaturas adicionais: filtre, ordene por tamanho e escolha um para medir. O benchmark compila a liboqs para WebAssembly, roda em um worker em segundo plano no seu próprio dispositivo e compara o resultado com ECDSA P-256, Ed25519 ou X25519 medidos da mesma forma.

100% local — o código dos algoritmos é baixado deste site só quando você faz uma medição e roda no seu navegador; nada sobre seu dispositivo ou os resultados é enviado a lugar nenhum

103 algoritmos da liboqs 0.15.1: 38 mecanismos de encapsulamento de chave e 65 esquemas de assinatura, em 15 famílias.

ML-KEM-768

Família
ML-KEM
Tipo
Mecanismo de encapsulamento de chave
Problema difícil
Reticulados de módulo (Module-LWE / Module-SIS)
Status
Padrão do NIST
Referência
FIPS 203
Nível de segurança do NIST
3
Nome na liboqs
ML-KEM-768

Tamanhos comparados aos dos algoritmos clássicos

Chave pública
AlgoritmoChave pública
ML-KEM-768
1.184 B
X25519
32 B
Texto cifrado
AlgoritmoAssinatura / texto cifrado
ML-KEM-768
1.088 B
X25519
32 B

Chave pública mais texto cifrado: 35,5× o total de X25519. Os tamanhos clássicos são de codificações brutas: pontos EC não comprimidos, r‖s para o ECDSA e uma chave PKCS #1 para o RSA-2048.

  • Padronizado no FIPS 203 (agosto de 2024). É o KEM a adotar: o TLS, o SSH e o HPKE já definem como usá-lo.

Medir neste dispositivo

Executa a geração de chaves e o encapsulamento e o desencapsulamento em um worker em segundo plano, por no máximo cerca de 3 segundos por operação, e as mesmas operações de X25519 para comparação. Todo resultado é conferido, então um build defeituoso não consegue informar um número rápido, mas errado.

Linha de base clássica
Filtrar o zoo
Tipo

103 algoritmos de 103

Algoritmos pós-quânticos da liboqs 0.15.1
AlgoritmoFamíliaStatusNívelChave públicaChave privadaAssinatura / texto cifradoChave + saída (escala logarítmica)
SLH-DSAPadrão do NIST132 B64 B17.088 B
SLH-DSAPadrão do NIST132 B64 B7.856 B
SLH-DSAPadrão do NIST132 B64 B17.088 B
SLH-DSAPadrão do NIST132 B64 B7.856 B
SLH-DSAPadrão do NIST348 B96 B35.664 B
SLH-DSAPadrão do NIST348 B96 B16.224 B
SLH-DSAPadrão do NIST348 B96 B35.664 B
SLH-DSAPadrão do NIST348 B96 B16.224 B
CROSSCandidato do NIST154 B32 B9.120 B
CROSSCandidato do NIST154 B32 B11.980 B
CROSSCandidato do NIST154 B32 B8.960 B
SLH-DSAPadrão do NIST564 B128 B49.856 B
SLH-DSAPadrão do NIST564 B128 B29.792 B
SLH-DSAPadrão do NIST564 B128 B49.856 B
SLH-DSAPadrão do NIST564 B128 B29.792 B
CROSSCandidato do NIST177 B32 B13.152 B
CROSSCandidato do NIST177 B32 B18.432 B
CROSSCandidato do NIST177 B32 B12.432 B
CROSSCandidato do NIST383 B48 B22.464 B
CROSSCandidato do NIST383 B48 B26.772 B
CROSSCandidato do NIST383 B48 B20.452 B
CROSSCandidato do NIST5106 B64 B40.100 B
CROSSCandidato do NIST5106 B64 B48.102 B
CROSSCandidato do NIST5106 B64 B36.454 B
CROSSCandidato do NIST3115 B48 B29.853 B
CROSSCandidato do NIST3115 B48 B41.406 B
CROSSCandidato do NIST3115 B48 B28.391 B
CROSSCandidato do NIST5153 B64 B53.527 B
CROSSCandidato do NIST5153 B64 B74.590 B
CROSSCandidato do NIST5153 B64 B50.818 B
NTRUNão selecionado pelo NIST1699 B935 B699 B
CRYSTALS-KyberSubstituído1800 B1.632 B768 B
ML-KEMPadrão do NIST1800 B1.632 B768 B
FalconSelecionado pelo NIST, padrão em preparação1897 B1.281 B≤ 752 B
FalconSelecionado pelo NIST, padrão em preparação1897 B1.281 B666 B
NTRUNão selecionado pelo NIST3930 B1.234 B930 B
SNOVACandidato do NIST11.016 B48 B248 B
SNOVACandidato do NIST11.016 B48 B248 B
SNOVACandidato do NIST11.016 B36.848 B248 B
SNOVACandidato do NIST11.016 B36.848 B248 B
NTRUNão selecionado pelo NIST31.138 B1.450 B1.138 B
Streamlined NTRU PrimeNão selecionado pelo NIST31.158 B1.763 B1.039 B
CRYSTALS-KyberSubstituído31.184 B2.400 B1.088 B
ML-KEMPadrão do NIST31.184 B2.400 B1.088 B
NTRUNão selecionado pelo NIST51.230 B1.590 B1.230 B
ML-DSAPadrão do NIST21.312 B2.560 B2.420 B
MAYOCandidato do NIST11.420 B24 B454 B
CRYSTALS-KyberSubstituído51.568 B3.168 B1.568 B
ML-KEMPadrão do NIST51.568 B3.168 B1.568 B
SNOVACandidato do NIST11.579 B48 B379 B
FalconSelecionado pelo NIST, padrão em preparação51.793 B2.305 B≤ 1.462 B
FalconSelecionado pelo NIST, padrão em preparação51.793 B2.305 B1.280 B
NTRUNão selecionado pelo NIST51.842 B2.366 B1.842 B
ML-DSAPadrão do NIST31.952 B4.032 B3.309 B
HQCSelecionado pelo NIST, padrão em preparação12.249 B2.305 B4.433 B
SNOVACandidato do NIST12.320 B48 B165 B
NTRUNão selecionado pelo NIST52.401 B2.983 B2.401 B
ML-DSAPadrão do NIST52.592 B4.896 B4.627 B
SNOVACandidato do NIST32.716 B48 B454 B
MAYOCandidato do NIST32.986 B32 B681 B
SNOVACandidato do NIST34.112 B48 B376 B
HQCSelecionado pelo NIST, padrão em preparação34.522 B4.586 B8.978 B
MAYOCandidato do NIST14.912 B24 B186 B
MAYOCandidato do NIST55.554 B40 B964 B
SNOVACandidato do NIST56.006 B48 B286 B
HQCSelecionado pelo NIST, padrão em preparação57.245 B7.317 B14.421 B
SNOVACandidato do NIST58.016 B48 B576 B
FrodoKEMNão selecionado pelo NIST19.616 B19.888 B9.752 B
FrodoKEMNão selecionado pelo NIST19.616 B19.888 B9.752 B
eFrodoKEMNão selecionado pelo NIST19.616 B19.888 B9.720 B
eFrodoKEMNão selecionado pelo NIST19.616 B19.888 B9.720 B
SNOVACandidato do NIST39.842 B48 B124 B
FrodoKEMNão selecionado pelo NIST315.632 B31.296 B15.792 B
FrodoKEMNão selecionado pelo NIST315.632 B31.296 B15.792 B
eFrodoKEMNão selecionado pelo NIST315.632 B31.296 B15.744 B
eFrodoKEMNão selecionado pelo NIST315.632 B31.296 B15.744 B
FrodoKEMNão selecionado pelo NIST521.520 B43.088 B21.696 B
FrodoKEMNão selecionado pelo NIST521.520 B43.088 B21.696 B
eFrodoKEMNão selecionado pelo NIST521.520 B43.088 B21.632 B
eFrodoKEMNão selecionado pelo NIST521.520 B43.088 B21.632 B
SNOVACandidato do NIST531.266 B48 B178 B
UOVCandidato do NIST143.576 B237.896 B128 B
UOVCandidato do NIST143.576 B32 B128 B
UOVCandidato do NIST166.576 B348.704 B96 B
UOVCandidato do NIST166.576 B32 B96 B
UOVCandidato do NIST3189.232 B1.044.320 B200 B
UOVCandidato do NIST3189.232 B32 B200 B
Classic McElieceNão selecionado pelo NIST1261.120 B6.492 B96 B
Classic McElieceNão selecionado pelo NIST1261.120 B6.492 B96 B
UOVCandidato do NIST1278.432 B237.896 B128 B
UOVCandidato do NIST1412.160 B348.704 B96 B
UOVCandidato do NIST5446.992 B2.436.704 B260 B
UOVCandidato do NIST5446.992 B32 B260 B
Classic McElieceNão selecionado pelo NIST3524.160 B13.608 B156 B
Classic McElieceNão selecionado pelo NIST3524.160 B13.608 B156 B
Classic McElieceNão selecionado pelo NIST51.044.992 B13.932 B208 B
Classic McElieceNão selecionado pelo NIST51.044.992 B13.932 B208 B
Classic McElieceNão selecionado pelo NIST51.047.319 B13.948 B194 B
Classic McElieceNão selecionado pelo NIST51.047.319 B13.948 B194 B
UOVCandidato do NIST31.225.440 B1.044.320 B200 B
Classic McElieceNão selecionado pelo NIST51.357.824 B14.120 B208 B
Classic McElieceNão selecionado pelo NIST51.357.824 B14.120 B208 B
UOVCandidato do NIST52.869.440 B2.436.704 B260 B

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.