Liste der verfügbaren Verschlüsselungsmethoden für LUKS

10

Ich suchte nach einer gültigen und immer noch aktuellen Methode zur Verschlüsselung von Festplatten. Nach einigen Recherchen bin ich auf LUKS gestoßen und habe beschlossen, es auszuprobieren. Also habe ich einige Beispiele nachgeschlagen, wie man eine Festplatte damit richtig verschlüsselt:

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

Der Teil --cipher und --hash war für mich am interessantesten, deshalb habe ich versucht, mich über verschiedene Chiffren und Hashes zu informieren, die speziell für LUKS verwendet werden können. Ich konnte keine nützlichen Informationen finden, außer eine Datei zu öffnen, in der die verfügbaren Verschlüsselungsformulare in einer maschinenfreundlichen Formatierung für das derzeit verwendete Linux angezeigt werden. Aber wie mir gesagt wurde, fehlt wahrscheinlich sogar dieser Datei das volle Ausmaß aller Verschlüsselungsmethoden, abgesehen davon, dass es für jemanden, der sich sowieso nicht täglich damit befasst, sehr schwer zu lesen ist.

Meine Frage: Gibt es eine vollständige Liste der Chiffren / Hashes für die LUKS-Verschlüsselung?

Eine, die mir einfach zeigt, was ich wählen kann ... und vielleicht eine kurze Beschreibung gibt, was genau die Unterschiede zwischen diesen verschiedenen Wegen sind.

Akito
quelle
1
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da es um die Verwendung und Konfiguration von LUKS und den Linux-Kernel geht, nicht um die Kryptografie, die diese Tools verwenden. Es wäre ein Thema unter Unix und Linux . Ich habe diese Frage für die Migration markiert. Bitte senden Sie sie nicht erneut, es sei denn, sie wird ohne Migration geschlossen.
Gilles 'SO - hör auf böse zu sein'
Ich habe mich speziell für den Bereich Kryptographie entschieden, da sich meine Frage an Chiffren und Hashes richtet. Ich habe die "Tour" für dieses Gebiet gemacht und sie steht buchstäblich im Slot "Fragen, die Sie stellen sollten:". Schlagen Sie nach, wenn Sie wollen.
Akito
Deshalb habe ich die Frage nicht in Unix & Linux gestellt, weil sie dort nicht zum Thema gehören würde ...
Akito
gibt eine kurze Beschreibung der genauen Unterschiede zwischen diesen verschiedenen Methoden. Dies ist der einzige Teil Ihrer Frage, der sich mit dem Thema befasst. Was ist der Hauptunterschied zwischen AES und Twofish? Nun, AES verwendet ein Substitutionspermutationsnetzwerk, während Twofish ein Feistel-Netzwerk verwendet. Basierend auf diesen Informationen sollten Sie AES eindeutig auswählen, da an einem Feistel-Netzwerk im Prinzip nichts auszusetzen ist.
DepressedDaniel

Antworten:

7

Das liegt im Grunde an Ihrem Kernel, also sollte " See / proc / crypto " "die Antwort" sein. Die Cryptsetup-Manpage sagt Folgendes:

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.

Ich /proc/cryptoerwähne jedoch keine Schlange oder xts (aes), daher würde ich stattdessen empfehlen, zu sehen, welche cryptsetup benchmarkBerichte (und es würde auch (RAM-) Geschwindigkeiten anzeigen). Zum Beispiel:

$ 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

Die Hashes sind die ersten Zeilen (sha1, sha256, sha512, ripemd160, Whirlpool). Chiffren befinden sich unter dem Algorithmus-Header.

Wenn Sie sich die Standardeinstellungen ansehen, erhalten Sie eine gute Vorstellung davon, was auch als "ziemlich gut" angesehen wird:

$ 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

Und die Verwendung einer höheren Tastengröße (mit --key-size) sollte nur stärker, wenn auch etwas langsamer sein.

   --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
quelle
2
Genau darüber habe ich mich beschwert ... / proc / crypto ist höchst unlesbar und daher nutzlos. Einige Chiffren sind sogar zweimal in der Liste und ich weiß nicht warum.
Akito
Ah, ich war mir nicht sicher, war nicht in Frage, aber das ist definitiv ein Problem, selbst eine Websuche über / proc / crypto enthüllt keine offensichtlichen Anleitungen. Ich bemerke einige Unterschiede, und ich denke, dass cryptsetup nur Blockchiffren zum Verschlüsseln von Plattenblöcken verwendet, daher scheinen die "Typ: blkcipher" -Blöcke logisch. Aber ich bemerke auch, dass meine keine Schlange oder xts-aes erwähnt ... aber ich habe eine andere Idee, die besser sein könnte, ich werde sie in der Antwort bearbeiten
Xen2050
2

in Bezug auf die Arbeit des Benutzers notdavidcronenberg: Die einzige Antwort, die ich gefunden habe, ist im Dokument LUKS On-Disk Format Specification (PDF).

Gültige Chiffrennamen

Gültige Verschlüsselungsmodi

  • ecb Die Verschlüsselungsausgabe wird direkt verwendet.
  • cbc-plainDie Verschlüsselung wird im CBC-Modus betrieben. Die CBC-Verkettung wird in jedem Sektor abgeschnitten und mit der Sektornummer als Anfangsvektor neu initialisiert (konvertiert in 32-Bit und in Little-Endian). Dieser Modus ist in [Fru05b], Kapitel 4 angegeben.
  • cbc-essiv:{hash}Die Verschlüsselung wird im ESSIV-Modus unter Verwendung von Hash zum Generieren des IV-Schlüssels für den Originalschlüssel betrieben. Wenn Sie beispielsweise sha256 als Hash verwenden, lautet die Spezifikation für den Verschlüsselungsmodus "cbcessiv: sha256". ESSIV ist in [Fru05b], Kapitel 4 angegeben.
  • xts-plain64 plain64 ist eine 64-Bit-Version des einfachen Anfangsvektors

Gültige Hash-Spezifikationen

opinion_no9
quelle
die Liste ist nicht vollständig superuser.com/a/1450671/446140
intika