跳到主要内容

6.3. Entropy Pool Techniques (熵池技术)

6.3. Entropy Pool Techniques (熵池技术)

构建强伪随机源的另一种方法是使用"熵池"技术。将比特流持续混合到非常大的内部状态中。内部状态的位通常通过一些像第5节所述的强混合函数 (哈希、加密等) 从输入比特派生。如果假设内部状态有N比特, 那么即使对手知道N-1比特的初始内部状态值, 总有至少1比特的内部状态是不可预测的。

在许多情况下, 只要应用程序不要求太频繁的输出或太多的输出, 持续混合到熵池中的输入流可以保持所需级别的不可预测性。如果内部状态被观察到但输入流不知道, 将在相对较短的时间内恢复到适当的不可预测性状态。然而, 对于小型嵌入式系统或类似环境, 可能没有足够的输入流来实现这一点, 可能需要保留实际硬件随机数生成 (参见第3节)。

假设可以混合足够大的熵池, 从熵池输出的一般技术是通过强混合函数 (例如SHA-1或MD5) 对其进行哈希。对于单比特数据流, 这种技术对于摩尔自动机建模的状态有强理论基础 [CRYPTO93]。

在某些情况下, 应用程序可能需要的随机性超出了池中累积熵提供的安全性水平。在这种情况下, 使用熵池内容作为种子可能是合适的, 如第6.2节所述。