Linux: Verschlüsselung von SD‑Speicherkarten mit LUKS
Ein kleiner Exkurs zu einem Thema, das nur am Rande mit Softwareentwicklung zu tun hat: Die Verwendung verschlüsselter SD‑Speicherkarten für Backups unter Linux.
Viele Daten liegen immer noch auf klassischen Festplatten mit drehenden Scheiben und beweglichen Lese-/Schreibköpfen. Diese mechanischen Bauteile sind eine große Schwachstelle, weil sie praktisch jederzeit ihren Dienst einstellen und die darauf gespeicherten Daten zerstören können. Für meinen Home-Server sichere ich die Daten daher in erster Instanz auf eine lokale SD‑Speicherkarte. Solche Karten sind aktuell vergleichsweise günstig, und die Performance ist für den Backup-Anwendungsfall ausreichend.
Damit die Daten bei physischem Zugriff auf den Rechner nicht einfach abgezogen werden können, verschlüssele ich die komplette Speicherkarte mit LUKS – dem Linux Unified Key Setup
. Diese Verschlüsselung ist unter Linux weit verbreitet und in die meisten Desktop-Umgebungen integriert. Ein großer Vorteil ist, dass ich im K‑Fall die Karte einfach in irgendeinen anderen Linux-Rechner einstecken und nach Eingabe des Passworts ohne weitere Software auf die Daten zugreifen kann.
Gerade habe ich meine bisherige Karte durch eine Karte mit höherer Kapazität ersetzt. Aus diesem Anlass beschreibe ich kurz, wie die Einrichtung unter Linux funktioniert. Zunächst habe ich die Daten der alten Speicherkarte auf die Festplatte kopiert, da mein Rechner nur einen Einschub für SD‑Karten besitzt. Nach dem sauberen Entfernen der alten und Einstecken der neuen Karte taucht Letztere als Gerät unter /dev/disk/ auf:
$ ls -l /dev/disk/by-id/
total 0
...
lrwxrwxrwx 1 9 09-27 00:23 usb-Multiple_Card_Reader_058F63666433-0:0 -> ../../sdb
...
Die Karte war bereits partitioniert und mit einem leeren FAT-Dateisystem eingerichtet. Beides habe ich ignoriert und mit einem verschlüsselten Container überschrieben:
$ cryptsetup luksFormat /dev/disk/by-id/usb-Multiple_Card_Reader_058F63666433-0\:0
WARNING!
========
This will overwrite data on /tmp/image irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase: ************
Verify passphrase: ************
Um auf das virtuelle Device zugreifen zu können, öffne ich es mit luksOpen
und verpasse ihm einen Namen:
$ cryptsetup luksOpen /dev/disk/by-id/usb-Multiple_Card_Reader_058F63666433-0\:0 crypt_sd32
Enter passphrase for /dev/disk/by-id/usb-Multiple_Card_Reader_058F63666433-0:0: ************
Das nutzbare Block-Device erscheint nach diesem Befehl als /dev/mapper/crypt_sd32. Darauf wird ohne Partitionierung das Dateisystem angelegt. Ich verwende für entfernbare Medien aus Gründen der Portabilität üblicherweise ein FAT32. Da mein Backup keine besonderen Anforderungen hat, bleibe ich bei dieser Wahl.
$ mkfs.vfat -n sd32 /dev/mapper/crypt_sd32
Ich lege den neuen Mount-Point /media/sd32 an und füge der /etc/fstab einen passenden Eintrag hinzu. Aus Sicherheitsgründen wird das Dateisystem restriktiv eingehängt, so dass nur privilegierte Benutzer darauf zugreifen können.
$ mkdir /media/sd32
$ grep sd32 /etc/fstab
/dev/mapper/crypt_sd32 /media/sd32 vfat noauto,uni_xlate,umask=0077,dmask=0077,fmask=0177,tz=UTC 0 0
$ mount /media/sd32
Danach werden nur noch die zuvor auf die Festplatte kopierten Dateien der alten Speicherkarte nach /media/sd32 verschoben und schließlich verifiziert, dass das Backup noch funktioniert.
Das wars – zumindest fast. Die Passphrase für die Speicherkarte ist nur mir bekannt, wodurch sie beim Systemstart nicht automatisch eingehängt werden kann. Das ist auch richtig so. Denn der geheime Schlüssel soll geheim bleiben. Daher muss ich nach jedem Neustart das Gerät manuell mit folgenden Befehl zugänglich machen:
$ cryptsetup luksOpen /dev/disk/by-id/usb-Multiple_Card_Reader_058F63666433-0\:0 crypt_sd32
Enter passphrase for /dev/disk/by-id/usb-Multiple_Card_Reader_058F63666433-0:0: ************
Die Vorteile von LUKS: Es funktioniert ohne zusätzliche Software auf fast jedem Linux-System, die Quellen zu dem System sind öffentlich zugänglich und es gilt als vergleichsweise sicher. Gerade beim Backup ein gutes Gefühl.