移除系统加密
使用 dm-crypt 和 LUKS 移除系统加密。
原位移除 LUKS 加密
概述
虽然不如备份数据并将其恢复到重新格式化的设备上安全,但 cryptsetup 允许用户永久地从设备上原位移除 LUKS 加密。例如,如果您的 LUKS 加密分区内存在 ext4 文件系统,执行原位解密将移除 LUKS 签名,并将 ext4 文件系统直接放在分区上,以便您可以直接挂载它。除非出现问题,否则文件系统中的文件将保持完整。 cryptsetup 文档中使用的术语是“解密”。
请参阅 cryptsetup-reencrypt(8) 手册中 --decrypt
选项。
从 2012 年发布的 cryptsetup
1.5.0 版本开始,就已支持 LUKS1 设备的非破坏性离线解密。LUKS1 解密仅支持离线模式解密。
对于 LUKS2 设备,同时支持离线和在线(即无需卸载)解密。
原位解密 LUKS1 设备
LUKS1 设备的解密是在离线模式下完成的,即它不能被打开和挂载。如果要解密系统盘,请重启进入 USB Live 环境。否则,请使用 unmount
命令,然后使用 cryptsetup close dm-name
命令。
首先,使用 blkid
或 lsblk
识别 device_path。
接下来,以下命令执行解密
# cryptsetup reencrypt --decrypt device_path Enter any existing passphrase: Finished, time 02m05s, 19 GiB written, speed 162,6 MiB/s
它将自动识别 LUKS1 标头版本,并且不会对已打开的设备执行操作。此过程可能需要一段时间,但会提供进度条。如果未发生问题,则可以立即直接挂载设备上的文件系统。
原位解密 LUKS2 设备
可以使用 cryptsetup
命令以离线或在线模式进行解密。自 cryptsetup
2.5.0 版本(2022 年)以来,LUKS2 支持通过将 LUKS2 标头迁移到单独的文件中进行解密。
new_file(LUKS2 标头将迁移到的文件)在解密的初始化阶段不能存在。
# cryptsetup reencrypt --decrypt --header new_file device_path
要恢复中断的 LUKS2 原位解密,只需执行以下命令
# cryptsetup reencrypt --decrypt --resume-only --header migrated_header_file device_path
如果在活动设备上成功完成解密(在线解密),则映射设备将被延迟停用,以便在线性映射不再使用时自动移除。之后,原始的 device_path
可以直接使用,而无需设备映射器映射。
清理系统文件
设备名称和 UUID 可能会因解密而更改,您可能需要更新相关的配置文件。最可能需要更新的文件是 /etc/crypttab
、/etc/fstab
以及,如果最近解密的设备出现在内核命令行中,则还需要更新引导加载程序的配置(例如,/etc/default/grub
)。如果您编辑后者,请记住按照 GRUB 中的描述重新生成 grub 配置。
通过备份-格式化-恢复移除 LUKS
前提条件
- 您希望解密的加密根文件系统。
- 足够的驱动器空间来存储备份。
- Arch Linux(或其他)Live CD/USB。
- 几个小时。
启动进入 Live 环境
下载最新的 Arch ISO 并刻录到 CD 或 USB,重启系统,并从 CD 启动。
激活分区
关于不同设置的说明
此处显示了一个示例设置
NTFS | myvg(lvm) | NTFS | |
其他操作系统 | cryptswap(lv) | cryptroot(lv) | 共享 |
luks | luks | ||
swap | root(xfs) |
灰色分区是一个参考框架,可以忽略。黄色分区将用作存储空间,可以随意更改。绿色分区将被修改。粗体文本必须与您的系统设置相匹配。
在示例系统中:myvg 包含名为 cryptroot 和 cryptswap 的 lvs。它们位于 /dev/myvg/cryptroot
和 /dev/myvg/cryptswap
。启动时,LUKS 与一些 crypttab 条目一起使用,以创建 /dev/mapper/root
和 /dev/mapper/swap
。
作为本指南的一部分,Swap 分区将不会被解密,因为撤销 swap 加密不需要任何复杂的备份或恢复。
示例系统并不代表所有系统。不同的文件系统需要不同的工具来有效地备份和恢复其数据。如果未使用 LVM,则可以忽略 LVM。
一旦分区被定位
加载必要的模块。对于设备映射器/LVM
# modprobe dm-mod
对于 LUKS
# modprobe dm-crypt
扫描物理卷、卷组和逻辑卷
# pvscan; vgscan; lvscan
激活 LVM 卷组
# lvchange -ay myvg/cryptroot
使用 LUKS 打开加密的文件系统,以便可以读取
# cryptsetup luksOpen /dev/myvg/cryptroot root
输入密码。
挂载备份空间
仅当使用 NTFS 存储备份时,才需要安装 ntfs-3g。
下一步对于备份存储非常重要。
# mount -t ntfs-3g -o rw /dev/sdXY /mount/point/
或者使用 netcat 将备份存储在远程系统上。
备份数据
使用 xfs_copy
# xfs_copy -db /dev/mapper/root /mount/point/backup_root.img
-d
标志保留 UUID,-b
确保不会尝试对任何目标文件进行直接 IO。使用 dd
# dd if=/dev/mapper/root of=/mount/point/backup_root.img
取消加密
这是不归路。请确保您已为此步骤做好准备。如果您计划稍后撤销此操作,您将几乎必须从头开始。
# cryptsetup luksClose root # lvm lvremove myvg/cryptroot
恢复数据
我们必须创建一个新的逻辑卷来容纳我们的根文件系统,然后我们恢复我们的文件系统。
# lvm lvcreate -l 100%FREE -n root myvg # xfs_copy -db /mount/point/backup_root.img /dev/myvg/root
第二个驱动器名称现在已更改。
调整配置
您需要启动进入您的系统并编辑 /etc/crypttab
、/etc/mkinitcpio.conf
、/etc/fstab
,以及可能的 /boot/grub/menu.lst
。