使用 TPM 和 YaST2 进行全盘加密的快速入门

2024年9月20日 | Thorsten Kukuk | CC-BY-SA-3.0

Quickstart in Full Disk Encryption with TPM and YaST2

这是在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
  • 记下恢复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
      

调整内核启动参数

内核命令行选项的配置文件是/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 制作)

分享此帖子