
檔案與目錄的管理
|
299
這些裝置的用途各有不同。它們可用於測試一個應用程式如何處理一些極限的問題—例
如,一個被填滿的檔案系統。因為 null 和 zero 裝置會忽略寫入操作,所以它們也是一種
不具任何開銷之丟棄多餘 I/O 的方法。
亂數產生器
核心的亂數產生器裝置位於
/dev/random
以及
/dev/urandom
。它們的主要編號為 1,次要
編號分別為 8 和 9。
核心的亂數產生器會從裝置驅動程式以及其他源頭收集 noise(雜亂的資料),而且核心
會把收集到的 noise 連結在一起,並且對它進行單向雜湊運算。所得到的結果然後會被
存入一個
熵集區
(
entropy pool
)。核心會不斷估算集區中熵的位元數目。
讀取
/dev/random
會從此集區傳回熵。這些結果可做為亂數產生器的種子,可用於產生
金鑰以及高加密強度熵(cryptographically strong entropy)的其他工作上。
理論上,敵人可以從熵集區獲得足夠的資料,而且只要成功破解單向雜湊就可以知道熵集
區其餘的狀態。然而此類攻擊目前只是理論上可能—並未聽說有發生過此類攻擊—核心要
降低這個可能性,可以對每個讀取要求遞減集區中熵的估算數量。當估算數量為 0 時,讀
取要求將受到阻擋,除非系統產生更多的熵,而且熵的估算數量足以完成讀取要求。
/dev/urandom
不具此特性;即使核心的熵估算不足以完成讀取要求,讀取此裝置仍會成
功。因為只有最講究安全的應用程式—例如在 GNU Privacy Guard 中為了資料交換的安全 ...