使用现有密钥文件为 LUKS2 加密分区添加新的 LUKS 密码或密钥

使用现有密钥文件为 LUKS2 加密分区添加新的 LUKS 密码或密钥

我的笔记本电脑有两个分区,其中 EFI 和/boot位于第一个分区,其余的 Linux 目录(包括根目录)位于第二个分区,该分区使用 dm-crypt 加密,LUKS2

/dev/nvme0n1p1: UUID="7AF4-D518" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="4679ac1e-34a2-4ef8-aa7b-3d650ed32cca"
/dev/nvme0n1p2: UUID="440abce6-d1ac-41de-8ae1-ebaefa51823c" TYPE="crypto_LUKS" PARTLABEL="Linux filesystem" PARTUUID="9bc4085a-05ce-41dc-9b4e-ed75c5901965"

我有启动项,无需使用密码即可自动解密(我使用的是 USB,但在 USB 开始出现问题后,我存储并使用了 EFI 分区本身的密钥文件)。我的启动项位于/boot/loader/entries/arch-zen-auto.conf

title Arch Linux (Zen) Auto
linux /vmlinuz-linux-zen
initrd /intel-ucode.img
initrd /initramfs-linux-zen.img
options cryptdevice=UUID=440abce6-d1ac-41de-8ae1-ebaefa51823c:luks:allow-discards cryptkey=/dev/disk/by-uuid/7AF4-D518:vfat:keyfile root=/dev/mapper/luks rootflags=subvol=@ rd.luks.options=discard rw mem_sleep_default=deep

因此,我无需提供密码短语即可启动和使用系统。几个月后,我忘记了密码短语 :(。我也找不到我的头文件备份。

有没有办法使用 EFI 分区中现有的密钥文件添加另一个密码,而无需使用我忘记的密码?由于我忘记了原始密码,我有什么选择?

我尝试使用现有的密钥文件打开分区,但仍然不起作用:

x1# cryptsetup luksOpen /dev/nvme0n1p2 test --master-key-file /dev/disk/by-uuid/7AF4-D518
Volume key does not match the volume.

# or

x1# cryptsetup luksOpen /dev/nvme0n1p2 test --master-key-file /boot/keyfile
Volume key does not match the volume.

/etc/fstab如果这有帮助的话:

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/mapper/luks UUID=50d843f7-2f8e-4c56-ac3d-0b5a7d35110e
/dev/mapper/luks        /               btrfs           rw,noatime,nodiratime,compress=lzo,ssd,space_cache,subvolid=256,subvol=/@,subvol=@     0 0

# /dev/nvme0n1p1 UUID=7AF4-D518
/dev/nvme0n1p1          /boot           vfat            rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro      0 2

# /dev/mapper/luks UUID=50d843f7-2f8e-4c56-ac3d-0b5a7d35110e
/dev/mapper/luks        /home           btrfs           rw,noatime,nodiratime,compress=lzo,ssd,space_cache,subvolid=257,subvol=/@home,subvol=@home     0 0

# /dev/mapper/luks UUID=50d843f7-2f8e-4c56-ac3d-0b5a7d35110e
/dev/mapper/luks        /data           btrfs           rw,noatime,nodiratime,compress=lzo,ssd,space_cache,subvolid=259,subvol=/@data,subvol=@data     0 0

# /dev/mapper/luks UUID=50d843f7-2f8e-4c56-ac3d-0b5a7d35110e
/dev/mapper/luks        /var            btrfs           rw,noatime,nodiratime,compress=lzo,ssd,space_cache,subvolid=258,subvol=/@var,subvol=@var       0 0

我已对所有行进行了注释,/etc/crypttab因此没有任何内容。

我尝试过的(一些与 LUKS(不是 LUKS2)相关的信息对我没有帮助):

答案1

使用--key-file

根据手动的

luksAddKey<设备> [<带有新密钥的密钥文件>]

添加新密码。必须以交互方式或通过以下方式提供现有密码--key-file。可以以交互方式指定要添加的新密码,也可以从作为位置参数给出的文件中读取。

您应该使用这个命令:

cryptsetup luksAddKey --key-file /boot/keyfile --verify-passphrase /dev/nvme0n1p2

注意:--master-key-file表示内核用于执行实际加密/解密的最终对称密钥,始终以受保护的形式存储,应小心处理。此主密钥过去可通过使用dmsetup table --showkeysLUKS1 从内核的设备映射器中检索,但对于运行内核 >= 4.10 的 LUKS2,不再可用(除非使用 打开--disable-keyring):该条目现在为只写内核密钥环名称. 密钥环的内容由内核的设备映射器使用,但用户空间无法使用,包括在内。因此,如果所有密码/密钥文件都丢失,并且没有包含以前已知密码/密钥文件的旧 LUKS 标头转储,则似乎不再有任何方法可以恢复主密钥,即使 LUKS2 卷仍处于打开状态(但如果已打开,其数据仍可用于紧急备份)。

相关内容