Dm-Crypt

在普通模式下使用 dm-crypt 重用密鑰的安全性?

  • September 8, 2018

從密碼分析的角度來看,在 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 仍然推薦舊的,或者舊的容器與新的硬碟驅動器一起保留和增長,所以有些人最終還是使用了錯誤的…

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