LUKS – Externe Speichermedien verschlüsseln

Die Verschlüsselung externer Speichermedien ist die notwendige Ergänzung zur Verschlüsselung des Betriebssystems bzw. der Benutzerdaten. Eine Möglichkeit zur Verschlüsselung externer Datenträger bietet dm-crypt/LUKS (Linux Unified Key Setup). Dieses ist seit vielen Jahren im Linux-Kernel implementiert, ausgereift und stabil. Bisher unterstützt jedoch kein anderes Betriebssystem LUKS, weshalb sich sein Einsatz nur für homogene Linux-Umfelder empfiehlt. In heterogenen Umgebungen ist gegenwärtig VeraCrypt anzuraten.

Es widerspricht zwar der Idee eines Backups den Zugang zu selbigem einzuschränken, eine Verschlüsselung von Backupmedien ist aber aus Gründen der Sicherheit absolut notwendig. Es macht keinen Sinn, das Betriebssystem mit allen Daten zu verschlüsseln, wenn das Abbild des Betriebssystems auf einer externen Festplatte – am besten noch in unmittelbarer Nähe zur verschlüsselten Hardware – verfügbar ist. Dies gilt natürlich umso mehr für transportable Medien wie USB-Speichersticks.

Obwohl LUKS prinzipiell die vollständige Verschlüsselung eines Speichermediums unterstützt, hat es einige Limitationen. Im Gegensatz zu Veracrypt (früher TrueCrypt) bietet es keine Möglichkeit zur glaubhaften Abstreitbarkeit. Jedes verschlüsselte Volume hat einen Header-Bereich, der im Klartext geschrieben ist. Die eigentlichen Daten sind zwar geschützt, aber es ist für Dritte ersichtlich, dass auf dem Speichermedium ein LUKS-Volume existiert.

Das Verfahren ist für alle Medien identisch und kann daher von der SD-Karte bis zur externen Festplatte angewandt werden.

Externes Speichermedium mit LUKS verschlüsseln (Konsole)

Vorab ist ein Backup auf ein drittes Medium vorzunehmen. Falsche Formatierungs- oder Verschlüsselungsbefehle können zum Verlust aller Daten führen!

Die meisten Distributionen bieten keine ausgereifte grafische Speichermedienverwaltung, die eine zuverlässige Verschlüsselung selbiger ermöglicht. Es ist deshalb in den meisten Fällen notwendig, auf die Konsole auszuweichen.

Im ersten Schritt sorgt man dafür, dass das Betriebssystem mit LUKS umgehen kann. Normalerweise liefern Linux-Distributionen die entsprechende Pakete aus, bei Debian ist es aber z. B. in der minimalen Netzwerkinstallation nicht enthalten.

# apt-get install cryptsetup

# modprobe dm-crypt

Jetzt ist das Speichermedium, z.B. also die externe Festplatte, die neu formatiert werden soll, an den PC anzuschließen. Der Pfad /dev/sdx ist im Folgenden durch den Pfad zur externen Festplatte zu ersetzen.


Exkurs: Verschlüsselung

Im Folgenden wird eine Verschlüsselung auf Basis des aes-xts Algorithmus mit 512 MB vorgenommen. Dies dürfte für die meisten Systeme ein guter Kompromiss aus Sicherheit und Schnelligkeit sein. Man kann dies jedoch mittels Cryptsetup überprüfen und ggf. einen anderen Algorithmus wählen.

Die Ausgabe sieht dann so aus:

$ cryptsetup benchmark

# Die Tests sind nur annähernd genau, da sie nicht auf die Festplatte zugreifen.
PBKDF2-sha1 946368 iterations per second
PBKDF2-sha256 590414 iterations per second
PBKDF2-sha512 466448 iterations per second
PBKDF2-ripemd160 560735 iterations per second
PBKDF2-whirlpool 179305 iterations per second
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 313,3 MiB/s 1762,6 MiB/s
serpent-cbc 128b 60,1 MiB/s 307,2 MiB/s
twofish-cbc 128b 86,8 MiB/s 178,7 MiB/s
aes-cbc 256b 361,9 MiB/s 1552,5 MiB/s
serpent-cbc 256b 71,7 MiB/s 423,9 MiB/s
twofish-cbc 256b 135,5 MiB/s 267,2 MiB/s
aes-xts 256b 1343,1 MiB/s 1176,8 MiB/s
serpent-xts 256b 356,9 MiB/s 370,8 MiB/s
twofish-xts 256b 241,4 MiB/s 229,3 MiB/s
aes-xts 512b 640,9 MiB/s 674,9 MiB/s
serpent-xts 512b 394,3 MiB/s 353,4 MiB/s
twofish-xts 512b 205,2 MiB/s 200,9 MiB/s

Wie zu sehen ist, hat auf der Test-hardware AES-XTS die besten Werte bei der Ver- und Entschlüsselung. 


# cryptsetup -c aes-xts-plain -s 512 luksFormat /dev/sdx

# cryptsetup luksOpen /dev/sdx luks

Es ist zu beachten, dass eine Verschlüsselung nur so gut ist wie das Passwort, das man verwendet. Nun muss die Platte noch formatiert werden. Die Wahl des Dateisystems kann nach persönlicher Präferenz erfolgen. Linux-Distributionen setzen in vielen Fällen noch ext4 ein, weshalb in dieser Anleitung die Formatierung damit erfolgt.

# mkfs.ext4 /dev/mapper/luks

# umount /dev/mapper/luks

Nun die Festplatte ausstecken und wieder einstecken. Eure Desktopumgebung bzw. der Dateimanager sollten euch nun nach dem Passwort fragen, dass man ggf. im Schlüsselbund des Betriebssystems speichern kann. Jedes gespeicherte Passwort kann aber ein Sicherheitsrisiko darstellen.