![新挂载后 CentOS 5 上的熵值较低](https://linux22.com/image/557780/%E6%96%B0%E6%8C%82%E8%BD%BD%E5%90%8E%20CentOS%205%20%E4%B8%8A%E7%9A%84%E7%86%B5%E5%80%BC%E8%BE%83%E4%BD%8E.png)
我最近安装了一个新的分区并将 /home 和 /var/lib/mysql 移动到新驱动器并对它们建立了符号链接。
现在我注意到熵(使用 munin)已从 3000 左右下降到 100-200 左右。数据装载和移动是否会导致这种情况?
我使用它作为 apache 网络服务器来托管面向公众用户的网站,并且我注意到负载也有所增加(这可能是低熵造成的吗?)
如果这是一个大问题,我想找到一种方法来解决低熵问题。
我读到过,我可以通过使用 rng-tools 并切换到使用 urandom 来增加熵。人们说,对于注重安全的系统来说,这不是一个好方法。但这对于网络应用来说可以吗?这会让我的网络应用的安全性降低多少(我们对密码和确认链接等内容使用加密(哈希),但我不确定其中有多少属于“注重安全”的范围)
有任何想法吗?
我正在使用云实例 CentOS 5(虚拟机)。
答案1
我想说的是,除非你担心一个决心坚定、经验丰富的攻击者会利用大量资源破解 Linux 内核中使用的伪随机算法,从而危害你的网站,否则使用 urandom 可能没什么问题。
您会发现,任何与加密相关的东西,包括加密哈希(盐是随机的,即使哈希函数本身不涉及随机性),都会耗尽您的熵供应。此外,虚拟机的熵往往会更少,因为熵是从虚拟机没有或无法安全获取熵的各种事物中获得的(例如物理鼠标、键盘或时钟)。
我也不确定为什么你认为 100-200 是一个小数目。我认为 0-10 很小,但请记住池的最大大小(/proc/sys/kernel/random/poolsize)可能只有 4096。除非你只有一小部分时间处于 0,否则你可能不会用得太快(你可能已经在不知不觉中使用了 urandom)。据我所知,从 /dev/random 读取不会阻塞,直到熵池是0。
答案2
如果您拥有足够的熵来为您的伪随机数生成器(PRNG)提供种子,那么它对于大多数用途来说应该是一个足够的来源。
使用 rng-tools ,你可以将 /dev/urandom 中的熵提供给 /dev/random :
rngd -r /dev/urandom -o /dev/random -f -t 1
(用守护-f
进程替换-b
;centos 没有 rngd 的初始化脚本,但您应该能够很容易地修改现有的脚本。)
(理由是 /dev/random(真随机)是阻塞的,而 /dev/urandom(伪随机)不是 - 如果熵经常非常低,则增加 /dev/random 的熵可能会对性能产生影响。)
您可以通过以下方式验证对熵的影响:
cat /proc/sys/kernel/random/entropy_avail
如果你担心 PRNG 的“质量”,你可以使用以下方法测试其熵:
cat /dev/urandom | rngtest -c 1000
由于您使用的是虚拟服务器,因此通常很难获得熵(没有鼠标/键盘、声卡/视频卡等)。如果您担心 /dev/urandom 的熵质量,可以尝试此操作定时器熵守护进程,它利用睡眠时间的不准确性来产生熵。