我需要为我正在编写的应用程序提供合理的高质量随机数据。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 个左右字节的随机数据。
但是- 如果我让命令运行相同的时间,则会收集更多的随机数据。我由此假设,在给定的时间段内,系统会产生大量熵,但 Linux 仅在您实际从 /dev/random 读取时才使用它,如果不是,则丢弃它。如果是这种情况,我的问题是:
是否可以将 Linux 配置为缓冲 /dev/random 以便从中读取产生更大的高质量随机数据突发?
在我的程序中缓冲 /dev/random 对我来说并不难,但我觉得在系统级别这样做会更优雅。我还想知道让 Linux 在内存中缓冲其随机数据是否会产生安全隐患。