APP下载

基于扩展ROM的信任根设备设计与实现

2012-05-04鲁青远郝福珍

计算机工程与设计 2012年6期
关键词:完整性校验中断

鲁青远,郝福珍,牛 峰

(华北计算技术研究所,北京100083)

0 引 言

可信计算技术从计算机体系结构、固件和操作系统等方面采取综合措施,意图从根本上提高信息系统的安全性。可信计算的基本思想是:首先在计算机系统中建立一个信任根,再建立一条信任链,从信任根开始,经过硬件平台和操作系统,再到应用,一级测量一级,一级信任一级,从而把这种信任扩展到整个计算机系统[1]。

信任根和信任链是可信计算机系统的基本组成部分。信任根是用来提供密码运算、安全存储、可信报告等服务的芯片,符合可信计算组织(trusted computing group,TCG)规约的信任根称为可信平台模块(trust platform module,TPM);符合国家密码管理局发布的 《可信计算密码支撑平台功能和接口规范》的信任根称为可信计算模块(trusted computing module,TCM)。信任链是信任的传递方式,把信任从信任源点传递到整个计算机系统。在可信计算组织的说明中,信任源点称为核心测量根(core root of trust for measurement,CRTM);信任链是 CRTM->BIOS->OS Loader->OS的一个串行链[2]。

一般有两种实现CRTM的方案,一种是在信任根中实现CRTM功能,另一种是在BIOS中实现CRTM功能。第一种方案将信任根作为系统加电后启动的起始点,所有的可信认证工作都在信任根中实现,该方案需要对现行计算机体系结构进行较大改动。武汉瑞达推出的采用星型信任链模型的可信计算机采用的就是这种方案。第二种方案不必修改现行计算机体系结构,但需要在硬件平台上部署TCM芯片,且BIOS中要有可信认证模块。国内两大TCM芯片供应商——国民技术股份有限公司和北京同方微电子有限公司采用的便是第二种解决方案。

两种方案都要求在计算机硬件上部署信任根芯片,但目前在用的大量桌面计算机,主板上并没有配备TCM芯片。本文提出基于扩展ROM的信任根设备RTD(root of trust device),可以在保护用户现有投资的基础上,以简便、快捷的方式为这类计算平台提供可信安全能力。该方案在计算机上部署一块集成TCM与EEPROM的PCI接口卡,把该EEPROM当作PCI扩展ROM,在其中实现对BIOS和OS Loader的完整性认证功能。

扩展ROM代码可以认为是BIOS代码的一个扩展,因此RTD的CRTM仍然是BIOS的一个组成部分,所以该解决方案属于第二种方案的一种实现。

1 总体设计

1.1 总体概要

RTD由硬件和软件两部分组成。硬件部分是一块PCI卡,如图1所示,主要包括TCM、EEPROM、PCI桥、CPLD等芯片。关键信息产品部件的国产化对于国家信息安全至关重要,故信任根设备采用了国民技术公司的TCM芯片SSX44。EEPROM直接连接在PLX公司的PCI桥芯片9030上。因为TCM芯片的外部接口为LPC,所以通过CPLD中的胶水逻辑实现与PCI桥接芯片的互连。

图1 信任根设备逻辑框架

PCI总线在计算机中应用广泛,这使得信任根设备能够方便地部署,而且PCI的扩展ROM机制为软件部分的实现提供了可能。

软件部分烧写在EEPROM中,作为BIOS的扩展ROM代码,实现对BIOS和OS Loader的完整性认证。

以下我们将就软件部分的设计和具体实现展开讨论。

1.2 软件部分设计

RTD的工作流程如图2所示。系统加电,在BIOS的POST阶段扫描PCI总线,检测到扩展ROM后,会复制扩展ROM中的映像文件到系统内存,执行映像文件的初始化模块,挂钩INT19中断。在POST阶段的最后,当BIOS调用INT19中断启动OS Loader时,可信验证模块被执行。它通过调用可信服务模块,验证BIOS和OS Loader的完整性,验证完毕并进行相应处理后,再将系统控制权重新交BIOS。BIOS启动 OS Loader,在 OS Loader中验证 OS Kernel的完整性,从而构建出计算机启动阶段的信任链。

图2 RTD工作流程

RTD的软件部分固化在EEPROM中,它主要由3个部分组成,初始化模块、可信验证模块及TCM可信服务。

1.2.1 初始化模块

初始化模块是一段按照PCI协议和BIOS启动规范实现的扩展ROM代码。它要保证计算机启动过程中能够被正常加载、执行。

