Festplatte Verschlüsseln (Fortgeschrittene)

Published on 2018-04-19 by Malte

Der folgende Artikel, ist in Zusammenarbeit mit GeNTooFReak entstanden.

Im folgenden Artikel möchte ich noch mal auf die Verschlüsselung von Festplatten eingehen, hier besonders auf Themen für Fortgeschriettene, wie z.B. verschiedene Ciphersuiten, verschiedene Passphrases und Backup von Luks Header Daten.

Ciphersuiten

Im Anfängerartikel haben with den Cipher aes-xts-plain64 verwendet, was AES-256Bit ist, in Verwendung mit

Jedoch kennt cryptseup noch einige andere Ciphersuiten, die man durch den Befehl

cryptsetup benchmark

sich anzeigen lassen kann, und gleichzeitig ablesen kann, welcher Algorithmus am schnellsten auf dem jeweiligen PC ist. Auf Grundlage der unterschiedelichen CPU's die es aktuell auf dem Markt gibt, die unterschiedliche Standards unterstützen, fallen die Ergebnisse bei jedem PC anders aus. Bei mir bekomme ich folgendes Ergebnis:

root@DebLin:/home/malte# cryptsetup benchmark
# Die Tests sind nur annähernd genau, da sie nicht auf den Datenträger zugreifen.
PBKDF2-sha1      1236528 iterations per second for 256-bit key
PBKDF2-sha256    1409376 iterations per second for 256-bit key
PBKDF2-sha512    1114320 iterations per second for 256-bit key
PBKDF2-ripemd160  919803 iterations per second for 256-bit key
PBKDF2-whirlpool  619725 iterations per second for 256-bit key
argon2i       4 iterations, 1003288 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
argon2id      4 iterations, 992248 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
#     Algorithm | Key |  Encryption |  Decryption
        aes-cbc   128b   914,7 MiB/s  2718,1 MiB/s
    serpent-cbc   128b    75,6 MiB/s   570,1 MiB/s
    twofish-cbc   128b   168,0 MiB/s   289,0 MiB/s
        aes-cbc   256b   699,2 MiB/s  2243,0 MiB/s
    serpent-cbc   256b    78,6 MiB/s   572,5 MiB/s
    twofish-cbc   256b   168,9 MiB/s   296,2 MiB/s
        aes-xts   256b  1536,2 MiB/s  1520,9 MiB/s
    serpent-xts   256b   534,2 MiB/s   552,9 MiB/s
    twofish-xts   256b   299,5 MiB/s   303,1 MiB/s
        aes-xts   512b  1369,9 MiB/s  1378,5 MiB/s
    serpent-xts   512b   557,8 MiB/s   546,9 MiB/s
    twofish-xts   512b   297,1 MiB/s   303,8 MiB/s

Wie man erkennt, ist bei mir im 512Bits Bereich aes-xts das schnellste Ergebnis. Bei GeNtooFReaK ist es zum Beispiel serpent-xts. Hier muss man für sich persönlich die Schnittmenge zwischen Schnelligkeit, Sicherheit und Wunschalgorithmus treffen.

Passphrases

cryptsetup unterstützt mehrere Passwörter für ein Volumen/Container.

KeySlots

cryptsetup verwaltet die Passwörter in KeySlots, bedeutet beim Aufrufen des folgenden Befehls:

cryptsetup luksDump /dev/sdb1

Sollte bei einem Passwort, nur ein Key Slot belegt sein:

Key Slot 0: ENABLED
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

Passwort ändern

Natürlich kann man auch das aktuelle Passwort ändern. Um das aktuelle Passwort zu ändern, gibt man einfach folgenden Befehlt ein:

cryptsetup luksChangeKey /dev/sdb1

/dev/sdb1 ist natürlich der entsprechende Container. Durch das angeben des Slots --key-slot 2, kann man gezielt das Passwort eines Slots ändern.

Passwort hinzufügen

Um ein weiteres Passwort zum öffnen des Containers/Volumens hinzuzufügen, benötigen wir folgenden Befehl:

cryptsetup luksAddKey /dev/sdb1

/dev/sdb1 ist natürlich der entsprechende Container. Durch das angeben des Slots --key-slot 2, kann man gezielt das Passwort zu einem bestimmten Slot hinzufügen.

Passwort löschen

Um ein Passwort zu löschen, müssen wir einen entsprechnenden KeySlot angeben:

cryptsetup luksKillSlot /dev/sdb1 2

/dev/sdb1/ ist natürlich der entsprechende Container.

Backup Header

Luks bietet die Möglichkeit, die Header Informationen vom Container/Volume zu sichern. So können selbst bei beschädigeten Header Informationen (Jemand steckt unbedacht die Festplatte an einen Windows Pc und klickt auf reparieren) wiederhergestellt werden.

Backup

Um ein Backup durchzuführen benötigen wir folgenden Befehl:

cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file /home/malte/sdb1-header.backup

Restore

Um die Informationen wiederherzustellen, benötigen wir folgenden Befehl:

cryptsetup luksHeaderRestore /dev/sdb1 --header-backup-file /home/malte/sdb1-header.backup

---

Ich hoffe die folgenden Informationen helfen euch, noch ein bisschen besser Luks und die Verschlüsselung von Festplatten zu verstehen.