一种bios自更新保护系统及方法

文档序号:8258048阅读:641来源:国知局
一种bios自更新保护系统及方法
【技术领域】
[0001]本发明涉及计算机系统领域,具体而言是一种B1S安全更新和防篡改保护的系统和方法。
【背景技术】
[0002]B1S (Basic Input/Output System,基本输入输出系统)是计算机系统中的基础元件,计算机在上电后通过B1S初始化CPU及芯片组,引导操作系统提供用户正常使用。
[0003]计算技术的发展和应用需求导致目前存储B1S系统固件的芯片普遍采用Flash芯片。Flash芯片的使用为B1S系统带来两个突出变化:(I)存储B1S的芯片容量增加;
(2)在操作系统环境下能够以纯软件方式读写B1S。这两个变化一方面便于B1S的在线更新升级;另一方面导致攻击B1S系统的技术逐步成熟,使第三方恶意者向B1S中植入恶意代码、病毒、木马等成为可能,对计算机安全产生威胁。2011年的Mebromi是一个新的针对B1S的rootkit,它感染电脑主板的B1S芯片和硬盘MBR (主引导区),再控制Windows系统文件加载恶意代码,使受害用户无论重装系统、格式化硬盘,甚至换掉硬盘都无法将其彻底清除。
[0004]由于B1S系统处于计算机系统底层,因此B1S系统遭受到上述威胁攻击时,会造成计算机系统的彻底崩溃,或导致计算机系统被恶意者从底层控制。安全B1S系统必须能够防范上述的恶意攻击,阻止攻击者植入B1S芯片中的恶意代码的执行,保障B1S系统自身代码和数据的完整性,保证B1S系统的执行代码只来自可信任的B1S厂商、硬件驱动厂商等。由于不可预知的故障或攻击导致B1S系统部分完整性遭到破坏时,B1S系统必须提供安全有效的检测机制和失败自恢复机制。实施该机制的B1S代码必须受到硬件保护,保证失败自恢复机制自身不会遭到破坏。
[0005]目前已经有一些对B1S进行保护和更新的系统和方法。专利CN101464933B是根据用户在配置界面的选择,实现对B1S防止写入的控制。该方法根据密码及用户是否是管理员权限来限制用户是否可以进入配置界面进行配置。此种方法没有硬件保护,是一种利用FLASH写保护命令操作的软件写保护方法,无法阻止恶意软件自己操作FLASH的写保护命令从而实现对B1S的恶意篡改。专利CN1121012C是利用x86架构平台特有的系统管理中断SMI,实现对FLASH芯片的写保护。这种方法不具有通用性,尤其不能应用于国产的龙芯等处理器平台。专利CN1231787A通过特定的加密协处理器硬件装置对B1S升级进行授权来保护B1S不被非法修改。专利CN101281577B通过特定的可信计算模块实现对B1S代码读写和更新的访问控制,来实现对B1S的保护。这两个专利的硬件设计与实现方法都比较复杂,B1S保护的实现方法都独立于B1S自身代码之外,与本发明的硬件和软件实现方法都有很大区别。专利CN100561923C给出了一种在远程模式下通过网络接口对B1S数据进行更新的方法,通过B1S文件传输模块和存储模块中的加密解密模块保证B1S的数据安全,并由B1S更新控制模块读取刷新标志位判断是否更新。

【发明内容】

