如何让/ dev / random在Ubuntu虚拟机上工作?

前端之家收集整理的这篇文章主要介绍了如何让/ dev / random在Ubuntu虚拟机上工作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
显然,/ dev / random基于硬件中断或物理硬件的类似不可预测的方面.由于虚拟机没有物理硬件,因此在虚拟机中运行cat / dev / random不会产生任何效果.我正在使用Ubuntu Server 11.04作为主机和来宾,使用libvirt / KVM.

我需要在VM中设置Kerberos,但krb5_newrealm会永远挂起“加载随机数据”,因为系统没有生成任何数据.@H_403_2@

有谁知道如何解决这个问题?有可能将主机的/ dev / random(非常繁琐)传递到vm中,以便vm可以使用它的随机数据吗?@H_403_2@

我已经读到有一些软件替代品,但它们不适合密码学,因为它们不够随意.@H_403_2@

编辑:似乎vm上的cat / dev / random确实产生输出,非常非常慢.我通过等待大约两个小时来获取我的领域设置,同时它是“加载随机数据”.最终它足以继续下去.我仍然对加速这种方式感兴趣.@H_403_2@

它应该’正常工作’.即使vm没有专用的物理硬件,它仍然可以访问几个非常好的随机源.例如,它可以使用cpu的TSC来计算从虚拟磁盘读取的时间,这最终会使计时物理磁盘达到十亿分之一秒.这些时间取决于硬盘驱动器中的湍流气流剪切,这是不可预测的.

类似的逻辑适用于网络流量.即使接口是虚拟化的,只要数据包来自物理网络(并且不是盒子本地,比如源于另一个vm),数据包时序取决于网卡上晶体振荡器之间的相位偏移以及驱动TSC的晶体振荡器.这取决于两个石英晶体中的微观区温度变化.这也是不可预测的.@H_403_2@

如果由于某种原因它不起作用,最简单的解决方案是编写一个程序来挖掘熵并将其添加到系统池中.网络接口是您最可靠的来源.例如,您可以编写代码:@H_403_2@

1) Query the TSC.@H_403_2@

2) Issue a DNS query to a server known not to be on the same physical machine.@H_403_2@

3) Query the TSC when the query completes.@H_403_2@

4) Repeat this a few times,accumulating all the TSC values.@H_403_2@

5) Perform a secure hash on the accumulated TSC functions.@H_403_2@

6) Pass the secure hash function’s output to the system’s entropy pool.@H_403_2@

7) Monitor the entropy pool level,and wait until it’s low. When it is,go back to step 1.@H_403_2@

Linux有简单的IOCTL调用来向池中添加熵,检查池的级别,等等.你可能有rngd,它可以从管道获取熵并将其提供给系统池.您可以从任何所需的源填充管道,无论是来自您自己的熵源的TSC还是“wget”请求.@H_403_2@

猜你在找的Ubuntu相关文章