Project Wycheproofは、コミュニティ管理されたテストベクタのリポジトリであり、暗号ライブラリの開発者が既知の攻撃、仕様の不整合、その他のさまざまな実装バグに対してテストするために使用できます。
テストベクタはJSONテストベクタデータとして維持され、テストベクタデータの構造を文書化したJSONスキーマファイルが付属しています。
pyca/cryptographyのような他のプロジェクトがWycheproofのテストベクタを統合した方法を調べると参考になるかもしれません。
Project Wycheproofは、最も人気のある暗号アルゴリズムのテストベクタを提供しています。以下を含みます。
テストベクタは、ライブラリが多くの攻撃に対して脆弱かどうかを検出します。以下を含みます。
新しいテストベクタデータとアルゴリズムの貢献を歓迎します。
貢献したい場合は、CONTRIBUTINGをお読みいただき、プルリクエストをお送りください。バグの報告や新しいテストのリクエストは、GitHub issuesとして行うこともできます。
私たちは、C2SPプロジェクトとしてProject Wycheproofの開発とメンテナンスを再活性化する過程にあり、テストベクタデータに新たな焦点を当てています。当面の優先事項は以下のとおりです。
Project Wycheproofは、世界最小の山であるMount Wycheproofにちなんで名付けられました。プロジェクト創設時の主な動機は、達成可能な目標を持つことでした。山が小さければ小さいほど、登れる可能性が高くなります。
Wycheproofのテストベクタは、多くの重要な暗号プロジェクトやライブラリによって何らかの形で使用されています。順不同で以下を含みます。
あなたのプロジェクトがWycheproofのテストベクタを使用している場合は、遠慮なくPRを開いて上記のリストに追加してください!
Wycheproofのテストハーネスまたはテストベクタデータを使用して発見された注目すべき過去のバグについては、doc/bugs.mdを参照してください。
testvectors/ディレクトリはどこにありますか?私たちは最近、testvectors/ディレクトリとtestvectors_v1/ディレクトリを、スキーマに対する一貫したアプローチを持つ単一の統合ディレクトリに統合しました。
元の(「v0」)テストベクタデータが必要なユーザーは、wycheproof-v0-vectorsタグからこのリポジトリをクローンできますが、将来の更新の恩恵を受けるためにtestvectors_v1/を使用するよう更新を検討することをお勧めします。testvectors/の機能/テストカバレッジがtestvectors_v1/に欠けている場合、または更新を妨げる別の問題がある場合は、ニーズを説明するissueを開いてください。
執筆時点では、以下のtestvectors_v1ファイルにスキーマがありません:
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.json上記のベクタに対するスキーマの貢献を大いに歓迎します。
files、formats、typesに関する従来のドキュメントがいくつか利用可能ですが、必ずしも現在のテストベクタの状態と同期しているわけではありません。
一般的には、スキーマファイルを参照することをお勧めします。これらはCIでテストされ、ベクタファイルの内容が宣伝されているスキーマと一致することが保証されています。
歴史的にWycheproofには、(JavaやJavascriptの暗号実装向けなどの)さまざまな攻撃を実装に対して直接テストするテストハーネスも含まれていました。コミュニティサポートへの移行以降、これらのハーネスは削除されました(ただし、cd27d64のgit履歴には関心のある方のためにまだ存在しています)。現在の焦点は、実装に依存しないテストベクタです。
サードパーティの暗号ライブラリを直接テストすることは、欠陥がテスト対象プロジェクトによってコミットされ、潜在的にリリースされた後でしか発見されないことを意味します。その代わりに、ダウンストリームプロジェクトが開発プロセスの一環としてWycheproofのテストベクタを使用して自社のコードを定期的にテストすることをお勧めします。このアプローチは、欠陥がCVEになる_前_に発見するのに役立ち、新機能がすぐにテストされることを意味し、メンテナンスの負担を分散するのに役立ちます。これにより、Wycheproofのメンテナーは、多くのプロジェクトのダウンストリーム開発を追跡しながら、増え続ける言語固有・プロジェクト固有のテストハーネスを同時に維持する代わりに、テストベクタに集中できます。
テストハーネスに関心のある方は、RooterbergにおけるDaniel Bleichenbacherの継続的な取り組みに興味を持たれるかもしれません。
Copyright 2016-2026 The Wycheproof Authors、Apache License 2.0の下で提供されています。
Project Wycheproofは当初、以下によって作成・維持されていました: