如何删除LUKS加密?

Que*_*low 16 linux encryption luks

我尝试使用以下命令在我的主目录中删除 LUKS 加密:

cryptsetup luksRemoveKey /dev/mapper/luks-3fd5-235-26-2625-2456f-4353fgdgd
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误说:

设备 /dev/mapper/luks-3fd5-235-26-2625-2456f-4353fgdgd 不是有效的 LUKS 设备。

很困惑,我尝试了以下方法:

cryptsetup status luks-3fd5-235-26-2625-2456f-4353fgdgd
Run Code Online (Sandbox Code Playgroud)

它说:

/dev/mapper/luks-3fd5-235-26-2625-2456f-4353fgdgd is active and is in use.
type: LUKS1
cipher: ...
Run Code Online (Sandbox Code Playgroud)

加密设备似乎处于活动状态,但无效。这里可能有什么问题?

Mat*_*nco 18

  • 备份
  • 重新格式化
  • 恢复

cryptsetup luksRemoveKey如果您有多个加密密钥,则只会删除加密密钥。加密仍然存在。

Fedora Installation_Guide Section C.5.3 解释了如何luksRemoveKey工作。

在保留内容的同时删除加密是“不可能的”只是一个有根据的猜测。我基于两件事:

  • 因为 LUKS 容器有一个文件系统或 LVM 或其他任何东西,所以仅删除加密层就需要了解存储在其上的数据的含义,而这根本不可用。此外,一个要求是用解密的副本覆盖 LUKS 卷的一部分,不会破坏其余的 LUKS 内容,我不确定这是否可以做到。
  • 实施它可以解决一个与 LUKS 的目的相去甚远的问题,而且我发现很少有人会花时间去做这件事,而不是做一些更“有意义”的事情。


小智 13

首先,当从 LUKS 分区中删除密码短语时,您需要指定它所在的磁盘分区,例如:

cryptsetup luksRemoveKey /dev/sda2
Run Code Online (Sandbox Code Playgroud)

当您需要 LUKS 加密设备的状态时,您需要像以前一样引用 LUKS 名称。

但是 luksRemoveKey 只删除密码短语之一(而不是最后一个)。如果要永久解密,则必须使用 cryptsetup-reencrypt:

cryptsetup-reencrypt --decrypt /dev/sda2
Run Code Online (Sandbox Code Playgroud)


Che*_*She 7

删除键槽就像忘记密码一样,它与移动其中的文件系统替换 LUKS 设备无关。

您可以无损地从设备中删除 LUKS 加密,而无需备份、重新格式化和恢复。. cryptsetup自 2012 年发布的 1.5.0 版以来一直支持此功能。

成功解密 LUKS 设备后,内部文件系统可供操作系统使用,您可以直接挂载它。

警告:这很危险,请先备份所有数据。

对于 LUKS1:

  1. 从 U 盘启动
  2. 使用 `cryptsetup-reencrypt --decrypt <device_path>

对于 LUKS2:

  1. 从 U 盘启动
  2. 将所有键槽转换为使用 LUKS1 兼容参数 cryptsetup luksChangeKey --pbkdf pbkdf2 <device_path>
  3. 使用以下命令将 LUKS2 设备转换为 LUKS1 设备 cryptsetup convert --type luks1 <device_path>
  4. 使用 `cryptsetup-reencrypt --decrypt <device_path> 执行解密

我已经测试了这两个并且它们有效。

当前版本的 cryptsetup 声称支持直接解密 LUKS2 设备。这个命令是cryptsetup --reencrypt --decrypt --header HEADER_FILE <device_path>. 该--header参数是必需的,因为这些命令假定您的设备使用分离的标头。如果你这样做了,它就可以工作,甚至可以在线进行解密。如果您不使用分离的标头(很常见),并且您尝试提供标头的转储,或将块设备本身作为--header值传递,cryptsetup则会安静地进行,当它完成时,您最终会得到没有键槽的 LUKS2 设备,您的数据将消失。这是从 2.3.3 (2020) 版本开始的,在未来的版本中可能会发生变化。

我的建议是使用更安全的 LUKS2->LUKS1->Decrypt 路径,我可以确认它可以完成这项工作。

  • 这太棒了。谢谢!我想补充一点。在 CentOS 系统(RH 可能类似)上执行此操作后,您必须采取更多步骤以允许它启动(假设它是一个启动分区)。从安装介质引导,并拯救系统。chroot 在系统 /mnt/sysroot 中。删除 /etc/crypttab.conf 编辑 /etc/default/grub 并删除 luks 部分。重新生成 grub 配置: grub2-mkconfig -o /etc/efi/EFI/centos/grub.cfg 重新安装 grub。yum 重新安装 grub2-efi(这部分有点棘手,没有上网,但恢复盘上有一个包 repo) (2认同)