5. Mixing (混合)
5. Mixing (混合)
在缺乏强大、可靠的硬件熵源的情况下, 获得不可猜测的随机数的最佳整体策略是什么? 那就是从多个不相关的源获取输入, 并使用强混合函数将它们混合。这样的函数将保留任何源中存在的熵, 即使其他被组合的数量恰好是固定的或容易猜测的 (低熵)。即使使用良好的硬件源, 这种方法也可能是明智的, 因为硬件也可能失败。然而, 这应该与由于增加的软件复杂性而可能增加的整体故障机会进行权衡。
一旦使用了好的源 (例如第3节中列出的一些源), 并按照本节所述进行了混合, 就有了一个强种子。然后可以使用它来产生大量密码学强材料, 如第6节和第7节所述。
强混合函数是组合输入并产生输出的函数, 其中每个输出比特是所有输入比特的不同复杂非线性函数。平均而言, 改变任何输入比特将改变大约一半的输出比特。但是因为关系是复杂和非线性的, 当任何特定输入比特改变时, 没有特定的输出比特被保证改变。
考虑将偏向0或1或具有某种可预测模式的比特流转换为更随机的较短流的问题, 如第4节所述。这只是需要强混合函数的另一种情况, 用于混合输入比特并产生较少数量的输出比特。第4.1节中给出的技术, 使用多个比特的奇偶校验, 只是连续对它们进行XOR的结果。这将作为一个简单的混合函数进行检查, 如下所述。使用更强的混合函数从偏斜比特流中提取更多随机性将在第5.2节中检查。另请参见[NASLUND]。