这部分要考虑两个问题,首先是兼容性问题,不同厂商不同版本BIOS的启动过程不尽相同,初始化模块应尽可能支持更多的BIOS;另外进行可信验证时需要访问硬盘以获得所需数据对象(比如OS Loader等),要保证此时BIOS提供的相关中断服务已准备好。

1.2.2 可信验证模块

可信验证模块的主要功能是实现对BIOS和OS Loader的完整性验证,构建系统信任链。完整性验证的过程是调用TCM提供的服务计算BIOS和OS Loader的哈希值,并与预先存储的基准值对比。如果一致,则认为完整性未遭破坏,继续启动系统;不一致,则提醒用户。

该模块的关键是能正确获得BIOS和OS Loader的代码文件。

1.2.3 TCM 可信服务

TCM可信服务是可信验证模块与信任根设备通信的接口。通过该接口,可信验证模块将待验证数据提交给信任根设备,并接收由信任根设备返回的哈希值。由于TCM芯片自身性能的限制,当数据量较大时,使用TCM芯片计算校验值速度很慢,大大增加系统启动时间。该模块采取软硬件相结合的方式加快校验速度,从而缩短系统引导时间。

2 软件部分实现

初始化模块由汇编语言实现,运行在保护模式;可信验证模块和TCM可信服务由C语言实现。

2.1 初始化模块

2.1.1 扩展ROM的映像文件格式

PCI局部总线协议提供了一种机制,供挂载在PCI总线上的设备嵌入特定的初始化代码,这部分代码以映像文件形式存储在扩展ROM(expansion ROM)中。

扩展ROM中的映像文件通常需要包含PCI扩展ROM头标、PCI数据结构和文件映像,如图3所示。扩展ROM头标为位于整个映像文件开始处的两个字节,作为判断是否为ROM文件的标识,必须是0xAA55[3]。

图3 扩展ROM映像文件格式

不同厂商不同版本BIOS的实现不尽相同,比如出于安全方面的考虑,可能会禁止执行某些设备的扩展ROM映像文件。为了增强RTD的兼容性,需要在扩展ROM的头部添加PNP扩展头。包含PNP扩展头的扩展ROM称为PNP扩展ROM。带有PNP扩展ROM的设备可以是PCI设备(称为PCI/PNP扩展ROM)或者ISA设备,这种设备通常被称为PNP卡[4]。PCI/PNP扩展ROM头部格式如表1所示。

2.1.2 扩展ROM代码的加载与执行

BIOS认为 PNP卡是一个IPL(initial program load)设备,IPL设备即操作系统的载体设备,比如floppy drives、CD-ROM drives、hard drives等,一旦检测到IPL设备,会立即执行其扩展ROM中的映像文件[4]。检测和初始化IPL设备是BIOS POST阶段的重要任务。

计算机系统加电后,首先执行BIOS的加电自检代码(power on self test,POST),在此过程中,BIOS遍历PCI总线上的设备,如果这个设备的配置空间中包含扩展ROM基地址寄存器,则BIOS检查扩展ROM的头两个字节是否是0xAA55,如果是,则认为有扩展ROM存在。BIOS在扩展ROM地址空间中通过PCI数据结构中的code Type域查找合适的映像文件(可能存在多种CPU架构的映像),然后把扩展ROM中找到的映像文件拷贝到系统内存,并执行。

表1 PCI/PNP扩展ROM头部格式

2.1.3 扩展ROM对磁盘的访问

RTD在验证OS Loader的完整性时,需要访问磁盘以获得OS Loader文件。通常,系统底层利用INT 13中断服务访问磁盘。然而,BIOS在POST过程中,当PCI/PNP扩展ROM初始化映像文件执行时,INT 13中断服务有可能尚未准备就绪,故这时候不宜通过INT13操作磁盘。

RTD采用挂钩INT19中断的方式来解决这一问题。当BIOS完成必要的初始化工作之后,会调用INT 19中断来启动OS Loader引导操作系统。通过挂钩INT 19中断,能在BIOS调用该中断时,第二次获得系统控制权,而此时所有中断服务安装完毕,可以使用INT 13中断服务方便的访问磁盘。

综上所述,RTD的执行流程如下:BIOS的POST阶段检测到PCI/PNP扩展ROM头标,执行初始化模块,RTD第一次获得系统控制权,挂钩INT 19中断,然后把系统控制权转交还给BIOS;BIOS完成自检工作,调用INT19中断,RTD再次获得系统控制权,它将可信验证模块从ROM拷贝到内存,并跳转到可信验证模块起始处,开始对BIOS和OS Loader进行完整性验证,验证完毕后恢复中断向量表中INT 19中断的原始地址,并调用INT 19中断继续系统引导。

