熵在虚拟机上

您可能知道,在虚拟机上生成熵与在“普通”电脑上生成熵并不那么容易。 在虚拟机上生成gpg-key可能需要一段时间,即使使用正确的工具。

还有更多的encryption函数不像gpg那样熵知道。

那么可以说,密码在虚拟机上的安全性较低吗?

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

当gpg密钥创build使用/dev/random作为随机数字发生器时,它在虚拟机上和在真实机器上一样安全。
/dev/random是一个阻塞设备,并将停止提供任何超出可用数量的随机性。 你可以检查你的可用随机性
cat /proc/sys/kernel/random/entropy_avail (应该在2000左右)

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

在虚拟机上有一篇关于熵的文章 。 不幸的是,这篇文章的两个 部分现在只能在谷歌caching中使用。

熵对任何ssl / tlsencryption都有进一步的影响。 所以,使用/dev/urandom或任何非真正的随机源确实会影响应用程序的安全性。

就真正的随机性而言, /dev/urandom可靠程度如何;
我不能给你一个体面的答案,对不起。

有关这个主题的更多信息,你可以去http://security.stackexchange.com和/或阅读例如。 这篇文章

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

后者至less可以从一些实际的硬件收集熵。 实际上,一块HW的运行在大多数情况下都是受到一些物理现象的影响,这些现象总是会受到很小的变化,而且随处可见。 由于服务器通常运行很长时间而没有重置,因此所得的熵池将最终具有足够的质量。

虚拟机遭受三个问题。

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

最好的解决办法是让虚拟机简单地放弃,并意识到它所看到的硬件是一个不好的熵源。 然后,安排一个本地networking服务来分发高质量的熵(参见熵代理 )。 “熵服务器”可以从通用硬件(在这种情况下它必须运行足够的时间,并且它必须具有相当好的操作系统)或者从特定的encryption硬件(TPM芯片,威盛挂锁芯片等)中提取随机性。

使用这种服务的虚拟机甚至可能比刚引导的“真实”服务器安全(密码方式)。