Node.js 中软件熵的加密安全随机数生成器

问题描述 投票:0回答:1

我正在尝试生成密钥对(公共和私有)并且我正在寻找 加密安全库 允许我在 node.js 环境中生成良好的 entropy(硬件和软件)(我知道就足够了 128 位或更多的熵是安全的)。

我目前正在使用 node.js

crypto
模块,我知道这是一个安全模块,因为它使用基于软件的随机数生成算法,该算法使用操作系统收集的熵作为种子以加密方式生成安全随机数(操作系统收集的熵可以包括硬件熵源,例如鼠标移动或电路中的热噪声,也可以包括其他软件熵源,例如系统时间戳或时钟频率)。

为了增加我的基本熵(我目前正在使用

crypto.randomBytes(32)
,所以 256 位)并使随机数的生成多样化,我想使用另一个安全模块来获得一个单一的组合熵,然后我将用于密钥生成并在安全方面感到舒适。

我的主要目标是拥有足够随机且均匀分布的熵源。

对于所有安全专家和在这方面有经验的人,我问是否有必要(或建议)通过多样化生成随机性的方式来增加更多的熵,或者甚至只是加密模块就可以了。这样的建议将是理想的。

提前致谢。

node.js security random cryptography entropy
1个回答
0
投票

一般情况下,使用

crypto
模块就可以了。在 Node.js 中,
crypto.randomBytes
函数来自 OpenSSL 的 CSPRNG,这是一个众所周知的经过测试的设计(AES-CTR DRBG),源自操作系统的 CSPRNG。 DRBG 设计和测试来自 NIST,并经过全球密码学家的审查,所有主要操作系统都具有强大的 CSPRNGs。

如果您尝试进行自己的熵收集,您可能最终不会做得很好,因为大多数最好的熵源是硬件时序和可能的硬件设备,而且大多数最好在内核中收集。这就是为什么大多数密码学家建议使用操作系统的 CSPRNG(或使用它的安全密码库,例如 OpenSSL)而不是尝试自己做。 256 位的熵预计可以满足所有当前和未来的计算需求,因为我们的星球缺乏足够的资源来使用理论上的最小能量存储 2^128 位的数据,所以你可以简单地做你想做的事无忧无虑地做事。

© www.soinside.com 2019 - 2024. All rights reserved.