2.2 可信验证模块

可信验证模块分别对BIOS和OS Loader进行完整性验证。

2.2.1 BIOS完整性验证

BIOS完整性验证的目标数据,包括BIOS的代码文件和配置信息。在x86体系架构中,BIOS代码文件存储在EEPROM或Flash ROM中,称为BIOS ROM。除非重新刷新BIOS的代码文件,否则代码文件一般不会改变,也不应该改变。BIOS配置信息保存在CMOS中,主板为其提供电池,以保证存放在里面的数据不丢失。CMOS是主板上的一个RAM,CMOS RAM中存放一些基本系统数据,如实时时钟和系统配置信息,这些配置信息对于系统安全性至关重要,因此也应纳入验证范围。

BIOS ROM直接与CPU相连,CPU能够直接从它获得代码和数据。在地址空间分配上,DRAM被编址在低位,从0x0开始的CPU地址空间。而BIOS ROM通常被编址在CPU地址空间的最高部分,这是因为加电后CPU执行的第一条指令总是在高位,在有32位地址的系统中,物理地址为0xFFFFFFF0;在有36位地址的系统中,为0xFFFFFFFF0[5]。系统加电后,先执行BIOS ROM中的初始化代码,此时BIOS处于实模式,CPU通过设置CS段寄存器,使BIOS能正常在高位ROM空间运行。进行必要的初始化后,BIOS将功能代码解压到1MB以内的DRAM中,然后进行跳转,CS寄存器清0,运行时存储空间转到DRAM中[6]。

CMOS大小通常为128字节或256字节,其中每个字节保存的数据有相应的约定,可以根据约定排除不需要进行完整性校验的部分,比如时钟和重启标志位。时钟每次开机都不一样,如果将时钟也纳入完整性校验范围,则每次启动都会校验失败。重启标志位会导致每次重启校验失败,不能正确反映系统的完整性。通过访问70h~73h这4个I/O端口可以访问CMOS RAM。

2.2.2 OS Loader完整性验证

RTD支持的OS Loader为开源引导器GRUB。选用开放源代码的引导器,便于添加对OS Kernel的可信验证功能。GRUB既能引导Windows系统,又能引导Linux系统,便于OS Loader对这两种OS Kernel的可信验证与加载。OS Loader一般存储在磁盘上,可信验证模块根据GRUB在磁盘上的链式存储结构,通过调用BIOS的INT13中断访问磁盘,并获得目标文件进行验证。

2.3 TCM可信服务

TCM可信服务包括TCM驱动和可信服务两部分。TCM驱动负责与TCM芯片通信,向TCM发送命令和接受数据;可信服务负责与上层模块进行通信,如TCM启动、自检、哈希值计算相关等接口。

RTD采用国民技术的TCM芯片,该芯片采用兼容标准8051指令集的8位CPU内核,计算能力有限。在不计算传输消耗的情况下,采用SM3算法计算哈希值的速率是1Mbps左右,也就是说计算1M字节的数据理论上至少需要8s,启动时间耗时较长。

RTD通过软硬件相结合的二级计算方式可以有效提高哈希值的计算效率,计算过程如图4所示。进行完整性验证时,首先将需要验证的数据输入到软件实现的SHA1算法,得到20字节的校验值,接着将该校验值再送到TCM芯片中利用SM3硬算法进行计算,得到最终的32字节校验值。

另外,安全性方面,由于校验值的计算是在固件层,运行环境相对简单,不会出现软件校验时的计算过程被打断,中间值被拦截篡改等情况,并不会给系统带来新的安全隐患。

图4 二级校验机制

3 实验与分析

RTD的测试主要有两个方面,功能测试和兼容性测试。

首先为功能测试,RTD在系统启动过程中能正常的构建出系统启动过程的信任链,完成BIOS自验证、BIOS对OS Loader的完整性验证以及OS Loader对OS Kernel的完整性验证,报告验证结果,如果验证失败,则提醒用户,用户选择是否启动系统;验证成功正常启动系统,达到预期目标。在整个系统启动过程中,增加的时间消耗在2s以内。

兼容性测试,即测试RTD对于不同厂商不同版本BIOS的兼容性。测试选用了品牌电脑 HP Compaq dc7700(BIOS显示为786E1V01.10)、PCI总线版本为2.0和BIOS为 Award Bios V6.0、PCI总线版本为3.0的计算机中分别进行了部署和测试,能够被正常加载和启动,并完成预期功能。

