Benutzerleitfaden zur Laufwerksverschlüsselung

Mat McCabe, Mauricio Tavares, Das Fedora-Dokumentationsteam Version F37 Last review: 2023-01-05

Was ist Blockgeräteverschlüsselung?

Bei der Verschlüsselung von blockorientierten Geräten werden die Daten transparent verschlüsselt/entschlüsselt, während sie von blockorientierten Geräten geschrieben/gelesen werden; das zugrunde liegende blockorientierte Gerät sieht nur verschlüsselte Daten.

Zum Einhängen verschlüsselter blockorientierter Geräte muss der Systemadministrator (oder der Benutzer, je nach Kontext) eine Passphrase zur Aktivierung des Entschlüsselungsschlüssels angeben.

Die Verschlüsselung bietet über die bestehenden Sicherheitsmechanismen des Betriebssystems hinaus zusätzliche Sicherheit, da sie die Inhalte des Geräts auch dann schützt, wenn es physisch vom System getrennt wurde. Einige Systeme erfordern, dass der Verschlüsselungsschlüssel mit dem Entschlüsselungsschlüssel identisch ist, während andere Systeme einen spezifischen Schlüssel für die Verschlüsselung und einen separaten zweiten Schlüssel für die Entschlüsselung benötigen.

Verschlüsselung von blockorientierten Geräten mit dm-crypt/LUKS

LUKS (Linux Unified Key Setup) ist eine Spezifikation für die Verschlüsselung von blockorientierten Geräten. Sie legt ein Format für die Daten auf dem Datenträger sowie eine Richtlinie für die Passphrase-/Schlüsselverwaltung fest.

LUKS nutzt das Devicemapper-Subsystem des Kernels über das Modul dm-crypt. Diese Architektur ermöglicht eine Low-Level-Zuordnung, die die Ver- und Entschlüsselung der Gerätedaten übernimmt. Benutzeroperationen, wie das Erstellen und der Zugriff auf verschlüsselte Geräte, werden mithilfe des Dienstprogramms cryptsetup durchgeführt.

Überblick über LUKS

  • Was LUKS macht:

    • LUKS verschlüsselt ganze blockorientierte Geräte

      • LUKS eignet sich daher gut zum Schutz der Inhalte mobiler Geräte wie beispielsweise:

        • Wechseldatenträger

        • Laptop-Laufwerke

    • Der zugrundeliegende Inhalt des verschlüsselten blockorientierten Geräts spielt dabei keine Rolle.

      • Dadurch eignet es sich zur Verschlüsselung von Auslagerungsgeräten (Swap).

      • Dies kann auch bei bestimmten Datenbanken nützlich sein, die speziell formatierte blockorientierte Geräte zur Datenspeicherung verwenden.

    • LUKS nutzt das bestehende Devicemapper-Subsystem ddes Kernels.

      • Es handelt sich um dasselbe Subsystem, das auch von LVM verwendet wird, daher ist es gut getestet.

    • LUKS bietet eine Passphrase-Verstärkung.

      • Dies schützt vor Wörterbuchangriffen.

    • LUKS-Geräte enthalten mehrere Schlüssel-Slots.

      • Dies ermöglicht es Benutzern, Backup-Schlüssel/Passphrasen hinzuzufügen.

  • Was LUKS nicht macht:

    • LUKS eignet sich nicht gut für Anwendungen, bei denen viele (mehr als acht) Benutzer unterschiedliche Zugriffsschlüssel für dasselbe Gerät benötigen.

    • LUKS eignet sich nicht gut für Anwendungen, die eine Verschlüsselung auf Dateiebene erfordern.

Wie greife ich nach der Installation auf die verschlüsselten Geräte zu? (Systemstart)

Beim Systemstart werden Sie zur Eingabe einer Passphrase aufgefordert. Nach Eingabe der korrekten Passphrase startet das System normal weiter. Falls Sie für mehrere verschlüsselte Geräte unterschiedliche Passphrasen verwendet haben, müssen Sie möglicherweise beim Start mehrere Passphrasen eingeben.

