前言

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

名词解释

Entropy(熵,[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

如果结果比较低 (<1000),建议进行优化

低熵影响

在使用 OpenSSL 或者 libsoduim 提供的加密解密工具时从虚拟设备(/dev/random)中取用随机数以供使用,与此同时由于linux内核从2.4升级到2.6时,处于安全性的考虑,废弃了一些source,source减少了,熵池补给的速度当然也变慢,进而不够用,以及VPS是在虚拟主机环境过于安静而缺乏各种噪音,熵池空了,依赖随机数的业务(SSL,加密等)就不能正常进行。

解决方法

建议在主机上安装haveged或rng-tools来人为生产随机数填充系统熵池,这俩软件一般二选一即可。
注意:haveged程序无法保证熵的质量, 如果对安全要求较高,请考虑使用硬件随机数生成器 rng-tools。

以下命令来安装服务:

# CentOS 7
yum install haveged -y
yum install rng-tools -y
# Debian
apt install haveged -y
apt install rng-tools -y

Centos 可能无法安装rng-tools,需要根据以下命令添加epel源:

yum -y install epel-release

设置服务开机自启并立即启动服务

#haveged
systemctl enable haveged --now
#rng-tools
systemctl enable rngd --now

安装后测试

再次执行查询系统熵值得命令,可以看出,系统的熵值已经增加到3000+,至此软件阻塞的情况有了显著缓解。

Last modification:July 5th, 2021 at 10:55 am