Debian 安装程序更改了先前加密卷的密码

Debian 安装程序更改了先前加密卷的密码

我已经对我的问题做了一些研究(见下文),这就像“已完成的交易”一样好,但我仍然想向这个知识渊博的社区提出我的问题。

问题的简短版本:在partman(Debian安装程序的磁盘分区程序)中,先前的dm-crypt/LUKS加密卷的密码被错误地更改(或添加)。该卷的数据是不是标记为删除。之后我取消了安装。后来手动“解密”该卷后发现只有“新”密码可以解密该卷,但无法读取数据(即找不到文件系统和文件)...

我想知道改回旧密码后是否能够正确解密该卷的内容。

先前的研究:上述问题已提交到 debian-boot 邮件列表,在那里我收到了以下内容(非常清楚)回答:

我认为除非您有 LUKS 标头的备份,否则数据无法恢复。 LUKS 的工作方式是,数据不是直接使用密码加密,而是使用加密为一组密码的密钥进行加密。如果您纯粹通过安装程序的 UI 进行操作,您将覆盖您的 LUKS 标头,因此将无法再次解密数据,因为密钥材料丢失。 LUKS 标头在磁盘上的位置始终位于同一位置。

数据擦除实际上只是用零覆盖现有数据,我认为这非常令人困惑。从技术上讲,由于标头被覆盖,数据已经被删除,但有些人希望在将系统部署到生产环境之前确定并将随机数据(或在非加密磁盘的情况下为零)写入磁盘。

唉,我没有这个卷的 LUKS 标头的备份。正如我上面所说,目的只是为了之前加密的卷,并且不更改任何内容(因此,令我遗憾的是,我没有采取适当的预防措施)。

问题:是否有任何方法可以使用加密该卷的(已知)原始密码(重新)生成原始 LUKS 标头,或者该数据是否永久丢失?

感谢您的考虑和您的时间。

答案1

无论如何都没有办法恢复。 (*)

使用 LUKS,您用来打开加密的密码和实际用于加密的主密钥是完全无关的。

基本上,您的密码会解密一个完全随机的密钥,并且该随机密钥存储在 LUKS 标头中。完全丢失 LUKS 标头(或者甚至更改密钥材料的一位)会使您无法获取用于该卷的主密钥。

这也是为什么使用 LUKS,您可以拥有 8 个不同的密码,并可以随时更改每个密码,而无需重新加密所有数据。无论您多久更改一次 LUKS 密码,主密钥都保持不变。

主密钥恢复显然不是 LUKS 概念的一部分,实际上恰恰相反; LUKS 采取许多步骤来防止您(或任何人)从(部分)覆盖的 LUKS 标头恢复主密钥。 LUKS 文档甚至建议您不要备份标头,因为备份标头超出您的控制意味着失去声明旧密码无效的能力。因为旧的密码仍然会在旧的标头中存储和使用。

(*) 此规则的唯一例外是容器仍处于打开状态。对于活动的加密映射,人们可能能够使用 来获取主密钥dmsetup table --showkeys。因此,如果您在正在运行的系统中杀死了 LUKS 标头并立即意识到,您可以使用已知的主密钥创建一个新的 LUKS 标头。

没有主密钥,您将无法继续操作,也无法暴力破解主密钥,这就是加密的全部意义所在。好吧,你可以在无限的 CPU 能力和/或时间的情况下做到这一点,所以如果你想给你的后代留下一个谜题,请保留一份加密数据的副本并将其传递下去......;)

相关内容