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

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

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

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

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

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

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

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

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

1) Query the TSC.

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

3) Query the TSC when the query completes.

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

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

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

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

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

原文链接:https://www.f2er.com/ubuntu/348686.html

猜你在找的Ubuntu相关文章