Fedora Silverblue/Kinoite mit FIDO2 entsperren

Unveränderliche Distributionen funktionieren etwas anders als herkömmliche Linux-Distributionen. Vor allem bei nicht alltäglichen Anforderungen stößt man auf schlecht dokumentierte Szenarien. Die Freischaltung eines mit LUKS verschlüsselten Betriebssystems mittels FIDO2-Schlüssel ist eines davon.

Das Verfahren ist dank der systemd-Entwicklung heute viel normierter und einfacher als früher. Beschrieben hatte ich den Ablauf mit systemd-cryptenroll hier bereits. Zum Vergleich: Vorher war das ein wenig aufwändiger und funktionierte auch nur mit Debian und Arch Linux hinreichend gut.

Das Problem bei Silverblue/Kinoite ist der initramfs bzw. die Tatsache, dass dieser nicht automatisch neu generiert wird. Deshalb sind ein paar andere Schritte notwendig.

Zunächst fügt man den FIDO2-Stick zu den LUKS-Keys hinzu:

$ sudo systemd-cryptenroll --fido2-device=auto /dev/<disknumber>

Bei einer entsprechenden Abfrage mittels luksDump muss nun der Key in einem Key-Slot eingetragen sein:

$ sudo cryptsetup luksDump /dev/<disknummer>

Die Ausgabe sollte in unter Tokens folgenden Inhalt haben:

  0: systemd-fido2
        fido2-credential:
                    b9...
        fido2-salt: 7f...
        fido2-rp:   io.systemd.cryptsetup
        fido2-clientPin-required:
                    false
        fido2-up-required:
                    true
        fido2-uv-required:
                    false
        Keyslot:    1

Anschließend müssen mittels rpm-ostree noch Kernelmodule hinzugefügt und die manuelle Erzeugung des initramfs aktiviert werden.

$ rpm-ostree kargs --append=rd.luks.options=fido2-device=auto
$ rpm-ostree initramfs –arg=-a –arg=fido2

Nach einem Neustart kann das System nun mit FIDO2 entsperrt werden. Plymouth unterstützt diesen Vorgang noch nicht durch eine grafische Darstellung. Stattdessen wartet das System „stumm“ auf eine Interaktion mit dem FIDO2-Stick. Die Notwendigkeit dazu wird aber beim YubiKey durch die blinkende Taste deutlich gemacht.

