Linux 核心使用哪些熵源?
man 4 random
對 Linux 核心熵源有一個非常模糊的描述:隨機數生成器將來自設備驅動程序和其他來源的環境雜訊收集到一個熵池中。
Linux Random Number Generator 中的論文Entropy transfer也沒有更具體。它列出:
add_disk_randomness()
,add_input_randomness()
, 和add_interrupt_randomness()
.這些功能來自
random.c
,其中包括以下評論:來自環境的隨機性來源包括鍵盤間時序、來自某些中斷的中斷間時序以及其他事件,這些事件既 (a) 非確定性 (b) 外部觀察者也難以測量。
再往下,有一個函式
add_hwgenerator_randomness(...)
表示支持硬體隨機數生成器。所有這些資訊都相當模糊(或者,就原始碼而言,需要深入了解 Linux 核心才能理解)。實際使用的熵源是什麼,Linux 核心是否支持任何開箱即用的硬體隨機數生成器?
如今,大多數商品 PC 硬體都有一個隨機數生成器。威盛半導體多年來一直將它們置於其處理器中;Linux 核心為此提供了 via-rng 驅動程序。我在最新的原始碼樹的目錄中統計了 34 個源模組
drivers/char/hw_random/
,包括 Intel 和 AMD 硬體的驅動程序,以及具有 TPM 設備的系統。您可以執行 rng 守護程序 (rngd) 將隨機數據推送到核心熵池。
是的,它確實支持開箱即用的硬體熵生成器。這對於每秒發起大量同時連接的高負載 SSL 伺服器(Gmail、Facebook、Microsoft 等)是必需的。對於家庭伺服器或小型組織伺服器來說,確實沒有必要。請記住,硬體熵生成器通常使用 PCI 介面,沒有什麼花哨的,因此可以輕鬆支持。不確定是否有需要閉源驅動程序的專有硬體熵生成器,可能不是,因為它不是很困難,也不是一個非常有利可圖的行業(與顯卡不同)。
http://en.wikipedia.org/wiki/Hardware_random_number_generator