我需要
我关心的是如何确保在TPM内部创建密钥,而不是通过欺骗的TPM创建密钥。这样可以迁移和复制私钥。
我听说这是AIK的目的,但我不知道这如何防止TPM被欺骗?
我能想到的一种解决方案是:我进入客户端,使用受信任的操作系统从USB启动,然后获得EKpub。
答案 0 :(得分:0)
证明密钥源自TPM的过程称为:
TPM2_ActivateCredential
强制执行TPM_ActivateIdentity
强制实施此技术可以完成很多事情,但是其中之一证明,向TPM发出请求后生成的密钥实际上是来自受信任的TPM,并且未被欺骗。对于TPM 1.2,因为这就是问题所在,所以身份激活是一个8步的过程,其过程如下(以下内容摘自TCG的AIK Certificate Enrollment):
步骤1:平台要求TPM创建AIK密钥对。
- (a)平台(或平台上的应用软件)向TSS发出
CollateIdentityRequest
命令。反过来TSS 向TPM发出MakeIdentity
命令。这导致TPM 生成新的AIK公钥对。- (b)TPM在
MakeIdentity
函数中创建包含以下各项的IDENTITY_CONTENTS
结构:(i) 结构版本,(ii)TPM命令顺序,(iii)PrivCADigest
标签和(iv)AIK_pub_key
。- (c)TPM使用
IDENTITY_CONTENTS
签名AIK_priv_key
结构,并引用生成的签名部分 作为identityBinding
。- (d)TPM通过
MakeIdentity
命令输出两(2)个项目:AIK_pub_key
和identityBinding
。步骤2:TSS生成有关AIK的证明结构
- (a)在上一步之后,TSS创建
IDENTITY_PROOF
结构。该结构包括以下内容 项目:(i)步骤1(d)中的identityBinding
结构。 (注意:identityBinding
结构是仅在IDENTITY_CONTENTS
结构)。注意:必须注意identityBinding
结构不是AIK是的加密证明 TPM驻留密钥,并且AIK已通过EK认证。 它仅表明存在一些密钥对。 (ii)TPM规范 版本(iii)SubjectPublicKeyInfo
(即AIK_pub_key
)(iv)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步:平台将AIK证书请求发送到ACA。平台(或平台上的应用软件)采用 上一步产生的
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证书颁发者(例如TPM)的响应者[15] 制造商网站)。- 第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
结构。 ACA 执行以下任务:
- (a)ACA生成随机对称加密密钥
K2
。对于每个AIK证书请求,此随机K2
是唯一的。- (b)ACA使用密钥
K2
对新的AIK证书进行加密。- (c)然后,ACA创建
TPM_EK_BLOB
或ASYM_CA_CONTENTS
(取决于TPM版本)结构,该结构 包含以下内容:(i)AIK公钥的哈希(即 在原始请求中找到的AIK公钥)。 (ii)对称 键K2
。 (iii)可选的PCR信息-仅适用于TPM_EK_BLOB
。的 TPM检查以确保TPM PCR的位置和位置 ACA预期的正确状态可以解锁K2
。- (d)ACA使用EK公钥对
TPM_EK_BLOB
或ASYM_CA_CONTENTS
结构进行加密(如EK证书中的 原始请求)。最后一步的目的是确保 只有相同的请求TPM将是可以解密的唯一实体 新发行的AIK证书,因为只有TPM拥有EK 私钥(这是TPM驻留的密钥)。- 第7步:ACA将新的AIK证书传送到平台上的TPM。然后,ACA传递加密结果(加密的AIK 证书+请求者的blob或ASYM结构) 平台/ TPM。
- 第8步:TPM解密新的AIK证书。从ACA接收到(加密的)AIK证书后,平台 必须将结构(blob或ASYM结构)输入( TPM并使用TSS
Tspi_TPM_ActivateIdentity
命令激活它。 此命令从ACA解密(加密的)对称密钥K2
之后使用EK-private-key(仅驻留在TPM中) 确保具有匹配发布密钥的AIK驻留在TPM中。然后 使用对称密钥K2
来解密AIK证书。
这里的关键部分是倒数第二句话:
此命令从ACA解密(加密的)对称密钥K2 之后使用EK-private-key(仅驻留在TPM中) 确保具有匹配发布密钥的AIK驻留在TPM中。
由规范强制执行,除非在TPM中找到要求激活的私钥,否则EK将不会解密TPM_EK_BLOB
对象。并且由于该对象是在不使用TPM秘密的情况下由TSS加密的,并且您已经在制造商的CA证书链中验证了EK公钥,因此可以确保请求身份激活的密钥起源于由以下公司制造的TPM中受信任的实体。