如何确保在 TPM 中创建密钥



我需要

  • 在客户端计算机上运行.exe,这将在 TPM 中创建密钥对。
  • 然后,我将使用 TPM 生成的密钥对的公钥部分创建 CSR。

我关心的是我如何确保密钥是在 TPM 中创建的,而不是由欺骗的 TPM 创建的。这将使私钥能够被迁移和复制。

我听说这就是AIK的用途,但我不明白这如何防止TPM被欺骗?

我能想到的一个解决方案是:我转到客户端,使用受信任的操作系统从USB启动,然后获取EKpub。

证明密钥源自 TPM 的过程称为:

  • 对于 TPM 2.0:凭据激活,使用TPM2_ActivateCredential强制实施
  • 对于 TPM 1.2:标识激活,使用TPM_ActivateIdentity强制实施

此技术可以完成许多操作,但其中之一是证明向 TPM 发出请求后生成的密钥实际上源自受信任的 TPM,并且未被欺骗。对于 TPM 1.2,由于这就是问题所在,因此身份激活是一个 8 步过程,如下所示(以下是 TCG AIK 证书注册的摘录):

  • 步骤 1:平台要求 TPM 创建 AIK 密钥对。

    • (a) 平台(或平台上的应用软件)向 TSS 发出CollateIdentityRequest命令。反过来,TSS 向 TPM 发出MakeIdentity命令。这会导致 TPM 生成新的 AIK 公钥对。
    • (b) 在MakeIdentity职能范围内,TPM创建包含以下项目的IDENTITY_CONTENTS结构:(i) 结构版本,(ii) TPM 命令序号,(iii)PrivCADigest标签和 (iv)AIK_pub_key.
    • (c) TPM使用AIK_priv_key对结构IDENTITY_CONTENTS签名,生成的签名部分被引用 作为identityBinding.
    • (d) TPM 输出两 (2) 项作为MakeIdentity命令的结果:AIK_pub_keyidentityBinding
  • 第 2 步:TSS 生成有关 AIK 的证明结构

    • (a) 继上一步之后,TSS创建了IDENTITY_PROOF结构。此结构包括以下内容 项目:(i) 步骤1(d)中的identityBinding结构。(注:identityBinding结构是仅在IDENTITY_CONTENTS结构)。注意:必须注意的是,identityBinding结构不是 AIK 的加密证明 TPM 驻留密钥,并且 AIK 已使用 EK 进行认证。 它仅表明存在某些密钥对。(二) TPM 规范 版本(三)SubjectPublicKeyInfo(即AIK_pub_key)(四)IdentityLabel(v) EK证书 (vi) 平台证书
    • (b) 然后,TSS 生成对称密钥K1(来自 TPM 的本地随机数),IDENTITY_PROOF并使用 这个对称键K1.
    • (c) 然后,TSS 使用 ACA 的公钥对密钥K1进行加密。使用证明 CA 的公钥进行此加密是 旨在将K1披露仅限于 ACA。的结果 此步骤包括两个项目:加密IDENTITY_PROOF结构和 加密的对称密钥K1.加密IDENTITY_PROOF和 加密K1捆绑到一个IDENTITY_REQ结构中, 包括所用对称和非对称算法的标识符 加密结构以及加密结构的大小。
  • 第 3 步:平台向 ACA 发送 AIK 证书请求。平台(或平台上的应用软件)采用IDENTITY_REQ上一步生成的,对其进行加密,然后 将其发送到 ACA。
  • 第 4 步:ACA 验证证书请求。收到证书请求后,ACA 必须执行多项验证。
    • (a) 要访问 AIK 证书请求结构,ACA 必须首先使用其 ACA 私钥解密密钥K1
    • (b) 然后,ACA 使用K1解密IDENTITY_PROOF结构。
    • (c) 然后,ACA 必须重新创建IDENTITY_CONTENTS结构并验证签名(由收到的签名表示)identityBinding) 是正确的。ACA 可以执行验证 因为它现在具有上面步骤 2 中列出的项目并且可以组装 与提供给 TPM 的相同PrivCADigestLabel。作为 验证,ACA预计会验证收到的 证书(即。EK和平台证书)。预计 ACA 将使用标准的 X.509 证书验证技术, 例如 CRL 检查 [14] 和/或查询相应的 OCSP EK证书颁发者的响应者[15](例如TPM 制造商网站)。
  • 第 5 步:ACA 颁发新的 AIK 证书。然后,ACA 使用(作为公钥)收到的 AIK 公钥创建新的 AIK 证书 在上一步中键。ACA 发布(签署)新的 AIK 使用自己的 AIK 签名密钥的证书。
  • 第 6 步:ACA 加密新的 AIK 证书。在此阶段,ACA 必须以表格形式准备新颁发的 AIK 证书 可由 TPM 识别。作为TPM_ActivateIdentity命令的一部分 ([5] 的第 15.2 节),TPM 期望在TPM_EK_BLOB或 (旧规范版本)ASYM_CA_CONTENTS结构。美国航空工业协会 执行以下任务:
    • (a) ACA 生成随机对称加密密钥K2。此随机K2对于每个 AIK 证书请求都是唯一的。
    • (b) ACA 使用密钥K2加密新的 AIK 证书。
    • (c) 然后,ACA 创建一个TPM_EK_BLOBASYM_CA_CONTENTS(取决于 TPM 版本)结构,该结构 包含以下内容:(i) AIK 公钥的哈希(即 在原始请求中找到的 AIK 公钥)。(二) 对称性 关键K2.(iii) 可选的聚合酶链反应信息——仅供TPM_EK_BLOB。这 TPM 检查以确保 TPM PCR 和位置位于 ACA 预期的正确状态以解锁K2
    • (d) ACASYM_CA_CONTENTSTPM_EK_BLOBA 使用 EK 公钥(如 EK 证书中的 EK 证书 原始请求)。最后一步的目的是确保 只有相同的请求 TPM 才能成为唯一可以解密的实体 新颁发的 AIK 证书,因为只有该 TPM 拥有 EK 私钥(即 TPM 驻留密钥)。
  • 步骤 7:ACA 将新的 AIK 证书交付给平台上的 TPM。然后,ACA 提供加密结果(加密的 AIK 证书 + Blob 或 ASYM 结构)给请求者 平台/TPM。
  • 步骤 8:TPM 解密新的 AIK 证书。从 ACA 收到(加密的)AIK 证书后,平台 必须输入结构(blob 或 ASYM 结构)(到 TPM 并使用 TSSTspi_TPM_ActivateIdentity命令激活它。 此命令解密 ACA 中K2的(加密的)对称密钥 在之后使用 EK 私钥(仅驻留在 TPM 中) 确保具有匹配的发布密钥的 AIK 驻留在 TPM 中。然后它 使用对称密钥K2解密 AIK 证书。

这里的关键部分是倒数第二句话:

此命令从 ACA 解密(加密的)对称密钥 K2 在之后使用 EK 私钥(仅驻留在 TPM 中)确保具有匹配的发布密钥的 AIK 驻留在 TPM 中

规范强制规定,除非在 TPM 中找到请求激活的私钥,否则 EK 不会解密TPM_EK_BLOB对象。由于对象由 TSS 加密,未使用 TPM 机密,并且你已在制造商的 CA 证书链上验证了 EK 公钥,因此可以确保请求标识激活的密钥源自受信任实体制造的 TPM。

相关内容

  • 没有找到相关文章

最新更新