Nitrokey zum entschlüsseln der SSD beim booten von ARCH Linux nutzen

Nabend,

ich hab hier ein laufendes ARCH System. Die SSD hat zwei Partitionen: einmal Boot und eine in der ein LUKS2 verschlüsseltes Root liegt. Als Bootloader wird systemd benutzt.

Wenn ich boote, werde ich nach dem Passwort für die Entschlüsselung der zweiten Partition gefragt. Soweit so gut.

Nun habe ich einen Nitrokey 3 hier liegen. UDEV Regeln sind eingerichtet. Der Key wird erkannt und ich kann ihn mit der Nitrokey App 2 auch konfigurieren.

Ich hab dann systemd-cryptenroll --fido2-device=auto /dev/nvme0n1p2 ausgeführt. Das hat auch soweit geklappt:

[xy@host ~]$ sudo systemd-cryptenroll /dev/nvme0n1p2
SLOT TYPE    
   0 password
   1 recovery
   2 fido2

Wenn ich das System jetzt neu boote, werde ich nach der PIN des Key gefragt. Aber direkt danach dann zusätzlich nach dem bisherigen Passwort.

Für mich macht das den Eindruck, als wenn der Nitrokey zu dem Zeitpunkt nicht erkannt wurde. Eigentlich müsste ich ja aufgefordert werden den Key anzutippen. Das passiert nicht.

Hat jemand eine Idee, wie ich das weiter testen kann?

Servus,

ich habe ein ähnliches Setup und es funktioniert reibungslos. Welche HOOKS hast du gesetzt in der mkinitcpio? Und nutzt du crypttab oder direkt die kernel cmdline? Welche Einträge nutzt du dort?

Greez

Mist, das ist schon so lange her, dass ich nicht mehr genau weiß, wie ich die LUKS2 Partition eingebunden habe.

/etc/mkinitcpio.conf

MODULES=(nvme btrfs)
BINARIES=(/usr/bin/btrfs)
FILES=()
HOOKS=(base systemd autodetect keyboard sd-vconsole modconf block sd-encrypt filesystems fsck)

/boot/loader/entries/linux.conf

title Arch Linux (mlinux)
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options rd.luks.name=23507e48-64d3-4d6b-b3b5-6c084481d2e6=luksdev root=/dev/mapper/luksdev zswap.enabled=0 rootflags=subvol=@ rw intel_pstate=no_hwp rootfstype=btrfs

/etc/crypttab und /etc/kernel/cmdline werden nicht genutzt.

Versuch mal im Eintrag im bootloader unter options Folgendes zu ergänzen

rd.luks.options=fido2-device=auto,token-timeout=5

Dann sicherheitshalber einmal bootctl update

Hui … Wenn ich das hinzufüge, bekomme ich dies. Der zweite Screenshot reicht eigentlich - ist aus dem gleichen Bootvorgang. Aber dort ist nicht zu sehen, das ich den security token PIN eingeben soll.

Was ist denn eigentlich der LUKS2 Token PIN und was der security token PIN?


Wenn ich ohne rd.luks.options=fido2-device=auto,token-timeout=5 boote, sieht das so aus - da fragt er mich beim zweiten mal nach der passphrase:

im Journal finde ich übrigens dies:
Jan 11 09:29:45 archlinux kernel: hid-generic 0003:20A0:42B2.0001: hiddev96,hidraw0: USB HID v1.11 Device [Nitrokey Nitrokey 3] on usb-0000:01:00.0-8/input1

Jan 11 09:29:57 archlinux systemd-cryptsetup[205]: FIDO2 support is not installed.

Der Key wird also gefunden. Aber es scheint was mit FIDO2 nicht zu passen.

Moin,

kann es sein, dass du das Paket libfido2 noch nicht installiert hast? Falls ja könnte dies die Lösung sein. Nach der Installation noch einmal mkinitcpio -P und die options im loader entrie wieder anpassen. Bin gespannt ob es dann funktioniert.

P.s.: Die Unterscheidung von LUKS2 token PIN und security token PIN ist mir auch schleierhaft. Es ist (bei mir jedenfalls) beides die PIN des Nitrokeys.

Hahh, es geht.

Ich hatte zwar libfido2 installiert, aber die initramfs nicht neu erstellt.

Ich brauche auch deine Anpassung

rd.luks.options=fido2-device=auto,token-timeout=5

nicht im Bootloader eintragen. Geht ohne.

Danke für die Unterstützung!

1 „Gefällt mir“