Wycheproof 项目是一个由社区管理的测试向量库,密码学库开发者可以使用这些测试向量来检测已知攻击、规范不一致以及其他各种实现错误。
测试向量以 JSON 测试向量数据的形式维护,并附有JSON schema文件来记录测试向量数据的结构。
您可能会发现查看其他项目(如pyca/cryptography)如何集成 Wycheproof 的测试向量会有所帮助。
Wycheproof 项目拥有最流行的密码算法的测试向量,包括
测试向量能够检测库是否容易受到许多攻击,包括
我们欢迎贡献新的测试向量数据和算法。
如果您想贡献,请阅读CONTRIBUTING并发送拉取请求。您也可以报告错误或请求新测试,作为GitHub issues。
我们正在重振 Wycheproof 项目作为 C2SP 项目的开发和维护,重新关注测试向量数据。我们的近期优先事项是:
Wycheproof 项目以Mount Wycheproof命名,它是世界上最小的山。项目创建时的主要动机是设定一个可实现的目标。山越小,攀登它的可能性就越大。
Wycheproof 测试向量以某种形式被许多重要的密码学项目和库使用。按随机顺序列出如下:
如果您的项目也使用了 Wycheproof 的测试向量,欢迎提交拉取请求将其添加到上面的列表中!
请参阅doc/bugs.md了解一些使用 Wycheproof 测试工具或测试向量数据发现的著名历史错误。
testvectors/ 目录在哪里?我们最近将 testvectors/ 和 testvectors_v1/ 目录合并为一个统一的目录,并采用一致的 schema 方法。
需要原始("v0")测试向量数据的用户可以从 wycheproof-v0-vectors 标签克隆此仓库,但建议考虑更新到 testvectors_v1/ 以受益于未来的更新。如果 testvectors/ 中有某些功能/测试覆盖在 testvectors_v1/ 中缺失,或者有其他问题阻碍您的更新,请提交 issue 描述您的需求。
在撰写本文时,以下 testvectors_v1 文件缺少 schema:
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非常欢迎为上述向量贡献 schema。
提供了一些关于文件、格式和类型的旧版文档,但不一定与当前测试向量状态同步。
通常,建议参考 schema 文件,因为这些文件在CI中经过测试,以确保向量文件内容与其声明的 schema 匹配。
历史上,Wycheproof 还包含测试工具(例如针对 Java 和 Javascript 密码学实现),这些工具直接针对实现测试各种攻击。自从转向社区支持以来,这些工具已被移除(但感兴趣的各方仍可在 git 历史记录中的 cd27d64 找到)。我们目前的重点是实现无关的测试向量。
直接测试第三方密码学库意味着只有在被测试项目提交并可能发布漏洞之后才会发现缺陷。相反,我们鼓励下游项目在其开发过程中定期使用 Wycheproof 测试向量测试其代码。这种方法有助于在缺陷成为 CVE 之前发现它们,意味着新功能立即得到测试,并有助于分摊维护负担。这使得 Wycheproof 维护者可以专注于测试向量,而不是跟踪许多项目的下游开发,同时维护不断增加的语言和项目特定的测试工具。
对测试工具感兴趣的各方可能会发现 Daniel Bleichenbacher 在 Rooterberg 中的持续工作值得关注。
版权所有 2016-2026 The Wycheproof Authors,根据 Apache License 2.0 提供。
Wycheproof 项目最初由以下人员创建和维护: