Ubuntu 23.10的TPM-backed full-disk encryption功能加密非系统secondary hard disk的可行性及实现方法咨询
嘿,很高兴听到你已经成功用TPM-backed FDE加密了Ubuntu 23.10的系统盘,而且测试验证了跨机器无法挂载的安全性——这正是TPM加密的核心价值之一!
关于用同样的方法加密非系统盘,答案是完全可行的,不过因为系统盘的加密是安装向导集成的自动化流程,非系统盘需要我们手动完成几个关键步骤,下面我给你详细拆解:
前期准备
- 确认你的机器已经启用TPM 2.0(可以进入BIOS/UEFI界面查看,一般在安全相关选项里);
- 备份目标非系统盘上的所有数据,因为加密操作会彻底清空磁盘内容;
- 用
lsblk命令确认目标磁盘的设备路径(比如/dev/sdb,注意不要搞错系统盘的路径!)
具体操作步骤
初始化LUKS2加密卷
在终端执行以下命令,初始化非系统盘为LUKS2格式(TPM绑定需要LUKS2支持):cryptsetup luksFormat --type luks2 /dev/sdX替换
/dev/sdX为你的非系统盘路径,按提示设置一个临时密码(后续可以选择删除,也可以保留作为备用解锁方式)。临时挂载加密卷并创建文件系统
先打开加密卷:cryptsetup open /dev/sdX my_encrypted_disk输入刚才设置的临时密码,系统会创建映射设备
/dev/mapper/my_encrypted_disk。接着创建文件系统(这里以ext4为例,你也可以用btrfs等其他格式):
mkfs.ext4 /dev/mapper/my_encrypted_disk可以临时挂载测试读写:
mkdir -p /mnt/my_secondary_disk mount /dev/mapper/my_encrypted_disk /mnt/my_secondary_disk # 随便创建个文件测试 touch /mnt/my_secondary_disk/test_file测试完成后卸载并关闭加密卷:
umount /mnt/my_secondary_disk cryptsetup close my_encrypted_disk绑定TPM密钥到加密卷
使用systemd-cryptenroll命令将TPM 2.0的密钥添加到LUKS卷中,这样系统启动时就能自动通过TPM解锁:systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=7 /dev/sdX--tpm2-device=auto:让系统自动识别TPM设备;--tpm2-pcrs=7:绑定到安全启动状态(和Ubuntu系统盘TPM加密的默认设置一致,确保只有在相同的安全启动环境下才能解锁,提升安全性);
执行命令时输入之前设置的临时密码即可完成绑定。
配置系统自动挂载
编辑/etc/crypttab文件,添加一行配置让系统启动时自动解锁加密卷:sudo nano /etc/crypttab添加内容:
my_encrypted_disk /dev/sdX none tpm2-device=auto,tpm2-pcrs=7保存退出(Ctrl+O,回车,Ctrl+X)。
然后编辑
/etc/fstab文件,配置自动挂载:sudo nano /etc/fstab添加内容(替换成你的挂载点和文件系统类型):
/dev/mapper/my_encrypted_disk /mnt/my_secondary_disk ext4 defaults 0 2保存退出。
验证效果
重启系统后,检查非系统盘是否自动挂载成功:df -h /mnt/my_secondary_disk同时你可以把这个磁盘拆下来接到另一台Ubuntu机器上,会发现和你的系统盘一样,无法正常挂载——因为密钥存储在原机器的TPM中,其他机器的TPM无法提供解锁所需的密钥。
重要注意事项
- 备份LUKS头文件:一定要执行以下命令备份LUKS卷的头文件,万一TPM损坏或者PCR状态改变(比如修改BIOS安全设置),可以用这个备份恢复:
把备份文件存到安全的地方(比如离线存储设备)。cryptsetup luksHeaderBackup /dev/sdX --header-backup-file /path/to/safe/luks_backup.img - 临时密码的处理:如果你想只保留TPM解锁的方式,可以用以下命令删除临时密码:
输入临时密码即可完成删除;如果想保留作为备用解锁方式,就不用执行这个命令。cryptsetup luksRemoveKey /dev/sdX - PCRs参数调整:如果你不需要绑定安全启动状态,可以修改
--tpm2-pcrs参数(比如改成0,1,2,3绑定BIOS/UEFI状态),但这样安全性会有所降低,建议保持默认的7。
备注:内容来源于stack exchange,提问作者Rex

