首页> 中国专利> 一种基于基础性的UEFI BIOS固件系统中驱动程序保护的方法

一种基于基础性的UEFI BIOS固件系统中驱动程序保护的方法

摘要

一种基于基础性的UEFI BIOS固件系统中驱动程序保护的方法属于BIOS中固件文件驱动程序保护技术领域,其特征在于,基于现有的UEFI BIOS固件系统中硬盘文件协议栈驱动程序易受外来攻击的现实,基于驱动文件可信度量技术,同时提出了一个具有可信度量基准值储备功能的基础版BMC固件系统和一个既能度量现有UEFI BIOS系统闪存中硬盘文件协议栈驱动程序基准值,又能动态地量测可信启动时从所述固件文件系统中提取的所述驱动程序是否被攻击过的基础版UEFI BIOS固件系统,然后再借助于所述的基准值来判别对应文件协议栈驱动程序的动态度量值,就能判断出所述驱动文件再可信启动前是否被攻击过,从而达到了提前从固件层面对UEFI BIOS系统的块设备文件可信驱动检验的目的。

著录项

  • 公开/公告号CN112800429A

    专利类型发明专利

  • 公开/公告日2021-05-14

    原文格式PDF

  • 申请/专利权人 北京工业大学;

    申请/专利号CN202110121999.5

  • 申请日2021-01-28

  • 分类号G06F21/57(20130101);

  • 代理机构11203 北京思海天达知识产权代理有限公司;

  • 代理人楼艮基

  • 地址 100124 北京市朝阳区平乐园100号

  • 入库时间 2023-06-19 10:58:46

说明书

技术领域:

基础版UEFI BIOS固件系统中保护驱动程序的方法属于UEFI BIOS系统驱动程序安全技术领域。

背景技术:

目前,在计算机应用领域,统一可扩展固件接口UEFI(下同)已经成为了主流基础输入输出系统BIOS(下同)实现方式并逐渐取代了传统BIOS,作为一个越来越成熟的BIOS系统,UEFI环境就包括了对硬盘文件加载和运行的功能,其中包括:在调试关键驱动程序时,可能需要把驱动文件放入硬盘并在UEFI环境中手动加载;操作系统启动需要经过UEFI环境,并在其中加载硬盘中的操作系统引导程序完成启动。在UEFI初始化完成后,可完整使用UEFI提供的系统功能,其中就包括了硬盘中的可扩展固件接口系统分区ESP(下同)分区数据操作。这块UEFI可访问到的硬盘空间上会存储一些UEFI编译过程中重要的可扩展固件接口可执行文件.efi(下同)文件,其中就包括了操作系统启动引导文件 start_kernel.efi这样的关键文件,因此如何在UEFI环境中安全的加载硬盘设备文件就成了关键问题。

因为在UEFI环境下访问硬盘文件,所以这些文件存在通过硬盘被篡改和通过UEFI文件系统被篡改的可能性。现有技术中有针对硬盘文件的硬件攻击方法,通过硬件手段修改硬盘中关键文件的内容起到注入木马程序的效果。还有一种现有技术中针对存放BIOS驱动程序的闪存flash(下同)芯片提出了一种攻击手段,其攻击原理为通过硬件手段和flash中数据存储格式,修改其中的驱动程序内容起到注入木马程序的效果。因为UEFI中访问硬盘文件需要经过UEFI文件系统协议栈,因此通过现有技术手段可修改协议栈相关驱动,从UEFI固件层面达到攻击效果。因此对于BIOS固件层面的块设备文件系统的可信验证是极其具有必要性的。

房强等在“基于固件文件系统的UEFI安全机制研究”一文中通过对UEFI安全威胁研究的分析与总结,提出了基于可信平台模块TPM(下同)的静态度量固件文件系统中驱动程序的方法。该方案以TPM为可信锚点,此信任根可根据如基板管理控制器BMC(下同)这样的底层硬件进行替代和改进;其次对于固件文件系统FFS(下同)中的驱动文件度量为静态度量过程,及在UEFI初始化阶段结束后再进行度量,这样就无法保证初始化过程中的安全性。段晨辉等在“UEFI BIOS安全增强机制及完整性度量的研究“一文中通过对UEFI启动阶段中信任链的设计和底层基于可信计算组织TCG(下同)的可信链构建方案,提出了在UEFI完整启动阶段过程中通过逐个阶段度量后面阶段的内容起到可信启动的效果。但该方案在整个度量过程中需要涉及到驱动加载准备阶段PEI阶段(下同)核心代码、所有PEI模块程序、驱动加载阶段DXE(下同)核心代码、DXE调度器代码、所有DXE驱动程序代码的度量工作,缺少对于特定如硬盘设备文件的固件文件系统的针对性安全验证,并且整个度量过程繁琐耗时,虽然做到了动态度量效果,但具有相当大的局限性,可行性不高。