Erwägen Sie, für alle verschlüsselten blockorientierten Geräte innerhalb eines Systems dieselbe Passphrase zu verwenden. Dies vereinfacht den Systemstart und reduziert die Anzahl der zu merkenden Passphrasen. Wählen Sie jedoch unbedingt eine sichere Passphrase!

Auswahl einer guten Passphrase

Während dm-crypt/LUKS sowohl Schlüssel als auch Passphrasen unterstützt, unterstützt der Anaconda-Installer während der Installation nur die Verwendung von Passphrasen zum Erstellen und Zugreifen auf verschlüsselte blockorientierte Geräte.

LUKS bietet zwar eine Passphrase-Verstärkung, dennoch ist es ratsam, eine sichere (d.h. schwer zu erratende) Passphrase zu wählen. Beachten Sie die Verwendung des Begriffs „Passphrase“ anstelle von „Passwort“. Dies ist beabsichtigt. Die Verwendung einer mehrteiligen Passphrase ist wichtig, um die Sicherheit Ihrer Daten zu erhöhen.

Erstellen verschlüsselter Blockgeräte in Anaconda

Sie können während der Systeminstallation verschlüsselte Geräte erstellen. Dadurch lässt sich ein System mit verschlüsselten Partitionen einfach konfigurieren.

Um die Blockgeräteverschlüsselung zu aktivieren, aktivieren Sie das Ankreuzfeld „System verschlüsseln“ bei der Auswahl der automatischen Partitionierung oder das Ankreuzfeld „Verschlüsseln“ beim Erstellen einer einzelnen Partition, eines Software-RAID-Arrays oder eines logischen Datenträgers. Nach Abschluss der Partitionierung werden Sie zur Eingabe einer Verschlüsselungs-Passphrase aufgefordert. Diese Passphrase ist für den Zugriff auf die verschlüsselten Geräte erforderlich. Falls Sie bereits LUKS-Geräte besitzen und im Installationsprozess korrekte Passphrasen angegeben haben, enthält der Dialog zur Passphraseneingabe ebenfalls ein Ankreuzfeld. Durch Aktivieren dieses Ankreuzfelds geben Sie an, dass die neue Passphrase in einem freien Speicherplatz jedes der bereits vorhandenen verschlüsselten Blockgeräte gespeichert werden soll.

Das Aktivieren des Ankreuzfelds „System verschlüsseln“ im Bildschirm „Automatische Partitionierung“ und die anschließende Auswahl von „Benutzerdefiniertes Layout erstellen“ führt nicht dazu, dass Blockgeräte automatisch verschlüsselt werden.
Mit kickstart können Sie für jedes neue verschlüsselte Blockgerät eine separate Passphrase festlegen.

Welche Arten von Blockgeräten können verschlüsselt werden?

Die meisten Blockgerätetypen lassen sich mit LUKS verschlüsseln. Mit Anaconda können Sie Partitionen, physische LVM-Datenträger, logische LVM-Datenträger und Software-RAID-Arrays verschlüsseln.

Einschränkungen der Blockgeräteverschlüsselungsunterstützung von Anaconda

  • Befüllen eines Geräts mit Zufallsdaten vor der Verschlüsselung

    Das Befüllen eines Geräts mit Zufallsdaten vor der Verschlüsselung erhöht die Stärke der Verschlüsselung. Allerdings kann dieser Vorgang sehr lange dauern. Aus diesem Grund bietet Anaconda diese Option nicht an. Dieser Schritt kann manuell mithilfe eines kickstart %pre-Skripts durchgeführt werden. Eine Anleitung dazu finden Sie hier.

  • Zugriff auf verschlüsselte Geräte mithilfe eines aus zufällig generierten Daten bestehenden Schlüssels

    Neben Passphrasen können LUKS-Geräte auch mit einem Schlüssel aus zufällig generierten Daten verschlüsselt werden. Die Einrichtung eines oder mehrerer Schlüssel für den Zugriff auf die verschlüsselten Geräte kann entweder direkt im installierten System oder mithilfe eines kickstart %post-Skripts erfolgen. Eine Anleitung dazu finden Sie hier.

Erstellen verschlüsselter Blockgeräte nach der Installation des System

Verschlüsselte Blockgeräte können nach der Installation erstellt und konfiguriert werden.

Blockgeräte erstellen

