我试图了解在/proc/sys/kernel/random/下的linux内核参数,但是我有一些麻烦。 你能帮我弄点东西吗?
boot_id参数使用? 我发现只是启动时生成的信息,但我无法find原因。 entropy_avail参数 – 不填充整个熵池的目的是什么? 当我检查参数时,它振荡大约1000位,但池大小为4096.当entropy_avail达到write_wakeup_threshold设置的阈值时,它稍微有点(通常为100),并且它再次上升到write_wakeup_threshold参数中指定的点。 那为什么我们需要这个4096的熵池呢? read_wakeup_threshold和read_wakeup_threshold参数的值吗? 第一个只是睡觉从/dev/random设备想要熵的过程,但是当我将它设置为64,128或256时有什么区别? 它只是挂了一段时间,或者还有别的东西? 引导ID参数确实与熵统计不相关。 它只是唯一标识当前的启动,如果你想知道计算机是否重新启动或什么的,这是有用的。
熵池以实现定义的方式存储随机数据,该方式被devise为被视为黑盒子。 总的来说,如果你依赖于熵源,那么就可以拥有尽可能多的熵。 然而,太多太浪费了。 如果你的服务器做了很多encryption(例如生成TLS会话密钥,或者经常生成RSA密钥甚至安全令牌),或者出于某种其他原因需要强大的随机数,那么你需要大量的熵,甚至有设备可以得到这个问题的吉比特stream(从物理来源)。
池大小通常可以通过将新大小回显到池大小文件中进行更改。 内核将存储从各种来源(相对事件定时是一种stream行的方式)获得的熵,以及从input获取到/dev/random熵(通过RNDADDENTROPY ioctl;只是写入该设备而改变数据不添加额定的熵位)。 如果你有一个硬件熵源你没有充分利用,你真的希望这个参数不是无限的。
写唤醒阈值很less使用,但是对于测序来说是很好的; 它提供的性能增益应该是最小的。 它的作用是唤醒设备阻塞写入熵池(即将使用上述ioctl来添加熵到池中的源),当池变低时。 显然不一定有加熵的效果。
读唤醒阈值相反; 这是在我们允许从/dev/random读取任何东西之前需要的熵的位数(即在entropy_avail中表示的数字)。 /dev/urandom忽略这个参数(因为从它读取是非阻塞的,不要等熵,而是允许读取伪随机数据)。