Ich verwende Arch Linux mit einer verschlüsselten Luks-Root-Partition (bootet unverschlüsselt), mit noch einer Passphrase.
Jetzt habe ich eine Schlüsseldatei (3072 Byte), die folgendermaßen auf den USB-Stick geschrieben wird:
sudo dd if=tempKeyFile.bin of=/dev/sdd bs=512 seek=1 count=6
und auch als Zusatzpass setzen
sudo cryptsetup luksAddKey /dev/sdb6 tempKeyFile.bin
Wenn ich die Partition manuell öffne mit:
sudo cryptsetup --key-file tempKeyFile.bin open /dev/sdb6 luks_root
alles funktioniert, die Partition ist gemappt und kann gemountet werden.
Nun meine Kernel-Parameter-Zeile in grub.cfg
sieht so aus:
linux /vmlinuz-linux root=UUID=$UUID_OF_luks_root$ rw cryptdevice=UUID=$UUID_OF_sdb6$:luks_root cryptkey=/dev/sdd:1:6
Aber beim Booten bekomme ich diesen Fehler:
No key available with this passphrase.
Invalid Keyfile. Reverting to passphrase.
Ich habe bereits Offset 2 anstelle von 1 ausprobiert, aber das gleiche Ergebnis. Mir ist aufgefallen, dass dort nicht steht, dass die Schlüsseldatei nicht gefunden/gelesen werden konnte, aber falsch war.
Es scheint wenig Dokumentation über diese Art des Speicherns von Luks-Schlüsseldateien zu geben. Arch-Wiki erwähnt es, aber sehr kurz und ich scheine konform zu sein, also denke ich, dass es möglich sein sollte.
in meiner mkinitcpio.conf
MODULE, BINARYS und FILES sind leer und ich setze:
HOOKS=(base udev autodetect keyboard modconf block encrypt filesystems fsck)
Blockieren ist also direkt vor Verschlüsseln.
Was ist hier das Problem?
Akzeptierte Antwort:
Vom ArchLinux-Verschlüsselungs-Hook (/lib/initcpio/hooks/encrypt
):
*)
# Read raw data from the block device
# ckarg1 is numeric: ckarg1=offset, ckarg2=length
dd if="$resolved" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
;;
Während es also das Lesen eines Schlüssels von einem Raw-Block-Gerät unterstützt, verwendet es eine Blockgröße von 1 (anstelle der Standardeinstellung 512), sodass Sie Ihre Werte mit 512 multiplizieren müssen, damit es funktioniert.
Also statt cryptkey=/dev/sdd:1:6
versuchen Sie cryptkey=/dev/sdd:512:3072
.