一种国产BMC芯片可信固件的设计方法与流程

文档序号:11865211阅读:2630来源:国知局

本发明涉及可信服务器可信平台控制模块技术领域,具体涉及一种国产BMC芯片可信固件的设计方法。



背景技术:

BMC是基板管理控制器,目前已广泛应用于服务器领域。利用虚拟的键盘、界面、鼠标、电源等为服务器提供远程管理功能。用户利用BMC监视服务器的物理特征,如各部件的温度、电压、风扇工作状态、电源供应以及机箱入侵等。BMC作为服务器中相对独立的管理控制单元本身存在着安全风险,例如被植入恶意代码,此外用户在使用BMC对服务器进行远程管理时,可能因安全配置不当,如未使用专用网络、采用弱身份认证、密码复杂度低等不安全操作,造成运行过程中的安全风险。

随着我国信息技术的发展和芯片制造工艺水平的提高,我国已具备研发、制造国产BMC芯片的能力。国产BMC芯片虽然实现了国产化并且自主可控,但是在应用过程中并不能保证安全和可信,有可能受到固件程序的篡改和完整性破坏。



技术实现要素:

本发明要解决的技术问题是:本发明针对以上问题,提供一种国产BMC芯片可信固件的设计方法,在国产BMC芯片的固件程序中加入可信功能模块,对BMC固件进行加固,在BMC启动运行过程中对各个功能组件进行完整性的度量,确保程序的完整性和没有被植入恶意代码,建立起BMC启动过程的完整信任链,保证了系统平台执行环境的可信,从而有助于提高国产BMC芯片的核心竞争力。

本发明所采用的技术方案为:

一种国产BMC芯片可信固件的设计方法,所述方法在BMC固件的引导层、内核层、中间件和软件层加入可信功能模块,在BMC上电启动过程中对内核程序、应用程序和BIOS关键代码进行完整性度量,确保程序的完整性,从而建立起系统平台的可信执行环境。

BMC芯片的固件程序存储于BMC芯片的非易失性存储区,如Flash中,在BMC上电启动的过程中,固件程序首先由Flash区加载到执行速度较快的SDRAM区,然后开始执行。

所述引导层是BMC固件的 U-boot启动代码,U-boot是BMC上电启动时第一段运行的代码,在U-boot中加入的可信功能模块有度量程序、SM3软算法和度量值存储接口,其中:

a、度量程序:BMC启动时度量程序调用SM3软算法对BMC的Linux内核(Kernel)进行度量;

b、SM3软算法:用C程序实现的国密SM3密码杂凑算法,该算法对输入数据进行擦凑运算,生成一个256位的杂凑值;

c、度量值存储接口:把度量值保存到BMC的安全存储空间,如Flash。

所述内核层Kernel层是经过裁剪的ARM Linux内核,为实现可信计算功能,需要加入IO驱动,所述IO驱动包括实现LPC、SPI、IIC的接口功能,完成硬件接口时序和配置相关的寄存器,使BMC和外部模块正常通信,其中:

a、LPC接口驱动:实现BMC芯片与外部TCM可信密码模块的通信接口,使BMC通过LPC接口可以访问TCM模块;

b、SPI接口驱动:实现BMC芯片与外部BIOS芯片的通信接口,使BMC通过SPI接口可以读取BIOS的Boot Block代码;

c、IIC接口驱动:实现BMC芯片与外部CPLD芯片的通信接口,使BMC通过IIC接口向CPLD发送命令,控制主板的上电时序。

线性预测编码(linear predictive coding,LPC)是一种非常重要的编码方法。SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间。IIC 即Inter-Integrated Circuit(集成电路总线),主要是用来连接整体电路(ICS),是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源,这种方式简化了信号传输总线接口。

所述中间件位于内核层和软件层之间,提供度量程序、软算法、度量值存储接口、可信代理程序BMC控制CPLD的命令接口、各种可信功能API,其中:

a、度量程序:调用国产SM3软算法度量BMC的应用程序;

