专利名称:Efi下可信链建立的一种方法
技术领域:
本发明涉及信息安全可信计算技术领域,特别是指EFI下可信链建立的一种方 法。在EFI (Extensible Firmware Interface :可扩展固件接口 )启动过程中对启动的驱 动、操作系统引导模块以及EFI shell应用命令进行可信验证,确保启动过程中被调度执行 的模块可信性,为后续操作系统的可信启动提供可信支撑。
背景技术:
可信是安全的基础。近年来被高度关注的可信计算平台技术从可信的角度来帮助 提高系统的安全性。可信计算的核心思想是"可信传递",TCG(TrustedComputing Group: 可信计算组织)提出了两种实现可信传递的关键技术,一是在计算平台上引入"可信根", 二是利用可信根来建立可信链。对于PC平台而言,TCG定义了从计算平台加电BIOS(Basic Input/Output System :基本输入输出系统)执行开始,到引导代码的执行,再到操作系统 启动和上层应用程序的执行的一系列过程,信任将通过这个过程一直传递下去,直到整个 计算环境的建立。由此可见,引导过程的安全是计算机系统安全的基点,引导阶段的可信验 证是建立可信链的关键一环。 从IBM于上世纪八十年代初推出了全世界第一台PC机开始,BIOS就成了个人计 算机必备的系统软件。传统上的BIOS经过了长达20多年的时间,基本上没有大的特别的 改进。EFI是Extensible Firmware Interface的縮写,中文意思是可扩展固件接口 。本发 明为克服现有技术的不足之处提出在EFI下可信链建立的一种方法,基于新的EFI情况下, 结合安全U盘的认证和安全功能建立平台信任链是一个需要研究的课题,国内外目前在这 方面的研究很少。
发明内容
本发明的目的在于避免上述现有技术中的不足之处而提供一种EFI下可信链建 立的一种方法。EFI是Intel为了解决BIOS难于扩充的缺陷而推出的一项新技术,作为传 统BIOS的接班人之一,是理论上能够很好地接替并且扩展现有BIOS功能的方案。EFI既保 留了传统BIOS的所有基本功能,同时又针对传统BIOS的不足进行了必要的补充。
本发明的目的可以通过以下措施来达到
EFI下可信链建立的一种方法,具体包括 第一步,通过操作系统下的初始化模块对安全U盘进行初始化,设置需要验证的 各调度文件的完整性校验信息; 第二步,使用TianoCore EDK中的DUET制作EFI启动U盘,使用EFI启动U盘启 动系统;启动过程中,若文件的可信验证通过,则启动系统,否则终止系统的启动过程。
在新的EFI环境下使用安全U盘作为系统的一个可信硬件,根据可信计算理论利 用可信根建立可信链实现系统可信的方法,设计并实现对DXE阶段的所调度执行的驱动文 件、BDS阶段对操作系统引导文件、EFI Shell阶段对各种Shell应用文件进行可信校验,建
3立可信链。
本发明相比现有技术具有如下优点 1.基于EFI进行可信链的建立,是对基于传统BIOS技术可信链建立的有益补充;
2.在操作系统启动前的引导过程中对所调度的关键文件进行完整性校验,若通过 则启动系统,否则终止系统的启动过程,增强了系统的可信性; 3.使用安全U盘作为可信根,增强了系统的实用性和便利性,更符合用户的使用 习惯。
图1是基于EFI的系统启动过程图; 图2是DXE阶段对驱动的调度流程图; 图3是BDS阶段执行的流程图; 图4是EFI Shell阶段shell应用的执行流程图; 图5是本发明的对各调度模块的进行可信验证的流程图。
具体实施例 本发明EFI下可信链建立的一种方法具体包括 第一步,通过操作系统下的初始化模块对安全U盘进行初始化,设置引导过程中 需要验证的调度模块的完整性校验信息; 第二步,使用EFI EDK中的DUET制作EFI启动U盘,使用EFI启动U盘启动系统;
第三步,系统启动过程中,对DXE阶段的DXE驱动,BDS阶段对操作系统引导模块, 以及shell阶段对各种shell应用进行可信验证,如果通过,则启动系统,否则终止系统的 启动过程。 所述可信链建立过程,在新的EFI环境下使用安全U盘作为系统的一个可信硬件,
根据可信计算理论,设计并实现操作系统启动前引导阶段对所调度执行的文件进行可信校
验,建立引导阶段的可信链。 本发明将结合附图作进一步详述 图1,图2,图3,图4,图5显示了本发明工作的原理。 如图1所示,基于EFI的系统引导过程跟基于传统BIOS的引导过程类似,在A点
装载操作系统装载器,然后陆续进行操作系统内核的装载,系统服务的装载以及应用的装 载运行。其中,从EFI启动到操作系统装载器之间又分为SEC, PEI, DXE, BDS阶段,本发明 主要对Al、 A2点进行可信验证。 如图2所示,黑色箭头表示调用关系,DXE阶段装载DXE驱动程序的过程。在以 SEC,PEI,DXE core和DXE dispatcher作为可信根的基础上开始装载各个DXE驱动。这个 阶段的任务就是要保证每一个DXE驱动的可信。 进入DXE core以后,DXE Foundation进行一些初始化工作后把控制权交给DXE Dispatcher,由Dispatcher来装载DXE驱动。Dispatcher通过hoblist搜寻关于驱动的固 件巻,然后通过固件巻中优先文件来顺序搜索drivers。找到一个driver后,打开并且装载 这个文件,即DXE驱动。
4
具体流程是DXE阶段的入口点是Dxemain, Dxemain首先做一些初始化的工作, 完成DXE Foundation阶段需要完成的一系列工作。然后调用函数CoreDispatcher () 寻找并且加载DXE drivers。在CoreDispatcher ()中调用CoreLoadlmage (),接着在 CoreLoadlmage ()中调用CoreLoadlmageCommon (),最后在CoreLoadlmageCommon中实现对 映像文件的加载,通过CoreOpenlmageFile()打开文件。 如图3所示,黑色箭头表示调用关系,白色箭头表示等价关系。BDS阶段的具体执 行过程。当所有DXE驱动都加载完毕后就进入了 BDS阶段,在BDS阶段选择运行的映像文 件,选择完毕后需要通过gBS- > Loadlmage()对所选文件进行装载。 BDS阶段的入口点是BdsEntry(),经过层层调用关系,在UpdateFlieExplorer() 函数中调用BootThisFile()来通过文件启动程序,在BootThisFile ()函数中调用 BdsLibBootViaBootOption()最后调用gBS- > Loadlmage () 。 gBS- > Loadlmage () 同样是通过CoreLoadlmage ()来实现的,接着调用CoreLoadlmageCommon (),在 CoreLoadlmageCommon中调用Core0penlmageFile ()来打开应用禾呈序文件。
如图4所示,黑色箭头表示调用关系,白色箭头表示等价关系。shell环境下对 shell应用的调度过程。如果在BDS阶段进入管理应用程序时选择默认continue或者通过 boot from file选择shell应用程序的映像文件就进入shell应用的调度。该阶段和BDS 阶段选择其他的应用程序执行没有什么区别,同样的会调用gBS- > Loadlmage ()对shell, efi进行装载并且运行。进入shell以后,如果企图执行一个没有装载的shell命令,那么 会先调用gBS- > Loadlmage ()来装载它然后执行。 进入了 shell环境以后,执行过程中首先进入shell的入口,获取敲入的 shell命令,接着调用SEnvExecute (),在SEnvExecute中调用SEnvDoExecute (),在 SEnvDoExecute ()中先判断shell应用程序是否已经被加载,如果已经加载了则直接执行; 如果没有则调用SEnvLoadlmage (),在SEnvLoadlmage ()中调用BS_ > Loadlmage来加载 shell应用程序执行。接下来的过程与DXE和BDS阶段相同。 如图5所示,经过上面的详细分析,DXE阶段对DXE drivers的加载,BDS阶段 对各种EFI应用程序以及操作系统引导模块的加载,shell环境中对shell命令程序的 加载,以及Load命令对驱动程序的加载,最后都通过CoreLoadlmage ()来实现,然后通过 Core0penlmageFile()来打开读入文件,随后经过一些准备工作后由CoreLoadPelmage () 来做对PE文件的分析加载最后执行。 因此,问题都集中在CoreLoadlmage()这个函数中。在Core0penlmage ()函数 之后直接对整个文件做验证。这样,在CoreLoadlmageCommon()的函数中读入文件之后, CoreLoadPEimage ()解析PE文件之前加入验证模块就能实现DXE阶段,BDS阶段和shell 环境以及Load各个阶段对所调度的文件的可信验证。如果通过验证则继续对PE文件进行 分析加载最后执行gBS- > Startlmages(),否则停止加载,终止系统的启动过程。
权利要求
EFI下可信链建立的一种方法,其特征在于,具体包括第一步,通过操作系统下的初始化模块对安全U盘进行初始化,设置需要验证的各调度文件的完整性校验信息;第二步,使用TianoCore EDK中的DUET制作EFI启动U盘,使用EFI启动U盘启动系统;启动过程中,若文件的可信验证通过,则启动系统,否则终止系统的启动过程。
2. 根据权利要求1所述的EFI下可信链建立的一种方法,其特征在于,在新的EFI环境下使用安全U盘作为系统的一个可信硬件,根据可信计算理论利用可信根建立可信链实现系统可信的方法,设计并实现对DXE阶段的所调度执行的驱动文件、BDS阶段对操作系统引导文件、EFI Shell阶段对各种Shell应用文件进行可信校验,建立可信链。
全文摘要
本发明公开了属于信息安全可信计算技术领域的EFI下可信链建立的一种方法。通过操作系统下的初始化模块对安全U盘进行初始化,设置启动过程中需要验证的各模块的完整性校验信息。利用EFI启动U盘对机器进行启动,利用安全U盘对启动过程中的各模块进行可信验证,建立可信链,为后续操作系统的可信启动奠定基础。本发明在操作系统启动前的引导过程中对所调度的关键文件进行完整性校验,增强了系统的可信性,使用安全U盘作为可信根,增强了系统的实用性和便利性,更符合用户的使用习惯。
文档编号G06F9/445GK101719203SQ20091024178
公开日2010年6月2日 申请日期2009年12月7日 优先权日2009年12月7日
发明者刘吉强, 彭双和, 施炎峰, 韩臻 申请人:北京交通大学