【问题标题】:Is `crypto.randomInt()` cryptographically secure?`crypto.randomInt()` 是加密安全的吗?
【发布时间】:2021-04-13 10:57:49
【问题描述】:

我正在寻找一种在Node.js 中生成安全随机数的好方法。我找到并正在使用的一个答案是crypto.randomInt()。这种方法在密码学上安全吗?有更好的选择吗?

【问题讨论】:

    标签: javascript node.js random cryptography


    【解决方案1】:

    加密模块提供加密功能,其中包括一组用于 OpenSSL 哈希、HMAC、密码、解密、签名和验证功能的包装器。

    所以是的,假设 OpenSSL 的随机数生成器是安全的,您会认为这是安全的。在非常具体的情况下,操作系统没有提供足够的随机性,这可能意味着 OpenSSL 随机数生成器没有很好地播种。但是,在普通 PC/服务器上,您会希望它是安全的。

    与往常一样,您无法使用确定性系统创建熵。因此,您应该始终确保为特定运行时提供良好播种的系统随机数。例如,对于 VM,这通常意味着安装客户端扩展,以便可以访问主机随机池。

    【讨论】:

    • 一个问题。 crypto.randomInt() 不接受任何种子。那么如何确保 rng 播种良好?
    • 创建自己的熵是非常具有挑战性的——基本上最好还是依赖系统提供的随机数生成器。您基本上唯一能做的就是验证各种软件组件的安装是否已正确执行。所以应该正确配置操作系统和 使用的 OpenSSL 库(例如编译标志)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 2014-04-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多