關於 LUKS 的 dm-crypt,“密碼強化”是什麼意思?
在 Fedora wiki上提到 LUKS 提供了這種保護。
LUKS 確實提供了密碼片語強化,但選擇一個好的(意思是“難以猜測”)密碼片語仍然是一個好主意。
它到底是什麼以及它是如何實現的?
類似的片語出現在其他地方(例如,這個 Red Hat 5 page),其中給出了更詳細的資訊:
- LUKS 提供密碼片語強化。
+ 這可以防止字典攻擊。
正因為如此,我希望這意味著密碼正在被加鹽,並且可能對過程進行了其他改進(例如,將其散列 N 次以增加成本)。
Google搜尋,這句話似乎在 2006 年左右首次與 LUKS 一起出現在維基百科關於磁碟加密軟體比較的文章中。那裡對“密碼片語強化”的描述轉到“密鑰拉伸”的文章中,該文章是關於使密碼對暴力攻擊更具彈性的各種技術,包括使用PBKDF2。事實上,根據 LUKS FAQ,LUKS1 確實使用了 PBKDF2(LUKS2 切換到 Argon2)。
這就是密碼片語強化在這種情況下的含義:使用 PBKDF2 和類似方法使密碼更難破解。FAQ 也有一個簡短的描述:
如果密碼具有較低的熵,則您希望此過程花費一些精力,以便每次嘗試都花費時間和資源並減慢攻擊者的速度。LUKS1 為此使用 PBKDF2,添加了迭代計數和鹽。迭代計數預設設置為在設置了相應密碼片語的設備的 CPU 上每次嘗試需要 1 秒。鹽是為了防止預計算。
具體來說,LUKS 使用 SHA1 作為 PBKDF2 中的散列機制(從 1.7.0 開始它是 SHA256),並設置了迭代計數,因此它需要大約 1 秒。另請參閱常見問題解答的第 5.1 節:安全密碼片語有多長?比較如何在 LUKS1 中使用 PBKDF2 對 dm-crypt 進行了相當大的改進:
對於普通的 dm-crypt(無雜湊迭代),就是這樣。這給出了(使用 SHA1,普通 dm-crypt 預設為成熟 md160,這似乎比 SHA1 稍慢):
Passphrase entropy Cost to break 60 bit EUR/USD 6k 65 bit EUR/USD 200K 70 bit EUR/USD 6M 75 bit EUR/USD 200M 80 bit EUR/USD 6B 85 bit EUR/USD 200B ... ...
對於 LUKS1,您必須考慮 PBKDF2 中的雜湊迭代。對於目前的 CPU,大約有 100k 次迭代(可以使用 查詢
cryptsetup luksDump
。上表變為:Passphrase entropy Cost to break 50 bit EUR/USD 600k 55 bit EUR/USD 20M 60 bit EUR/USD 600M 65 bit EUR/USD 20B 70 bit EUR/USD 600B 75 bit EUR/USD 20T ... ...