Saya menggunakan arch linux dengan partisi root luks terenkripsi (boot tidak terenkripsi), dengan frasa sandi.
Sekarang saya memiliki file kunci (3072 byte), yang ditulis ke USB-Stick dengan cara ini:
sudo dd if=tempKeyFile.bin of=/dev/sdd bs=512 seek=1 count=6
dan juga ditetapkan sebagai pass tambahan
sudo cryptsetup luksAddKey /dev/sdb6 tempKeyFile.bin
Ketika saya membuka partisi secara manual dengan:
sudo cryptsetup --key-file tempKeyFile.bin open /dev/sdb6 luks_root
semuanya bekerja, partisi dipetakan dan dapat dipasang.
Sekarang kernel-parameter-line saya di grub.cfg
terlihat seperti ini:
linux /vmlinuz-linux root=UUID=$UUID_OF_luks_root$ rw cryptdevice=UUID=$UUID_OF_sdb6$:luks_root cryptkey=/dev/sdd:1:6
Tetapi ketika boot, saya mendapatkan kesalahan ini:
No key available with this passphrase.
Invalid Keyfile. Reverting to passphrase.
Saya sudah mencoba offset 2 bukannya 1, tetapi hasil yang sama. Saya perhatikan itu tidak mengatakan, bahwa file kunci tidak dapat ditemukan/dibaca, tetapi salah.
Tampaknya ada sedikit dokumentasi tentang cara menyimpan luks keyfile ini. Arch-wiki menyebutkannya, tetapi sangat singkat dan sepertinya saya setuju, jadi saya pikir itu mungkin.
di mkinitcpio.conf
saya MODUL, BINARY, dan FILES kosong dan saya menyetel:
HOOKS=(base udev autodetect keyboard modconf block encrypt filesystems fsck)
jadi blokir tepat sebelum enkripsi.
Apa masalahnya di sini?
Jawaban yang Diterima:
Dari kait enkripsi 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
;;
Jadi meskipun mendukung membaca kunci dari perangkat blok mentah, ia menggunakan ukuran blok 1 (bukan default 512), jadi Anda harus mengalikan nilai Anda dengan 512 untuk membuatnya berfungsi.
Jadi, alih-alih cryptkey=/dev/sdd:1:6
coba cryptkey=/dev/sdd:512:3072
.