我正在寻找一种有效且仍然最新的硬盘加密方法。经过一番研究后我遇到了卢克斯并决定尝试一下。因此,我查找了一些如何使用它正确加密硬盘的示例,如下所示:
cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda3
这--密码和--哈希值其中一部分对我来说是最有趣的,所以我试图让自己了解专门用于 LUKS 的不同密码和哈希值。除了打开一个以机器友好的格式显示当前使用的 Linux 可用的加密形式的文件之外,我找不到任何有用的信息。但据我所知,即使这个文件也可能缺少所有加密方式的完整范围,而且对于那些不每天处理它的人来说很难阅读。
我的问题:有没有满的LUKS 加密的密码/哈希列表?
它只是向我展示我可以选择什么......并且可能会简短描述这些不同方式之间的差异到底是什么。
答案1
这基本上取决于你的内核,所以“参见 /proc/crypto” 应该是“答案。” cryptsetup 手册页是这样说的:
NOTES ON SUPPORTED CIPHERS, MODES, HASHES AND KEY SIZES
The available combinations of ciphers, modes, hashes and key sizes depend
on kernel support. See /proc/crypto for a list of available options. You
might need to load additional kernel crypto modules in order to get more
options.
For the --hash option, if the crypto backend is libgcrypt, then all algo‐
rithms supported by the gcrypt library are available. For other crypto
backends some algorithms may be missing.
然而,我/proc/crypto
没有提到任何蛇或 xts(aes),所以我建议查看哪些cryptsetup benchmark
报告(它也会显示(ram)速度)。例如:
$ cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 292752 iterations per second
PBKDF2-sha256 221362 iterations per second
PBKDF2-sha512 142010 iterations per second
PBKDF2-ripemd160 277124 iterations per second
PBKDF2-whirlpool 155727 iterations per second
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 164.7 MiB/s 164.5 MiB/s
serpent-cbc 128b 119.5 MiB/s 205.0 MiB/s
twofish-cbc 128b 163.5 MiB/s 208.6 MiB/s
aes-cbc 256b 148.4 MiB/s 147.9 MiB/s
serpent-cbc 256b 128.1 MiB/s 205.3 MiB/s
twofish-cbc 256b 202.3 MiB/s 213.1 MiB/s
aes-xts 256b 165.4 MiB/s 145.3 MiB/s
serpent-xts 256b 150.0 MiB/s 194.5 MiB/s
twofish-xts 256b 206.4 MiB/s 206.9 MiB/s
aes-xts 512b 149.4 MiB/s 147.5 MiB/s
serpent-xts 512b 181.7 MiB/s 195.0 MiB/s
twofish-xts 512b 207.1 MiB/s 208.6 MiB/s
哈希值是前几行(sha1、sha256、sha512、ripemd160、whirlpool)。密码位于算法标题下。
查看默认值也可以很好地了解什么被认为是“相当不错”:
$ cryptsetup --help|tail -n 8
Default compiled-in key and passphrase parameters:
Maximum keyfile size: 8192kB, Maximum interactive passphrase length 512 (characters)
Default PBKDF2 iteration time for LUKS: 1000 (ms)
Default compiled-in device cipher parameters:
loop-AES: aes, Key 256 bits
plain: aes-cbc-essiv:sha256, Key: 256 bits, Password hashing: ripemd160
LUKS1: aes-xts-plain64, Key: 256 bits, LUKS header hashing: sha1, RNG: /dev/urandom
使用更大的密钥大小(使用--key-size
)应该只会更强,即使稍微慢一些。
--key-size, -s <bits>
Sets key size in bits. The argument has to be a multiple of 8.
The possible key-sizes are limited by the cipher and mode used.
See /proc/crypto for more information. Note that key-size in
/proc/crypto is stated in bytes.
答案2
参考用户 notdavidcronenberg 的工作:我找到的唯一答案是在文档中LUKS 磁盘格式规范(PDF)。
有效的密码名称
aes
高级加密标准 - FIPS PUB 197twofish
Twofish:128 位分组密码 -https://www.schneier.com/paper-twofish-paper.htmlserpent
https://www.cl.cam.ac.uk/~rja14/serpent.htmlcast5
RFC 2144cast6
RFC 2612有效的密码模式
ecb
直接使用密码输出。cbc-plain
密码以 CBC 模式运行。 CBC 链接被切割为每个扇区,并使用扇区号作为初始向量重新初始化(转换为 32 位和小尾数)。此模式在 [Fru05b] 第 4 章中指定。cbc-essiv:{hash}
密码在 ESSIV 模式下运行,使用哈希为原始密钥生成 IV 密钥。例如,当使用 sha256 作为哈希时,密码模式规范为“cbcessiv:sha256”。 ESSIV 在 [Fru05b] 第 4 章中指定。xts-plain64
plain64 是普通初始向量的 64 位版本有效的哈希规范
sha1
RFC 3174 - 美国安全哈希算法 1 (SHA1)sha256
符合 FIPS 180-2 的 SHA 变体sha512
符合 FIPS 180-2 的 SHA 变体ripemd160
http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html