使用 TPM 和 YaST2 进行全盘加密的快速入门
2024年9月20日 | Thorsten Kukuk | CC-BY-SA-3.0
这是在openSUSE Tumbleweed上使用TPM或FIDO2和YaST2进行全盘加密的快速入门指南。它侧重于安装openSUSE Tumbleweed和使用TPM2芯片和测量启动或FIDO2密钥保护的全盘加密的几个步骤。
硬件要求
- UEFI固件
- 支持hmac-secret扩展的TPM2芯片或FIDO2密钥
- 2GB内存
安装openSUSE MicroOS
有一个专门的openSUSE MicroOS快速入门
安装openSUSE Tumbleweed
启动安装介质
- 按照流程直到“建议分区”
- 分区:选择“引导设置”并“启用磁盘加密”,保持其他默认设置
- 继续安装直到“安装设置”
- 启动
- 将引导加载器类型从“GRUB2 for EFI”更改为“Systemd Boot”,忽略“Systemd-boot支持仍在开发中”并继续
- 软件
- 安装额外的tpm2.0-tools、tpm2-0-tss和libtss2-tcti-device0
- 启动
- 完成安装
完成FDE设置
启动新系统
- 在启动时输入密码以解锁磁盘
- 登录
- 注册系统
- 使用TPM2芯片:
sdbootutil enroll --method tpm2 - 使用FIDO2密钥:
sdbootutil enroll --method fido2
- 使用TPM2芯片:
- 记下恢复PIN。如果您在使用上述命令时收到
keyctl_set_timeout permission denied错误,请尝试在root用户shell内执行它们(例如sudo bash),而不是使用sudo sdbootutil enroll ..。 - 可选,但推荐
- 升级您的LUKS密钥派生函数(对
/etc/crypttab中列出的每个加密设备执行此操作)# cryptsetup luksConvertKey /dev/vdaX --pbkdf argon2id # cryptsetup luksConvertKey /dev/vdaY --pbkdf argon2id如果
/etc/crypttab指示使用UUID=..而不是/dev/..的设备,则使用以下语法# cryptsetup luksConvertKey UUID=.. --pbkdf argon2id
- 升级您的LUKS密钥派生函数(对
调整内核启动参数
内核命令行选项的配置文件是/etc/kernel/cmdline。
编辑此文件后,调用sdbootutil update-all-entries以更新引导加载器配置。如果该选项尚不存在或无法工作,则解决方法是:sdbootutil remove-all-kernels && sdbootutil add-all-kernels。
重新注册
如果预测系统失败,则必须为新的测量结果创建一个新的策略,以替换存储在TPM2中的策略。
如果您有恢复PIN
# sdbootutil --ask-pin update-predictions
如果您没有恢复PIN,可以使用以下步骤设置一个
# sdbootutil unenroll --method=tpm2
# PIN=<new recovery PIN> sdbootutil enroll --method=tpm2
虚拟机
如果您的机器是VM,建议从/etc/sysconfig/fde-tools中的FDE_SEAL_PCR_LIST变量中删除“0”。 超visor的更新可能会更改PCR0。 由于这种更新在VM内部不可见,因此无法更新PCR值。 因此,在下次启动时无法自动解密磁盘,需要输入恢复密钥并手动重新注册。
下一步
接下来的步骤将是
- 支持grub2-BLS(遵循引导加载器规范的grub2)
- 为安装程序(YaST2和Agama)添加支持
- 如果存在TPM2芯片,则使其成为默认设置
欢迎任何帮助!
更多文档
(图片使用 DALL-E 制作)