您好,欢迎访问三七文档
目前对可信计算平台的研究,主要集中在可信计算平台的重要部件TPM上面。嵌入TPM芯片的系统在加电时,TPM首先验证当前底层固件的完整性,如正确则完成正常的系统初始化,然后由底层固件依次验证BIOS和操作系统完整性,如正确则正常运行操作系统,否则停止运行[1-3]。由此我们可以看出,在计算机主板上安装TPM的安全计算机存在下列问题:用户在使用TPM的过程中不可避免的会出现某些故障或失误,如TPM被拔出、TPM芯片烧毁等,现有的TPM1.2规范并没有考虑这些问题。一旦出现这些情况,系统就不能正常启动。TPM使用者就无法恢复出保存在TPM中的秘密信息以及用这些秘密信息加密的硬盘数据。导致现有TPM的使用严重妨碍了易用性的原则。申请(专利)号:200710199230.5——可信平台模块的体系结构及其提供服务的方法,提供了一种基于硬件的解决方案,即通过在现有的TPM芯片的结构基础上,增设专用信息I/O接口模块替代原有的PP引脚来实现可新平台模块内部信息的内置,备份与恢复,但其不足是需要改变现有的TPM芯片的结构,不符合兼容性的原则。文献[4]提出了一种借鉴太行安全BIOS可信体系结构与实现方案,虽然能够保障BIOS安全,但是并未考虑TPM芯片发生故障的情况;文献[5]提出了一种基于BIOS和USB盘实现对PC机的安全访问策略,虽然实现了从计算机启动入口处的安全检查,提高了系统的安全性,但是并未兼容TPM。本文采用基于软件的方法,无需改变现有TPM的架构,改进了文献[4]的BIOS体系结构,借鉴文献[5]的技术,使系统在TPM故障时,可以禁用TPM进行可信测量,并以及通过改变BIOS可执行顺序使计算机能够正常启动,在并能启动过程中,还可以利用USBKEY,实现在BIOS层的身份认证;然后利用保存在TPM里的相关证书和密钥,恢复用户的一些重要信息。0基于BIOS和USBKEY实现对PC机的安全访问0.1太行安全BIOS技术BIOS安全是目前信息安全领域研究的一个热点。BIOS作为固化在主板上ROM芯片中的一段软件代码,主要包括基本硬件驱动与初始化启动及引导部分代码。文献[4]提出的太行可信BIOS由两部分构成:CRTM(CoreRootofTrustforMeasurement)和N-CRTM(Non-CRTM)。CRTM是可信链建立的起点,是被无条件信任的。可信BIOS的CRTM包含4个功能模块:平台初始化模块完成CPU、芯片组、主板、内存、堆栈的初始化工作,建立后续BIOS程序最小化运行环境;可信硬件驱动模块初始化可信硬件设备,提供可信硬件设备调用的协议函数;可信测量引擎为后续可信测量提供消息摘要和非对称加密引擎;可信恢复引擎在N-CRTM完整性遭到破坏时驱动BIOS备份存储设备USBKEY,并从该设备中对可信BIOS的N-CRTM进行可信恢复。进入可信恢复模式后,CRTM阶段的可信恢复引擎负责从USBKEY中读入除CRTM之外的可信BIOS的其他部分的映像,并写回到Flash芯片中。可信恢复的过程同样需要对被加载的BIOS映像进行可信测量,要求操作者提供完整合法的恢复映像。可信BIOS的N-CRTM完成BIOS固件的其他功能,包括对硬件平台的进一步检测和初始化、设备驱动、模块调度、系统管理、板卡上OPROM(OptionROM)固件代码的调用执行,操作系统引导代码等。用于安全/管理的其他BIOS层的应用程序也可在N-CRTM阶段加载执行。N-CRTM包含的代码必须通过可信测量才能够被加载执行。0.2兼容TPM故障的BIOSTPM正常时,以上的太行安全BIOS体系结构可以保障BIOS安全,但是一旦TPM发生故障,此体系结构就不再适用了。尤其是对一些重要应用的政府或军事系统,若攻击者利用了这一严重缺陷,只需要破坏TPM芯片,则通过TPM加密的所有关键数据都将无法恢复,这一攻击也就成了可信系统的一个严重漏洞。因此需要做出一些改进,使系统能兼容TPM故障。要想TPM故障时系统能够正常工作,本文采取的第一步是改进BIOS,即在BIOS中添加一个可执行模块。TPM通过LPC(LowPinCount)接口同主板的南桥芯片组连接。在CRTM的最初阶段对LPC作初始化,读取TPM芯片的VID(VendorID)和DID(DeviceID),确定主板上是否存在TPM,以决定运行过程中是否使用TPM进行可信测量。若检测到TPM存在,则向TPM发出TPM_Startup(ST_CLEAR)和TPM_ContinueSelf-Test命令使TPM进入完全操作状态,使TPM可用于后续的可信测量过程。若在初始化TPM时,收到TPM_NO_RESPONSE[6]信号,即TPM无响应,说明TPM设备可能出现故障。初始化时,TPM的状态不同,返回的值也就不同,且返回值被保存在DL寄存器中。若TPM无响应,返回值为03h[6]。本文拟采取的方案是:在从DL寄存器读取返回值时,进行一个判断,如果返回值VALUE=03h,则自动执行一个预先编译好的程序文件——可执行模块,其作用是关闭TPM的端口,通知系统在以后的运行过程中不使用TPM进行可信度量,并执行一个跳转指令,使BIOS跳转到平台驱动模块继续执行。如果返回值不等于03h,即TPM正常,则禁用ISA模块。可以通过CBROM软件提前把此模块写入到主板的BIOS之中,CBROM是由著名的BIOS设计公司AWARD出品的一款工具软件,其主要的作用是用来编辑、修改、增加、移除BIOS压缩包中的内容。0.3通过USBKEY实现对PC机的安全访问在禁用TPM进行可信度量后,BIOS就可以继续执行其他功能了,但是为了保证系统安全,必须对访问进行控制,本文采取USBKEY结合访问控制模块来实现。BIOS中访问控制模块是嵌入在BIOS中的,它在BIOS启动过程中自动加载运行,访问控制模块读取USBKEY的标志、密钥信息和用户输入的密码,将这些数据作为输入参数送入到MD5算法模块中,将生成的数值与BIOS模块中存储的密钥相比较,若一致系统继续启动,否则系统处于等待状态,由于是在计算机启动入口处进行访问控制的检查,因此任何方法都无法绕开检查。要想使编写的程序在BIOS中运行,必须遵守BIOS的模块格式。BIOS中有一个模块是ISA(IndustrialStandardArchitecture)模块来源于ISA协议,由于ISA协议是属于早期的协议,内容相对简单,BIOS对ISA模块的验证也较为简单,我们可以将程序做成ISA模块挂到BIOS中,这样BIOS启动时,访问控制模块就会启动,而且是先于操作系统之前运行。访问控制模块需要UFI(USBFloppyInterface)驱动的支持才可以对USB盘进行访问,而ISA模块在UFI驱动之前加载,为了解决这个问题采用挂钩19H中断的方法。INT19中断是BIOS程序执行的最后一条指令,之后将执行操作系统的代码。在ISA模块的程序运行时,将自己的中断服务程序挂钩到INT19中断上,当BIOS代码执行完之后,调用INT19中断,就会执行访问控制模块的程序,当访问控制程序执行完之后,恢复INT19中断向量的内容就可以启动操作系统[5]。USBKEY中存储用户密钥和身份信息、TPM相关的密钥以及用于可信恢复的N-CRTM部分的映像。可在系统开启后,利用存储的TPM密钥进行硬盘解密,读取相关信息。1改进的BIOS体系结构根据第一节的描述,我们对文献[4]的体系结构做了相应修改,如图1所示。平台初始化模块可信硬件驱动模块可信测量引擎可信恢复引擎CRTM平台驱动模块引导模块应用功能模块启动选择摸块调度引擎可信BIOS初始化向量BIOS备份存储IPLN-CRTM访问控制模块TPM正常初始化TPM时,若TPM故障,跳转执行可执行模块可执行模块跳转执行执行完后图1什么的BIOS体系结构,可否给这一体系结构起一个名称当TPM正常时,BIOS按左侧的体系结构部分执行。系统开机上电后,CPU初始指向并执行可信BIOS的CRTM包含的指令代码,CRTM执行完后会对N-CRTM的调度引擎进行可信测量。测量成功则执行调度引擎,测量失败说明加载代码不可信(遭到修改或破坏、或来源不可信),则CRTM会启动可信恢复引擎要求用户对BIOS系统进行可信恢复。调度引擎加载后续的N-CRTM的其他模块时,需调用CRTM提供的可信测量引擎提供的加解密协议对其进行可信测量。测量成功则执行下一个模块,否则调用CRTM的可信恢复引擎作可信恢复。可信BIOS执行的最后一个阶段是由可信BIOS引导模块对IPL进行可信测量,成功后进入操作系统引导阶段。当TPM发生故障时,BIOS按右侧体系结构部分执行。平台初始化模块完成CPU、芯片组、主板、内存、堆栈的初始化工作,建立后续BIOS程序最小化运行环境;当系统执行到可信硬件驱动模块即初始化TPM时,因为此时TPM故障,根据1.1节的描述,在系统读返回值03h的同时,我们加载自己编写的可执行模块,关闭TPM端口,然后,执行一个跳转指令,使系统跳转到N-CRTM模块的地址处执行。在调用INT19H时,系统会加载访问控制进行访问控制,成功后进入操作系统引导阶段。否则,若用户连续输入超过三次,强制关机。整个方案的流程图,如图2所示。
本文标题:TPM故障解决方案
链接地址:https://www.777doc.com/doc-2852272 .html