Mit mit dem Tool cryptsetup können alle Optionen von dm-crypt/LUKS ausgereizt werden, wenn man Spaß an einem Full-Text Adventure auf der Linux Konsole hat.
Verschlüsselten Container erstellen
Im folgenden werden die einzelnen Schritte für die Erstellung des Containers anhand einer verschlüsselten Imagedatei erläutert.
Soll eine Partition (Festplatte oder USB-Stick) verschlüsselt werden, entfallen die Schritte 1 und 8. Das als Beispiel genutzte Device
"/dev/loop5" ist durch die Partition zu ersetzen, beispielsweise
"/dev/sdb1" für die erste Partition auf dem USB-Stick.
- Zuerst ist eine leere Imagedatei zu erstellen. Im Beispiel wird es unter dem Dateinamen "geheim.luks" im aktuellen Verzeichnis erstellt. Der Parameter "count" legt die Größe in MByte fest. Anschließend ist das Image als Loop-Device einzubinden.
# dd if=/dev/zero of=geheim.luks bs=1M count=100
# losetup -f
/dev/loop5
# losetup /dev/loop5 geheim.luks
Das Kommando "losetup -f" ermittelt das nächste freie Loop-Device (hier: loop5).
- Die ersten 2 MByte sind mit Zufallswerten zu füllen. Das Füllen der gesamten Datei würde sehr lange dauern und ist nicht nötig:
# dd if=/dev/urandom of=/dev/loop5 bs=1M count=2
- Anschließend erfolgt die LUKS-Formatierung mit der Festlegung der Verschlüsselung. Die Option -y veranlaßt eine doppelte Abfrage des Passwortes:
# cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y /dev/loop5
- Das formatierte Device wird dem Device-Mapper unterstellt. Dabei wird das zuvor eingegebene Passwort abgefragt. Der <name> kann frei gewählt werden. Unter /dev/mapper/<name> wird später auf den verschlüsselten Container zugegriffen:
# cryptsetup luksOpen /dev/loop5 <name>
- Wer paranoid ist, kann das verschlüsselte Volume mit Zufallszahlen füllen. Der Vorgang kann in Abhängigkeit von der Größe der Containerdatei sehr lange dauern:
# dd if=/dev/urandom of=/dev/mapper/<name>
- Ein Dateisystem wird auf dem Volume angelegt:
# mkfs.ext4 /dev/mapper/<name>
- Das Volume ist nun vorbereitet und wird wieder geschlossen:
# cryptsetup luksClose <name>
- Die Containerdatei wird ausgehängt:
# losetup -d /dev/loop5
Verschlüsselten Datenträger öffnen und schließen
Um eine verschlüsselte Partition auf einem USB-Stick auf der Kommandozeile zu öffnen, sind zwei Schritte als
"root" nötig.
- Im ersten Schritt wird das verschlüsselte Device dem Device-Mapper zu unterstellt. Der "name" kann frei gewählt werden. Zusätzlich kann man ein Keyfile nutzen.
> sudo cryptsetup open --type luks /dev/sdc1 <name> [keyfile]
Enter LUKS passphrase:
- Danach kann es mit "mount" in das Dateisystem eingehängt werden, zB. nach "/mnt".
> sudo mount /dev/mapper/<name> /mnt
Das Schließen des Containers erfolgt in umgekehrter Reihenfolge. Dabei werden alle Keys für den Zugriff auf den Container im Kernel sicher gelöscht (wipe).
> sudo umount /mnt
> sudo cryptsetup close <name>
Verschlüsselte Containerdatei öffnen und schließen
Das Öffnen einer Containerdatei auf der Kommadozeile erfordert drei Schritte als
"root". Als erstes ist die verschlüsselte Imagedatei als Loop Device einzuhängen. Das Loop-Device kann dann wie eine verschlüsselte Partition behandelt werden.
> sudo losetup /dev/loop0 geheim.luks
> sudo cryptsetup open --type luks /dev/loop0 <name> [keyfile]
Enter LUKS passphrase:
> sudo mount /dev/mapper/<name> /mnt
Das Schließen des Containers erfolgt in umgekehrter Reihenfolge.
> sudo umount /mnt
> sudo cryptsetup close <name>
> sudo losetup -d /dev/loop0
Truecrypt und Veracrypt Container öffnen
cryptsetup kann auch Truecrypt und Veracrypt Container öffnen. Auf einem aktuellen Linux System muss man also keine zusätzliche Software installieren, wenn man gelegentlich Truecrypt oder Veracrypt Container öffnen möchte. Eine Truecrypt verschlüsselte Partition auf dem USB-Stick öffnet man in zwei Schritten:
> sudo cryptsetup [Optionen] open --type tcrypt /dev/sdc1 <name>
Enter passphrase:
> sudo mount /dev/mapper/<name> /mnt
Als [Optionen] können zusätzlich folgende Parameter angegeben werden:
--veracrypt verwendet man für Container im Veracrypt Format.
--key-file kann man mehrfach nutzen, um Schlüsseldateien anzugeben.
--tcrypt-hidden öffnet den Hidden Container im Truecrypt Volume.
--tcrypt-system ist für verschlüsselte Systempartionen mit Boot Manager zu nutzen.
--readonly muss man nicht erklären.
Wenn man eine Containerdatei öffnen möchte, dann ist die Datei zuerst als Loop Device einzuhängen. Das Loop-Device kann dann wie eine Partition behandelt werden.
> sudo losetup /dev/loop1 geheim.tc
> sudo cryptsetup [Optionen] open --type tcrypt /dev/loop1 <name>
Enter passphrase:
> sudo mount /dev/mapper/<name> /mnt
Das Schließen des Container erfolgt wie oben bei LUKS.
Bis zu 8 Passwörter und Keyfiles verwenden
Mit
root-Rechten ist es auf der Kommandozeile möglich, bis zu 8 Passwörter für das Öffnen eines Containers festzulegen und einzelne Passwörter wieder zu löschen.
Für das Hinzufügen eines Passwortes zu der verschlüsselten Containerdatei ist diese zuerst einzuhängen, beispielsweise als
/dev/loop/5. Der Schritt entfällt für Partitionen:
# losetup /dev/loop/5 geheim.luks
Das Hinzufügen eines Passwortes und damit eines neuen Keyslots erfolgt mit
luksAddKey, wobei als <device> beispielsweise
/dev/loop5 für eine eingebundene Containerdatei oder
/dev/hda5 für eine Festplattenpartition anzugeben ist. Das Keyfile ist optional.
# cryptsetup --key-slot X luksAddKey <device> [keyfile]
Mit der Option
--key-slot kann ein bestimmter Keyslots X = [0..7] angegeben werden, wenn man den Überblick behalten möchte, welcher Key unter welcher Nummer gespeichert wird.
Ein Keyslot kann mit folgendem Kommando wieder entfernt werden:
# cryptsetup luksKillSlot <device> <slot>
Als <slot> ist die Nummer des Keyslots anzugeben, eine Zahl zwischen 0..7. Es ist also nötig, sich zu merken, welches Passort auf welchen Keyslot gelegt wurde. Eine Übersicht, welche Keyslots belegt und welche noch frei sind, liefert
luksDump:
# cryptsetup luksDump <device>
LUKS header information for <device>
...
Key Slot 0: DISABLED
Key Slot 1: ENABLED
Iterations:
Salt:
Key material offset:
AF stripes:
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED