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.