专利公开号为CN 104573499 B专利名称为“一种基于UEFI的可执行程序文件保护系统和方法”的专利提出了一种通过UEFI固件层面的文件安全存储策略,来保证硬盘文件受到攻击和恶意篡改时可通过BIOS固件中的文件信息进行复原。但是该专利忽略了对于固件硬件平台的攻击可能性,无法保证固件中备份文件的安全性,即文件的硬件安全防护能力并不突出。

专利公开号为CN 110020562 A专利名称为“基于UEFI的硬盘全加密方法及装置”的专利提出了一种通过检测硬盘设备是否安全可信的机制完成硬盘文件的安全加载。但是该方案忽略了通过篡改BIOS固件中文件系统相关驱动达到修改硬盘文件的手段,一旦固件中的文件系统被恶意篡改,在UEFI环境中加载硬盘文件不存在可信而言。

大部分基于UEFI的文件加载方案,没有对固件层面的UEFI文件系统驱动可信度量的过程,无法保证固件层面针对硬盘文件内容的攻击;而且提出的固件驱动的度量局限于静态度量,无法做到真实运行环境中的动态度量。不能有效保证硬盘文件的可信性,不能保证UEFI环境中硬盘文件的安全加载。

发明内容:

本发明实例目的为提供一种基础性的UEFI BIOS固件系统中驱动程序保护的方法,用以解决现有技术中对硬盘文件访问时,UEFI文件系统协议栈驱动程序容易受到BIOS闪存flash硬件的攻击,安全性和实用性不高的缺点。

基础版UEFI BIOS固件系统中保护驱动程序的方法,其特征在于,是一种针对现有的基础版UEFI BIOS固件系统在对硬盘文件访问时防止非法人员借助硬件手段或用现有的UEFI BIOS固件系统的硬件闪存中的数据存储格式来修改所述闪存中的驱动程序,尤其是UEFI文件系统协议栈的驱动程序,而提出的一种保护驱动程序的方法,是在一个由具有可信驱动度量功能,以下简称可信度量功能的基础版UEFI BIOS固件系统和一个起辅助可信度量作用的BMC固件系统彼此连接而成的基础版UEFI BIOS固件系统的驱动程序保护系统,以下简称系统,其中依次按以下步骤实现:

步骤(1),系统构建:

步骤(1.1),构建一个基础版BMC固件系统:

它是把具有辅助可信度量作用的基准值存储模块和BIOS通信模块组合集成到现有的BMC固件系统中而构成的,所述的现有的BMC固件系统包括一个 BMC处理器CPU

所述四种硬盘文件协议栈驱动程序是指用全局标识信息GUID作为各自前缀的:硬盘接口驱动程序AtaatapiPassThruDxe,硬盘分区驱动程序PartitionDxe,硬盘输入输出驱动程序DiskIoDxe,硬盘文件系统驱动程序FileSysDxe,

所述四种硬盘文件驱动程序是在产品出厂时烧入到所述现有的UEFI BIOS 系统闪存中的,各自配有自己的全局标识信息GUID;

步骤(1.2),构建基础版UEFI BIOS固件系统:

这是一个在现有的UEFI BIOS固件系统中集成了一个具有可信度量功能的可信度量模块组合后形成的基础版UEFI BIOS固件系统,其中:

现有的UEFI BIOS固件系统是由UEFI BIOS固件系统处理器CPU

所述可信度量模块组合由基准值存储模块、BMC通信模块、动态可信度量计算模块、驱动程序可信度量值顺序映射模块以及固件文件系统访问模块组成,其中:

动态可信度量值计算模块,在CPU

BMC通信模块,既能把所述动态可信度量值计算模块计算出的对应于四种硬盘文件协议栈驱动程序的四个基准值通过基础版BMC固件系统中的UEFI BIOS通信模块传送到基准值存储模块,也能在CPU

步骤(2),系统初始化:

动态可信度量值计算模块初始化设置由:

BIOS可扩展开发工具集EDKII中地读取固件文件的工具,以便分别获取到四个所述硬盘问及那协议栈驱动程序的特征值,

加解密数据库OpenSSL,以便利用其中的散列函数SHA1把CPU

