我有一个打开的 LUKS 分区(打开意味着它已解密并挂载),其中有我想要恢复的密码。以前,只需恢复主密钥并使用它设置新插槽即可添加新密钥插槽,如所述请参阅此处常见问题解答第 6.10 节。但是,这对有问题的设备不起作用。命令
dmsetup table --target crypt --showkey /dev/mapper/<device>
根据常见问题解答,应该打印类似的内容(这不是我的密钥,而是从常见问题解答中复制而来的):
0 200704 crypt aes-cbc-essiv:sha256 a1704d9715f73a1bb4db581dcacadaf405e700d591e93e2eaade13ba653d0d09 0 7:0 4096
其中位a1704d9715f73a1bb4db581dcacadaf405e700d591e93e2eaade13ba653d0d09
是关键。相反,我现在得到
[...] :64:logon:cryptsetup:<device UUID> [...]
在这个位置。对于这个设备,它是一个外部 USB 驱动器。对于内部磁盘,它可以按预期工作。
它打印的设备 UUID 与您在调用时在 UUID 行中获得的设备 UUID 相同
sudo cryptsetup luksDump /dev/<USB device>
所有加密的外部磁盘似乎都是这种情况(与内部驱动器相反,内部驱动器可以按预期工作)。我不明白为什么内部和外部磁盘之间会有这种差异。据我所知,加密是相同的(twofish-xts-essiv:sha256),cryptsetup 版本为 2.0.2。内核是 4.15.0。
编辑:我注意到它可能与这,不知何故版本从 LUKS1 更改为 LUKS2,在 LUKS2 中,密钥不再可从用户空间访问。但是,我仍然不明白为什么内部和外部磁盘之间会有这种差异;我使用相同的 LUKS 版本来解密/打开它们。