Wymień dostępne metody szyfrowania dla LUKS


10

Szukałem ważnego i wciąż aktualnego sposobu szyfrowania dysków twardych. Po kilku badaniach spotkałem LUKS i postanowiłem spróbować. Poszukałem więc kilku przykładów prawidłowego szyfrowania dysku twardego:

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

Część --cipher i --hash była dla mnie najbardziej interesująca, więc próbowałem dowiedzieć się o różnych szyfrach i skrótach, które są szczególnie przydatne dla LUKS. Nie mogłem znaleźć żadnych użytecznych informacji poza otwarciem pliku, który pokazuje dostępne formularze szyfrowania w formatowaniu przyjaznym maszynie dla aktualnie używanego Linuksa. Ale, jak mi powiedziano, nawet w tym pliku prawdopodobnie brakuje pełnego zakresu wszystkich metod szyfrowania, poza tym bardzo trudno jest go odczytać komuś, kto nie zajmuje się nim codziennie.

Moje pytanie: czy istnieje pełna lista szyfrów / skrótów do szyfrowania LUKS?

Ten, który po prostu pokazuje mi, co mogę wybrać ... i może krótko opisuje, jakie dokładnie są różnice między tymi różnymi sposobami.


1
Głosuję za zamknięciem tego pytania jako nie na temat, ponieważ chodzi o używanie i konfigurowanie LUKS i jądra Linuksa, a nie o kryptografię używaną przez te narzędzia. Byłoby to na temat Uniksa i Linuksa . Oflagowałem to pytanie do migracji, proszę nie publikować ponownie, chyba że zostanie zamknięte bez migracji.
— Gilles 'SO - przestań być zły'

W szczególności wybrałem obszar kryptografii, ponieważ moje pytanie dotyczy szyfrów szyfrujących i skrótów. Wziąłem „wycieczkę” po tym obszarze i ma to dosłownie w polu „Pytania, które powinieneś zadać:”. Spójrz, jeśli chcesz.
— Akito

Dlatego nie postawiłem pytania w Unixie i Linuksie, ponieważ byłoby tam nie na temat ....
— Akito

zawiera krótki opis tego, czym dokładnie są różnice między tymi różnymi sposobami. Jest to jedyna część twojego pytania, która dotyczy tematu. Jaka jest główna różnica między AES a Twofish? Cóż, AES używa sieci permutacji substytucyjnej, podczas gdy Twofish używa sieci Feistel. W oparciu o te informacje powinieneś wyraźnie wybrać AES, ponieważ w zasadzie nie ma nic złego w sieci Feistel.
— Depressed

Odpowiedzi:


7

To zależy od twojego jądra, więc „ See / proc / crypto ” powinno być „odpowiedzią”. Strona man cryptsetup mówi:

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.

Jednak mój /proc/cryptonie wspomina o żadnym wężu lub xts (aes), więc zamiast tego poleciłbym zobaczyć, jakie cryptsetup benchmarkraporty (i pokazałby także (ram) prędkości). Na przykład:

$ 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

Skróty to pierwsze kilka linii (sha1, sha256, sha512, ripemd160, whirlpool). Szyfry znajdują się pod nagłówkiem Algorytmu.

Spojrzenie na wartości domyślne daje dobre wyobrażenie o tym, co uważane jest za „całkiem dobre”:

$ 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

A użycie większego rozmiaru klucza (z --key-size) powinno być silniejsze, jeśli nieco wolniejsze.

   --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
Właśnie na to narzekałem ... / proc / crypto jest wysoce nieczytelny, a zatem bezużyteczny. Niektóre szyfry są nawet dwa razy na liście i nie wiem dlaczego.
— Akito,

Ach, nie byłem pewien, nie było tego pytania, ale to z pewnością problem, nawet wyszukiwanie w sieci dotyczące / proc / crypto nie ujawnia żadnych oczywistych przewodników. Dostrzegam pewne różnice i myślę, że cryptsetup używa tylko szyfrów blokowych do szyfrowania bloków dyskowych, więc te typu: blkcipher wydają się logiczne. Ale zauważam też, że mój nie wspomina o żadnym wężu ani xts-aes ... ale mam inny pomysł, który może być lepszy,
— zredaguję

2

w odniesieniu do pracy użytkownika notdavidcronenberg: Jedyną odpowiedzią, jaką znalazłem, jest dokument LUKS On-Disk Format Specification (PDF).

Prawidłowe nazwy szyfrów

Prawidłowe tryby szyfrowania

  • ecb Wyjście szyfru jest używane bezpośrednio.
  • cbc-plainSzyfr działa w trybie CBC. Łańcuch CBC jest odcinany w każdym sektorze i ponownie inicjowany z numerem sektora jako wektorem początkowym (konwertowanym na 32-bitowy i na little-endian). Ten tryb jest określony w [Fru05b], rozdział 4.
  • cbc-essiv:{hash}Szyfr jest obsługiwany w trybie ESSIV przy użyciu skrótu do generowania klucza IV dla oryginalnego klucza. Na przykład, gdy używasz sha256 jako skrótu, specyfikacją trybu szyfrowania jest „cbcessiv: sha256”. ESSIV jest określony w [Fru05b], rozdział 4.
  • xts-plain64 plain64 to 64-bitowa wersja zwykłego wektora początkowego

Prawidłowe specyfikacje skrótów


lista nie jest kompletna superuser.com/a/1450671/446140
— intika
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.