
Project Wycheproof tests crypto libraries against known attacks.
O Project Wycheproof é um repositório gerido pela comunidade de vetores de teste que podem ser utilizados por desenvolvedores de bibliotecas criptográficas para testar contra ataques conhecidos, inconsistências de especificação e outros vários bugs de implementação.
Os vetores de teste são mantidos como dados JSON de vetores de teste, com ficheiros JSON schema que documentam a estrutura dos dados dos vetores de teste.
Pode achar útil examinar como outros projetos como pyca/cryptography integraram os vetores de teste do Wycheproof.
O Project Wycheproof tem vetores de teste para os algoritmos criptográficos mais populares, incluindo
Os vetores de teste detetam se uma biblioteca é vulnerável a muitos ataques, incluindo
Aceitamos contribuições de novos dados de vetores de teste e algoritmos.
Se quiser contribuir, leia CONTRIBUTING e envie-nos pull requests. Também pode reportar bugs ou solicitar novos testes como issues no GitHub.
Estamos em processo de revitalização do desenvolvimento e manutenção do Project Wycheproof como um projeto C2SP com um foco renovado nos dados dos vetores de teste. As nossas prioridades imediatas são:
O Project Wycheproof recebeu o nome do Monte Wycheproof, a menor montanha do mundo. A principal motivação para o projeto no momento da sua criação era ter um objetivo que fosse alcançável. Quanto menor a montanha, maior a probabilidade de conseguir escalá-la.
Os vetores de teste do Wycheproof são usados de alguma forma por vários projetos e bibliotecas criptográficas importantes. Sem ordem particular, estes incluem:
Se o seu projeto usa vetores de teste do Wycheproof, sinta-se à vontade para abrir um PR para o adicionar à lista acima!
Veja doc/bugs.md para alguns bugs históricos notáveis encontrados usando as plataformas de teste do Wycheproof ou dados de vetores de teste.
testvectors/?Recentemente combinámos os diretórios testvectors/ e testvectors_v1/ num único diretório unificado com uma abordagem consistente para esquemas.
Os utilizadores que necessitam dos dados originais ("v0") dos vetores de teste podem clonar este repositório a partir da tag wycheproof-v0-vectors, mas são encorajados a considerar a atualização para usar testvectors_v1/ para beneficiar de futuras atualizações. Se houver funcionalidades/cobertura de teste de testvectors/ que faltem em testvectors_v1/, ou houver outro problema a bloquear a sua atualização, por favor abra uma issue descrevendo as suas necessidades.
No momento da escrita, os seguintes ficheiros de testvectors_v1 não têm esquemas:
testvectors_v1/aes_ff1_base*_test.jsontestvectors_v1/aes_ff1_radix*_test.jsontestvectors_v1/ecdsa_secp256k1_sha256_bitcoin_test.jsontestvectors_v1/pbes2_hmacsha*_aes_*_test.jsontestvectors_v1/pbkdf2_hmacsha*_test.jsontestvectors_v1/rsa_pss_*_sha*_mgf*_params_test.jsontestvectors_v1/rsa_pss_misc_params_test.jsonA contribuição de esquemas para os vetores acima seria muito bem-vinda.
Alguma documentação legada para ficheiros, formatos e tipos está disponível, mas não necessariamente em sincronia com o estado atual do vetor de teste.
Em geral, prefira referenciar os ficheiros de esquema já que estes são testados em CI para garantir que o conteúdo dos ficheiros de vetor corresponde ao seu esquema anunciado.
Historicamente, o Wycheproof também incluía plataformas de teste (por exemplo, para implementações criptográficas em Java e Javascript) que testavam uma variedade de ataques diretamente contra implementações. Desde a transição para suporte comunitário, essas plataformas foram removidas (mas ainda existem no histórico do git para partes interessadas em cd27d64). O nosso foco atual está em vetores de teste agnósticos de implementação.
Testar bibliotecas criptográficas de terceiros diretamente significa que as falhas só são descobertas depois de terem sido cometidas e potencialmente lançadas pelos projetos em teste. Em vez disso, encorajamos os projetos a jusante a testar regularmente o seu código usando vetores de teste do Wycheproof como parte do seu processo de desenvolvimento. Esta abordagem ajuda a detetar falhas antes que possam tornar-se CVEs, significa que novas funcionalidades são testadas imediatamente e ajuda a distribuir o fardo da manutenção. Isto permite que os mantenedores do Wycheproof se concentrem nos vetores de teste em vez de acompanhar o desenvolvimento a jusante de muitos projetos enquanto mantêm simultaneamente um número cada vez maior de plataformas de teste específicas de linguagem e de projeto.
Partes interessadas em plataformas de teste podem achar o trabalho continuado de Daniel Bleichenbacher em Rooterberg de interesse.
Copyright 2016-2026 The Wycheproof Authors, oferecido sob a Apache License 2.0.
O Project Wycheproof foi originalmente criado e mantido por: