Handbücher für die Kommandozeile

Man » cryptsetup-Handbuch online - detaillierte Online-Dokumentation für die cryptsetup-Manpage

🌍
cryptsetup - Dienstprogramm zum Konfigurieren und Verwalten von verschlüsselten Speichergeräten

SYNOPSIS

cryptsetup <Aktion> [<Optionen>] <Aktionsargumente>

BESCHREIBUNG

Cryptsetup ist ein Dienstprogramm zum Konfigurieren und Verwalten der Festplattenverschlüsselung auf Speichergeräten. Es kann Blockgeräte (z. B. Festplatten oder Partitionen) und Container (als Dateien gespeicherte Festplatten-Images) verschlüsseln.

Wenn Sie ein verschlüsseltes Volume entsperren, erstellt cryptsetup eine neue Geräte-Mapping, auf die Anwendungen wie jedes andere normale Speichergerät zugreifen können. Die tatsächliche Verschlüsselungs- und Entschlüsselungsarbeit wird transparent vom dm-crypt-Treiber des Kerns ausgeführt.

Cryptsetup funktioniert mit zwei Hauptvolumetypen: einfache verschlüsselte Volumes und LUKS (Linux Unified Key Setup)-Volumes. Einfache Volumes bieten eine grundlegende Verschlüsselung, während LUKS-Volumes einen Metadaten-Header enthalten, der erweiterte Funktionen wie mehrere Schlüsselslots und Schlüsselverwaltung ermöglicht. Darüber hinaus kann LUKS verwendet werden, um die hardwarebasierte Verschlüsselung auf OPAL-fähigen Speicherlaufwerken zu verwalten.

Cryptsetup bietet auch eine begrenzte Unterstützung für Volumes, die von anderen Verschlüsselungssystemen erstellt wurden, einschließlich loop-AES, TrueCrypt, VeraCrypt, BitLocker und FileVault2.

Weitere Informationen zu einer bestimmten cryptsetup-Aktion finden Sie unter cryptsetup-(8), wobei der Name der cryptsetup-Aktion ist.

Cryptsetup-Geräte können während des Bootvorgangs über crypttab(5) aktiviert werden, was Teil von systemd(1) oder anderen System-Init-Skripten ist.

GRUNDLEGENDE AKTIONEN

Die folgenden sind gültige Aktionen für alle unterstützten Gerätetypen.

OPEN

open <Gerät> <Name> --type <Gerätetyp>

Öffnet (erstellt ein Mapping mit) , das auf dem Gerät basiert. Siehe cryptsetup-open(8).

CLOSE

close <Name>

Entfernt das vorhandene Mapping und löscht den Schlüssel aus dem Kernel-Speicher. Siehe cryptsetup-close(8).

STATUS

status <Name>

Gibt den Status für das Mapping aus. Siehe cryptsetup-status(8).

RESIZE

resize <Name>

Ändert die Größe eines aktiven Mappings . Siehe cryptsetup-resize(8).

REFRESH

refresh <Name>

Aktualisiert die Parameter des aktiven Mappings . Siehe cryptsetup-refresh(8).

REENCRYPT

reencrypt <Gerät> oder --active-name <Name> [<neuer_Name>]

Führt die LUKS-Geräte-Neuverschlüsselung aus. Siehe cryptsetup-reencrypt(8).

PLAIN-MODUS

Plain dm-crypt verschlüsselt das Gerät sektorweise mit einem einzelnen, nicht-gesalzten Hash des Passworts. Es werden keine Prüfungen durchgeführt und keine Metadaten verwendet. Es gibt keine Formatierungsoperation. Wenn das Rohgerät zugeordnet (geöffnet) wird, können die üblichen Geräteoperationen auf dem zugeordneten Gerät verwendet werden, einschließlich der Dateisystemerstellung. Zugeordnete Geräte befinden sich normalerweise in /dev/mapper/.


Hier sind gültige Aktionen für den einfachen Gerätetyp:

ÖFFNEN

    open --type plain <Gerät> <Name>
    create <Name> <Gerät> (VERALTETE Syntax)

Öffnet (erstellt eine Zuordnung mit) , die vom Gerät unterstützt wird. Siehe cryptsetup-open(8).

LUKS-ERWEITERUNG

    LUKS, das Linux Unified Key Setup, ist ein Standard für die Festplattenverschlüsselung. Es fügt einen standardisierten
    Header am Anfang des Geräts, einen Schlüsselspeicherbereich direkt hinter dem Header und den Hauptdatenbereich dahinter hinzu. Das gesamte Set wird als „LUKS-Container“ bezeichnet. Das Gerät, auf

dem sich ein LUKS-Container befindet, wird als „LUKS-Gerät“ bezeichnet. Für die meisten Zwecke können beide Begriffe synonym verwendet werden.

    LUKS kann mehrere Passphrasen verwalten, die einzeln widerrufen oder geändert werden können. Jede Passphrase
    verwendet einen einzelnen Schlüsselspeicher, der einen Volume-Schlüssel für die Datenverschlüsselung enthält. Schlüsselspeicher können aufgrund der Verwendung von Anti-Forensik-Streifen sicher von