b、软算法:通过C程序以软算法的形式实现国密SM2、SM3、SM4算法,供软件层调用,实现对重要数据的加解密、数字签名等;

c、度量值存储接口:把度量值保存到BMC的安全存储空间,如Flash;

d、可信代理程序:对外部的TCM可信密码模块进行调度,对BIOS Boot Block进行度量;

e、BMC控制CPLD的命令接口:BMC通过CPLD控制主板的上电时序,即BMC上电时先不给主板的CPU进行加电,当BMC的各模块进行度量确保可信后再通过CPLD控制CPU上电,从而确保运行过程中程序的完整性;

f、可信功能API:包括可信功能开启API、基准值API、度量值API、日志API、特权码API和配置接口,用于为BMC Web界面提供调用接口,实现可信功能。

所述软件层包括BMC Web应用和BMC的应用程序,其中在BMC Web页面中通过调用中间层的API接口实现可信状态的呈现,包括:可信功能的开启、基准值管理、日志呈现、特权启动、白名单管理,其中:

a、可信功能开启模块:该模块通过调用中间件的功能开启API,实现在BMC的Web界面中手动配置可信功能的开启或关闭操作;

b、基准值管理模块:该模块通过调用中间件的基准值API,实现在BMC Web界面中对基准值的读写、更新操作;

c、度量值管理模块:该模块通过调用中间件的度量值API,实现在BMC Web界面中对度量值的读写操作;

d、日志管理模块:该模块通过调用中间件的日志API,实现在BMC Web界面中呈现BMC启动过程中的各模块度量日志;

e、特权启动功能模块:该模块通过调用中间件的特权码API,当BMC启动过程中出现模块不可信的状态时,在BMC Web界面中使用户通过输入特权码进行系统的启动,并提示用户系统进入了不可信的工作状态;

f、白名单模块:该模块通过调用中间件的配置接口,在BMC Web界面中配置白名单,即白名单中的程序、文件列表都是可信的。

本发明的有益效果为:

本发明方法在BMC启动运行过程中对各个功能组件进行完整性的度量,确保程序的完整性和没有被植入恶意代码,建立起BMC启动过程的完整信任链,保证了系统平台执行环境的可信,从而有助于提高国产BMC芯片的核心竞争力。

附图说明

图1为本发明方法操作流程图。

具体实施方式

下面结合说明书附图,根据具体实施方式对本发明进一步说明:

实施例1:

如图1所示,一种国产BMC芯片可信固件的设计方法,所述方法在BMC固件的引导层、内核层、中间件和软件层加入可信功能模块,在BMC上电启动过程中对内核程序、应用程序和BIOS关键代码进行完整性度量,确保程序的完整性,从而建立起系统平台的可信执行环境。

实施例2

在实施例1的基础上,本实施例所述引导层是BMC固件的 U-boot启动代码,U-boot是BMC上电启动时第一段运行的代码,在U-boot中加入的可信功能模块有度量程序、SM3软算法和度量值存储接口,其中:

a、度量程序:BMC启动时度量程序调用SM3软算法对BMC的Linux内核(Kernel)进行度量;

b、SM3软算法:用C程序实现的国密SM3密码杂凑算法,该算法对输入数据进行擦凑运算,生成一个256位的杂凑值;

c、度量值存储接口:把度量值保存到BMC的安全存储空间,如Flash。

BMC启动时U-boot的度量程序调用SM3软算法对BMC Linux Kernel进行度量,得到的度量值与基准值1进行比较,从而对Linux Kernel进行完整性判断,当度量值与基准值1一致时表示Kernel完整,可以进行Kernel的加载;当度量值与基准值1不一致时表示Kernel不完整,受到了破坏已不完整,此时需要进入BMC的Web管理界面进行异常处理步骤的操作。

基准值的确定:BMC第一次上电启动时的度量值作为基准值,即BMC首次启动度量Linux Kernel(内核)程序的度量值作为基准值1,中间件首次度量BMC应用程序的度量值作为基准值2,中间件的可信代理程序首次度量BIOS Boot Block的度量值作为基准值3。基准值1、2、3存储于BMC的非易失存储单元Flash中,是可信任的。

