Linux Unified Key Setup
Das Linux Unified Key Setup bzw. kurz LUKS ist eine Spezifikation für die Festplattenverschlüsselung, die von Clemens Frühwirth 2004 für Linux zur Verschlüsselung ganzer Partitionen entwickelt wurde. LUKS beschreibt das Format der Verschlüsselung auf dem Volume und ist grundsätzlich plattformunabhängig.[1]
Unter Linux ist cryptsetup das zentrale Dienstprogramm zur Verwaltung von LUKS-Volumes.[2]
Eigenschaften
[Bearbeiten | Quelltext bearbeiten]Zur Vermeidung von Wörterbuchangriffen implementiert LUKS PBKDF2, das zum von RSA Security entwickelten Standard PKCS #5 gehört.[3]
On-Disk-Format
[Bearbeiten | Quelltext 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):
| Offset | Datentyp | Inhalt | |
|---|---|---|---|
| 0 | 0hex | char[6] | Magische Zahl {'L', 'U', 'K', 'S', 0xBA, 0xBE } |
| 6 | 6hex | uint16_t | LUKS-Version (bei LUKS1 0x0001) |
| 8 | 8hex | char[32] | Name des Chiffrieralgorithmus (z. B. "twofish" oder "aes") |
| 40 | 28hex | char[32] | Name des Chiffriermodus (z. B. "cbc-essiv:sha256") |
| 72 | 48hex | char[32] | Name der Hashfunktion (z. B. "sha1" oder "ripemd160") |
| 104 | 68hex | uint32_t | Offset zu den Daten (in Sektoren) |
| 108 | 6Chex | uint32_t | Anzahl der Schlüsselbytes |
| 112 | 70hex | char[20] | Prüfsumme des PBKDF2-Masterschlüssels |
| 132 | 84hex | char[32] | Salt des PBKDF2-Masterschlüssels |
| 164 | A4hex | uint32_t | Anzahl der PBKDF2-Iterationen (Default: 10) |
| 168 | A8hex | char[40] | UUID der Partition (im üblichen Hex-Format, z. B. "504c9fa7-d080-4acf-a829-73227b48fb89") |
| 208 | D0hex | (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:
| Offset | Datentyp | Inhalt |
|---|---|---|
| 0 | uint32_t | Status: Aktiv=0x00AC71F3; Inaktiv=0x0000DEAD |
| 4 | uint32_t | Anzahl der Iterationen für PBKDF2 |
| 8 | 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 | ||
LUKS2
[Bearbeiten | Quelltext bearbeiten]Seit Linux-Kernel-Version 4.12 gibt es eine neue LUKS-Version, die einige neue Funktionen bietet:[5]
- Authenticated Encryption – benötigt das "dm-integrity"-Feature, das ebenfalls mit Kernel-Version 4.12 eingeführt wurde, um die zusätzlichen Metadaten pro Sektor zu speichern.
- Passwortableitungsfunktion Argon2 (in den Varianten Argon2i und Argon2id), welche parallele Brute-Force-Angriffe erschwert.
- Der LUKS-Header kann jetzt an einem separaten Ort gespeichert werden. Die LUKS-Metadaten werden im JSON-Format und redundant gespeichert (Schlüsseldaten aus Sicherheitsgründen nur einmal).
- Unterstützung für externe Schlüsselspeicher und Authentifizierungsmethoden.
- Konvertierung von LUKS1 nach LUKS2 und umgekehrt (sofern keine neuen Features von LUKS2 benutzt werden) ist on-the-fly möglich.
- Das sektorweise Übertragen einer unverschlüsselten Partition in eine verschlüsselte LUKS-Containerpartition bzw. der umgekehrte Vorgang um eine Verschlüsselung rückgängig zu machen, ist ohne Kopie über eine zusätzliche Partition möglich. Dieser Vorgang setzt aber voraus, dass für die Header-Daten innerhalb der Partition Platz vorhanden ist. Das Dateisystem darf dazu nicht den kompletten Platz in einer Partition ausfüllen.
Weblinks
[Bearbeiten | Quelltext bearbeiten]- LUKS1 On-Disk Format Specification, Version 1.2.3 vom 20. Januar 2018
- LUKS2 On-Disk Format Specification, Version 1.1.4 vom 16. Juni 2025
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Michael Reiter: Cryptology and Network Security. In: LNCS. Band 9476. Springer Science+Business Media, 2015, ISBN 978-3-319-26822-4, 3 Linux Unified Key Setup, S. 228, doi:10.1007/978-3-319-26823-1 (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “The Linux Unified Key Setup (LUKS) is a disk-encryption specification commonly implemented in Linux based operating systems. It is a platform-independent standard on-disk format developed by Clemens Fruhwirth in 2004.”
- ↑ Richard Blum: Linux Fundamentals. 2. Auflage. Jones & Bartlett Learning, 2023, ISBN 978-1-284-25488-4, 11.3 Encrypting Partitions, S. 279 (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “The core utility in LUKS is the cryptsetup utility.”
- ↑ Peter Winkler: Computer Lexikon 2009. Markt+Technik Verlag, 2008, ISBN 978-3-8272-4403-1, S. 1011, LUKS (eingeschränkte Vorschau in der Google-Buchsuche): „Zur Vereitelung von Wörterbuchangriffen nutzt LUKS das Verfahren PBKDF2 …, das zum von RSA entwickelten Standard PKCS #5 gehört.“
- ↑ LUKS On-Disk Format Specification. (PDF) Version 1.2.2. Abgerufen am 19. März 2017.
- ↑ gitlab.com (PDF)