persistenten Medien gelöscht werden. Passphrasen sind durch die passwortbasierte Schlüsselerzeugungsfunktion (PBKDF) vor Brute-Force-Angriffen geschützt. Eine in einer Datei gespeicherte Passphrase wird als Schlüsseldokument bezeichnet. Der einzige Unterschied zwischen einer Passphrase und einem Schlüsseldokument besteht darin, dass ein Schlüsseldokument binäre Daten enthalten kann. Beides wird auf die gleiche Weise verarbeitet.

    LUKS Version 1 (oder LUKS1) ist das ursprüngliche Metadatenformat, während LUKS2 eine neue Version ist, die
    zusätzliche Erweiterungen wie verschiedene PBKDF-Algorithmen oder authentifizierte Verschlüsselung ermöglicht. Sie können
    das Gerät mit einer bestimmten LUKS-Version mit --type luks1 oder --type luks2 im
    luksFormat-Befehl formatieren. Normalerweise müssen Sie keine Version angeben, da diese automatisch erkannt wird. Das Standardformat ist LUKS2.

Der Parameter kann auch durch eine LUKS-UUID im Format UUID= angegeben werden.

Der LUKS-Header kann von den Daten getrennt (separat gespeichert) werden. Um einen getrennten Header anzugeben, kann der Parameter --header in allen LUKS-Befehlen verwendet werden und hat immer Vorrang vor dem positionalen Parameter .

Hier sind gültige LUKS-Aktionen:

FORMAT

    luksFormat <Gerät> [<Schlüsseldokument>]

Initialisiert eine LUKS-Partition und setzt die erste Passphrase (für Schlüsselspeicher 0). Siehe cryptsetup-luksFormat(8).

ÖFFNEN

    open --type luks <Gerät> <Name>
    luksOpen <Gerät> <Name> (alte Syntax)

Öffnet das LUKS-Gerät und richtet eine Zuordnung ein, nachdem die angegebene Passphrase erfolgreich überprüft wurde. Siehe cryptsetup-open(8).

SUSPENDIEREN

    luksSuspend <Name>

Suspendiert ein aktives Gerät (alle E/A-Operationen werden blockiert und Zugriffe auf das Gerät warten unbegrenzt) und löscht den Verschlüsselungsschlüssel aus dem Kernel-Speicher. Siehe cryptsetup-luksSuspend(8).

FORTSETZEN

    luksResume <Name>

Setzt ein suspendiertes Gerät fort und stellt den Verschlüsselungsschlüssel wieder her. Siehe cryptsetup-luksResume(8).

SCHLÜSSEL HINZUFÜGEN

    luksAddKey <Gerät> [<Schlüsseldokument mit neuem Schlüssel>]

Fügt eine neue Passphrase unter Verwendung einer vorhandenen Passphrase hinzu. Siehe cryptsetup-luksAddKey(8).

SCHLÜSSEL ENTFERNEN

luksRemoveKey <Gerät> [<Schlüsseldatei mit der zu entfernenden Passphrase>]

Entfernt die angegebene Passphrase vom LUKS-Gerät. Siehe cryptsetup-luksRemoveKey(8).

SCHLÜSSEL ÄNDERN

luksChangeKey <Gerät> [<neue Schlüsseldatei>]

Ändert eine vorhandene Passphrase. Siehe cryptsetup-luksChangeKey(8).

SCHLÜSSEL KONVERTIEREN

luksConvertKey <Gerät>

Konvertiert einen vorhandenen LUKS2-Schlüssel-Slot in neue PBKDF-Parameter. Siehe cryptsetup-luksConvertKey(8).

SCHLÜSSEL-SLOT LÖSCHEN

luksKillSlot <Gerät> <Nummer>

Löscht den Schlüssel-Slot mit der vom LUKS-Gerät. Siehe cryptsetup-luksKillSlot(8).

LÖSCHEN

erase <Gerät>
luksErase <Gerät> (alte Syntax)

Löscht alle Schlüssel-Slots und macht den LUKS-Container dauerhaft unzugänglich. Siehe cryptsetup-erase(8).

UUID

luksUUID <Gerät>

Gibt die UUID eines LUKS-Geräts aus oder setzt sie. Siehe cryptsetup-luksUUID(8).

IST LUKS

isLuks <Gerät>

Gibt true zurück, wenn ein LUKS-Gerät ist, andernfalls false. Siehe cryptsetup-isLuks(8).

DUMP

luksDump <Gerät>

Gibt die Header-Informationen eines LUKS-Geräts aus. Siehe cryptsetup-luksDump(8).

HEADER-SICHERUNG

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

Speichert eine binäre Sicherung des LUKS-Headers und des Schlüssel-Slot-Bereichs. Siehe cryptsetup-luksHeaderBackup(8).

HEADER-WIEDERHERSTELLUNG

luksHeaderRestore <Gerät> --header-backup-file <Datei>

Stellt eine binäre Sicherung des LUKS-Headers und des Schlüssel-Slot-Bereichs aus der angegebenen Datei wieder her. Siehe cryptsetup-luksHeaderRestore(8).

TOKEN

token <add|remove|import|export> <Gerät>

Verwaltet Token-Objekte, die zum Abrufen von Passphrasen verwendet werden. Siehe cryptsetup-token(8).

KONVERTIEREN

convert <Gerät> --type <Format>

Konvertiert das Gerät zwischen LUKS1- und LUKS2-Format (falls möglich). Siehe cryptsetup-convert(8).

KONFIGURATION

config <Gerät>

Legt permanente Konfigurationsoptionen fest (speichert sie im LUKS-Header). Siehe cryptsetup-config(8).

LOOP-AES-ERWEITERUNG