[0006]为解决上述问题,针对现有技术中的缺陷,本发明提出了一种利用B1S自身代码和控制模块硬件,实现B1S安全更新和写保护的方法,以达到从底层保护计算机系统安全性的目的。
[0007]一种B1S自更新保护系统,包括:CPU及配套芯片组、FLASH芯片和控制模块。所述CPU及配套芯片组用于执行B1S代码的基本功能、B1S检测与恢复功能及B1S更新保护功能;所述FLASH芯片用于存储系统运行过程中正常执行的B1S代码;所述控制模块,它与FLASH芯片的写保护引脚相连,用于控制数据写入FLASH芯片,实现对存储B1S代码的FLASH芯片的写保护。
[0008]进一步的,所述FLASH芯片中的B1S代码,分成BootBlock和MainBlock两部分,BootBlock中还包括B1S检测单元和B1S恢复单元,前者用于检查B1S的完整性,当B1S的完整性检查失败时,用后者实现对B1S的恢复。MainBlcok中还包含B1S自更新单元和FLASH保护配置单元,分别用于执行正常的B1S更新升级和实现对FLASH芯片写保护的配置,防止用户对FLASH芯片中B1S代码的恶意篡改。
[0009]进一步的,所述控制模块中包括FLASH写保护控制单元、更新寄存器和WO寄存器。FLASH写保护控制单元根据B1S的配置,实现对FLASH芯片的写保护。更新寄存器和WO寄存器分别用于标示更新的状态和FLASH芯片写保护的状态;其中,更新寄存器是非易失性的;W0寄存器是易失性的,且在一次上电过程中,其状态只允许改变一次,且只允许从O改为I。
[0010]进一步的,所述BootBlock代码所在的FLASH部分是被永久写保护,不可改写的;MainBlock所在的FLASH部分由控制模块根据WO寄存器的值来完成对其的写保护控制。
[0011]一种B1S自更新保护方法,其特征在于,B1S自更新步骤至少包括:
[0012]步骤S1:生成待更新B1S镜像;
[0013]步骤S2:设置更新寄存器的状态为I,重启计算机;
[0014]步骤S3:B10S检测单元检测B1S的完整性,如果B1S没有被篡改,则继续向下执行;如果B1S被篡改,则由B1S恢复单元执行对B1S的恢复;
[0015]步骤S4 =B1S自更新单元检测更新寄存器,若其值为1,则检测待更新B1S的合法性,并根据检测结果执行安全更新;
[0016]步骤S5 =B1S的FLASH保护配置单元置WO寄存器为I,控制模块FLASH写保护控制单元根据WO寄存器的状态执行FLASH硬件写保护,使得上层软件不能对FLASH进行写操作;
[0017]步骤S6:执行B1S的其它功能,正常启动OS。
[0018]进一步的,所述待更新B1S镜像的生成步骤包括:
[0019]步骤S1.1:开发编译生成待升级的B1S镜像的纯代码;
[0020]步骤S1.2:利用杂凑算法计算B1S镜像的摘要;
[0021]步骤S1.3:利用私钥对B1S镜像的摘要进行签名;
[0022]步骤S1.4:将B1S镜像、签名和公钥打包,重构成待更新的B1S镜像;
[0023]进一步的,所述步骤S3中检测B1S的完整性的步骤包括:
[0024]步骤S3.1 =FLASH中运行的B1S的完整性检测单元利用自己的公钥对FLASH中运行的B1S的签名进行验签,得到摘要值A ;
[0025]步骤S3.2 =FLASH中运行的B1S的完整性检测单元利用自己的摘要算法对FLASH中运行的B1S的代码进行杂凑运算,得到摘要值B ;
[0026]步骤S3.3:比较摘要值A和B ;
[0027]步骤S3.4:如果A = B,则表明FLASH中运行的B1S MainBlock是合法的,系统继续向下执行;
[0028]步骤S3.5:如果A关B,则表明FLASH中运行的B1S MainBlock是非法的,由B1S恢复单元执行B1S恢复。
[0029]进一步的,所述步骤S4中检测待更新B1S合法性的步骤包括:
[0030]步骤S4.1 =FLASH中运行的B1S自更新单元利用自己的公钥对待更新B1S的签名进行验签,得到摘要值A ;
[0031]步骤S4.2 =FLASH中运行的B1S自更新单元利用自己的摘要算法对待更新B1S的代码进行杂凑运算,得到摘要值B ;
[0032]步骤S4.3:比较摘要值A和B ;
[0033]步骤S4.4:如果A = B,则表明待更新的B1S是合法的,执行B1S安全更新并清除更新寄存器为O ;
[0034]步骤S4.5:如果A古B,则表明待更新的B1S是非法的,报警提示,拒绝更新,并清空更新寄存器为O。
[0035]进一步的,所述B1S BootBlock中还应该包括用于验签的公钥以及进行验签和计算杂凑时用到的算法;B1S MainBlock中还应该包含B1S自身的签名、用于验签的公钥以及进行验签和计算杂凑时用到的算法。
[0036]进一步的,所述验签过程中用到的密钥对由B1S厂商构建,私钥与公钥分别秘密保存,公钥固化到终端B1S中,避免个人构建密钥对将非法B1S文件写入。
[0037]有益效果:
[0038]1、本发明通过B1S的自更新保护方法,保证B1S不被非授权的修改;即使B1S被非授权修改,也可以通过本发明的完整性检测手段检测到非授权修改,并在当B1S被非授权修改或者崩溃时,对其进行恢复,保证系统的正常运行。
[0039]2、本发明综合考虑各种非物理现场的破坏或篡改B1S的潜在威胁,从硬件上控制B1S写操作,并兼具了软件更新的易用性,可以保障B1S更新的安全性和正确性。
【附图说明】
[0040]图1为B1S自更新保护系统硬件架构图
[0041]图2为计算机开机及B1S自更新保护流程图
[0042]图3为B1S镜像签名验签过程图
[0043]图4为待更新的B1S镜像的物理结构图
【具体实施方式】
[0044]下面结合附图并举实施例,对本发明进行详细描述。
[0045]如图1所示,本发明的B1S自更新保护系统包括:CPU及配套芯片组P10、FLASH芯片P20和控制模块P30。PlO,即CPU及配套芯片组,用于执行B1S代码的基本功能、B1S检测与恢复功能及B1S更新保护功能,PlO可以是支持x86、MIPS、SPARC或Alpha等不同指令集类型的处理器架构。P20,即FLASH芯片,用于存储系统运行过程中正常执行的B1S代码。P30,即所述控制模块,它通过GP1等方式,与FLASH芯片的写保护引脚相连,用于控制数据写入FLASH芯片,实现对存储B1S代码的FLASH芯片的写保护。
[0046]P20中的B1S代码,分成BootBlock和MainBlock两部分。BootBlock代码负责初始化最小可运行硬件环境,准备好系统可用内存。BootBlock中还包括B1S检测单元P23和B1S恢复单元P24,P23用于检查B1S的完整性,当B1S的完整性检查失败时,用P24实现对B1S的恢复。MainBlcok用于初始化硬件平台中所有其它硬件,并引导操作系统。MainBlock中还包含B1S自更新单元P21和FLASH保护配置单元P22,P21用于执行正常的B1S更新升级,P22实现对FLASH芯片写保护的配置,防止用户对FLASH芯片中B1S代码的恶意篡改。另外,BootBlock代码所在的FLASH
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1