4 结束语

RTD将可信模块芯片与扩展ROM部署在同一块PCI卡上,以BIOS插件的形式,在扩展ROM中完成对BIOS和OS Loader的完整性验证。这种实现方式在硬件和软件方面进行少量的变动,即可在一台无任何可信软硬件基础的计算机上部署可信模块芯片,并且构建出计算机启动阶段的信任链,为将普通计算机改造为可信计算机提供了新的技术途径。

事实上,RTD采用的硬件部分既可以是PCI卡,也可以是PCIe卡。而且,RTD的软件部分也能够以BIOS模块的形式刷新到BIOS中,从而省去PCI扩展ROM。新一代BIOS规范——统一可扩展固件接口UEFI(unified extensible firmware interface)发展迅猛,基于 UEFI的可信计算技术和RTD值得进一步深入研究。

[1]ZHANG Huanguo,HE Yanxiang,ZHAO Bo,et al.Research and development of the trusted computing of China [J].Communications of the CCF,2010,6(9):8-14(in Chinese).[张焕国,何炎祥,赵波,等.我国可信计算研究与发展 [J].中国计算机学会通讯,2010,6(9):8-14.]

[2]WANG Jiangshao,YU Zong,LI Guang.Study of trusted chain technology of computing trusted [J].Computer Engineering &Design,2005,29(9):2195-2198(in Chinese).[王江少,余综,李光.可信计算之信任链技术研究 [J].计算机工程与设计,2005,29(9):2195-2198.]

[3]PCI-SIG.PCI Firmware specification 3.0 [EB/OL]. [2005-06-20].http://www.pcisig.com/specification/conven-ional/pci_firmware/.

[4]Compaq Computer Corp,phoenix Technologies Ltd,Intel Corp.BIOS boot specs [EB/OL].[1996-01-11].http://www.scs.stanford.edu/nyu/04fa/lab/specsbbs101.

[5]Intel Corp.Intel?64and IA-32Architectures software developer’s manual volume 3a[EB/OL].http://www.intel.com/products/processor/manuals/,2011.

[6]CHEN Wenqin.Bios inside [M].Beijing:Tsinghua University Press,2001(in Chinese).[陈文钦.BIOS研发 技 术 剖 析[M].北京:清华大学出版社,2001.]

[7]UEFI.UEFI specification version 2.3.1 [EB/OL].http://www.uefi.org/specs/,2011.

[8]Trusted computing group.TCG.PC client specific TPM interface specification [EB/OL]. [2005-07-11].https://www.trustedcomputinggroup.org/home/.

[9]SUN Dayong.The applied research in the hard disk protective technology based on PCI bus [D].Hefei:Hefei University of Technology,2009(in Chinese). [孙大勇.基于PCI的硬盘保护技术的应用研究 [D].合肥:合肥工业大学,2009.]

[10]Intel Corp.Intel?64Architectures X2APIC specification [EB/OL].http://www.Intel.com/product-s/proce ssor/manuals/,2008.

[11]Intel Corp.Intel?64and IA-32architectures software developer’s manual volume 3b [EB/OL].http://www.intel.com/products/processor/manuals/,2011.

[12]Trusted Computing Group.TCG.TCG specification architecture overview version 1.4[EB/OL].https://www.trustedcomputinggroup.org/home/,2007.

[13]Paul.Stoffregen.Understanding FAT32filesystem [EB/OL]. [2009-10-20].Http://www.pjrc.com/tech/8051/ide/fat32.html.

[14]SHEN Changxiang,ZHANG Huanguo.Research and development of the trusted computing [J].Science China,2010,40(2):139-166(in Chinese).[沈昌祥,张焕国.可信计算的研究与发展 [J].中国科学,2010,40(2):139-166.]

[15]YIN Yongsheng,HU Yonghua,ZHOU Ganmin.Implementation of PCI expansion ROM mechanism [J].Computer Engineering and Application,2005,41(10):101-103(in Chinese).[尹勇生,胡永华,周干民.PCI扩展ROM机制的实现方法 [J].计算机工程与应用,2005,41(10):101-103.]

猜你喜欢

完整性校验中断
稠油热采水泥环完整性研究
炉温均匀性校验在铸锻企业的应用
跟踪导练(二)(5)
千里移防,卫勤保障不中断
莫断音动听 且惜意传情——论音乐作品“完整性欣赏”的意义
精子DNA完整性损伤的发生机制及诊断治疗
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法
锅炉安全阀在线校验不确定度评定
桩身完整性检测中缺陷的综合判别