当前位置: 首页 > 工具软件 > Integrity > 使用案例 >

Integrity Collection (PCR)

万高畅
2023-12-01

完整性收集 (PCR)

在 TPM 1.2 中,使用 SHA-1 对事件进行哈希处理,然后使用 TPM_Extend() 将 20 字节摘要扩展为 PCR。 此规范允许在给定索引处使用多个 PCR,每个使用不同的哈希算法。 不需要外部软件生成事件的多个散列,每个散列都扩展到不同的 PCR,事件数据可以发送到 TPM 进行散列。 这确保生成的摘要将正确反映为 PCR 选择的算法,即使调用软件无法实现哈希算法也是如此。 注 1 继续支持使用 TPM2_PCR_Extend() 对事件进行软件散列。 为了支持记录大于 TPM 输入缓冲区的事件,调用者可以使用第 17 节中描述的命令序列。更改 PCR 需要授权。 授权可以是授权值或授权策略。 特定于平台的规范确定哪些 PCR 可以由策略控制。 所有其他 PCR 均受授权控制。 如果 PCR 可能与策略相关联,则该策略的算法 ID 决定是否应用该策略。 如果算法 ID 不是 TPM_ALG_NULL,则与 PCR 关联的策略摘要必须匹配策略会话中的 policySession→policyDigest。 如果算法 ID 为 TPM_ALG_NULL,则不存在任何策略并且授权需要 EmptyAuth。 如果特定于平台的规范指示 PCR 被分组,则组中的所有 PCR 使用相同的授权策略或授权值。 pcrUpdateCounter 计数器将在任何修改(扩展或重置)PCR 的命令成功完成时递增,除非特定于平台的规范明确排除 PCR 被计数。

注 2 如果一条命令导致多个 bank 中的 PCR 发生变化,则 PCR 更新计数器必须为每个 bank 递增一次。 扩展 PCR 的命令是:TPM2_PCR_Extend、TPM2_PCR_Event 和 TPM2_EventSequenceComplete。 如果一个命令在多个 bank 中重置 PCR,则 PCR 更新计数器必须仅递增一次。 重置 PCR 的命令是:TPM2_PCR_Reset 和 TPM2_Startup。

特定于平台的规范可以指定一组在 TCB 控制下的 PCR。 未经适当授权,不得修改这些 PCR。 这些 PCR 的更新不应导致 PCR 更新计数器递增。

如果没有为银行指定摘要值,则不会修改该银行中的 PCR。 注 1 这允许对所有事件记录命令的摘要列表进行一致的操作。 如果存在摘要并且未实施该库中的 PCR,则不使用摘要值。 注 2 如果调用者包含未实现算法的摘要,则 TPM 将导致调用失败,因为摘要的解组将失败。 列表中的每个条目都是一个 TPMT_HA,它是一种散列算法,后跟摘要。 如果该算法未实现,则 hashAlg 的解组将失败并且 TPM 将返回 TPM_RC_HASH。 如果 TPM 解组列表条目的 hashAlg 并且解组值不是在 TPM 上实现的哈希算法,则 TPM 应返回 TPM_RC_HASH。 pcrHandle 参数允许引用 TPM_RH_NULL。 如果是,则处理输入参数但 TPM 不采取任何操作。 这允许调用者探测已实现的哈希算法作为 TPM2_GetCapability 的替代方案

TPM2_PCR_Event

该命令用于引起对指示的 PCR 的更新。 eventData 中的数据使用与已分配指定 PCR 的每个银行关联的哈希算法进行哈希处理。 对数据进行哈希处理后,将返回摘要列表。 如果 pcrHandle 引用已实现的 PCR 而不是 TPM_RH_NULL,则摘要列表将按照 TPM2_PCR_Extend() 中的方式进行处理。 TPM 应支持从零到 1,024 的 Event.size(Event.size 是一个八位字节数)。 Event.size 为零表示没有数据,但指示的操作仍会发生,

命令成功完成后,摘要将包含已标记的 eventData 摘要列表
计算以准备将数据扩展到 PCR。 根据 TPM 的选择,列表可能
包含每个银行的摘要,或者它可能只包含 pcrHandle 存在的每个银行的摘要。
如果 pcrHandle 是 TPM_RH_NULL,TPM 可能会返回一个空列表或每个银行的摘要。

 类似资料: