使用 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
  • 可选,但推荐
    • 升级您的 LUKS 密钥派生函数(对 /etc/crypttab 中列出的每个加密设备执行此操作)
            # cryptsetup luksConvertKey /dev/vdaX --pbkdf argon2id
            # cryptsetup luksConvertKey /dev/vdaY --pbkdf argon2id
      

调整内核启动参数

内核命令行选项的配置文件是 /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 芯片,则将其设为默认值

欢迎任何帮助!

进一步的文档

类别: 博客

标签

分享这篇文章