列出LUKS可用的加密方法


10

我正在寻找一种有效且仍最新的加密硬盘的方法。经过一番研究,我遇到了LUKS,并决定尝试一下。因此,我查看了一些如何使用其正确加密HDD的示例,如下所示:

cryptsetup --verbose --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda3

它的--cipher--hash部分对我来说最有趣,因此我试图让我了解LUKS特别可用的不同密码和哈希值。除了打开一个文件,该文件以机器友好的格式显示了当前使用的Linux上可用的加密形式,我找不到任何有用的信息。但是据我所知,即使对于每天都不处理的人来说,很难读取该文件,但它可能会丢失所有加密方式的全部内容。

我的问题:是否有LUKS加密的密码/哈希的完整列表?

一个简单地向我展示了我可以选择的东西……并可能简要说明了这些不同方式之间的区别。


1
我投票结束这个问题是因为不可能,因为这与使用和配置LUKS和Linux内核有关,而与这些工具使用的密码无关。它将在Unix&Linux上成为主题。我已将此问题标记为要迁移,请不要重新发布,除非它因迁移而关闭。
吉尔斯(Gillles)“所以-别再邪恶了”

我特别选择了密码学领域,因为我的问题是针对密码和哈希的。我在该区域进行了“游览”,字面意思是在“您应该问的问题:”栏中。如果需要,请查找它。
Akito

这就是为什么我不把这个问题放在Unix&Linux上的原因,因为它在那里
不合时宜

简要说明这些不同方式之间的区别是什么。这是您的问题中唯一涉及主题的部分。AES和Twofish之间的主要区别是什么?好吧,AES使用替代置换网络,而Twofish使用Feistel网络。根据此信息,您应该明确选择AES,因为从原理上来说,Feistel网络没有错。
DepressedDaniel

Answers:


7

这基本上取决于您的内核,因此“ See / 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,tripmd160,漩涡)。密码位于“算法”标题下。

查看默认值是什么也可以让您对“相当好”有所了解:

$ 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
这正是我所抱怨的... / proc / crypto高度不可读,因此毫无用处。有些密码在列表中甚至是两次,我不知道为什么。
Akito

啊,我不确定,不是问题所在,但这绝对是一个问题,即使有关/ proc / crypto的网络搜索也没有揭示任何明显的指南。我注意到一些差异,并且我认为cryptsetup仅使用块密码来加密磁盘块,因此'type:blkcipher'似乎是合理的。但是我也注意到我没有提到任何蛇,也没有提到xts-aes ...但是我有另一个更好的主意,我将其编辑成答案
Xen2050

2

关于notdavidcronenberg用户的工作:我找到的唯一答案是在文档LUKS磁盘格式规范(PDF)中。

有效密码名称

有效密码模式

  • ecb 密码输出直接使用。
  • cbc-plain密码以CBC模式运行。CBC链在每个扇区都被剪切,并以扇区号作为初始向量重新初始化(转换为32位和little-endian)。此模式在第4章[Fru05b]中指定。
  • cbc-essiv:{hash}使用散列以生成原始密钥的IV密钥在ESSIV模式下对密码进行操作。例如,当使用sha256作为哈希时,密码模式规范为“ cbcessiv:sha256”。ESSIV在[Fru05b]第4章中指定。
  • xts-plain64 plain64是普通初始向量的64位版本

有效的哈希规范


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.