Sto usando arch linux con una partizione root luks crittografata (avvio non crittografato), con ancora una passphrase.
Ora ho un file di chiavi (3072 byte), che è scritto su USB-Stick in questo modo:
sudo dd if=tempKeyFile.bin of=/dev/sdd bs=512 seek=1 count=6
e anche impostato come pass aggiuntivo
sudo cryptsetup luksAddKey /dev/sdb6 tempKeyFile.bin
Quando apro la partizione manualmente con:
sudo cryptsetup --key-file tempKeyFile.bin open /dev/sdb6 luks_root
tutto funziona, la partizione è mappata e può essere montata.
Ora il mio kernel-parameter-line in grub.cfg
assomiglia a questo:
linux /vmlinuz-linux root=UUID=$UUID_OF_luks_root$ rw cryptdevice=UUID=$UUID_OF_sdb6$:luks_root cryptkey=/dev/sdd:1:6
Ma all'avvio, ottengo questo errore:
No key available with this passphrase.
Invalid Keyfile. Reverting to passphrase.
Ho già provato l'offset 2 invece di 1, ma stesso risultato. Ho notato che non dice che non è stato possibile trovare/leggere il file di chiavi, ma non era corretto.
Sembra che ci sia poca documentazione su questo modo di archiviare il file di chiavi luks. Arch-wiki ne fa menzione, ma molto brevemente e mi sembra di essere conforme, quindi penso che dovrebbe essere possibile.
nel mio mkinitcpio.conf
MODULI, BINARI e FILE sono vuoti e ho impostato:
HOOKS=(base udev autodetect keyboard modconf block encrypt filesystems fsck)
quindi il blocco è subito prima della crittografia.
Qual è il problema qui?
Risposta accettata:
Dall'hook encrypt di ArchLinux (/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
;;
Quindi, mentre supporta la lettura di una chiave da un dispositivo a blocchi non elaborati, utilizza una dimensione del blocco di 1 (invece del 512 predefinito), quindi devi moltiplicare i tuoi valori per 512 per farlo funzionare.
Quindi, invece di cryptkey=/dev/sdd:1:6
prova cryptkey=/dev/sdd:512:3072
.