来自谷歌的安全专家最近开发了一款测试工具Wycheproof,开发者可用它来发现加密方案中存在的缺陷。
这款工具中部署了一些比较常见的加密攻击。据说这套测试已经帮助谷歌安全专家发现加密库中超过40个安全BUG,并且他们也已经将问题呈报给了供应商。
Wycheproof有什么用?
Wycheproof 由Google安全小组的成员开发和维护,但不是Google的官方产品。取名灵感来自于世界上最小的山―― Mount Wycheproof ,仅43米高,寓意开发这个工具是谷歌安全小组要实现的一个小目标。毕竟,越小的山越容易爬嘛~
Wycheproof的开发者在博客中提到:
要知道在密码学中,微妙的错误可能导致灾难性的后果。我们发现第三方加密软件库频繁落入已有的“陷阱”,这样很耗时间。 然而,健全的处理方法却很难实现,因为要理解如何安全地落实密码可能需要吃透几十年的密码学学术文献。我们知道软件工程师会通过单元测试的方式修复或防止产生漏洞,我们发现加密漏洞可以通过这样的方式来解决。
有了这些发现,于是我们开始开发Wycheproof项目。通过一系列单元测试,检测某些加密算法的已知弱点或是检查预期行为。 Wycheproof项目为大多数加密算法提供测试,包括RSA,椭圆曲线加密和认证加密。我们的密码学家系统地调查了文献,大多数已知的攻击已经落实到了工具中。Wycheproof有超过80个测试方案,搞定超过 40个bug 。
但值得一提的是,通过了 Wycheproof的测试并不代表这个加密库是安全的,只能证明它不容易受到Wycheproof测试项目的攻击。密码学家也在不断地发现新的攻击。不过,有了Wycheproof开发者或是用户就可以直接应用大量的已知攻击测试他们的加密库,而无需花费多年阅读学术论文或 自己 成为密码学专家。
下载地址
可以做的测试:Wycheproof项目包括最流行的加密算法测试
AES-EAX
AES-GCM
DH
DHIES
DSA
ECDH
ECDSA
ECIES
RSA
可以检测加密库中的许多攻击,包括:
无效曲线攻击(Invalid curve attacks)
数字签名方案中的biased nonces
所有的Bleichenbacher攻击
还有更多 Wycheproof 拥有超过80个测试用例
使用说明安装 Bazel
安装: Java 密码扩展无限制权限策略文件 ,这个文件允许 测试 使用大型密钥。 否则会有很多“iilegal key size”异常。
检查测试
git clone https://github.com/google/wycheproof.git测试最新稳定版本Bouncy Castle
bazel test BouncyCastleAllTests测试其他版本。比如v1.52
bazel test BouncyCastleAllTests_1_52测试所有已知版本
bazel test BouncyCastleAllTests_*测试 Spongy Castle ,用Spongy Castle替换BouncyCastle
bazel test SpongyCastleAllTests测试当前安装的 OpenJDK :
bazel test OpenJDKAllTests 使用时要注意的地方:请注意,OpenJDKAllTests需要OpenJDK是您的默认JDK, 如果您使用其他JDK ,可能无法运行,其结果可能不正确。 如果您从Oracle或 https://java.com 下载了JDK,那么您可能使用的是Oracle JDK,它应该与OpenJDK兼容,测试应该能够正确运行。
有些测试需要很长时间才能完成。 如果要排除这些测试,请使用BouncyCastleTest,SpongyCastleTest或OpenJDKTest,它们会排除所有慢速测试(标有@SlowTest注释)。
每一次测试失败都有可能是安全隐患,想要了解更多关于测试失败的原因可以查看GitHub上的文档或者相应的测试项目的函数和注释。
*参考来源: github ,FB小编bimeover编译,转载请注明来自CodeSec.Net