繁体   English   中英

让linux缓冲/ dev / random

[英]Getting linux to buffer /dev/random

我需要为正在编写的应用程序合理提供高质量的随机数据。 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在内存中缓冲其随机数据是否会带来安全隐患。

听起来您需要一个熵守护进程 ,以从其他来源获取熵池。

使用/ dev / urandom。

与/ dev / random相对应的是/ dev / urandom(“解锁” /非阻塞随机源[4]),它重新使用内部池来产生更多的伪随机位。 这意味着该调用不会阻塞,但是输出所包含的熵可能比从/ dev / random中读取的信息少。 虽然它仍然打算用作适合大多数加密目的的伪随机数生成器,但不建议将其用于生成长期加密密钥。

您是否拥有或可以购买兼容Linux的硬件随机数生成器? 那可以解决您的潜在问题。 参见http://www.linuxcertified.com/hw_random.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM