haveged和rng-tools 提高系统熵池的补充速率

319次阅读
没有评论

共计 1368 个字符,预计需要花费 4 分钟才能阅读完成。

简介

在使用由 OpenSSL 或者 libsoduim 提供的加密解密工具时,比如生成密钥,或者是对数据进行加密校验等操作时,系统会从虚拟设备(/dev/random)中取用随机数以供使用。

关于熵池

ntropy(熵,[shāng])在信息论中表示数据的混乱程度或者不确定性,可理解为随机数据。
在 GNU/Linux 中有两个虚拟设备专门用于生成随机数以供系统使用。分别为 /dev/random /dev/urandom,又称 PRNG(Pseudorandom Number Generator,伪随机数发生器),其中 /dev/random 数据来源为硬件设备的活动(键盘输入、磁盘读写、内存错误等)和其他操作系统资源,默认熵池随机数资源大小为 4kB ,由内核参数/proc/sys/kernel/random/poolsize控制。

查看熵池

可通过以下命令查看系统可用随机数资源量

# cat /proc/sys/kernel/random/entropy_avail

低熵影响

但通常情况下系统的熵池源由输入设备或其他设备的噪音来进行提供。在虚拟机或微型设备中,因来源不足,随机数生产缓慢,会导致加密解密的过程受阻,比如 55流。

解决办法

可以通过部署服务来人为生产随机数填充系统熵池,在不同发行版下,包名和默认配置路径可能不同。

通过一下命令进行安装

# CentOS 7
[root@domain ~]# yum install rng-tools haveged -y
# Debian 9
root@domain:~# apt install rng-tools haveged -y

默认配置文件路径:

tool path
haveged /etc/default/haveged
rng-tools /etc/default/rng-tools

启动服务并自启

# haveged
[root@domain ~]# systemctl enable haveged
[root@domain ~]# systemctl status haveged
# rng-tools
[root@domain ~]# systemctl enable rngd
[root@domain ~]# systemctl status rngd

常见报错

在部分系统中,rng-tools 会无法启用,可能会提示以下错误:

Starting Hardware RNG entropy gatherer daemon: (Hardware RNG device inode not found) /etc/init.d/rng-tools: Cannot find a hardware RNG device to use.

这是因为默认的熵源配置错误。

执行以下命令

sed -i -r '/^HRNGDEVICE/d;/#HRNGDEVICE=\/dev\/null/a HRNGDEVICE=/dev/urandom' /etc/default/rng-tools

需要重启服务生效

cat /proc/sys/kernel/random/entropy_avail
cat /dev/random | rngtest -c 1000
 haveged -n 4g -f - | dd of=/dev/null

如果没有增加请使用

vim /etc/sysconfig/rngd

添加内容:EXTRAOPTIONS=”–rng-device /dev/urandom”

然后重启rngd

正文完
 
admin
版权声明:本站原创文章,由 admin 2020-02-03发表,共计1368字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码