Перечислите доступные методы шифрования для LUKS

10

Я искал действительный и все еще современный способ шифрования жестких дисков. После некоторых исследований я столкнулся с LUKS и решил попробовать . Поэтому я посмотрел несколько примеров того, как правильно шифровать жесткий диск, например:

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

Его части --cipher и --hash были наиболее интересны для меня, поэтому я попытался узнать о различных шифрах и хешах, которые специально используются для LUKS. Я не смог найти никакой полезной информации, кроме открытия файла, который показывает доступные формы шифрования в машинном формате для используемого в настоящее время Linux. Но, как мне сказали, даже в этом файле, вероятно, отсутствует полный набор всех способов шифрования, кроме того, его очень трудно читать тем, кто не имеет дело с ним ежедневно, так или иначе.

Мой вопрос: есть ли полный список шифров / хэшей для шифрования LUKS?

Тот, который просто показывает мне, что я могу выбрать ... и, возможно, дает краткое описание, в чем именно различия между этими разными способами.

Akito
источник
1
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что речь идет об использовании и настройке LUKS и ядра Linux, а не о криптографии, которую используют эти инструменты. Это было бы по теме на Unix и Linux . Я пометил этот вопрос для миграции, пожалуйста, не делайте репостов, если он не закрыт без миграции.
Жиль "ТАК - перестать быть злым"
Я специально выбрал область криптографии, потому что мой вопрос направлен на шифры и хэши. Я взял «тур» по этой области, и он буквально есть в слоте «Вопросы, которые вы должны задать:». Посмотри, если хочешь.
Акито
Вот почему я не поставил вопрос в Unix & Linux, потому что это было бы не по теме ...
Акито
дает краткое описание того, в чем именно заключаются различия между этими разными способами. Это единственная часть вашего вопроса по теме. В чем главное отличие AES от Twofish? Что ж, AES использует сеть перестановочных замен, в то время как Twofish использует сеть Фейстеля. Основываясь на этой информации, вы должны четко выбрать AES, потому что в принципе нет ничего плохого в сети Feistel.
ДепрессияДаниэль

Ответы:

7

Это в основном зависит от вашего ядра, так что « See / proc / crypto » должно быть «ответом». Man-страница 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не менее, в my не упоминается ни змея, ни 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, palemd160, джакузи). Шифры находятся под заголовком Алгоритма.

Изучение значений по умолчанию дает хорошее представление о том, что тоже считается «довольно хорошим»:

$ 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.
Xen2050
источник
2
Это именно то, на что я жаловался ... / proc / crypto крайне нечитаем и поэтому бесполезен. Некоторые шифры даже дважды в списке, и я не знаю почему.
Акито
Ах, я не был уверен, не в этом вопрос, но это определенно проблема, даже поиск в сети по / proc / crypto не обнаруживает никаких очевидных руководств. Я замечаю некоторые различия и думаю, что cryptsetup использует только блочные шифры для шифрования дисковых блоков, поэтому «type: blkcipher» кажется логичным. Но я также замечаю, что моя не упоминает ни одного змея или xts-aes ... но у меня есть еще одна идея, которая может быть лучше, я отредактирую ее в ответ
Xen2050
2

в отношении работы пользователя notdavidcronenberg: единственный ответ, который я нашел, находится в документе LUKS On-Disk Specification (PDF).

Допустимые имена шифров

Допустимые режимы шифрования

  • 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 Вариант SHA в соответствии с FIPS 180-2
  • sha512 Вариант SHA в соответствии с FIPS 180-2
  • ripemd160 http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html
opinion_no9
источник
список не полный superuser.com/a/1450671/446140
интика