dm-crypt

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

dm-crypt ist ein Kryptographie-Modul des Device Mappers im Linux-Kernel. Man kann mit dm-crypt Daten mit verschiedenen Algorithmen ver- und entschlüsseln, dies kann auf beliebige Gerätedateien (englisch: Devices) angewandt werden, in den meisten Fällen Partitionen, Festplatten oder logische Laufwerke (LVM). Es wird hier also eine zusätzliche Schicht zwischen (verschlüsselten) (Roh-)Daten und dem Dateisystem aufgebaut. Für den Benutzer geschieht dies vollkommen transparent. dm-crypt eignet sich so zur Festplattenverschlüsselung (Partitionen, ganze Festplatten, aber auch alle anderen blockorientierten Geräte wie etwa logische Laufwerke (LVM) oder loop devices). dm-crypt unterstützt eine Vielzahl von Verschlüsselungsalgorithmen, da es die Crypto API des Linuxkernels nutzt.

Einen anderen Ansatz verfolgt die (transparente) Dateiverschlüsselung, bei der das Dateisystem für die Ver- und Entschlüsselung zuständig ist.

Anwendung[Bearbeiten]

  • Festplattenverschlüsselung zum Schutz sensibler Daten gegen (Offline-)Diebstahl (insbesondere für mobile Geräte wie Notebooks).
  • Schutz gegen Datenwiederherstellung nach Verkauf oder Entsorgung von Datenträgern. Hier wären sonst teils aufwändige Verfahren nötig, um die Daten sicher zu löschen, etwa das Überschreiben oder die physische Zerstörung des Datenträgers.

Verschlüsselungsparameter[Bearbeiten]

dmcrypt unterstützt verschiedene Verschlüsselungs-Algorithmen und -Betriebsmodi. Sie werden in einem speziellen Format angegeben (optionale Teile sind in eckigen Klammern angegeben)[1]:

cipher[:keycount]-chainmode-ivmode[:ivopts]

Die einzelnen Felder bedeuten:

cipher
Name des verwendeten Verschlüsselungsalgorithmus. Beispiel: aes, twofish
keycount
optionales Feld für Verschlüsselungen mit mehreren Schlüsseln (um zu loop-aes kompatibel zu sein)
chainmode
Verschlüsselungsmodus, z. B. ecb, cbc
ivmode
Art des Initialisierungsvektors, sofern der Verschlüsselungsmodus einen benötigt. Beispiele: plain, essiv, lmk
ivopts
Optionaler Parameter für ivmode, sofern benötigt. z. B. der verwendete Hash beim essiv-Modus: sha256


Beispiele:

twofish-ecb Twofish-Algorithmus im ECB-Modus (nicht empfehlenswert)
aes:64-cbc-lmk AES-Algorithmus im CBC-Modus, im 64-Schlüssel-Modus, mit Initialisierungsvektorverfahren kompatibel zu loop-aes
aes-cbc-essiv:ripemd160   AES im CBC-Modus, wobei die Initialisierungsvektoren mit dem RIPEMD160-Hashalgorithmus berechnet werden

Erweiterung mit LUKS[Bearbeiten]

Eine gängige Erweiterung ist LUKS („Linux Unified Key Setup“), welche die verschlüsselten Daten um einen Header erweitert, in dem Metadaten sowie bis zu acht Schlüssel gespeichert werden. Vorteile gegenüber „reinem“ dm-crypt sind: ein standardisiertes Format, Informationen über die Art der Verschlüsselung im Header, Vergabe von bis zu acht Schlüsseln sowie die Änderung und Löschung von Schlüsseln ohne Umschreiben der verschlüsselten Daten.

