Mik*_*kov 5 kernel entropy-pool
我正在尝试了解 下的 linux 内核参数/proc/sys/kernel/random/,但我遇到了一些麻烦。你能帮我弄清楚一些事情吗?
boot_id使用的参数?我只找到了它在启动时生成的信息,但我找不到原因。entropy_avail参数——不填充整个熵池的目的是什么?当我检查参数时,它在 1000 位左右振荡,但池大小为 4096。当entropy_avail达到 中设置的阈值时write_wakeup_threshold,它会下降一点(通常为 100),然后再次上升到write_wakeup_threshold参数中指定的点。那么为什么我们在熵池大小中需要这个 4096 呢?read_wakeup_threshold和write_wakeup_threshold参数的值?第一个只是让需要/dev/random设备熵的进程休眠,但是当我将它设置为 64、128 或 256 时有什么区别?它只是挂了更长的时间,或者还有别的什么吗?引导 ID 参数实际上与熵统计数据无关。它只是唯一标识当前启动,如果您想知道计算机是否已重新启动或其他什么,这很有用。
熵池以实现定义的方式存储随机数据,该方式被设计为黑盒。一般来说,如果您依赖熵源,那么拥有尽可能多的熵是很好的;然而,拥有太多是浪费。如果您的服务器执行大量加密(例如生成 TLS 会话密钥,或经常生成 RSA 密钥甚至安全令牌)或出于其他原因一直需要强随机数,则您需要大量熵,甚至还有您需要的设备可以得到那个问题的千兆位流(来自物理来源)。
通常可以通过将新大小回显到池大小文件中来更改池大小。内核将存储它从各种来源获取的熵(相对事件计时是一种流行的方式),以及它从输入获取的熵/dev/random(通过RNDADDENTROPYioctl;仅写入该设备会更改数据,但不会添加标称位熵)。如果您有一个未充分利用的硬件熵源,您真的希望这个参数不是无限的。
write-wakeup-threshold 很少使用,但有利于排序;它提供的性能增益应该是最小的。它所做的是在池变低时唤醒阻止写入熵池的设备(即,将使用上述 ioctl 向池添加熵的源)。显然,它不一定具有增加熵的效果。
读唤醒阈值相反;这是在我们允许从 中读取任何内容之前需要可用的熵位数(即 entropy_avail 中指示的数字)/dev/random。 /dev/urandom忽略这个参数(因为从它读取是非阻塞的并且不等待熵,而是允许读取伪随机数据)。
| 归档时间: |
|
| 查看次数: |
5895 次 |
| 最近记录: |