Was ist LUKS und wie funktioniert es?

Wenn vertrauliche Informationen auf einem Computerspeicher verfügbar sind, müssen bestimmte Maßnahmen ergriffen werden, um sie vor neugierigen Blicken zu schützen. Und anstatt sie einfach hinter ein durchschnittliches Passwort zu stecken, kann man diese Daten in unlesbaren Text umwandeln, sodass nur eine autorisierte Person sie entschlüsseln und den Originalinhalt lesen kann. Diese Schutzmethode wird allgemein als Verschlüsselung bezeichnet. Unter Linux kann sie über LUKS implementiert werden, die Standardlösung des Kernels zur Verschlüsselung ganzer Festplatten. Schauen wir uns diese Technologie und ihre Funktionsprinzipien genauer an.

Letzte Aktualisierung:
02. Juni 2023

Lesezeit: 5 Min.

Was ist LUKS?

LUKS (Linux Unified Key Setup) ist bei weitem das am häufigsten verwendete Format für die Blockgeräteverschlüsselung, das in verschiedenen Linux-basierten Systemen verwendet wird. Es ist vollständig Open-Source, arbeitet auf Kernel-Ebene und nutzt sein Device-Mapper-Subsystem über das dm-crypt-Modul. Die erste Version von LUKS, die später den Namen LUKS1 erhielt, wurde 2005 veröffentlicht. Im Jahr 2018 wurde die Spezifikation um die Unterstützung einiger zusätzlicher Funktionen erweitert, und diese neuere Version wird üblicherweise als LUKS2 bezeichnet.

Durch die Kodierung der auf einem internen Desktop-/Laptop-Laufwerk oder einem tragbaren USB-Speichergerät gespeicherten Informationen verhindert LUKS den Zugriff darauf, es sei denn, der Benutzer kann die korrekten Authentifizierungsdaten angeben. Dies ist auch eine beliebte Wahl zum Schutz von NAS-Geräten, insbesondere von QNAP.

LUKS kann zur Verschlüsselung jeder Partition verwendet werden, die sich nicht nur auf einem einzelnen Laufwerk, sondern auch auf einem RAID-Set mit mehreren Laufwerken oder sogar einem LVM-Volumen befinden kann. Zu diesem Zweck bietet es verschiedene Kombinationen aus Verschlüsselungsalgorithmen (u. a. AES, Serpent, Twofish), Verschlüsselungsmodi (ECB; CBC, XTS) und Hash-Funktionen (SHA-1, SHA-256, SHA-512, RIPEMD160 usw.). Die Standardeinstellung ist AES im XTS-Betriebsmodus mit der Schlüsselgröße 512 Bit. Allerdings entscheiden sich die Entwickler verschiedener Linux-Distributionen und Hersteller von Linux-basierter Hardware möglicherweise für ihre eigenen Verschlüsselungsstandards.

Alle LUKS-Partitionen haben ein ähnliches Layout. Die wichtigsten Informationen im Zusammenhang mit der Verschlüsselung, wie der verwendete Algorithmus und die Schlüssel, befinden sich im LUKS-Header, einem speziellen Bereich, der am Anfang des verschlüsselten Geräts eingerichtet wird. Alternativ ist es auch möglich, einen "abgetrennten" LUKS-Header zu erstellen, der an einem völlig anderen Ort gespeichert wird, beispielsweise auf einem austauschbaren USB-Stick. Der Header ist ein wesentliches Strukturelement einer LUKS-Partition. Wenn er beschädigt wird, beispielsweise aufgrund einer unsachgemäßen Neupartitionierung, können die Daten nicht entschlüsselt werden und gehen unwiderruflich verloren. Aus diesem Grund ist es sinnvoll, seine Sicherungskopien zu erstellen.