Da der Header, den LUKS in den Container schreibt, eine Klartext-Kennung, den verwendeten Verschlüsselungs- und Hash-Algorithmus und die Größe des Masterschlüssels enthält, sind eine automatische Erkennung und einfache Verwaltung von LUKS-Containern möglich. Es macht die Verschlüsselung aber auch gegenüber Dritten und Angriffsprogrammen erkennbar. Damit wird eine glaubhafte Abstreitbarkeit schwierig bis unmöglich. Der LUKS-Header inkl. Schlüsseldaten verkleinert außerdem den nutzbaren Speicherplatz auf dem Medium um 1028 KiB (Standardeinstellung). Im Gegensatz zu den zentralen Metadaten verschiedener Dateisysteme, wie z. B. dem Superblock bei ext2, werden diese für den Betrieb des Datenträgers wichtigen Daten nicht auf dem Medium verteilt repliziert gespeichert. Wenn sie überschrieben werden oder aufgrund eines Hardwaredefektes nicht mehr ausgelesen werden können, sind die Nutzdaten auf dem Medium ohne ein Backup des Headers (das das Verwaltungsprogramm cryptsetup ermöglicht) nicht mehr zu entschlüsseln.

On-Disk-Format[Bearbeiten]

Eine mit LUKS verschlüsselte Festplattenpartition besitzt folgenden Header (Mehrbytewerte sind dabei im Big-Endian-Format abgespeichert, Klartext-Bezeichner sind dabei mit Nullbytes aufgefüllt, wenn sie kürzer als der vorgesehene Speicherplatz sind):

LUKS-Header[2]
Offset Datentyp Inhalt
000 000hex char[6] Magische Zahl {'L', 'U', 'K', 'S', 0xBA, 0xBE }
006 006hex uint16_t LUKS-Version (derzeit stets 0x0001)
008 008hex char[32] Name des Chiffrieralgorithmus (z. B. "twofish" oder "aes")
040 028hex char[32] Name des Chiffriermodus (z. B. "cbc-essiv:sha256")
072 048hex char[32] Name der Hashfunktion (z. B. "sha1" oder "ripemd160")
104 068hex uint32_t Offset zu den Daten (in Sektoren)
108 06Chex uint32_t Anzahl der Schlüsselbytes
112 070hex char[20] Prüfsumme des PBKDF2-Masterschlüssels
132 084hex char[32] Salt des PBKDF2-Masterschlüssels
164 0A4hex uint32_t Anzahl der PBKDF2-Iterationen (Default: 10)
168 0A8hex char[40] UUID der Partition (im üblichen Hex-Format, z. B. "504c9fa7-d080-4acf-a829-73227b48fb89")
208 0D0hex (48 Bytes) Keyslot 1 (siehe unten)
544 220hex (48 Bytes) Keyslot 8 (siehe unten)
592 Bytes total

Jeder der acht Keyslots besitzt dabei folgendes Format:

Format eines LUKS-Keyslots
Offset Datentyp Inhalt
00 uint32_t Status: Aktiv=0x00AC71F3; Inaktiv=0x0000DEAD
04 uint32_t Anzahl der Iterationen für PBKDF2
08 char[32] Salt für PBKDF2
40 uint32_t Startsektor für Schlüsseldaten
44 uint32_t Anzahl der Anti-Forensic-Stripes (Default: 4000)
48 Bytes total

Vergleich von LUKS gegenüber einfachem dm-crypt[Bearbeiten]

Die nachfolgende Auflistung erhebt keinen Anspruch auf Vollständigkeit. Je nach Einsatzzweck variiert außerdem die Relevanz der einzelnen Eigenschaften, so dass diese Auflistung keine allgemein gültige Wertung von LUKS ermöglicht.

