plucky (1) systemd-measure.1.gz

Provided by: manpages-de_4.25.1-1_all bug

BEZEICHNUNG

       systemd-measure - Erwartete TPM2-PCR-11-Werte für gestartete vereinigte Kernelabbilder vorberechnen und
       signieren

ÜBERSICHT

       /usr/lib/systemd/systemd-measure [OPTIONEN…]

BESCHREIBUNG

       Hinweis: Dieser Befehl ist derzeit experimentell. Es ist zwar wahrscheinlich, dass er eine reguläre
       Komponente von Systemd wird, aber sein Verhalten und seine Schnittstellen können sich noch ändern.

       systemd-measure ist ein Werkzeug, das zum Vorabberechnen und Signieren der erwarteten TPM2-PCR-11-Werte
       verwandt werden kann, der beobachtet werden kann, wenn ein Vereinigtes Kernel-Abbild (UKI)[1], das auf
       systemd-stub(7) basiert, gestartet wird. Es akzeptiert Pfade zu der ELF-Kernelabbilddatei, der
       Initrd-Abbilddatei, der Devicetree-Datei, der Kernelbefehlszeile, der os-release(5)-Datei, der
       Systemstart-Bild-Datei und der Datei mit dem öffentlichen TPM2-PCR-PEM-Schlüssel, die zusammen das
       vereinigte Kernelabbild darstellen, und bestimmt die PCR-Werte, die nach dem Systemstart des Abbildes
       erwartet werden. Die Berechnung beginnt mit dem mit Null initialisierten PCR 11 und wird kompatibel zur
       Vorgehensweise von Systemd-stub beim Systemstart durchgeführt. Das Ergebnis kann optional kryptographisch
       signiert werden, um TPM2-Richtlinien zu erlauben, die nur entsperrt werden können, falls eine bestimmte
       Gruppe von Kerneln gestartet wird, für die eine solche PCR-Signatur bereitgestellt werden kann.

       Normalerweise ist es nicht sinnvoll, dieses Werkzeug beim Erstellen eines UKI direkt aufzurufen.
       Stattdessen sollte ukify(1) verwandt werden; es wird systemd-measure aufrufen und sich um das Einbetten
       der resultierenden Messungen in die UKI kümmern.

BEFEHLE

       Die folgenden Befehle werden verstanden:

       status
           Dies ist der Vorgabebefehl, falls keiner angegeben ist. Er fragt die TPM2 PCR-Werte 11 des Systems ab
           und zeigt sie an. Die Daten werden in einem ähnlichen Format wie beim nachfolgenden Befehl calculate
           geschrieben und können dazu verwandt werden, schnell die Erwartungen mit der Realität abzugleichen.

           Hinzugefügt in Version 252.

       calculate
           Berechnet die erwarteten Werte, die in PCR-Register 11 nach dem Hochfahren des vereinigten
           Kernelabbildes, das aus den mit --linux=, --osrel=, --cmdline=, --initrd=, --ucode=, --splash=,
           --dtb=, --uname=, --sbat=, --pcrpkey=, --profile=, --dtbauto=, --hwids= angegeben Komponenten
           bestehen wird (siehe nachfolgend), gesehen werden. Nur --linux= ist verpflichtend. (Geben Sie
           alternativ --current an, um die aktuellen Werte aus PCR-Register 11 zu verwenden.)

           Hinzugefügt in Version 252.

       sign
           Wie bei dem Befehl calculate wird der erwartete Wert, der nach dem Starten eines vereinigten
           Kernelabbildes in TPM2-PCR-Register 11 gesehene Wert, vorberechnet. Dann wird der entstandene Wert
           kryptographisch mit dem asymetrischen Schlüsselpaar (RSA), das über --private-key= und --public-key=
           konfiguriert ist, signiert. Dies schreibt ein JSON-Objekt in die Standardausgabe, das die Signaturen
           für alle angegebenen PCR-Bänke enthält (siehe nachfolgend --bank=). Dies kann zum Entsperren
           verschlüsselter Zugangsberechtigungen (siehe systemd-creds(1)) oder LUKS-Datenträger (siehe
           systemd-cryptsetup@.service(8)) verwandt werden. Dies ermöglicht das Binden von Geheimnissen an eine
           Gruppe von Kerneln, für die solche PCR-11-Signaturen bereitgestellt werden können.

           Beachten Sie, dass ein TPM2-Gerät verfügbar sein muss, damit das Signieren stattfinden kann, obwohl
           das Ergebnis nicht mit einem TPM2-Gerät oder seinen Zustand verknüpft ist.

           Hinzugefügt in Version 252.