Als Nächstes folgt der sogenannte "Schlüsselmaterial"-Bereich und die verschlüsselten Benutzerdaten selbst. Der für die Verschlüsselung verwendete Primärschlüssel (auch bekannt als Master Key) wird vom System zufällig generiert. Dieser Schlüssel wird wiederum mithilfe des Schlüssels des Benutzers oder mehrerer Schlüssel – falls mehr gültige Benutzer Zugriff auf den Speicher haben – verschlüsselt. Diese verschlüsselten Varianten des Hauptschlüssels werden in speziellen Schlüssel-Slots des "Schlüsselmaterial"-Bereichs gespeichert. Es können bis zu acht Slots vorhanden sein, und jeder Slot wird durch einen Schlüssel eines bestimmten Benutzers entsperrt. Die Schlüssel des Benutzers werden selbst durch kryptografische Hash-Algorithmen (wie PBKDF2) gesichert, während der Hauptschlüssel in "antiforensische" Streifen unterteilt wird.

Der Schlüssel des Benutzers, der den Hauptschlüssel entschlüsselt und dementsprechend den Speicher entsperrt, kann dargestellt werden durch:

  • eine Passphrase – eine Folge von Zeichen mit einer Länge von maximal 512, die vom Benutzer bereitgestellt und beim Systemstart oder beim Zugriff auf ein externes Gerät, das von LUKS verschlüsselt wurde, angefordert wird;
  • eine Schlüsseldatei – eine Datei, deren Inhalt als Passphrase zum Entsperren eines LUKS-Volumens verwendet werden kann. Bei der Speicherung auf einem Wechseldatenträger, beispielsweise einem USB-Stick, übernimmt das Medium dann die Rolle eines physischen Schlüssels, sodass eine Entschlüsselung möglich sein sollte, solange es am Computer angeschlossen ist. Solche Datei kann aus einer einfachen Passphrase, einem Block zufälliger Zeichen oder sogar binären Daten wie einem Bild, einer Musik oder einem Video bestehen.

Wie wird es auf einem Gerät aktiviert?

Da die Funktionalität von LUKS direkt in den Linux-Kernel integriert ist, ist seine Aktivierung unter jeder Linux-Distribution recht einfach:

  • LUKS kann während der Neu-/Installation des Systems aktiviert werden, indem die entsprechende Verschlüsselungsoption ausgewählt wird. Diese Methode ist optimal, da sie die Verschlüsselung aller Partitionen, einschließlich des Swap-Bereichs, impliziert und so maximalen Schutz ermöglicht. Die /boot-Partition zusammen mit GRUB wird jedoch nicht verschlüsselt. Sie wird auf einer separaten Partition abgelegt, um das System nach der Installation booten zu können.
  • Die Verschlüsselung kann auf Partitionsbasis mithilfe von cryptsetup durchgeführt werden, einem Befehlszeilendienstprogramm zum Einrichten verschlüsselter Dateisysteme mithilfe von Device Mapper und dem dm-crypt-Ziel.
  • Auf unterstützten NAS-Geräten kann das NAS-Volumen bei der Erstellung verschlüsselt werden, sofern der Benutzer das entsprechende Kontrollkästchen aktiviert.

LUKS auf QNAP NAS

Die meisten von QNAP hergestellten Network Attached Storage-Produkte bieten die Funktion der vollständigen Festplattenverschlüsselung. Eine verschlüsselte Partition kann auf einem einzelnen Laufwerk, einer JBOD-Konfiguration oder einer RAID-Gruppe basierend auf dem von LUKS bereitgestellten Cryptsetup-Mechanismus und dem 256-Bit-AES-Algorithmus im CBC-Modus erstellt werden. Diese Implementierung von LUKS weist jedoch einen bemerkenswerten Unterschied zu der von Standard-Linux auf.

Wenn ein Benutzer die Verschlüsselung aktiviert, wird er aufgefordert, eine Passphrase mit einer Länge von 8 bis 32 Zeichen zu definieren. Diese Passphrase dient der Verschlüsselung des LUKS-Hauptschlüssels und wird zunächst von einem QNAP-Dienstprogramm namens "storage_util" umgewandelt, das die MD5-Hash-Funktion mit dem YCCaQNAP-Salt darauf anwendet.

Der resultierende Verschlüsselungsschlüssel kann direkt während des Vorgangs oder danach als 256-Byte-Datei mit der Erweiterung *.key gespeichert werden.

Um solches Volumen zu entsperren, muss der Benutzer die ursprüngliche Passphrase eingeben oder die exportierte *.key-Datei hochladen.

Die beschriebene Technologie wird für die Datenwiederherstellung und den Datenzugriff von den folgenden Softwareprodukten unterstützt: