从密码分析的角度来看,在密码aes-xts-plain64的dm-crypt平原模式中,对于不同的卷重用相同的密钥是否存在安全缺陷?
# 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卷。
发布于 2018-09-07 23:40:34
嗯,这不是安全stackexchange,我也不是密码学专家,但从表面上看:
爱丽丝未加密:
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-平原64加密:
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字节块)导致相同的密文。如果明文不同,密文也不一样。在某些情况下,这可能比揭示自由空间更有启发性。
另一个问题是,您可以将密文从一个驱动器复制到另一个驱动器,并将其解密到有意义的数据--但在错误的驱动器上。通常,如果你处理密文,当你解密的时候你得到的只是随机垃圾,但是重复使用masterkey只会给你提供更多有效的密文来处理。
所以,完全是人为的例子,如果你有一个用户不知道密钥,但以某种方式可以访问存储在这个系统上的文件,并且能够将密文从一个驱动器复制到另一个驱动器--通常是不可能的,但让我们假设它是这样的。他们可以编写一个满是胡说八道的大文件,找出这个文件在磁盘上的分配位置,然后从其他驱动器复制数据。然后在读取数据的文件时,看到另一个驱动器是明文的。
总之,当每个磁盘都很容易使用唯一的键时,这只是不必要的头痛。即使您从共享主键中派生出该密钥,也可以使用散列函数或其他方法。尽管也没有理由这么做。您可以使用多个密钥文件,也可以使用--keyfile-offset、--keyfile-size选项从单个文件中读取多个键。
卢克斯应该能帮你避免各种陷阱。除非您有意克隆标题,否则它总是对每个容器使用不同的随机主密钥,即使您对它们使用相同的密码短语。
还有一点关于你选择密码的注意事项,aes-xts-plain64。这曾经被称为aes-xts-plain。一切都很好直到超过2 2TiB的设备出现..。在aes-xts-plain中,密文重复每个2TiB,这与重用同一个主密钥基本上是同一个问题。
这是用aes-xts-plain64修复的,但是一些博客/维基仍然推荐旧的,或者旧的容器和新的硬盘一起保存和生长,所以有些人最终使用错误的一个到今天.
https://unix.stackexchange.com/questions/467636
复制相似问题