首页 > 解决方案 > 如何验证使用 HSM 生成的 ECDSA 签名的随机性?

问题描述

我需要以编程方式(使用 Python)验证使用 HSM RnG 生成的签名是否实际上是随机的。

在网上找不到太多内容,因此将不胜感激!

如何验证使用 HSM 生成的 ECDSA 签名的随机性?

标签: randomcryptographysignatureecdsahsm

解决方案


正如 Squeamish 在评论中指出的那样,实际上没有任何方法可以确保随机数生成器的结果是真正随机的。例如,它可能只是 Pi 在某个特定位置的输出。通常,您必须信任该平台的 FIPS 或通用标准认证,但请注意,两者都不是无懈可击的。

此外,您还可以依靠 HSM 公司想要赚钱的事实。肯定会失去(全部)市场份额的一种方法是表明你不能被信任。包括 RSA Labs 在内的多家公司已经发现这一点对他们不利。如果您不完全信任 HSM 公司,请不要从他们那里购买任何东西;但请注意,实际上并不存在完美的安全性。


可以做一些简单的实验。如果您要求使用相同的数据生成签名,那么您永远不应获得相同的签名(ECDSA 的 r 和 s 值)。这表明RNG的输出至少不会重复。用几个连接/会话测试一次 - 可能是一个好主意。

您还可以验证然后连接所有生成的 x 值(用于最终比较),然后对其运行随机性测试(例如顽固套件)。


最后,如果您不信任 HSM 的 RNG 的熵源,请注意您可以向 HSM 添加额外的种子。请查看您的 HSM 文档,它对添加/混合种子有何反应。


推荐阅读