重置 Windows RNG

信息安全 密码学 视窗 虚拟化 随机的
2021-08-16 07:43:48

根据这项研究,当一个进程在拍摄 VM 快照之前启动时,Windows 似乎会无限期地产生相同的随机数序列。在克隆虚拟机时,这显然是一个大问题。克隆的虚拟机都将生成相同的随机数,这可能会损害许多依赖良好随机性的不同功能(密钥生成等)。

如果有人以某种方式重置 RNG 或强制它再次从其来源收集熵,那么这将不是一个问题。这在理论上可行吗?怎么可能做到?

1个回答

这将取决于您的环境。快照、克隆和黄金副本图像都会导致问题,仅仅是因为它们使用相同的熵池为系统生成 RNG。VMWare 提供了允许从核心内核刷新熵的 virtio 驱动程序,但我认为 Windows 不存在这种情况。

在这种情况下,重新启动会刷新熵池,但您的参考文献还讨论了低于熵阈值潜在问题的非常小的窗口。这很容易通过在系统完全启动之前不允许 OpenSSL 或其他 Keygen 需要的 RNG 功能来防止。

第三种选择,在我看来,正确的选择是依靠外部硬件 rng 来刷新你的熵池,然后从中提取。这允许您:

  • 用于填充每个虚拟机上的所有 PRNGS 的真实熵源
  • 能够监控每个克隆的熵池并在达到熵阈值时刷新(回填至 4k)
  • 不用担心您正在使用所有克隆图像中的重复熵池

如果这是一个问题,则没有,除非您有合规性要求和/或有 keygen 需求,这将使每个 vm 的熵池饱和并真正导致已知数量场景的可能性。在这些情况下,请使用硬件 RNG。

TL;博士