实施例3

在实施例2的基础上,本实施例所述内核层Kernel层是经过裁剪的ARM Linux内核,为实现可信计算功能,需要加入IO驱动,所述IO驱动包括实现LPC、SPI、IIC的接口功能,完成硬件接口时序和配置相关的寄存器,使BMC和外部模块正常通信,其中:

a、LPC接口驱动:实现BMC芯片与外部TCM可信密码模块的通信接口,使BMC通过LPC接口可以访问TCM模块;

b、SPI接口驱动:实现BMC芯片与外部BIOS芯片的通信接口,使BMC通过SPI接口可以读取BIOS的Boot Block代码;

c、IIC接口驱动:实现BMC芯片与外部CPLD芯片的通信接口,使BMC通过IIC接口向CPLD发送命令,控制主板的上电时序。

实施例4

在实施例3的基础上,本实施例所述中间件位于内核层和软件层之间,提供度量程序、软算法、度量值存储接口、可信代理程序BMC控制CPLD的命令接口、各种可信功能API,其中:

a、度量程序:调用国产SM3软算法度量BMC的应用程序进行度量,得到度量值;之后进行可信状态的判断,即度量值与存储在Flash中的基准值2进行比对,当度量值与基准值2一致时表示应用程序的完整性未受到破坏,是可信的;当度量值与基准值2比对不一致时说明应用程序的完整性受到了破坏,此时需要进入到BMC的Web管理界面进行异常处理步骤的操作;

b、软算法:通过C程序以软算法的形式实现国密SM2、SM3、SM4算法,供软件层调用,实现对重要数据的加解密、数字签名等;

c、度量值存储接口:把度量值保存到BMC的安全存储空间,如Flash;

d、可信代理程序:对外部的TCM可信密码模块进行调度,对BIOS Boot Block进行度量,得到度量值;之后进行BIOS可信状态的判断,即度量值与存储在Flash中的基准值3进行比对,当度量值与基准值3一致时表示BIOS的完整性未受到破坏,是可信的;当度量值与基准值3比对不一致时说明BIOS的完整性受到了破坏,此时需要进入到BMC的Web管理界面进行异常处理步骤的操作;

e、BMC控制CPLD的命令接口:该模块是BMC通过CPLD控制主板上电时序的逻辑代码,BMC通过CPLD控制主板的上电时序,即BMC上电时先不给主板的CPU进行加电,当BMC的各模块进行度量确保可信后再通过CPLD控制CPU上电,从而确保运行过程中程序的完整性;

f、可信功能API:包括可信功能开启API、基准值API、度量值API、日志API、特权码API和配置接口,用于为BMC Web界面提供调用接口,实现可信功能。

实施例5

在实施例4的基础上,本实施例所述软件层包括BMC Web应用和BMC的应用程序,其中在BMC Web页面中通过调用中间层的API接口实现可信状态的呈现,包括:可信功能的开启、基准值管理、日志呈现、特权启动、白名单管理等,其中:

a、可信功能开启模块:该模块通过调用中间件的功能开启API,实现在BMC的Web界面中手动配置可信功能的开启或关闭操作;

b、基准值管理模块:该模块通过调用中间件的基准值API,实现在BMC Web界面中对基准值的读写、更新操作;

c、度量值管理模块:该模块通过调用中间件的度量值API,实现在BMC Web界面中对度量值的读写操作;

d、日志管理模块:该模块通过调用中间件的日志API,实现在BMC Web界面中呈现BMC启动过程中的各模块度量日志;

e、特权启动功能模块:该模块通过调用中间件的特权码API,当BMC启动过程中出现模块不可信的状态时,在BMC Web界面中使用户通过输入特权码进行系统的启动,并提示用户系统进入了不可信的工作状态;

f、白名单模块:该模块通过调用中间件的配置接口,在BMC Web界面中配置白名单,即白名单中的程序、文件列表都是可信的。

实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1