3.3 可信计算平台的基本体系
在TCG的技术体系中,信任根是默认的可以信任的组件,它们总能正确地工作,无须外部监督。信任根的完整集合必须至少具有描述影响平台可信性的平台特征所需要的最小功能集。
一个可信计算平台通常拥有三个信任根:度量的信任根(RTM,Root of Trust for Measurement)、存储的信任根(RTS,Root of Trust for Storage)和报告的信任根(RTR,Root of Trust for Reporting)。RTM是本质上能够实施可靠的完整性度量的计算引擎,在典型情况下,它是由度量的核心信任根(CRTM,Core Root of Trust for Measurement)控制的常规的平台计算引擎。CRTM是由以RTM形态工作的平台执行的指令。RTM也是传递性信任链的根。RTS是能够维护完整性摘要及摘要序列的总貌的计算引擎。RTR是能够可靠地报告RTS所持有的信息的计算引擎。
3.3.1 平台的可信构件块
定义3.6 可信构件块(TBB,Trusted Building Block)是信任根中没有保护区域或保护能力的成分,通常,它包括RTM指令和TPM初始化功能,一般是平台相关的。
例3.1 以基于TPM的计算机平台参考模型为基础,试说明什么样的成分可以构成一个TBB。
解答:这些成分可以构成一个TBB:CRTM、CRTM存储与主板的连接、TPM与主板的连接、键盘等,可信计算平台中的可信构件块如图3.2中的粗线所示。
我们说TBB是可信的,其中的含义是:我们可以预期它不会做出破坏可信计算平台的目标的行为。
3.3.2 信任边界
TBB和信任根的组合可以形成一个信任边界,在该信任边界内,可以实现对一个平台的最小配置环境的完整性度量、存储和报告。对较复杂的系统的度量,则除了CRTM之外,还需要借助其他的ROM代码,为此,系统在把执行的控制权传递给该ROM代码之前,需要对其进行度量。建立TBB时,要确保含有其他度量代码的组件不会不经意地扩展信任边界,只有确立了被扩充成分的可信性之后,才会出现信任边界扩展的行为。
图3.2 可信计算平台中的可信构件块
3.3.3 信任传递
信任传递也称信任推导,是信任从信任根向外传递的过程。首先,信任根描述第二组功能的可信性,根据这个描述,某相关的实体可以确定该组功能的可信性,如果该实体断定该组功能的可信程度是可以接受的,那么,信任边界从信任根扩展到包含第二组功能的范围。这样的过程可以不断重复下去,第二组功能可以描述第三组功能的可信性,依此类推。信任传递用于描述平台特征的可信性,并证明不可迁移的密钥是不会迁移的。
图3.3 系统引导过程中的信任传递
图3.3 给出了系统引导过程中的信任传递情况。起初,信任边界仅包含静态信任根,随后,把信任根之外的代码逐渐纳入进来,扩展信任边界。在信任边界的每一次扩展中,首先度量目标代码,然后再把控制权传递给它。
3.3.4 完整性度量
TCG的技术体系使用度量核、度量事件、被度量的值和度量产生的摘要等概念描述完整性度量行为。度量核产生度量事件,度量事件由被度量的值和度量产生的摘要等两类数据构成,被度量的值是程序代码或内嵌数据的表示,度量产生的摘要是被度量的值的哈希值。度量核对数据进行扫描并产生消息摘要,摘要是平台的操作状态的快照。两类数据的存储是相互隔离的,度量产生的数据通过RTR和RTS功能存储在TPM中,被度量的值理论上可以存储在任何地方,由度量核确定,实际上,也可以不存储该值,可以在需要的时候再重新计算生成。
度量数据描述被度量组件的属性和特征。被度量的数据字段由度量核的实现者负责进行详细的解释,以产生符合度量事件的用户之需的编码结果。实现者负责确定如何划分事件数据。平台相关的TCG规范进一步说明平台的配置、平台的表示和需要对平台进行度量的预期用户。
储存的度量日志(SML,Stored Measurement Log)包含有关的被度量的值的序列,每个序列共享一个公共的度量产生的摘要。在度量中,把被度量的值附加到该公共摘要上,然后再重新计算形成结果的哈希值,这种操作通常称为摘要的拓展,拓展操作确保所有被度量的值都不被忽略,而且,使度量的次序得到维持。
TPM用一组PCR寄存器来保存度量产生的摘要,PCR寄存器的值不是永久的,它们在系统引导时复位。PCR寄存器的更新方法由以下代数式表示:
PCR[n] ← SHA1(PCR[n]+M_data)
其中的M_data表示被度量的数据。
验证度量事件时,需要重新计算度量产生的摘要,并把它与PCR的值进行简单的比较。TCG没有给SML内容定义数据编码规则,它推荐遵循诸如XML的适当标准,以确保广泛的可用性。不同的平台可以要求不同的内容表示,所以,平台相关的规范(如个人计算机相关的平台规范)可以定义其特定的编码规则。
SML可能会变得非常大,因而,它不适合存放在TPM中。对SML的攻击可以容易地检测出来,所以,SML不需要由TPM提供保护。不过,SML还会受到拒绝服务的攻击,实现者应该采取措施,复制或重新生成该日志。
3.3.5 完整性报告
RTR有两个功能:一是展示用于存储完整性度量信息的保护区域;二是根据可信平台的身份证明储存的数据的真实性。PCR可以用易失性或非易失性存储器来实现,它们必须能够抗击软件攻击,同时,也应考虑防止物理篡改攻击。可以采用AIK对完整性报告进行数字签名,以认证PCR的值的真实性,还可以把一个随机数组合到PCR的签名中,以防止重放攻击。
AIK由TPM生成和管理,一个TPM可以拥有很多AIK。平台的属主可以采用一个特定的AIK来保护私密性,以防止合谋攻击。
TPM的生产厂家可以在出厂前为每个TPM生成唯一的EK,以便标识TPM的真实身份。EK用于为TPM发放AIK凭证,以及确定平台的属主。平台的属主可以创建存储根密钥,用于对TPM的其他密钥进行加密。
1.完整性报告协议
完整性报告可用于确定平台的当前配置。用于报告完整性度量情况的对外证明协议与消息交换如图3.4所示。
图3.4 对外证明协议与消息交换
报告完整性的度量情况就是对外证明平台的配置情况,相关协议由以下步骤构成:
(1)证明的请求方向平台发出获取一个或多个PCR寄存器值的请求;
(2)配备有TPM的平台上的度量机制采集SML记录信息;
(3)度量机制从TPM中获取PCR寄存器的值;
(4)TPM用AIK对PCR寄存器的值进行签名;
(5)平台的度量机制采集与TPM关联的凭证,并把SML记录信息、凭证和经过签名的PCR寄存器的值提供给证明的请求方;
(6)证明的请求方验证请求的响应结果,计算度量产生的摘要,将其与PCR寄存器的值进行对比,并评估平台的凭证,检查签名信息。
该协议独立于信息传输或发布机制,可以采用现有的通信、消息和远程过程调用基础设施传输对外证明信息。
2.平台的身份与隐私
对外证明的目的之一是使证明的请求方能够确定某个TPM给一个消息签了名,它也能够确定哪一个TPM给该消息签了名。利用私密性证书机构给AIK签发凭证,可以在不向证明的请求方泄露EK的秘密信息的前提下确保平台的可信性。TPM向私密性证书机构提供AIK的公钥信息,由私密性证书机构为该AIK发放凭证。AIK凭证的合法使用要求TPM证明相应的AIK是唯一地绑定到该TPM上的,通过使用TPM中的EK的私钥对AIK凭证进行解密的方法可以做到这一点,只有拥有正确的EK的私钥的TPM才有可能成功地实施这样的解密操作。
私密性证书机构是可信的机构,它不会泄露平台的敏感信息,包括EK的公钥信息或由其导出的可以标识个体身份的信息;它也不会错误地表达其发放的AIK凭证所对应的平台的信任属性。
通过对TPM进行配置,可以要求实体在开始执行AIK凭证发放协议前提供属主授权证明。为了支持对TPM的使用控制,TPM提供关停机制,允许使用者关闭其功能。TPM的功能被关闭后,该TPM在平台中就不起作用了。
3.平台的对外证明
平台的对外证明就是让平台以外的实体能够验证平台的可信性,所要做的工作是对相关的证据进行评价,以确定能否相信给定的AIK可用于实现对指定的平台的认证。为了验证某个特定的AIK所关联的信任声明的有效性,需要使用由TPM和平台的生产厂家发放的凭证。
4.平台中使用的凭证
TCG定义了五种类型的凭证,每种凭证只为执行一种特定的操作提供所需要的信息,这五种凭证类型分别是:真实身份凭证(即EK凭证)、符合性凭证、平台凭证、有效性凭证、工作身份凭证(即AIK凭证)。
1)真实身份凭证
真实身份凭证由生成EK的实体发放。EK的生成属于TPM生产过程中的工作,一般来说,EK是由TPM的生产厂家生成的。为了使TPM的生产厂家能够声明已经正确地创建了EK并把它嵌到了有效的TPM中,应该在把平台发行给用户之前生成EK。
如果在把平台发行到用户手中之后才生成EK密钥对,生成密钥时的条件会对它所提供的平台身份的真实性有一定的影响。
真实身份凭证包含以下信息:
● TPM生产厂家的名称;
● TPM部件模型编号;
● TPM版本信息;
● TPM的EK公钥。
从隐私的角度上考虑,EK公钥也属于敏感信息,因为它唯一地标识了一个特定TPM的身份,进而也唯一地标识了相应特定平台的身份。每个TPM都需要一个EK凭证。
2)符合性凭证
符合性凭证可以由任何有资格对TPM或包含TPM的平台进行评价的实体发放,此类实体可以是平台的制造商、销售商或独立的第三方。符合性凭证表明评价者认为TBB的设计与实现与公认的评价基准是相符的。通过对凭证进行签名,评价者提供了对评价结果的证明,评价结果的细节可供审查用。为了支持评价工作,TCG定义了内容丰富的评价标准和准则。
可以给一个平台发放多个符合性凭证,其中一个与TPM相对应,其余的与TBB的不同组件相对应。
符合性凭证可以包含以下信息:
● 评价者名称;
● 平台制造商名称;
● 平台模型编号;
● 平台版本;
● TPM制造商名称;
● TPM模型编号;
● TPM版本。
符合性凭证不包含唯一地标识平台的信息。
在每个平台模型中可以存在几个符合性凭证,但相同生产批次和模型的多个平台只需要一套凭证。
3)平台凭证
平台凭证可以由平台制造商、销售商或有资格的任何实体发放,它标识平台的制造商,并描述平台的特性。它也引用与TPM关联的平台真实身份凭证和有关的符合性凭证。凭证的引用由被引用的凭证的消息摘要构成。我们可以认为平台凭证是对隐私敏感的,因为它与多个同类平台中的某个特定平台相关联。
平台凭证包含以下信息:
● 平台制造商名称;
● 平台模型编号;
● 平台版本;
● 真实身份凭证;
● 符合性凭证。
平台凭证提供证据以证明该平台包含真实身份凭证所描述的TPM。每个平台可以拥有一个平台凭证。
可度量的硬件或软件组件的制造商可以为组件提供参考度量值,参考度量值是在制造期间当组件处于正常工作秩序时计算出的被度量的组件的摘要。典型地,计算是在功能性测试之后进行的。并非所有的组件都需要建立参考度量值,只有必要查检那些可能给安全带来威胁的组件,以防止被注入后门。
4)有效性凭证
通常,期望的摘要的使用者信任净室操作员的声明,所以,可以在任何时候进行净室度量。可以通过把参考度量值与运行时的实际度量值进行比较来检测组件可能发生的变化。经过签名的描述拥有预期的摘要的组件结构的文档称为有效性凭证。
以下是可以拥有有效性凭证的一些组件实例:
● 视频适配器;
● 磁盘适配器;
● 内存控制器;
● 通信控制器/网络适配器;
● 处理器;
● 键盘和鼠标;
● 软件。
有效性凭证由有效性实体发放,愿意并且能够度量和证明被度量的值的任何人都可以称为有效性实体。通常,组件的制造商最能够生成期望的值。组件描述的任何部分都可以是信任判定的素材,不过,有效性凭证的候选组件很有可能是给安全带来威胁的那些组件。
组件描述至少包括以下元素:
● 有效性实体名称;
● 组件制造商名称;
● 组件模型编号;
● 组件版本;
● 度量产生的值。
组件描述可以包含组件的能力。
一个模型、一系列组件或被签名的信息的唯一性都可以确定一个有效性凭证,有效性凭证可以由实施有效性验证的实体以任何合适的方式分发和公布,最好是以电子方式公布,以便能由自动化工具进行处理。
想要证明事件数据的准确性的实体可以将PCR寄存器的值与有效性凭证中的度量生成的值进行对比。
拥有有效性凭证的组件有时需要进行改错、更新或升级,这会导致包含在原始有效性凭证中的预期的结果失效。可以根据平台相关的规范处理组件与有效性凭证间的一致性问题。
5)工作身份凭证
标识用于给PCR寄存器的值签名的AIK私钥,它包含AIK公钥和发放者认为有用的任何其他信息,由能够验证各种凭证和保护客户隐私的实体发放。
通过发放工作身份凭证,签名者通过证明TPM的实情而对外证明TPM的真实性,该证明的目标是证明该TPM拥有该AIK且该AIK与有效的真实身份凭证、平台凭证和符合性凭证联系在一起。可信第三方进一步确保该签名者遵守客户对隐私的期望,该期望可能包括保护可标识的个体信息。
工作身份凭证按以下方式引用其他凭证。
(1)工作身份凭证包含对TPM制造商和模型的引用,但不包含对隐私敏感的EK的引用。
(2)工作身份凭证也包含对平台制造商和模型的应用,不过,那不是对平台凭证本身的引用,而是对包含在平台凭证中的隐私不敏感的信息的引用。
(3)工作身份凭证包含一个指向证明的请求方能够找到TPM和平台的符合性文档的地方的指针。
借助对外证明协议,证明的请求方可以使用这些信息和凭证中的其他信息来建立对平台的信任感。
图3.5描述了平台中使用的各种凭证及它们之间的关系。
图3.5 可信计算平台中的凭证
描述凭证时需要说明隐私敏感性问题。以上介绍的每一个凭证都是建立平台的可信性所必需的,平台的制造商必须为这些凭证提供保护,以保护用户的隐私。
3.3.6 以TPM为通信端点
考虑系统间的信息交换时,安全的分布式系统的设计者必须标识通信端点的身份。对于系统的整体安全性而言,通信端点的组成和结构与通信协议一样重要。通信端点至少应提供非对称密钥、密钥存储和协议数据项的保护处理。
基于非对称密码技术的经典消息交换方法用消息接收者的公钥对消息进行加密以确保消息接收者的唯一性,用消息发送者的私钥对消息进行签名以确保消息的防篡改性。密钥存放在通信端点中,没有得到妥善管理的密钥能导致安全性的丧失。另外,没有得到妥善配置的通信端点也能导致安全性的丧失。TPM通过提供密钥管理和配置管理特性来提高安全性。这些特性的组合可以实现密钥与平台配置的封装,从而进一步强化通信端点的定义。
TCG定义了四类保护信息交换的操作:绑定(Binding)、签名(Signing)、封装(Sealing)和封装的签名(Sealed-Signing)。
1.绑定
定义3.7 用一个实体的公钥对一项信息进行加密的过程称为信息与实体的绑定。通常,绑定的情形是信息的发送方用信息的接收方的公钥对信息进行加密。
只有使用信息接收方的私钥才能对加密的信息进行解密,以恢复信息的原状。当私钥由TPM当做不可迁移的密钥进行管理时,只有创建该密钥的TPM才能使用它。这样,用该公钥加密的信息便被绑定到一个特定的TPM上。
创建可以在多个TPM间传递的可迁移的私钥是有可能的,在这种情况下,除了加密之外,绑定就没有其他特殊的含义了。
2.签名
在传统意义上,签名把信息的完整性与用于产生签名的密钥关联在一起。TPM把一些密钥标记为只能用于签名的密钥,也就是说,这些密钥只用于计算被签名的数据的哈希值,并对该哈希值进行加密,因此,不能把它们误用为加密密钥。
3.封装
定义3.8 把一项信息与一个平台的某个状态绑定在一起的过程称为信息在平台上的封装,平台的状态通常由平台的完整性度量值表示。
封装比绑定更进了一步,它把信息与信息的发送者指定的一组平台度量值绑定在一起,平台度量值指定了允许对信息进行解封装前平台必须呈现的配置状态。封装把被加密的信息与一组PCR寄存器的值及一个不可迁移的非对称密钥关联在一起,被加密的信息实际上用对称密钥进行加密。
信息的封装方法是:选择一组PCR寄存器的值,用非对称加密算法(通过公钥)对该组PCR寄存器的值和一个对称密钥进行加密,然后用该对称密钥对待封装的信息进行加密。只有当平台的配置与信息的发送者指定的PCR寄存器的值相匹配时,拥有非对称解密密钥(即私钥)的TPM才对相应的对称密钥进行解密。
封装是TPM的一个强大的特性,它确保只有当平台在一个非常明确的已知配置下工作时才能通过解密使加密保护的信息恢复原状。
4.封装的签名
签名操作也可以与PCR寄存器关联在一起,以进一步确保对信息进行签名的平台满足特定配置的要求。验证方要求一个签名必须包括一组特定的PCR寄存器。在签名操作期间,签名方采集特定寄存器的值,把它们组合到给定的信息之中,在计算待签名的信息的摘要时,它们作为计算的输入信息的一部分,影响计算的输出结果。验证方可以检查签名信息中提供的PCR寄存器的值,这相当于检查在创建信息的签名的那一刻执行签名操作的平台的配置。
3.3.7 存储保护
RTS保护托付给TPM的密钥和数据的安全,它管理少量的易失性存储器,用于在执行签名和解密操作时存放密钥。可以对不活跃的密钥进行加密,并把它们转移到TPM之外,从而为其他更活跃的密钥腾出空间。位于TPM外部的密钥缓存管理器(Key Cache Manager,KCM)负责管理密钥槽的高速缓存,KCM通过接口与可以长期存放不活跃的密钥的存储设备进行交互。一个通用的受保护的存储服务也允许保存不透明的数据,在这种情况下,RTS的数量将翻倍。
经过优化,RTS可以存放小的对象,其大小约与一个非对称密钥减去开销后相当,其中的开销是210 字节左右的有效载荷,可以存放的对象有多种类型,如对称密钥、非对称密钥、口令字符串、网页附带的小信息段、认证结果及不透明的数据。
对TPM而言,有三种类型的密钥并非是不透明的,它们是AIK密钥、签名密钥和存储密钥。存储的根密钥(SRK)和真实身份密钥(EK)是两种内嵌在TPM中的密钥,如图3.6所示,它们是不能移到TPM的外部的。为平台创建一个新属主时,可以附带地创建一个新的SRK,其附带作用就是使得由以前的SRK控制的所有数据对象都处于被加密的状态。
SRK是由TPM生成的,建立TPM的属主时,系统采用EK对SRK的口令字符串进行加密。SRK用于保护存放在TPM的外部的其他密钥。
1.密钥属性
RTS管理的所有密钥都有一个迁移属性,该属性表明密钥是否可迁移,它确定一个密钥是否可以从一个TPM传送到另一个TPM。属性的值是在密钥创建时建立的,是不可改变的。在语义上,一个不可迁移的密钥永远与一个特定的TPM关联在一起。对一个不可迁移的密钥进行迁移所产生的效果就是允许一个平台冒充另一个平台。AIK密钥是永远不应迁移的密钥的例子,也就是说,AIK密钥是不可迁移的密钥。
图3.6 根密钥和真实身份密钥
可迁移的密钥可以在不同的TPM之间进行交换,这使得密钥对可以跟着用户走,而不管用户具体使用的是哪一个设备。即使更换了计算平台,在个体间交换的信息依然是可以访问的。
密钥属性不能应用到不透明的数据之上,为了把不可迁移特性扩展到不透明的数据中,应该采用一个不可迁移的密钥把该数据与RTS存放在一起。不透明的数据只要受到TPM的控制,它就不能在其他地方被解密。不过,数据一旦在TPM的外部被解密了,很显然,它就可以迁移到任何系统中。
2.密钥类型
TCG定义了7 种密钥类型,每种类型都拥有一组界定其用途的限定。TCG密钥从广义上可以划分为签名密钥或存储密钥,它们可以进一步划分为平台密钥、身份密钥、绑定密钥、一般密钥和传承密钥。对称密钥被独立划分为认证密钥。
7种密钥类型如下所述。
(1)签名密钥:这是通用的非对称密钥,用于对应用数据和信息进行签名,它们既可以是可迁移的,也可以是不可迁移的,可迁移的密钥可以在不同的TPM之间进行导入和导出,TPM可以对应用数据进行签名,并实施迁移限定。
(2)存储密钥:这是通用的非对称密钥,用于对数据或其他密钥进行加密,它们的主要用途是对在TPM的外部进行处理的密钥和数据进行加密。
(3)身份密钥:这是通常所说的TPM的工作身份密钥,即AIK,是不可迁移的签名密钥,主要用于对TPM产生的数据(如TPM寄存器的值等)进行签名。
(4)背书密钥:这是通常所说的TPM的真实身份密钥,即EK,是平台的不可迁移的解密密钥。在建立平台的属主时,用于对属主的授权数据进行解密;在创建AIK时,用于对相关的信息进行解密,它永远不会用于加密或签名。
(5)绑定密钥:这是用于对少量的数据(如对称密钥等)进行加/解密的密钥,在一个平台上用于加密,则在另一个平台上用于解密。
(6)传承密钥:这是在TPM的外部创建的密钥,属于可迁移的密钥,它们导入到TPM中后,可在签名和加密操作中使用。
(7)认证密钥:这是对称密钥,用于保护TPM参与的传输会话。
3.外部存储器和密钥缓存管理
TPM的设计目标是作为适用于客户级计算平台的低成本商品化组件,所以,TPM拥有的运行用的存储器(易失性存储器)和永久存储器(非易失性存储器)是有限的。而在实际应用中,可能需要无限的存储器,因此,需要定义TPM的外部存储器和高速缓存管理器。
为了支持无限的密钥和存储区域,RTS把密钥组成加密的密钥块,以存放到外部存储器中。在TPM之外的密钥块是不透明的,可以存放在任何可用的存储设备中(如闪存、磁盘、网络文件服务器等)。密钥块绑定到特定的TPM上,还可以封装到特定的平台配置上。
借助句柄或其他适用的引用机制,密钥块通过它的内容的哈希值来引用。引用标识符可以在密钥缓存管理器(KCM,Key Cache Manager)或其他执行存储功能的应用程序之外消除密钥块的歧义。密钥类型和密钥属性等其他信息可以从外部获得。
TPM对外提供接口,支持外部程序管理TPM的有限的存储资源。通过分离密钥缓存功能和密钥使用功能,可以区分管理功能和应用功能。通常,KCM只关心密钥的缓存,而应用程序只关心密钥的使用。用于保护其他密钥的存储密钥是一种例外情况,KCM会同时控制存储密钥的缓存和使用。
封装到特定平台配置的密钥当平台没有处于预定的配置中时也可以被装载,这为在不影响密钥的获取的情况下实现平台在不同状态间的切换提供了方便。每次使用密钥时都要检查相应的配置,所以,在密钥装载时无须检查配置情况,也能确保系统的安全性。
由图3.6 可见,KCM是处于TPM外部的程序,它负责密钥在TPM的易失性密钥槽内存与非易失性外部存储设备之间的移动。KCM记录所有可用的密钥槽,确定什么时候应该把一个密钥从密钥槽中移走,使另一个密钥可以取而代之。TPM并不预先报告什么时候密钥槽将被占满,或者什么时候应用程序需要使用一个特定的密钥,所以,应用程序可能需要报告什么时候此类事件会发生,另外,KCM可能需要实现一个TPM接口层,以便应用程序可以通过它获得TPM服务。
TPM提供相应的接口,用于为TPM与存储设备之间的切换准备密钥,在任何时刻,KCM都不能以明文形式呈现密钥。
KCM可以实现一个模型,对包含在KCM管理的存储设备中的密钥块进行索引、存储和检索,可能还包括对使用密钥所需要的口令字符串的管理。