Linux-Kernel

如何強制 /dev/random 阻止?

  • March 9, 2022

對於密碼學課程,我試圖耗盡 Linux 中的熵池(例如 make /proc/sys/kernel/random/entropy_availgo to 0 並阻止從 讀取的命令/dev/random),但我無法實現。我應該從/dev/random阻止讀取。如果我執行這兩個命令:

watch -n 0.5 cat /proc/sys/kernel/random/entropy_avail

觀察熵,然後:

od -d /dev/random

為了轉儲隨機池,watch命令中的值在 3700 和 3900 之間徘徊,並且在我執行此命令時只獲得和損失一點點。我讓這兩個命令執行了大約三分鐘,而entropy_avail. 那段時間我沒有在電腦上做太多事情。通過Google搜尋,我發現硬體隨機數生成器可能非常好,以至於熵不會下降,但如果我這樣做:

cat /sys/devices/virtual/misc/hw_random/rng_available

我什麼也沒看到,我只是得到一個空白行。所以我有幾個問題:

  1. 是什麼很好地補充了我的熵,我怎樣才能找到隨機性的具體來源?
  2. 有什麼方法可以暫時禁用隨機源,以便我可以強制這種阻塞發生?

圍繞 Linux 隨機設備的開發數量驚人。緩慢的阻塞/dev/random消失了,取而代之的/dev/random是永遠不會耗盡數據的快速。

您將不得不回到過去,例如在 linux 4.8(引入了更快的 crng 算法)或可能的 linux 5.6(引入了抖動熵生成)之前。

無法在目前核心中恢復原始行為。


如果您在舊版本的 Linux 中看到此問題,除了 hwrng,您可能正在使用haveged或 rng-toolsrngd或類似的使用者空間熵提供程序。

一些發行版預設安裝這些以避免在等待一些隨機位時掛起,在這種情況下,您可以解除安裝或禁用它們,或者從沒有其他程序執行的 initrd / busybox shell 中嘗試它。

如果問題仍然存在,您可能只是有一個非常嘈雜的硬體,核心不斷地從該硬體中自然地收集熵。

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