OPTIONEN

       Die folgenden Optionen werden verstanden:

       --linux=PFAD, --osrel=PFAD, --cmdline=PFAD, --initrd=PFAD, --ucode=PFAD, --splash=PFAD, --dtb=PFAD,
       --uname=PFAD, --sbat=PFAD, --pcrpkey=PFAD, --profile=PFAD, --dtbauto=PFAD, --hwids=PFAD
           Wird das mit dem Unterbefehl calculate oder sign verwandt, konfiguriert es die Dateien, aus der die
           Komponenten des vereinigten Kernelabbildes gelesen werden. Jede Option entspricht dem gleich
           benannten Abschnitt in der PE-Datei des vereinigten Kernels. Der Schalter --linux= erwartet den Pfad
           zu der ELF-Kerneldatei, die der vereinigte PE-Kernel umschließen wird. Alle Schalter außer --linux=
           sind optional. Jede Option darf höchstens einmal verwandt werden.

           Hinzugefügt in Version 252.

           Mit den Ausnahmen --profile=, --dtbauto= und --hwids=, die in Version 257 hinzugefügt wurden.

       --current
           Wird das mit dem Unterbefehl calculate oder sign verwandt, akzeptiert es die derzeit im System
           wirksamen PCR-11-Werte (die typischerweise die Hashes des aktuell gestarteten Kernels widerspiegeln
           sollten). Dies kann anstelle von --linux= und den anderen, oben aufgeführten Schaltern verwandt
           werden.

           Hinzugefügt in Version 252.

       --bank=HASH
           Steuert die PCR-Bänke, für die PCR-Werte vorabberechnet werden sollen – im Falle des Aufrufs von
           calculate oder sign – oder die Bänke, die in der Ausgabe status angezeigt werden sollen. Kann
           mehrfach verwandt werden, um mehrere Bänke anzugeben. Falls nicht angegeben, ist die Vorgabe die vier
           Bänke »sha1«, »sha256«, »sha384«, »sha512«.

           Hinzugefügt in Version 252.

       --private-key=PFAD, --public-key=PFAD, --certificate=PFAD
           Diese Schalter akzeptieren Pfade auf PEM-kodierte RSA-Schlüsseldateien, zur Verwendung mit dem Befehl
           sign.

           Beachten Sie die Unterschiede zwischen den Schaltern --pcrpkey= und --public-key=. Ersterer wählt die
           Daten, die im PE-Abschnitt ».pcrpkey« des vereinigten Kernelabbildes aufgenommen werden sollen,
           während letzterer den öffentlichen Schlüssel des Schlüsselpaars aufnimmt, der zum Signieren des
           entstehenden PCR-11-Wertes verwandt wird. Ersterer ist der Schlüssel, den das gestartete System
           wahrscheinlich zum Sperren der Verschlüsselung von Platten und Zugangsberechtigungen verwenden wird,
           während letzterer der Schlüssel ist, der zum erneuten Entsperren solcher Ressourcen verwandt wird.
           Daher sollte typischerweise in beiden Fällen der gleiche PEM-Schlüssel bereitgestellt werden.

           Falls der --public-key= nicht, aber --private-key= angegeben ist, wird der öffentliche Schlüssel
           automatisch vom privaten Schlüssel abgeleitet.

           --certificate= kann seit v256 zum Festlegen eines X.509-Zertifikats als Alternative zu --public-key=
           verwandt werden.

           Hinzugefügt in Version 252.

       --private-key=PFAD/URI, --private-key-source=TYP[:NAME], --certificate=PFAD/URI,
       --certificate-source=TYP[:NAME]
           Als Alternative zu --public-key= für den Befehl sign, können diese Schalter zum Signieren mit einem
           Hardware-Token verwandt werden. Die Option für den privaten Schlüssel kann einen Pfad oder eine URI
           akzeptieren, die an die OpenSSL-Engine oder den -Provider weitergegeben wird, wie durch
           --private-key-source= festgelegt als ein Typ:Name-Tupel, wie engine:pkcs11. Die festgelegte
           OpenSSL-Signier-Engine oder der -Provider werden zum Signieren verwandt.

           Schalter zum Signieren mit einem Hardware-Token verwandt werden. Die Option --certificate= kann auch
           einen Pfad oder eine URI akzeptieren, die an den OpenSSL-Provider weitergegeben wird, wie durch
           --certificate-source= festgelegt als ein »Typ:Name«-Tupel, wie »provider:pkcs11«. Beachten Sie, dass
           anders als bei --private-key-source= diese Option nur Provider und keine Engines unterstützt.

           Hinzugefügt in Version 256.

       --tpm2-device=PFAD
           Steuert das zu verwendende TPM2-Gerät. Erwartet einen Geräteknotenpfad, der sich auf einen TPM2-Chip
           bezieht (z.B. /dev/tpmrm0). Alternativ kann der besondere Wert »auto« angegeben werden, um den
           Geräteknoten eines geeigneten TPM2-Gerätes (von dem es genau einen geben darf) automatisch zu
           bestimmen. Der besondere Wert »list« kann verwandt werden, um alle geeigneten, derzeit ermittelten
           TPM2-Geräte aufzuzählen.

           Hinzugefügt in Version 252.

       --phase=PHASE
           Steuert, für welche Systemstartphasen der erwartete PCR-11-Wert berechnet werden soll. Dies
           akzeptiert eine Reihe von Zeichenketten, getrennt durch Doppelpunkte, die die »Pfade« zum Eintritt
           einer bestimmten Phase des Systemstartprozesses kodieren. Jede der angegebenen Zeichenketten wird
           durch systemd-pcrphase-initrd.service, systemd-pcrphase-sysinit.service und
           systemd-pcrphase.service(8) in PCR 11 während verschiedener Meilensteine des Systemstartprozesses
           gemessen. Dieser Schalter kann mehrfach angegeben werden, um die PCR-Werte für mehrere
           Systemstartphasen auf einmal zu berechnen. Falls nicht verwandt ist die Vorgabe »enter-initrd«,
           »enter-initrd:leave-initrd«, »enter-initrd:leave-initrd:sysinit«,
           »enter-initrd:leave-initrd:sysinit:ready«, d.h. es werden die erwarteten PCR-Werte für die
           Systemstartphase in die Initrd, während des frühen Systemstarts, während des späten Systemstarts und
           während der Systemlaufzeit berechnet, aber die Phasen vor der Initrd oder beim Herunterfahren
           ausgeschlossen. Diese Einstellung wird von calculate und sign berücksichtigt. Bei der Verwendung mit
           letzterem ist sie besonders zur Erstellung von PCR-Signaturen nützlich, die nur zum Entsperren von
           Ressourcen während bestimmter Teile des Systemstartprozesses verwandt werden können.

           Weitere Details zu PCR-Systemstartphasen finde Sie in systemd-pcrphase.service(8).

           Hinzugefügt in Version 252.

       --append=PFAD
           Bei der Erstellung einer PCR-JSON-Signatur (über den Befehl sign) wird diese mit einer vorher
           erstellten PCR-JSON-Signatur kombiniert und als eine ausgegeben. Der angegebene Pfad muss sich auf
           eine normale Datei beziehen, die ein gültiges PCR-JSON-Signaturobjekt enthält. Die angegebene Datei
           wird nicht verändert. Sie wird zuerst gelesen und dann wird die frisch erstellte Signatur daran
           angehängt und das daraus enstandene Objekt wird in die Standardausgabe geschrieben. Verwenden Sie
           dies, um ein einzelnes JSON-Objekt zu erstellen, das aus Signaturen besteht, die mit einer Reihe von
           Signaturschlüsseln erstellt wurden (beispielsweise um einen Schlüssel pro Systemstartphase zu haben).
           Der Befehl wird Duplikate unterdrücken: Falls eine bestimmte Signatur bereits in dem
           JSON-Signaturobjekt enthalten ist, wird sie nicht erneut hinzugefügt.

           Hinzugefügt in Version 253.

       --json=MODUS
           Zeigt die Ausgabe als JSON formatiert. Erwartet entweder »short« (für die kürzest mögliche Ausgabe
           ohne unnötigen Leerraum oder Zeilenumbrüche), »pretty« (für eine schönere Version der gleichen
           Ausgabe, mit Einzügen und Zeilenumbrüchen) oder »off« (um die JSON-Ausgabe auszuschalten, was die
           Vorgabe ist).

       --no-pager
           Leitet die Ausgabe nicht an ein Textanzeigeprogramm weiter.

       -h, --help
           Zeigt einen kurzen Hilfetext an und beendet das Programm.

       --version
           Zeigt eine kurze Versionszeichenkette an und beendet das Programm.

