Filesystems
從 dev/urandom 讀取 - 系統行為
dev/urandom
當從, 說head
or讀取時,dd
當然期望輸出總是隨機的和不同的。UNIX 在低級別如何處理這個問題?文件是在讀取時自然截斷,還是文件實際上是對稱密碼或等效密碼的介面,因此“讀取”實際上是執行密碼的行為。
/dev/urandom
是字元設備,而不是正常文件。打開它會為驅動程序提供一個介面,通常在核心中,該驅動程序處理讀取;每次程序從 讀取時/dev/urandom
,都會呼叫驅動程序,並且驅動程序會確定如何提供適當的內容(與任何其他字元設備相同 -/dev/null
,/dev/zero
…)。在 Linux 上,這是在
drivers/char/random.c
. 它維護一個“熵池”,從各種隨機數據源中播種,當讀取時,使用 ChaCha 流密碼處理池數據以構造要返回的數據。