Klartextheader
Pro.svg ermöglicht Skripte ohne externe Konfiguration zum automatischen Einbinden des Datencontainers
Contra.png verhindert eine plausible Abstreitbarkeit
Contra.png benötigt Platz auf dem Datenträger; damit ist eine sektorweise 1:1-Kopie eines (unverschlüsselten bzw. direkt als Speicherplatz genutzten) Datenträgers/Partition in einen verschlüsselten LUKS-Container gleicher Größe nicht möglich; das Ziellaufwerk (für den LUKS-Container) muss entsprechend größer sein.
Contra.png Bei Fehlern im Header-Sektor (die direkt die Schlüsseldaten betreffen) ist es ohne Header-Backup nahezu unmöglich, die übrigen Daten zu restaurieren, selbst wenn diese noch (verschlüsselt) lesbar sind.
Schlüssel-Setup
Pro.svg Salts für Schlüssel und Masterschlüssel erschweren Angriffe mit vorberechneten Hashes
Pro.svg PBKDF2 erfordert aufgrund der Iterationen erhöhten Rechenaufwand, was Wörterbuchangriffe in beliebigem, konfigurierbarem Umfang verlangsamt (allerdings im selben Umfang wie das Einbinden des Volumes)
Contra.png PBKDF2 führt auf langsamen Rechnern zu einer spürbaren Verzögerung beim Einbinden des Containers (die vorgegebene Zeit vervielfacht sich entsprechend)
Keyslots
Pro.svg ermöglichen mehrere Passwörter/Passphrases pro Datencontainer, die zudem einfach geändert und gelöscht werden können
Contra.png benötigen Platz auf dem Datenträger; damit ist keine sektorweise 1:1-Kopie eines unverschlüsselten Datenträgers in einen verschlüsselten LUKS-Container (z. B. für Backups) gleicher Größe möglich
Contra.png allein das Vorhandensein mehrerer Keyslots und Lücken in der Keyslotliste offenbaren Details über die Nutzung des Datencontainers.

Nachteile[Bearbeiten]

Datendurchsatz[Bearbeiten]

Bedingt durch den zusätzlichen Rechenaufwand der Verschlüsselungsalgorithmen können, wie bei jeder in Software ausgeführten Festplattenverschlüsselung, Performanceeinbußen entstehen: der Datendurchsatz sinkt gegenüber unverschlüsselten Datenträgern. Eine Verbesserung kann durch schnellere Prozessoren, Mehrkernprozessoren, der Optimierung der Algorithmen auf die jeweilige Architektur oder einer Implementierung als Hardwareverschlüsselung erreicht werden.

Kryptographische Angreifbarkeit[Bearbeiten]

Auf mit dm-crypt verschlüsselte Daten sind teilweise kryptographische Angriffe denkbar:[3]

Alternativen und Portierungen[Bearbeiten]

Mit FreeOTFE existierte bis 2013 eine zu LUKS kompatible Implementierung für Microsoft Windows.

Ein vom Funktionsumfang annähernd vergleichbares alternatives Produkt für Windows und Linux war TrueCrypt. DiskCryptor (für Microsoft Windows) nutzt ein anderes Format, aber ist dafür freie Software.

Literatur[Bearbeiten]

  • Clemens Fruhwirth, Markus Schuster: Geheime Niederschrift. Festplattenverschlüsselung mit DM-Crypt und Cryptsetup-LUKS: Technik und Anwendung In: Linux-Magazin 08/2005. Linux New Media AG, S. 28-36, ISSN 1432-640X, online verfügbar
  • Frank Becker und Konrad Rosenbaum: „Plattenschlüssel – Crypto-Dateisysteme auf Linux“, Vortrag auf Chemnitzer Linuxtag 2005, online verfügbar (PDF, 400 kB)
  • Christian Ney, Peter Gutmann: Löchriger Käse. Verschlüsselte Filesysteme unter Linux In: Linux-Magazin 10/2006. Linux New Media AG, S. 36-44, ISSN 1432-640X, online verfügbar

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. dm-crypt: Linux kernel device-mapper crypto target. Abgerufen am 23. April 2013.
  2. LUKS On-Disk Format Specification. Version 1.1.1. Abgerufen am 26. November 2011 (pdf).
  3. Linux hard disk encryption settings, englisch