it-swarm-eu.dev

Für LUKS: Die am meisten bevorzugte und sicherste Chiffre?

Ich bin dabei, zwei meiner Festplatten mit LUKS zu verschlüsseln, da ich es nicht wirklich selbst tun kann, verwende ich die Anleitung im Arch Linux-Wiki (hier zu finden) . In einem Beispiel in der Anleitung lautet die angegebene Chiffre aes-xts-plain mit einer Schlüsselgröße von 512 Bit. Ist aes-xts-plain die beste Wahl oder gibt es eine bessere Chiffre? Ich würde Sicherheit der Geschwindigkeit vorziehen.

22
Peter

Es gibt drei Komponenten, die Sie bei jeder Verwendung von Blockverschlüsselungen verstehen müssen und die hier explizit gelten:

  • Das Blockverschlüsselungsprimitiv. Dies könnte eine Ihrer bekannten AES-Kandidaten-Chiffren sein, wie z. B. AES, Serpent, Twofish, Blowfish, ...
  • Die Betriebsart. Wenn Blockverschlüsselung unverändert verwendet wird, wird Block für Block als elektronisches Codebuch bezeichnet. Es gibt jedoch auch andere Modi wie die Verkettung von Verschlüsselungsblöcken und den Zählermodus mit ihren verschiedenen Vor- und Nachteilen.
  • Das Initialisierungsvektor-Generierungsschema wie essiv , das verschiedene Fingerabdrucktechniken bekämpft, die Angreifern gegen CBC zur Verfügung stehen, die für die Festplattenverschlüsselung verwendet werden.

Wenn Sie also eine Option auswählen, z. aes-cbc-essiv, Sie fragen tatsächlich nach AES, das im CBC-Modus mit verschlüsselten IVs verwendet wird, die auf einer Block-ID basieren, während aes-xts-plain verwendet AES im XTS-Modus mit einfachen alten IVs, die aus einigen Informationen pro Block generiert wurden.

Es läuft darauf hinaus, ob Sie darauf vertrauen, dass XTS eine ausreichende Beständigkeit gegen Bleaching (das von ESSIV bekämpft wird) aufweist, das in den Verschlüsselungsmodus eingebrannt wurde. Zu diesem Zeitpunkt ist XTS ein moderner Modus mit mehr technischen Vorteilen, wurde jedoch weniger kryptografischen Tests unterzogen als beispielsweise CBC.

Ein Punkt, den Sie bei XTS aus Wikipedia beachten sollten:

Aufgrund der Aufteilung müssen Benutzer, die eine AES 256- und AES 128-Verschlüsselung wünschen, Schlüsselgrößen von 512 Bit bzw. 256 Bit wählen.

Bei diesem Modus muss sorgfältig darauf geachtet werden, Schlüsselgrößen zu generieren, sodass jeder Block einen Schlüssel mit der gewünschten Bitgröße verwendet. Ich habe mir die LUKS-Informationen nicht angesehen, um zu sehen, wie sie oder Cryptsetup ihre Schlüssel aufteilen. Dies möchten Sie möglicherweise tun, um sicherzustellen, dass Sie das gewünschte Sicherheitsniveau haben. Aus diesem Grund wurde gemäß Ihrer Anleitung eine 256-Bit-Verschlüsselung pro Block verwendet (wobei der 512-Schlüssel in zwei Teile aufgeteilt ist).

16
user2213

Wie in Ihrem ursprünglichen Beitrag zu SU erwähnt, sollte die erforderliche Sicherheitsstufe für die meisten Zwecke so hoch sein, dass ein Angreifer keine vernünftige Chance hat, sie in einem nützlichen Zeitrahmen zu brechen (z. B. für Ihre persönlichen Daten möchten Sie möglicherweise eine 10) Jahrsspanne).

In diesem Beispiel wird davon ausgegangen, dass AES-XTS-PLAIN für einen angemessenen Zeitraum gegen einen Angreifer resistent ist, sofern Sie keine nationalen Geheimnisse oder sensiblen Unternehmensdaten auf Ihrem PC haben.

8
Rory Alsop

Die am meisten bevorzugte Verschlüsselung ist aes-xts-plain64 Und wird standardmäßig in der gesamten Distribution (RedHat, CentOS, Oracle Linux, Ubuntu) verwendet. Die meisten Benutzer verwenden aes, da viele Appliances, Anwendungen, die diese unterstützen, und die Leistung von aes auf Intel Processor beschleunigt werden können. Und diese Art der Beschleunigungsfunktion bietet aes viele Vorteile gegenüber anderen Chiffren. Sie können den Leistungsvergleich zwischen simple implementation of aes Und hardware accelerated aeshier lesen. Und eine Sache die Erwähnung, wenn Sie aes verwenden, gibt es einen weiteren Vorteil, dass es weit verbreitet ist. Wenn also ein Angriff im Internet verfügbar ist, werden Sie schnell davon erfahren und wahrscheinlich schnell ein Update erhalten. Und es gibt einige passive Angriffe auf die Implementierung von aes als Festplattenverschlüsselung, die Sie aus hier lesen können

