基于硬件的随机数发生器(RNG)从周围的噪声中获得随机性。基于软件的生成器通常从用户输入中获得这一点,比如将鼠标移动到屏幕上(就像TrueCrypt那样)。
是什么使硬件RNG比基于软件的生成器更安全(更随机)?
发布于 2017-05-23 11:53:14
直接回答: SW算法是基于可预测或有限的计算机算法。
阅读此比较这里的优点和缺点。一般情况下,平均HW RNG比平均SW RNG好。
但是,虽然HW RNG被称为“true”,SW RNG (基于算法)被称为“伪”,但我并不认为硬件RNG总是更好。
在硬件方面,关键在于设计有多好,它与实现有多远,还有什么能影响结果。
在用户输入的情况下,这将取决于用户的随机化程度。基于鼠标移动的RNG可能比普通硬件更好或更差,这取决于用户的技能。同样,硬件RNG可能比鼠标移动的RNG更好或更差,这取决于HW设计人员的技能。
发布于 2017-05-23 12:16:32
软件RNG具有由输入噪声更新的内部状态。通过从生成器中检索值,也可以对此状态进行洗牌。
基本硬件RNG没有内部状态。好的硬件生成器将不断地为软件RNG注入种子,以避免分配问题和干扰(在攻击下输入噪声不可能是随机的)。
如果软件RNG的状态泄漏或公开,它将不会提供任何随机性,因为攻击者将能够生成相同的输出。这样,硬件RNG就更好了,因为它没有可能泄漏的状态。例如,一些软件RNG在收集足够的噪音之前,使用公共数据或不良数据初始化状态。对于共享相同初始状态的VM来说,这是一个问题(避免在VM上生成SSH或PGP密钥)。另一方面,从理论上讲,基本的硬件生成器会受到输入的影响。
https://security.stackexchange.com/questions/160142
复制相似问题