在普通模式下使用 dm-crypt 重用密鑰的安全性?
從密碼分析的角度來看,在 dm-crypt 普通模式和 cypher 中為不同卷重用相同密鑰時是否存在安全缺陷
aes-xts-plain64
?# Example: Encrypt two volumes with the same key cryptsetup --type plain --cipher=aes-xts-plain64 --key-size=256 --key-file mykey open /dev/sda myvol1 cryptsetup --type plain --cipher=aes-xts-plain64 --key-size=256 --key-file mykey open /dev/sdb myvol2
我只考慮使用相同密鑰加密少於 100 個卷的實際情況。
好吧,這不是安全堆棧交換,我也不是密碼學專家,但從表面上看:
愛麗絲未加密:
00000000 48 65 6c 6c 6f 20 6d 79 20 6e 61 6d 65 20 69 73 |Hello my name is| 00000010 20 41 6c 69 63 65 0a 00 00 00 00 00 00 00 00 00 | Alice..........| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
鮑比未加密:
00000000 48 65 6c 6c 6f 20 6d 79 20 6e 61 6d 65 20 69 73 |Hello my name is| 00000010 20 42 6f 62 62 79 0a 00 00 00 00 00 00 00 00 00 | Bobby..........| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
兩者都使用相同的(主)密鑰 aes-xts-plain64 加密:
Alice000 8f 04 35 fc 9f cb 5d c8 af da ae 78 cd e5 64 3d |..5...]....x..d=| Bobby000 8f 04 35 fc 9f cb 5d c8 af da ae 78 cd e5 64 3d |..5...]....x..d=| Alice010 4f d3 99 77 7b c1 2c 8d ff 9b 4d 55 da a3 9b e2 |O..w{.,...MU....| Bobby010 12 d6 ad 17 74 50 4d 08 8c 38 22 40 98 a7 14 99 |....tPM..8"@....| Alice020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| Bobby020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
所以——從外觀上看,一個問題是相同的偏移量和明文(對於每個 16 字節塊)導致相同的密文。如果明文不同,密文也不同。在某些情況下,這可能比顯示可用空間更具啟發性。
另一個問題是您可以將密文從一個驅動器複製到另一個驅動器,然後將其解密為有意義的數據——但在錯誤的驅動器上。通常,如果您弄亂了密文,解密時得到的只是隨機垃圾,但重新使用萬能鑰匙只會為您提供更有效的密文。
因此,完全人為的範例,如果您的使用者不知道密鑰,但以某種方式可以訪問儲存在該系統上的文件,並且能夠將密文從一個驅動器複製到另一個驅動器-通常不可能,但讓我們假設就是這樣。他們可以寫一個充滿廢話的大文件,找出這個文件在磁碟上的分配位置,然後從其他驅動器複製數據。然後在讀回文件時以明文形式查看另一個驅動器數據。
總而言之,當為每個磁碟使用唯一密鑰非常容易時,這只是一個不必要的頭痛。即使您使用散列函式或其他方法從共享主密鑰中派生該密鑰。雖然也沒有理由。
--keyfile-offset
您可以只使用多個密鑰文件,或者使用,--keyfile-size
選項從單個文件中讀取多個密鑰。LUKS 應該可以幫助您避免各種陷阱。除非您故意複製標頭,否則它始終為每個容器使用不同的隨機主密鑰,即使您為它們使用相同的密碼。
還有一點關於您選擇的密碼的說明,
aes-xts-plain64
. 這曾經被稱為aes-xts-plain
. 一切都很好,直到出現大於 2TiB 的設備……aes-xts-plain
密文每 2TiB 重複一次,這與重複使用相同的主密鑰基本上是相同的問題。這已通過 修復
aes-xts-plain64
,但一些部落格/wiki 仍然推薦舊的,或者舊的容器與新的硬碟驅動器一起保留和增長,所以有些人最終還是使用了錯誤的…