Erstellen Sie die Blockgeräte, die Sie verschlüsseln möchten, mit parted, pvcreate, lvcreate und mdadm.

Optional: Füllen Sie das Gerät mit Zufallsdaten

Das Füllen des <Geräts> (z. B. /dev/sda3) mit Zufallsdaten vor der Verschlüsselung erhöht die Stärke der Verschlüsselung erheblich. Der Nachteil ist, dass dies sehr lange dauern kann.

Die folgenden Befehle werden alle vorhandenen Daten auf dem Gerät löschen.
  • Die beste Methode, die qualitativ hochwertige Zufallsdaten liefert, aber lange dauert (mehrere Minuten pro Gigabyte auf den meisten Systemen)

    dd if=/dev/urandom of=<Gerät>
  • Der schnellste Weg, der jedoch minderwertigere Zufallsdaten liefert

    badblocks -c 10240 -s -w -t random -v <Gerät>

Formatieren des Geräts als dm-crypt/LUKS-verschlüsseltes Gerät

Die folgenden Befehle werden alle vorhandenen Daten auf dem Gerät löschen.
cryptsetup luksFormat <Gerät>
Weitere Informationen finden Sie in der Handbuchseite cryptsetup(8).

Nach zweimaliger Eingabe der Passphrase wird das Gerät formatiert und ist einsatzbereit. Zur Überprüfung verwenden Sie folgenden Befehl:

cryptsetup isLuks <Gerät> && echo Success

Um eine Zusammenfassung der Verschlüsselungsinformationen für das Gerät anzuzeigen, verwenden Sie folgenden Befehl:

cryptsetup luksDump <Gerät>

Eine Zuordnung erstellen, um den Zugriff auf die entschlüsselten Inhalte des Geräts zu ermöglichen

Um auf die entschlüsselten Inhalte des Geräts zugreifen zu können, muss eine Zuordnung mithilfe des Kernel-device-mapper hergestellt werden.

Es ist sinnvoll, für diese Zuordnung einen aussagekräftigen Namen zu wählen. LUKS stellt für jedes Gerät eine UUID (Universally Unique Identifier) bereit. Diese bleibt, anders als der Gerätename (z.B. /dev/sda3), garantiert konstant, solange der LUKS-Header unverändert bleibt. Um die UUID eines LUKS-Geräts zu ermitteln, führen Sie folgenden Befehl aus:

cryptsetup luksUUID <Gerät>

Ein Beispiel für einen zuverlässigen, aussagekräftigen und eindeutigen Mapping-Namen wäre luks-<uuid>, wobei <uuid> durch die LUKS-UUID des Geräts ersetzt wird (z.B.: luks-50ec957a-5b5a-47ee-85e6-f8085bbc97a8). Diese Namenskonvention mag umständlich erscheinen, aber es ist nicht sehr oft notwendig, sie einzugeben.

cryptsetup luksOpen <Gerät> <Name>

Es sollte nun ein Geräteknoten /dev/mapper/<Name> vorhanden sein, der das entschlüsselte Gerät repräsentiert. Dieses Blockgerät kann wie jedes andere unverschlüsselte Blockgerät gelesen und beschrieben werden.

Um Informationen über das zugeordnete Gerät anzuzeigen, verwenden Sie folgenden Befehl:

dmsetup info <Name>
Weitere Informationen finden Sie in der Handbuchseite dmsetup(8).

Dateisysteme auf dem zugeordneten Gerät erstellen oder mithilfe des zugeordneten Geräts weiterhin komplexe Speicherstrukturen aufbauen

Verwenden Sie den zugeordneten Geräteknoten (/dev/mapper/<Name>) wie jedes andere Blockgerät. Um ein ext2-Dateisystem auf dem zugeordneten Gerät zu erstellen, verwenden Sie folgenden Befehl:

mke2fs /dev/mapper/<Name>

Um dieses Dateisystem in /mnt/test einzuhängen, verwenden Sie folgenden Befehl:

Das Verzeichnis /mnt/test muss vor der Ausführung dieses Befehls existieren.
mount /dev/mapper/<Name> /mnt/test

Die Zuweisungsinformationen zu /etc/crypttab hinzufügen

