【发布时间】:2011-04-12 10:36:15
【问题描述】:
我需要为我正在编写的应用程序提供合理的高质量随机数据。 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 在内存中缓冲其随机数据是否会产生安全隐患。
【问题讨论】:
-
AFAIK,熵不会(完全)丢弃,当熵足够高时,内核会在 4096 个输入样本中抽取 1 个样本并将其混合到其熵池中。
标签: linux random buffer daemon entropy