Cryptsetup unterstützt das Zuordnen einer loop-AES-verschlüsselten Partition mithilfe eines Kompatibilitätsmodus.

ÖFFNEN

open --type loopaes <Gerät> <Name> --key-file <Schlüsseldatei>
loopaesOpen <Gerät> <Name> --key-file <Schlüsseldatei> (alte Syntax)

Öffnet das loop-AES-Gerät und richtet eine Zuordnung ein. Siehe cryptsetup-open(8).

Weitere Informationen zu loop-AES finden Sie in Abschnitt 7 der FAQ und unter [http://loop-aes.sourceforge.net].

TCRYPT-ERWEITERUNG (KOMPATIBEL MIT TRUECRYPT UND VERACRYPT)

Cryptsetup unterstützt das Zuordnen von TrueCrypt-, tcplay- oder VeraCrypt-verschlüsselten Partitionen mithilfe einer nativen Linux-Kernel-API. Die Header-Formatierung und Änderungen am TCRYPT-Header werden nicht unterstützt; cryptsetup ändert den TCRYPT-Header auf dem Gerät nicht.

Die TCRYPT-Erweiterung erfordert, dass die Kernel-Benutzerraum-Crypto-API verfügbar ist. Wenn Sie den Kernel selbst konfigurieren, aktivieren Sie "User-Space-Schnittstelle für symmetrische Schlüssel-Chiffre-Algorithmen" im Abschnitt "Kryptografische API" (CRYPTO_USER_API_SKCIPHER .config-Option).

Da der TCRYPT-Header verschlüsselt ist, müssen Sie immer eine gültige Passphrase und Schlüsseldateien angeben.


Cryptsetup sollte alle Header-Varianten erkennen, mit Ausnahme von Legacy-Verschlüsselungsketten, die das LRW-Verschlüsselungs- verfahren mit einem 64-Bit-Verschlüsselungsblock verwenden (nämlich wird Blowfish im LRW-Modus nicht erkannt; dies ist eine Einschränkung der Kernel-Krypto-API).

VeraCrypt ist eine Erweiterung von TrueCrypt mit einer erhöhten Iterationsanzahl, daher kann das Entsperren einige Zeit dauern.

Um ein VeraCrypt-Gerät mit einem benutzerdefinierten Wert für den Personal Iteration Multiplier (PIM) zu öffnen, verwenden Sie entweder die Option --veracrypt-pim PIM, um den PIM direkt in der Befehlszeile anzugeben, oder --veracrypt-query-pim, um zur Eingabe des PIM aufgefordert zu werden.

Der PIM-Wert beeinflusst die Anzahl der Iterationen, die während der Schlüsselableitung angewendet werden. Weitere Informationen finden Sie unter PIM [https://veracrypt.io/en/Personal%20Iterations%20Multiplier%20(PIM).html].

Wenn Sie die VeraCrypt-Geräteunterstützung deaktivieren müssen, verwenden Sie die Option --disable-veracrypt.

Die Aktivierung mit tcryptOpen wird nur für Verschlüsselungsketten unterstützt, die die Verschlüsselungsverfahren LRW oder XTS verwenden.

Der Befehl tcryptDump sollte für alle erkannten TCRYPT-Geräte funktionieren und erfordert keine Root-Rechte.

Um das Systemgerät (Gerät mit Bootloader, auf dem sich das gesamte verschlüsselte System befindet) zu mappen, verwenden Sie die Option --tcrypt-system. Bitte lesen Sie die spezifischen Informationen im Abschnitt --tcrypt-system-Option von cryptsetup-tcryptOpen(8), da das Mapping eines systemverschlüsselten Geräts knifflig ist.

Um einen ausgeblendeten Header zu verwenden (und gegebenenfalls ein ausgeblendetes Gerät zu mappen), verwenden Sie die Option --tcrypt-hidden.

Um explizit den Backup- (sekundären) Header zu verwenden, verwenden Sie die Option --tcrypt-backup.

Es gibt keinen Schutz für ein ausgeblendetes Volume, wenn das äußere Volume gemountet ist. Der Grund dafür ist, dass, wenn es einen Schutz gäbe, er einige Metadaten enthalten müsste, die beschreiben, was im äußeren Volume geschützt werden soll, und das ausgeblendete Volume wäre dann erkennbar.

OPEN

open --type tcrypt <device> <name>
tcryptOpen_ <device> <name> (alte Syntax)

Öffnet das TCRYPT-Gerät (ein mit TrueCrypt kompatibles Gerät) und richtet ein Mapping ein. Siehe cryptsetup-open(8).

DUMP

tcryptDump <device>

Gibt die Header-Informationen eines TCRYPT-Geräts aus. Siehe cryptsetup-tcryptDump(8).

Weitere Informationen finden Sie auf den Seiten TrueCrypt [https://en.wikipedia.org/wiki/TrueCrypt] und VeraCrypt [https://en.wikipedia.org/wiki/VeraCrypt].

Bitte beachten Sie, dass cryptsetup keinen TrueCrypt- oder VeraCrypt-Code verwendet; bitte melden Sie alle Probleme im Zusammenhang mit dieser Kompatibilitäts-Erweiterung an das cryptsetup-Projekt.

BITLK (WINDOWS BITLOCKER KOMPATIBLE) ERWEITERUNG

Cryptsetup unterstützt das Mapping von BitLocker- und BitLocker-to-Go-verschlüsselten Partitionen mithilfe einer nativen Linux-Kernel-API. Header-Formatierung und BITLK-Header-Änderungen werden nicht unterstützt; cryptsetup ändert den BITLK-Header auf dem Gerät niemals.

Die BITLK-Erweiterung erfordert, dass die Kernel-Benutzerbereichs-Krypto-API verfügbar ist (siehe den TCRYPT-Abschnitt für Einzelheiten).

Cryptsetup sollte alle BITLK-Header-Varianten erkennen, mit Ausnahme des Legacy-Headers, der in Windows Vista-Systemen verwendet wird, und von teilweise entschlüsselten BitLocker-Geräten. Die Aktivierung von Legacy-Geräten, die im CBC-Modus verschlüsselt sind, erfordert mindestens eine Linux-Kernel-Version 5.3, und für Geräte, die den Elephant-Diffusor verwenden, Kernel 5.6.


Der Befehl bitlkDump sollte für alle erkannten BITLK-Geräte funktionieren und erfordert keine Superuser-Berechtigung.

Zum Entsperren mit open muss ein Passwort, eine Wiederherstellungs-Passphrase oder ein Startschlüssel angegeben werden.

Darüber hinaus wird das Entsperren mit der Lautstärketaste unterstützt. Sie müssen den BitLocker Full Volume Encryption Key (FVEK) mithilfe der Option --volume-key-file angeben. Der Schlüssel muss entschlüsselt und ohne Header sein (nur 128/256/512 Bit Schlüsseldaten, je nach verwendetem Verschlüsselungsalgorithmus und -modus).

Andere Entsperrmethoden (TPM, SmartCard) werden nicht unterstützt.

OPEN

open --type bitlk <Gerät> <Name>
bitlkOpen <Gerät> <Name> (alte Syntax)

Öffnet das BITLK-Gerät (ein BitLocker-kompatibles Gerät) und richtet eine Zuordnung ein. Siehe cryptsetup-open(8).

DUMP

bitlkDump <Gerät>

Gibt die Header-Informationen eines BITLK-Geräts aus. Siehe cryptsetup-bitlkDump(8).

Bitte beachten Sie, dass cryptsetup keinen Windows BitLocker-Code verwendet; bitte melden Sie alle Probleme im Zusammenhang mit dieser Kompatibilitäts-Erweiterung an das cryptsetup-Projekt.

FVAULT2 (APPLE MACOS FILEVAULT2 KOMPATIBLE) ERWEITERUNG

Cryptsetup unterstützt die Zuordnung von FileVault2 (FileVault2-Festplattenverschlüsselung) für das macOS-Betriebssystem unter Verwendung einer nativen Linux-Kernel-API.

Cryptsetup unterstützt nur FileVault2, das auf Core Storage und dem HFS+-Dateisystem basiert (eingeführt in macOS X 10.7 Lion). Es unterstützt NICHT die neue Version von FileVault, die auf dem APFS-Dateisystem basiert, das in neueren macOS-Versionen verwendet wird.

Header-Formatierung und FVAULT2-Header-Änderungen werden nicht unterstützt; cryptsetup ändert niemals den FVAULT2-Header auf dem Gerät.

Die FVAULT2-Erweiterung benötigt die Kernel-Benutzerraum-Krypto-API (für Details siehe der Abschnitt TCRYPT) und einen Kernel-Treiber für das HFS+-Dateisystem.

Cryptsetup sollte die grundlegende Konfiguration für tragbare Laufwerke erkennen.

Der Befehl fvault2Dump sollte für alle erkannten FVAULT2-Geräte funktionieren und erfordert keine Superuser-Berechtigung.

Zum Entsperren mit open muss ein Passwort angegeben werden. Andere Entsperrmethoden werden nicht unterstützt.

OPEN

open --type fvault2 <Gerät> <Name>
fvault2Open <Gerät> <Name> (alte Syntax)

Öffnet das FVAULT2-Gerät (ein FileVault2-kompatibles Gerät) (normalerweise die zweite Partition auf dem Gerät) und richtet eine Zuordnung ein. Siehe cryptsetup-open(8).

SED (SELF ENCRYPTING DRIVE) OPAL-ERWEITERUNG

Cryptsetup unterstützt die Verwendung nativer Hardware-Verschlüsselung auf Laufwerken, die eine OPAL-Schnittstelle bereitstellen, sowohl verschachtelt mit dm-crypt als auch eigenständig. Passwörter, Token und Metadaten werden im LUKS2-Header-Format gespeichert und sind somit mit jeder Software oder jedem System kompatibel, das LUKS2 verwendet (z. B. Token).

Die OPAL-Unterstützung erfordert mindestens Kernel v6.4. Das Ändern der Größe von Geräten wird nicht unterstützt.

Die Option --hw-opal kann für OPAL + dm-crypt angegeben werden, und --hw-opal-only kann angegeben werden, um nur OPAL ohne eine dm-crypt-Schicht zu verwenden.


Das Öffnen, Schließen und Anmelden von Token funktioniert genauso wie bei LUKS2 und dm-crypt. Die neuen Parameter sind nur beim Formatieren erforderlich; die LUKS2-Metadaten stellen sicher, dass beim Öffnen oder Schließen die richtige Konfiguration durchgeführt wird.

Wenn keine Subsystem-Bezeichnung angegeben wird, wird diese automatisch auf HW-OPAL gesetzt, damit sofort erkennbar ist, wann ein Gerät OPAL verwendet.

FORMAT

luksFormat --type luks2 --hw-opal <Gerät> [<Schlüsseldatei>]

Geben Sie zusätzlich --hw-opal-only anstelle von --hw-opal an, um die dm-crypt-Schicht zu vermeiden. Zusätzlich zur üblichen Passphrase muss beim Formatieren der ersten Partition des Laufwerks ein Administratorpasswort angegeben werden, und dieses muss beim Formatieren einer anderen Partition erneut angegeben werden, bis ein Werksreset durchgeführt wird.

LÖSCHEN

erase <Gerät>

Löscht Partitionen oder Geräte sicher. Erfordert ein Administratorpasswort. Geben Sie zusätzlich --hw-opal-factory-reset für einen vollständigen Werksreset des Laufwerks an, wobei die PSID des Laufwerks (normalerweise auf dem Etikett aufgedruckt) anstelle des Administratorpassworts verwendet wird.

Die PSID muss ohne Bindestriche, Leerzeichen oder Unterstriche eingegeben werden.

WARNUNG: Ein Werksreset führt dazu, dass ALLE Daten auf dem Gerät verloren gehen, unabhängig von der Partition, auf der er ausgeführt wird, falls vorhanden, und unabhängig von einer Sicherung des LUKS2-Headers.

VERSCHIEDENE AKTIONEN

REPARIEREN

repair <Gerät>

Versucht, die Geräte-Metadaten zu reparieren, falls dies möglich ist. Derzeit nur für LUKS-Gerätetyp unterstützt. Siehe cryptsetup-repair(8).

BENCHMARK

benchmark <Optionen>

Führt Benchmarks für Chiffren und KDFs (Key Derivation Function) durch. Siehe cryptsetup-benchmark(8).

EINFACHER MODUS ODER LUKS?

Wenn Sie die kryptografischen Hintergründe nicht gut verstehen, verwenden Sie LUKS. Im einfachen Modus gibt es eine Reihe von möglichen Benutzerfehlern, die die Sicherheit erheblich verringern. Während LUKS diese nicht alle beheben kann, kann es die Auswirkungen für viele davon verringern.

WARNUNGEN

Viele gute Informationen über die Risiken der Verwendung von verschlüsseltem Speicher, über die Behandlung von Problemen und über Sicherheitsaspekte finden Sie in den Cryptsetup-FAQs. Lesen Sie diese. Einige Risiken verdienen jedoch eine besondere Erwähnung.

Sicherung: Speichermedien gehen kaputt. Die Verschlüsselung hat keinen Einfluss darauf. Eine Sicherung ist auch für verschlüsselte Daten unerlässlich, wenn diese von Wert sind. Informationen zur Sicherung eines verschlüsselten Volumes finden Sie in den Cryptsetup-FAQs.

Zeichenkodierung: Wenn Sie eine Passphrase mit Sonderzeichen eingeben, kann sich die Passphrase je nach Zeichenkodierung ändern. Auch die Tastatureinstellungen können geändert werden, was die blinde Eingabe erschweren oder unmöglich machen kann. Wenn Sie beispielsweise von einer ASCII-8-Bit-Variante zu UTF-8 wechseln, kann dies zu einer anderen binären Kodierung und damit zu einer anderen von cryptsetup erkannten Passphrase führen, selbst wenn das, was Sie auf dem Terminal sehen, genau gleich ist. Es wird daher dringend empfohlen, Passphrase-Zeichen nur aus 7-Bit-ASCII auszuwählen, da die Kodierung für 7-Bit-ASCII für alle ASCII-Varianten und UTF-8 gleich bleibt.

LUKS-Header: Wenn der Header eines LUKS-Volumes beschädigt wird, gehen alle Daten dauerhaft verloren, es sei denn, Sie haben eine Header-Sicherung. Wenn ein Schlüsselplatz beschädigt ist, kann er nur aus einer Header-Sicherung oder wenn ein anderer aktiver Schlüsselplatz mit einer bekannten Passphrase nicht beschädigt ist, wiederhergestellt werden. Dieses Risiko ist das Ergebnis eines Kompromisses zwischen Sicherheit und Schutz, da LUKS für das schnelle und sichere Löschen durch einfaches Überschreiben des Header- und Schlüsselplatzbereichs entwickelt wurde.


Vorher verwendete Partitionen: Wenn eine Partition zuvor verwendet wurde, ist es eine sehr gute Idee, vor dem Erstellen eines LUKS- oder einfachen dm-crypt-Containers Dateisystemsignaturen, Daten usw. zu löschen. Verwenden Sie zum schnellen Entfernen von Dateisystemsignaturen wipefs(8) mit der Option --all. Beachten Sie, dass dies die Daten nicht entfernt; es werden nur bekannte Formatierungs-Signaturen ungültig gemacht. Für eine vollständige Löschung überschreiben Sie die gesamte Partition, bevor Sie einen Container erstellen. Wenn Sie nicht wissen, wie das geht, beschreibt die Cryptsetup-FAQ verschiedene Optionen.

BEISPIELE

Beispiel 1: Erstellen Sie einen LUKS 2-Container auf dem Blockgerät /dev/sdX. sudo cryptsetup --type luks2 luksFormat /dev/sdX

Beispiel 2: Fügen Sie eine zusätzliche Passphrase für Schlüsselslot 5 hinzu. sudo cryptsetup luksAddKey --key-slot 5 /dev/sdX

Beispiel 3: Erstellen Sie eine Sicherung des LUKS-Headers und speichern Sie diese in einer Datei. sudo cryptsetup luksHeaderBackup /dev/sdX --header-backup-file /var/tmp/NameOfBackupFile

Beispiel 4: Öffnen Sie den LUKS-Container auf /dev/sdX und ordnen Sie ihn sdX_crypt zu. sudo cryptsetup open /dev/sdX sdX_crypt

WARNUNG: Der Befehl in Beispiel 5 löscht alle Schlüsselslots.

Sie können Ihren LUKS-Container danach nicht mehr verwenden, es sei denn, Sie haben eine Sicherung zum Wiederherstellen.

Beispiel 5: Löschen Sie alle Schlüsselslots auf /dev/sdX. sudo cryptsetup erase /dev/sdX

Beispiel 6: Stellen Sie den LUKS-Header aus einer Sicherungsdatei wieder her. sudo cryptsetup luksHeaderRestore /dev/sdX --header-backup-file /var/tmp/NameOfBackupFile

RÜCKGABE-CODES

Cryptsetup gibt 0 bei Erfolg und einen Wert ungleich Null bei einem Fehler zurück.

Fehlercodes sind: 1 falsche Parameter, 2 keine Berechtigung (falsche Passphrase), 3 nicht genügend Speicher, 4 falsches Gerät angegeben, 5 Gerät existiert bereits oder Gerät ist belegt.

HINWEISE

Passwortverarbeitung für den PLAIN-Modus

Beachten Sie, dass im PLAIN-Modus keine iterierte Hash- oder Salt-Verarbeitung durchgeführt wird. Wenn ein Hashing durchgeführt wird, handelt es sich um ein einzelnes, direktes Hash. Dies bedeutet, dass Passphrasen mit geringer Entropie im PLAIN-Modus leicht zu knacken sind.

Von einem Terminal: Die Passphrase wird bis zum ersten Zeilenumbruch, d. h. \n, gelesen. Die Eingabe ohne das Zeilenumbruchzeichen wird mit dem Standard-Hash oder dem mit --hash angegebenen Hash verarbeitet. Das Hash-Ergebnis wird auf die Schlüsselgröße der verwendeten Chiffre oder die mit -s angegebene Größe gekürzt.

Von stdin: Das Lesen wird fortgesetzt, bis ein Zeilenumbruch (oder bis die maximale Eingabegröße erreicht ist), wobei der abschließende Zeilenumbruch entfernt wird. Die maximale Eingabegröße wird durch dasselbe kompilierte Standardwert wie die maximale Schlüsseldatei-Größe definiert und kann mit der Option --keyfile-size überschrieben werden.

Die gelesenen Daten werden mit dem Standard-Hash oder dem mit --hash angegebenen Hash gehasht. Das Hash-Ergebnis wird auf die Schlüsselgröße der verwendeten Chiffre oder die mit -s angegebene Größe gekürzt.


Beachten Sie, dass, wenn --key-file=- verwendet wird, um den Schlüssel von stdin zu lesen, nachfolgende Zeilenumbrüche nicht aus der Eingabe entfernt werden.

Wenn „plain“ als Argument für --hash verwendet wird, werden die Eingabedaten nicht gehasht. Stattdessen werden sie (falls kürzer als die Schlüssellänge) mit Nullen aufgefüllt oder (falls länger als die Schlüssellänge) abgeschnitten und direkt als binärer Schlüssel verwendet. Dies ist nützlich, um einen binären Schlüssel direkt anzugeben. Es wird keine Warnung ausgegeben, wenn die von stdin gelesene Datenmenge kleiner als die Schlüssellänge ist.

Aus einer SchlüsseldDatei: Sie wird auf die Schlüssellänge des verwendeten Chiffrierverfahrens oder die durch -s angegebene Größe gekürzt und direkt als binärer Schlüssel verwendet.

Das Argument --hash wird ignoriert. Die Option --hash kann nur für die Eingabe von stdin im Modus „plain“ verwendet werden.

Wenn die SchlüsseldDatei kürzer als der Schlüssel ist, beendet cryptsetup das Programm mit einem Fehler. Die maximale Eingabegröße wird durch denselben fest kompilierten Standardwert wie die maximale Größe der SchlüsseldDatei definiert und kann mit der Option --keyfile-size überschrieben werden.

Passphrasenverarbeitung für LUKS

Vom Terminal: Die Passphrase wird bis zum ersten Zeilenumbruch gelesen und dann von PBKDF2 verarbeitet, wobei der Zeilenumbruch ignoriert wird.

Von stdin: LUKS liest Passphrasen von stdin bis zum ersten Zeilenumbruch oder der fest kompilierten maximalen SchlüsseldDateigröße. Wenn --keyfile-size angegeben ist, wird sie ignoriert.

Aus einer SchlüsseldDatei: Die gesamte SchlüsseldDatei wird bis zur fest kompilierten maximalen Größe gelesen. Zeilenumbrüche beenden die Eingabe nicht. Mit der Option --keyfile-size kann die gelesene Datenmenge begrenzt werden.

LUKS verwendet eine Password-Based Key Derivation Function (PBKDF), um sich vor Brute-Force-Angriffen zu schützen und einen gewissen Schutz für Passphrasen mit geringer Entropie zu bieten (siehe cryptsetup FAQ). LUKS1 unterstützt nur den PBKDF2-Algorithmus, während LUKS2 auch den speichereffizienten Argon2 unterstützt. PBKDFs werden mit Kosten konfiguriert: wie lange die Iteration dauern soll (CPU-Kosten oder Iterationsanzahl), wie viel Speicher verwendet wird (Speicherkosten) und wie viele parallele Prozesse verwendet werden (parallele Kosten). PBKDF2 unterstützt nur die Iterationsanzahl. Cryptsetup verwendet ein PBKDF-Benchmark, um optimale Kosten basierend auf dem Computer zu berechnen, auf dem die neue Passphrase initialisiert wird. Bei Bedarf können diese Kosten auch überschrieben werden. Beachten Sie, dass es einige fest codierte Limits gibt; weitere Details finden Sie im Abschnitt MINIMALE UND MAXIMALE PBKDF-KOSTEN in der Beschreibung der Option --pbkdf.

Immer wenn eine Passphrase zu einem LUKS-Header hinzugefügt wird (luksAddKey, luksFormat), kann der Benutzer angeben, wie lange die Passphrasenverarbeitung dauern soll. Die Zeit wird verwendet, um die Iterationsanzahl für PBKDF2 zu bestimmen, und längere Zeiten bieten einen besseren Schutz für Passphrasen mit geringer Entropie, aber der Befehl luksOpen dauert länger, bis er abgeschlossen ist. Für Passphrasen, die eine höhere Entropie als die verwendete Schlüssellänge aufweisen, erhöhen höhere Iterationszeiten die Sicherheit nicht.

Die Standardeinstellung von einer oder zwei Sekunden ist für die meisten praktischen Fälle ausreichend. Die einzige Ausnahme ist eine Passphrase mit geringer Entropie, die auf einem Gerät mit einer langsamen CPU verwendet wird, da dies zu einer geringen Iterationsanzahl führt. Auf einem langsamen Gerät ist es ratsam, die Iterationszeit mit der Option --iter-time zu erhöhen, um eine höhere Iterationsanzahl zu erhalten. Dies verlangsamt jedoch alle nachfolgenden luksOpen-Operationen entsprechend.


Inkonsistentes Verhalten bei ungültigen Passwörtern/Schlüsseln

LUKS prüft beim Entschlüsseln eines Schlüsselslots, ob ein gültiges Passwort vorliegt.

Das Verhalten von einfachem dm-crypt ist anders. Es entsperrt das Gerät immer mit dem angegebenen Passwort. Wenn das angegebene Passwort falsch ist, verwendet das von dm-crypt zugeordnete Gerät den falschen Verschlüsselungsschlüssel, und die Daten sind nicht lesbar.

Unterstützte Chiffren, Modi, Hashes und Schlüsselgrößen

Die verfügbaren Kombinationen aus Chiffren, Modi, Hashes und Schlüsselgrößen hängen von der Kernel-Unterstützung ab. Sehen Sie in /proc/crypto nach, um eine Liste der verfügbaren Optionen zu erhalten. Möglicherweise müssen Sie zusätzliche Kernel-Krypto-Module laden, um weitere Optionen zu erhalten.

Cryptsetup führt viele Operationen außerhalb des Kernels aus, daher muss auch die konfigurierte kryptografische Bibliothek die ausgewählten Algorithmen unterstützen. Einige Algorithmen fehlen möglicherweise, da cryptsetup mit verschiedenen kryptografischen Backends (Bibliotheken) kompiliert werden kann.

Hinweise zu Passwörtern

Mathematik lässt sich nicht bestechen. Achten Sie darauf, dass Sie Ihre Passwörter sicher aufbewahren. Es gibt ein paar nette Tricks, um eine Fallback-Lösung zu erstellen, falls Ihr Gehirn plötzlich und unerwartet nicht mehr mitspielt. Diese Fallbacks benötigen LUKS, da es nur mit LUKS möglich ist, mehrere Passwörter zu haben. Wenn Ihr Bedrohungsmodell dies jedoch nicht verhindert, kann es eine gute Idee sein, Ihr Passwort in einem versiegelten Umschlag an einem sicheren Ort aufzubewahren.

Hinweise zu Zufallszahlengeneratoren

Die in cryptsetup verwendeten Zufallszahlengeneratoren (RNGs) sind immer die Kernel-RNGs, ohne jegliche Änderungen oder Ergänzungen des von ihnen erzeugten Datenstroms.

Es gibt zwei Arten von Zufälligkeit, die cryptsetup/LUKS benötigt. Eine Art wird für Salts, den AF-Splitter und zum Löschen von Schlüsselslots verwendet. Die andere Art wird für den Volume-Schlüssel verwendet.

Bei neueren Kerneln (Linux-Kernel 5.6) müssen Sie sich keine Gedanken darüber machen, welchen RNG Sie auswählen (/dev/random oder /dev/urandom). In einer Umgebung mit geringer Entropie (eingebettetes System) kann die Initialisierung des Kernel-RNG sehr lange dauern, dies geschieht jedoch, bevor cryptsetup überhaupt gestartet werden kann. Verwenden Sie cryptsetup --help, um den kompilierten Standard-Zufallszahlengenerator anzuzeigen. Weitere Informationen finden Sie in urandom(4).

Authentifizierte Festplattenverschlüsselung (EXPERIMENTELL)

Normale Festplattenverschlüsselungsmodi sind längenerhaltend (der Klartextsektor hat die gleiche Größe wie ein Chiffretextsektor) und können nur einen Vertraulichkeitsschutz bieten, aber keinen kryptografisch sicheren Datenschutz.

Authentifizierte Modi erfordern zusätzlichen Platz pro Sektor für das Authentifizierungs-Tag und verwenden Algorithmen für authentifizierte Verschlüsselung mit zusätzlichen Daten (AEAD).

Wenn Sie ein LUKS2-Gerät mit Datenschutz konfigurieren, gibt es ein zugrunde liegendes dm-integrity-Gerät, das zusätzlichen Metadaten- und Journal-Schutz pro Sektor bietet, um die Atomizität von Daten- und Metadaten-Aktualisierungen zu gewährleisten. Da zusätzlicher Platz für Metadaten und Journal vorhanden sein muss, ist der für das Gerät verfügbare Speicherplatz geringer als bei längenerhaltenden Modi.


Das dm-crypt-Gerät befindet sich dann oberhalb eines solchen dm-integrity-Geräts. Die gesamte Aktivierung und Deaktivierung dieses Gerätestacks wird von cryptsetup durchgeführt; es gibt keinen Unterschied bei der Verwendung von luksOpen für Integritätsgeschützte Geräte. Wenn Sie ein LUKS2-Gerät mit Datenintegritätsschutz formatieren möchten, verwenden Sie die Option --integrity (siehe cryptsetup-luksFormat(8)).

Obwohl Linux-Kernel 5.7 TRIM-Unterstützung für eigenständige dm-integrity-Geräte hinzugefügt hat, kann cryptsetup(8) keine Unterstützung für Discards (TRIM) im authentifizierten Verschlüsselungsmodus anbieten, da das zugrunde liegende dm-crypt-Kernelmodul diese Funktionalität nicht unterstützt, wenn dm-integrity als Speicherplatz-Allocator für den Authentifizierungs-Tag verwendet wird (siehe --allow-discards in cryptsetup-open(8)).

Einige Integritätsmodi erfordern zwei unabhängige Schlüssel (einen Schlüssel für die Verschlüsselung und einen für die Authentifizierung). Beide Schlüssel werden in einem LUKS-Schlüssel-Slot gespeichert.

Die Unterstützung für authentifizierte Modi ist experimentell, und derzeit sind nur einige Modi verfügbar. Beachten Sie, dass nur sehr wenige authentifizierte Verschlüsselungsalgorithmen für die Festplattenverschlüsselung geeignet sind. Sie können auch keine CRC32 oder andere nicht-kryptografischen Prüfsummen verwenden (außer dem speziellen Integritätsmodus "none"). Wenn Sie aus irgendeinem Grund eine Integritätskontrolle ohne Verwendung des Authentifizierungsmodus wünschen, sollten Sie dm-integrity separat und unabhängig von LUKS2 konfigurieren.

Hinweise zur Verwendung von Loopback-Geräten

Cryptsetup wird normalerweise direkt auf einem Blockgerät (Festplattenpartition oder LVM-Volume) verwendet. Wenn das Geräteargument jedoch eine Datei ist, versucht cryptsetup, ein Loopback-Gerät zuzuweisen und es dieser Datei zuzuordnen. Sie können eine Datei auch immer manuell einem Loop-Gerät zuordnen. Sehen Sie sich die cryptsetup-FAQ für ein Beispiel an.

Wenn die Gerätezuordnung aktiv ist, können Sie die Loopback-Zugeordnungsdatei in der Ausgabe des Befehls status sehen. Siehe auch losetup(8).

LUKS2-Header-Sperrung

Die LUKS2-On-Disk-Metadaten werden in mehreren Schritten aktualisiert, und um eine korrekte atomare Aktualisierung zu erreichen, gibt es einen Sperrmechanismus. Für ein Image in einer Datei verwendet der Code den Systemaufruf flock(2). Für ein Blockgerät wird die Sperrung über eine spezielle Datei in einem Sperrverzeichnis durchgeführt (standardmäßig /run/cryptsetup). Das Sperrverzeichnis sollte während der Boot-Phase mit dem richtigen Sicherheitskontext von der Distribution erstellt werden. Nur LUKS2 verwendet Sperren; andere Formate verwenden diesen Mechanismus nicht.

LUKS-On-Disk-Format-Spezifikation

Für die LUKS-On-Disk-Metadatenspezifikation siehe LUKS1 [https://gitlab.com/cryptsetup/cryptsetup/wikis/Specification] und LUKS2 [https://gitlab.com/cryptsetup/LUKS2-docs].

AUTOREN

Cryptsetup wurde ursprünglich von Jana Saout <_> geschrieben. Die LUKS-Erweiterungen und die ursprüngliche Manpage wurden von Clemens Fruhwirth <_> geschrieben. Manpage-Erweiterungen von Milan Broz <_>. Manpage-Überarbeitung und -Erweiterung von Arno Wagner <_>.


FEHLER MELDEN

Fehler können Sie an die Cryptsetup-Mailingliste <_> oder im Bereich „Issues“ des Projekts melden: [https://gitlab.com/cryptsetup/cryptsetup/-/issues/new].

Bitte fügen Sie die Ausgabe des fehlgeschlagenen Befehls mit der Option --debug bei.

SIEHE AUCH

Cryptsetup FAQ [https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions]

cryptsetup(8), integritysetup(8) und veritysetup(8)

CRYPTSETUP

Teil des Cryptsetup-Projekts [https://gitlab.com/cryptsetup/cryptsetup/].