本发明的目的在于提供
一种可进行完整性检测的计算机系统和方法,其 基于EFI BIOS,在计算机底层固件运行阶段对操作系统的完整性进行检测。
为实现上述目的而提供的一种可进行完整性检测的计算机系统,包括EFI 存储单元,还包括运行模式单元,其包括一个完整性检测启动控制量,所述 运行模式单元用于:在PEI阶段CPU、
芯片组、
主板的基本初始化完成后, 通过判断该运行模式单元的所述完整性检测启动控制量,决定是否启动完整 性检测启动模式;
所述EFI存储单元包括EFI完整性检测单元,其包括EFI完整性度量值, 所述EFI完整性检测单元(5)用于:在完整性检测启动模式中,对EFI镜像代 码进行完整性检测,生成EFI完整性计算值后,根据度量值与计算值相比较, 确定EFI镜像代码的完整性。
运行模式单元可以存储在
硬件单元中。
所述EFI存储单元中的FV_RECOVERY单元可以是只读代码单元。
所述计算机系统还包括有EFI镜像代码恢复单元,用于当EFI完整性检 测单元对EFI镜像代码进行完整性检测,确定EFI镜像代码为不完整时,调 用所述单元中的EFI镜像恢复代码,恢复EFI镜像代码。
所述的计算机系统还包括操作系统完整性检测单元,用于在启动操作系 统之前强制执行操作系统完整性检测;
所述操作系统完整性检测单元包括可信文件检测单元,用于调用操作系 统完整性检测方法,执行对每个可信文件进行完整性检测,比较判断每个可 信文件代码是否被篡改,依次针对每个文件生成可信文件计算值,对操作系 统文件完整性进行检测;
所述计算机系统还包括可信文件度量值,用于操作系统完整性检测单元 对每个可信文件进行完整性检测,比较判断每个可信文件代码是否被篡改, 依次针对每个文件生成可信文件计算值后,根据可信文件度量值与计算值相 比较,确定单个可信文件的完整性,进而确定操作系统所有可信文件的完整 性。
所述操作系统完整性检测单元还包括磁盘参数数据检测单元,用于读取 磁盘参数数据,检测其磁盘参数数据是否完整,再调用可信文件检测单元进 行单个可信文件完整性检测。
所述计算机系统还包括磁盘参数度量值,用于操作系统完整性检测单元 对操作系统文件所存储的磁盘进行磁盘参数完整性检测,生成磁盘参数完整 性计算值后,所述度量值与计算值相比较,确定该操作系统存储磁盘的完整 性。
计算机系统还包括磁盘参数数据恢复单元,用于当磁盘参数数据检测单 元检测磁盘参数为不完整时,调用该单元中的磁盘参数数据,强制恢复磁盘 数据。
所述计算机系统还包括可信文件列表,用于在磁盘参数数据检测完成后, 查找对比操作系统可信文件名,检测所有可信文件是否都存在,保证操作系 统可信文件的完整性,然后调用可信文件检测单元进行单个可信文件完整性 检测。
计算机系统还包括操作系统可信文件恢复单元,当操作系统完整性检测 单元对操作系统可信文件通过可信文件列表或者可信文件度量值比较,进行 完整性检测后,确定操作系统可信文件不完整或者被篡改时,调用预先保存 的操作系统可信恢复文件,强制恢复该可信文件,恢复完整的操作系统环境。
可信文件度量值,磁盘参数度量值,可信文件列表,EFI镜像代码恢复 单元,磁盘参数数据恢复单元和操作系统可信恢复文件单元,存储在EFI安 全存储部件中,所述EFI安全存储部件为本地安全存储部件,或者外置安全 存储部件,所述的外置安全存储部件为远程安全存储部件时,所述操作系统 可信恢复文件存储在远程安全存储部件中;
所述计算机系统还包括简单网络驱动单元,简单TCP Socket驱动单元, 用于在确定操作系统文件不完整时,调用简单网络驱动单元,简单TCP Socket 驱动单元通过网络连接到远程安全存储部件,将存储在远程安全存储部件中 的操作系统可信恢复文件下载到本地恢复操作系统文件。
计算机系统还包括完整性管理单元,用于设置EFI启动时,是否需要执 行完整性检测启动模式,并可以允许用户根据系统运行的需要定制操作系统 涉及的操作系统可信相关文件,重新生成磁盘参数度量值,可信文件列表, 可信文件度量值。
所述完整性管理单元包括:
安全等级设置单元:用于设置所述计算机系统的启动模式;
完整性预置单元:用于定制操作系统可信文件,重新生成磁盘参数度量 值,可信文件列表,可信文件度量值及操作系统可信文件,当系统再次进行 完整性检测时,依照新的比较基准进行操作系统完整性检测;
EFI完整性预置单元:在用户选择EFI完整性预置管理时,运行EFI完 整性预置单元,生成新的EFI完整性度量值。
本发明还提供一种计算机系统完整性检测的方法,包括EFI完整性检测, 即包括下列步骤:
步骤A:在系统上电运行至PEI阶段,CPU、芯片组、主板的基本初始 化完成后,由运行模式单元决定是否开启完整性检测启动模式,是则执行步 骤B,否则直接按照通常的启动模式开启计算机系统;
步骤B:当以完整性检测启动模式启动EFI BIOS时,由EFI完整性检 测单元计算出EFI完整性计算值;
步骤C:由所述EFI完整性检测单元比较判断当前EFI完整性度量值和 计算值是否相等,如果相等,则说明EFI镜像代码是完整的,执行EFI BIOS 启动后续过程;如果不相等,说明EFI镜像代码不完整,执行后续过程;
步骤D:当EFI镜像代码不完整时,用户选择是否调用EFI镜像文件恢 复单元中的EFI镜像文件恢复代码进行恢复,如果是,则进行EFI镜像代码 恢复,完成EFI完整性检测,执行EFI后续过程;否则停止运行。
所述的计算机系统完整性检测方法,还包括操作系统完整性检测,即还 包括下列步骤:
步骤E:EFI完整性检测完成后,运行DXE阶段的流程,DXE调度操作 系统完整性检测单元加载入内存;
步骤F:进入BDS阶段,如果运行模式单元为完整性检测设置,则调用 步骤E所述的操作系统完整性检测单元;
步骤G:操作系统完整性检测单元中的可信文件检测单元调用操作系统 完整性检测方法,执行对每个可信文件进行完整性检测,比较判断每个可信 文件代码是否被篡改,依次针对每个文件生成可信文件计算值,对操作系统 文件完整性进行检测;
步骤H:根据可信文件度量值与计算值相比较,确定单个可信文件的完 整性,进而确定操作系统所有可信文件的完整性。
所述操作系统完整性检测还可以包括下列步骤:
步骤I:当操作系统可信文件被篡改时,提示用户可以进行操作系统可信 文件恢复,如果用户选择不进行恢复,则停止加载操作系统,如果用户选择 进行恢复后,进行下一步;
步骤J:检测本地操作系统的文件与相应的操作系统可信文件是否相一 致,如果都相一致,加载并运行操作系统;否则,进入下一步;
步骤K:提示用户是否进行恢复,如果用户选择不进行恢复,则停止加 载操作系统,则如果用户选择恢复,则相应操作系统可信文件被复制
覆盖相 应的文件,加载并运行操作系统。
所述步骤G可以包括如下步骤:
步骤G1:操作系统完整性检测单元首先调用磁盘参数数据检测单元,读 取磁盘参数MBR,活动分区,分区表信息,通过散列
算法计算MBR,活动 分区,分区表信息的计算值,并与磁盘参数度量值进行比较,检测磁盘参数 是否完整,然后才调用操作系统完整性检测单元中的可信文件检测单元对单 个可信文件进行完整性检测。
所述步骤G1可以包括如下步骤:
步骤G11:当磁盘参数数据检测单元检测磁盘参数为不完整时,调用磁 盘参数数据恢复单元中的磁盘参数数据,强制恢复磁盘数据。
所述步骤G还可以包括下列步骤:
步骤G2:在磁盘参数数据检测完成后,进行操作系统可信文件列表检测, 查找对比操作系统可信文件名,检测所有可信文件是否都存在,保证操作系 统可信文件的完整性,然后才调用可信文件检测单元进行单个可信文件完整 性检测。
所述步骤G2还可以包括下列步骤:
步骤G21:当操作系统可信文件列表检测到操作系统可信文件不存在时, 强制调用操作系统可信文件恢复单元,恢复该操作系统可信文件。
另外,所述操作系统完整性检测还也可以包括下列步骤:
步骤I:当操作系统文件不完整时,提示用户可以进行操作系统可信文件 恢复,如果用户选择不进行恢复,则停止加载操作系统,如果用户选择进行 恢复后,调用简单网络驱动单元,简单TCP Socket驱动单元连接到远程网络;
步骤J:检测操作系统的文件与相应的操作系统可信文件是否相一致,如 果都相一致,关闭底层网络连接,加载并运行操作系统;否则,进入下一步;
步骤K:提示用户是否进行恢复,如果用户选择不进行恢复,则停止加 载操作系统,则如果用户选择恢复,则远程
服务器上的相应操作系统可信文 件被复制并传送到本地,覆盖相应的文件,然后关闭底层网络连接,加载并 运行操作系统。
所述步骤G可以包括如下步骤:
步骤G1:操作系统完整性检测单元首先调用磁盘参数数据检测单元,读 取磁盘参数MBR,活动分区,分区表信息,通过散列算法计算MBR,活动 分区,分区表信息的计算值,并与磁盘参数度量值进行比较,检测磁盘参数 是否完整,然后才调用操作系统完整性检测单元中的可信文件检测单元对单 个可信文件进行完整性检测。
所述步骤G1可以包括如下步骤:
步骤G11:当磁盘参数数据检测单元检测磁盘参数为不完整时,调用该 单元中的磁盘参数数据,强制恢复磁盘数据。
所述步骤G还可以包括下列步骤:
步骤G2:在磁盘参数数据检测完成后,进行操作系统可信文件列表检测, 查找对比操作系统可信文件名,检测所有可信文件是否都存在,保证操作系 统可信文件的完整性,然后才调用可信文件检测单元进行单个可信文件完整 性检测。
所述步骤G2还可以包括下列步骤:
步骤G21:当操作系统可信文件列表检测到操作系统可信文件不存在时, 提示用户可以进行操作系统可信文件恢复,如果用户选择不进行恢复,则停 止加载操作系统,如果用户选择进行恢复后,调用简单网络驱动单元,简单 TCP Socket驱动单元连接到远程网络;
步骤G22:检测本地操作系统的文件与远程服务器上相应的操作系统可 信文件是否相一致,如果都相一致,关闭底层网络连接,返回重新进行操作 系统可信文件列表检查;否则,进入下一步;
步骤G23:提示用户是否进行恢复,如果用户选择不进行恢复,则停止 加载操作系统,则如果用户选择恢复,则远程服务器上的相应操作系统可信 文件被复制并传送到本地,覆盖相应的文件,然后关闭底层网络连接,返回 重新进行操作系统可信文件列表检查。
所述的计算机系统完整性检测方法,还包括完整性管理配置,其包括如 下步骤:
步骤L:在用户通过了操作系统完整性检测之后,选择是否进入操作系 统完整性管理单元;
步骤M:如果用户不选择进入操作系统完整性管理单元,则直接启动操 作系统;当用户选择进入操作系统完整性管理单元时,显示操作系统完整性 管理界面,用户对操作系统完整性进行管理配置;
所述步骤M包括下列步骤:
步骤M1:当用户选择安全等级管理时,运行安全等级设置单元,设置目 前的计算机系统安全等级;
步骤M2:在用户选择操作系统完整性文件预置管理时,运行操作系统完 整性文件预置单元,用户定制操作系统可信文件。
步骤M3:在用户选择EFI代码完整性预置管理时,运行EFI完整性预置 单元,生成新的EFI完整性度量值。
述步骤M2包括下列步骤:
步骤M21)运行操作系统完整性文件预置单元,提示并由用户选择增加 或者减少操作系统可信文件;
步骤M22)根据用户选择的操作系统可信文件,生成生成磁盘参数度量 值,可信文件列表,可信文件度量值及其涉及的操作系统可信文件;
步骤M23)将生成生成磁盘参数度量值,可信文件列表,可信文件度量 值及其涉及的操作系统可信文件存储到安全存储部件;
步骤M24)返回操作系统完整性管理单元。
本发明的有益效果是:本发明实现了一种在EFI BIOS的计算机底层固件 运行(Pre-boot)阶段进行操作系统完整性检测的系统及方法。它有效的解决 了操作系统启动之前的EFI BIOS层面的操作系统完整性的认证问题,有效保 证安全信任链的一致性和严密性,满足人们使用计算机的安全性需求。有效 突破了在传统BIOS上进行操作系统完整性检测的局限性,解决以前方法的 各种存在缺陷。本发明系统和方法支持功能强大,比较传统BIOS的实现系 统和方法相对简单实用、灵活性更强、支持功能更强大、适用性更强等优点。
附图说明
图1是本发明存储布局示意图;
图2是本发明EFI工作
流程图;
图3是本发明EFI镜像文件完整性检测流程图;
图4是本发明操作系统完整性检测流程图;
图5是本发明的完整性管理界面示意图;
图6是本发明
实施例完整性检测启动过程示意图。
下面结合附图1-6进一步详细说明本发明,本实施例描述了一个在EFI 环境下,使用本发明的技术方案完成完整性检测的计算机系统,以及配合该 计算机系统完整性检测的实现步骤。
首先,为详细描述本发明,下面先说明EFI技术:
本发明将涉及可扩展固件接口(EFI)技术,可扩展固件接口(Extensible Firmware Interface,EFI)是1999年出现的用以取代沿用多年的基本输入输 出系统(BIOS)的新一代接口程序,关于可扩展固件接口的介绍,详见UEFI 论坛关于EFI技术的介绍http://www.UEFI.org。EFI介于硬件设备以及操作系 统(比如Windows或者Linux)之间。与传统的BIOS不同,EFI使用全球最 广泛的高级语言C语言进行编写,其提供了既具有传统BIOS的功能又有优 于传统BIOS的扩展功能,在设计机制和架构上也有别于传统BIOS的实现, 是下一代BIOS接口规范,这就意味着有更多的工程师可以参与EFI的开发 工作,添加许多更有价值的功能。
EFI具备的基本功能为:
硬件平台初始化;
支持启动操作系统;
脱离操作系统的平台管理工具。
EFI的工作模式可以简单归纳为:启动系统,标准固件平台初始化,接 着从加载EFI驱动程序库以及及执行相关程序,在EFI系统启动菜单中选取 所要进入的系统并向EFI提交启动引导代码,正常的话将进入系统,否则将 中止启动服务并返回EFI系统启动菜单。工程师们可以按照不同的需要为EFI 增加新的功能,诸如更加详细实用的诊断功能、自我配置程序、列出系统可 能发生的故障等等。
如图1-6所示,本发明的一种可进行完整性检测的计算机系统,是在EFI BIOS上实现的,其包括硬件和
软件,硬件包括主板,
中央处理器(CPU), 内存,
硬盘及外设。
主板和CPU分别为支持EFI规范的主板和CPU。
如图1、6所示,本发明的计算机系统的EFI存储单元1(EFI Flash ROM Layout)包括FV_RECOVERY单元2、FV_NVRAM单元3、FV_MAIN单元 4。
BIOS ROM存储单元1是主板上用来存储BIOS的
存储器,这种存储单 元类型可以采用多种多样的芯片,如ROM、EPROM、EEPROM、FLASH ROM 等。
FV_RECOVERY单元2、FV_NVRAM单元3、FV_MAIN单元4是在EFI 存储单元1中按存储地址划分的具有不同功能的代码段或者代码卷。
1)FV_RECOVERY单元2存储EFI的SEC和PEI阶段的运行代码单元
SEC(Security)阶段:其用于在计算机系统上电(Power On)开始启动, PEI阶段(PEI foundation)开始之前,检查处理器执行头几行的代码是否可 以执行,同时,它将初始化很小一
块临时内存块供PEI阶段的运行代码单元 执行使用;
PEI(Pre-EFI Initialization)阶段:其用于调用处理器、芯片组、主板初 始化配置例程,进行系统的初步初始化,建立可供DXE阶段运行的最小化的 可运行环境。其中,最小化的可运行环境的功能包括:确定系统的引导路径 (boot path);初始化内存;初始化包含DXE部分代码存储的基本输入输出 的存储文件,以保证DXE文件单元之后的文件可以正确访问。
2)FV_NVRAM单元存放系统变量
EFI需要的一些环境系统变量均可以以变量形式从这个单元读取。
3)FV_MAIN段包括DXE和BDS阶段的运行代码单元
DXE(Driver Execution Environment)阶段:其用于完成系统平台初始化 的主要工作,负责全面初始化CPU、芯片组及系统平台,并提供给启动操作 系统足够服务,保证操作系统在其后的阶段可以运行。在该文件单元中,系 统将加载大量的EFI驱动支持完成上述功能。
BDS(Boot Device Selection)阶段:其用于选择操作系统启动设备,为 启动操作系统做好准备。
如图6所示,本发明是一个基于架构(framework)的EFI计算机系统, 整个EFI的运行流程从
冷启动(Code boot)开始,经历几个主要阶段:SEC 阶段;PEI阶段;DXE阶段;BDS阶段。其后是EFI的一些附加阶段,它包 含了操作系统的启动和运行过程中,EFI与操作系统交互和配合过程:TSL (Transient System Load)阶段允许在系统尚未被操作系统完全接管的情况 下,操作系统装载过程(Os loader)中可以调用的EFI服务;RT(runtime)阶 段提供与操作系统并行运行服务(Runtime服务),以支持操作系统的需求;AL (Afterlife)阶段意味着当操作系统结束执行时,重新进入EFI,继续接管理 运行。
本发明的计算机系统是在通常的启动模式(BootMode)中,增加一种启 动模式(BootMode),为完整性检测启动模式(BOOT_IN_OS_INTEGRITY), 在该计算机系统中,包括:
运行模式单元:包括一个完整性检测启动控制量,该控制量控制是否启 动完整性检测启动模式。
运行模式单元可以存储在硬件单元中,例如:设置一个硬件
开关,该开 关一端接地,另一端联结在计算机主板的I/O控
制模块上,该硬件开关与I/O
控制模块之间的接口可以是:GPIO,串口,并口或USB口,但并不限于此。 从该硬件开关所在的I/O地址读取开关的“开”或“关”的状态,决定计算 机启动方式是否为完整性启动模式。
所述PEI阶段的运行代码单元包括:
EFI完整性检测单元5,用于在CPU(CPU INIT),芯片组(Chipset INIT), 主板(Board INIT)完成初步的初始化后,运行EFI完整性检测单元5,检测 EFI镜像代码完整性。
EFI完整性检测单元5包括EFI完整性度量值,用于在EFI完整性检测 单元5对EFI镜像代码进行完整性检测,生成的EFI完整性计算值后,根据 度量值与计算值相比较,确定EFI镜像代码的完整性。
EFI完整性检测单元5存储在FV_RECOVERY单元中。
较佳地,所述计算机系统EFI存储单元1中的FV_RECOVERY单元2 为只读(ROM)单元。
在系统上电,运行SEC阶段进入PEI阶段,CPU(CPU INIT),芯片组 (Chipset INIT),主板(Board INIT)完成初步的初始化后,根据运行模式单 元,判断其启动模式是否为完整性检测启动模式,如果是则开启完整性检测 启动模式,否则按照正常的启动模式开启计算机系统。
如果启动的是完整性检测启动模式,则运行EFI完整性检测单元5,对 EFI镜像代码进行完整性检测,生成的EFI完整性计算值,根据度量值与计 算值相比较,确定EFI镜像代码的完整性。
在本发明的计算机系统中,还包括有EFI镜像代码(Image)恢复单元8, 当EFI完整性检测单元5对EFI镜像代码进行完整性检测以后,生成的EFI 完整性计算值,根据度量值与计算值相比较,确定EFI镜像代码为不完整时, 调用上述恢复单元中的EFI代码,恢复EFI镜像(Image)代码。
在本发明的EFI计算机系统中,还包括操作系统完整性检测:
在完整性检测启动模式中,在EFI完整性检测单元5完成对EFI完整性 检测后,进入DXE(Driver execution environment)、BDS(Boot Device Selection) 阶段时,通过操作系统完整性检测单元6(module)检测操作系统完整性, 然后再启动操作系统。
操作系统完整性检测单元6,用于在启动操作系统之前执行操作系统完 整性检测,其包括磁盘参数数据检测单元,用于读取磁盘参数数据,如磁盘 主启动记录(Master Boot Record,MBR),活动分区,分区表等,并检测 这些磁盘参数是否完整,如通过散列算法(HASH算法)计算MBR,活动分 区、分区表的计算值,与磁盘参数度量值进行比较,检测其磁盘参数数据是 否完整。
所述的磁盘参数度量值10是预先设定在计算机系统中的,用于该单元检 测磁盘参数后的计算值相比较,并判断磁盘参数是否完整。
本实施例中的计算机系统还包括操作系统可信文件列表11,用于查找对 比操作系统可信文件名,检测所有的操作系统可信文件是否都存在。
操作系统可信文件是保持操作系统完整性的一系列不可被篡改的多个文 件。当发现其中某个文件被篡改或不完整时,可以从预先存储的
位置上调出 保存的正确文件(操作系统可信恢复文件),然后进行恢复。
操作系统完整性检测单元6还包括可信文件检测单元,用于调用操作系 统完整性检测方法,执行对每个可信文件进行完整性检测,比较判断每个可 信文件代码是否被篡改,依次针对每个文件生成可信文件计算值,完成度量 值的比较,用于对操作系统文件完整性进行检测。
操作系统完整性检测方法可以是计算操作系统文件代码完整性的各种方 法,本实施例中为散列算法(HASH算法),如果确定操作系统n个核心文 件为操作系统的可信文件,当这n个文件(操作系统可信文件)中有一个发 生改变,就意味着操作系统不再完整,散列算法为每一个文件计算出一个 (hash)值,每个文件记录一个Hash值,逐个进行比较,这n个文件任何一 个Hash值发生改变,都意味着操作系统完整性被破坏。
所述的操作系统完整性检测方法是可以替换的,其方法可以很复杂,也 可以很简单,因此此处不限定其实际的实施方法。
所述计算机系统还包括可信文件度量值,用于操作系统完整性检测单元 对每个可信文件进行完整性检测,比较判断每个可信文件代码是否被篡改, 依次针对每个文件生成可信文件计算值后,根据度量值与计算值相比较,确 定单个可信文件的完整性,进而确定操作系统所有可信文件的完整性。
如图6所示,系统在启动操作系统之前执行操作系统完整性检测,即EFI 完整性检测以后,DXE阶段,执行引导服务(Boot Services)、运行服务(Runtime Service),进入DXE调度(DXE Dispatcher),在这一期间,将加载设备 (Devices)、总线(Bus)或者串口设备驱动(Serial driver),包括操作系统 完整性检测驱动,进入BDS阶段后,如果启动模式为操作系统完整性检测模 式,则将调用操作系统完整性检测单元6,执行操作系统完整性检测。
操作系统完整性检测单元6首先调用磁盘参数数据检测单元,读取磁盘 参数MBR,活动分区,分区表信息,通过散列算法计算MBR,活动分区, 分区表信息的计算值,并与磁盘参数度量值10进行比较,检测磁盘参数是否 完整;
然后,进行操作系统可信文件列表11检测,检查可信文件是否均存在;
最后,可信文件检测单元调用操作系统完整性检测方法,执行对每个可 信文件进行完整性检测,比较判断每个可信文件代码是否被篡改,依次针对 每个文件生成可信文件计算值,对操作系统文件完整性进行检测;根据可信 文件度量值12与计算值相比较,确定单个可信文件的完整性,进而确定操作 系统所有可信文件的完整性。
操作系统完整性检测单元中的代码都是以驱动形式存储在EFI代码单元 中的,EFI BIOS在启动过程中,以驱动的形式调用操作系统完整性检测单元。
本发明的完整性检测启动模式中,在DXE,BDS阶段,包含的DXE阶 段运行代码单元包含有:简单网络驱动单元(Simple Network Driver),简单TCP Socket驱动单元(Simple Tcp Socket Driver),这些单元在BDS阶段中被调用 配合支持操作系统完整性检测功能。
在本发明的计算机系统中,还包括:
磁盘参数数据恢复单元7:该单元中的磁盘参数包括但不限于MBR、活 动分区、分区表等,当磁盘参数数据检测单元检测磁盘参数为不完整时,调 用该单元中的磁盘参数数据,强制恢复磁盘数据。
操作系统可信文件恢复单元9:该单元中的操作系统可信文件可以包括 但不限于:操作系统
内核文件,关键可信数据文件等。操作系统可信文件的 可根据系统运行的需要以及用户的需要定制。当操作系统完整性检测单元对 操作系统文件完整性进行检测以后,根据度量值与计算值相比较,确定操作 系统文件不完整时,调用所述的操作系统可信文件恢复单元9中的操作系统 可信文件,恢复操作系统文件。
所述的可信文件度量值12,磁盘参数度量值10,可信文件列表11,EFI 镜像代码(Image)恢复单元8,磁盘参数数据恢复单元7以及操作系统可信 文件恢复单元9,可以存储在EFI安全存储部件中。
EFI安全存储部件为本地安全存储部件,或者外置安全存储部件,其可 以是任何通过
系统总线、USB、无线网络、有线网络连接的任何安全存储部 件,包括具有安全保护功能的硬盘,如具有HPA(Host Protected Area)的硬 盘,或者是具有访问控制功能的flash存储器,或者是通过USB接口连接地 具有访问控制功能的大容量USB安全存储部件。
较佳地,所述外置安全存储部件为远程安全存储部件,操作系统可信文 件恢复单元9存储在远程安全存储部件中;可信文件度量值12,磁盘参数度 量值10,可信文件列表11,EFI镜像代码(Image)恢复单元8,磁盘参数数 据恢复单元7存储在本地安全存储部件中。在确定操作系统文件不完整时, 调用简单网络驱动单元,简单TCP Socket驱动单元通过网络连接到远程安全 存储部件,下载该单元中的操作系统可信文件到本地恢复操作系统文件。
由于EFI直接支持文件读写功能,所述EFI镜像文件(Image)及操作系 统可信文件等文件均可以以通用文件格式存储在安全存储部件中,利用EFI 文件访问接口进行访问,比较在传统BIOS上实现时需要增加一系列的文件 系统访问接口,其实现方式更为简单易行,扩展性好。
本发明的计算机系统中,还可以包括完整性管理单元,其功能是设置EFI BIOS启动时,是否需要执行完整性检测启动模式,并可以允许用户根据系统 运行的需要定制操作系统涉及的操作系统可信相关文件,重新生成操作系统 完整性度量值。用户可以在该管理单元中实现灵活的完整性检测设置管理功 能。该管理单元包括下列单元:
安全等级设置单元:当用户设置目前的BIOS安全等级为“高安全等级” 时,则在EFI BIOS启动过程中,必须执行完整性检测启动模式,通过EFI 完整性检测和操作系统完整性检测全过程才能加载运行操作系统;如果设置 为低安全等级,则意味着安全级别不高,用户不需要执行完整性检测。
操作系统完整性文件预置单元:用户根据系统运行的需要以及用户的需 要定制其涉及的可信相关文件,用户可以从些单元重新生成生成磁盘参数度 量值10,可信文件列表11,可信文件度量值12,及其涉及的可信相关文件, 当系统再次进行完整性检测时,将依照新生成的比较基准进行操作系统完整 性检测。
EFI完整性预置单元:在用户选择EFI完整性预置管理时,运行EFI完 整性预置单元,生成新的EFI完整性度量值。
较佳地,系统设置只有超级用户才可以进入完整性管理单元,进行涉及 安全等级设置及文件预置功能。
本发明预先在安全存储部件中存储磁盘参数度量值10、可信文件列表 11、可信文件度量值12、磁盘参数数据恢复单元7、EFI镜像恢复代码(Image) 单元8、操作系统可信文件恢复单元9,扩展实现可进行完整性检测的EFI 系统架构,其在EFI BIOS启动过程中,先进行EFI完整性检测,然后进行计 算机底层固件运行阶段的操作系统完整性检测,确认将要启动的操作系统后, 才允许引导并加载该操作系统运行。本发明充分保证了操作系统启动之前的 可靠性检测,不依赖于操作系统,只依赖于EFI BIOS的检测链,保证了操作 系统的安全和可信,从而严格保证了操作系统运行环境的可信任性,满足应 用需求,且实现成本低、应用接口可用性强。
下面结合所述的计算机系统详细描述本发明所述的可进行计算机系统完 整性检测的方法步骤:
如图2-6所示,本发明的计算机系统,是在PEI阶段,CPU、芯片组、 主板的基本初始化以后,进行EFI完整性检测,操作系统完整性检测,并可 以在完整性检测过程中,发现EFI文件(Image)代码或者操作系统文件不完 整时,选择是否进行文件恢复,还可以进行操作系统完整性检测管理配置。
EFI完整性检测包括如下步骤:
步骤A:在系统上电,运行SEC阶段,进入到PEI阶段,CPU初始化(CPU INIT),芯片组初始化(Chipset INIT),主板初始化(Board INIT)完成后, 运行运行模式单元,判断完整性检测启动控制量为真或假,如果为真则开启 完整性检测启动模式,否则直接按照通常的启动模式开启计算机系统;
步骤B:当以完整性检测启动模式启动EFI BIOS时,调用EFI完整性检 测单元5以散列算法(Hash算法)计算出EFI完整性计算值;
步骤C:比较判断当前EFI完整性度量值和计算值是否相等,如果相等, 则说明EFI镜像代码是完整的,执行EFI启动后续过程;如果不相等,说明 EFI镜像代码不完整;
步骤D:当EFI镜像代码不完整时,用户选择是否调用EFI镜像代码恢 复单元9中的EFI镜像文件恢复代码进行恢复,如果是,则进行EFI镜像代 码恢复,完成EFI完整性检测,执行EFI后续过程;否则停止运行。
当EFI完整性检测完成后,系统执行操作系统完整性检测:
步骤E:EFI完整性检测完成后,运行DXE阶段的流程,DXE调度操作 系统完整性检测单元6加载入内存;
步骤F:进入BDS阶段,如果运行模式单元为完整性检测设置,则调用 步骤E所述的操作系统完整性检测单元6;
步骤G:操作系统完整性检测单元6中的可信文件检测单元调用操作系 统完整性检测方法,执行对每个可信文件进行完整性检测,比较判断每个可 信文件代码是否被篡改,依次针对每个文件生成可信文件计算值,对操作系 统文件完整性进行检测;
步骤G还包括下列步骤:
步骤G1:操作系统完整性检测单元6首先调用磁盘参数数据检测单元, 读取磁盘参数MBR,活动分区,分区表信息,通过散列算法计算MBR,活 动分区,分区表信息的计算值,并与磁盘参数度量值10进行比较,检测磁盘 参数是否完整;
步骤G2:在磁盘参数数据检测完成后,进行操作系统可信文件列表11 检测,查找对比操作系统可信文件名,检测所有可信文件是否都存在,保证 操作系统可信文件的完整性,然后才调用可信文件检测单元进行单个可信文 件完整性检测。
步骤G1还包括下列步骤:
步骤G11:当磁盘参数数据检测单元检测磁盘参数为不完整时,调用磁 盘参数数据恢复单元7中的磁盘参数数据,强制恢复磁盘数据。
步骤G2还包括下列步骤:
步骤G21:当操作系统可信文件列表11检测到操作系统可信文件不存在 时,提示用户可以进行操作系统可信文件恢复,如果用户选择不进行恢复, 则停止加载操作系统,如果用户选择进行恢复后,调用简单网络驱动单元, 简单TCP Socket驱动单元连接到远程网络;
步骤G22:检测本地操作系统的文件与远程服务器上相应的操作系统可 信文件是否相一致,如果都相一致,关闭底层网络连接,返回重新进行操作 系统可信文件列表11检查;否则,进入下一步;
步骤G23:提示用户是否进行恢复,如果用户选择不进行恢复,则停止 加载操作系统,则如果用户选择恢复,则远程服务器上的相应操作系统可信 文件被复制并传送到本地,覆盖相应的文件,然后关闭底层网络连接,返回 重新进行操作系统可信文件列表11检查。
步骤H:根据可信文件度量值与计算值相比较,确定单个可信文件的完 整性,进而确定操作系统所有可信文件的完整性;
步骤I:当操作系统文件不完整时,提示用户可以进行操作系统可信文件 恢复,如果用户选择不进行恢复,则停止加载操作系统,如果用户选择进行 恢复后,调用简单网络驱动单元,简单TCP Socket驱动单元连接到远程网络;
步骤J:检测本地操作系统的文件与远程服务器上相应的操作系统可信文 件是否相一致,如果都相一致,关闭底层网络连接,加载并运行操作系统; 否则,进入下一步;
步骤K:提示用户是否进行恢复,如果用户选择不进行恢复,则停止加 载操作系统,则如果用户选择恢复,则远程服务器上的相应操作系统可信文 件被复制并传送到本地,覆盖相应的文件,然后关闭底层网络连接,加载并 运行操作系统。
在用户通过操作系统完整性检测之后,可以进行系统安全配置设置,包 括如下步骤:
步骤L:在用户通过了操作系统完整性检测之后,可以通过按下特定功 能键选择是否进入操作系统完整性管理单元;
步骤M:如果用户不选择进入操作系统完整性管理单元,则直接启动操 作系统;当用户选择进入操作系统完整性管理单元时,显示操作系统完整性 管理界面,用户对操作系统完整性进行管理配置;
步骤M1:当用户选择安全等级管理时,运行安全等级设置单元,在该管 理单元中实现灵活的操作系统完整性管理功能,可以让用户设置目前的计算 机系统安全等级,如果设置为高安全等级,则在EFI BIOS启动过程中,必须 通过完整性检测全过程才能加载并运行操作系统;如果设置为低安全等级, 则不执行操作系统完整性检测。
步骤M2:在用户选择操作系统完整性文件预置管理时,运行操作系统完 整性文件预置单元,允许用户根据系统运行的需要以及用户的需要定制其涉 及的操作系统可信文件:
步骤M21:运行操作系统完整性文件预置单元,提示并由用户选择增加 或者减少操作系统可信文件;
步骤M22:根据用户选择的操作系统可信文件,生成生成磁盘参数度量 值,可信文件列表,可信文件度量值及其涉及的操作系统可信文件;
步骤M23:将生成生成磁盘参数度量值,可信文件列表,可信文件度量 值及其涉及的操作系统可信文件存储到安全存储部件;
步骤M24:返回操作系统完整性管理单元。
步骤M3:在用户选择EFI代码完整性预置管理时,运行EFI完整性预置 单元,生成新的EFI完整性度量值。
本发明实现了一种在EFI BIOS启动的计算机底层固件运行阶段 (Pre-boot阶段)进行完整性检测的计算机系统及方法。它有效的解决了操作 系统启动之前的BIOS层面的完整性认证问题,有效保证安全信任链的一致 性和严密性,完全满足前述的背景技术需求;其在完整性检测完毕可以直接 启动操作系统,无需重启(Reset)过程,免去操作系统启动标志位的设计, 并可以获得较好的用户体验,有效解决以前方法的各种存在缺陷;同时,其 支持功能也很强大,比较传统BIOS的实现方法更为简单,效果更好;而且 支持存储在将操作系统可信文件存储在远程安全存储部件,实现远程网络操 作系统完整性检测恢复,进一步扩充可该方法的使用范围,相比于传统BIOS 具有较大技术优势。进一步地,其提供了友好性更好的图形用户安全管理配 置界面,具有更好的易用性和灵活性:利用EFI图形化基础接口,并配合扩 展实现方法,使用户使用统一的图形界面完成操作系统完整性管理配置功能, 技术方案更加灵活易用。
本实施例是为了更好地理解本发明进行的详细的描述,而并不是对本发 明所保护的范围的限定,因此,本领域普通技术人员不脱离本发明的主旨情 况下,未经创造性劳动而对本明所做的改变,是在本发明的保护范围内的。