- bookworm 4.18.1-1
- bookworm-backports 4.25.1-1~bpo12+1
- testing 4.25.1-1
- unstable 4.25.1-1
SYSTEMD-CRYPTENROLL(1) | systemd-cryptenroll | SYSTEMD-CRYPTENROLL(1) |
BEZEICHNUNG¶
systemd-cryptenroll - PKCS#11-, FIDO2-, TPM2-Token/-Geräte bei LUKS2-verschlüsselten Datenträgern registrieren
ÜBERSICHT¶
systemd-cryptenroll [OPTIONEN…] [GERÄT]
BESCHREIBUNG¶
systemd-cryptenroll ist ein Werkzeug zum Registrieren von Hardware-Sicherheits-Token und -Geräten an LUKS2-verschlüsselten Datenträgern, die dann zum Entsperren des Datenträgers während des Systemstarts verwandt werden können. Es unterstützt insbesondere die Registrierung von Token und Anmeldedaten von folgenden Typen:
Das Werkzeug kann zusätzlich zum Aufzählen derzeit registrierter Sicherheits-Token und dem Bereinigen einer Teilmenge von ihnen verwandt werden. Letzteres kann mit der Registrieraktion eines neuen Sicherheits-Token kombiniert werden, um Registrierungen zu aktualisieren oder zu ersetzen.
Das Werkzeug unterstützt nur LUKS2-Datenträger, da es die Metainformationen des Tokens in dem LUKS2-JSON-Token-Bereich speichert, der bei anderen Verschlüsselungsformaten nicht vorhanden ist.
systemd-cryptsetup agiert auf Geräten, die /var/ zugrunde liegen, falls kein Gerät explizit angegeben wurde und die Bereinigungs-Aktion nicht erbeten wurde. (Beachten Sie, dass dies im typischen Fall, bei dem /var/ auf dem gleichen Dateisystem wie das Wurzeldateisystem ist, dies somit einen Schlüssel in das dem Wurzeldateisystem zugrundeliegende Dateisystem registriert.)
TPM2-PCRs und -Richtlinien¶
PCRs ermöglichen das Binden von Verschlüsselung von Geheimnissen an bestimmte Softwareversionen und den Systemzustand, so dass der registrierte Schlüssel nur zugreifbar ist (»entsiegelt« werden kann), falls bestimmte, vertrauenswürdige Sofware oder Konfiguration verwandt wird. Solche Bindungen können mit der nachfolgend beschriebenen Option --tpm2-pcrs= erstellt werden.
Geheimnisse können auch indirekt angebunden werden: eine signierte Richtlinie für einen Zustand aus der Kombination einiger PCR-Werte wird bereitgestellt und das Geheimnis ist an den öffentlichen Teil des Schlüssels gebunden, der zur Signatur dieser Richtlinie verwandt wird. Dies bedeutet, das der Eigentümer eines Schlüssel eine Reihe von signierten Richtlinien für bestimmte Software-Versionen und Systemzustände erstellen kann, und dass das Geheimnis entschlüsselt werden kann, solange der Maschinenzustand auf eine dieser Richtlinien passt. Beispielsweise könnte ein Lieferant für jede Kernel+Initrd-Aktualisierung ein Richtlinie bereitstellen, wodurch es Benutzern ermöglicht würde, Geheimnisse zu verschlüsseln, so dass sie entschlüsselt werden können, wenn eine der vom Lieferanten signierte Kombination von Kernel+Initrd ausgeführt wird. Solche Bindungen können mit den nachfolgend beschriebenen Optionen --tpm2-public-key=, --tpm2-public-key-pcrs=, --tpm2-signature= erstellt werden.
Siehe die Linux-TPM-PCR-Registratur[1] für eine verbindliche Liste von PCRs und deren Aktualisierungsart. Die nachfolgende Tabelle enthält eine Kurzreferenz, sie beschreibt insbesondere die von Systemd veränderten PCRs.
Tabelle 1. Gut-bekannte PCR-Definitionen
PCR | Name | Erklärung |
0 | platform-code | Ausführbarer Code der Kernsystem-Firmware; ändert sich bei Firmware-Aktualisierungen |
1 | platform-config | Konfiguration der Kernsystem-Firmware-Daten/Rechner-Plattform; enthält typischerweise die Serien- und Modellnummer, ändert sich beim Austausch grundlegender Hardware-/CPU-/RAM-Komponenten |
2 | external-code | Erweiterter oder austauschbarer ausführbarer Code; einschließlich Options-ROMs und austauschbarer Hardware |
3 | external-config | Erweiterte oder austauschbare Firmware-Daten; einschließlich Informationen über austauschbare Hardware |
4 | boot-loader-code | Systemstartprogramm und zusätzliche Treiber; PE-Programm vom Systemstartprogramm aufgerufen; Änderungen an Systemstart-Aktualisierungen. sd-stub(7) misst vom ESP eingelesene Systemerweiterungs-Abbilder hier auch ein (siehe systemd-sysext(8)). |
5 | boot-loader-config | GPT-/Partitionstabelle; ändert sich, wenn Partitionen hinzugefügt, verändert oder entfernt werden |
7 | secure-boot-policy | Sicherer Systemstartzustand; ändert sich, wenn der UEFI-SecureBoot-Modus aktiviert/deaktiviert wird oder sich Firmware-Zertifikate (PK, KEK, db, dbx, …) ändern. |
9 | kernel-initrd | Der Linux-Kernel misst alle Initrds, die er empfängt, in dieses PCR. |
10 | ima | Das IMA-Projekt misst seinen Laufzeitzustand in dieses PCR. |
11 | kernel-boot | systemd-stub(7) misst das ELF-Kernelabbild, die eingebettete Initrd und andere Nutzlastdaten des PE-Abbildes, in das sie abgelegt sind, in diesen PCR. systemd-pcrphase.service(8) misst Systemstartphasen-Zeichenketten in diesen PCR zu verschiedenen Meilensteinen im Systemstartprozess. |
12 | kernel-config | systemd-boot(7) misst die Kernelbefehlszeile in dieses PCR. systemd-stub(7) misst jede manuell angegebene Kernelbefehlszeile ein (d.h. eine Kernelbefehlszeile, die in dem vereinigten PE-Abbild eingebettet ist, außer Kraft setzt) und lädt die Zugangsberechtigungen in dieses PCR ein. |
13 | sysexts | systemd-stub(7) misst jedes systemd-sysext(8)-Abbild, das es an den gestarteten Kernel übergibt, in diesen PCR. |
14 | shim-policy | Das Shim-Projekt misst seine »MOK«-Zertifikate und -Hashes in dieses PCR. |
15 | system-identity | systemd-cryptsetup(8) misst optional den Datenträgerschlüssel von aktivierten LUKS-Datenträgern in diesen PCR. systemd-pcrmachine.service(8) misst die machine-id(5) in diesen PCR. systemd-pcrfs@.service(8) misst Einhängepunkte, Dateisystem-UUIDs, Bezeichnungen, Partitions-UUIDs der Wurzel -und /var/-Dateisysteme in diesen PCR. |
16 | debug | Fehlersuche |
23 | application-support | Unterstützung von Anwendungen |
Im allgemeinen sollten verschlüsselte Datenträger an eine Kombination von PCR 7, 11 und 14 (falls Shim/MOK verwandt wird) gebunden werden. Damit Firmware und das Betriebssystem aktualisiert werden können, wird typischerweise nicht empfohlen, PCRs wie 0 und 2 zu verwenden, da der von ihnen abgedeckte Programm-Code bereits indirekt über die in PCR 7 eingemessenen Zertifikate abgedeckt sein sollte. Prüfung über Zertifikats-Hashes ist typischerweise gegenüber der Validierung über direkte Messung zu bevorzugen, da es im Zusammenhang mit Betriebssystem-/Firmware-Aktualisierungen weniger zerbrechlich ist: die Messung ändert sich bei jeder Aktualisierung, aber Signaturen sollten unverändert bleiben. Siehe die Linux-TPM-PCR-Registratur[1] für eine weitere Besprechung.
EINSCHRÄNKUNGEN¶
Beachten Sie, dass es notwendig ist, wenn ein neuer Schlüssel von einer der fünf oben aufgeführten unterstützten Typen registriert wird, zuerst eine Passphrase, einen Wiederherstellungsschlüssel, einen FIDO2-Token oder einen TPM2-Schlüssel bereitzustellen. Es wird derzeit nicht unterstützt, ein Gerät mit einem PKCS#11-Schlüssel zu entsperren, um einen neuen PKCS#11-Schlüssel zu registrieren. Falls daher in der Zukunft einen Schlüsseltausch gewünscht wird, wird im Allgemeinen empfohlen, immer eine Passphrase, einen Wiederherstellungsschlüssel, einen FIDO2-Token oder einen TPM2-Schlüssel zu registrieren.
Beachten Sie auch, dass die Registrierung mehrerer FIDO2-Token derzeit eingeschränkt ist. Wenn mehrere FIDO2-Token registriert werden, wird systemd-cryptsetup Vorabanfragen durchführen, um zu ermitteln, welche der registrierten Token derzeit eingesteckt ist. Dies ist allerdings für FIDO2-Token mit Benutzerprüfung (UV, normalerweise über Biometrie) nicht möglich. In diesem Fall wird es darauf zurückfallen, der Reihe nach jeden registrierten Token auszuprobieren. Dadurch wird mehrmals um die Eingabe der PIN und der Benutzerüberprüfung gebeten. Diese Einschränkung betrifft PKCS#11-Token nicht.
KOMPATIBILITÄT¶
Die Sicherheitstechnik innerhalb von Systemd und der allgemeinen Industrie entwickelt sich immer weiter. Um die besten Sicherheitsgarantien bereitzustellen, wird die Art und Weise, wie TPM2-, FIDO2-, PKCS#11-Geräte registriert werden, regelmäßig in neueren Versionen von Systemd aktualisiert. Immer, wenn dies passiert, werden die folgenden Kompatibilitätsgarantien erteilt:
Mit diesem Wissen wird im Allgemeinen empfohlen, passende Versionen von systemd-cryptenroll und systemd-cryptsetup zu verwenden, da dies am besten getestet und unterstützt ist.
Es könnte empfehlenswert sein, bestehende Registrierungen erneut zu registrieren, um von neuen Sicherheitsvorteilen zu profitieren, die zu Systemd hinzugefügt wurden.
ENTSPERREN¶
Die folgenden Optionen, die zum Entsperren des Geräts in Vorbereitung der Registrierungsaktionen verwandt werden können, werden verstanden:
--unlock-key-file=PFAD
Hinzugefügt in Version 252.
--unlock-fido2-device=PFAD
Hinzugefügt in Version 253.
--unlock-tpm2-device=PFAD
Hinzugefügt in Version 256.
EINFACHE REGISTRIERUNG¶
Die folgenden Optionen, die zur Registrierung von Entsperrungen basierend auf einfacher Benutzereingabe verwandt werden können, werden verstanden:
--password
Hinzugefügt in Version 248.
--recovery-key
Hinzugefügt in Version 248.
PKCS#11 ENROLLMENT¶
Die folgende Option, die zur Registrierung von PKCS#11-Token verwandt werden kann, wird verstanden:
--pkcs11-token-uri=URI
Der PKCS#11-Token muss ein RSA- oder EC-Schlüsselpaar enthalten, das zum Entsperren eines LUKS2-Datenträgers verwandt werden wird. Für RSA wird ein zufällig erstellter Datenträgerschlüssel mit einem öffentlichen Schlüssel in dem Token verschlüsselt und in dem Kopfbereich des LUKS2-JSON-Token gespeichert. Um einen Datenträger zu entsperren, wird der gespeicherte Datenträgerschlüssel mit dem privaten Schlüssel in dem Token entschlüsselt. Für ECC wird der ECDH-Algorithmus verwandt: es wird ein Paar von EC-Schlüsseln in der gleichen EC-Gruppe erstellt, dann ein gemeinsames Geheimnis mittels des erstellten privaten und öffentlichen Schlüssels im Token abgeleitet. Das abgeleitete gemeinsame Geheimnis wird als Datenträgerschlüssel verwandt. Der erstellte öffentliche Schlüssel wird in dem Kopfbereich des LUKS2-JSON-Token gespeichert. Der erstellte private Schlüssel wird gelöscht. Um einen Datenträger zu entsperren, wird das gemeinsame Geheimnis mit dem gespeicherten öffentlichen Schlüssel und einem privaten Schlüssel im Token abgeleitet.
Um einen LUKS2-Datenträger mit einem registrierten PKCS#11-Sicherheits-Token zu entsperren, legen Sie die Option pkcs11-uri= in der zutreffenden Zeile in /etc/crypttab fest:
meindatenträger /dev/sda1 - pkcs11-uri=auto
Siehe crypttab(5) für ein umfassenderes Beispiel eines Aufrufs von systemd-cryptenroll und der zugehörigen Zeile in /etc/crypttab.
Hinzugefügt in Version 248.
FIDO2 ENROLLMENT¶
Die folgenden Optionen werden zum Registrieren von FIDO2-Token verstanden:
--fido2-device=PFAD
Um einen LUKS2-Datenträger mit einem registrierten FIDO2-Sicherheits-Token zu entsperren, legen Sie die Option fido2-device= in der zutreffenden Zeile in /etc/crypttab fest:
meindatenträger /dev/sda1 - fido2-device=auto
Siehe crypttab(5) für ein umfassenderes Beispiel eines Aufrufs von systemd-cryptenroll und der zugehörigen Zeile in /etc/crypttab.
Hinzugefügt in Version 248.
--fido2-credential-algorithm=ZEICHENKETTE
»es256« bezeichnet ECDSA über NIST P-256 mit SHA-256. »rs256« bezeichnet 2048-bit RSA mit PKCS#1.5-Auffüllung und SHA-256. »eddsa« bezeichnet EDDSA über Curve25519 mit SHA-512.
Beachten Sie, dass Ihr Authentikator sich entscheiden könnte, nicht alle Algorithmen zu unterstützen.
Hinzugefügt in Version 251.
--fido2-salt-file=PFAD
Hinzugefügt in Version 257.
--fido2-parameters-in-header=LOGISCH
Hinzugefügt in Version 257.
--fido2-with-client-pin=LOGISCH
Hinzugefügt in Version 249.
--fido2-with-user-presence=LOGISCH
Hinzugefügt in Version 249.
--fido2-with-user-verification=LOGISCH
Hinzugefügt in Version 249.
TPM2-REGISTRIERUNG¶
Die folgenden Optionen, die zur Registrierung von TPM2-Geräten verwandt werden können, werden verstanden:
--tpm2-device=PFAD
Um einen LUKS2-Datenträger mit einem registrierten TPM2-Sicherheits-Chip zu entsperren, legen Sie die Option tpm2-device= in der zutreffenden Zeile in /etc/crypttab fest:
meindatenträger /dev/sda1 - tpm2-device=auto
Siehe crypttab(5) für ein umfassenderes Beispiel eines Aufrufs von systemd-cryptenroll und der zugehörigen Zeile in /etc/crypttab.
Verwenden Sie --tpm2-pcrs= (siehe unten), um zu konfigurieren, an welchen TPM2-PCR-Index die Registrierung angebunden werden soll.
Hinzugefügt in Version 248.
--tpm2-device-key=PFAD
In den meisten Fällen sollte der Schlüssel der Speicherwurzelschlüssel (SRK) von einem lokalen TPM2-Sicherheits-Chip sein. Falls ein Schlüssel aus einer anderen Referenz (nicht dem SRK) verwandt wird, müssen Sie seinen Referenzindex mittels --tpm2-seal-key-handle= angeben.
Der Dienst systemd-tpm2-setup.service(8) schreibt während des Systemstarts automatisch den SRK im korrekten Format nach /run/systemd/tpm2-srk-public-key.tpm2b_public.
Alternativ können Sie systemd-analyze srk verwenden, um den SRK explizit aus dem TPM2-Sicherheits-Chip abzurufen. Siehe systemd-analyze(1) zu Details. Beispiel:
systemd-analyze srk > srk.tpm2b_public
Hinzugefügt in Version 255.
--tpm2-seal-key-handle=REFERENZ
Die Vorgabe ist der Referenzindex »0x81000001« des Speicherwurzelschlüssels (SRK). Ein Wert 0 wird die Vorgabe verwenden. Für die SRK-Referenz wird ein neuer Schlüssel erstellt und in dem TPM gespeichert, falls dort noch keiner existiert und für anderere Referenzen muss der Schlüssel bereits im TPM am angegebenen Referenzindex existieren.
Dies sollte nur geändert werden, wenn Sie genau wissen, was Sie machen.
Hinzugefügt in Version 255.
--tpm2-pcrs=PCR[+PCR…]
Beispiel: --tpm2-pcrs=boot-loader-code+platform-config+boot-loader-config gibt an, dass die PCR-Register 4, 1 und 5 verwandt werden sollen.
Beispiel: --tpm2-pcrs=7:sha256 gibt an, dass PCR-Register 7 von der Bank SHA256 verwandt werden soll.
Beispiel: --tpm2-pcrs=4:sha1=3a3f780f11a4b49969fcaa80cd6e3957c33b2275 spezifiziert, dass PCR-Register 4 von der SHA1-Bank verwandt werden soll und dass anstelle des Lesens des aktuellen PCR-Werts ein Hash-Wert von 3a3f780f11a4b49969fcaa80cd6e3957c33b2275 verwandt werden wird.
Hinzugefügt in Version 248.
--tpm2-with-pin=LOGISCH
Beachten Sie, dass eine inkorrekte PIN-Eingabe beim Entsperren den TPM-Wörterbuch-Sperrmechanismus erhöht und Benutzer für eine längere Zeit aussperren könnte, abhängig von seiner Konfiguration. Der Sperrmechanismus ist eine globale Eigenschaft des TPM, systemd-cryptenroll steuert oder konfiguriert den Sperrmechanismus nicht. Sie können die tpm2-tss-Werkzeuge zur Untersuchung oder Konfiguration des Wörterbuch-Sperrmechanismus mit den Befehlen tpm2_getcap(1) bzw. tpm2_dictionarylockout(1) verwenden.
Hinzugefügt in Version 251.
--tpm2-public-key=PFAD, --tpm2-public-key-pcrs=PCR[+PCR…], --tpm2-signature=PFAD
Beachten Sie den Unterschied zwischen --tpm2-pcrs= und --tpm2-public-key-pcrs=: Ersterer bindet die Entschlüsselung an die aktuellen, angegebenen PCR-Werte; Letzteres bindet die Entschlüsselung an eine Gruppe von PCR-Werten, für die eine Signatur durch den angegebenen öffentlichen Schlüssel bereitgestellt werden kann. Leztere ist daher in Szenarien nützlicher, bei denen Software-Aktualisierungen möglich sein sollen, ohne Zugriff auf alle vorher verschlüsselten LUKS2-Datenträger zu verlieren. Ähnlich wie bei --tpm2-pcrs= können in der obigen Tabelle definierte Namen auch zur Festlegung der Register verwandt werden, beispielsweise --tpm2-public-key-pcrs=boot-loader-code+system-identity.
Die Option --tpm2-signature= akzeptiert einen Pfad zu einer TPM2-PCR-Signaturdatei, wie sie vom Werkzeug systemd-measure(1) erstellt wurde. Falls dies nicht explizit angegeben ist, wird nach einer geeigneten Signaturdatei tpm2-pcr-signature.json in /etc/systemd/, /run/systemd/, /usr/lib/systemd/ (in dieser Reihenfolge) gesucht und diese verwandt. Falls eine Signaturdatei angegeben oder gefunden wird, wird diese zur Überprüfung, ob der Datenträger in Abhängigkeit des aktuellen PCR-Zustandes damit entsperrt werden kann, verwandt, bevor eine neue Position auf Platte geschrieben wird. Dies ist als Sicherheitsnetz gedacht, um sicherzustellen, dass der Zugriff auf einen Datenträger nicht verloren geht, falls ein öffentlicher Schlüssel registriert wird, für den keine gültige Signatur für den aktuellen PCR-Zustand verfügbar ist. Falls die bereitgestellte Signatur die Kombination aus aktuellem PCR-Zustand und öffentlichen Schlüssel nicht entsperrt, wird keine Position registriert und die Aktion wird fehlschlagen. Falls keine Signaturdatei angegeben ist oder gefunden wird, erfolgt keine solche Sicherheitsüberprüfung.
Hinzugefügt in Version 252.
--tpm2-pcrlock=PFAD
Hinzugefügt in Version 255.
WEITERE OPTIONEN¶
Die folgenden zusätzlichen Optionen werden verstanden:
--wipe-slot=POSITION[,POSITION…]
Dieser Schalter kann alleine verwandt werden. In diesem Fall wird nur die angefragte Bereinigungsaktion ausgeführt. Er kann auch in Kombination mit einer der oben aufgeführten Registrierungsoptionen verwandt werden. In diesem Fall wird zuerst die Registrierung abgeschlossen und nur wenn das erfolgreich war, wird die Bereinigungsaktion ausgeführt — und die frisch hinzugefügte Position wird immer von der Bereinigung ausgeschlossen. Die Kombination von Registrierung und Positionsbereinigung kann daher zur Aktualisierung bestehender Registrierungen verwandt werden:
systemd-cryptenroll /dev/sda1 --wipe-slot=tpm2 --tpm2-device=auto
Der obige Befehl wird den TPM2-Chip registrieren und dann alle vorher erstellten TPM2-Registrierungen auf dem LUKS2-Datenträger bereinigen, wodurch nur die frisch erstellte verbleibt. Die Kombination von Bereinigung und Registrierung kann auch zum Ersetzen der Registrierung von verschiedenen Typen verwandt werden, beispielsweise zum Ändern einer PKCS#11-Registrierung auf eine FIDO2-Registrierung:
systemd-cryptenroll /dev/sda1 --wipe-slot=pkcs11 --fido2-device=auto
Oder zum Ersetzen eines registrierten leeren Passworts durch TPM2:
systemd-cryptenroll /dev/sda1 --wipe-slot=empty --tpm2-device=auto
Hinzugefügt in Version 248.
--list-devices
Hinzugefügt in Version 257.
-h, --help
--version
--no-pager
ZUGANGSBERECHTIGUNGEN¶
systemd-cryptenroll unterstützt die durch ImportCredential=/LoadCredential=/SetCredential= implementierte Dienste-Zugangsberechtigungslogik (siehe systemd.exec(5) zu Details). Die folgenden Zugangsberechtigungen werden unterstützt, wenn sie hereingereicht werden:
cryptenroll.passphrase, cryptenroll.new-passphrase
Hinzugefügt in Version 256.
cryptenroll.tpm2-pin, cryptenroll.new-tpm2-pin
Hinzugefügt in Version 256.
cryptenroll.fido2-pin
Hinzugefügt in Version 256.
cryptenroll.pkcs11-pin
Hinzugefügt in Version 256.
EXIT-STATUS¶
Bei Erfolg wird 0 zurückgegeben, anderenfalls ein Fehlercode ungleich Null.
BEISPIELE¶
crypttab(5) und systemd-measure(1) enthalten verschiedene Beispiele des Einsatzes von systemd-cryptenroll.
SIEHE AUCH¶
systemd(1), systemd-cryptsetup@.service(8), crypttab(5), cryptsetup(8), systemd-measure(1)
ANMERKUNGEN¶
- 1.
- Linux TPM-PCR-Registratur
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
systemd 257.1 |