Was mich an USB-Sticks schon immer gestört hat, war die Tatsache, dass ein gestohlener/verlorener Stick nicht nur Datenverlust bedeutet, sondern dass die Daten auch in die falschen Hände fallen können, sofern sie nicht dementsprechend gesichert waren. GPG ist unangenehm, wenn man den privaten Schlüssel nicht auf einem anderen Medium transportieren kann bzw. bei sich hat. Darum wollte ich eine ordentliche[tm] Lösung: DM-Crypt und Cryptsetup-LUKS.
Gebi aus dem grml-Team hat schon seit längerem cryptsetup mit LUKS-Unterstützung paketiert und kennt sich in diesem Gebiet sehr gut aus. Ich hab ihn also gebeten etwas dementsprechendes zu machen, das Ergebnis ist grml-crypt. grml-crypt ist ein Wrapper rund um cryptsetup-luks und macht es wunderbar einfach in seiner Anwendung. Hier einmal eine Demonstration wie man es nutzt:
Ich möchte eine verschlüsselte Datei namens verschluesselte_datei auf meinem USB-Stick (via /mnt/external1 auf grml eingebunden) erstellen, also rufe ich grml-crypt mit der Option ‘format’ und der zu erstellenden Datei sowie (optional) dem Mountpoint auf:
root@grml ~ # grml-crypt format /mnt/external1/verschluesselte_datei /mnt/test
Initialising file with SECURE mode (taking /dev/urandom as source, this could take some time)
WARNING!
========
This will overwrite data on /dev/loop1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Enter LUKS passphrase:
key slot 0 unlocked.
Successully created vfat on encrypted /dev/loop1
Hat ja tadellos geklappt, schauen wir uns das also mal an und kopieren eine Datei hinein und unmounten /mnt/test nach erfolgreicher Aktion:
root@grml ~ # mount | grep test
/dev/mapper/grml-crypt_verschluesselte_datei on /mnt/test type vfat (rw)
root@grml ~ # cp big_files /mnt/test
root@grml ~ # ls -lah /mnt/test
total 19K
drwxr-xr-x 2 root root 16K Aug 10 12:21 .
drwxr-xr-x 10 root root 1.0K Aug 10 11:38 ..
-rwxr-xr-x 1 root root 1.8K Aug 10 12:21 big_files
root@grml ~ # grml-crypt stop /mnt/test
Die Datei ist wirklich verschlüsselt, wer sie knacken möchte kann das ja mal probieren ;-) – hier aber nur mal ein kurzer Kontrollblick:
root@grml ~ # ls -lah /mnt/external1/verschluesselte_datei
-rwxr-xr-x 1 grml grml 10M Aug 10 12:21 /mnt/external1/verschluesselte_datei
root@grml ~ # file /mnt/external1/verschluesselte_datei
/mnt/external1/verschluesselte_datei: data
Und was macht man mit der Datei nun wenn man sie nutzen will? Mehr als folgender Befehl plus Eingabe der Passphrase ist nicht notwendig:
root@grml ~ # grml-crypt start /mnt/external1/verschluesselte_datei /mnt/test
Enter LUKS passphrase:
key slot 0 unlocked.
root@grml ~ #
Und nach vollendeter Tat ein:
root@grml ~ # grml-crypt stop /mnt/test/
Und das war es auch schon!
grml-crypt bekommt man in Gebis Debian-Repository, es benötigt sh-lib (>= 1.02.00), cryptsetup-luks, realpath und dmsetup (was es nicht bei Debian gibt bekommt man bei Gebi). Es funktioniert nicht nur auf grml sondern auf jedem Debian-System und jedem anderen System das die benötigte Software mitbringt. Und mit der nächsten grml-Release braucht man dann nur mehr eine grml-CD oder einen bootfähigen USB-Stick mit grml. ;-)