Doingfuser -v /dev/urandom告诉我哪些进程当前已/dev/urandom打开,但仅此而已。是否有任何东西可以确定每个人随着时间的推移消耗了多少熵?例如,可能一个进程每分钟消耗大约 1 位熵,而另一个进程每秒消耗大约 8 位;我想要一些确定的方法。
简短的回答是 0,因为没有消耗熵。
有一个普遍的误解,认为熵会被消耗——每次读取随机位时,都会从随机源中移除一些熵。这是错误的。你不会“消耗”熵。是的,Linux 文档弄错了。
在 Linux 系统的生命周期中,有两个阶段:
/dev/random会阻塞直到它认为它已经积累了足够的熵;/dev/urandom愉快地提供低熵数据。/dev/random分配一个虚假的“熵韭菜”率并不时阻止;/dev/urandom愉快地提供加密质量的随机数据。FreeBSD 做对了:在 FreeBSD 上,/dev/random(或/dev/urandom,这是同一件事)如果没有足够的熵就会阻塞,一旦阻塞,它就会不断地喷出随机数据。在 Linux 上,既不是/dev/random也不/dev/urandom是有用的东西。
在实践中,使用/dev/urandom,并确保在配置系统时提供熵池(来自磁盘、网络和鼠标活动、来自硬件源、来自外部机器,......)。
虽然您可以尝试读取从 中读取的字节数/dev/urandom,但这完全没有意义。读取/dev/urandom不会耗尽熵池。每个消费者在您想命名的任何时间单位中使用 0 位熵。
| 归档时间: |
|
| 查看次数: |
3503 次 |
| 最近记录: |