跳到主要内容

6. Pseudo-random Number Generators (伪随机数生成器)

6. Pseudo-random Number Generators (伪随机数生成器)

一旦收集了少量真正的随机性 (例如128比特), 通常有必要扩展它以使用更多。这应该使用一个好的伪随机数生成器来完成, 该生成器基于收集的熵作为种子。生成器将产生输出, 该输出将通过统计测试, 并且对于不知道种子的对手来说是不可预测的。虽然这样的伪随机序列可以产生任意数量的输出并传递所需的统计测试, 但它们最多只能像最初收集的熵一样安全。如果那是128比特, 对手只需搜索2^128种可能性以破坏安全性 (实际上, 搜索大约一半的可能性通常就足够了)。因此, 使用良好的种子启动伪随机生成器非常重要。

尽管存在一些没有熵输入但仍被称为"随机数生成器"的设备, 但强随机数生成器, 就像真正的硬件随机数生成器一样, 实际上是"伪随机"生成器。它们不可避免地从某个初始状态开始, 通常部分基于物理熵源, 然后迭代以产生输出。如果初始状态和迭代都是已知的, 则输出是完全确定的, 因此仅仅是"伪"随机。尽管如此, 如果无法预测的物理源的数量和计算复杂性足够大, 这样的迭代扩展的随机性对于任何实际目的都可能足够。