Jeder Rechner sollte verschlüsselt sein, nur autorisierte Personen sollen Zugriff haben. Doch was ist der Schlüssel? Bisher arbeitete ich mit einem Passwort, welches ich zu Bootzeit eingebe. Die Länge ist dabei begrenzt auf den menschlichen Faktor:
- Ich kann mir nur eine begrenzte Folge an Ziffern merken
- Ich habe nicht die Geduld lange Passwörter einzugeben
- Ich bin faul
Gut geschützt kann man das dabei nicht nennen.
Aktuell verwende ich meinen YubiKey zum Entsperren meines Rechners, wie ich das umgesetzt habe zeige ich im folgenden Beitrag.
Zuerst benötigt die Anwenderin das Paket: fido2-tools
Sollte der FIDO2-Stick noch keine Pin besitzen, so muss dieser zuerst gesetzt werden. Ohne Pin wird dieser auch nicht abgefragt. Möchte man einen anderen Pin setzten muss der FIDO2-Stick zurückgesetzt werden.
Zuerst wird der Pfad des FIDO-2Sticks mit sudo fido2-token -L
abgefragt:
/dev/hidraw3: vendor=0xXXXX, product=0xXXXX (Yubico YubiKey OTP+FIDO+CCID)
Mit dem Befehl sudo fido2-token -S /dev/hidraw3
wird der Pin gespeichert. Dieser wird zwar nicht benötigt, sollte aber der Rechner und der Token entwendet oder verloren gehen, so besitzt die Angreiferin alle notwendigen Mittel.
Am einfachsten ist es, dass nur der FIDO2-Stick angeschlossen ist der verwendet werden soll. Mit dem folgenden Befehl werden:
-
--wipe-slot=fido2
: Bestehende FIDO2 Sticks werden aus dem LUKS Datenträger gelöscht -
--fido2-device=auto
: Nur ein Token darf angeschlossen sein, dieser wird automatisch selektiert -
--fido2-with-user-presence yes
: Man muss mit dem Stick interagieren (die Präsenztaste betätigen) -
--fido2-with-client-pin yes
: Eine Pin wird zusätzlich beim Booten verlangt --fido2-with-user-verification no
: Kein zusätzliches Passwort wird benötigt
sudo systemd-cryptenroll --wipe-slot=fido2 --fido2-device=auto --fido2-with-user-presence yes --fido2-with-client-pin yes --fido2-with-user-verification no /dev/sdYX
Der abschließende Parameter beschreibt die Partition X auf dem Laufwerk Y, dass zum Bootzeitpunkt entsperrt werden muss.
Vollständige Auflistung aller Eingaben
Anschließend muss in der Datei /etc/crypttab
die Verwendung des FIDO2-Sticks aktiviert werden:
Auszug aus meinem crypttab:
luks-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none discard,fido2-device=auto
Damit lässt sich die Festplatte nicht nur durch das Passwort öffnen, sondern auch nur den FIDO2-Stick. Soll dies nur noch durch den FIDO2-Stick möglich sein, so muss zusätzlich der LUKS-Container darüber informiert werden:
sudo cryptsetup open --type luks --token-only DEVICE NAME
Schlussendlich muss das Initramfs die Informationen übernehmen, sonst funktioniert der nächste Start nicht mehr bzw. nur mit dem bisherigen Passwort.
Da ich ein Fedora-Silverblue Nutzer bin, muss ich das Initramfs mit FIDO2 Unterstützung ausstatten:
echo "add_dracutmodules+=\" fido2 \"" | sudo tee /etc/dracut.conf.d/fido2.conf
Das Initramfs muss (einmalig) darüber informiert werden, dass es jetzt FIDO2-Sticks zu unterstützen hat:
sudo rpm-ostree initramfs --enable --arg=f
Ich habe festgestellt, dass für die Nutzung des FIDO2-Sticks dieser vor dem Starten angeschlossen werden muss. Fehlt dieser, so wird er bei der Abfrage nicht mehr gefunden. Statt dem Passwort wird die Pin eingegeben, danach kommt die Präsenzerkennung durch den YubiKey.
Hauptbild: Silberfuchs
Quelle: Privacy Handbuch
Danke für den Beitrag, er regt zur Nachahmung an, so sind meine Daten bei Verlust/Diebstahl gut gesichert. Was passiert jedoch, wenn sich der Rechner im Suspend (to ram / to disk) Modus befindet. Sind die Luks-Partitionen in diesem Zustand gelockt, oder muss ich für die Vertraulichkeit den Rechner bei Nichtgebrauch runter fahren?
Was mich noch umtreibt, wie ich den Boot-Kernel und das initramfs schützen kann? Sind Kernel und initramfs durch Secure Boot geschützt? Andernfalls, falls ein/e Angreifer/in einen gespooften Kernel und/oder initramfs unterschiebt, kann sie/er warten bis ich die Partition entschlüssle und so alle Daten auslesen.
Bei Suspend to RAM ist dein Rechner per se ungeschützt: Zugriff ist aus dem OS raus möglich. Ein solcher Angriff ist jedoch teuer.
Bei Suspend to Disk kommt es darauf an, ob dein SWAP auch verschlüsselt ist oder nicht. Ich meine das geht, aber wie habe ich mich nie beschäftigt.
Fedora hebelt Secure Boot durch das Shim aus. Wie das genau funktioniert kann man nachschlagen. Im Endeffekt muss immer eine Software laufen der du vertraust, dass sie den Entschlüsselungsvorgang sauber durchführt. Wie du das Vertrauen herstellst ist deine Sache, so kannst du das Initramfs immer auf einem USB Stick mit dir herumtragen, den du zum Start des Rechners einstecken musst. Damit schließt du eine Manipulation aus, ist aber sehr unpraktisch.
Mit
/dev/hidraw3
dürfte der besagte Stick gemeint sein. Du beschreibst, wie der Stick bereits einen Pin besitzt, oder auch nicht besitzt, und wie er "gespeichert" wird, was die Frage aufwirft, wie Du einen Pin abfragst, den der Stick (noch?) nicht besitzt.Falls stattdessen mit
sudo fido2-token -S /dev/hidraw3
der Pin auf dem Rechner gespeichert würde, wieso sollen "Angreiferinnen alle notwendigen Mittel" haben?Mit etwas mehr Verständnis würde ich mich deutlich "sicherer" fühlen ;)
Du speicherst den Pin auf dem Stick und der Stick weiß ob ein Pin gesetzt ist. Ist keiner gesetzt wird die Abfrage automatisch übersprungen.
Ist der Pin gesetzt so fragt mein YubiKey jedoch auch bei jedem Zugriff einer Website diesen Pin ab.