第3章导读

来源:百度文库 编辑:神马文学网 时间:2024/10/04 16:26:47
导读:《第3章 可信计算平台基础》
[更新时间:2009年5月2日]
3.2.1 保护能力
保护区域:可信平台模块中存放敏感信息的存储区。
保护能力:可信平台模块提供的可以对保护区域进行访问的功能,以命令的形式提供。
3.2.2 对外证明
“对外证明”是一个可信计算平台应该做得到的事情,这项事情的目的是要向外界证明该可信计算平台是可以相信的。
可信计算平台的外部实体可以要求可信计算平台就平台的保护区域、平台的保护能力、平台的信任根等的可信性给出证明,可信计算平台则要提供有说服力的证据,以便能使外部实体认可:“该平台提供的有关平台特性的描述是值得信赖的”。
由TPM提供的证明:TPM告诉外部实体:“我掌握某某数据的情况”。做法是:TPM用自己的AIK对这些数据进行签名。
对平台进行的证明:可信的第三方告诉外部实体:“该平台与一个确定的TPM相关联,你可以相信完整性度量报告是由它提供的”。这里的可信第三方一般是私密性证书机构,证明的方法是:为平台发放AIK凭证。
由平台进行的证明:平台告诉外部实体:“某某完整性度量结果是我提供的”。做法是:用平台上的TPM的AIK对PCR寄存器的值进行签名,因为完整性度量结果存放在PCR寄存器中。
平台的认证:外部实体确认平台的工作身份。做法是:平台用AIK的私钥对一个密钥进行签名,如果外部实体能用AIK的公钥解开这个签名,则可确认该平台拥有与相应的AIK对应的工作身份。
3.3 可信计算平台的基本体系
信任根:一个平台中那些我们必须无条件信任的组件。它们是可信计算平台中最基础的组件,必须得到绝对信任,否则,整个平台的可信性就无从谈起。
可信计算平台需要提供三种基本功能:(1) 对完整性进行度量;(2) 把度量结果存储起来;(3) 向外报告度量结果。与此相对应,信任根中需要包含度量、存储和报告三类组件,因此,可信计算平台中有三类信任根:度量的信任根(RTM)、存储的信任根(RTS)和报告的信任根(RTR)。
CRTM:可信计算平台中行使完整性度量职能的指令,它们对平台部件的完整性进行度量。以PC机为例,CRTM可以由BIOS中的引导块组成,也可以由整个BIOS组成,随平台的实现方案而定。
RTM:可信计算平台的信任根中在CRTM的控制下工作的组件。
3.3.4 完整性度量
度量核:可信计算平台中实施度量行为的组件。
一个度量事件代表度量行为的一次实施,一个度量事件产生的效果包含一个度量得到的值和一个度量产生的摘要。
3.3.5 完整性报告
2.平台的身份与隐私
TPM向私密性证书机构提供AIK的公钥和EK的公钥,私密性证书机构为AIK发放凭证,并用EK的公钥对凭证进行加密。
只有拥有正确的EK私钥的TPM才能解开相应的AIK凭证,由于EK是唯一的,所以AIK凭证所对应的TPM是唯一的,一个AIK与一个唯一的TPM相对应。
进行对外证明时,可信计算平台只向证明的请求方提供AIK(工作身份)信息,不提供EK(真实身份)信息,这样可以确定一个真实存在的平台,但不泄漏平台的隐私信息(真实身份)。
3.3.6 以TPM为通信端点
1.绑定
设实体ES拟把信息M发送给实体ER,ER的公钥和私钥分别是KPUB-ER和KPRI-ER,用KPUB-ER对M进行加密得到KPUB-ER{M},就相当于把M和ER绑定在一起,因为只有用KPRI-ER才能对KPUB-ER{M}进行解密,而只有ER才拥有PPRI-ER。
如果实体ER是一个TPM,则以上绑定就是把信息M绑定到特定的TPM上。
2.签名
设实体ES的公钥和私钥分别为KPUB-ES和KPRI-ES,ES对信息M进行签名的方法是:首先计算M的哈希值H(M),然后用KPRI-ES对该哈希值进行加密,得到的结果{H(M)}KPRI-ES就称为ES对M的签名。
如果实体ES是一个TPM,则以上签名就是特定的TPM对信息M的签名。
3.封装
设M是一份信息,K是一个对称密钥,VPCR-x是某TPM的一组PCR寄存器GPCR-x的值,该TPM的一对密钥的公钥和私钥分别为KPUB-S和KPRI-S,封装的含义是:
(1)用K对M进行加密,得到K{M};
(2)用KPUB-S对VPCR-x和K进行加密,得到KPUB-S{VPCR-x,K}。
以后,如果想得到M,必须先得到K,这就需要由TPM用KPRI-S对KPUB-S{VPCR-x,K}进行解密,此时,TPM检查GPCR-x的值是否与VPCR-x相等,只有在相等的情况下,TPM才提供K,否则,不提供K。
PCR寄存器组GPCR-x的值VPCR-x也称为TPM的一个状态(或一个配置),因此,封装把信息M与TPM的一个状态关联了起来,只有当TPM的状态与封装时的状态相同时,才有可能把封装过的信息K{M}恢复为原来的信息M。换言之,当且仅当封装时的TPM状态与解封装时的TPM状态相同时,解封装操作才能成功。
4.封装的签名
设实体ES拟对信息M进行签名,ES的公钥和私钥分别为KPUB-ES和KPRI-ES,某TPM的一组PCR寄存器GPCR-x的值是VPCR-x,封装的签名的含义是:
(1)把M和VPCR-x连接起来,得到M||VPCR-x;
(2)计算M||VPCR-x的哈希值,得到H(M||VPCR-x);
(3)用KPRI-ES对H(M||VPCR-x)进行签名,得到{H(M||VPCR-x)}KPRI-ES。
这样,验证签名时,验证方就可以判断该签名是不是在TPM的指定状态VPCR-x下实施的。
3.3.7 存储保护
TPM中的RTS负责保护存储在TPM中的信息的安全,特别是保护TPM生成的密钥的安全。
TPM中的存储空间非常有限,存放不下多少密钥,大量的密钥只能存放在TPM外的存储介质中。
TPM中存放密钥的存储区称为密钥槽,TPM外的存储介质中存放密钥的存储区称为密钥槽的缓存,简称密钥缓存。
TPM外称为KCM的软件负责密钥缓存的管理,管理密钥在TPM与缓存之间的传送。
存储保护服务除了保护密钥以外,也可以保护数据。如果实体E无法识别数据D,则对于实体E而言,D属于不透明数据。
受保护的信息(包括密钥和数据)从TPM内传送到TPM外之前,需要进行加密,SRK是用于进行这样的加密的根密钥。在为TPM建立属主的过程中,可以创建SRK。如果为TPM创建新的SRK,那么由原来的SRK加密的信息就难以再解密了。
1.密钥属性
这里说的密钥属性主要指密钥的“迁移属性”,它表明密钥是“可迁移的”,还是“不可迁移的”。
可迁移:在一个TPM中生成的密钥可以传送到另一个TPM中使用。
不可迁移:在一个TPM中生成的密钥只限在该TPM中使用。
2.密钥类型
在为TPM建立属主的过程中,同时建立属主的授权数据(通常是一个口令),授权数据由用户提供,系统用TPM的EK公钥对授权数据进行加密,TPM接收到授权数据后,用EK私钥对它进行解密。属主授权数据也称为属主授权秘密。
前面曾经说过,创建AIK时,私密性证书机构用EK公钥对AIK凭证进行加密,TPM接收到AIK凭证后,用EK私钥对它进行解密。
3.外部存储器和密钥缓存管理
由于TCG把TPM定位为低成本的商品化组件,所以,为了降低造价,TPM所能提供的内部存储空间非常有限。
由TPM外的存储空间构成的密钥缓存用于弥补TPM内部存储空间的不足。
TPM中的密钥由RTS构造成密钥块之后,才能存放到TPM外的密钥缓存中。
可以利用密钥块的内容的哈希值建立相应的句柄,用以作为引用密钥块的手段。要通过密钥块以外的其他途径去表示与密钥相关的密钥类型和密钥属性等信息。
TPM外的KCM软件不但实现对TPM外的密钥缓存的管理,还根据TPM提供的接口,负责管理TPM中的密钥槽的有效使用。
3.4.1 TPM的组件
TPM组件的体系结构如下图所示,它从另一个角度描述TPM的内部结构。

