17.5. 使用带有分离标头的 LUKS2 在块设备上加密现有数据
您可以加密块设备上的现有数据,而无需为存储 LUKS 标头创建可用空间。标头存储在分离的位置,它也充当额外的安全层。该流程使用 LUKS2 加密格式。
先决条件
- 块设备有一个文件系统。
您的数据已备份。
警告由于硬件、内核或人为故障,您可能会在加密过程中丢失数据。在开始加密数据之前,请确保您有可靠的备份。
流程
卸载设备上的所有文件系统,例如:
# umount /dev/<nvme0n1p1>将
<nvme0n1p1>替换为与您要卸载的分区对应的设备标识符。初始化加密:
# cryptsetup reencrypt --encrypt --init-only --header </home/header> /dev/<nvme0n1p1> <nvme_encrypted> WARNING! ======== Header file does not exist, do you want to create it? Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for </home/header>: Verify passphrase: /dev/mapper/<nvme_encrypted> is now active and ready for online encryption.替换:
-
</home/header>替换为带有分离的 LUKS 头的文件的路径。分离的 LUKS 标头必须可以访问,以便稍后解锁加密设备。 -
<nvme_encrypted>替换为加密后创建的设备映射器的名称。
-
挂载该设备:
# mount /dev/mapper/<nvme_encrypted> /mnt/<nvme_encrypted>向
/etc/crypttab文件添加持久映射的一个条目:# <nvme_encrypted> /dev/disk/by-id/<nvme-partition-id> none header=</home/header>将
<nvme-partition-id>替换为 NVMe 分区的标识符。使用
dracut重新生成 initramfs:# dracut -f --regenerate-all -v向
/etc/fstab文件中添加一个永久挂载条目:查找活跃 LUKS 块设备的文件系统 UUID:
$ blkid -p /dev/mapper/<nvme_encrypted> /dev/mapper/<nvme_encrypted>: UUID="37bc2492-d8fa-4969-9d9b-bb64d3685aa9" BLOCK_SIZE="4096" TYPE="xfs" USAGE="filesystem"在文本编辑器中打开
/etc/fstab,并在此文件中添加一个设备,例如:$ vi /etc/fstab UUID=<file_system_UUID> /home auto rw,user,auto 0将
<file_system_UUID>替换为您的文件系统的 UUID。
恢复在线加密:
# cryptsetup reencrypt --resume-only --header </home/header> /dev/<nvme0n1p1> Enter passphrase for /dev/<nvme0n1p1>: Auto-detected active dm device '<nvme_encrypted>' for data device /dev/<nvme0n1p1>. Finished, time 00m51s, 10 GiB written, speed 198.2 MiB/s
验证
验证使用带有分离标头的 LUKS2 块设备上的现有数据是否已加密:
# cryptsetup luksDump </home/header> LUKS header information Version: 2 Epoch: 88 Metadata area: 16384 [bytes] Keyslots area: 16744448 [bytes] UUID: c4f5d274-f4c0-41e3-ac36-22a917ab0386 Label: (no label) Subsystem: (no subsystem) Flags: (no flags) Data segments: 0: crypt offset: 0 [bytes] length: (whole device) cipher: aes-xts-plain64 sector: 512 [bytes] [...]查看加密的空白块设备的状态:
# cryptsetup status <nvme_encrypted> --header </home/header> /dev/mapper/<nvme_encrypted> is active and is in use. type: LUKS2 cipher: aes-xts-plain64 keysize: 512 bits key location: keyring device: /dev/<nvme0n1p1> sector size: 512 offset: 0 sectors size: 10485760 sectors mode: read/write