LUKS 中的 –use-urandom 或 –use-random 選項有什麼用?
我目前正在嘗試自學一些非 Windowsland 作業系統,我認為 Ubuntu Server 16.04 將是最好的起點。在“掌握”了 LVM 之後,我正在嘗試讓自己熟悉 cryptsetup 和 LUKS。
我開始明白了,但讓我感到困惑的一件事是……
…由 –use-urandom 或 –use-random 選項生成的隨機數用於什麼目的?
在 cryptsetup 命令的上下文中,例如:
$ sudo cryptsetup luksFormat --cipher=aes-xts-plain64 --key-size=512 --hash=sha256 --use-random /dev/sdb1 --key-file=/crypto/keyfile
我在這裡做了一些閱讀,使用 /dev/random (這是我假設 –use-random 從中提取其隨機數熵)有時可能需要很長時間,因為系統會產生更多的熵,因此在某些情況下建議使用使用 –use-urandom (相應地從 /dev/urandom 中提取,據我所知,它完全是偽隨機的),因為系統不會在等待熵池“重新填充”時卡住。
我不完全了解密碼學,但我猜這個選項只使用一次,設置整個加密方案的初始狀態,然後我們就很好了。如果是這種情況,我可以毫無問題地等待一個良好而混亂的加密床來保護我的數據——但如果我必須在每次讀寫磁碟時都處理這個問題……那可能會很快變老。
我對嗎?這只是一次性的事情嗎?或者,通過在我的命令中設置 –use-random ,我是否注定要長時間 LUKS 打開和關閉、讀取和寫入等?
使用
/dev/random
(…) 有時會花費很長時間,因為系統會產生更多的熵正確的。
在某些情況下,建議使用 –use-urandom (相應地從
/dev/urandom
幾乎在所有情況下,建議不要使用
/dev/random
. 請參閱/dev/urandom 中的 rand 對於登錄密鑰是否安全?或關於 urandom 的神話。
/dev/urandom
,據我了解,這完全是偽隨機的不,
urandom
不是偽隨機。“偽隨機”的意思是“確定性的”。urandom
它不是確定性的,它使用由熵播種的(加密質量)確定性隨機生成器,從而從少量非確定性數據中產生有效的無窮無盡的隨機字節流。這些選項
--use-random
僅--use-urandom
影響生成密鑰時發生的情況,而不影響使用卷時發生的情況。因此--use-random
不會使使用卷的速度變慢,只會使創建速度變慢。儘管如此,--use-urandom
通常都很好,而--use-random
對於互動式使用來說很好,但不推薦在腳本中使用,因為如果系統上沒有任何東西可以增加熵計數,它可能會永遠阻塞。唯一/dev/urandom
不能使用的情況是在新安裝、新啟動的系統上還沒有時間收集熵——不幸urandom
的是,在這種情況下會返回可預測的數據。一旦系統使用了幾分鐘(甚至在您安裝系統後重新啟動),/dev/urandom
就是安全的。