硬體隨機數生成器

介紹

hw_random 框架是一種軟體,它利用 CPU 或主機板上的一個特殊硬體功能,即隨機數生成器 (RNG)。該軟體包含兩個部分:一個核心,提供 /dev/hwrng 字元裝置及其 sysfs 支援;以及一個特定於硬體的驅動程式,插入到該核心中。

為了最有效地使用這些機制,您還應該下載支援軟體。 從以下網址下載最新版本的“rng-tools”軟體包:

這些工具使用 /dev/hwrng 來填充核心熵池,該熵池在內部使用,並透過 /dev/urandom 和 /dev/random 特殊檔案匯出。

工作原理

字元裝置。 使用標準的 open() 和 read() 系統呼叫,您可以從硬體 RNG 裝置讀取隨機資料。 此資料未經任何適應性測試檢查,並且可能存在錯誤(如果硬體出現故障或已被篡改)。 僅當硬體設定了“has-data”標誌時才會輸出資料,但即便如此,有安全意識的人也會在假設資料是真正隨機的之前對資料執行適應性測試。

rng-tools 軟體包在“rngd”中使用此類測試,並允許您使用“rngtest”實用程式手動執行它們。

/dev/hwrng 是字元裝置,主裝置號為 10,次裝置號為 183。

類裝置。 存在一個 /sys/class/misc/hw_random 節點,它具有兩個唯一的屬性,“rng_available”和“rng_current”。 “rng_available”屬性列出了可用的特定於硬體的驅動程式,而“rng_current”列出了當前連線到 /dev/hwrng 的驅動程式。 如果您的系統有多個 RNG 可用,則可以透過將“rng_available”列表中的名稱寫入“rng_current”來更改使用的 RNG。


Intel/AMD/VIA 隨機數生成器 (RNG) 的硬體驅動程式

關於來自韌體集線器資料手冊的 Intel RNG 硬體

韌體集線器集成了隨機數生成器 (RNG),該生成器使用來自矽的固有隨機量子力學特性的熱噪聲生成。 當不生成新的隨機位時,RNG 電路將進入低功耗狀態。 英特爾將提供二進位制軟體驅動程式,以使第三方軟體能夠訪問我們的 RNG,以用作安全功能。 目前,RNG 僅用於 OS 存在的狀態下的系統。

Intel RNG 驅動程式註釋

FIXME:支援 poll(2)

注意

request_mem_region 已被刪除,原因有三:

  1. 此驅動程式僅支援一個 RNG;

  2. RNG 使用的位置是 MMIO 可定址記憶體中的固定位置;

  3. 具有正常工作的 BIOS e820 處理的使用者將始終保留 RNG 所在的區域,因此 request_mem_region 呼叫對於正確的設定總是會失敗。 但是,對於使用 mem=XX 的人,BIOS e820 資訊**不**在 /proc/iomem 中,並且 request_mem_region(RNG_ADDR) 可能會成功。

驅動程式詳細資訊

基於

Intel 82802AB/82802AC 韌體集線器 (FWH) 資料表 1999 年 5 月 訂單號:290658-002 R

Intel 82802 韌體集線器

隨機數生成器程式設計師參考手冊 1999 年 12 月 訂單號:298029-001 R

Intel 82802 韌體 HUB 隨機數生成器驅動程式

版權所有 (c) 2000 Matt Sottek <msottek@quiknet.com>

特別感謝 Matt Sottek。 我做了“內臟”,他做了“大腦”和所有的測試。