我正在编写一些代码,这些代码将在浏览器中运行,该代码使用Javascript随机函数进行密钥生成。
现在在几个论坛中读到这被认为是不安全的,因为生成错误的随机数。
现在,如果我只为每个浏览器/计算机创建一个密钥对,该怎么办?因此,拥有一个分布式场景,其中每个浏览器实际上没有随机数序列。这会从根本上改变有问题的情况吗?谢谢你的想法。
答案 0 :(得分:2)
是的,这很重要。如果攻击者与真实用户同时生成随机数,他们可以预测生成的内容并检索它们的密钥。即使时钟未完全同步,攻击者也可以在已知生成密钥的情况下生成UNIX时间戳周围的范围,然后依次尝试每个时间段。
解决方案:使用window.crypto使用加密库生成安全随机数。
Crypto接口代表可用的基本加密功能 在目前的背景下。它允许访问加密强大的 随机数生成器和加密原语。
答案 1 :(得分:0)
随机数在Javascript中生成自1970年1月1日以来的毫秒数(UNIX时间戳)。然后Javascript只取前几个值,那就是你的随机数。即
Math.floor((Math.random() * 10) + 1);
使1到10之间的随机数。