根据这项研究,当一个进程在拍摄 VM 快照之前启动时,Windows 似乎会无限期地产生相同的随机数序列。在克隆虚拟机时,这显然是一个大问题。克隆的虚拟机都将生成相同的随机数,这可能会损害许多依赖良好随机性的不同功能(密钥生成等)。
如果有人以某种方式重置 RNG 或强制它再次从其来源收集熵,那么这将不是一个问题。这在理论上可行吗?怎么可能做到?
根据这项研究,当一个进程在拍摄 VM 快照之前启动时,Windows 似乎会无限期地产生相同的随机数序列。在克隆虚拟机时,这显然是一个大问题。克隆的虚拟机都将生成相同的随机数,这可能会损害许多依赖良好随机性的不同功能(密钥生成等)。
如果有人以某种方式重置 RNG 或强制它再次从其来源收集熵,那么这将不是一个问题。这在理论上可行吗?怎么可能做到?
这将取决于您的环境。快照、克隆和黄金副本图像都会导致问题,仅仅是因为它们使用相同的熵池为系统生成 RNG。VMWare 提供了允许从核心内核刷新熵的 virtio 驱动程序,但我认为 Windows 不存在这种情况。
在这种情况下,重新启动会刷新熵池,但您的参考文献还讨论了低于熵阈值潜在问题的非常小的窗口。这很容易通过在系统完全启动之前不允许 OpenSSL 或其他 Keygen 需要的 RNG 功能来防止。
第三种选择,在我看来,正确的选择是依靠外部硬件 rng 来刷新你的熵池,然后从中提取。这允许您:
如果这是一个问题,则没有,除非您有合规性要求和/或有 keygen 需求,这将使每个 vm 的熵池饱和并真正导致已知数量场景的可能性。在这些情况下,请使用硬件 RNG。
TL;博士