Privacy Handbuch

Moderne Linux Distributionen mit systemd Version 2.48+ können auch PKCS#11 Token zum Entsperren von LUKS Containern verwenden, wenn das Token die PIV Erweiterung unterstützt.

  1. Zuerst ist das PKCS#11 Token vorzubereiten (RSA Schlüsselpaar erzeugen, PINs ändern…)

  2. Im nächsten Schritt erstellt man den LUKS2(!) Container (USB-Stick, verschlüsselte Partition oder Containerdatei) und schützt ihn mit einer echt knackigen, starken Passphrase:

    > sudo cryptsetup luksFormat --type luks2 <device>

    Hinweis: Container im älteren LUKS1 Format können nicht mit FIDO2 Token geöffnet werden. Man könnte versuchen, einen vorhandenen LUKS1 Container nach LUKS2 zu konvertieren:

    > sudo cryptsetup convert --type luks2 <device>
  3. Im nächsten Schritt wird ein PKCS#11 Token zum Öffnen des Containers hinzugefügt. Das Token muss dabei eingesteckt sein:

    > sudo systemd-cryptenroll --pkcs11-token-uri=auto <device> Es können nacheinander mehrere Token hinzugefügt werden oder alle gleichzeitig mit: > sudo systemd-cryptenroll --pkcs11-token-uri=list <device>
  4. Beim Öffnen des Containers wird standardmäßig weiterhin nach der Passphrase gefragt. Wenn man das PKCS#11 Token verwenden möchte, kann man folgendes Kommando verwenden: > sudo cryptsetup open --type luks --token-only <device> <name> oder auch möglich: > sudo /usr/lib/systemd/systemd-cryptsetup attach <name> <device> - pkcs11-uri=auto Den Befehl könnte man in einem kleinen Script verwenden. Wenn man eine externe Festplatte oder verschlüsselten USB-Stick mit FIDO2 Stick per Script öffnen will, sollte man das Gerat mit UUID angeben, um unabhängig von der Reihefolge beim Einstecken zu sein: > sudo cryptsetup open --type luks --token-only UUID=<uuid> <name> Die <uuid> kann mit dem Befehl "blkid" ermittelt werden.
  5. Wenn man eine im Laptop oder PC fest eingebaute verschlüsselte Festplatte standardmäßig mit einem FIDO2 Token öffnen möchte, kann man in der Datei /etc/crypttab für das Device in der vierten Spalte die Option "pkcs11-uri" einfügen:

    <Name> <Gerät> - luks,pkcs11-uri=auto...

    Wenn es sich dabei um die verschlüsselte root Partition handelt, muss abschließend noch das Bootimage neu gebaut werden:

    > sudo update-initramfs -u

    Zukünftig muss man keine hochkomplizierte Passphrase mehr eintippen sondern steckt beim Booten einfach das PKCS#11 Token rein, das man natürlich nicht verlieren darf.

  6. Wenn ein Token verloren geht, muss man es natürlich entfernen. Das folgende Kommando löscht alle PKCS#11 Token. die für den LUKS2 Container authorisiert wurden:

    > sudo systemd-cryptenroll --wipe-slot=pkcs11 <device> Die weiterhin gültigen Token kann man danach wieder hinzufügen. Das Löschen und Hinzufügen der weiterhin gültigen PKCS\#11 Token kann auch hier mit einem Kommando erfolgen. Die gültigen Token müssen dabei angeschlossen sein: > sudo systemd-cryptenroll --wipe-slot=pkcs11 --pkcs11-token-uri=list <device>