Luks

LUKS 中的 –use-urandom 或 –use-random 選項有什麼用?

  • June 23, 2017

我目前正在嘗試自學一些非 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就是安全的。

引用自:https://unix.stackexchange.com/questions/372634