Daten|teiler
Kopieren als Kulturtechnik

Verschlüsseln und sichern

11. Oktober 2008 von Christian Imhorst

Da ich viel und gerne an neu installierten Betriebssystemen herumbastel, brauche ich eine gut funktionierende Backup-Lösung für meine Daten. Ich sichere sie auf einer externen Festplatte. Sollte sie mal geklaut werden, und um meine Privatssphäre zu schützen (Emails, Bank-Daten etc.), habe ich sie komplett mit cryptsetup verschlüsselt und die Daten mit rsync gesichert. Dabei bedient sich cryptsetup der sogenannte „On The Fly Verschlüsselung“, Daten werden nur im Arbeitsspeicher ver- und entschlüsselt, was für mehr Geschwindigkeit, aber auch Sicherheit sorgt, da man nicht durch Daten-Reste auf der Festplatte auf den Inhalt der verschlüsselten Dateien zurückschließen kann.

Verschlüsseln

Mit cryptsetup kann man ganze Partitionen oder Gerätedaten ver- und entschlüsseln, ein gutes Werkzeug also, um eine externe USB-Festplatte abzusichern. Nachdem ich die Festplatte eingesteckt hatte, wurde sie erstmal automatisch gemountet. Im eingehängten Zustand kann das Dateisystem der Platte nicht bearbeitet werden, weshalb sie wieder ausgehängt werden muss:

umount /media/disk

Die Bezeichnung des Einhängepunkts kann dabei von Betriebssystem zu Betriebssystem variieren. Welche Gerätedateien wie gemountet sind, erfährt man mit dem Befehl mount in der Konsole. Damit man mit cryptsetup verschlüsseln kann müssen die Module dm-crypt, dm-mod und aes, bzw. aes-i586, ein speziell an Pentium-Prozessoren angepasstes Modul, mit dem Befehl modprobe geladen werden, falls sie es noch nicht sind. Ob sie es sind, kann man z.B. mit lsmod | grep aes überprüfen.

Für alle folgenden Befehle benötigt man übrigens Root-Rechte. Unter Ubuntu bekommt man sie mit sudo -s, alle anderen werden einfach Benutzer root.

Auf der externen Festplatte wird im ersten Schritt ein verschlüsseltes LUKS-Dateisystem angelegt. In meinem Fall heißt die Gerätedatei /dev/sdc1. Die Bezeichnung muss man durch die der entsprechenden Partition auf dem heimischen PC ersetzen. LUKS (Linux Unified Key Setup) ist übrigens ein Linux-Standard für Festplattenverschlüsselung und eine Erweiterung für cryptsetup. Aber Achtung: Der Befehl löscht sämtliche Dateien auf der externen Festplatte unwiederbringlich! Daher sollte man vorher ein Backup machen, falls nötig.

cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sdc1

Das Argument „-c“ legt den Verschlüsselungsalgorithmus fest (in meinem Fall AES; aes-xts-plain ist aber erst in neueren Kerneln vorhanden, bei älteren Kerneln sollte man aes-cbc-essiv verwenden), „-y“ sorgt für eine doppelte Passwortabfrage, wobei die zweite Abfrage mit der ersten identisch sein muss, und „-s“ definiert die Schlüssellänge (bei mir 512 Bit). Danach muss man mit „YES“ in Großbuchstaben bestätigen, die Passphrasse zweimal eingeben und die Partition wird verschlüsselt. Am Ende sollte dann die Ausgabe „Command successful“ erscheinen.

Auf der verschlüsselte Partition wird nun ein Dateisystem erstellt. Dazu wird die Festplatte unverschlüsselt in das System eingehängt:

cryptsetup luksOpen /dev/sdc1 crypto

Der Name „crypto“ kann dabei beliebig sein. Im Verzeichnis /dev/mapper gibt es nun die Datei crypto, die sich wie eine normale Festplatte ansprechen lässt. Auf der erstellt man dann das Dateisystem, z.B. ext3:

mkfs -t ext3 /dev/mapper/crypto

Will man einen USB-Stick oder SSD-Festplatte verschlüsseln, sollte man das Dateissystem mit ext2 formatieren. Die Journaling-Funktion des ext3-Dateisystem belastet den Flashspeicher doch recht stark und verkürzt dadurch die Lebensdauer. Jetzt kann man die verschlüsselte Platte ins System einhängen und mit dem Backup starten:

mount /dev/mapper/crypto /mnt/

Sichern

Wenn man einfach das komplette Home-Verzeichnis sichern will, führt man folgenden Befehl als einfacher Benutzer aus:

rsync -avz --progress --delete /home /dev/mapper/crypto

Nach dem Backup sollte der Datenträger wieder sauber ausgehangen

umount /mnt

und der Container abschließend verschlossen werden:

cryptsetup luksClose crypto

Um später wieder an die Daten zu gelangen, hängt man die externe Festplatte einfach wieder an und öffnet den verschlüsselten Container als Benutzer root mit

cryptsetup luksOpen /dev/sdc1 crypto

in der Konsole und gibt seine Passphrase ein. Danach muss das Dateisystem nur noch eingehängt werden, wobei das auf modernen Linux-System meist schon automatisch geschieht. So wird bei mir die externe Festplatte gleich wieder nach /media/disk unter sidux gemountet. Daher lautet mein neuer Befehl zum synchronisieren:

rsync -avz --progress --delete /home /media/disk/

Danach wird die Platte wieder ausgehängt mit

umount /media/disk/

und der Container verschlossen.

cryptsetup luksClose crypto

Unter Betriebssystemen mit einem aktuellerem Gnome-Desktop wie Ubuntu 8.04 Hardy Heron läuft das Einhängen ein wenig komfortabler.

Bitte Passphrase eingeben.

Bitte Passphrase eingeben.

Der Gnome-Volume-Manager erkennt automatisch, dass es sich bei der frisch angeschlossenen externen Festplatte um eine verschlüsseltes Medium handelt und startet ein Fenster, das zur Eingabe der Passphrase auffordert.

Geschrieben in Gnu/Linux, Krypto