Answers:
首先,我要说我根本不是安全专家。
由于gpg密钥创建/dev/random
用作随机数生成器,因此它在虚拟机上和在真实机上一样安全。
/dev/random
是一种阻止设备,它将停止提供超出可用数量的任何随机性。您可以通过以下方式检查您的可用随机性
cat /proc/sys/kernel/random/entropy_avail
(应该在2000左右)
在虚拟机上,由于缺少对硬件的访问,因此可用随机性的确低于在真实机上。
您可以通过应用熵密钥和/或切换到非虚拟机来增加熵。
关于虚拟机上的熵,有一篇不错的文章。不幸的是,本文的这两 部分目前仅在Google缓存中可用。
熵对任何SSL / TLS加密都有进一步的影响。因此,使用/dev/urandom
或使用任何非真正随机的来源确实会对应用程序的安全性产生影响。
/dev/urandom
与真实随机性相比有多可靠;
抱歉,我无法在这里给您一个不错的答案。
有关此主题的更多信息,您可以访问http://security.stackexchange.com和/或阅读例如。这个帖子
/dev/urandom
正在使用加密安全的PRNG(由与相同的池填充/dev/random
),因此只要该池中有足够的初始熵,就应该没有问题。从父计算机的熵池中播种可能会有一点意义。
是的,在大多数情况下,加密在虚拟机上的安全性不如在“真实”服务器上。
后者至少可以从某些实际硬件中收集熵。实际上,在大多数情况下,一件硬件的操作受某种物理现象的束缚,该物理现象总是会产生很小的变化,并且所有原因都是随机的。由于服务器通常无需重置即可运行很长时间,因此最终的熵池最终将具有足够的质量。
虚拟机存在三个问题。
最好的解决方案是让VM放弃并意识到它所看到的硬件是不良的熵源。然后,安排一个本地网络服务以分发高质量的熵(请参阅Entropy Broker)。“熵服务器”可以从通用硬件(在这种情况下,它必须运行足够的时间,并且必须具有良好的操作系统)或特定的加密硬件(TPM芯片,VIA Padlock芯片等)中提取随机性。
使用这种服务的VM甚至比刚刚启动的“真实”服务器更为安全(从加密角度而言)。