使用 TPM 和 YaST2 进行全盘加密的快速入门
2024年9月3日 | Thorsten Kukuk | 无许可
简介
这是在 openSUSE MicroOS 上使用 TPM 或 FIDO2 和 YaST2 进行全盘加密的快速入门指南。它侧重于安装 openSUSE MicroOS 和 YaST2 的几个步骤,并使用由 TPM2 芯片和 可测量启动 或 FIDO2 密钥保护的全盘加密。
硬件要求
- UEFI 固件
- 支持 hmac-secret 扩展的 TPM2 芯片或 FIDO2 密钥
- 2GB 内存
安装 openSUSE MicroOS
启动安装介质
为了避免使用 YaST2 专家分区器,将使用 YaST2 的默认 LUKS 密钥派生函数,并创建三个未使用的子卷(/boot/grub2/i386-pc、/boot/grub2/x86_64-efi、/boot/writeable)。如果您熟悉 YaST2 专家分区器,可以在安装期间删除这三个 btrfs 子卷,并将 LUKS 密钥派生函数更改为 argon2id。
- 按照流程直到“安装设置”
- 安装设置
- 分区
- 选择“引导设置”并“启用磁盘加密”,保留其他默认设置
- 启动
- 将启动加载程序类型从“GRUB2 for EFI”更改为“Systemd Boot”,忽略“Systemd-boot 支持仍在开发中”并继续
- 分区
- 完成安装
调整分区和更改启动加载程序的顺序很重要。
完成 FDE 设置
启动新系统
- 在启动时输入密码以解锁磁盘
- 登录
- 注册系统
- 使用 TPM2 芯片:
sdbootutil enroll --method tpm2 - 使用 FIDO2 密钥:
sdbootutil enroll --method fido2
- 使用 TPM2 芯片:
- 可选,但推荐
- 升级您的 LUKS 密钥派生函数(对
/etc/crypttab中列出的每个加密设备执行此操作)# cryptsetup luksConvertKey /dev/vdaX --pbkdf argon2id # cryptsetup luksConvertKey /dev/vdaY --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
虚拟机
如果您的机器是虚拟机,建议从 /etc/sysconfig/fde-tools 中的 FDE_SEAL_PCR_LIST 变量中删除“0”。 超visor 的更新可能会更改 PCR0。 由于这种更新在虚拟机内部不可见,因此无法更新 PCR 值。 因此,下次启动时无法自动解密磁盘,需要输入恢复密钥并手动重新注册。
下一步
接下来的步骤将是
- 支持 grub2-BLS(遵循 启动加载程序规范 的 grub2)
- 为安装程序(YaST2 和 Agama)添加支持
- 如果存在 TPM2 芯片,则将其设为默认值
欢迎任何帮助!
进一步的文档
类别: 博客
标签