为何基于IMA日志复现TPM PCR10 SHA1成功但SHA256失败?
问题原因分析及解决方向
1. IMA默认仅生成SHA1测量哈希
你当前的内核参数未指定ima_hash,IMA默认只会生成SHA1格式的测量哈希并写入/sys/kernel/security/ima/ascii_runtime_measurements。TPM的PCR10 SHA256值是基于IMA事件的SHA256测量值扩展得到的,但你的日志里没有对应的SHA256哈希数据,用SHA1的日志内容去计算SHA256的PCR值自然无法匹配。
2. 需显式配置IMA生成SHA256测量值
要让IMA同时生成SHA256格式的测量值,需修改GRUB内核参数,添加ima_hash=sha256:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="ima_policy=\"tcb|appraise_tcb\" ima_appraise=log ima_hash=sha256"
执行sudo update-grub并重启系统后,ascii_runtime_measurements中会同时包含SHA1和SHA256的测量哈希(部分内核版本会单独生成ascii_runtime_measurements_sha256文件),此时用SHA256的测量数据按照TPM PCR扩展逻辑计算,就能匹配tpm2_pcrread返回的SHA256:10值。
3. 单条记录测试的关键细节
单条记录验证时,要确保你使用的是IMA直接生成的SHA256测量值(而非对SHA1值二次哈希),同时严格遵循TPM的PCR扩展规则:新PCR值 = 哈希算法(旧PCR值 拼接 完整测量事件数据)——这里的测量数据不仅包含哈希值,还包括事件类型、长度等元数据,不能只取哈希部分单独计算。
内容的提问来源于stack exchange,提问作者Jovan Djukic
相关产品推荐
相关产品推荐