BEISPIELE

       Beispiel 1. Ein vereinigtes Kernelabbild erstellen und den erwarteten TPM-PCR-11-Wert berechnen

           $ ukify build \
                --linux=vmlinux \
                --initrd=initrd.cpio \
                --os-release=@os-release.txt \
                --cmdline=@cmdline.txt \
                --splash=splash.bmp \
                --devicetree=devicetree.dtb \
                --measure \
                --output=vmlinux.efi
           11:sha1=d775a7b4482450ac77e03ee19bda90bd792d6ec7
           11:sha256=bc6170f9ce28eb051ab465cd62be8cf63985276766cf9faf527ffefb66f45651
           11:sha384=1cf67dff4757e61e5...7f49ad720be02fd07263e1f93061243aec599d1ee4b4
           11:sha512=8e79acd3ddbbc8282...0c3e8ec0c714821032038f525f744960bcd082d937da

       ukify(1) ruft systemd-measure auf. Die Ausgabe mit Hashes stammt von systemd-measure.

       Beispiel 2. Ein asymetrisches Schlüsselpaar, ein vereinigtes Kernelabbild und eine TPM-PCR-11-Signatur
       dafür erstellen und die Signatur und den öffentlichen Schlüssel in das Abbild einbetten

           $ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out tpm2-pcr-private-key.pem
           ..+.+++++++++......+.........+......+.......+....+.....+.+...+..........
           $ openssl rsa -pubout -in tpm2-pcr-private-key.pem -out tpm2-pcr-public-key.pem
           $ systemd-measure sign \
                --linux=vmlinux \
                --osrel=os-release.txt \
                --cmdline=cmdline.txt \
                --initrd=initrd.cpio \
                --splash=splash.bmp \
                --dtb=devicetree.dtb \
                --pcrpkey=tpm2-pcr-public-key.pem \
                --bank=sha1 \
                --bank=sha256 \
                --private-key=tpm2-pcr-private-key.pem \
                --public-key=tpm2-pcr-public-key.pem >tpm2-pcr-signature.json
           $ ukify build \
                --linux=vmlinux \
                --initrd=initrd.cpio \
                --os-release=@os-release.txt \
                --cmdline=@cmdline.txt \
                --splash=splash.bmp \
                --devicetree=devicetree.dtb \
                --pcr-private-key=tpm2-pcr-private-key.pem \
                --pcr-public-key=tpm2-pcr-public-key.pem \
                --pcr-banks=sha1,sha256 \
                --output=vmlinuz.efi

       Später registrieren Sie die signierte PCR-Richtlinie bei einem LUKS-Datenträger:

           # systemd-cryptenroll --tpm2-device=auto \
                --tpm2-public-key=tpm2-pcr-public-key.pem \
                --tpm2-signature=tpm2-pcr-signature.json \
                --tpm2-pcrs="" \
                /dev/sda5

       Und dann entsperren Sie das Gerät mit der Signatur:

           # systemd-cryptsetup attach \
                datentrager5 /dev/sda5 - \
                tpm2-device=auto,tpm2-signature=/Pfad/zur/tpm2-pcr-signature.json

       Beachten Sie, dass nach dem Systemstart des vereinigten Kernelabbildes vmlinux.efi die Signatur und der
       öffentliche Schlüssel an Orten abgelegt werden, unter denen systemd-cryptenroll und systemd-cryptsetup
       danach sucht und daher diese Pfade tatsächlich nicht angegeben werden müssen.

       Beispiel 3. Einbeziehen eines zweiten öffentlichen Schlüssels, der die gleichen Kernel-PCR-Messungen
       signiert, aber nur für die Initrd-Systemstartphase

       Dieses Beispiel erweitert das vorherige, aber jetzt wird ein zweiter Signaturschlüssel einbezogen, der
       nur zum Signieren von PCR-Richtlinien eingeschränkt auf die Initrd-Systemstartphase verwandt wird. Damit
       können Wurzeldatenträger so verschlüsselt werden, dass sie nur vor dem Übergang auf das System des
       Rechners geöffnet werden können. Daher gibt es zwei Klassen von Geheimnissen oder Zugangsberechtigungen:
       eine, die während der gesamten Laufzeit geöffnet werden können und eine andere, die nur in der Initrd
       verwandt werden kann.

           $ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out tpm2-pcr-private-key.pem
           .+........+.+........+.......+...+...+........+....+......+..+..........
           $ openssl rsa -pubout -in tpm2-pcr-private-key.pem -out tpm2-pcr-public-key.pem
           $ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out tpm2-pcr-private-key-initrd.pem
           ..+.......++........+........+......+........+....+.....+.+..+..........
           $ openssl rsa -pubout -in tpm2-pcr-private-key-initrd.pem -out tpm2-pcr-public-key-initrd.pem
           $ ukify build \
                --linux=vmlinux-1.2.3 \
                --initrd=initrd.cpio \
                --os-release=@os-release.txt \
                --cmdline=@cmdline.txt \
                --splash=splash.bmp \
                --devicetree=devicetree.dtb \
                --pcr-private-key=tpm2-pcr-private-key.pem \
                --pcr-public-key=tpm2-pcr-public-key.pem \
                --phases=enter-initrd,enter-initrd:leave-initrd,enter-initrd:leave-initrd:sysinit,enter-initrd:leave-initrd:sysinit:ready \
                --pcr-banks=sha1,sha256 \
                --pcr-private-key=tpm2-pcr-private-key-initrd.pem \
                --pcr-public-key=tpm2-pcr-public-key-initrd.pem \
                --phases=enter-initrd \
                --uname=1.2.3 \
                --output=vmlinux-1.2.3.efi
           + /usr/lib/systemd/systemd-measure sign --linux=vmlinux-1.2.3 \
           --osrel=os-release.txt --cmdline=cmdline.txt --dtb=devicetree.dtb \
           --splash=splash.bmp --initrd=initrd.cpio --bank=sha1 --bank=sha256 \
           --private-key=tpm2-pcr-private-key.pem --public-key=tpm2-pcr-public-key.pem \
           --phase=enter-initrd --phase=enter-initrd:leave-initrd \
           --phase=enter-initrd:leave-initrd:sysinit \
           --phase=enter-initrd:leave-initrd:sysinit:ready
           + /usr/lib/systemd/systemd-measure sign --linux=vmlinux-1.2.3 \
           --osrel=os-release.txt --cmdline=cmdline.txt --dtb=devicetree.dtb \
           --splash=splash.bmp --initrd=initrd.cpio --bank=sha1 --bank=sha256 \
           --private-key=tpm2-pcr-private-key-initrd.pem \
           --public-key=tpm2-pcr-public-key-initrd.pem \
           --phase=enter-initrd
           Wrote unsigned vmlinux-1.2.3.efi

       ukify(1) gibt beide Aufrufe von systemd-measure als informative Ausgabe aus (die mit »+« beginnenden
       Zeilen); dies ermöglicht es, zu erkennen, wie systemd-measure aufgerufen wird. Es verbindet die Ausgabe
       beider Aufrufe in dem Abschnitt ».pcrsig«. systemd-measure kann mittels der Option --append= dieses
       Zusammenführen auch selbständig durchführen.

       Beachten Sie, dass in diesem Beispiel der PE-Abschnitt von ».pcrpkey« den durch die erste Option
       --pcr-private-key= festgelegten Schlüssel enthält, der sämtliche Systemstartphasen abdeckt. Der Abschnitt
       ».pcrpkey« wird in den Standardrichtlinien von systemd-cryptenroll und systemd-creds verwandt. Um die
       strengere, an tpm2-pcr-public-key-initrd.pem gebundene Richtlinie zu verwenden, geben Sie
       --tpm2-public-key= auf der Befehlszeile der Werkzeuge an.

EXIT-STATUS

       Bei Erfolg wird 0 zurückgegeben, anderenfalls ein Fehlercode ungleich Null.

SIEHE AUCH

       systemd(1), systemd-stub(7), ukify(1), systemd-creds(1), systemd-cryptsetup@.service(8),
       systemd-pcrphase.service(8)

ANMERKUNGEN

        1. Vereinigtes Kernelabbild (UKI)
           https://uapi-group.org/specifications/specs/unified_kernel_image/

Ü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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 ⟨debian-l10n-german@lists.debian.org⟩.