TPM中的密码协处理器实现密码运算操作,包括非对称密码运算操作和对称密码运算操作,但是,对称密码运算操作仅限于TPM内部使用,TPM不对外提供对称密码运算操作接口,所以,TPM没有对外提供对称密码运算功能。
HMAC是密钥相关的哈希运算消息认证码(keyed-Hash Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
HMAC引擎提供HMAC运算功能,发挥两方面的作用:
(1)验证TPM接收的授权数据和认证数据;
(2)确认TPM接收到的命令请求是已授权的请求,并且,命令在传送的过程中没有被改动过。
密钥生成器用于生成密钥,可生成的密钥包括非对称密钥和对称密钥。TPM可以向外部实体提供非对称密钥,也可以提供对称密钥。随机数生成器生成的随机数可以作为密钥生成器生成密钥的基础。
执行引擎的作用是执行程序代码,实现TPM命令的功能。外部实体通过输入/输出端口把命令请求传送给TPM,这些请求将驱动执行引擎去执行相应的代码,从而实现相应的功能。
3.6.4 TPM命令的授权验证
授权验证要解决的问题是:
(1)检查实体是否拥有执行TPM命令的合法授权;
(2)验证消息在实体与TPM之间传送时的安全性。
1.命令验证方法
利用会话机制实现命令的授权验证。在会话中,TPM位于会话的一端,实体位于会话的另一端。
当一个实体要进入一个会话时,它需要提供一个秘密,以此作为验证它是否拥有相应授权的依据。
在实体与TPM之间传送的消息的安全性用消息认证码进行验证,消息认证码通过HMAC运算生成。
2.命令验证协议
在五个命令验证协议中,OIAP和OSAP这两个协议用于建立会话环境,ADIP、ADCP和AACP这三个协议用于处理授权信息。
建立会话环境时,要么使用OIAP协议,要么使用OSAP协议,用户必须作出明确的选择。
ADIP、ADCP和AACP隐含地体现在TPM命令之中,不用进行显式的选择。
会话环境的建立与协议选择的例子:
(1)执行TPM_TakeOwnership命令的会话应该选择OIAP协议,因为该命令不涉及具体的TPM对象;
(2)执行TPM_CreateWrapKey命令的会话应该选择OSAP协议,因为该命令要处理的是TPM的密钥对象。
授权信息处理与协议关系的例子:
(1)执行TPM_CreateWrapKey命令生成密钥时,可以为密钥建立授权数据,相应的任务由ADIP协议支持;
(2)执行TPM_ChangeAuth命令可以修改TPM对象的授权数据,相应的任务由ADCP协议支持,修改后的授权数据是父对象可见的;
(3)如果想修改TPM对象的授权数据,且希望修改后的授权数据是父对象不可见的,那么,可以执行TPM_ChangeAuthAsymStart和TPM_ChangeAuthAsymFinish命令,相应的任务由AACP协议支持。