安全防护方法、装置、电子设备以及基板控制器芯片与流程
未命名
10-18
阅读:126
评论:0
1.本技术实施例涉及计算机领域,具体而言,涉及一种安全防护方法、装置、电子设备以及基板控制器芯片。背景技术:
::2.随着云计算、大数据、人工智能等技术的飞速发展,服务器作为重要的基础设施,在数字经济中发挥着重要的作用。3.bmc(baseboardmanagementcontroller,基板管理控制器)是服务器的管理系统,也是数据中心管理网络的子节点。bmc可实现服务器的远程控制与维护,可以对服务器进行全面精细的监控,提供丰富和详细的日志,有效提升服务器的管理效率降低运营成本。bmc出现安全隐患会给服务器安全运行带来威胁,也会影响整个数据中心的安全运营。4.为了保护bmc,相关技术中提出了pfr(platformfirmwareresilience,平台固件恢复)技术,目的是用于保护平台资产、检测损坏固件等恶意或错误行为,以及恢复平台固件到到良好状态,该技术使用一块cpld(complexprogramminglogicdevice,复杂可编程逻辑器件)作为核心,通过cpld对bmc的闪存镜像进行安全启动校验、数据管理等功能,实现对整个bmc的安全管理。5.但是,若在已有项目上使用pfr技术,必须改动服务器单板的硬件,包括使用更高级的cpld、修改主板pcb(printedcircuitboard,中文名称为印制电路板)线路等改动,所以无法基于线网设备实施,且成本较高。技术实现要素:6.本技术实施例提供了一种安全防护方法、装置、电子设备以及基板控制器芯片,以至少解决相关技术中对基板控制器进行安全防护时,需要对基板控制器的硬件进行改动,成本较高的问题。7.根据本技术的一个实施例,提供了一种安全防护方法,应用于基板控制器,基板控制器上运行有实时操作系统和非实时操作系统,该方法包括:在基板控制器上电之后,启动基板控制器中的实时操作系统;在实时操作系统启动成功的情况下,通过实时操作系统执行基板控制器的安全启动校验;在安全启动校验通过之后,启动基板控制器中的非实时操作系统;非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线。8.在一个示例性实施例中,基板控制器的闪存中存储有基板控制器启动镜像,基板控制器启动镜像用于安全启动校验,其中,基板控制器启动镜像中包含实时操作系统分区、非实时操作系统分区和固件可信分区。9.在一个示例性实施例中,实时操作系统分区包括实时操作系统镜像区域、第一可信根区域以及实时操作系统签名区域;在启动基板控制器中的实时操作系统之前,该方法还包括:获取基板控制器的芯片中存储的安全启动公钥,并通过安全启动公钥对实时操作系统镜像区域和第一可信根区域计算签名;判断得到的签名与实时操作系统签名区域中的实时操作系统签名是否相同,其中,实时操作系统签名通过安全启动私钥对实时操作系统镜像区域和第一可信根区域加密得到;在得到的签名与实时操作系统签名相同的情况下,启动实时操作系统,在得到的签名与实时操作系统签名不相同的情况下,确定基板控制器启动失败。10.在一个示例性实施例中,固件可信分区中包含第一代码签名区域、第一镜像签名区域、固件可信数据区域以及固件可信签名区域,第一代码签名区域存储有代码签名公钥;通过实时操作系统执行基板控制器的安全启动校验包括:对第一代码签名区域的代码签名公钥进行验证,在代码签名公钥验证失败的情况下,确定基板控制器启动失败;在代码签名公钥验证成功的情况下,通过代码签名公钥对固件可信数据区域和第一镜像签名区域验证签名;在验证签名失败的情况下,确定基板控制器启动失败,在验证签名成功的情况下,通过代码签名公钥验证实时操作系统分区和非实时操作系统分区整体的签名;在实时操作系统分区和非实时操作系统分区整体的签名验证失败的情况下,确定安全启动校验失败,在实时操作系统分区和非实时操作系统分区整体的签名验证成功的情况下,确定安全启动校验成功。11.在一个示例性实施例中,实时操作系统分区中包括第一可信根区域,第一可信根区域存储有根公钥,第一代码签名区域还存储有通过根私钥对代码签名公钥的签名结果,对第一代码签名区域的代码签名公钥进行验证包括:使用根公钥对第一代码签名区域中的代码签名公钥计算签名,并判断得到的签名与第一代码签名区域中存储的签名结果是否相同;在得到的签名与存储的签名结果相同的情况下,确定代码签名公钥验证成功;在得到的数字签名与存储的签名结果相同的情况下,确定代码签名公钥验证失败。12.在一个示例性实施例中,固件可信签名区域存储有通过代码签名私钥对第一镜像签名区域和固件可信数据区域加密得到的固件可信签名,通过代码签名公钥对固件可信数据区域和第一镜像签名区域验证签名包括:通过代码签名公钥对固件可信数据区域和第一镜像签名区域计算签名,并判断得到的签名与固件可信签名区域存储的固件可信签名是否相同;在得到的签名与固件可信签名不相同的情况下,确定验证签名失败;在得到的签名与固件可信签名相同的情况下,确定验证签名成功。13.在一个示例性实施例中,通过代码签名公钥验证实时操作系统分区和非实时操作系统分区整体的签名包括:使用代码签名公钥计算实时操作系统分区和非实时操作系统分区整体的签名,并判断得到的签名与第一镜像签名区域存储的镜像签名是否相同,其中,镜像签名是由代码签名私钥对实时操作系统分区和非实时操作系统分区整体加密得到的;在得到的签名与镜像签名不相同的情况下,确定实时操作系统分区和非实时操作系统分区整体的签名验证失败;在得到的签名与镜像签名相同的情况下,确定实时操作系统分区和非实时操作系统分区整体的签名验证成功。14.在一个示例性实施例中,非实时操作系统分区包括引导程序、内核和应用程序,在一个示例性实施例中,非实时操作系统分区包括引导程序、内核和应用程序,启动基板控制器中的非实时操作系统包括:实时操作系统启动引导程序,引导程序启动内核,内核启动非实时操作系统;在非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线之前,方法还包括:非实时操作系统启动应用程序;在应用程序启动完毕的情况下,非实时操作系统通过与实时操作系统通信的方式对硬件总线执行读写访问操作。15.在一个示例性实施例中,固件可信分区中包含总线命令白名单列表,非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线包括:非实时操作系统将硬件总线信息和读写内容写入共享内存当中,并且触发中断通知实时操作系统;实时操作系统从共享内存中获取硬件总线信息和读写内容,并通过总线命令白名单列表对硬件总线信息进行校验;在硬件总线信息校验通过的情况下,实时操作系统依据硬件总线信息和读写内容访问硬件总线,将访问结果写入共享内存,并触发中断通知非实时操作系统;非实时操作系统从共享内存中获取访问结果。16.在一个示例性实施例中,该方法还包括:在基板控制器接收固件恢复镜像的情况下,从固件恢复镜像中解析得到恢复头区域和恢复数据区域,其中,恢复数据区域包括压缩数据区域以及压缩头区域,压缩数据区域存储有压缩后的原始镜像,压缩头区域存储有压缩信息,恢复头区域存储有对恢复数据区域的签名结果;实时操作系统通过恢复头区域对恢复数据区域进行验证;在恢复数据区域验证成功的情况下,基于压缩信息从恢复数据区域解压出原始镜像,并基于原始镜像进行固件升级。17.在一个示例性实施例中,在待升级的固件为基板控制器固件的情况下、固件恢复镜像为基板控制器恢复镜像的情况下,原始镜像为原始基板控制器镜像,基于原始镜像进行固件升级包括:关闭基板控制器启动镜像所在的闪存区域的访问功能,通过实时操作系统将原始基板控制器镜像写入基板控制器启动镜像所在的闪存区域中,并重启基板控制器。18.在一个示例性实施例中,在待升级的固件为基本输入输出系统固件、固件恢复镜像为基本输入输出系统恢复镜像的情况下,原始镜像为原始基本输入输出系统镜像,基于原始镜像进行固件升级包括:关闭服务器主机,通过实时操作系统将原始基本输入输出系统镜像写入运行基本输入输出系统镜像的闪存区域中,并重启服务器主机。19.在一个示例性实施例中,在待升级的固件为复杂可编程逻辑器件固件、固件恢复镜像为复杂可编程逻辑器件恢复镜像的情况下,原始镜像为原始复杂可编程逻辑器件镜像,基于原始镜像进行固件升级包括:停止复杂可编程逻辑器件固件的使用功能,通过实时操作系统将原始复杂可编程逻辑器件镜像写入运行复杂可编程逻辑器件镜像的闪存区域中,并重启复杂可编程逻辑器件。20.在一个示例性实施例中,在待升级的固件为现场可编程逻辑门阵列固件、固件恢复镜像为现场可编程逻辑门阵列恢复镜像的情况下,原始镜像为原始现场可编程逻辑门阵列镜像,基于原始镜像进行固件升级包括:停止现场可编程逻辑门阵列固件的使用功能,通过实时操作系统将原始现场可编程逻辑门阵列镜像写入运行现场可编程逻辑门阵列镜像的闪存区域中,并重启现场可编程逻辑门阵列。21.在一个示例性实施例中,该方法还包括:在实时操作系统检测到损坏的固件的情况下,实时操作系统从基板控制器的闪存中读取固件恢复镜像,其中,固件恢复镜像包括恢复头区域和恢复数据区域,恢复数据区域包括压缩数据区域以及压缩头区域,压缩数据区域存储有压缩后的原始镜像,压缩头区域存储有压缩信息,恢复头区域存储有对恢复数据区域的签名结果;实时操作系统通过恢复头区域对恢复数据区域进行验证;在恢复数据区域验证成功的情况下,基于压缩信息从恢复数据区域解压出原始镜像,并基于原始镜像进行固件恢复。22.在一个示例性实施例中,恢复头区域包括第二可信根区域、第二代码签名区域以及第二镜像签名区域,第二可信根区域存储有根公钥,实时操作系统对恢复头区域进行验证包括:使用根公钥对第二代码签名区域中的代码签名公钥计算签名,并判断得到的签名与第二代码签名区域中的第一签名结果是否相同,其中,第一签名结果通过根私钥对代码签名公钥进行签名得到;在得到的签名与第一签名结果相同的情况下,使用代码签名公钥对恢复数据区域计算签名,并判断得到的签名与第二镜像签名区域中的第二签名结果是否相同,其中,第二签名结果通过代码签名私钥对恢复数据区域进行签名得到;在得到的签名与第二签名结果相同的情况下,确定恢复数据区域验证成功,在得到的签名与第二签名结果不同的情况下,确定恢复数据区域验证失败。23.根据本技术的另一个实施例,提供了一种安全防护装置,应用于基板控制器,基板控制器上运行有实时操作系统和非实时操作系统,该装置包括:第一启动单元,用于在基板控制器上电之后,启动基板控制器中的实时操作系统;安全启动校验单元,用于在实时操作系统启动成功的情况下,通过实时操作系统执行基板控制器的安全启动校验;第二启动单元,用于在安全启动校验通过之后,启动基板控制器中的非实时操作系统;访问单元,用于非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线。24.根据本技术的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。25.根据本技术的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。26.通过本技术,在基板控制器上电之后,借助实时操作系统启动迅速,轻量、响应及时等特性执行基板控制器的安全启动校验,在安全启动校验通过之后,启动基板控制器中的非实时操作系统,非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线,来保证运行时的硬件总线的安全性,提高服务器系统整体的安全性,因此,可以解决相关技术中对基板控制器进行安全防护时,需要对基板控制器的硬件进行改动,成本较高的问题,进而达到了不需要对基板控制器的硬件进行改动,也不需要增加额外的器件的情况下,可以实现对基板控制器的安全防护的效果。附图说明27.图1是本技术实施例的一种安全防护方法的移动终端的硬件结构框图;28.图2是本实施例的嵌入式系统的示意图;29.图3是本实施例的可选的嵌入式系统的示意图;30.图4是根据本技术实施例的安全防护方法的流程图;31.图5是根据本技术实施例生成基板控制器启动镜像的流程图;32.图6是根据本技术实施例的基板控制器启动镜像的示意图;33.图7是根据本技术实施例的基板控制器的启动阶段的安全防护方法;34.图8是根据本技术实施例的基板控制器的运行阶段的安全防护方法;35.图9是根据本技术实施例的基板控制器镜像区域的示意图;36.图10是根据本技术实施例的固件恢复镜像区域的结构示意图;37.图11是根据本技术实施例的生成固件恢复镜像的流程图;38.图12是根据本技术实施例的固件升级的流程图;39.图13是根据本技术实施例的固件恢复的流程图;40.图14是根据本技术实施例的安全防护装置的结构框图。具体实施方式41.下文中将参考附图并结合实施例来详细说明本技术的实施例。42.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。43.本技术实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本技术实施例的一种安全防护方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102和用于存储数据的存储器104,处理器102可以包括但不限于微处理器(microcontrollerunit,mcu)或可编程逻辑器件(fieldprogrammablegatearray,fpga)等的处理装置,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。44.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本技术实施例中的安全防护方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。45.传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。46.在本实施例中提供了一种嵌入式系统,可以运行于上述移动终端,图2是本实施例的嵌入式系统的示意图,如图2所示,该嵌入式系统可以包括:47.芯片和至少两个操作系统,其中,芯片包括处理器1102、硬件控制器1104、第一总线1106和第二总线1108,其中,第一总线1106的带宽高于第二总线1108带宽,且第一总线1106被配置为多主多从模式,第二总线1108被配置为一主多从模式;至少两个操作系统基于处理器1102运行;至少两个操作系统通过第一总线1106进行通信;至少两个操作系统通过第二总线1108实现对硬件控制器的控制。48.其中,上述芯片可以是bmc芯片;上述处理器可以是多核处理器,上述硬件控制器可以用于控制连接到对应的对外接口的外部设备。49.bmc芯片通过第一总线与第二总线实现片内arm核、存储单元及控制器硬件资源间的互连。arm核心与各控制器通过第二总线互连,实现核心与各控制器间的交互。同时,arm核心间连接至第一总线(比如:可以通过axi(advancedextensibleinterface,高级可扩展接口)桥(bridge)连接),核心间的通信通过第一总线实现。50.上述第一总线被配置为多主多从模式,其可以是处理器的多个处理器内核之间进行通信所使用的总线,例如,ahb(advancedhighperformancebus,高级高性能总线),上述第二总线被配置为一主多从模式,其可以是处理器对硬件控制器之间控制所使用的总线,例如,apb(advancedperipheralbus,外围总线),第一总线的带宽高于第二总线带宽。51.在一个示例性实施例中,ahb被配置为多主(master)多从(slave)模式,master会首先向仲裁发送发文请求,仲裁决定合适让master获取总线访问的权限,master获取权限之后会将数据与控制信号发送到仲裁器,仲裁器通过地址解析判断对应的slave通路,然后将请求发送到对应的目的端。同样响应的数据会通过decoder解析,然后返回给对应的master。通过这种多路复用的机制实现多对多的访问。52.在一个示例性实施例中,apb被配置为一主多从模式,apb挂在ahb总线系统下,通过ahb-apbbridge将事务在ahb总线系统之间进行转化,此时bridgre即为apb的master,其他的外围设备均为slave。数据请求只能由master发向slave,slave收到请求后返回相应的响应数据给master,此过程可以实现一对多的访问,且访问不涉及ahb总线中的仲裁和decoder解析操作。53.嵌入式系统可以包括至少两个操作系统,至少两个操作系统基于处理器运行,而处理器的处理资源被动态分配给至少两个操作系统,处理器的处理资源包括处理器核心,至少两个操作系统通过第一总线进行通信,至少两个操作系统通过第二总线实现对硬件控制器的控制。54.第一操作系统可以是具有明确固定的时间约束的操作系统,所有处理过程(任务调度)需要在固定的时间约束内完成,否则系统会出错,其可以是实时操作系统(realtimeoperatingsystem,简称rtos,是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点),例如,freertos、rtlinux等,还可以是其他嵌入式系统中的实时操作系统。第二操作系统不具备该特征,第二操作系统一般采用公平任务调度算法,线程/进程数量增加时,就需要分享cpu时间,任务调试具有不确定性,可称为非实时操作系统,例如,contiki、helios、linux(全称gnu/linux,是一套可自由传播的类unix操作系统)等,还可以是其他嵌入式系统中的非实时操作系统,其中,linux系统是一个基于posix(portableoperatingsysteminterface,可移植操作系统接口)的多用户、多任务、支持多线程和多cpu的操作系统。55.在一个示例性实施例中,硬件控制器可以包括一种或多种,可以包括但不限于以下至少之一的芯片外设对应的控制器:i2c,usb(universalserialbus,通用串行总线),uart(universalasynchronousreceiver/transmitter,通用异步收发传输器),adc(analogtodigitalconverter,模拟数字转换器),jtag(jointtestactiongroup,联合测试工作组),rtc(real_timeclock,实时时钟),gpio(generalpurposeinput/output,通用输入输出),wdt(watchdogtimer,看门狗),虚拟uart(virtualuart),超级i/o(superi/o),sgpio(serialgeneralpurposeinput/output,串行通用输入输出),pwm(pulsewidthmodulation,脉冲宽度调制),fantach(风扇调速),timer(时钟),peci(platformenvironmentcontrolinterface,平台环境式控制接口),邮箱(mailbox),还可以包括其他类型的控制器。对外接口可以包括一种或多种,可以包括但不限于与上述任一控制器对应的对外接口。56.通过上述嵌入式系统,第一操作系统和第二操作系统基于处理器运行,并通过不同功能的总线实现操作系统间的通信和硬件控制器的控制。由于第一操作系统和第二操作系统均是基于同一个处理器运行,避免了硬件器件的增加和部署,降低了系统成本,并且合理利用处理器资源支持系统之间的运行,因此,可以解决操作系统的运行效率较低的技术问题,达到了提高操作系统的运行效率的技术效果。57.根据本技术实施例的另一个方面,还提供了一种嵌入式系统,上述嵌入式系统可以运行于上述bmc芯片上,图3是本实施例的可选的嵌入式系统的示意图,如图3所示,嵌入式系统可以包括:58.实时操作系统和非实时操作系统,实时操作系统和非实时操作系统运行于处理器上,实时操作系统的响应速度高于非实时操作系统;实时操作系统和非实时操作系统可以与前述实施例中类似,需要说明的是,嵌入式系统运行的过程中,可以先启动操作系统,然后不同的操作系统进行业务数据的交互。59.在一个示例性实施例中,实时操作系统和非实时操作系统可以但不限于先后启动,实时操作系统可以但不限于比非实时操作系统启动更快,实时操作系统也可以但不限于比非实时操作系统启动所需的条件更简单,在实时操作系统先启动后可以运行能够满足非实时操作系统启动所需的条件,或者能够加快非实时操作系统启动的业务,从而使得多系统能够更加高效快速地启动并运行业务。60.可选地,在本实施例中,实时操作系统可以但不限于由实时操作系统的引导程序引导启动,非实时操作系统可以但不限于由非实时操作系统的引导程序引导启动。或者,二者可以由同一个引导程序先后引导启动。61.在一个示例性实施例中,可以但不限于采用以下方式引导所述实时操作系统启动:所述芯片启动上电,通过所述处理器唤醒所述处理器中为所述实时操作系统分配的第一处理器核心;通过所述第一处理器核心执行所述实时操作系统的引导程序引导所述实时操作系统启动。62.比如:在服务器系统的安全防护场景下,引导实时操作系统启动后,可以由实时操作系统进行基板控制器启动阶段的安全校验,在启动阶段的安全校验成功的情况下,再启动非实时操作系统,从而提高系统的安全性。63.在一个示例性实施例中,交互的过程可以但不限于采用存储空间和中断请求配合传输的方式来实现,操作系统之间通过存储空间来传递数据,通过中断请求来进行相互之间指令的通知。可选地,在本实施例中,操作系统之间交互的业务数据可以但不限于是操作系统运行操作业务过程中任何需要在系统间进行传输的数据。比如:业务的过程数据,业务的结果数据等等。64.比如:在服务器系统的安全防护场景下,非实时操作系统将硬件总线信息和读写内容存储至处理器上的存储空间,向实时操作系统发送中断请求,其中,中断请求用于请求实时操作系统从存储空间读取硬件总线信息和读写内容以访问硬件总线,实时操作系统用于响应中断请求从存储空间读取硬件总线信息和读写内容,并在硬件总线信息校验通过的情况下,访问硬件总线。65.可选地,在本实施例中,实时操作系统访问硬件总线得到访问结果之后,将访问结果存储在处理器上的存储空间中,通过中断请求通知非实时操作系统,由非实时操作系统从存储空间中读取出访问结果,从而实现对硬件总线的访问。66.比如,可以通过12c(inter-integratedcircuit)总线访问设备,i2c总线是一种简单、双向二线制同步串行总线,只需要两根线即可在连接于总线上的器件之间传送信息;再比如,可以通过spi(serialperipheralinterface,串行外设接口)总线访问闪存,spi总线是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为pcb的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议。67.可选地,在本实施例中,处理器上的存储空间中可以但不限于为操作系统之间的交互过程配置专用的存储位置,可以称为共享内存。实时操作系统所对应的共享内存的信息(比如:存储地址)可以携带在用于请求非实时操作系统从存储空间读取业务数据的中断请求中,非实时操作系统响应中断请求到其指示的共享内存上读取业务数据。68.在本实施例中,各个中断请求可以但不限于通过软件协议的方式在系统间进行传输,或者也可以通过硬件模块进行传递。以硬件模块mailbox的形式传输中断请求为例,实时操作系统和非实时操作系统之间可以建立mailbox通道,业务数据通过存储空间读写,中断请求通过mailbox通道传输。69.通过本实施例,在服务器系统的安全防护场景下,通过本实施例的嵌入式系统可以实现固件安全启动,固件安全运行。其中,固件安全启动是指,在系统启动阶段,先运行实时操作系统,利用实时操作系统启动迅速,轻量、响应及时等特性做系统启动阶段的安全校验,安全校验通过之后,再启动非实时操作系统,当非实时操作系统启动完成,进入系统正常运行阶段。固件安全运行是指,在正常运行阶段,非实时操作系统通过与实时操作系统通信的方式完成对硬件总线的读写访问,从而实现对系统硬件总线的监控与保护,保证运行时的总线安全性,提高系统整体的安全。70.在一个示例性实施例中,通过本实施例的嵌入式系统还可以实现固件升级以及恢复,其中,固件升级是指,在服务器存在固件升级需求的情况下,在实时操作系统对上传固件镜像的安全校验通过之后,通过实时操作系统将镜像文件写入待升级组件的存储位置,完成固件镜像的升级。固件恢复是指,当实时操作系统检测到有固件损坏的情况下,读取闪存区域中保存的固件备份,在完成备份固件的安全校验之后,将其恢复至损毁固件的存储器之前,完成固件镜像的恢复。71.图4是根据本技术实施例的安全防护方法的流程图,通过上述实施例的嵌入式系统实现,如图4所示,该流程包括如下步骤:72.步骤s402,在基板控制器上电之后,启动基板控制器中的实时操作系统。73.需要说明的是,基板管理控制器是服务器的远端管理控制器,可以在服务器未开机的状态下,对服务器进行固件升级、查看设备等操作,由此,基板控制器的安全启动校验尤为重要。74.基板控制器中运行有嵌入式系统,嵌入式系统中包含实时操作系统和非实时操作系统,由于实时操作系统具有启动迅速,轻量、响应及时等特性,本实施例利用实时操作系统来做基板控制器的安全启动校验,因而,在基板控制器上电之后,先启动基板控制器中的实时操作系统。75.步骤s404,在实时操作系统启动成功的情况下,通过实时操作系统执行基板控制器的安全启动校验。76.在一个示例性实施例中,基板控制器的闪存中存储有基板控制器启动镜像,基板控制器启动镜像用于安全启动校验,其中,基板控制器启动镜像中包含实时操作系统分区、非实时操作系统分区和固件可信分区。77.需要说明的是,固件可信分区存储有第一镜像签名、固件可信数据、固件可信签名以及上述两个签名所使用的私钥对应的公钥自身的签名结果,其中,固件可信签名是第一镜像签名和固件可信数据的签名结果,第一镜像签名是实时操作系统分区和非实时操作系统分区整体的签名结果,固件可信分区中包含总线命令白名单列表。通过实时操作系统读取基板控制器启动镜像,对各个签名所使用的私钥对应的公钥进行签名结果验证,在验证未通过的情况下,说明安全启动校验失败,在验证通过的情况下,通过公钥对第一镜像签名和固件可信数据进行签名结果验证,在验证通过的情况下,对实时操作系统分区和非实时操作系统分区整体行签名结果验证,在验证通过的情况下,说明安全启动校验成功,在验证未通过的情况下,说明安全启动校验失败。78.步骤s406,在安全启动校验通过之后,启动基板控制器中的非实时操作系统。79.需要说明的是,非实时操作系统需要通过访问硬件总线以访问硬件总线连接的设备,在安全启动校验通过之后,再启动基板控制器中的非实时操作系统,可以提高访问硬件总线的安全性。80.步骤s408,非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线。81.在一个示例性实施例中,非实时操作系统可以将硬件总线信息和读写内容写入共享内存当中,并且通过中断的方式通知实时操作系统,实时操作系统对硬件总线信息进行校验,在硬件总线信息校验通过的情况下访问硬件总线,实时操作系统执行访问操作并将访问结果写入共享内存,通过中断的方式通知非实时操作系统,非实时操作系统再获取访问结果。在本实施例中,非实时操作系统并非直接访问硬件总线,而是通过与实时操作系统通信的方式间接访问硬件总线,提高访问硬件总线的安全性。82.通过上述步骤,在基板控制器上电之后,借助实时操作系统启动迅速,轻量、响应及时等特性执行基板控制器的安全启动校验,在安全启动校验通过之后,启动基板控制器中的非实时操作系统,非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线,来保证运行时的硬件总线的安全性,提高服务器系统整体的安全性,因此,可以解决相关技术中对基板控制器进行安全防护时,需要对基板控制器的硬件进行改动,成本较高的问题,进而达到了不需要对基板控制器的硬件进行改动,也不需要增加额外的器件的情况下,实现对基板控制器的安全防护的效果。83.需要说明的是,在基于基板控制器启动镜像实现安全启动校验之前,需要制作基板控制器启动镜像。图5是根据本技术实施例生成基板控制器启动镜像的流程图,如图5所示,基板控制器启动镜像的生成过程包括以下步骤:84.首先,将实时操作系统分区划分为实时操作系统镜像区域、第一可信根区域以及实时操作系统签名区域。编译生成实时操作系统镜像,将实时操作系统镜像存入实时操作系统镜像区域,将根公钥写入第一可信根区域,然后使用安全启动私钥对实时操作系统镜像区域、第一可信根区域整体计算签名,将结果写入实时操作系统签名区域,生成整个实时操作系统分区的数据。85.其次,将非实时操作系统分区划分为引导程序分区、内核分区和应用程序分区。生成引导程序、内核和应用程序,并写入相应的分区。86.进一步的,将固件可信分区划分为第一代码签名区域、第一镜像签名区域、固件可信数据区域以及固件可信签名区域。将代码签名公钥写入第一代码签名区域中,得到代码签名公钥区域,使用根私钥对代码签名公钥区域计算签名,将结果写入代码签名公钥签名区域。87.接着,使用代码签名公钥对实时操作系统分区和非实时操作系统分区整体计算签名,得到第一镜像签名,并将第一镜像签名写入到第一镜像签名区域。然后,在固件可信数据区域写入固件可信数据,并且将第一镜像签名区域和固件可信数据区域作为整体,使用代码签名公钥对其签名,将结果写入固件可信签名区域,最后,打包生成整个基板控制器启动镜像。88.图6是根据本技术实施例的基板控制器启动镜像的示意图,如图6所示,生成的基板控制器启动镜像中包含5个分区:实时操作系统分区,引导程序分区、内核分区和应用程序分区,固件可信分区。89.其中,实时操作系统分区包括实时操作系统镜像区域、第一可信根区域以及实时操作系统签名区域,第一可信根区域中存储有根公钥,实时操作系统签名区域存储有实时操作系统签名,实时操作系统签名是在镜像编译阶段,通过安全启动私钥对实时操作系统镜像区域和第一可信根区域这两部分计算签名得到的结果。90.其中,引导程序分区用于存放二进制的uboot,uboot是一种引导加载程序,用来引导启动内核,也即,从闪存中读出内核,将内核放到内存中,并启动内核。引导加载程序刚开始被放到闪存上,基板控制器上电以后先执行加载程序,加载程序会完成硬件初始化,设置处理器模式,关闭看门狗,屏蔽中断,初始化同步动态随机存取内存,设置栈,设置时钟,从闪存引导内核到内存。其中,内核分区用于存储非实时操作操作和系统内核的镜像文件。其中,应用程序分区用于存放库函数、文件系统以及大部分的可执行程序。91.其中,固件可信分区中包含第一代码签名区域、第一镜像签名区域、固件可信数据区域以及固件可信签名区域这四部分。第一代码签名区域存放两部分数据,一部分是代码签名公钥本身,另一部分是代码签名公钥的签名结果,签名使用的是根私钥。第一镜像签名区域中存放的是使用代码签名私钥对实时操作系统分区、非实时操作系统分区作为整体的签名值。固件可信数据区域包含两部分区域,一部分是总线命令白名单列表,用于记录允许访问硬件总线的访问对象的白名单,另一部分是闪存存储器分区信息。固件可信签名区域保存固件可信签名,固件可信签名是使用代码签名私钥对第一镜像签名区域、固件可信数据区域这两个区域作为整体的签名值。92.需要说明的是,基板控制器启动镜像对整个系统的启动过程以数字签名链的形式提供保护,使用了3组非对称密钥,包括安全启动私钥和安全启动公钥、根私钥和根公钥、代码签名私钥和代码签名公钥。其中,安全启动私钥用于对实时操作系统分区的实时操作系统镜像区域和第一可信根区域计算签名,安全启动公钥保存在启动芯片里,用于校验保护实时操作系统分区的实时操作系统镜像区域和第一可信根区域。根私钥用于对保护代码签名公钥计算签名,根公钥用于校验保护代码签名公钥。代码签名私钥用于对固件可信分区的第一镜像签名区域、固件可信数据区域计算签名,代码签名公钥用于校验保护固件可信分区的第一镜像签名区域、固件可信数据区域。93.在一个示例性实施例中,实时操作系统分区包括实时操作系统镜像区域、第一可信根区域以及实时操作系统签名区域;在启动基板控制器中的实时操作系统之前,该方法还包括:获取基板控制器的芯片中存储的安全启动公钥,并通过安全启动公钥对实时操作系统镜像区域和第一可信根区域计算签名;判断得到的签名与实时操作系统签名区域中的实时操作系统签名是否相同,其中,实时操作系统签名通过安全启动私钥对实时操作系统镜像区域和第一可信根区域加密得到;在得到的签名与实时操作系统签名相同的情况下,启动实时操作系统,在得到的签名与实时操作系统签名不相同的情况下,确定基板控制器启动失败。94.需要说明的是,本实施例在基板控制器镜像的生成阶段通过安全启动私钥对实时操作系统镜像区域和第一可信根区域计算签名,在启动基板控制器中的实时操作系统之前,通过保存在启动芯片里的安全启动公钥对实时操作系统镜像区域和第一可信根区域进行签名验证,在签名验证通过的情况下,使得实时操作系统可以安全启动,从而实现了对实时操作系统自身的启动防护。95.在一个示例性实施例中,固件可信分区中包含第一代码签名区域、第一镜像签名区域、固件可信数据区域以及固件可信签名区域,第一代码签名区域存储有代码签名公钥;通过实时操作系统执行基板控制器的安全启动校验包括:对第一代码签名区域的代码签名公钥进行验证,在代码签名公钥验证失败的情况下,确定基板控制器启动失败;在代码签名公钥验证成功的情况下,通过代码签名公钥对固件可信数据区域和第一镜像签名区域验证签名;在验证签名失败的情况下,确定基板控制器启动失败,在验证签名成功的情况下,通过代码签名公钥验证实时操作系统分区和非实时操作系统分区整体的签名;在实时操作系统分区和非实时操作系统分区整体的签名验证失败的情况下,确定安全启动校验失败,在实时操作系统分区和非实时操作系统分区整体的签名验证成功的情况下,确定安全启动校验成功。96.需要说明的是,在基板控制器启动镜像的生成阶段,通过代码签名私钥对固件可信数据区域和第一镜像签名区域计算签名,并对实时操作系统分区和非实时操作系统分区整体计算签名,代码签名密钥自身的安全性很重要,因而,先对代码签名公钥进行签名验证,在验证成功的情况下,再通过代码签名公钥对固件可信数据区域和第一镜像签名区域验证签名、对实时操作系统分区和非实时操作系统分区整体验证签名,并在均验证通过的情况下,说明安全启动校验成功,基板控制器系统可以正常运行。97.在一个示例性实施例中,实时操作系统分区中包括第一可信根区域,第一可信根区域存储有根公钥,第一代码签名区域还存储有通过根私钥对代码签名公钥的签名结果,对第一代码签名区域的代码签名公钥进行验证包括:使用根公钥对第一代码签名区域中的代码签名公钥计算签名,并判断得到的签名与第一代码签名区域中存储的签名结果是否相同;在得到的签名与存储的签名结果相同的情况下,确定代码签名公钥验证成功;在得到的数字签名与存储的签名结果相同的情况下,确定代码签名公钥验证失败。98.需要说明的是,在基板控制器启动镜像的生成阶段,通过根私钥对代码签名公钥计算签名,并将计算得到的签名存储在第一代码签名区域,因而,通过根公钥对代码签名公钥进行签名验证,以验证代码签名公钥的合法性。其中,第一可信根区域存储有根公钥,在启动实时操作系统之前,通过安全启动公钥对实时操作系统镜像区域和第一可信根区域验证签名通过的情况下,可以从第一可信根区域获取根公钥。99.在一个示例性实施例中,固件可信签名区域存储有通过代码签名私钥对第一镜像签名区域和固件可信数据区域加密得到的固件可信签名,通过代码签名公钥对固件可信数据区域和第一镜像签名区域验证签名包括:通过代码签名公钥对固件可信数据区域和第一镜像签名区域计算签名,并判断得到的签名与固件可信签名区域存储的固件可信签名是否相同;在得到的签名与固件可信签名不相同的情况下,确定验证签名失败;在得到的签名与固件可信签名相同的情况下,确定验证签名成功。100.也即,在代码签名公钥验证成功的情况下,通过代码签名公钥对固件可信数据区域和第一镜像签名区域的整体验证签名。101.在一个示例性实施例中,通过代码签名公钥验证实时操作系统分区和非实时操作系统分区整体的签名包括:使用代码签名公钥计算实时操作系统分区和非实时操作系统分区整体的签名,并判断得到的签名与第一镜像签名区域存储的镜像签名是否相同,其中,镜像签名是由代码签名私钥对实时操作系统分区和非实时操作系统分区整体加密得到的;在得到的签名与镜像签名不相同的情况下,确定实时操作系统分区和非实时操作系统分区整体的签名验证失败;在得到的签名与镜像签名相同的情况下,确定实时操作系统分区和非实时操作系统分区整体的签名验证成功。102.也即,在代码签名公钥验证成功的情况下,通过代码签名公钥对实时操作系统分区和非实时操作系统分区整体验证签名。由于实时操作系统已经启动,在实时操作系统分区和非实时操作系统分区整体验证签名通过的情况下,说明可以启动非实时操作系统。103.在一个示例性实施例中,非实时操作系统分区包括引导程序、内核和应用程序,启动基板控制器中的非实时操作系统包括:实时操作系统启动引导程序,引导程序启动内核,内核启动非实时操作系统;在非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线之前,方法还包括:非实时操作系统启动应用程序;在应用程序启动完毕的情况下,非实时操作系统通过与实时操作系统通信的方式对硬件总线执行读写访问操作。104.也即,实时操作系统启动引导程序,引导程序启动内核,内核启动非实时操作系统,从而实现非实时操作的启动,非实时操作系统在启动的过程中控制应用程序启动,为非实时操作系统对硬件总线执行读写访问操作奠定基础。105.在一个可选的示例性实施例中,实时操作系统为freertos操作系统,非实时操作系统为linux操作系统,图7是根据本技术实施例的基板控制器的启动阶段的安全防护方法,如图7所示,该方法包括:106.在基板控制器系统上电启动后,最开始由启动芯片校验rtos分区:使用基板控制器芯片内部保存的安全启动公钥对rtos分区计算数字签名,将结果与rtos签名区域存储的rtos签名做比对,比对失败,则系统启动失败,比对成功,则启动rtos系统。107.rtos系统正常运行起来之后,使用根公钥校验第一代码签名区域:使用根公钥对第一代码签名区域中的代码保护公钥区域计算数字签名,并将结果与第一代码签名区域中存储的代码保护公钥签名进行比对,比对失败,系统启动失败,比对成功,则验证了代码保护公钥的合法性。108.接着,使用代码保护公钥验证固件可信签名区域区域:将固件可信数据区域和第一镜像签名区域作为整体,使用代码保护公钥对其计算数字签名,将结果与固件可信签名区域区域存储的固件可信签名对比,比对失败,则系统启动失败,比对成功,则继续使用代码保护公钥校验第一镜像签名区域:使用代码保护公钥计算实时操作系统分区和非实时操作系统分区整体的数字签名,计算结果与第一镜像签名区域的镜像签名进行比较,失败则系统启动失败,比对成功之后,则完成了系统的整个启动过程中的安全校验部分,并执行正常启动流程,rtos启动引导程序,引导程序启动linux系统,linux系统启动应用程序,待应用程序完全启动,整个基板控制器系统启动完成,则可以进入系统运行阶段。109.在一个示例性实施例中,固件可信分区中包含总线命令白名单列表,非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线包括:非实时操作系统将硬件总线信息和读写内容写入共享内存当中,并且触发中断通知实时操作系统;实时操作系统从共享内存中获取硬件总线信息和读写内容,并通过总线命令白名单列表对硬件总线信息进行校验;在硬件总线信息校验通过的情况下,实时操作系统依据硬件总线信息和读写内容访问硬件总线,将访问结果写入共享内存,并触发中断通知非实时操作系统;非实时操作系统从共享内存中获取访问结果。110.需要说明的是,本实施例在基板控制器的运行阶段,多核处理器的两套操作系统同时工作,其中,主处理器运行非实时操作系统,协处理器运行实时操作系统,由实时操作系统掌握系统硬件总线的读写控制权(例如,i2c总线、spi总线),非实时操作侧没有硬件总线的读写权限,从而实现硬件总线的间接访问。其中,非实时操作需要使用硬件总线的时候,通过核间中断与共享内存的方式与实时操作系统进行通信,告诉实时操作系统,需要访问的总线号、地址以及读写的内容,由实时操作对总线号进行校验,并在校验通过的情况下实际访问硬件总线,获得访问结果,然后通过核间中断与共享内存的方式返回给非实时操作系统。111.在一个可选的示例性实施例中,实时操作系统为freertos操作系统,非实时操作系统为linux操作系统,需要访问的硬件总线为i2c总线,图8是根据本技术实施例的基板控制器的运行阶段的安全防护方法,如图8所示,该方法包括:112.当linux系统需要访问i2c总线上的设备的时候,发起代理方式访问i2c总线,linux系统将i2c的总线号、设备从地址、访问内容等信息写入共享内存当中,并且触发中断通知rtos系统,rtos系统收到中断消息后,从共享内存中获取linux系统传递的数据,并从基板控制器启动镜像中的固件可信数据区域中获取i2c白名单数据,根据i2c白名单数据对i2c总线号和设备从地址进行合法性校验,判断是否为白名单中允许访问的i2c总线和设备从地址,在否的情况下,拒绝访问,并给linux系统返回错误信息;在是的情况下,rtos系统根据linux系统提供的信息,访问i2c总线上的硬件设备,获得访问结果,将访问结果写入共享内存,并触发中断,通知linux系统,linux接收到通知后,从共享内存中拿到i2c访问的结果,从而完成整个i2c访问的流程。113.通过本实施例,由实时操作系统实现非实时操作对硬件总线的代理访问,并且实时操作系统对硬件总线上的命令进行白名单校验,从而实现了基板控制器的运行阶段的安全防护。114.需要说明的是,在基板控制器的工作的过程中,还存在固件升级的需求,为了保证固件升级的安全性,本实施例使用实时操作系统实现固件的安全升级,其中,实时操作系统使用固件恢复镜像来实现固件的安全升级。115.本实施例以基板控制器(bmc)、基本输入输出系统(bios,basicinputoutputsystem)、复杂可编程逻辑器件(cpld)、可编程逻辑器件(fpga)为例子对固件升级以及恢复进行说明,图9是根据本技术实施例的基板控制器镜像区域的示意图,如图9所示,基板控制器镜像区域包括基板控制器启动镜像区域和固件恢复镜像区域,固件恢复镜像区域可以包括基板控制器恢复镜像区域、基本输入输出系统恢复镜像区域、复杂可编程逻辑器件恢复镜像区域、可编程逻辑器件恢复镜像区域。116.图10是根据本技术实施例的固件恢复镜像区域的结构示意图,如图10所示,每种类型的固件恢复镜像区域均可以包括:117.恢复头区域和恢复数据区域,其中,恢复头区域包括第二可信根区域、第二代码签名区域以及第二镜像签名区域,第二可信根区域存储有根公钥,第二代码签名区域存储有代码签名公钥、使用根私钥对代码签名公钥计算得到的第一签名结果,第二镜像签名区域存储有使用代码签名私钥对恢复数据区域的签名结果。118.其中,恢复数据区域包括压缩数据区域以及压缩头区域,压缩头区域存储有压缩信息,例如,采用的压缩算法类型、压缩前后的镜像大小、镜像类型等关键信息。压缩数据区域存储有压缩后的原始镜像,例如,bmc恢复镜像区域的恢复数据区域存储的是压缩后的bmc镜像,bios恢复镜像区域的恢复数据区域存储的是压缩后的bios镜像,cpld恢复镜像区域的恢复数据区域存储的是压缩后的cpld镜像,fpga恢复镜像区域的恢复数据区域存储的是压缩后的fpga镜像。119.图11是根据本技术实施例的生成固件恢复镜像的流程图,如图11所示:120.首先,生成基板控制器的各个固件的原始镜像文件,例如,生成原始bmc镜像、原始bios镜像、原始cpld镜像、原始fpga镜像。进一步的,对各个固件的原始镜像文件进行压缩,将压缩后的镜像文件分别写入到各个分区的压缩数据区域中,并依次将压缩信息填入各个分区中的压缩头区域,压缩数据区域和压缩头区域构成恢复数据区域。对于每个镜像分区,将根公钥写入第二可信根区域中,将代码签名公钥写入第二代码签名区域中,得到代码签名公钥区域,使用根私钥计算代码签名公钥区域的数字签名,得到第一签名结果,将第一签名结果写入第二代码签名区域中。使用代码签名私钥计算恢复数据区域的数字签名,将结果写入第二镜像签名区域中,由第二可信根区域、第二代码签名区域以及第二镜像签名区域构成恢复头区域。由恢复数据区域和恢复头区域构成固件恢复镜像,从而完成了bmc恢复镜像、bios恢复镜像、cpld恢复镜像、fpga恢复镜像的生成,并写入闪存中,得到bmc恢复镜像区域、bios恢复镜像区域、cpld恢复镜像区域、fpga恢复镜像区域。121.在需要进行固件升级时,先向基板控制器上传生成的固件恢复镜像,在一个示例性实施例中,该方法还包括:在基板控制器接收固件恢复镜像的情况下,从固件恢复镜像中解析得到恢复头区域和恢复数据区域,其中,恢复数据区域包括压缩数据区域以及压缩头区域,压缩数据区域存储有压缩后的原始镜像,压缩头区域存储有压缩信息,恢复头区域存储有对恢复数据区域的签名结果;实时操作系统通过恢复头区域对恢复数据区域进行验证;在恢复数据区域验证成功的情况下,基于压缩信息从恢复数据区域解压出原始镜像,并基于原始镜像进行固件升级。122.在一个示例性实施例中,恢复头区域包括第二可信根区域、第二代码签名区域以及第二镜像签名区域,第二可信根区域存储有根公钥,实时操作系统对恢复头区域进行验证包括:使用根公钥对第二代码签名区域中的代码签名公钥计算签名,并判断得到的签名与第二代码签名区域中的第一签名结果是否相同,其中,第一签名结果通过根私钥对代码签名公钥进行签名得到;在得到的签名与第一签名结果相同的情况下,使用代码签名公钥对恢复数据区域计算签名,并判断得到的签名与第二镜像签名区域中的第二签名结果是否相同,其中,第二签名结果通过代码签名私钥对恢复数据区域进行签名得到;在得到的签名与第二签名结果相同的情况下,确定恢复数据区域验证成功,在得到的签名与第二签名结果不同的情况下,确定恢复数据区域验证失败。123.图12是根据本技术实施例的固件升级的流程图,在需要进行固件升级的情况下,先上传镜像,在基板控制器检测到镜像上传完毕之后,从固件恢复镜像中解析得到恢复头区域和恢复数据区域,实时操作系统使用根公钥校验第二代码签名区域,校验成功之后,使用代码签名公钥校验恢复数据区域,校验成功之后,将从恢复数据区域中的压缩头区域获取压缩信息,根据压缩信息从压缩数据区域区域解压缩出原始镜像文件。124.在得到原始镜像文件之后,判断出本次升级的固件类型。在一个示例性实施例中,在待升级的固件为基板控制器固件的情况下、固件恢复镜像为基板控制器恢复镜像的情况下,原始镜像为原始基板控制器镜像,基于原始镜像进行固件升级包括:关闭基板控制器启动镜像所在的闪存区域的访问功能,通过实时操作系统将原始基板控制器镜像写入基板控制器启动镜像所在的闪存区域中,并重启基板控制器。125.如图12所示,对于bmc固件升级,停止bmc启动镜像所在的闪存区域的的使用,将原始bmc镜像写入bmc启动镜像所在的闪存区域中,然后重启系统可以使新写入的bmc镜像生效,从而实现bmc固件的升级。126.在一个示例性实施例中,在待升级的固件为基本输入输出系统固件、固件恢复镜像为基本输入输出系统恢复镜像的情况下,原始镜像为原始基本输入输出系统镜像,基于原始镜像进行固件升级包括:关闭服务器主机,通过实时操作系统将原始基本输入输出系统镜像写入运行基本输入输出系统镜像的闪存区域中,并重启服务器主机。127.如图12所示,对于bios固件升级,首先服务器主机,然后将原始bios镜像写入运行bios镜像的闪存区域中,重新开启服务器主机使新写入的bios镜像生效,从而实现bios固件的升级。128.在一个示例性实施例中,在待升级的固件为复杂可编程逻辑器件固件、固件恢复镜像为复杂可编程逻辑器件恢复镜像的情况下,原始镜像为原始复杂可编程逻辑器件镜像,基于原始镜像进行固件升级包括:停止复杂可编程逻辑器件固件的使用功能,通过实时操作系统将原始复杂可编程逻辑器件镜像写入运行复杂可编程逻辑器件镜像的闪存区域中,并重启复杂可编程逻辑器件。129.在一个示例性实施例中,在待升级的固件为现场可编程逻辑门阵列固件、固件恢复镜像为现场可编程逻辑门阵列恢复镜像的情况下,原始镜像为原始现场可编程逻辑门阵列镜像,基于原始镜像进行固件升级包括:停止现场可编程逻辑门阵列固件的使用功能,通过实时操作系统将原始现场可编程逻辑门阵列镜像写入运行现场可编程逻辑门阵列镜像的闪存区域中,并重启现场可编程逻辑门阵列。130.如图12所示,对于cpld或fpga升级,首先停用对应固件的功能,然后将cpld或fpga的原始镜像写入各自对应的内部存储单元之中,最后重新启动cpld或者fpga,从而实现cpld或者fpga的升级。131.需要说明的是,在基板控制器的工作的过程中,还存在固件恢复的需求,为了保证固件恢复的安全性,本实施例使用实时操作系统实现固件异常恢复。132.在一个示例性实施例中,包括:在实时操作系统检测到损坏的固件的情况下,实时操作系统从基板控制器的闪存中读取固件恢复镜像,其中,固件恢复镜像包括恢复头区域和恢复数据区域,恢复数据区域包括压缩数据区域以及压缩头区域,压缩数据区域存储有压缩后的原始镜像,压缩头区域存储有压缩信息,恢复头区域存储有对恢复数据区域的签名结果;实时操作系统通过恢复头区域对恢复数据区域进行验证;在恢复数据区域验证成功的情况下,基于压缩信息从恢复数据区域解压出原始镜像,并基于原始镜像进行固件恢复。133.在一个示例性实施例中,恢复头区域包括第二可信根区域、第二代码签名区域以及第二镜像签名区域,第二可信根区域存储有根公钥,实时操作系统对恢复头区域进行验证包括:使用根公钥对第二代码签名区域中的代码签名公钥计算签名,并判断得到的签名与第二代码签名区域中的第一签名结果是否相同,其中,第一签名结果通过根私钥对代码签名公钥进行签名得到;在得到的签名与第一签名结果相同的情况下,使用代码签名公钥对恢复数据区域计算签名,并判断得到的签名与第二镜像签名区域中的第二签名结果是否相同,其中,第二签名结果通过代码签名私钥对恢复数据区域进行签名得到;在得到的签名与第二签名结果相同的情况下,确定恢复数据区域验证成功,在得到的签名与第二签名结果不同的情况下,确定恢复数据区域验证失败。134.图13是根据本技术实施例的固件恢复的流程图,在检测到固件损坏的情况下,开始固件恢复流程,在基板控制器检测到镜像上传完毕之后,实时操作系统读取对应的固件恢复镜像区域的固件恢复镜像,从固件恢复镜像中解析得到恢复头区域和恢复数据区域,实时操作系统使用根公钥校验与第二代码签名区域,校验成功之后,使用代码签名公钥校验恢复数据区域,校验成功之后,将从恢复数据区域中的压缩头区域获取压缩信息,根据压缩信息从压缩数据区域区域解压缩出原始镜像文件。135.如图13所示,在得到原始镜像文件之后,判断出本次恢复的固件类型,并根据固件类型执行固件恢复操作。136.对于bmc固件恢复,停止bmc启动镜像所在的闪存区域的的使用,将原始bmc镜像写入bmc启动镜像所在的闪存区域中,然后重启系统可以使新写入的bmc镜像生效,从而实现bmc固件的恢复。137.对于bios固件恢复,首先服务器主机,然后将原始bios镜像写入运行bios镜像的闪存区域中,重新开启服务器主机使新写入的bios镜像生效,从而实现bios固件的恢复。138.对于cpld或fpga恢复,首先停用对应固件的功能,然后将cpld或fpga的原始镜像写入各自对应的内部存储单元之中,最后重新启动cpld或者fpga,从而实现cpld或者fpga的恢复。139.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。140.在本实施例中还提供了一种安全防护装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。141.图14是根据本技术实施例的安全防护装置的结构框图,应用于基板控制器,基板控制器上运行有实时操作系统和非实时操作系统,如图14所示,该装置包括:142.第一启动单元141,用于在基板控制器上电之后,启动基板控制器中的实时操作系统;143.安全启动校验单元142,用于在实时操作系统启动成功的情况下,通过实时操作系统执行基板控制器的安全启动校验;144.第二启动单元143,用于在安全启动校验通过之后,启动基板控制器中的非实时操作系统;145.访问单元144,用于非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线。146.在一个示例性实施例中,基板控制器的闪存中存储有基板控制器启动镜像,基板控制器启动镜像用于安全启动校验,其中,基板控制器启动镜像中包含实时操作系统分区、非实时操作系统分区和固件可信分区,实时操作系统分区和非实时操作系统分区整体中包含实时操作系统分区和非实时操作系统分区。147.在一个示例性实施例中,实时操作系统分区包括实时操作系统镜像区域、第一可信根区域以及实时操作系统签名区域;该装置还包括:实时操作系统启动校验单元,用于在启动基板控制器中的实时操作系统之前,获取基板控制器的芯片中存储的安全启动公钥,并通过安全启动公钥对实时操作系统镜像区域和第一可信根区域计算签名;判断得到的签名与实时操作系统签名区域中的实时操作系统签名是否相同,其中,实时操作系统签名通过安全启动私钥对实时操作系统镜像区域和第一可信根区域加密得到;在得到的签名与实时操作系统签名相同的情况下,启动实时操作系统,在得到的签名与实时操作系统签名不相同的情况下,确定基板控制器启动失败。148.在一个示例性实施例中,固件可信分区中包含第一代码签名区域、第一镜像签名区域、固件可信数据区域以及固件可信签名区域,第一代码签名区域存储有代码签名公钥;安全启动校验单元142包括:第一验证模块,用于对第一代码签名区域的代码签名公钥进行验证,在代码签名公钥验证失败的情况下,确定基板控制器启动失败;第二验证模块,用于在代码签名公钥验证成功的情况下,通过代码签名公钥对固件可信数据区域和第一镜像签名区域验证签名;第三验证模块,用于在验证签名失败的情况下,确定基板控制器启动失败,在验证签名成功的情况下,通过代码签名公钥验证实时操作系统分区和非实时操作系统分区整体的签名;确定模块,用于在实时操作系统分区和非实时操作系统分区整体的签名验证失败的情况下,确定安全启动校验失败,在实时操作系统分区和非实时操作系统分区整体的签名验证成功的情况下,确定安全启动校验成功。149.在一个示例性实施例中,实时操作系统分区中包括第一可信根区域,第一可信根区域存储有根公钥,第一代码签名区域还存储有通过根私钥对代码签名公钥的签名结果,第一验证模块用于使用根公钥对第一代码签名区域中的代码签名公钥计算签名,并判断得到的签名与第一代码签名区域中存储的签名结果是否相同;在得到的签名与存储的签名结果相同的情况下,确定代码签名公钥验证成功;在得到的数字签名与存储的签名结果相同的情况下,确定代码签名公钥验证失败。150.在一个示例性实施例中,固件可信签名区域存储有通过代码签名私钥对第一镜像签名区域和固件可信数据区域加密得到的固件可信签名,第二验证模块用于通过代码签名公钥对固件可信数据区域和第一镜像签名区域计算签名,并判断得到的签名与固件可信签名区域存储的固件可信签名是否相同;在得到的签名与固件可信签名不相同的情况下,确定验证签名失败;在得到的签名与固件可信签名相同的情况下,确定验证签名成功。151.在一个示例性实施例中,第三验证模块用于使用代码签名公钥计算实时操作系统分区和非实时操作系统分区整体的签名,并判断得到的签名与第一镜像签名区域存储的镜像签名是否相同,其中,镜像签名是由代码签名私钥对实时操作系统分区和非实时操作系统分区整体加密得到的;在得到的签名与镜像签名不相同的情况下,确定实时操作系统分区和非实时操作系统分区整体的签名验证失败;在得到的签名与镜像签名相同的情况下,确定实时操作系统分区和非实时操作系统分区整体的签名验证成功。152.在一个示例性实施例中,非实时操作系统分区包括引导程序、内核和应用程序,第二启动单元143用于控制实时操作系统启动引导程序,引导程序启动内核,内核启动非实时操作系统;在非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线之前,控制非实时操作系统启动应用程序;在应用程序启动完毕的情况下,控制非实时操作系统通过与实时操作系统通信的方式对硬件总线执行读写访问操作。153.在一个示例性实施例中,固件可信分区中包含总线命令白名单列表,访问单元144包括:写入模块,用于控制非实时操作系统将硬件总线信息和读写内容写入共享内存当中,并且触发中断通知实时操作系统;校验模块,用于控制实时操作系统从共享内存中获取硬件总线信息和读写内容,并通过总线命令白名单列表对硬件总线信息进行校验;访问模块,用于在硬件总线信息校验通过的情况下,实时操作系统依据硬件总线信息和读写内容访问硬件总线,将访问结果写入共享内存,并触发中断通知非实时操作系统;获取模块,用于控制非实时操作系统从共享内存中获取访问结果。154.在一个示例性实施例中,该装置还包括:第一解析单元,用于在基板控制器接收固件恢复镜像的情况下,从固件恢复镜像中解析得到恢复头区域和恢复数据区域,其中,恢复数据区域包括压缩数据区域以及压缩头区域,压缩数据区域存储有压缩后的原始镜像,压缩头区域存储有压缩信息,恢复头区域存储有对恢复数据区域的签名结果;第一验证单元,用于控制实时操作系统通过恢复头区域对恢复数据区域进行验证;升级单元,用于在恢复数据区域验证成功的情况下,基于压缩信息从恢复数据区域解压出原始镜像,并基于原始镜像进行固件升级。155.在一个示例性实施例中,恢复头区域包括第二可信根区域、第二代码签名区域以及第二镜像签名区域,第二可信根区域存储有根公钥,第一验证单元用于使用根公钥对第二代码签名区域中的代码签名公钥计算签名,并判断得到的签名与第二代码签名区域中的第一签名结果是否相同,其中,第一签名结果通过根私钥对代码签名公钥进行签名得到;在得到的签名与第一签名结果相同的情况下,使用代码签名公钥对恢复数据区域计算签名,并判断得到的签名与第二镜像签名区域中的第二签名结果是否相同,其中,第二签名结果通过代码签名私钥对恢复数据区域进行签名得到;在得到的签名与第二签名结果相同的情况下,确定恢复数据区域验证成功,在得到的签名与第二签名结果不同的情况下,确定恢复数据区域验证失败。156.在一个示例性实施例中,在待升级的固件为基板控制器固件的情况下、固件恢复镜像为基板控制器恢复镜像的情况下,原始镜像为原始基板控制器镜像,升级单元用于关闭基板控制器启动镜像所在的闪存区域的访问功能,通过实时操作系统将原始基板控制器镜像写入基板控制器启动镜像所在的闪存区域中,并重启基板控制器。157.在一个示例性实施例中,在待升级的固件为基本输入输出系统固件、固件恢复镜像为基本输入输出系统恢复镜像的情况下,原始镜像为原始基本输入输出系统镜像,升级单元用于关闭服务器主机,通过实时操作系统将原始基本输入输出系统镜像写入运行基本输入输出系统镜像的闪存区域中,并重启服务器主机。158.在一个示例性实施例中,在待升级的固件为复杂可编程逻辑器件固件、固件恢复镜像为复杂可编程逻辑器件恢复镜像的情况下,原始镜像为原始复杂可编程逻辑器件镜像,升级单元用于停止复杂可编程逻辑器件固件的使用功能,通过实时操作系统将原始复杂可编程逻辑器件镜像写入运行复杂可编程逻辑器件镜像的闪存区域中,并重启复杂可编程逻辑器件。159.在一个示例性实施例中,在待升级的固件为现场可编程逻辑门阵列固件、固件恢复镜像为现场可编程逻辑门阵列恢复镜像的情况下,原始镜像为原始现场可编程逻辑门阵列镜像,升级单元用于停止现场可编程逻辑门阵列固件的使用功能,通过实时操作系统将原始现场可编程逻辑门阵列镜像写入运行现场可编程逻辑门阵列镜像的闪存区域中,并重启现场可编程逻辑门阵列。160.在一个示例性实施例中,该装置还包括:读取单元,用于在实时操作系统检测到损坏的固件的情况下,实时操作系统从基板控制器的闪存中读取固件恢复镜像,其中,固件恢复镜像包括恢复头区域和恢复数据区域,恢复数据区域包括压缩数据区域以及压缩头区域,压缩数据区域存储有压缩后的原始镜像,压缩头区域存储有压缩信息,恢复头区域存储有对恢复数据区域的签名结果;第二验证单元,用于控制实时操作系统通过恢复头区域对恢复数据区域进行验证;恢复单元,用于在恢复数据区域验证成功的情况下,基于压缩信息从恢复数据区域解压出原始镜像,并基于原始镜像进行固件恢复。161.在一个示例性实施例中,恢复头区域包括第二可信根区域、第二代码签名区域以及第二镜像签名区域,第二可信根区域存储有根公钥,第二验证单元用于使用根公钥对第二代码签名区域中的代码签名公钥计算签名,并判断得到的签名与第二代码签名区域中的第一签名结果是否相同,其中,第一签名结果通过根私钥对代码签名公钥进行签名得到;在得到的签名与第一签名结果相同的情况下,使用代码签名公钥对恢复数据区域计算签名,并判断得到的签名与第二镜像签名区域中的第二签名结果是否相同,其中,第二签名结果通过代码签名私钥对恢复数据区域进行签名得到;在得到的签名与第二签名结果相同的情况下,确定恢复数据区域验证成功,在得到的签名与第二签名结果不同的情况下,确定恢复数据区域验证失败。162.需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。163.本技术的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。164.在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。165.本技术的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。166.在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。167.本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。168.显然,本领域的技术人员应该明白,上述的本技术的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本技术不限制于任何特定的硬件和软件结合。169.以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。当前第1页12当前第1页12
技术特征:
1.一种安全防护方法,其特征在于,应用于基板控制器,所述基板控制器上运行有实时操作系统和非实时操作系统,所述方法包括:在基板控制器上电之后,启动所述基板控制器中的所述实时操作系统;在所述实时操作系统启动成功的情况下,通过所述实时操作系统执行所述基板控制器的安全启动校验;在所述安全启动校验通过之后,启动所述基板控制器中的所述非实时操作系统;所述非实时操作系统通过与所述实时操作系统通信的方式访问所述基板控制器的硬件总线。2.根据权利要求1所述的方法,其特征在于,所述基板控制器的闪存中存储有基板控制器启动镜像,所述基板控制器启动镜像用于所述安全启动校验,其中,所述基板控制器启动镜像中包含实时操作系统分区、非实时操作系统分区和固件可信分区。3.根据权利要求2所述的方法,其特征在于,所述实时操作系统分区包括实时操作系统镜像区域、第一可信根区域以及实时操作系统签名区域;在启动所述基板控制器中的所述实时操作系统之前,所述方法还包括:获取所述基板控制器的芯片中存储的安全启动公钥,并通过所述安全启动公钥对所述实时操作系统镜像区域和所述第一可信根区域计算签名;判断得到的签名与所述实时操作系统签名区域中的实时操作系统签名是否相同,其中,所述实时操作系统签名通过安全启动私钥对所述实时操作系统镜像区域和所述第一可信根区域加密得到;在所述得到的签名与所述实时操作系统签名相同的情况下,启动所述实时操作系统,在所述得到的签名与所述实时操作系统签名不相同的情况下,确定所述基板控制器启动失败。4.根据权利要求2所述的方法,其特征在于,所述固件可信分区中包含第一代码签名区域、第一镜像签名区域、固件可信数据区域以及固件可信签名区域,所述第一代码签名区域存储有代码签名公钥;通过所述实时操作系统执行所述基板控制器的安全启动校验包括:对所述第一代码签名区域的所述代码签名公钥进行验证,在所述代码签名公钥验证失败的情况下,确定所述基板控制器启动失败;在所述代码签名公钥验证成功的情况下,通过所述代码签名公钥对所述固件可信数据区域和所述第一镜像签名区域验证签名;在验证签名失败的情况下,确定所述基板控制器启动失败,在验证签名成功的情况下,通过所述代码签名公钥验证所述实时操作系统分区和非实时操作系统分区整体的签名;在所述实时操作系统分区和非实时操作系统分区整体的签名验证失败的情况下,确定所述安全启动校验失败,在所述实时操作系统分区和非实时操作系统分区整体的签名验证成功的情况下,确定所述安全启动校验成功。5.根据权利要求4所述的方法,其特征在于,所述实时操作系统分区中包括第一可信根区域,所述第一可信根区域存储有根公钥,所述第一代码签名区域还存储有通过根私钥对所述代码签名公钥的签名结果,对所述第一代码签名区域的所述代码签名公钥进行验证包括:使用所述根公钥对所述第一代码签名区域中的所述代码签名公钥计算签名,并判断得
到的签名与所述第一代码签名区域中存储的签名结果是否相同;在所述得到的签名与存储的签名结果相同的情况下,确定所述代码签名公钥验证成功;在所述得到的数字签名与所述存储的签名结果相同的情况下,确定所述代码签名公钥验证失败。6.根据权利要求4所述的方法,其特征在于,所述固件可信签名区域存储有通过代码签名私钥对所述第一镜像签名区域和所述固件可信数据区域加密得到的固件可信签名,通过所述代码签名公钥对所述固件可信数据区域和所述第一镜像签名区域验证签名包括:通过所述代码签名公钥对所述固件可信数据区域和所述第一镜像签名区域计算签名,并判断得到的签名与所述固件可信签名区域存储的固件可信签名是否相同;在所述得到的签名与所述固件可信签名不相同的情况下,确定验证签名失败;在所述得到的签名与所述固件可信签名相同的情况下,确定验证签名成功。7.根据权利要求4所述的方法,其特征在于,通过所述代码签名公钥验证所述实时操作系统分区和非实时操作系统分区整体的签名包括:使用所述代码签名公钥计算所述实时操作系统分区和非实时操作系统分区整体的签名,并判断得到的签名与所述第一镜像签名区域存储的镜像签名是否相同,其中,所述镜像签名是由代码签名私钥对所述实时操作系统分区和非实时操作系统分区整体加密得到的;在所述得到的签名与所述镜像签名不相同的情况下,确定所述实时操作系统分区和非实时操作系统分区整体的签名验证失败;在所述得到的签名与所述镜像签名相同的情况下,确定所述实时操作系统分区和非实时操作系统分区整体的签名验证成功。8.根据权利要求2所述的方法,其特征在于,所述非实时操作系统分区包括引导程序、内核和应用程序,启动所述基板控制器中的所述非实时操作系统包括:所述实时操作系统启动所述引导程序,所述引导程序启动所述内核,所述内核启动所述非实时操作系统;在所述非实时操作系统通过与所述实时操作系统通信的方式访问所述基板控制器的硬件总线之前,所述方法还包括:所述非实时操作系统启动所述应用程序;在所述应用程序启动完毕的情况下,所述非实时操作系统通过与所述实时操作系统通信的方式对硬件总线执行读写访问操作。9.根据权利要求2所述的方法,其特征在于,所述固件可信分区中包含总线命令白名单列表,所述非实时操作系统通过与所述实时操作系统通信的方式访问所述基板控制器的硬件总线包括:所述非实时操作系统将硬件总线信息和读写内容写入共享内存当中,并且触发中断通知所述实时操作系统;所述实时操作系统从所述共享内存中获取所述硬件总线信息和所述读写内容,并通过所述总线命令白名单列表对所述硬件总线信息进行校验;在所述硬件总线信息校验通过的情况下,所述实时操作系统依据所述硬件总线信息和所述读写内容访问硬件总线,将访问结果写入所述共享内存,并触发中断通知所述非实时操作系统;所述非实时操作系统从所述共享内存中获取所述访问结果。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述基板控制器接收固件恢复镜像的情况下,从所述固件恢复镜像中解析得到恢复头区域和恢复数据区域,其中,所述恢复数据区域包括压缩数据区域以及压缩头区域,所述压缩数据区域存储有压缩后的原始镜像,所述压缩头区域存储有压缩信息,所述恢复头区域存储有对所述恢复数据区域的签名结果;所述实时操作系统通过所述恢复头区域对所述恢复数据区域进行验证;在所述恢复数据区域验证成功的情况下,基于所述压缩信息从所述恢复数据区域解压出所述原始镜像,并基于所述原始镜像进行固件升级。11.根据权利要求10所述的方法,其特征在于,在待升级的固件为基板控制器固件的情况下、固件恢复镜像为基板控制器恢复镜像的情况下,所述原始镜像为原始基板控制器镜像,基于所述原始镜像进行固件升级包括:关闭基板控制器启动镜像所在的闪存区域的访问功能,通过所述实时操作系统将所述原始基板控制器镜像写入所述基板控制器启动镜像所在的闪存区域中,并重启所述基板控制器。12.根据权利要求10所述的方法,其特征在于,在待升级的固件为基本输入输出系统固件、固件恢复镜像为基本输入输出系统恢复镜像的情况下,所述原始镜像为原始基本输入输出系统镜像,基于所述原始镜像进行固件升级包括:关闭服务器主机,通过所述实时操作系统将所述原始基本输入输出系统镜像写入运行基本输入输出系统镜像的闪存区域中,并重启所述服务器主机。13.根据权利要求10所述的方法,其特征在于,在待升级的固件为复杂可编程逻辑器件固件、固件恢复镜像为复杂可编程逻辑器件恢复镜像的情况下,所述原始镜像为原始复杂可编程逻辑器件镜像,基于所述原始镜像进行固件升级包括:停止所述复杂可编程逻辑器件固件的使用功能,通过所述实时操作系统将所述原始复杂可编程逻辑器件镜像写入运行复杂可编程逻辑器件镜像的闪存区域中,并重启所述复杂可编程逻辑器件。14.根据权利要求10所述的方法,其特征在于,在待升级的固件为现场可编程逻辑门阵列固件、固件恢复镜像为现场可编程逻辑门阵列恢复镜像的情况下,所述原始镜像为原始现场可编程逻辑门阵列镜像,基于所述原始镜像进行固件升级包括:停止所述现场可编程逻辑门阵列固件的使用功能,通过所述实时操作系统将所述原始现场可编程逻辑门阵列镜像写入运行现场可编程逻辑门阵列镜像的闪存区域中,并重启所述现场可编程逻辑门阵列。15.根据权利要求1所述的方法,其特征在于,包括:在所述实时操作系统检测到损坏的固件的情况下,所述实时操作系统从所述基板控制器的闪存中读取固件恢复镜像,其中,所述固件恢复镜像包括恢复头区域和恢复数据区域,所述恢复数据区域包括压缩数据区域以及压缩头区域,所述压缩数据区域存储有压缩后的原始镜像,所述压缩头区域存储有压缩信息,所述恢复头区域存储有对所述恢复数据区域的签名结果;所述实时操作系统通过所述恢复头区域对所述恢复数据区域进行验证;在所述恢复数据区域验证成功的情况下,基于所述压缩信息从所述恢复数据区域解压
出所述原始镜像,并基于所述原始镜像进行固件恢复。16.根据权利要求10或15所述的方法,其特征在于,所述恢复头区域包括第二可信根区域、第二代码签名区域以及第二镜像签名区域,所述第二可信根区域存储有根公钥,所述实时操作系统对所述恢复头区域进行验证包括:使用所述根公钥对所述第二代码签名区域中的代码签名公钥计算签名,并判断得到的签名与所述第二代码签名区域中的第一签名结果是否相同,其中,所述第一签名结果通过根私钥对所述代码签名公钥进行签名得到;在所述得到的签名与所述第一签名结果相同的情况下,使用所述代码签名公钥对所述恢复数据区域计算签名,并判断得到的签名与所述第二镜像签名区域中的第二签名结果是否相同,其中,所述第二签名结果通过代码签名私钥对所述恢复数据区域进行签名得到;在所述得到的签名与所述第二签名结果相同的情况下,确定所述恢复数据区域验证成功,在所述得到的签名与所述第二签名结果不同的情况下,确定所述恢复数据区域验证失败。17.一种安全防护装置,其特征在于,应用于基板控制器,所述基板控制器上运行有实时操作系统和非实时操作系统,所述装置包括:第一启动单元,用于在基板控制器上电之后,启动所述基板控制器中的所述实时操作系统;安全启动校验单元,用于在所述实时操作系统启动成功的情况下,通过所述实时操作系统执行所述基板控制器的安全启动校验;第二启动单元,用于在所述安全启动校验通过之后,启动所述基板控制器中的所述非实时操作系统;访问单元,用于所述非实时操作系统通过与所述实时操作系统通信的方式访问所述基板控制器的硬件总线。18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至16任一项中所述的安全防护方法。19.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至16任一项中所述的安全防护方法。20.一种基板控制器芯片,其特征在于,包括:存储单元以及与所述存储单元连接的处理单元,所述存储单元用于存储程序,所述处理单元用于运行所述程序,以执行如权利要求1至16中任意一项所述的安全防护方法。
技术总结
本申请实施例提供了一种安全防护方法、装置、电子设备以及基板控制器芯片,其中,该安全防护方法应用于基板控制,该方法包括:在基板控制器上电之后,启动基板控制器中的实时操作系统;在实时操作系统启动成功的情况下,通过实时操作系统执行基板控制器的安全启动校验;在安全启动校验通过之后,启动基板控制器中的非实时操作系统;非实时操作系统通过与实时操作系统通信的方式访问基板控制器的硬件总线。通过本申请,解决了相关技术中对基板控制器进行安全防护时,需要对基板控制器的硬件进行改动,成本较高的问题,进而达到了不需要对基板控制器的硬件进行改动,也不需要增加额外的器件的情况下,可以实现对基板控制器的安全防护的效果。的效果。的效果。
技术研发人员:高明 李宏宏 杨清娜
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2023.09.06
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:卡片打印机的制作方法 下一篇:一种多功能LED灯具的制作方法