BMC通信模块,存储有发给BIOS通信模块的所述四种硬盘文件协议栈驱动程序各自的全局标识号GUID-基准值的映射表、统一的可扩展接口IPMI协议、 KCS键盘控制访问模式、发给CPU

BIOS通信模块,设有所述IPMI协议;

驱动程序可信度量值顺序映射模块,设有:可信度量顺序号-全局标识号-硬盘文件协议栈驱动程序名称;

CPU

步骤(3),基础版UEFI BIOS固件系统计算四种所述硬盘文件协议栈驱动程序的可信驱动度量基准值,以下简称基准值,并由BMC通信模块发送到基础版 BMC固件系统中的基准值存储模块,并由CPU

步骤(3.1),CPU

步骤(3.1.2),CPU

步骤(3.1.3),所述动态可信度量值计算模块按步骤(2)中系统初始化过程中提出的基准值计算方法,取四个对应的硬盘文件协议栈驱动程序基准值,再通过 BMC通信模块按所述IPMI协议以KCS键盘控制方式发向基准值存储模块;

步骤(3.2),再可信启动阶段,按步骤(3.1.2)~步骤(3.1.3)中所述的方法计算出固件文件系统中待判断其是否经过攻击的四种所述硬盘文件协议栈驱动程序的动态可信度量值,并把所述动态可信度量值变成可信度量顺序号-全局标识号 GUID-对应的硬盘文件协议栈驱动文件名组成的映射表送往CPU

本发明摒弃了以往如“基于固件文件系统的UEFI安全机制研究”一文中只针对UEFI驱动程序的静态度量方法,重点考虑了在固件系统运行过程中对驱动程序的动态度量过程;此系统相较于专利“一种基于UEFI的可执行程序文件保护系统和方法”和专利“基于UEFI的硬盘全加密方法及装置”,提出了针对硬盘文件在UEFI环境中通过文件系统协议栈加载过程,重点考虑文件系统相关驱动的可信度量;同时底层度量平台选用BMC平台,相较于“UEFI BIOS安全增强机制及完整性度量的研究”一文中使用传统TPM底层平台,提供了UEFI运行环境中与BMC通信的方法。

附图说明:

图1为本发明实例提供的基础版UEFI BIOS固件系统的模块结构图;

图2为本发明实例提供的程序流程图。

具体实施方式:

一种基于基础性UEFI BIOS固件系统中驱动程序保护的方法属于BIOS中固件文件驱动程序保护技术领域,其特征在于,基于现有的UEFI BIOS固件系统中硬盘文件协议栈驱动程序易受外来攻击的现实,基于驱动文件可信度量技术,同时提出了一个具有可信度量基准值储备功能的基础版BMC固件系统和一个既能度量现有UEFI BIOS系统闪存中硬盘文件协议栈驱动程序基准值,又能动态地量测可信启动时从所述固件文件系统中提取的所述驱动程序是否被攻击过的基础版UEFI BIOS固件系统,然后再借助于所述的基准值来判别对应文件协议栈驱动程序的动态度量值,就能判断出所述驱动文件再可信启动前是否被攻击过,从而达到了提前从固件层面对UEFI BIOS系统的块设备文件可信驱动检验的目的。

本发明实例提出了基础性UEFI BIOS固件系统中驱动程序保护的方法,可以有效保证UEFI BIOS完整运行时加载或运行硬盘设备文件过程的安全性。

本发明实例中驱动程序的保护方法是通过基础性UEFI BIOS固件系统中的可信度量功能和基础性BMC固件系统中的辅助可信度量功能实现的,其中BMC 部分完成完整性度量基准值的存储工作,并保证BMC中有与BIOS的通信模块,所述通信模块可完成智能平台管理接口IPMI(下同)指令的解析、完成模块全局标识号GUID(下同)和模块度量基准值的映射和存储、根据UEFI传来的提取基准值指令传回与GUID对应的度量基准值,BMC中的UEFIBIOS通信模块与UEFI中的BMC通信模块通信,完成基准值传入基础性UEFI BIOS固件系统中的基准值缓存模块,并由动态可信度量值计算模块计算四个硬盘文件系统协议栈驱动程序的度量值,并和基准值进行比较,如图1中BMC通信模块与BMC 之间的关系所示,基础版UEFIBIOS中通过IPMI通信协议和键盘控制访问方式 KCS访问模式实现BMC驱动程序。

需要说明的是,UEFI BIOS中协议是设备控制器如硬盘控制器调用驱动功能的接口,并不包括驱动功能函数的具体实现,它只是以指针的方式,对各个环节的DXE驱动加载时驻留在内存的功能函数进行的引用。因此,不存在度量协议的问题,需要进行安全验证的只是DXE驱动代码中功能函数的具体实现。

