
Project Wycheproof tests crypto libraries against known attacks.
Project Wycheproof ist ein von der Community verwaltetes Repository mit Testvektoren, die von Entwicklern von Kryptografiebibliotheken genutzt werden können, um gegen bekannte Angriffe, Spezifikationsinkonsistenzen und andere Implementierungsfehler zu testen.
Testvektoren werden als JSON-Testvektordaten mit begleitenden JSON-Schema-Dateien gepflegt, die die Struktur der Testvektordaten dokumentieren.
Es kann hilfreich sein zu untersuchen, wie andere Projekte wie pyca/cryptography Wycheproofs Testvektoren integriert haben.
Project Wycheproof hat Testvektoren für die gängigsten Kryptoalgorithmen, darunter
Die Testvektoren erkennen, ob eine Bibliothek anfällig für viele Angriffe ist, darunter
Wir freuen uns über Beiträge neuer Testvektordaten und Algorithmen.
Wenn Sie mitwirken möchten, lesen Sie bitte CONTRIBUTING und senden Sie uns Pull-Requests. Sie können auch Fehler melden oder neue Tests als GitHub Issues anfordern.
Wir sind dabei, die Entwicklung und Wartung von Project Wycheproof als C2SP-Projekt wiederzubeleben, mit einem erneuten Fokus auf die Testvektordaten. Unsere unmittelbaren Prioritäten sind:
Project Wycheproof ist nach dem Mount Wycheproof benannt, dem kleinsten Berg der Welt. Die Hauptmotivation für das Projekt zum Zeitpunkt seiner Erstellung war es, ein erreichbares Ziel zu haben. Je kleiner der Berg, desto wahrscheinlicher ist es, ihn besteigen zu können.
Wycheproof-Testvektoren werden in irgendeiner Form von einer Reihe wichtiger Kryptografieprojekte und -bibliotheken verwendet. In keiner bestimmten Reihenfolge umfassen diese:
Falls Ihr Projekt Testvektoren von Wycheproof verwendet, können Sie gerne einen PR eröffnen, um es zur obigen Liste hinzuzufügen!
Siehe doc/bugs.md für einige bemerkenswerte historische Fehler, die mit Wycheproofs Test-Harnesses oder Testvektordaten gefunden wurden.
testvectors/-Verzeichnis?Wir haben kürzlich die Verzeichnisse testvectors/ und testvectors_v1/ zu einem einzigen vereinheitlichten Verzeichnis mit einem einheitlichen Schema-Ansatz zusammengeführt.
Benutzer, die die ursprünglichen ("v0") Testvektordaten benötigen, können dieses Repository vom wycheproof-v0-vectors Tag klonen, werden aber ermutigt, auf die Verwendung von testvectors_v1/ umzusteigen, um von zukünftigen Aktualisierungen zu profitieren. Falls Funktionen/Testabdeckungen aus testvectors/ in testvectors_v1/ fehlen oder ein anderes Problem Ihre Aktualisierung blockiert, eröffnen Sie bitte ein Issue, das Ihre Anforderungen beschreibt.
Zum Zeitpunkt der Erstellung dieses Dokuments fehlen den folgenden testvectors_v1-Dateien Schemas:
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.jsonBeiträge von Schemas für die obigen Vektoren wären sehr willkommen.
Einige ältere Dokumentationen zu Dateien, Formaten und Typen sind verfügbar, aber nicht unbedingt auf dem aktuellen Stand der Testvektoren.
Im Allgemeinen ist es vorzuziehen, auf die Schema-Dateien zu verweisen, da diese in CI getestet werden, um sicherzustellen, dass die Vektordateiinhalte mit ihrem angegebenen Schema übereinstimmen.
Historisch gesehen enthielt Wycheproof auch Test-Harnesses (z.B. für Java- und JavaScript-Kryptografieimplementierungen), die eine Vielzahl von Angriffen direkt gegen Implementierungen testeten. Seit dem Übergang zur Community-Unterstützung wurden diese Harnesses entfernt (existieren aber für Interessierte weiterhin in der git-Historie unter cd27d64). Unser aktueller Fokus liegt auf implementierungsunabhängigen Testvektoren.
Das direkte Testen von Kryptografiebibliotheken Dritter bedeutet, dass Fehler erst aufgedeckt werden, nachdem sie von den getesteten Projekten committet und möglicherweise veröffentlicht wurden. Stattdessen ermutigen wir nachgelagerte Projekte, ihren Code regelmäßig mit Wycheproof-Testvektoren im Rahmen ihres Entwicklungsprozesses zu testen. Dieser Ansatz hilft, Fehler bevor sie zu CVEs werden können, zu erkennen, bedeutet, dass neue Funktionen sofort getestet werden, und trägt zur Verteilung der Wartungslast bei. Dies ermöglicht es den Wycheproof-Maintainern, sich auf Testvektoren zu konzentrieren, anstatt die nachgelagerte Entwicklung vieler Projekte zu verfolgen und gleichzeitig eine ständig wachsende Anzahl von sprach- und projektspezifischen Test-Harnesses zu warten.
Interessierte an Test-Harnesses könnten die fortgesetzte Arbeit von Daniel Bleichenbacher in Rooterberg interessant finden.
Copyright 2016-2026 Die Wycheproof-Autoren, angeboten unter der Apache License 2.0.
Project Wycheproof wurde ursprünglich erstellt und gewartet von: