可信平台控制模块
可信平台控制模块与外部的交互
可信平台控制模块功能组成
TPCM模块是一个逻辑概念,由功能组件、基础软件和硬件组成。
可信平台控制模块接口
计算机引导过程
- BIOS:Basic Input Output System, 可以理解为写死在主板上或者硬件上的一段程序, 当然后来也可以升级(修改), 机器开机之后运行的第一个程序就是BIOS, BIOS加载CMOS上的参数,并寻找第一个可启动的设备(磁盘)。
- MBR:Mast Boot Record, 主引导分区,位置就是第一个可开机装置(磁盘)的第一个扇区, 通常大小为512byte,旧的磁盘一个扇区都是512B, 最新的有4KB,这个扇区有两部分:MBR和分区纪录表,64byte,最多纪录4个分区。
- MBR是安装开机管理程序的地方,所谓开机管理程序,可以理解为bootloader,bootloader的作用是加载核心文件,也就是引导操作系统开始工作。
- boot loader的主要任务有下面几项:
提供菜单:用户可以选择不同的开机选项。
载入OSLoader,为执行操作系统核心代码作准备(这个是我们通用的流程)
或者转交其他loader:将引导加载功能转交给其他loader负责。
启动时计算机内存和磁盘布局:
加载程序的内存地址空间:
BIOS初始化过程:
主引导记录(MBR)格式:
分区引导扇区格式:
加载程序(bootloader):
计算机系统可信启动过程
常见的计算机系统启动部分有BIOS和UEFI两类。BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。UEFI全称Unified Extensible Firmware Interface,即“统一的可扩展固件接口”,是一种详细描述全新类型接口的标准,是适用于电脑的标准固件接口,旨在代替BIOS(基本输入/输出系统),UEFI旨在提高软件互操作性和解决BIOS的局限性。
注:UEFI相比BIOS的优势
1、通过保护预启动或预引导进程,抵御bootkit攻击,从而提高安全。
2、缩短了启动时间和从休眠状态恢复的时间。
3、支持容量超过2.2 TB的驱动器。
4、支持64位的现代固件设备驱动程序,系统在启动过程中可以使用它们来对超过172亿GB的内存进行寻址。
5、UEFI硬件可与BIOS结合使用。
- 所有的电脑都会有一个BIOS,用于加载电脑最基本的程序代码,担负着初始化硬件,检测硬件功能以及引导操作系统的任务。而UEFI就是与BIOS相对的概念,这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上,从而达到开机程序化繁为简节省时间的目的。传统BIOS技术正在逐步被UEFI取而代之,在最近新出厂的电脑中,很多已经使用UEFI,使用UEFI模式安装操作系统是趋势所在。
- 本质上,UEFI就是为了替代BIOS而生的,在功能上,UEFI的扩展性和执行能力,远比简陋的BIOS高级,最直观的是你可以在UEFI界面下看到图形界面,可以使用鼠标操作,可以让启动时自检过程大为简化,这就是最基本的区别。
可信平台主板功能
当我们构建了可信平台控制模块后,还需要一个能够承载TPCM模块的物理部件,这就是可信平台主板。可信平台主板功能规范适用于基于可信平台控制模块的可信平台主板的设计、 生产和使用方法。
可信平台主板是由可信平台控制模块和其他通用部件组成, 实现从开机到操作系统内核加载前的平台可信引导功能。 通用部件主要包括: 中央处理器、 随机存取存储器(RAM) 、 输入输出接口、Boot ROM 固件等。
信任链传递
a) TPCM 先于Boot ROM 被执行前启动, 由 TPCM 中的 RTM 度量Boot ROM 中的初始引导模块(Boot Block) , 生成度量结果和日志, 并存储于 TPCM 中;
b) 如果度量通过,TPCM 发送控制信号, 使 CPU、 控制器和动态存储器等复位; 平台加载并执行 Boot ROM 中的 Boot Block 代码;
c) Boot Block 中的 EMM1 获得系统执行控制权, 信任从 RTM 传递到 EMM1;
d) EMM1 度量 Boot ROM 版本信息和 主引导模块(Main Block)中的 EMM2 代码;EMM1 存储度量结果到TPCM 中的 PCR 并存储度量日志;
e) 如果度量通过,平台加载并执行 Main Block 中 EMM2 的代码;
f) Main Block 中的 EMM2 获得系统执行控制权, 信任从 EMM1 传递到 EMM2;
h) 平台加载并执行 OS Loader 的代码;
i) OS Loader 中的 EMM3 获得系统执行控制权, 信任从 EMM2 传递到 EMM3;
j) EMM3 度量操作系统内核, 生成度量结果和日志, 度量结果存储到 TPCM 的 PCR 中, 度量事件日志保存到 LSA 中;
k) 平台加载并执行 OS Kernel 的代码;
l) OS Kernel 中的 EMM4 获得系统执行控制权, 信任从 EMM3 传递到 EMM4。
信任链建立要求
a) 信任链的建立过程必须以可信度量根 RTM 为起点;
b) 当需要装载并运行一个部件前, 应由 RTM 或者 EMM 对该部件进行完整性度量, 然后再将其加载和运行;
c) TPCM 中 PCR 存储的杂凑值应与系统引导过程中的度量事件和度量顺序相对应;
d) TPCM 中 PCR 存储的杂凑值应与系统引导过程中生成的度量日志相对应;
e) 在每次开机时应重新生成 LSA 中的度量日志和 TPCM 中 PCR 存储的杂凑值。
完整性度量方法
信任链基于可信度量根 RTM 建立, 通过扩展度量模块 EMM 实现信任传递。 RTM 和 EMM 采用杂凑算法对部件代码进行完整性计算, 并存储度量结果, 实现完整性度量。
完整性度量流程:
a) RTM 或者 EMM 使用杂凑算法对“部件i”的二进制代码进行计算;
b) RTM 或者 EMM 生成在第a) 步中对“部件i”的计算结果“度量事件i 描述”; 该描述包括杂凑算法的结果, “度量值i”, 以及本次度量事件的上下文信息“度量事件i 上下文”;
c) RTM 或者 EMM 通过接口调用 TPCM, 将“度量值i” 扩展存储到预先定义与部件i 相关的PCR[i]中。扩展(Extend) 存储方式详细规则见 GB/T29829—2013 的5.7.4;
d) RTM 或者 EMM 将“度量事件i 描述”存储于 LSA 中。
完成上述4 个步骤的整个过程为一次完整性度量事件。完整性度量存储:
完整性度量事件日志应存放于系统的 LSA (Log Storage Area)中。
可信平台主板功能接口(Driver 结构)
可信平台主板功能接口包括与底层 TPCM 的接口和与上层应用之间的接口。 在 TPCM 上建立设备驱动层(TPCM Device Driver: TDD) 实现主板可信应用功能对底层 TPCM 的调用。在 TDD 之上, 可建立服务提供层(TPCM Service Provider) 对 TDD 进行再封装, 为上层应用提供更高层次的接口, 简化上层编程实现。
完整性度量
EMM1 度量 Main Block:
EMM2 度量平台启动部件和操作系统加载器 :
平台启动部件包含了能够使平台硬件环境正常运行的基本部件, 包括 BIOS POST 代码、 板载固件代码。PCR[1]平台部件代码度量对象:
PCR[2]平台部件数据配置信息对象
PCR[3]Option ROM 代码度量对象
PCR[4]Option ROM 配置信息度量对象
PCR[5]状态迁移度量对象
度量操作系统装载器Boot Loader
操作系统装载器被调用前, 必须被 Boot ROM 中的 EMM2 度量。度量流程如下:
EMM2 通过调用 TPCM 中的杂凑算法, 对位于外部存储器中的操作系统装载器进行完整性度量。 EMM2 通过 TPCM 厂商提供的驱动程序访问 TPCM 的密码运算功能, 该驱动程序应由 TPCM 制造厂商提供。位于外部存储器内部的操作系统装载器是操作系统启动前的代码, 负责装载、 校验和启动操作系统内核。 操作系统装载器包含了磁盘启动扇区和必要启动文件。 磁盘启动扇区又包含了主引导扇区和其他辅助扇区, 必要启动文件包含了操作系统装载器运行所需要的辅助文件, 对磁盘主引导记录的度量为必须, 对必要启动文件的度量为可选。
EMM3 度量操作系统内核
位于操作系统装载器中的 EMM3 负责对操作系统内核进行度量, 保证操作系统内核程序的完整性。
—操作系统内核代码:
包括操作系统内核程序和运行时监控程序;
度量值扩展到 PCR[14]。
—操作系统核心配置信息和数据:
包括操作系统内核程序和运行时监控程序使用的配置信息和数据;
•度量值扩展到 PCR[15]