Javascript中的随机函数被认为是不安全的。真的有关系吗?

时间:2015-04-26 14:03:39

标签: javascript html5 security public-key-encryption encryption-asymmetric

我正在编写一些代码,这些代码将在浏览器中运行,该代码使用Javascript随机函数进行密钥生成。

现在在几个论坛中读到这被认为是不安全的,因为生成错误的随机数

现在,如果我只为每个浏览器/计算机创建一个密钥对,该怎么办?因此,拥有一个分布式场景,其中每个浏览器实际上没有随机数序列。这会从根本上改变有问题的情况吗?谢谢你的想法。

2 个答案:

答案 0 :(得分:2)

是的,这很重要。如果攻击者与真实用户同时生成随机数,他们可以预测生成的内容并检索它们的密钥。即使时钟未完全同步,攻击者也可以在已知生成密钥的情况下生成UNIX时间戳周围的范围,然后依次尝试每个时间段。

解决方案:使用window.crypto使用加密库生成安全随机数。

  

Crypto接口代表可用的基本加密功能   在目前的背景下。它允许访问加密强大的   随机数生成器和加密原语。

答案 1 :(得分:0)

随机数在Javascript中生成自1970年1月1日以来的毫秒数(UNIX时间戳)。然后Javascript只取前几个值,那就是你的随机数。即

Math.floor((Math.random() * 10) + 1);

使1到10之间的随机数。