
El Proyecto Wycheproof prueba bibliotecas criptográficas contra ataques conocidos.
El Proyecto Wycheproof es un repositorio gestionado por la comunidad de vectores de prueba que los desarrolladores de bibliotecas criptográficas pueden utilizar para probar contra ataques conocidos, inconsistencias de especificaciones y otros diversos errores de implementación.
Los vectores de prueba se mantienen como datos JSON, con archivos de esquema JSON adjuntos que documentan la estructura de los datos de los vectores de prueba.
Puede resultarte útil examinar cómo otros proyectos como pyca/cryptography han integrado los vectores de prueba de Wycheproof.
El Proyecto Wycheproof tiene vectores de prueba para los algoritmos criptográficos más populares, incluyendo
Los vectores de prueba detectan si una biblioteca es vulnerable a muchos ataques, incluyendo
Agradecemos la contribución de nuevos datos de vectores de prueba y algoritmos.
Si quieres contribuir, lee CONTRIBUTING y envíanos pull requests. También puedes reportar errores o solicitar nuevas pruebas como GitHub issues.
Estamos en proceso de revitalizar el desarrollo y mantenimiento del Proyecto Wycheproof como un proyecto C2SP con un enfoque renovado en los datos de vectores de prueba. Nuestras prioridades inmediatas son:
El Proyecto Wycheproof lleva el nombre del Monte Wycheproof, la montaña más pequeña del mundo. La principal motivación del proyecto en el momento de su creación era tener un objetivo alcanzable. Cuanto más pequeña es la montaña, más probable es poder escalarla.
Los vectores de prueba de Wycheproof se utilizan de alguna forma en varios proyectos y bibliotecas criptográficas importantes. Sin ningún orden en particular, estos incluyen:
Si tu proyecto usa vectores de prueba de Wycheproof, no dudes en abrir un PR para añadirlo a la lista anterior.
Consulta doc/bugs.md para ver algunos errores históricos notables encontrados mediante los harnesses de prueba de Wycheproof o los datos de vectores de prueba.
testvectors/?Recientemente combinamos los directorios testvectors/ y testvectors_v1/ en
un único directorio unificado con un enfoque coherente para los esquemas.
Los usuarios que necesiten los datos originales ("v0") de vectores de prueba pueden clonar este repositorio desde
la etiqueta wycheproof-v0-vectors, pero se les anima a considerar actualizar para
usar testvectors_v1/ y beneficiarse de futuras actualizaciones. Si faltan características/cobertura
de pruebas de testvectors/ en testvectors_v1/, o hay otro
problema que bloquee tu actualización, abre un issue describiendo tus necesidades.
Al momento de escribir esto, los siguientes archivos de testvectors_v1 no tienen 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.jsonSe agradecería enormemente la contribución de esquemas para los vectores anteriores.
Hay disponible documentación heredada sobre archivos, formatos y tipos, pero no necesariamente está sincronizada con el estado actual de los vectores de prueba.
En general, es preferible consultar los archivos de esquema, ya que se prueban en CI para garantizar que el contenido de los archivos de vectores coincida con el esquema anunciado.
Históricamente, Wycheproof también incluía harnesses de prueba (p. ej., para implementaciones
criptográficas en Java y Javascript) que probaban una variedad de ataques
directamente contra las implementaciones. Desde la transición al soporte comunitario,
estos harnesses han sido eliminados (pero aún existen en el historial
de git para los interesados en cd27d64). Nuestro enfoque actual está en
vectores de prueba independientes de la implementación.
Probar directamente bibliotecas criptográficas de terceros significa que los fallos solo se descubren después de que los proyectos bajo prueba los hayan confirmado y potencialmente publicado. En su lugar, animamos a los proyectos downstream a probar regularmente su código usando los vectores de prueba de Wycheproof como parte de su proceso de desarrollo. Este enfoque ayuda a detectar fallos antes de que puedan convertirse en CVEs, significa que las nuevas funcionalidades se prueban de inmediato y ayuda a distribuir la carga de mantenimiento. Esto permite a los mantenedores de Wycheproof centrarse en los vectores de prueba en lugar de rastrear el desarrollo downstream de muchos proyectos mientras mantienen simultáneamente un número cada vez mayor de harnesses de prueba específicos de lenguaje y proyecto.
Las partes interesadas en harnesses de prueba pueden encontrar de interés el trabajo continuo de Daniel Bleichenbacher en Rooterberg.
Copyright 2016-2026 The Wycheproof Authors, ofrecido bajo la Apache License 2.0.
El Proyecto Wycheproof fue creado y mantenido originalmente por: