Crypto.getRandomValues的熵的来源是什么?

时间:2019-05-13 19:54:11

标签: javascript security random

我正在开发大型Web应用程序,该应用程序使用forge.js在客户端生成RSA私钥。据我阅读Forge文档-https://github.com/digitalbazaar/forge#rsa-IT使用浏览器中的webcrypto API生成RSA密钥/提供随机数。

我还有很多selenium2测试,它们可以验证不同的场景(与RSA生成有关)。在docker环境中执行测试时,我观察到频繁的测试超时。我的Docker环境使用Ubuntu。使用selenium2 3.11在Firefox 64上执行测试

经过一些分析,我得出的结论是测试超时是由RSA密钥生成缓慢引起的。当然,由于该问题在开发人员机器上是可重现的,因此分析不是防弹的。

从对Java中类似问题的分析中,我知道这可能是由于使用了熵的阻塞源-/ dev / random而不是/ dev / urandom引起的。所以我的问题是:

  • webcrypto(Firefox 64,webcrypto,docker)中熵的来源是什么
  • 可以改变熵的来源吗?

1 个答案:

答案 0 :(得分:0)

您不能选择Web加密的熵源。

通常,RSA密钥的密钥生成延迟是素数检查,而不是随机性。

与其使用forge来生成RSA密钥,不如直接使用Web加密-https://github.com/diafygi/webcrypto-examples#rsassa-pkcs1-v1_5---generatekey

如果您需要在Java兼容界面中的Node中生成密钥,请查看:https://github.com/PeculiarVentures/webcrypto