Dieser Beitrag ist erschienen in freiesMagazin (Link) 07/2009 / Lizenz: GNU Free Documentation License (GNU FDL) (Link) / Autor: Martin Böcher.
Wenn Sie diesen Artikel weiterverwenden möchten, beachten Sie bitte die Lizenzbedingungen. Vielen Dank.
Partitionen verschlüsseln mit dm-crypt und LUKS
von Martin Böcher
Es gibt viele Gründe, Daten zu verschlüsseln. Egal weshalb man sich dafür entscheidet, man sollte wissen, was man tut und was man zu beachten hat. Dieser Artikel soll als kurze Anleitung dienen. Für weitere, tiefergehende Informationen seien die später erwähnten Links empfohlen.
Hinweis: Das in dieser Anleitung verwendete dm-crypt ist ein Verschlüsselungsmodul, das zum Device Mapper des Linux-Kernels gehört. LUKS ist eine Erweiterung, die unter anderem die Verwendung von mehreren Passwörtern erlaubt.
Voraussetzungen
Der Linux-Kernel kann ab Version 2.6.10 verwendet werden. Besser ist jedoch Version 2.6.20 oder höher, da ab dieser Version der Encrypted-Salt-Sector IV (ESSIV) unterstützt wird (Link). Am besten verwendet man den aktuellen Kernel der jeweiligen Distribution. Die Kernel-Optionen „Device Mapper Support“ und „Crypt Target Support“ müssen aktiviert sein, ebenso ein gewünschtes „Crypto-API“. Dies sollte bei den fertigen Kerneln der großen Distributionen alles gegeben sein. Die Module müssen unter Umständen noch geladen werden, wenn sie nicht fest in den Kernel kompiliert sind. Es ist das Modul dm-crypt und gegebenenfalls ein Modul des gewünschten Glossar- Kernel-Optionen
- Der „Device Mapper Support“ ermöglicht das Verbinden von verschiedenen Gerätedateien. Zusammen mit der Verschlüsselung (dm-crypt und LUKS) nutzt man die Partition /dev/sdb1 zum Beispiel als /dev/mapper/meinCryptoGeraet. Für die Nutzung der Verschlüsselung benötigt man dabei den „Crypt Target Support“.
- Chiffriermodus
- Der Chiffriermodus ist der Algorithmus, der zur Verschlüsselung verwendet wird.
- Schlüssellänge
- Die Länge des Schlüssels ist ein Faktor für die Sicherheit der Verschlüsselung. Je länger der Schlüssel ist, desto höher ist die Sicherheit der Verschlüsselung.
- Crypto-API
- Kryptographie Application Programming Interface, Schnittstelle zum Verwenden des jeweiligen Verschlüsselungsalgorythmus.
- Crypto-Container
- Mit Container ist die verschlüsselte Partition gemeint. In diesem befindet sich wiederum ein eigenes Dateisystem, also eine Partition.
- Keyslots
- Ein Keyslot ist ein Speicherplatz für ein Passwort bzw. eine Schlüsseldatei.
- LUKS
- Dank LUKS (Linux Unified Key Setup) ist es möglich, bis zu acht Passwörter bzw. Schlüsseldateien für einen Crypto-Container zu nutzen.
- Schlüsseldatei
- Anstatt eines Passworts kann auch eine Datei verwendet werden, die an Stelle des Passwortes zur Entschlüsselung des Crypto-Containers verwendet wird.
- /dev/urandom
- /dev/urandom ist ein spezielles Gerät, durch das man Zugriff auf Zufallszahlen hat, die direkt vom Linux-Kernel erzeugt werden.
Crypto-API. Also wechselt man in eine Konsole und lädt die Module per
# modprobe dm-cryptAn Softwarepaketen wird cryptsetup samt Abhängigkeiten benötigt. Des Weiteren benötigt man natürlich eine (leere) Partition. In den hier gezeigten Beispielen wird ein USB-Stick verwendet (/dev/sdb1), um bei ersten Tests nicht gleich eine ganze Partition unbrauchbar zu machen. Man sollte sich immer im Klaren sein, dass die Daten bei Verlust des Passwortes oder des Dateischlüssels nicht mehr erreichbar sind!
# modprobe crypt_aes
Verschlüsseln einer Partition
Meist möchte man nicht nur eine Datei verschlüsseln, sondern gleich mehrere. Deshalb ist es praktisch, gleich eine ganze Partition zu verwenden. Dank Logical Volume Manager (siehe „Der Logical Volume Manager“, freiesMagazin 03/2009 (Link)) ist es kein Problem, eine Festplatte in nahezu beliebig viele Partitionen zu zerlegen. Im folgenden Beispiel ist es die Partition eines USB-Sticks. Das Beispiel ist aber auf jede beliebige Festplattenpartition anwendbar. Mit dem Kommando cryptsetup wird die Verschlüsselung gesteuert. Beim Anlegen einer verschlüsselten Partition muss zum Anfang festgelegt werden, welcher Chiffriermodus verwendet werden soll. Außerdem legt man fest, ob ein Passwort oder eine Schlüsseldatei zum Öffnen des Crypto-Containers verwendet werden soll. Es ist zu einer zufällig generierten Datei (Schlüsseldatei) zu raten, da Passwörter im Allgemeinen leichter zu erraten oder zu knacken sind (gegebenenfalls mit einer Brute-Force-Attacke).Schlüsseldatei erzeugen
Man sollte aus Sicherheitsgründen die Schlüsseldatei natürlich nicht auf der Festplatte oder demselben USB-Stick lagern. Ein anderer USB-Stick wäre angebracht, vor allem dann, wenn später mit einer Festplattenpartition und nicht mehr mit einem Test-USB-Stick gearbeitet wird. Die Schlüsseldatei (hier mit dem Namen schluessel-sdb1 im Verzeichnis /tmp) erzeugt man z. B. mit einer zufälligen Zeichenfolge, die mit Hilfe von /dev/urandom generiert wird.$ head -c1024 /dev/urandom > /tmp/schluessel-sdb1So erhält man einen Schlüssel, der nahezu unmöglich zu erraten/knacken ist. Doch Vorsicht! Wenn die Datei schluessel-sdb1 abhanden kommt oder beschädigt wird, kommt man nicht mehr an die Daten. Alternativ kann natürlich mit einem Passwort gearbeitet werden.
Anlegen einer verschlüsselten Partition
Die Partition (hier /dev/sdb1) wird mit der Datei /tmp/schluessel-sdb1 verschlüsselt. Der gewählte Chiffriermodus ist aes-xts-plain und wird mit einer Schlüssellänge von 256 Bit angewandt. Wenn man lieber mit einem Passwort arbeiten möchte, lässt man die Angabe der Schlüsseldatei einfach weg. Ratsam ist dann aber die Option -y, die das Passwort sicherheitshalber zweimal eintippen lässt, damit keine Tippfehler den späteren Zugriff verhindern. Um Ebengenanntes zu erreichen, wechselt man in die Konsole und setzt folgenden Befehl ab:# cryptsetup luksFormat -y -c aes-xts-plain -s 256 /dev/sdb1 /tmp/schluessel-sdb1Nach Eingabe des Befehls muss auch bestätigt werden, dass alle Daten der Partition überschrieben werden dürfen (dessen sollte man sich bewusst sein). Vorher sollte lieber ein Backup zu viel als eines zu wenig angelegt werden.
Öffnen des Crypto-Containers
Nun wird der Container mit dem Schlüssel geöffnet und das Gerät meinCryptoGeraet erzeugt. Dies befindet sich dann unter /dev/mapper/meinCryptoGeraet.# cryptsetup luksOpen /dev/sdb1 meinCryptoGeraet --key-file /tmp/schluessel-sdb1Beim ersten Öffnen muss die Partition noch formatiert werden, hier z. B. durch mke2fs mit der Option -j als ext3-Dateisystem:
# mke2fs -j /dev/mapper/meinCryptoGeraetJetzt kann die Partition ins System eingehängt werden:
# mount /dev/mapper/meinCryptoGeraet /mnt/meineDaten
Verwenden der verschlüsselten Partition
Nun kann die eingehängte Partition ganz normal verwendet werden. Dateien lassen sich anlegen, verschieben und löschen. Im normalen Gebrauch unterscheidet sie fast nichts von einer unverschlüsselten Partition. Ein kleiner Unterschied ist die Lese- und Schreibgeschwindigkeit, welche man aber vernachlässigen kann.Schließen des Containers
Mit dem Schließen des Crypto-Containers entfernt man auch das Gerät. Vorher muss natürlich die Partition wieder aus dem System ausgehängt werden, was man durch folgende Befehle erreicht:# umount /mnt/meineDaten
# cryptsetup luksClose meinCryptoGeraet
Weitere Passwörter/Key-Files
Insgesamt kann man bis zu acht Passwörter bzw. Schlüsseldateien verwenden (Slot 0 bis 7). Zum Hinzufügen eines weiteren Passwortes gibt man dieses Kommando ein:# cryptosetup luksAddKey /dev/sdb1Um eine weitere oder neue Schlüsseldatei zu nutzen, gibt es den Befehl:
# cryptosetup luksAddKey /dev/sdb1 /tmp/neuerSchluessel ?key-file /tmp/key-file.hdb3Zu beachten ist, dass nach dem Gerät (/dev/sdb1) erst die neue Schlüsseldatei angegeben wird und dann zur Authentifizierung ein bestehender Schlüssel.
Löschen eines Passwortes/Schlüsseldatei
Möchte man z. B. den Keyslot Nummer 5 löschen, nutzt man folgenden Befehl:# cryptsetup luksDelKey /dev/sdb1 5Um die Nummer des Keyslots herauszufinden und weitere Informationen über den Crypto-Container einzusehen, gibt es die Option luksDump:
# cryptsetup luksDump /dev/sdb1
Fazit
Kryptografie ist ein sehr komplexes Thema. Man sollte sich damit auseinandersetzen, nicht nur was die Befehle von cryptsetup angeht, sondern ebenso wie die Algorithmen (zumindest im Groben) funktionieren und wie das ganze System ineinandergreift. Wichtig ist erst einmal, alles auszuprobieren, damit man später auch an seine Daten kommt und sich nicht aussperrt!Weiterführende Artikel
Ein guter, wenn auch älterer Artikel ist z. B. im Linux Magazin erschienen (Link). Zwei sehr gute Wiki-Einträge im Gentoo-Wiki kommen von Misterjack (Link) (Link), die mir bei meinen ersten dm-crypt-Versuchen sehr geholfen haben. Außerdem gibt es auf der Seite des Entwicklers (Link) weiterführende Links und Infos.Alternativen
Es gibt natürlich auch andere Programme, um Partitionen zu verschlüsseln. TrueCrypt (für Linux, Mac OS X und Windows erhältlich) (Link) gehört sicherlich zu den bekanntesten und in der Windows-Welt auch zu den verbreitetsten Verschlüsselungsprogrammen. Als Vorgänger von dm-crypt kann man die Variante Linux-Kernel plus cryptoloop (Link) ansehen. Sie ist allerdings schon etwas veraltet.Anmerkung von Computerseite-Spezial.de: einen Einführungsartikel über TrueCrypt finden Sie unter der Rubrik "Ausgewählte Programme": (Link).
Links
- http://de.gentoo-wiki.com/wiki/DM-Crypt
- http://www.freiesmagazin.de/freiesMagazin-2009-03
- http://www.linux-magazin.de/heft_abo/ausgaben/2005/08/geheime_niederschrift
- http://de.gentoo-wiki.com/wiki/DM-Crypt
- http://de.gentoo-wiki.com/wiki/DM-Crypt/Daten-Partition_verschl\%C3\%BCsseln
- http://www.saout.de/misc/dm-crypt/
- http://www.truecrypt.org/
- http://tldp.org/HOWTO/text/Cryptoloop-HOWTO
Autoreninformation
Martin Böcher benutzt seit vielen Jahren Linux und andere freie Software. Um seine Daten zu schützen, beschäftigt er sich mit Kryptografie und anderen Sicherheitsmechanismen im Netzwerk und im Serverbereich.
| < Zurück | Weiter > |
|---|





