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


10

Я шукав дійсний і досі сучасний спосіб шифрування жорстких дисків. Після деяких досліджень я зіткнувся з ЛУКС і вирішив дати йому знімок. Тож я переглянув кілька прикладів того, як правильно зашифрувати жорсткий диск за допомогою нього:

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 . Я позначив це питання міграцією, будь ласка, не відкладайте повідомлення, якщо воно не закриється без міграції.
Жил "ТАК - перестань бути злим"

Я спеціально обрав область криптографії, оскільки моє питання спрямоване на шифри та хеші. Я взяв "тур" по цій області, і він буквально містить його в слоті "Питання, які ви повинні задати:". Подивіться, якщо хочете.
Акіто

Ось чому я не ставив це питання в Unix & Linux, тому що це буде поза темою там ....
Akito

дає короткий опис того, у чому саме полягають відмінності між цими різними способами. Це єдина частина вашого питання, яка є темою. У чому головна відмінність AES від Twofish? Ну, AES використовує мережу перестановки заміщення, тоді як Twofish використовує мережу Feistel. Виходячи з цієї інформації, слід чітко вибрати AES, оскільки в мережі Feistel в принципі немає нічого поганого.
ПригніченийДаніель

Відповіді:


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звіти (і вони також показуватимуть (оперативні) швидкості). Наприклад:

$ 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
Це саме те, на що я скаржився ... / proc / crypto є нечитабельним і тому марним. Деякі шифри навіть двічі в списку, і я не знаю чому.
Акіто

Ах, я не був впевнений, не було питання, але це, безумовно, стурбованість, навіть веб-пошук про / proc / crypto не виявляє очевидних посібників. Я помічаю деякі відмінності, і я думаю, що cryptsetup використовує блокові шифри лише для шифрування блоків дисків, тому "type: blkcipher" здаються логічними. Але я також помічаю, що моя не згадує ні змію, ні xts-aes ... але у мене є ще одна ідея, яка може бути кращою, я відредагую її у відповідь
Xen2050

2

посилаючись на роботу користувача notdavidcronenberg: Єдина відповідь, яку я знайшов, - це документ LUKS On-Disk Format 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-розрядна версія звичайного початкового вектора

Дійсні технічні характеристики хеша


список не повний superuser.com/a/1450671/446140
intika
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.