【问题标题】:Random function in Javascript considered insecure. Does it really matter?Javascript 中的随机函数被认为是不安全的。真的有关系吗?
【发布时间】:2015-04-27 20:21:10
【问题描述】:

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

由于随机数生成错误,现在在多个论坛中看到这被认为是不安全的。

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

【问题讨论】:

  • 需要更多帮助吗?如果是这样,我会更新我的答案。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    在 1 到 10 之间生成一个随机数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-08
      • 2022-11-25
      • 2013-08-16
      • 2020-12-15
      • 2020-01-03
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      相关资源
      最近更新 更多