图1所示为此发明的整体系统结构示意图,其中包括:

驱动文件可信度量顺序映射模块,此模块负责通过固件文件系统FFS从UEFI BIOSflash芯片中加载AtaAtapiPassThruDxe、PartitionDxe、DiskIoDxe、 FileSystemDxe驱动代码得到各个驱动在内存中对应的内存映像Image(下同) 的基地址和Image大小,从而得到各个驱动的数据内容。其中获取flash芯片中数据过程通过调用固件文件系统访问模块完成。并通过BMC通信模块获取基准值,存储于基准值缓存模块中。此模块中通过调用动态可信度量值计算模块计算驱动的SHA1值,并在驱动文件可信度量顺序映射模块中进行对比得到验证结果。

动态可信度量值计算模块,此模块通过在固件编译时加载进去的opensslpkg 包中的安全相关SHA1功能函数,对驱动文件可信度量顺序映射模块中的四个 UEFI文件系统协议栈驱动程序AtaAtapiPassThruDxe、PartitionDxe、DiskIoDxe、 FileSystemDxe的内容进行SHA1值计算,以获取运行过程中的驱动度量值,用以和基础性BMC固件系统中的基准值存储模块中存入的基准值比对。

固件文件系统访问模块,此模块用于调用现有UEFI BIOS固件系统中的固件文件系统模块,为可信度量功能提供一个中间层,用以匹配出所需进行可信度量的硬盘文件系统协议栈驱动程序。其中访问固件中文件数据过程中,此模块封装了UEFI服务提供的访问固件文件系统FFS的功能函数,将文件系统协议栈相关驱动程序加载进UEFI系统内存中。具体调用函数为 MdeModulePkg\Core\Dxe\Dispatcher\Dispatcher.c中的CoreLoadImage()函数,此函数进行了固件中特定驱动程序的加载。LOADED_IMAGE_PRIVATE_DATA数据结构里包含了该驱动的私有信息其中信息Info类型包含了度量此驱动所需的数据。

BMC通信模块,此模块负责实现BMC的UEFI驱动程序,其中通信协议为 IPMI协议,访问模式遵循KCS方式,实现向BMC发送IPMI格式的命令信息,并实现获取BMC返回基准值的函数。从而实现UEFI环境中与BMC设备通信的功能,完成可信度量模块中获取基准值的工作。其中调用传递IPMI协议命令 IpmiSendCommand()函数并通过其中的关键参数命令数据*CommandData作为命令参数,传递给SendDataToBmc()函数,此函数用于向特定BMC端口写入数据。其中用于取回驱动程序基准值的命令号需要通过自定义,需要BIOS端和BMC 端两端配合进行。调用IpmiReceivePacket()函数取回BMC返回的数据,并存储于8位的PacketData指针中,这个数据就是用于度量对比的基准值。

在图1的整体系统结构示意图中,深色模块为此基础性UEFI BIOS固件系统和基础性BMC固件系统的添加模块,白色模块为原有的UEFI BIOS固件系统和原有的BMC固件系统模块内容。此系统主要通过原有UEFI BIOS固件系统和原有BMC固件系统的基础上,向UEFIBIOS和BMC中添加可信度量功能,以达到基础性UEFI BIOS环境中硬盘设备文件安全加载的效果。其中UEFI BIOS 中的可信度量功能内容分为:动态可信度量计算模块、驱动文件可信度量顺序映射模块、BMC通信模块、固件文件系统和硬盘文件系统访问模块。各个模块具体功能如前所述。需要说明的是原有UEFI BIOS固件系统包含了固件文件系统,还包括驱动文件可信度量顺序映射模块中包含的DXE核心代码程序和DXE分派器程序,关于原有的UEFIBIOS固件系统的相关信息可从戴正华编写的《UEFI 原理与编程》和《BIOS到UEFI原理与开发》第七版中获得,具体参照代码为开源实现的符合UEFI标准的EDKII开发工具集。需要详细说明的是,DXE核心代码程序是UEFI启动阶段中DXE阶段,也就是驱动加载阶段的主要运行程序,DXE核心代码通过调用DXE分派器来加载存储于BIOS闪存芯片中的各个系统所需的驱动程序,加载后的驱动程序贮存于原有UEFI BIOS固件系统的内存中。

其中基础性BMC固件系统中的辅助可信度量功能分为:BIOS通信模块和基准值存储模块。当BIOS通信模块收到遵循IPMI协议的命令请求时,通信模块请求CPU

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号