
Le projet Wycheproof teste les bibliothèques cryptographiques contre des attaques connues.
Le projet Wycheproof est un référentiel géré par la communauté de vecteurs de test que les développeurs de bibliothèques cryptographiques peuvent utiliser pour tester leurs implémentations contre des attaques connues, des incohérences de spécification et divers autres bogues d'implémentation.
Les vecteurs de test sont maintenus sous forme de données JSON de vecteurs de test, accompagnées de fichiers schéma JSON qui documentent la structure des données des vecteurs de test.
Il peut être utile d'examiner comment d'autres projets comme pyca/cryptography ont intégré les vecteurs de test de Wycheproof.
Le projet Wycheproof fournit des vecteurs de test pour les algorithmes cryptographiques les plus populaires, notamment
Les vecteurs de test permettent de détecter si une bibliothèque est vulnérable à de nombreuses attaques, notamment
Nous encourageons la contribution de nouvelles données de vecteurs de test et de nouveaux algorithmes.
Si vous souhaitez contribuer, veuillez lire CONTRIBUTING et nous envoyer des pull requests. Vous pouvez également signaler des bogues ou demander de nouveaux tests via les issues GitHub.
Nous sommes en train de redynamiser le développement et la maintenance du projet Wycheproof en tant que projet C2SP, avec un accent renouvelé sur les données des vecteurs de test. Nos priorités immédiates sont :
Le projet Wycheproof tire son nom du mont Wycheproof, la plus petite montagne du monde. La principale motivation du projet à sa création était de se fixer un objectif réalisable. Plus la montagne est petite, plus il est probable de pouvoir la gravir.
Les vecteurs de test de Wycheproof sont utilisés sous une forme ou une autre par un certain nombre de projets et bibliothèques cryptographiques importants. Sans ordre particulier, on trouve notamment :
Si votre projet utilise des vecteurs de test de Wycheproof, n'hésitez pas à ouvrir une PR pour l'ajouter à la liste ci-dessus !
Consultez doc/bugs.md pour découvrir quelques bogues historiques notables découverts à l'aide des harnais de test de Wycheproof ou des données de vecteurs de test.
testvectors/ ?Nous avons récemment fusionné les répertoires testvectors/ et testvectors_v1/ en un répertoire unique et unifié, avec une approche uniforme des schémas.
Les utilisateurs ayant besoin des données de vecteurs de test d'origine (« v0 ») peuvent cloner ce dépôt à partir de l'étiquette wycheproof-v0-vectors, mais sont encouragés à envisager une mise à jour vers testvectors_v1/ pour bénéficier des évolutions futures. Si certaines fonctionnalités/couvertures de test de testvectors/ sont absentes de testvectors_v1/, ou si un autre problème bloque votre mise à jour, veuillez ouvrir une issue décrivant vos besoins.
Au moment de la rédaction de ce document, les fichiers testvectors_v1 suivants sont dépourvus de schémas :
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.jsonDes contributions de schémas pour les vecteurs ci-dessus seraient les bienvenues.
Une documentation plus ancienne concernant les fichiers, les formats et les types est disponible, mais elle n'est pas nécessairement synchronisée avec l'état actuel des vecteurs de test.
En général, privilégiez la consultation des fichiers de schéma, car ceux-ci sont testés en CI pour garantir que le contenu des fichiers de vecteurs correspond au schéma annoncé.
Historiquement, Wycheproof incluait également des harnais de test (par exemple pour les implémentations cryptographiques Java et JavaScript) qui testaient directement diverses attaques contre les implémentations. Depuis le passage à un support communautaire, ces harnais ont été supprimés (mais ils existent toujours dans l'historique git pour les personnes intéressées, à cd27d64). Notre priorité actuelle porte sur des vecteurs de test indépendants de l'implémentation.
Tester directement des bibliothèques cryptographiques tierces signifie que les failles ne sont découvertes qu'après avoir été intégrées, puis potentiellement publiées, par les projets testés. Nous encourageons plutôt les projets en aval à tester régulièrement leur code à l'aide des vecteurs de test de Wycheproof dans le cadre de leur processus de développement. Cette approche permet de détecter les failles avant qu'elles ne deviennent des CVE, garantit que les nouvelles fonctionnalités sont testées immédiatement et contribue à répartir la charge de maintenance. Cela permet aux mainteneurs de Wycheproof de se concentrer sur les vecteurs de test plutôt que de suivre le développement en aval de nombreux projets tout en maintenant un nombre toujours croissant de harnais de test spécifiques à chaque langage et projet.
Ceux qui s'intéressent aux harnais de test trouveront peut-être un intérêt aux travaux poursuivis par Daniel Bleichenbacher dans Rooterberg.
Copyright 2016-2026 The Wycheproof Authors, publié sous la licence Apache 2.0.
Le projet Wycheproof a été initialement créé et maintenu par :