我正在为我正在编写的应用程序提供合理的高质量随机数据。 Linux为此提供了/ dev / random文件,这是理想的;但是,因为我的服务器是单服务虚拟机,所以它的熵源非常有限,这意味着/ dev / random会很快耗尽。
我注意到如果我从/ dev / random读取,我会在设备阻塞之前获得16个左右的随机字节,而等待更多的熵:
[duke@poopz ~]# hexdump /dev/random
0000000 f4d3 8e1e 447a e0e3 d937 a595 1df9 d6c5
<process blocks...>
如果我终止此过程,请离开一个小时并重复该命令,再次只生成16个字节的随机数据。
然而 - 相反,如果我让命令运行相同的时间,则会收集更多随机数据。我假设在给定的时间段内,系统产生大量的熵,但是如果你实际上是从/ dev / random读取的话,Linux只会使用它,如果你不是,则丢弃它。如果是这种情况,我的问题是:
是否可以将Linux配置为缓冲/ dev / random,以便从中读取产生更大量的高质量随机数据?
我将缓冲/ dev / random作为我的程序的一部分并不困难但我觉得在系统级别这样做会更优雅。我也想知道在内存中使用Linux缓冲其随机数据会产生安全隐患。
答案 0 :(得分:2)
听起来你需要entropy deamon从其他来源提供熵池。
答案 1 :(得分:1)
使用/ dev / urandom。
/ dev / random的对应物是 / dev / urandom(“解锁”/非阻塞 随机源[4])重用 内部池产生更多 伪随机位。这意味着 电话不会阻止,但是 输出可能包含较少的熵 相应的读取 的/ dev /随机的。虽然它仍然存在 打算作为伪随机数 发电机适合大多数 加密目的,它不是 推荐用于生成 长期加密密钥。
答案 2 :(得分:1)
你有没有,或者你能买到兼容Linux的硬件随机数发生器?这可能是您潜在问题的解决方案。见http://www.linuxcertified.com/hw_random.html