可信主板环境下的可信部件
节点静态可信过程的起点可信根——可信主板的可信扩展是从可信根加电开始,到可信主板完成对自身和包括从开机到操作系统内核装载之前的可信启动过程。
根据《信息安全技术 可信计算规范 可信平台主板功能接口》,可信根TPCM与计算机主板其他部件的协作关系有如下要求:
- 在CPU执行Boot ROM代码前,TPCM先启动,实现TPCM中的RTM度量Boot ROM的初始引导代码。其中初始化代码包括扩展度量模块(EMM1)。
- TPCM通过物理电路连接,可靠地读取主机Boot ROM的初始引导代码,并对其实时完整性度量和存储操作。
- 扩展度量模块EMM代理RTM度量平台代码的装载过程,通过接口访问TPCM。
TPCM先于主板启动是为了防止CPU启动后旁路TPCM,使可信根失去作用。TPCM启动后,通过EMM1度量系统,可以在CPU启动前确认主板的可信性。
可信主板中,TPCM模块实体是主板平台的可信根,其内部包括可信度量根(RTM)、可信存储根(RTS)、可信报告根(RTR),其中RTS和RTR位于TPCM模块中内置的可信平台密码模块(TCM)中,RTM在TPCM中,可以度量Boot ROM中的初始代码。它们同时受到TPCM模块的物理保护。同时TPCM的可信度量根与系统的控制器之间存在控制接口,当RTM的度量结果不符合预期时,TPCM可以不通过CPU实现初始的可信控制功能。
TPCM的度量功能有限,可信主板需设置扩展度量模块(EMM)。EMM是TPCM之外的度量模块,他们接受了完整性度量检查后被装载到当前执行环境中,度量后续被装载代码的部件。作为可信度量根的扩展度量模块,实现对执行部件的完整性度量,确保信任传递。
可信主板标准提出3个扩展度量模块,分别为EMM1、EMM2、EMM3.
- EMM1:被RTM完整性度量,并被装载到系统的一段Boot ROM初始引导代码;EMM1作为主板开机引导的初始执行部件,并对Boot ROM中的版本信息和扩展度量模块(EMM2)进行完整性度量。
- EMM2:被EMM1完整性度量,并被装载的扩展度量模块,负责对平台启动部件以及操作系统装载器进行完整性度量与可信装载。
- EMM3:存储于外部存储器中,被EMM2完整性度量,用来度量和装载操作系统内核的执行部件。
此处EMM2一般是嵌入在BIOS中用来装载引导程序的模块,用来度量引导程序的可信性。EMM3则是嵌入在引导程序中的可信代码。
信任链上主要部件之间的相互协作关系是:RTM度量EMM1,EMM1度量EMM2,EMM2度量EMM3,EMM3度量操作系统内核;可信平台主板以RTM、EMM1、EMM2和EMM3为节点搭建信任链传递。
可信平台上的静态可信链构建
信任链基于RTM建立,通过EMM实现信任传递。RTM和EMM采用杂凑算法对部件代码进行完整性计算,并储存度量结果,实现完整性度量。
完整性度量分为4个步骤。
- RTM或EMM使用其内部实现的杂凑算法对“部件i”的二进制代码进行计算。
- RTM或EMM生成在1.中对“部件i”的计算结果“度量事件i描述”;该描述包括杂凑算法的结果、“度量值i”,以及本次度量事件的上下文信息“度量事件i上下文”。
- RTM或EMM通过接口调用TPCM,将“度量值i”扩展存储到于预先定义与部件i相关的PCRi中。
- RTM或EMM通接口调用执行密码,将“度量事件i描述”存储于度量事件日志中。
信任链建立的一般流程如下:
- TPCM先于Boot ROM被执行前启动,由TPCM中的RTM度量Boot ROM的初始引导代码(Boot Block);可信度量根RTM作为信任链的起点,可靠地读取Boot ROM中Boot Block并对其执行完整性度量,生成杂凑值和日志,并存储于TPCM中。
- TPCM发送控制信号,使主板其他部件,如CPU、芯片组和动态存储器等复位,开始执行Boot ROM中的EMM1模块,EMM1获得系统执行权,构建以EMM1为当前度量值的可信执行环境。
- EMM1对Main Block部件中的EMM2进行完整性度量,生成杂凑值和日志,并存储于TPCM中。
- EMM2获得当前系统控制权,对平台启动部件以及EMM3执行完整性度量,将杂凑值存储到TPCM的PCR中,度量事件日志保存到ACPI表中,并将在1.和3.中存储在TPCM的日志存储到ACPI中。
- EMM3获得当前度量执行部件控制权,作为当前可信度量执行部件。
- EMM3对操作系统内核执行完整性度量,将杂凑值存储到TPCM的PCR中,并可把日志保存到ACPI表中。
在最后,当操作系统的安全机制和可信机制启动并且读入初始化策略后,系统的可信度量和安全控制机制由系统可信软件基和操作系统安全机制构成的节点主动可信监控机制接管,此时系统进入主动免疫的安全模式。静态可信扩展过程结束。