创建主键

tpm2_createprimary -Q -C o -c ~/tpm/primary.context

创建当前 TPM 的签名 (可选)

pcr_bank 可选 sha1 sha256 pcr_id 功能如下表,一般来说 “0,1,3,7” 即可

PCRUSENOTES
PCR0核心系统固件可执行代码(又名固件)如果您升级 UEFI,可能会发生变化
PCR1核心系统固件数据(又名 UEFI 设置)
PCR2扩展或可插入的可执行代码
PCR3扩展或可插拔固件数据在 Boot Device Select UEFI 引导阶段设置
PCR4引导管理器代码和引导尝试测量引导管理器和固件尝试从中引导的设备
PCR5引导管理器配置和数据可以测量引导加载程序的配置;包括 GPT 分区表
PCR6从 S4 和 S5 电源状态事件恢复
PCR7安全启动状态包含 PK/KEK/db 的全部内容,以及用于验证每个启动应用程序的特定证书
PCR8内核命令行的哈希由grub和systemd-boot支持
PCR9initrd 的哈希预定 linux v5.17
PCR10保留供将来使用
PCR11BitLocker 访问控制
PCR12数据事件和高波动事件
PCR13引导模块详细信息
PCR14引导权限
PCR15-23保留供将来使用
tpm2_pcrread -Q "sha256":"0,1,2,3,7" -o "$TMP"/pcr.digest

使用当前 TPM 签名创建 TPM 政策

哈希算法可选 sha1 sha256,如果没有生成 TPM 签名可以忽略 -f 参数.

tpm2_createpolicy -Q -g "$hash" --policy-pcr -l "sha256":"0,1,3,7" -f ~/tpm/pcr.digest -L ~/tpm/pcr.policy

将密钥存入 TPM

tpm2_create -C primary.ctx -L ~/tpm/pcr.policy -c ~/tpm/seal.ctx -i ~/tpm/key

永久化 TPM

tpm2_evictcontrol -C o -c seal.ctx 0x81010002