这与以下帖子有些相关: 对 sha1sum 的两个哈希输出执行 OR
我有一组 TPM 测量样本,例如:
10 1ca03ef9cca98b0a04e5b01dabe1ff825ff0280a ima 0ea26e75253dc2fda7e4210980537d035e2fb9f8 boot_aggregate
10 7f36b991f8ae94141753bcb2cf78936476d82f1d ima d0eee5a3d35f0a6912b5c6e51d00a360e859a668 /init
10 8bc0209c604fd4d3b54b6089eac786a4e0cb1fbf ima cc57839b8e5c4c58612daaf6fff48abd4bac1bd7 /init
10 d30b96ced261df085c800968fe34abe5fa0e3f4d ima 1712b5017baec2d24c8165dfc1b98168cdf6aa25 ld-linux-x86-64.so.2
根据 TPM 规范,在上面的帖子中也提到,PCR 扩展操作是:PCR := SHA1(PCR || data),即“将 PCR 的旧值与数据连接,对连接的字符串进行哈希处理并存储PCR 中的哈希”。此外,我发现的规范多篇论文和演示文稿提到数据是要加载的软件的哈希值。
但是,当我执行类似的操作时echo H(PCR)||H(data) | sha1sum
,我没有获得正确的结果值。即,当计算(使用上面的哈希):echo 1ca03ef9cca98b0a04e5b01dabe1ff825ff0280a0ea26e75253dc2fda7e4210980537d035e2fb9f8 | sha1sum
时,结果值是 NOT 7f36b991f8ae94141753bcb2cf78936476d82f1d
。
我对 TPM_Extend 操作的理解是否正确?如果是这样,为什么生成的散列与样本测量文件中的散列不同?
谢谢!/n