仅删除 LUKS 密钥后如何恢复?

仅删除 LUKS 密钥后如何恢复?

在禁用 LUKS 加密的愚蠢尝试中,我做了

cryptsetup luksRemoveKey

到我唯一的钥匙。所以现在每次我尝试启动我的 Fedora-21 时,它都会要求输入密码,但显然无法识别它,并说

Reached target System Initialization
Reached target Basic System

就是这样。有没有办法恢复或者我必须重新格式化我的硬盘?

cryptsetup luksAddKey

在这种情况下似乎不起作用。

答案1

正如手册页所述,游戏结束了。

删除最后一个密码会使 LUKS 容器永久无法访问。

也就是说,如果您确实删除了最后一个键。是否cryptsetup luksDump显示DISABLED所有键槽?

通常cryptsetup会阻止您这样做,或者至少要求确认:

# cryptsetup luksRemoveKey foobar
Enter passphrase to be deleted: 

WARNING!
========
This is the last keyslot. Device will become unusable after purging this key.

Are you sure? (Type uppercase yes): NO, ABSOLUTELY NOT OKAY!

除非处于批处理模式或从管道读取密码,否则它会执行此操作。

我个人认为即使那样它也应该阻止你,毕竟如果你真的想让它无法访问你也可以luksErase直接使用。但事情似乎并非如此。

如果您有 LUKS 标头的备份,或者 LUKS 容器仍处于打开状态,则情况会有所不同。您可以恢复或使用 LUKS 标头的备份luksOpen --header thebackup.header

对于开放的 LUKS 容器,您可以获取主密钥并dmsetup table --showkeys从中构建新的 LUKS 标头,如下所示这个答案(它以不同的方式获取主密钥,但概念相同)。

答案2

来自cryptsetup手动的:

删除最后一个密码会使 LUKS 容器永久无法访问。

这是 LUKS 设计的固有属性。每个密钥槽都包含实际的加密密钥,并由从密码短语派生的密钥封装。如果没有留下包含包装密钥的插槽,则不再有该密钥的副本。

恐怕您必须从备份中恢复数据。

相关内容