TPM 2.0规范系列解读——Part 1体系结构第(三)读:可信平台的基本特征

前言

TPM 2.0第1部分包含对TPM属性、功能和方法的叙述描述。
本篇主要基于TPM 2.0规范Part 1的第9章(Trusted Platforms)的内容,对可信平台的基本特征进行解读。


文章目录

  • 前言
  • 一、介绍
  • 二、认证(Certification)
  • 三、证明(Attestation)和身份验证
    • 1.证明的类型
    • 2.证明密钥(Attestation Keys,AK)
    • 3.证明密钥(AK)的身份认证
      • a.签名密钥用于认证新对象身份
      • b.解密密钥用于认证新对象身份
    • 4.受保护位置(Protected Location)
    • 5.完整性度量和报告
  • 总结

一、介绍

一个可信平台至少提供了前面描述的三个信任根(可信度量根RTM、可信存储根RTS和可信报告根RTR)。 所有这三个根都使用认证(certification)证明(attestation)来提供信息准确性的证据。 可信平台还将为密钥和数据对象提供用于委托的受保护位置。 最后,可信平台可以通过记录平台状态的变化来提供完整性度量,以确保平台的可信性;这可以通过在PCR中记录的条目来完成,以便稍后验证其正确性和未被篡改。 现在将详细描述这些基本TPM概念。

二、认证(Certification)

使用密钥建立信任名义上的方法是使用一个证书,该证书表明创建密钥和保护密钥的过程符合必要的安全标准。 证书可以通过装载了一个嵌入式密钥(即背书密钥)的TPM与一个EK的真实性证书一起提供。 EK及其证书可用于对凭据(证书)或其他TPM密钥进行关联。

三、证明(Attestation)和身份验证

1.证明的类型

可信平台采用层次结构进行证明,如图所示。

在这里插入图片描述
图注:

层次类型 描述 实现方式
1 外部实体对TPM进行认证,以保证TPM是真实的,符合本TPM规范。 背书证书
2 外部实体对平台进行认证,以保证平台包含一个可信度量根(RTM),一个真正的TPM,以及RTM和TPM之间的可信路径。 平台证书
3 一个称为“认证CA”的外部实体对TPM中的非对称密钥对进行认证,以保证密钥受到一个身份不明但真实的TPM的保护,并且具有特定的属性。 认证密钥证书
4 可信平台对非对称密钥对进行验证,以保证密钥对受到一个真实但身份不明的TPM的保护,并具有特定的属性。 使用TPM2_Certify()函数完成(签名方式)
5 可信平台对度量进行验证,以保证平台中存在特定的软件/固件状态。 使用TPM2_Quote()函数完成(签名方式)
6 外部实体对软件/固件度量进行证明,以保证特定的软件/固件。 第三方认证(远程证明)

第3类和第4类的认证需要使用密钥对屏蔽位置的内容进行签名。 认证密钥(AK)是一种特定类型的签名密钥,它对其使用有限制,以防止伪造(具有与真正认证数据相同格式的外部数据的签名)。 限制是AK只能用于对TPM创建的摘要进行签名。 如果已知AK受TPM保护(通过类型3或4的认证),则可能依赖它准确地报告屏蔽位置内容,而不签名外部提供的看似有效且TPM生成但并非如此的数据。

2.证明密钥(Attestation Keys,AK)

当TPM创建一条对内部TPM状态(例如,在TPM2_Quote()中)进行签名的消息时,将使用一个特殊值(TPM_GENERATED_VALUE)作为消息头。 TPM生成的消息总是以这个值开始。

当TPM对外部提供的消息进行摘要时,它检查消息的前几个字节,以确保它们的值与TPM_GENERATED_VALUE不同。 当摘要完成时,TPM生成一个票据,表明消息不是以TPM_GENERATED_VALUE开始的。 当使用AK对摘要进行签名时,调用者提供票据,以便TPM可以确定用于创建摘要的消息不可能是伪造的TPM认证数据。
提示:此处为了防止外部消息冒充TPM发送消息,故加入了“消息头+AK签名”机制,所有非TPM内部消息都应经过TPM认证并生成凭据后才可使用TPM提供的功能(如“摘要运算”)。
例:如果攻击者生成的消息块与TPM生成的消息相同,则该消息块将以TPM_GENERATED_VALUE开始,以表明它是正确的TPM消息。 当TPM执行这个块的摘要时,它注意到第一个八位与TPM_GENERATED_VALUE相同。 它不会生成指示消息可以安全签名的票据,因此AK可能不会用于对该摘要进行签名。 类似地,检查AK所做的认证的实体必须验证签名的消息以TPM_GENERATED_VALUE开头,以便验证消息确实是TPM生成的报价。

3.证明密钥(AK)的身份认证

a.签名密钥用于认证新对象身份

