我正在使用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.
我也在读ArchLinux dm-crypt 维基对于 LUKS 来说:
默认情况下使用 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?)。
答案1
都不是。默认值相当于颁发--key-size 256
,因为这指的是 cryptsetup 本身处理的密钥数据,但由于 XTS-AES 需要两个独立的 AES 密钥(一个用于数据,一个用于“调整”,即扇区号),它将 cryptsetup 提供的 256 位密钥分成两个 128 位 AES 密钥。
但这仍然比普通的 AES-128 稍微强一些,因为两个密钥都参与加密每个数据块。
同样,如果您指定--key-size 512
,则将通过 cryptsetup 加载 512 位密钥,但 XTS-AES 会将其拆分为两个 256 位密钥。(“构建块”AES 密码仅提供 128、192 或 256 位密钥变体,并且 XTS 密码模式一次使用其中两个“构建块”。没有 AES-512。)
有关 XTS-AES 内部工作原理的详细信息,请参见: