我正在使用cryptsetup 2.1.0
,默认加密选项是(如 所报告cryptsetup --help
):
Default compiled-in device cipher parameters:
LUKS: aes-xts-plain64, Key: 256 bits, LUKS header hashing: sha256, RNG: /dev/urandom
LUKS: Default keysize with XTS mode (two internal keys) will be doubled.
我也在阅读LUKS 状态的ArchLinux dm-crypt wiki :
默认情况下使用 256 位密钥大小。但是请注意,XTS 将提供的密钥分成两半,因此要使用 AES-256 而不是 AES-128,您必须将 XTS 密钥大小设置为 512。
我对密钥大小加倍/减半感到困惑。我不明白是否:
- 默认值相当于
--key-size 256
在命令行上发出,并且程序将其加倍为 512,以有效地获得 AES-256。这就是联机帮助页似乎所说的“将加倍” - 默认值相当于
--key-size 512
在命令行上发出,并且程序将其减半,有效地执行 AES-256。ArchLinux 页面似乎就是这么说的。
(1) 或 (2) 是哪一个?换句话说,我需要知道在命令行上明确给出的密钥大小等同于默认值(256 或 512?),以及产生的有效 AES 强度(AES-128 或 AES-512 ?)。
两者都不。默认值相当于发行
--key-size 256
,因为这是指由 cryptsetup 本身处理的密钥数据,但是因为 XTS-AES 需要两个独立的 AES 密钥(一个用于数据,一个用于“调整”即扇区号),它拆分了 cryptsetup-提供的 256 位密钥转换为两个 128 位 AES 密钥。然而,这仍然比普通的 AES-128 强一些,因为两个密钥都涉及加密每个数据块。
同样,如果您指定
--key-size 512
,则 512 位密钥将通过 cryptsetup 加载,但 XTS-AES 会将其拆分为两个 256 位密钥。(“构建块”AES 密码只有 128、192 或 256 位密钥变体,而 XTS 密码模式同时使用这些“构建块”中的两个。没有 AES-512。)有关 XTS-AES 内部工作原理的详细信息,请参见: