现在的位置: 首页 > 综合 > 正文

对TCG的概要分析和对TPM的学习-可信根说明以及RTM(二)

2018年05月02日 ⁄ 综合 ⁄ 共 2051字 ⁄ 字号 评论关闭
文章目录

(YOUXIANG:lichunwen1987ATqq。com)

参考TCG Specification Architecture Overview 1.4 。http://www.trustedcomputinggroup.org/ 检索TCG Specification Architecture Overview

1.1  The Trusted Platform

TPM(TrustedPlatform Module)既可以理解为一套规范,定义了安全密码处理器(securecryptoprocessor)的规格;也可以看作是对此规范的一种实现,即TPM芯片。该部分不涉及具体硬件实现和结构。

有三个可信根(root of trust),包括:度量可信根RTM(a root of trust for measurement)、报告可信根RTR(aroot of trust for reporting)、存储可信根RTS(a root of trustfor storage)。

RTM是一个可靠地进行完整性度量的计算引擎,以CRTM (core root of trust for measurement)为度量根。CRTM是系统启动后执行的第一段代码,它初始化系统启动后的执行顺序,执行最初的可信度量,然后引导TPM开始工作。CRTM是平台执行RTM时的执行代码,一般存储在BIOS中。

RTM目标是将系统的状态信息保存在PCR中。

使用PCR使通信另一方确信系统处于某种已知状态。

虽然系统用户不能阻止运行恶意软件,但是恶意软件的执行被记录下来并且不能抵赖。

问题是:必须从RTM可信根开始运行系统,所以有DRTM。下图是SRTM的过程,左边为度量过程,右边为执行过程。先度量,再交接控制权。

 

RTS是一个准确的记录完整度量的摘要值和顺序计算引擎,它将完整性度量保存在日志中,将它们的散列值保存在PCR中。RTR是一个可靠报告RTS的计算引擎。RTS保存委托给TPM的密钥和数据,并管理少量的内存,其中存放的密钥用于完成解密和签名的操作。

RTR是一个可信的实体来精确和正确的报告信息。使用PCR和RSA以不可伪造的方式向外界报告平台状态。

RTM,RTS,RTR这三个根都是可信、功能正确而且不需要外界维护的。这些可信根存在于TPM和BIOS中,可以由专家的评估来确定是否符合可信的标准。

1.1.1   Trusted Platform BuildingBlocks

粗体部分是TBB是RTS中不具有保护能力的组件,属于可信平台目标之外的部分。一般来说是RTM和TPM的一些初始化指令,例如CRTM和主板的连接,TPM和主板的连接

 

在可信计算平台体系中,建立可信需要先拥有可信根,然后建立一条可信链,再将可信传递到平台的每个模块,之后实现整个平台的可信。

可信平台构造模块(Trusted Building Blocks,TBB)是信任源的一部分,包括RTM和TPM初始化的信息和功能(复位等)。我们使用TBB来构建可信源。

 

l  可信计算平台将BIOS引导块作为完整性度量可信根, TPM作为完整性报告可信根。

l  从平台加电开始,BIOS的引导模块度量BIOS的完整性值并将该值存储在TPM上,同时在自己可写的那块内存中记录日志;

l  接着BIOS度量硬件和ROMS,将度量得到的完整性值存在TPM中,在内存中记日志;

l  接着OS Loader度量OS,OS度量应用和新的OS组件。

l  当操作系统启动后,由用户决定是否继续信任这个平台系统。这样一个信任链的建立过程保证了系统平台的可信性。

1.1.2   Integrity Measurement

一个度量包括两个部分:1)被度量的数据:植入的数据或者程序代码。2)度量摘要值:上述数据的哈希值。摘要值使用RTR和RTS保存在TPM中

Stored Measurement Log(SML)记录了摘要值的序列,TPM将这些摘要值保存在相应的PCR(PlatformConfiguration Registers)中。对pcr执行extend操作为:PCR[n]  <- SHA-1 ( PCR[n] + measured data)。PCR值是临时的,重启时重置。验证度量事件完整性,可以将SML中的内容按顺序重新计算,得到一个计算PCR值,与TPM中对比,查看是否相等,则可确认完整性是否改变。SML可能会比较大,所以不保存在TPM中,不需要保护,因为可以检验SML是否被破坏。

TPM1.1有PCR0-15,TPM1.2有PCR0-23,重启后,0-15置0,16-23置-1,其中0-15是静态PCR,只在重启时重置(SRTM使用),16-23是动态PCR,可以在运行时进行重置,但只能是一些特殊的安全指令才能对其重置,例如AMD SKINIT指令和INTEL的TXT指令。

PCR的使用有三个场景:

1) 验证平台完整性:TPM_Quote

2) 保护数据(TPM_Seal/TPM_Unseal)

3) 在创建key的时候指定PCR集合,只有在这些PCR时才能使用这个Key。

抱歉!评论已关闭.