Linux

如何確定哪些程序正在使用來自 /dev/urandom 的多少熵

  • January 8, 2020

Doingfuser -v /dev/urandom告訴我哪些程序目前已/dev/urandom打開,但僅此而已。有沒有辦法確定每個人隨著時間的推移消耗了多少熵?例如,可能一個程序每分鐘消耗大約 1 位熵,而另一個程序每秒消耗大約 8 位;我想要一些確定的方法。

簡短的答案是 0,因為熵沒有被消耗。

有一個普遍的誤解是熵被消耗了——每次你讀取一個隨機位時,都會從隨機源中刪除一些熵。這是錯誤的。你不會“消耗”熵。是的,Linux 文件弄錯了

在 Linux 系統的生命週期中,有兩個階段:

  1. 最初,沒有足夠的熵。/dev/random將阻塞直到它認為它已經積累了足夠的熵;/dev/urandom愉快地提供低熵數據。
  2. 一段時間後,隨機生成器池中存在足夠的熵。/dev/random分配一個虛假的“熵韭菜”率並不時阻止;/dev/urandom愉快地提供加密質量的隨機數據。

FreeBSD 做對了:在 FreeBSD 上,/dev/random(或者/dev/urandom,相同的東西)如果沒有足夠的熵,就會阻塞,一旦有,它就會不斷地噴出隨機數據。在 Linux 上,既不是/dev/random也不/dev/urandom是有用的東西。

在實踐中,使用/dev/urandom並確保在配置系統時提供熵池(來自磁碟、網路和滑鼠活動,來自硬體源,來自外部機器,……)。

雖然您可以嘗試讀取從中讀取了多少字節/dev/urandom,但這完全沒有意義。讀取/dev/urandom不會耗盡熵池。每個消費者在您想命名的任何單位時間內使用 0 位熵。

引用自:https://unix.stackexchange.com/questions/94206