Aber Ihre Wahl kann anders sein. Und während Sie die Chiffre auswählen, müssen Sie nur sicherstellen, dass die von Ihnen gewählte Chiffre noch nicht kompromittiert ist. Sie können es von hier überprüfen. Es gibt andere ähnliche Chiffren, die (aus E/A-Sicht) nicht effizient sind, wie aes, aber gute Alternativen. Wenn Sie nicht vorhaben, aes zu verwenden, gibt es zwei Nachfolger von aes, die sicher alsaes sind Anubis = und Schlange da Sie Geschwindigkeit für Sicherheit opfern können. Glücklicherweise können Sie sie in luks verwenden. Und wenn Sie das Staatsgeheimnis schützen wollen, ist aes wahrscheinlich genug, da aes in FISMA und NIST-Special-Publication-800-53-) bevorzugt wird Revision-4 .

Mit dem Verschlüsselungsalgorithmus sollten Sie meiner Meinung nach den Hashing-Algorithmus ernst nehmen. Wenn Sie schwachen Hash verwenden, hilft Ihnen Ihr supersicherer Algorithmus nicht viel. Weil Hashing eine wichtige Rolle beim luks Verschlüsselungsprozess spielt. Sie sollten also nicht sha1 Verwenden, aber sha512 Ist sicher genug. Sie können aber auch whirepool oder den Gewinner des letzten Passwort-Hashing-Wettbewerbs argon2i verwenden.

Von meine andere Antwort über luks,

Sie können die von Ihren Kerneln unterstützten Chiffren mit dem folgenden Befehl auflisten:

[[email protected]if]# ls /lib/modules/$(uname -r)/kernel/crypto/
algif_rng.ko.xz   blowfish_common.ko.xz   cmac.ko.xz               cts.ko.xz          gf128mul.ko.xz           michael_mic.ko.xz  rsa_generic.ko.xz      tgr192.ko.xz           xts.ko.xz
ansi_cprng.ko.xz  blowfish_generic.ko.xz  crc32_generic.ko.xz      deflate.ko.xz      ghash-generic.ko.xz      pcbc.ko.xz         salsa20_generic.ko.xz  twofish_common.ko.xz   zlib.ko.xz
anubis.ko.xz      camellia_generic.ko.xz  crct10dif_common.ko.xz   des_generic.ko.xz  jitterentropy_rng.ko.xz  pcrypt.ko.xz       seed.ko.xz             twofish_generic.ko.xz
arc4.ko.xz        cast5_generic.ko.xz     crct10dif_generic.ko.xz  dh_generic.ko.xz   khazad.ko.xz             rmd128.ko.xz       serpent_generic.ko.xz  vmac.ko.xz
async_tx          cast6_generic.ko.xz     cryptd.ko.xz             drbg.ko.xz         lrw.ko.xz                rmd160.ko.xz       sha512_generic.ko.xz   wp512.ko.xz
authencesn.ko.xz  cast_common.ko.xz       crypto_null.ko.xz        fcrypt.ko.xz       mcryptd.ko.xz            rmd256.ko.xz       tcrypt.ko.xz           xcbc.ko.xz
authenc.ko.xz     ccm.ko.xz               crypto_user.ko.xz        gcm.ko.xz          md4.ko.xz                rmd320.ko.xz       tea.ko.xz              xor.ko.xz

Sie können die Verschlüsselungen und Hashes, die Sie verwenden können, und deren E/A-Vergleich für luks mit dem folgenden Befehl auflisten:

[[email protected] arif]# cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1       289342 iterations per second for 256-bit key
PBKDF2-sha256     353293 iterations per second for 256-bit key
PBKDF2-sha512     227555 iterations per second for 256-bit key
PBKDF2-ripemd160  233224 iterations per second for 256-bit key
PBKDF2-whirlpool  236165 iterations per second for 256-bit key
argon2i       4 iterations, 917485 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
argon2id      4 iterations, 951672 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
#     Algorithm |       Key |      Encryption |      Decryption
        aes-cbc        128b       642.2 MiB/s      2495.8 MiB/s
    serpent-cbc        128b        89.3 MiB/s       542.6 MiB/s
    twofish-cbc        128b       100.4 MiB/s       343.1 MiB/s
        aes-cbc        256b       477.2 MiB/s      1979.2 MiB/s
    serpent-cbc        256b        89.3 MiB/s       538.9 MiB/s
    twofish-cbc        256b       173.3 MiB/s       343.1 MiB/s
        aes-xts        256b      1668.0 MiB/s      1664.1 MiB/s
    serpent-xts        256b       535.7 MiB/s       523.4 MiB/s
    twofish-xts        256b       332.6 MiB/s       339.8 MiB/s
        aes-xts        512b      1384.5 MiB/s      1380.7 MiB/s
    serpent-xts        512b       539.3 MiB/s       524.4 MiB/s
    twofish-xts        512b       335.0 MiB/s       340.1 MiB/s

Sie können bestimmte Chiffren mit dem folgenden Befehl vergleichen:

[[email protected]]# ciphers="aes-xts serpent-xts anubis-xts"

[[email protected]]# echo "#     Algorithm |       Key |      Encryption |      Decryption";for i in $ciphers ; do cryptsetup benchmark --cipher $i|tail -n 1; done

#     Algorithm |       Key |      Encryption |      Decryption
        aes-xts        256b      1613.9 MiB/s      1642.8 MiB/s
    serpent-xts        256b       538.9 MiB/s       521.9 MiB/s
     anubis-xts        256b       182.0 MiB/s       182.1 MiB/s

4
Muhammad