虚拟机上的熵


12

您可能知道,在虚拟机上生成熵并不像在“普通” PC上那样容易。即使使用正确的工具,在虚拟机上生成gpg密钥也可能需要一段时间。

还有更多的加密函数,它们不像gpg那样具有熵意识。

因此,可以说加密在虚拟机上的安全性较弱吗?


1
“真实”机器上的随机数实际上并不是一开始就随机的(除非您有硬件随机数生成器,而大多数情况下没有)。一开始它们都是伪随机的,并且熵是以相同的方式生成的。如果在VM上运行缓慢,则是虚拟化平台在降低它的速度(我敢猜测您没有在使用Type 1 Hypervisor)。
克里斯·S

Answers:


6

首先,我要说我根本不是安全专家。

由于gpg密钥创建/dev/random用作随机数生成器,因此它在虚拟机上和在真实机上一样安全。
/dev/random是一种阻止设备,它将停止提供超出可用数量的任何随机性。您可以通过以下方式检查您的可用随机性
cat /proc/sys/kernel/random/entropy_avail(应该在2000左右)

在虚拟机上,由于缺少对硬件的访问,因此可用随机性的确低于在真实机上。
您可以通过应用熵密钥和/或切换到非虚拟机来增加熵。

关于虚拟机上的熵,有一篇不错的文章。不幸的是,本文的这两 部分目前仅在Google缓存中可用。

熵对任何SSL / TLS加密都有进一步的影响。因此,使用/dev/urandom或使用任何非真正随机的来源确实会对应用程序的安全性产生影响

/dev/urandom与真实随机性相比有多可靠;
抱歉,我无法在这里给您一个不错的答案。

有关此主题的更多信息,您可以访问http://security.stackexchange.com和/或阅读例如。这个帖子


1
/dev/urandom正在使用加密安全的PRNG(由与相同的池填充/dev/random),因此只要该池中有足够的初始熵,就应该没有问题。从父计算机的熵池中播种可能会有一点意义。
圣保罗Ebermann

3

是的,在大多数情况下,加密在虚拟机上的安全性不如在“真实”服务器上。

后者至少可以从某些实际硬件中收集熵。实际上,在大多数情况下,一件硬件的操作受某种物理现象的束缚,该物理现象总是会产生很小的变化,并且所有原因都是随机的。由于服务器通常无需重置即可运行很长时间,因此最终的熵池最终将具有足够的质量。

虚拟机存在三个问题。

  1. 他们看到的硬件不是真实的,因此几乎不受任何物理现象的影响。他们将能够以慢得多的方式收集熵。
  2. 虚拟机比真实服务器复位的频率要多得多,它们甚至可能没有时间收集足够的熵(这就是为什么在关闭时保存当前的熵状态,并在重新启动时使用它来馈入熵池是很好的原因)。
  3. 尽管真实服务器可能有机会确定何时要处理不良的熵池,但虚拟机将在熵池良好的印象下更容易操作(因为它是从硬件收集的,但不知道硬件是不是真实的),而实际上是不好的。

最好的解决方案是让VM放弃并意识到它所看到的硬件是不良的熵源。然后,安排一个本地网络服务以分发高质量的熵(请参阅Entropy Broker)。“熵服务器”可以从通用硬件(在这种情况下,它必须运行足够的时间,并且必须具有良好的操作系统)或特定的加密硬件(TPM芯片,VIA Padlock芯片等)中提取随机性。

使用这种服务的VM甚至比刚刚启动的“真实”服务器更为安全(从加密角度而言)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.