密钥创建者可以要求第三方(如认证证书颁发机构(CA))为其提供证书。 认证CA可以请调用方提供一些证据,证明被认证的密钥是驻留TPM的密钥。

可以使用之前同一TPM上的另一个密钥生成的证书来提供TPM驻留的证据。 背书证书或平台证书可提供此证据。

注:没有要求证书只能来自认证CA。上面描述的方法是在需要隐私时可能使用的方案的一个示例。

如果一个经过认证的密钥可以签名,那么它可以用来证明某个其他对象驻留在同一个TPM上。 这允许将新的AK链接到经过认证的密钥。 CA可以使用来自TPM的证书为新密钥生成传统证书。
提示:签名密钥提供“已被认证密钥的证书+已被认证密钥对新对象的签名”即可认证新的对象。类似信任链传递。

b.解密密钥用于认证新对象身份

如果经过认证的密钥是一个解密密钥,并且可能不签名,那么将使用另一种方法来允许对新密钥或数据对象进行可靠的认证。 对于这种替代认证,将被认证的对象的身份和解密密钥的证书(例如,EK)提供给CA。CA根据该证书确定解密密钥的公钥。 CA然后为要认证的对象生成质询,并使用已认证的密钥对质询进行加密。 对包含认证解密密钥和待认证密钥的TPM进行加密挑战。
提示:解密密钥(不可用于签名的密钥)需要借助CA来完成对新对象的认证。

4.受保护位置(Protected Location)

当一个对象的敏感部分不是保存在TPM上的屏蔽位置时,它是加密的。 当不在TPM上进行加密时,它不能防止被删除,但可以防止其敏感部分的泄露。 论存储在何处,它都位于受保护位置。

长期保护存储的对象需要使用时应加载到TPM模块。 创建对象的应用程序管理对象从长期存储到TPM的移动。

由于TPM的内存有限,它可能无法同时保存所有应用程序所需的所有对象。 TPM支持通过TPM资源管理器(TRM)交换对象上下文,以便TPM可以为这些多个应用程序提供服务。 在由TPM返回到TRM之前,对象上下文是加密的。 如果以后需要该对象,TRM可以将上下文重新加载到TPM中,从而提供类似缓存的行为。

受保护位置的加密使用多个永不离开TPM的种子和密钥。 其中一个是Context Key。 它是一个对称密钥,在将数据临时交换出TPM时用于加密数据,以便加载不同的工作对象集。 从未离开TPM的其他敏感值是Primary Seeds。 这些种子是存储层次结构的根,用于保护应用程序保留的对象。 Primary Seed是一个随机数,用于为其他对象生成保护密钥; 这些对象可能是存储密钥,其中包含保护密钥,然后用于保护更多的对象。

主种子可以被改变,当它们被改变时,它们保护的对象将不再可用。 例如,存储主种子(Storage Primary Seed, SPS)为与所有者相关的数据创建存储层次结构,当所有者发生变化时,该种子也会发生变化。

5.完整性度量和报告

核心可信度量根(CRTM)是度量的起点。 该过程对TPM平台进行初始度量并扩展到PCR寄存器中。 要使度量有意义,执行的代码需要控制它运行的环境,以便TPM中记录的值能够代表平台的初始信任状态。

重新启动将进入一个处于已知初始状态的平台环境,主CPU从某个预制好的初始位置运行代码。 由于该代码在当时独占平台的控制权,因而它可以从固件中对平台进行度量。 从这些最初的度量,可以建立一条信任链。 由于该信任链是在平台重置时一次性建立的,所以初始信任状态不可能改变,因此称为静态RTM (S-RTM)。

在一些处理器架构上可以使用另一种初始化平台的方法。 它让CPU充当CRTM,并对它度量的内存部分进行保护。 这个过程可以在不重启平台的情况下启动一个新的信任链。 由于RTM可以动态重建,因此这种方法被称为动态RTM (D-RTM)。 S-RTM和D-RTM都可以将一个处于未知状态的系统恢复到已知状态。 D-RTM的优点是不需要重新启动系统。

完整性度量是一个表示平台信任状态可变的值。 被测量的对象可以是任何有意义的东西,但通常是

  • 代码或数据的哈希值
  • 一些代码
  • 数据的签名者的指征。

完整性报告是对PCR中记录的完整性度量进行验证的过程。 完整性度量、日志记录和报告背后的理念是,平台可能进入任何可能的状态——包括不受欢迎的或不安全的状态——但需要准确地报告这些状态。 一个独立的过程可以评估完整性状态并确定适当的响应。


总结

以上就是今天要讲的内容。本文介绍可信平台基本特征,主要是认证(Certification)和证明(Attestation),其中详细介绍了可信平台认证层级结构,剩余部分介绍了证明密钥(AK)的身份认证和应用场景。

对于可信平台的介绍到此就告一段落了。下一篇我们开始介绍可信平台模块提供的保护(Part 1体系结构第10章)。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平