在 Ubuntu 上为 FDE 添加第二个密码(带有加密 LVM 的新 luks 密钥槽)

在 Ubuntu 上为 FDE 添加第二个密码(带有加密 LVM 的新 luks 密钥槽)

当我选择在安装时使用 FDE 安装 Ubuntu 时,如何添加第二个密码来在启动时解密我的笔记本电脑。

在撰写本文时,只有一种方法可以选择使用 Ubuntu 安装 .iso GUI 安装带有全盘加密 (FDE) 的 Ubuntu,那就是选择创建加密的 LVM。

我知道向 LUKS 卷添加额外键槽的命令是:

cryptsetup luksAddKey /dev/<device>

...但 Ubuntu 使用的加密 LVM 设置有点复杂。它显示我有三个解密的 luks 设备:

user@host:$ ls /dev/mapper
control  nvme0n1p3_crypt  vgxubuntu-root  vgxubuntu-swap_1
user@host:$

我应该输入什么命令来添加额外的 luks 密钥槽,以便我可以在启动时使用两个密码中的任一个解密我的笔记本电脑?

答案1

解决方案

以 结尾的_crypt是您应该针对其执行的 luks 设备cryptsetup luksAddKey(减去_crypt部分)。对于您的情况,请执行:

# inspect the drive, note that the 0th key slot is the only key slot in use
cryptsetup luksDump /dev/nvme0n1p3

# dump the existing header and make a safe backup on another encrypted system
cryptsetup --header-backup-file header_backup luksHeaderBackup /dev/nvme0n1p3

# add a second passphrase to the 1st keyslot
cryptsetup --key-slot 1 luksAddKey /dev/nvme0n1p3

使用上述命令成功将第二个密码添加到第一个密钥槽后,就可以使用以下命令启动机器任何一个第一个密码(在密钥槽 #0 中)或者第二个密码(在密钥槽#1中)。

解释

默认情况下,Ubuntu 安装程序通过创建三个分区来设置 FDE:

  1. 未加密的 fat32 引导加载程序
  2. 未加密的 ext4 启动卷
  3. 大型加密 luks 卷

例如,你可以lsblk针对你的磁盘看到这一点:

root@host:~# lsblk /dev/nvme0n1
NAME                   MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
nvme0n1                259:0    0   477G  0 disk 
├─nvme0n1p1            259:1    0   512M  0 part  /boot/efi
├─nvme0n1p2            259:2    0   732M  0 part  /boot
└─nvme0n1p3            259:3    0 475,7G  0 part 
  └─nvme0n1p3_crypt    253:0    0 475,7G  0 crypt
    ├─vgxubuntu-root   253:1    0 474,8G  0 lvm   /
    └─vgxubuntu-swap_1 253:2    0   980M  0 lvm   [SWAP]
root@host:~#

从上面的输出中可以看到,nvme0n1磁盘有三个分区。在最后一个分区里面nvme0n1p3,有一个巨大的解密卷nvme0n1p3_crypt

此外,里面nvme0n1p3_crypt有两个lvm卷组vgxubuntu-root& vgxubuntu-swap_1

您要对其执行命令的设备luksAddKey是树中最低分支级别的磁盘上实际的 luks 加密分区lsblk。在本例中,即/dev/nvme0n1p3

相关内容