Linux-Kernel
如何強制 /dev/random 阻止?
對於密碼學課程,我試圖耗盡 Linux 中的熵池(例如 make
/proc/sys/kernel/random/entropy_avail
go 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
我什麼也沒看到,我只是得到一個空白行。所以我有幾個問題:
- 是什麼很好地補充了我的熵,我怎樣才能找到隨機性的具體來源?
- 有什麼方法可以暫時禁用隨機源,以便我可以強制這種阻塞發生?
圍繞 Linux 隨機設備的開發數量驚人。緩慢的阻塞
/dev/random
消失了,取而代之的/dev/random
是永遠不會耗盡數據的快速。您將不得不回到過去,例如在 linux 4.8(引入了更快的 crng 算法)或可能的 linux 5.6(引入了抖動熵生成)之前。
無法在目前核心中恢復原始行為。
如果您在舊版本的 Linux 中看到此問題,除了 hwrng,您可能正在使用
haveged
或 rng-toolsrngd
或類似的使用者空間熵提供程序。一些發行版預設安裝這些以避免在等待一些隨機位時掛起,在這種情況下,您可以解除安裝或禁用它們,或者從沒有其他程序執行的 initrd / busybox shell 中嘗試它。
如果問題仍然存在,您可能只是有一個非常嘈雜的硬體,核心不斷地從該硬體中自然地收集熵。