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

BEZEICHNUNG

       systemd-measure - Erwartete TPM2-PCR-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+12+13 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= 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
           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.

       --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= can be used to specify an X.509 certificate as an alternative to
           --public-key= since v256.

           Hinzugefügt in Version 252.

       --private-key=PFAD/URI, --private-key-source=TYP[:NAME], --certificate=PFAD
           As an alternative to --public-key= for the sign command, these switches can be used to
           sign with an hardware token. The private key option can take a path or a URI that will
           be passed to the OpenSSL engine or provider, as specified by --private-key-source= as
           a type:name tuple, such as engine:pkcs11. The specified OpenSSL signing engine or
           provider will be used to sign.

           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 standardmäßig aktivierte JSON-Ausgabe auszuschalten).

       --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 --output=vmlinux.efi \
                --os-release=@os-release.txt \
                --cmdline=@cmdline.txt \
                --splash=splash.bmp \
                --devicetree=devicetree.dtb \
                --measure \
                vmlinux initrd.cpio
           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.pem
           ..+.+++++++++......+.........+......+.......+....+.....+.+...+..........
           $ openssl rsa -pubout -in tpm2-pcr-private.pem -out tpm2-pcr-public.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.pem \
                --bank=sha1 \
                --bank=sha256 \
                --private-key=tpm2-pcr-private.pem \
                --public-key=tpm2-pcr-public.pem >tpm2-pcr-signature.json
           # ukify --output=vmlinuz.efi \
                --os-release=@os-release.txt \
                --cmdline=@cmdline.txt \
                --splash=splash.bmp \
                --devicetree=devicetree.dtb \
                --pcr-private-key=tpm2-pcr-private.pem \
                --pcr-public-key=tpm2-pcr-public.pem \
                --pcr-banks=sha1,sha256 \
                vmlinux initrd.cpio

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

           # systemd-cryptenroll --tpm2-device=auto \
                --tpm2-public-key=tpm2-pcr-public.pem \
                --tpm2-signature=tpm2-pcr-signature.json \
                /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.pem
           .+........+.+........+.......+...+...+........+....+......+..+..........
           $ openssl rsa -pubout -in tpm2-pcr-private.pem -out tpm2-pcr-public.pem
           $ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out tpm2-pcr-initrd-private.pem
           ..+.......++........+........+......+........+....+.....+.+..+..........
           $ openssl rsa -pubout -in tpm2-pcr-initrd-private.pem -out tpm2-pcr-initrd-public.pem
           # ukify --output vmlinux-1.2.3.efi \
                --os-release=@os-release.txt \
                --cmdline=@cmdline.txt \
                --splash=splash.bmp \
                --devicetree=devicetree.dtb \
                --pcr-private-key=tpm2-pcr-private.pem \
                --pcr-public-key=tpm2-pcr-public.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-initrd-private.pem \
                --pcr-public-key=tpm2-pcr-initrd-public.pem \
                --phases=enter-initrd \
                vmlinux-1.2.3 initrd.cpio \
                --uname=1.2.3
           + /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.pem --public-key=tpm2-pcr-public.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-initrd-private.pem \
           --public-key=tpm2-pcr-initrd-public.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 tpm-pcr-initrd-public.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⟩.