发布于2025年12月5日12月5日 围绕我们最近添加到Kali Linux 的cryptsetup 包中的LUKS nuke 补丁进行了相当多的讨论。我们希望借此机会更好地解释此功能,并演示一些值得了解的有用方法。 LUKS Nuke 简而言之 正如Michael Lee 在他的ZDNet 文章中所解释的那样,在创建加密的LUKS 容器时,会随机生成一个主密钥。然后使用密码依次加密主密钥。此过程意味着密码不直接与数据耦合。也就是说,如果对两组相同的数据进行加密并使用相同的密码,则主密钥对于每组而言保持唯一并且不能被换出。然而,这也意味着,无论使用什么密码,如果主密钥丢失,就不可能恢复数据。这个过程很容易通过故意擦拭钥匙而被用作核武器。 LUKS Nuke 的用例示例 我们在Kali Linux 中引入此功能的主要目的是简化安全传输机密客户信息的过程。虽然“LUKS Nuking”您的驱动器将导致磁盘无法访问,但可以提前备份您的键槽并在事后恢复它们。这使我们能够在任何旅行之前“砖化”我们的敏感笔记本电脑,将自己与恢复密钥(我们加密的)分开,然后在回到安全位置后将它们“恢复”到机器上。这样,如果我们的硬件在旅途中丢失或以其他方式被访问,那么没有人能够恢复其中的数据,包括我们自己。 还有其他方法可以删除键槽,但是Nuke 选项的优点是它快速、简单,并且不需要您完全登录到Kali 安装。如果你保留了头部的备份,那么当你感觉不舒服时,你可以用核武器攻击键槽。然后当您感到安全时进行恢复。 亲自尝试一下 让我们演示一下使用Kali Linux 加密、备份、销毁和恢复数据的过程。首先下载并安装具有全盘加密功能的Kali Linux 1.0.6。完成后,您可以验证您的信息,如下所示: root@kali-crypto:~# cryptsetup luksDump /dev/sda5 /dev/sda5 的LUKS 标头信息 版本: 1 密码名称: aes 密码模式: xts-plain64 哈希规范: sha1 有效负载偏移: 4096 MK位: 512 MK 摘要: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db MK盐: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48 16 A2 B0 A9 2C BB CC F6 EA 66 E6 B1 79 08 69 17 MK迭代: 65750 UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d 钥匙槽0: 已启用 迭代次数: 223775 盐: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88 7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49 关键材料offset: 8 AF 条纹: 4000 钥匙槽1: 已禁用 钥匙槽2: 已禁用 钥匙槽3: 已禁用 钥匙槽4: 已禁用 钥匙槽5: 已禁用 钥匙槽6: 已禁用 钥匙槽7: 已禁用 如您所见,我们启用了插槽0,而插槽1 至7 未使用。此时,我们将添加我们的nuke key: root@kali-crypto:~# apt install cryptsetup-nuke-password root@kali-crypto:~# dpkg-重新配置cryptsetup-nuke-密码 这并没有对LUKS 容器进行任何更改,而是在initrd 中安装了nuke 密码和一个小钩子。该挂钩将检测您何时在启动时输入nuke 密码,届时它将在您的LUKS 容器上调用“cryptsetup luksErase”。 精彩的。现在我们需要备份加密密钥。这可以通过“luksHeaderBackup”选项轻松完成: root@kali-crypto:~# cryptsetup luksHeaderBackup --header-backup-file luksheader.back /dev/sda5 root@kali-crypto:~# 文件luksheader.back luksheader.back: LUKS 加密文件,版本1 [aes、xts-plain64、sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d 根@kali-crypto:~# 因此,在我们的例子中,我们希望加密这些数据以进行存储。有多种方法可以完成此操作,但是我们将使用openssl 使用Kali: 中的默认工具使该过程快速、轻松 root@kali-crypto:~# openssl enc -aes-256-cbc -salt -in luksheader.back -out luksheader.back.enc 输入aes-256-cbc加密密码: 验证-输入aes-256-cbc加密密码: root@kali-crypto:~# ls -lh luksheader.back* -r-------- 1 root root 2.0M Jan 9 13:42 luksheader.back -rw-r--r-- 1 root root 2.0M Jan 9 15:50 luksheader.back.enc root@kali-crypto:~# 文件luksheader.back* luksheader.back: LUKS 加密文件,版本1 [aes、xts-plain64、sha1] UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d luksheader.back.enc: 数据 太好了,现在我们已经准备好备份加密标头了。在这种情况下,我们希望将标头放置在易于访问的位置。这可以像保存在安全位置的USB 拇指驱动器一样简单。此时,让我们重新启动并使用Nuke 键,看看Kali 如何响应。 所以我们使用了Nuke 键,正如预期的那样,我们无法再启动到Kali。让我们通过启动Kali Live CD 并再次转储LUKS 标头来看看实际磁盘上发生了什么: root@kali:~# cryptsetup luksDump /dev/sda5 /dev/sda5 的LUKS 标头信息 版本: 1 密码名称: aes 密码模式: xts-plain64 哈希规范: sha1 有效负载偏移: 4096 MK位: 512 MK 摘要: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db MK盐: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48 16 A2 B0 A9 2C BB CC F6 EA 66 E6 B1 79 08 69 17 MK迭代: 65750 UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d 钥匙槽0: 已禁用 钥匙槽1: 已禁用 钥匙槽2: 已禁用 钥匙槽3: 已禁用 钥匙槽4: 已禁用 钥匙槽5: 已禁用 钥匙槽6: 已禁用 钥匙槽7: 已禁用 正如我们所看到的,没有使用任何键槽。核武器按预期工作。要将标头恢复到位,只需从USB 驱动器中检索加密的标头即可。一旦我们有了它,我们就可以解密它并进行恢复: root@kali:~# openssl enc -d -aes-256-cbc -in luksheader.back.enc -out luksheader.back 输入aes-256-cbc解密密码: root@kali:~# cryptsetup luksHeaderRestore --header-backup-file luksheader.back /dev/sda5 警告! ======== 设备/dev/sda5 已包含LUKS 标头。更换标头将破坏现有的键槽。 你确定吗? (输入大写是): 是 root@kali:~# cryptsetup luksDump /dev/sda5 /dev/sda5 的LUKS 标头信息 版本: 1 密码名称: aes 密码模式: xts-plain64 哈希规范: sha1 有效负载偏移: 4096 MK位: 512 MK 摘要: 04 cd d0 51 bf 57 10 f5 87 08 07 d5 c8 2a 34 24 7a 89 3b db MK盐: 27 42 e5 a6 b2 53 7f de 00 26 d3 f8 66 fb 9e 48 16 A2 B0 A9 2C BB CC F6 EA 66 E6 B1 79 08 69 17 MK迭代: 65750 UUID: 126d0121-05e4-4f1d-94d8-bed88e8c246d 钥匙槽0: 已启用 迭代次数: 223775 盐: 7b ee 18 9e 46 77 60 2a f6 e2 a6 13 9f 59 0a 88 7b b2 db 84 25 98 f3 ae 61 36 3a 7d 96 08 a4 49 关键材料offset: 8 AF 条纹: 4000 钥匙槽1: 已禁用 钥匙槽2: 已禁用 钥匙槽3: 已禁用 钥匙槽4: 已禁用 钥匙槽5: 已禁用 钥匙槽6: 已禁用 钥匙槽7: 已禁用 我们的插槽现已恢复。我们所要做的就是重新启动并提供正常的LUKS 密码,系统就会恢复到原始状态。
创建帐户或登录后发表意见