Damit das System eine Zuordnung für das Gerät einrichten kann, muss ein Eintrag in der Datei /etc/crypttab vorhanden sein. Falls die Datei nicht existiert, erstellen Sie sie und ändern Sie Eigentümer und Gruppe auf root (root:root) und den Modus auf 0744. Fügen Sie zur Datei eine Zeile im folgenden Format hinzu:

<Name>  <Gerät>  none

Das Feld <Gerät> muss im Format „UUID=<luks_uuid>“ angegeben werden, wobei <luks_uuid> die LUKS-UUID ist, die mit dem Befehl cryptsetup luksUUID <Gerät> ermittelt wurde. Dadurch wird sichergestellt, dass das richtige Gerät identifiziert und verwendet wird, selbst wenn sich der Geräteknoten (z.B. /dev/sda5) ändert.

Details zum Format der Datei /etc/crypttab finden Sie in der Handbuchseite crypttab(5).

Einen Eintrag zu /etc/fstab hinzufügen

Fügen Sie einen Eintrag zur Datei /etc/fstab hinzu. Dies ist nur erforderlich, wenn Sie eine dauerhafte Zuordnung zwischen dem Gerät und einem Einhängepunkt herstellen möchten. Verwenden Sie das entschlüsselte Gerät /dev/mapper/<Name> in der Datei /etc/fstab.

In vielen Fällen ist es wünschenswert, Geräte in /etc/fstab anhand ihrer UUID oder einer Dateisystembezeichnung aufzulisten. Dies dient hauptsächlich dazu, eine konstante Kennung bereitzustellen, falls sich der Gerätename ändert (z. B. /dev/sda4). LUKS-Gerätenamen der Form /dev/mapper/luks-<luks_uuid> basieren ausschließlich auf der LUKS-UUID des Geräts und bleiben daher garantiert konstant. Aus diesem Grund eignen sie sich für die Verwendung in /etc/fstab.

Für Details zum Format der Datei /etc/fstab lesen Sie bitte die Handbuchseite fstab(5).

Häufige Aufgaben nach der Installation

LUKS-Header sichern

Werden die Sektoren, die die LUKS-Header enthalten, beschädigt – sei es durch Benutzerfehler oder Hardwaredefekt –, gehen alle Daten im verschlüsselten Blockgerät verloren. Das Sichern der Header kann in solchen Fällen die Datenrettung erleichtern.

Um die LUKS-Header zu sichern, verwenden Sie folgenden Befehl:

cryptsetup luksHeaderBackup --header-backup-file <Datei> <Gerät>

Um die LUKS-Header wiederherzustellen, verwenden Sie folgenden Befehl:

Der folgende Befehl kann Daten zerstören, wenn falsche Header angewendet oder das falsche Gerät ausgewählt wird! Sichern Sie daher unbedingt zuerst die Header des wiederherzustellenden Geräts.
cryptsetup luksHeaderRestore --header-backup-file <Datei> <Gerät>

Einen zufällig generierten Schlüssel als zusätzliche Möglichkeit zum Zugriff auf ein verschlüsseltes Blockgerät festlegen

  1. Einen Schlüssel erstellen + Dadurch wird ein 256-Bit-Schlüssel in der Datei $HOME/keyfile generiert.

    dd if=/dev/urandom of=$HOME/keyfile bs=32 count=1
    chmod 600 $HOME/keyfile
  2. Den Schlüssel zu einem verfügbaren Schlüsselslot auf dem verschlüsselten Gerät hinzufügen

    cryptsetup luksAddKey <Gerät> ~/keyfile
  3. Zu einem vorhandenen Gerät eine neue Passphrase hinzufügen

    cryptsetup luksAddKey <Gerät>

    + Nachdem Sie zur Eingabe einer der bestehenden Passphrasen für die Authentifizierung aufgefordert wurden, werden Sie aufgefordert, die neue Passphrase einzugeben.

Eine Passphrase oder einen Schlüssel von einem Gerät entfernen

cryptsetup luksRemoveKey <Gerät>

Sie werden aufgefordert, die zu entfernende Passphrase einzugeben und anschließend eine der verbleibenden Passphrasen zur Authentifizierung.