Cruiz
Cruizhttps://curius.de
Moin, meine Name ist Gerrit und ich betreibe diesen Blog seit 2014. Der Schutz der digitalen Identität, die einen immer größeren Raum unseres Ichs einnimmt ist mir ein Herzensanliegen, das ich versuche tagtäglich im Spannungsfeld digitaler Teilhabe und Sicherheit umzusetzen. Die Tipps, Anleitungen, Kommentare und Gedanken hier entspringen den alltäglichen Erfahrungen.
    • Das kannst du nicht vergleichen. Der FIDO-Stick entschlüsselt nur das Systemvolume beim Start. Da geht es letztlich in meinem Szenario nur um die Integrität, dass eine vertrauenswürdige Person das System hochfährt. Damit hat man sich ja noch nicht am System angemeldet und die Benutzerdaten entschlüsselt.

      • Unsinn, natürlich ist es sinnvoll, den FIDO2 Stick wie eine Kreditkarte mit PIN zu verwenden, wenn man den Zugriff auf private Daten schützen will. Dann könnte man auch den Tastendruck abschalten, PIN Eingabe reicht: “sudo systemd-cryptenroll –fido2-device=auto –fido2-with-client-pin=yes –fido2-with-user-presence=no /dev/” (Einfach mal in die man page schauen oder hier auf Deutsch: https://www.privacy-handbuch.de/handbuch_37h1.htm)

        • Wie immer versuchst du nur irgendeine Lücke hier im Blog zu finden, ohne Ahnung und Verstand und meist ohne die Sachen selbst zu lesen. Verlinke ich dann das Gegenteil oder argumentierte, dann kommt Schweigen. Das langweilt.

          Natürlich kann man immer mehr machen. Ich kann meinen Laptop bei Nichtbenutzung auch immer in einen Tresor legen. Das macht bei manchen Nutzungsszenarien definitiv Sinn. Im vorliegenden Fall wäre ein zusätzlicher PIN ein Mehraufwand, den ich für nicht notwendig halte, da danach die Systempartition entsperrt, nicht aber die Daten zugänglich sind. FIDO ist hier für mich vergleichbar mit TPM. Es ist schlicht ein zweiter Faktor, um das System starten zu können. Es geht also mithin nicht um private Daten. Die Situation kann man je nach Bedrohungsszenario natürlich anders bewerten, hier geht es aber um mein Privatgerät.

          Ich erwarte wie immer keine Antwort. Wäre ja auch zu viel verlangt.

          • Oben hatte jemand nach Freigabe mit PIN gefragt. Da hätte man einigermaßen souverän antworten können: “Kann man mit folgender Option machen:…” Statt dessen nur selbstverliebte Nabelschau (“Nicht mein Problem in meinem Scenario…”) Kannst dir wahrscheinlich nicht vorstellen, dass andre Leute andere Anforderungen haben. Ich finde die Absicherung mit FIDO2 + PIN Eingabe übrigens auch sinnvoll – und dann mit automatischer Anmeldung durchbooten bis zum geöffneten Desktop. Warum soll man nochmal ein Passwort eingeben müssen, wenn man sich mit starker 2FA authentifiziert hat, um Zugang zu dem System zu bekommen?

            • Ich sollte den Slogan dringend ändern: “[Mer]Curius – Ein Blog, keine Manpage, kein Wiki”

              Natürlich gibt es unterschiedliche Bedrohungsszenarien und ganz unterschiedliche Maßnahmen. Manche Menschen müssten objektiv ihre Geräte überhaupt nicht verschlüsseln, andere sollten sie im ausgeschalteten Zustand wirklich im Tresor lagern (das war ernst gemeint). Ein Blog ist garantiert nicht das Medium, bei dem man bei jeder kleinen Wasserstandsmeldung dieses Fass aufmacht. Ich habe hier sogar Schwerpunktseiten, auf denen ich mich sehr ausführlich mit verschiedenen Fragestellungen auf einer Metaebene beschäftigte. Das hier ist aber der Blogbereich und dies hier sogar eine kurze Meldung “Wie geht xyz”. Kein Anspruch auf Vollständigkeit, sondern einfach nur aus meinem Nutzungsalltag.

              Das ist auch der Sinn eines Blogs. Zitat zur Auffrischung der Medienkompetenz:
              “Ein Blog [blɔg] (das oder der) oder auch Weblog [ˈwɛb.lɔg] (Wortkreuzung aus englisch Web und Log für „Logbuch“ oder „Tagebuch“) ist ein meist auf einer Website geführtes und damit meist öffentlich einsehbares Tagebuch oder Journal, in dem mindestens eine Person, der Blogger, international auch Weblogger genannt, Aufzeichnungen führt, Sachverhalte protokolliert („postet“) oder Gedanken niederschreibt. […] Meist ist ein Blog eine chronologisch abwärts sortierte Liste von Einträgen, die in bestimmten Abständen umbrochen wird. Der Blogger ist Hauptverfasser des Inhalts, und häufig sind die Beiträge aus der Ich-Perspektive geschrieben. Das Blog bildet ein Medium zur Darstellung von Aspekten des eigenen Lebens und von Meinungen zu spezifischen Themen.”
              https://de.wikipedia.org/wiki/Blog

              Ich nehme an, du weißt das. Deshalb finde ich deine Kommentare höchst durchsichtig und reagiere entsprechend.

              • Du bist aber dünnhäutig. Unter “Über” steht: “[Mer]Curius bietet praxisnahe Hilfestellungen zur digitalen Absicherung.” Wenn man einen Blogartikel im Kommentar mit zusätzlichen Informationen ergänzt (nach denen oben gefragt gefragt wurde), dann wird man angeblafft: “Das ist mein Tagebuch über mein IT-Leben…” (also eher eine selbstverliebte Nabelschau, Ergänzungen oder Diskussionen unerwünscht – ist ja kein Wiki)

                • Ach wo hab ich “geblafft”? Deine als Anführungszeichen suggerierten Zitate stehen so nicht oben. Den Tonfall hast du gesetzt mit “Unsinn” und RTFM. Wie übrigens in deinen letzten Kommentaren unter anderen Blogposts auch.

                  Ich finde es wirklich putzig, wie du hier versuchst mir irgendwelche Lücken vorzuwerfen und dabei argumentativ vom Hölzchen aufs Stöckchen kommst.

  1. Danke schön für diesen Blog. Er hat mir geholfen, herauszufinden, wie man bei Fedora Silverblue 38 möglichst einfach eine LUKS-verschlüsselte Systempartition mit TPM ohne Passworteingabe beim Booten freischalten kann (TPM2, LUKS2 und SecureBoot vorausgesetzt):

    # systemd-cryptenroll –tpm2-device=auto –tpm2-pcrs=7 /dev/

    Anschließend müssen mittels rpm-ostree noch Kernelmodule hinzugefügt und die manuelle Erzeugung des initramfs aktiviert werden:

    # rpm-ostree kargs –append=rd.luks.options=tpm2-device=auto
    # rpm-ostree initramfs –enable –arg=-a –arg=systemd-pcrphase

    Nach einem Neustart sollte das System normalerweise ohne Passwortabfrage booten. Falls die PCR-Hashes nicht stimmen, dann unterstützt Plymouth diesen Vorgang durch das übliche Eingabefeld für ein Passwort, mit dem die LUKS-Partition entschlüsselt werden kann. Es gibt unterschiedliche Empfehlungen, welche PCRs man bei –tpm2-pcrs= angeben soll. “7” ist die einfachste, aber nicht unbedingt die sicherste Option.

    Dass die /etc/crypttab nicht um FIDO bzw. TPM spezifische Optionen ergänzt werden muss, war mir neu und habe ich in anderen Anleitungen noch nicht gesehen, hat aber funktioniert.

    In dem letzten Beispielbefehl im Blog fehlt wohl ein –arg?
    Nicht: rpm-ostree initramfs –arg=-a fido2
    Sondern: rpm-ostree initramfs –arg=-a –arg=fido2

Kommentieren Sie den Artikel

Ergänzungen dienen der Diskussion über die Inhalte des Artikels. Nachfragen, Anmerkungen und Ergänzungen sind dezidiert erwünscht. Ergänzungen werden vor der Veröffentlichung moderiert. Wir behalten uns vor Kommentare ohne inhaltlichen Bezug oder abseitige Diskussionen nicht zu veröffentlichen.

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Weitere Artikel