CN114721693A - 一种微处理器、bios固件更新方法、计算机设备及存储介质 - Google Patents
一种微处理器、bios固件更新方法、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114721693A CN114721693A CN202210289223.9A CN202210289223A CN114721693A CN 114721693 A CN114721693 A CN 114721693A CN 202210289223 A CN202210289223 A CN 202210289223A CN 114721693 A CN114721693 A CN 114721693A
- Authority
- CN
- China
- Prior art keywords
- firmware
- bios
- bios firmware
- engine unit
- control unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种微处理器、BIOS固件更新方法、计算机设备及存储介质,微处理器包括:控制单元、密码引擎单元和BIOS闪存;密码引擎单元设置在可信执行环境中,其中:控制单元,用于在获取到待更新的BIOS固件时,通过安全接口将BIOS固件中的计算信息发送给密码引擎单元,以指示密码引擎单元根据计算信息进行计算,得到计算结果;控制单元还用于在计算结果与预设第一结果匹配的情况下,将待更新的BIOS固件烧写至BIOS闪存中。这样,通过待更新的BIOS固件中的计算信息,实现了对于待更新的BIOS固件的安全验证,提高了BIOS固件更新的安全性,从而提高了计算机设备启动的安全性。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种微处理器、BIOS固件更新方法、计算机设备及存储介质。
背景技术
BIOS(Basic Input Output System,基本输入输出系统)固件是一组存储至计算机设备的BIOS闪存(Flash)的程序,其包括计算机设备中最重要的基本输入输出程序、开机后自检程序和系统自启动程序等。一旦BIOS固件的完整性被破坏,计算机设备则无法正常运行。而且,由于BIOS固件中存储有CPU(Central Processing Unit,中央处理单元)运行的首段代码,如果BIOS固件被植入恶意程序,则攻击者可以监控OS(Operating Systemem,操作系统),并且可以绕过操作系统重重防护记录系统输入输出信息,存在较大安全隐患。
目前,为了防止BIOS固件被恶意攻击,破坏其完整性。通常是在固件发送侧对需下发给计算机设备进行更新的BIOS固件进行校验,以保障BIOS固件的安全性。
然而,在上述BIOS固件更新方式中,计算机设备无法识别所接收的BIOS固件的真伪。如果固件发送侧与计算机设备的传输通道被攻破,则可以通过该传输通道向计算机设备推送带病毒的BIOS固件,使得计算机设备更新该带病毒的BIOS固件,造成严重的安全隐患。
发明内容
本申请实施例的目的在于提供一种微处理器、BIOS固件更新方法、计算机设备及存储介质,用以提高BIOS固件更新的安全性。
本申请实施例提供了一种微处理器,包括:控制单元、密码引擎单元和BIOS闪存,所述微处理器搭载有普通执行环境和可信执行环境,且所述普通执行环境和所述可信执行环境间通过安全接口进行信息交互;所述密码引擎单元设置在所述可信执行环境中,其中:所述控制单元,用于在获取到待更新的BIOS固件时,通过所述安全接口,将所述BIOS固件中的计算信息发送给所述密码引擎单元,以指示所述密码引擎单元根据所述计算信息进行计算,得到计算结果;所述控制单元,还用于在所述计算结果与预设第一结果匹配的情况下,将所述待更新的BIOS固件烧写至所述BIOS闪存中。
在上述实现过程中,微处理器的控制单元在获取到待更新的BIOS固件时,并不直接进行更新,而是通过安全接口,将BIOS固件的计算信息发送给可信执行环境中的密码引擎单元进行计算,进而在计算结果与预设第一结果匹配的情况下,才将待更新的BIOS固件烧写至BIOS闪存中。这样,通过待更新的BIOS固件中的计算信息,实现了对于待更新的BIOS固件的安全验证,提高了BIOS固件更新的安全性,从而提高了计算机设备启动的安全性。此外,上述实现方案中,通过密码引擎单元在可信执行环境中对计算信息进行计算,也即用于进行待更新的BIOS固件的验证的算法都运行在可信执行环境中,这就降低了算法被窃取的风险,从而降低了算法被针对性破解的风险,保证了信息验证的安全性,进一步提高了BIOS固件更新的安全性。
进一步地,所述计算信息为所述BIOS固件的固件信息;所述计算结果为所述BIOS固件的固件信息的哈希值;所述预设第一结果为所述BIOS固件中携带的所述BIOS固件的哈希值。
应理解,哈希值是通过哈希算法对数据进行计算的得到值。通常,对于相同的数据,其计算出的哈希值是确定的。基于此,在上述实现过程中,若对BIOS固件的固件信息计算出的哈希值,与BIOS固件中携带的哈希值相匹配,则可以确定固件信息未被篡改,从而达到对BIOS固件进行安全验证的效果,提高了BIOS固件更新的安全性。
进一步地,所述控制单元,还用于在将所述BIOS固件中的计算信息发送给所述密码引擎单元之前,通过所述安全接口,将所述BIOS固件中携带的证书发送给所述密码引擎单元,以指示所述密码引擎单元对所述证书进行验证,得到验证结果;所述控制单元具体用于,在所述验证结果与预设第二结果匹配时,将所述BIOS固件中的计算信息发送给所述密码引擎单元。
在上述实现过程中,通过先对BIOS固件中携带的证书进行验证,从而在验证通过后,才对BIOS固件中的计算信息进行验证。这样,通过证书与计算信息的双重验证,可以进一步提高BIOS固件的伪造难度,从而进一步提高BIOS固件更新的安全性。此外,上述实现方案中,通过密码引擎单元在可信执行环境中对证书进行验证,也即用于进行证书验证的算法与对计算信息进行计算的算法都运行在可信执行环境中,从而降低了算法被窃取的风险,进一步降低了算法被针对性破解的风险,保证了信息验证的安全性,提高了BIOS固件更新的安全性。
进一步地,所述控制单元,还用于在将所述证书发送给所述密码引擎单元之前,通过所述安全接口,将所述证书的公钥发送给所述密码引擎单元,以指示所述密码引擎单元对所述公钥进行哈希计算,得到所述公钥的唯一标识;所述控制单元具体用于,在所述唯一标识与预设标识匹配时,将所述证书发送给所述密码引擎单元。
在上述实现过程中,通过先对证书的公钥进行哈希计算,验证证书的公钥的合法性,进而在公钥合法时,才进一步进行证书验证。这样,一方面可以基于合法的公钥实现对于证书的验证;另一方面,通过公钥、证书与计算信息的三重验证,可以更进一步提高BIOS固件的伪造难度,从而更进一步提高BIOS固件更新的安全性。此外,上述实现方案中,通过密码引擎单元在可信执行环境中对公钥进行哈希计算,也即用于进行公钥哈希计算、证书验证、对计算信息进行计算的算法都运行在可信执行环境中,从而降低了各算法被窃取的风险,进一步降低了算法被针对性破解的风险,保证了信息验证的安全性,提高了BIOS固件更新的安全性。
进一步地,所述待更新的BIOS固件为基础固件和/或系统固件;所述基础固件为运行在所述可信执行环境中的固件,所述基础固件在被执行时,用于实现与所述微处理器相关的操作;所述系统固件为运行在所述普通执行环境中的固件,所述系统固件在被执行时,用于启动操作系统。
在上述实现过程中,将BIOS固件按照实现的操作划分为基础固件和系统固件两类,两类BIOS固件均可通过上述方式更新。这样,在进行BIOS固件更新时,就可以根据BIOS固件的类型,进行不同的管理与操作,实现不同的安全性能,满足不同的安全需要。例如,基础固件实现的是与微处理器相关的操作,一旦基础固件被篡改,其造成的危害往往更胜于系统固件被篡改时造成的危害。为此,在进行BIOS固件更新时,可以将基础固件烧写至BIOS闪存中对应于可信执行环境的存储区,使其具有更高的安全性能,而将系统固件烧写至BIOS闪存中对应于普通执行环境的存储区,达到相区分的管理操作。
进一步地,在所述待更新的BIOS固件包括所述基础固件时,所述控制单元具体用于:在最高运行权限下,将所述基础固件烧写至所述BIOS闪存中对应于所述可信执行环境的存储区。
应理解,基础固件实现的是与微处理器相关的操作,一旦基础固件被篡改,其造成的危害往往更胜于系统固件被篡改时造成的危害。在上述实现过程中,通过配置控制单元,在最高运行权限下才能将基础固件烧写至BIOS闪存中对应于可信执行环境的存储区,可以有效保证基础固件写入后的安全性,同时也保证系统在BIOS固件更新过程中的安全性。
进一步地,所述控制单元,还用于在所述待更新的BIOS固件烧写结束时,获取所述BIOS闪存中当前烧入的BIOS固件信息对应的计算结果;所述控制单元,还用于在所述BIOS固件信息对应的计算结果与所述预设第一结果不匹配时,重新将所述待更新的BIOS固件烧写至所述BIOS闪存中。
在上述实现过程中,通过在待更新的BIOS固件烧写结束时,对当前烧入的BIOS固件信息进行计算,并对计算结果进行匹配,在不匹配时,重新将待更新的BIOS固件烧写至BIOS闪存中。这样,在待更新的BIOS固件烧写失败时,该情况即可被捕捉到,从而可以重新进行烧写,以提高待更新的BIOS固件被成功更新的概率。
本申请实施例还提供了一种BIOS固件更新方法,应用于微处理器中;所述微处理器包括控制单元、密码引擎单元和BIOS闪存,所述微处理器搭载有普通执行环境和可信执行环境,且所述普通执行环境和所述可信执行环境通过安全接口进行信息交互;所述密码引擎单元运行在所述可信执行环境中;所述方法包括:通过所述控制单元在获取到待更新的BIOS固件时,通过所述安全接口,将所述BIOS固件中的计算信息发送给所述密码引擎单元,以指示所述密码引擎单元根据所述计算信息进行计算,得到计算结果;通过所述控制单元确定出所述计算结果与预设第一结果匹配的情况下,将所述BIOS固件烧写至所述BIOS闪存中。
在上述实现过程中,通过待更新的BIOS固件中的计算信息,实现了对于待更新的BIOS固件的安全验证,提高了BIOS固件更新的安全性,从而提高了计算机设备启动的安全性。此外,上述实现方案中,通过密码引擎单元在可信执行环境中对计算信息进行计算,也即用于进行待更新的BIOS固件的验证的算法都运行在可信执行环境中,这就降低了算法被窃取的风险,从而降低了算法被针对性破解的风险,保证了信息验证的安全性,进一步提高了BIOS固件更新的安全性。
进一步地,所述计算信息为所述BIOS固件的固件信息;所述计算结果为所述BIOS固件的固件信息的哈希值;所述预设第一结果为所述BIOS固件中携带的所述BIOS固件的哈希值。
进一步地,在将所述BIOS固件中的计算信息发送给所述密码引擎单元之前,所述方法还包括:通过所述控制单元和所述安全接口,将所述BIOS固件中携带的证书发送给所述密码引擎单元,以指示所述密码引擎单元对所述证书进行验证,得到验证结果;通过所述控制单元确定出所述验证结果与预设第二结果匹配的情况下,执行将所述BIOS固件中的计算信息发送给所述密码引擎单元的步骤。
进一步地,在将所述BIOS固件中携带的证书发送给所述密码引擎单元之前,所述方法还包括:通过所述控制单元和所述安全接口,将所述证书的公钥发送给所述密码引擎单元,以指示所述密码引擎单元对所述公钥进行哈希计算,得到所述公钥的唯一标识;通过所述控制单元确定出所述唯一标识与预设标识匹配的情况下,执行将所述BIOS固件中携带的证书发送给所述密码引擎单元的步骤。
进一步地,所述待更新的BIOS固件为基础固件和/或系统固件;所述基础固件为运行在所述可信执行环境中的固件,所述基础固件在被执行时,用于实现与所述微处理器相关的操作;所述系统固件为运行在所述普通执行环境中的固件,所述系统固件在被执行时,用于启动操作系统。
进一步地,在所述待更新的BIOS固件包括所述基础固件时,将所述BIOS固件烧写至BIOS闪存中,包括:在最高运行权限下,通过所述控制单元将所述基础固件烧写至所述BIOS闪存中对应于所述可信执行环境的存储区。
进一步地,所述方法还包括:在所述待更新的BIOS固件烧写结束时,通过所述控制单元获取所述BIOS闪存中当前烧入的BIOS固件信息对应的计算结果;通过所述控制单元确定出所述BIOS固件信息对应的计算结果与所述预设第一结果不匹配的情况下,重新将所述待更新的BIOS固件烧写至BIOS闪存中。
本申请实施例还提供了一种计算机设备,包括前述的微处理器。
本申请实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个指令,所述一个或者多个指令在被一个或者多个微处理器执行时,使得所述微处理器执行上述任一种的BIOS固件更新方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种微处理器的基本结构示意图;
图2为本申请实施例提供的一种基于基础固件的系统软件栈的架构示意图;
图3为本申请实施例提供的某种类型的处理器架构示意图;
图4为本申请实施例提供的一种BIOS固件更新方法的流程示意图;
图5为本申请实施例提供的一种示例方案中的架构示意图;
图6为本申请实施例提供的一种服务器与计算机设备交互的场景示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
实施例一:
为了降低BIOS固件的更新风险,提高更新BIOS固件时的安全性,本申请实施例中提供了一种微处理器,以及一种应用于微处理器中的BIOS固件更新方法。
可以参见图1所示,图1示出了本申请实施例所提供的微处理器,包括控制单元、密码引擎单元和BIOS闪存。此外,微处理器搭载有普通执行环境和可信执行环境,且普通执行环境和可信执行环境间通过安全接口进行信息交互。
需要说明的是,在计算机领域,某些类型的处理器架构会将处理器硬件资源划分成了secure world(可信执行环境)和normal world(普通执行环境)两个部分。当处理器运行在可信执行环境时,可以访问所有的硬件资源,但当处理器运行在普通执行环境时,只能访问普通执行环境的资源。简单的说,就是普通的应用是运行在普通执行环境中的,对安全性要求高的应用则运行在可信执行环境中。
在本申请实施例中,微处理器上也搭载有普通执行环境和可信执行环境,并且密码引擎单元设置在可信执行环境中。
在本申请实施例中,控制单元,用于在获取到待更新的BIOS固件时,通过安全接口,将BIOS固件中的计算信息发送给密码引擎单元,以指示密码引擎单元根据计算信息进行计算,得到计算结果。
控制单元,还用于在计算结果与预设第一结果匹配的情况下,将待更新的BIOS固件烧写至BIOS闪存中。
需要理解的是,在本申请实施例中,固件发送侧设备在下发待更新的BIOS固件后,待更新的BIOS固件会被转交给控制单元,从而实现对于待更新的BIOS固件的获取。
在本申请实施例中,安全接口可以是SMC(Secure Monitor Call,安全监控调用)接口,从而控制单元与密码引擎单元之间通过SMC接口实现信息交互。
可选的,在本申请实施例中,计算信息可以是待更新的BIOS固件的固件信息(包括待更新的BIOS固件的代码内容),而计算结果可以为该待更新的BIOS固件的固件信息的哈希值,相应的,预设第一结果为该待更新的BIOS固件中携带的该BIOS固件的哈希值。这样,通过判断两哈希值是否匹配,即可确定固件信息是否被篡改,从而实现对于待更新的BIOS固件的安全验证,提高BIOS固件更新的安全性。
为计算得到待更新的BIOS固件的固件信息的哈希值,密码引擎单元可以执行预设的哈希算法(例如SM3、SHA、MD4、MD5等算法),以得到计算结果,并通过安全接口返回给控制单元。
在本申请实施例中,判断计算结果与预设第一结果是否匹配的具体方式可以是:判断计算结果与预设第一结果是否相等,或者计算结果与预设第一结果的偏差是否在预先偏差范围内。
在本申请实施例中,预设第一结果可以携带于待更新的BIOS固件中。
可选的,在本申请实施例的一种可行实施方式中,控制单元,还用于在将BIOS固件中的计算信息发送给密码引擎单元之前,通过安全接口,将BIOS固件中携带的证书发送给密码引擎单元,以指示密码引擎单元对证书进行验证,得到验证结果,进而在验证结果与预设第二结果匹配时,才将BIOS固件中的计算信息发送给密码引擎单元。
这样,通过证书与计算信息的双重验证,可以进一步提高BIOS固件的伪造难度,从而进一步提高BIOS固件更新的安全性。此外,用于进行证书验证的算法与对计算信息进行计算的算法都运行在可信执行环境中,从而也降低了两种算法被同时窃取的风险,进一步降低了算法被针对性破解的风险,保证了信息验证的安全性,提高了BIOS固件更新的安全性。
需要说明的是,上述判断验证结果与预设第二结果是否匹配的方式可以是:判断验证结果与预设第二结果是否相同。
在上述可行实施方式中,预设第二结果为表征验证通过的结果。
在上述可行实施方式中,密码引擎单元可以采用SM2、SHA等验签算法对证书进行验签。
应理解,证书可以是通过私钥进行签名得到的,此时,验签过程中需要使用与私钥对应的公钥进行验签。在上述可行实施方式的一种可选实施例中,该公钥可以预先存储于微处理器中,例如存储于微处理器的efuse(efuse是一次性可编程存储器,在微处理器出厂之前会被写入信息)中。
而在上述可行实施方式的一种可选实施例中,证书的公钥也可以是携带于待更新的BIOS固件中的。此时,为了进一步提高BIOS固件更新的安全性,控制单元还可以在将证书发送给密码引擎单元之前,先通过安全接口,将证书的公钥发送给密码引擎单元,以指示密码引擎单元对公钥进行哈希计算,得到公钥的唯一标识,进而在唯一标识与预设标识匹配时,将证书发送给密码引擎单元。
这样,一方面可以保证基于合法的公钥实现对于证书的验证;而另一方面,也可以通过公钥、证书与计算信息的三重验证,更进一步提高BIOS固件的伪造难度,从而更进一步提高BIOS固件更新的安全性。此外,用于进行公钥的哈希计算、证书验证、对计算信息进行计算的算法都运行在可信执行环境中,从而也降低了三种算法被同时窃取的风险,进一步降低了算法被针对性破解的风险,保证了信息验证的安全性,提高了BIOS固件更新的安全性。
在上述可行实施方式中,计算出的公钥的唯一标识可以是公钥的哈希值,而预设标识可以是预先设定的公钥哈希值。这样,预先保存的是公钥哈希值而非公钥,从而就降低了计算机设备侧的公钥丢失风险。
在上述可行实施方式中,密码引擎单元可以采用SM3、SHA、MD4、MD5等算法对公钥进行哈希计算。
需要说明的是,上述判断公钥的唯一标识与预设标识是否匹配的方式可以是:判断公钥的唯一标识与预设标识是否相同,或者判断公钥的唯一标识与预设标识的偏差是否在预先偏差范围内。
在上述可行实施方式中,证书的公钥和预设第一结果可以携带于证书内。从而控制单元在获取到待更新的BIOS固件后,可以通过对证书进行解析,得到证书的公钥和预设第一结果。
在本申请实施例中,可以按照固件实现的操作,将固件划分为可信根、基础固件和系统固件三类。请参见图2所示,图2示出了一种基于基础固件的系统软件栈,包括三层固件:可信根、基础固件以及系统固件。其中,可信根可以是微处理器内置的可信启动根,负责对基础固件进行验签。作为其他示例,系统软件栈也可以不包括该可信根。基础固件主要用于微处理器的基本初始化,并提供相关服务。例如,基础固件可以用于实现初始化服务、电源管理、恢复(诸如镜像恢复Recover)、RAS(Reliability(可靠性)、Availability(可用性)和Serviceability(可服务性))分析、安全平台架构支持、安全监控器、安全启动、SPM(Secure Partition Manager,安全分区管理器)调度等。此外,基础固件还可以负责加载运行在安全态下的安全操作系统,例如,TEE(Trusted Execution Environment,可信执行环境)OS。根据应用场景不同,系统固件可以具有两种实现方式,如图2所示的,系统固件可以实现为面向桌面、服务器等领域的统一的UEFI(Unified Extensible FirmwareInterface,可扩展固件接口),或者可以实现为面向嵌入式领域的U-Boot(UniversalBoot,通用引导加载程序)。如图2所示,系统固件运行在普通执行环境中。此外,基础固件、系统固件以及操作系统OS(或者VM(Virtual Machine,虚拟机))可以与带外控制系统(例如EC(Embedded Controller,嵌入式控制器)、BMC(Baseboard Management Controller,基板管理控制器)等)进行通信。简单来讲,基础固件为运行在可信执行环境中的固件,基础固件在被执行时,用于实现与微处理器相关的操作;系统固件为运行在普通执行环境中的固件,系统固件在被执行时,用于启动操作系统。
需要说明的是,在某种类型的处理器架构中,会对不同的应用划分不同的运行权限。例如图3所示的某种类型的处理器架构图,从低到高依次划分有EL0至EL3这权限从低到高的共4种运行权限,运行权限越高,所允许执行的操作、所允许调用的资源也就越多。
在本申请实施例中,考虑到基础固件实现的是与微处理器相关的操作,相当于微处理器的“驱动程序”,一旦被篡改,其造成的危害往往更胜于系统固件被篡改时造成的危害。因此,在本申请实施例中,可以将基础固件至于可信执行环境中,并配置最高权限,使得一般的运行权限不允许进行基础固件的烧写。
这样,在获取到的待更新的BIOS固件包括有基础固件时,为了保证待更新的BIOS固件的顺利烧写,可以在最高运行权限下,将属于基础固件的待更新的BIOS固件烧写至BIOS闪存中对应于可信执行环境的存储区。
应理解,该执行待更新的BIOS固件烧写的程序可以是微处理器内已安装的负责固件烧写的基础固件,而基础固件具有最高运行权限。
在本申请实施例中,若获取到的待更新的BIOS固件包括有系统固件,则可以将系统固件烧写至BIOS闪存中对应于普通执行环境的存储区。此时,执行待更新的BIOS固件烧写的程序也可以是微处理器内已安装的负责固件烧写的基础固件。
在本申请实施例中,若获取到的待更新的BIOS固件既包括有基础固件,又包括有系统固件,则可以将基础固件烧写至BIOS闪存中对应于可信执行环境的存储区,将系统固件烧写至BIOS闪存中对应于普通执行环境的存储区,实现对于待更新的BIOS固件的烧写更新。
需要理解的是,考虑到在待更新的BIOS固件的烧写过程中,可能由于各种因素导致烧写失败。为了提高待更新的BIOS固件的烧写成功率,在本申请实施例中,控制单元还可以用于在待更新的BIOS固件烧写结束时,获取BIOS闪存中当前烧入的BIOS固件信息对应的计算结果,并在BIOS固件信息对应的计算结果与预设第一结果不匹配时,重新将待更新的BIOS固件烧写至BIOS闪存中。这样,在待更新的BIOS固件烧写失败时,该情况即可被捕捉到,从而可以重新进行烧写,提高待更新的BIOS固件被成功烧写的概率。
需要说明的是,在本申请实施例中,可以预先设置可烧入的次数阈值。若针对待更新的BIOS固件连续烧写失败的次数超过该设定好的次数阈值,则可以认为是BIOS闪存存在硬件问题(例如存储器被破坏等),此时停止对待更新的BIOS固件进行重新烧写,并且还可以反馈表征更新失败的信息,以提示用户BIOS闪存可能存在硬件问题,需要检修。
需要说明的是,本申请实施例中所述的控制单元可以是微处理器中运行BIOS系统的内核,而密码引擎单元可以是微处理器中的密码引擎。
应理解,在本申请实施例中,由于密码引擎单元运行于可信执行环境中。为了保证控制单元可以可靠地调用到密码引擎单元,控制单元在将待更新的BIOS固件中的需计算的信息(例如前文所述的计算信息、证书、公钥等)发送给密码引擎单元之前,微处理器可以先将控制单元的运行权限调整为最高运行权限,使控制单元运行在可行执行环境中,然后通过安全接口调用密码引擎单元,对需计算的信息进行计算。
参见图4所示,图4示出了本申请实施例中提供的应用于前述微处理器中的BIOS固件更新方法。该BIOS固件更新方法与前文描述的微处理器的控制单元的功能相适配,包括:
S401:通过控制单元在获取到待更新的BIOS固件时,通过安全接口,将BIOS固件中的计算信息发送给密码引擎单元,以指示密码引擎单元根据所述计算信息进行计算,得到计算结果。
S402:通过控制单元确定出计算结果与预设第一结果匹配的情况下,将BIOS固件烧写至BIOS闪存中。
其中,计算信息可以为待更新的BIOS固件的固件信息;计算结果可以为待更新的BIOS固件的固件信息的哈希值;预设第一结果可以为待更新的BIOS固件中携带的BIOS固件哈希值。
可选的,在将待更新的BIOS固件中的计算信息发送给密码引擎单元之前,BIOS固件更新方法还可以包括:通过控制单元和所述安全接口,将待更新的BIOS固件中携带的证书发送给密码引擎单元,以指示密码引擎单元对证书进行验证,得到验证结果,然后通过控制单元确定出该验证结果与预设第二结果匹配时,执行将待更新的BIOS固件中的计算信息发送给密码引擎单元的步骤。
可选的,在将待更新的BIOS固件中携带的证书发送给密码引擎单元之前,BIOS固件更新方法还可以包括:通过控制单元和安全接口,将证书的公钥发送给密码引擎单元,以指示密码引擎单元对公钥进行哈希计算,得到公钥的唯一标识,然后通过控制单元确定出所述唯一标识与预设标识匹配的情况下,执行将待更新的BIOS固件中携带的证书发送给密码引擎单元的步骤。
可选的,待更新的BIOS固件可以为基础固件和/或系统固件。基础固件和系统固件的定义参见前文所述。
可选的,在待更新的BIOS固件包括基础固件时,将待更新的BIOS固件烧写至BIOS闪存中的过程可以包括:在最高运行权限下,通过控制单元将基础固件烧写至BIOS闪存中对应于可信执行环境的存储区。
可选的,BIOS固件更新方法还可以包括:在待更新的BIOS固件烧写结束时,通过控制单元获取BIOS闪存中当前烧入的BIOS固件信息对应的计算结果,然后在通过控制单元确定出BIOS固件信息对应的计算结果与预设第一结果不匹配的情况下,重新将待更新的BIOS固件烧写至BIOS闪存中。
应理解,出于描述简洁的考量,部分在前文针对微处理器的介绍中已经描述过的内容,在关于BIOS固件更新方法的部分不再赘述,但是相关内容在BIOS固件更新方法的部分同样适用。
下面,为了便于更好的理解本申请实施例所提供的方案,以控制单元为微处理器内运行BIOS系统的内核(后文简称为BIOS内核),密码引擎单元为微处理器中配置好的密码引擎,密码引擎可以实现SM2算法和SM3算法的场景为例,为本申请做进一步示例说明。
参见图5所示,密码引擎是可信执行环境中的部件,而BIOS内核正常情况下运行在普通执行环境中,不能直接访问密码引擎。但需要说明的是,在固件更新时,BIOS内核会临时调整运行权限至EL3,并运行在可信执行环境中,通过SMC接口调用密码引擎的相应算法接口(属于基础固件中的服务)实现固件更新前的安全验证。在本示例中,密码引擎采用SM2算法与SM3算法。需要说明的是,如图5所示,BIOS内核中可以具有标识为Hash和Verify的两个SMC接口,这两个SMC接口分别用于实现对密码引擎的SM3算法接口和SM2算法接口的调用。
参见图6所示,外部的固件管理服务器向本地的计算机设备下发待更新的BIOS固件,待更新的BIOS固件中携带有证书。
计算机设备的BIOS内核解析证书,得到证书内所包含的一个公钥明文与待更新的BIOS固件的hash值。
BIOS内核将公钥明文通过Hash接口传给可信执行环境中的基础固件,基础固件会调用密码引擎的SM3算法接口来计算公钥的hash值,然后将hash值通过SMC接口传回给BIOS内核。BIOS内核将该hash值与efuse中的HBK(Hash Of Secure Boot Public Key,安全启动公钥哈希值)进行比较,如果该hash值与HBK相等,则BIOS内核将证书信息通过Verify接口传给基础固件,基础固件会调用密码引擎的SM2算法接口,通过验证过的公钥明文来验证证书的合法性,然后通过SMC接口返回表征是否验证成功的消息。
若验证成功,BIOS内核提取从证书中解析得到的hash值,然后将待更新的BIOS固件的固件信息通过Hash接口传给基础固件。基础固件调用密码引擎的SM3算法接口计算待更新的BIOS固件的固件信息的hash值,然后通过SMC接口将该hash值传给BIOS内核。BIOS内核比较证书中的hash值是否与密码引擎传来的hash值相等。如果相等,确定待更新的BIOS固件合法,从而将待更新的BIOS固件烧入BIOS闪存。如果上述任一处验证不通过,则停止更新。
需要说明的是,在将待更新的BIOS固件烧入BIOS闪存的过程中,数据可能会出错,出现更新失败的情形。为此,在本申请实施例中,在每一次对待更新的BIOS固件烧写结束时,即获取BIOS闪存中当前烧入的BIOS固件信息,通过Hash接口传给可信执行环境中的基础固件,基础固件调用密码引擎的SM3算法接口计算该当前烧入的BIOS固件信息对应的hash值,并通过SMC接口将该hash值传给BIOS内核。
然后BIOS内核判断该hash值是否与之前计算得到的hash值(或者是证书中解析得到的hash值)是否一致。若一致,确定更新成功,退出更新;若不一致,重新将待更新的BIOS固件烧入BIOS闪存。
上述烧入过程是一个多次重复的过程。在本申请实施例中,预先设置有可烧入的次数阈值。若针对待更新的BIOS固件连续烧写失败的次数超过该设定好的次数阈值,则确定BIOS闪存存在硬件问题。
本申请实施例中,还提供了一种计算机设备,该计算机设备内包括有前文描述的微处理器。
应理解,计算机设备内还可以具有除上述微处理器以外的其他部件,例如还可以具有存储器、通信总线、通信模组等组件。本申请实施例中所述的计算机设备可以是服务器、主机、电脑、移动终端等设备,但不作为限制。
本实施例还提供了一种计算机可读存储介质,如软盘、光盘、硬盘、闪存、U盘、SD(Secure Digital Memory Card,安全数码卡)卡、MMC(Multimedia Card,多媒体卡)卡等,在该计算机可读存储介质中存储有实现上述各个步骤的一个或者多个指令,这一个或者多个指令被一个或者多个微处理器执行时,使得所述微处理器执行前文描述的BIOS固件更新方法。在此不再赘述。
基于本申请实施例所提供的微处理器、BIOS固件更新方法、计算机设备及存储介质,可以在进行BIOS固件更新之前,先实现对BIOS固件的安全性验证,提高了BIOS固件更新的安全性,从而提高了设备启动的安全性。此外,本申请实施例通过密码引擎单元在可信执行环境中对进行信息计算与验证,用于进行待更新的BIOS固件的验证的算法都运行在可信执行环境中,这就降低了算法被窃取的风险,从而降低了算法被针对性破解的风险,保证了信息验证的安全性,进一步提高了BIOS固件更新的安全性。
在本申请所提供的实施例中,应该理解到,所揭露设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的通信连接可以是通过一些通信接口实现,单元间的通信连接可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
在本文中,多个是指两个或两个以上。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种微处理器,其特征在于,所述微处理器包括控制单元、密码引擎单元和BIOS闪存,所述微处理器搭载有普通执行环境和可信执行环境,且所述普通执行环境和所述可信执行环境间通过安全接口进行信息交互;所述密码引擎单元设置在所述可信执行环境中,其中:
所述控制单元,用于在获取到待更新的BIOS固件时,通过所述安全接口,将所述BIOS固件中的计算信息发送给所述密码引擎单元,以指示所述密码引擎单元根据所述计算信息进行计算,得到计算结果;
所述控制单元,还用于在所述计算结果与预设第一结果匹配的情况下,将所述待更新的BIOS固件烧写至所述BIOS闪存中。
2.如权利要求1所述的微处理器,其特征在于,所述计算信息为所述BIOS固件的固件信息;所述计算结果为所述BIOS固件的固件信息的哈希值;所述预设第一结果为所述BIOS固件中携带的所述BIOS固件的哈希值。
3.如权利要求1所述的微处理器,其特征在于,
所述控制单元,还用于在将所述BIOS固件中的计算信息发送给所述密码引擎单元之前,通过所述安全接口,将所述BIOS固件中携带的证书发送给所述密码引擎单元,以指示所述密码引擎单元对所述证书进行验证,得到验证结果;
所述控制单元具体用于,在所述验证结果与预设第二结果匹配时,将所述BIOS固件中的计算信息发送给所述密码引擎单元。
4.如权利要求3所述的微处理器,其特征在于,
所述控制单元,还用于在将所述证书发送给所述密码引擎单元之前,通过所述安全接口,将所述证书的公钥发送给所述密码引擎单元,以指示所述密码引擎单元对所述公钥进行哈希计算,得到所述公钥的唯一标识;
所述控制单元具体用于,在所述唯一标识与预设标识匹配时,将所述证书发送给所述密码引擎单元。
5.如权利要求1-4任一项所述的微处理器,其特征在于,所述待更新的BIOS固件为基础固件和/或系统固件;
所述基础固件为运行在所述可信执行环境中的固件,所述基础固件在被执行时,用于实现与所述微处理器相关的操作;所述系统固件为运行在所述普通执行环境中的固件,所述系统固件在被执行时,用于启动操作系统。
6.如权利要求5所述的微处理器,其特征在于,在所述待更新的BIOS固件包括所述基础固件时,所述控制单元具体用于:
在最高运行权限下,将所述基础固件烧写至所述BIOS闪存中对应于所述可信执行环境的存储区。
7.如权利要求1-4任一项所述的微处理器,其特征在于,
所述控制单元,还用于在所述待更新的BIOS固件烧写结束时,获取所述BIOS闪存中当前烧入的BIOS固件信息对应的计算结果;
所述控制单元,还用于在所述BIOS固件信息对应的计算结果与所述预设第一结果不匹配时,重新将所述待更新的BIOS固件烧写至所述BIOS闪存中。
8.一种BIOS固件更新方法,其特征在于,应用于微处理器中;所述微处理器包括控制单元、密码引擎单元和BIOS闪存,所述微处理器搭载有普通执行环境和可信执行环境,且所述普通执行环境和所述可信执行环境通过安全接口进行信息交互;所述密码引擎单元运行在所述可信执行环境中;所述方法包括:
通过所述控制单元在获取到待更新的BIOS固件时,通过所述安全接口,将所述BIOS固件中的计算信息发送给所述密码引擎单元,以指示所述密码引擎单元根据所述计算信息进行计算,得到计算结果;
通过所述控制单元确定出所述计算结果与预设第一结果匹配的情况下,将所述BIOS固件烧写至所述BIOS闪存中。
9.如权利要求8所述的BIOS固件更新方法,其特征在于,所述计算信息为所述BIOS固件的固件信息;所述计算结果为所述BIOS固件的固件信息的哈希值;所述预设第一结果为所述BIOS固件中携带的所述BIOS固件的哈希值。
10.如权利要求8所述的BIOS固件更新方法,其特征在于,在将所述BIOS固件中的计算信息发送给所述密码引擎单元之前,所述方法还包括:
通过所述控制单元和所述安全接口,将所述BIOS固件中携带的证书发送给所述密码引擎单元,以指示所述密码引擎单元对所述证书进行验证,得到验证结果;
通过所述控制单元确定出所述验证结果与预设第二结果匹配的情况下,执行将所述BIOS固件中的计算信息发送给所述密码引擎单元的步骤。
11.如权利要求10所述的BIOS固件更新方法,其特征在于,在将所述BIOS固件中携带的证书发送给所述密码引擎单元之前,所述方法还包括:
通过所述控制单元和所述安全接口,将所述证书的公钥发送给所述密码引擎单元,以指示所述密码引擎单元对所述公钥进行哈希计算,得到所述公钥的唯一标识;
通过所述控制单元确定出所述唯一标识与预设标识匹配的情况下,执行将所述BIOS固件中携带的证书发送给所述密码引擎单元的步骤。
12.如权利要求8-11任一项所述的BIOS固件更新方法,其特征在于,所述待更新的BIOS固件为基础固件和/或系统固件;
所述基础固件为运行在所述可信执行环境中的固件,所述基础固件在被执行时,用于实现与所述微处理器相关的操作;所述系统固件为运行在所述普通执行环境中的固件,所述系统固件在被执行时,用于启动操作系统。
13.如权利要求12所述的BIOS固件更新方法,其特征在于,在所述待更新的BIOS固件包括所述基础固件时,将所述BIOS固件烧写至BIOS闪存中,包括:
在最高运行权限下,通过所述控制单元将所述基础固件烧写至所述BIOS闪存中对应于所述可信执行环境的存储区。
14.如权利要求8-11任一项所述的BIOS固件更新方法,其特征在于,所述方法还包括:
在所述待更新的BIOS固件烧写结束时,通过所述控制单元获取所述BIOS闪存中当前烧入的BIOS固件信息对应的计算结果;
通过所述控制单元确定出所述BIOS固件信息对应的计算结果与所述预设第一结果不匹配的情况下,重新将所述待更新的BIOS固件烧写至BIOS闪存中。
15.一种计算机设备,其特征在于,包括:如权利要求1-7任一项所述的微处理器。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个指令,所述一个或者多个指令在被一个或者多个微处理器执行时,使得所述微处理器执行如权利要求8-14中任一项所述的BIOS固件更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210289223.9A CN114721693A (zh) | 2022-03-22 | 2022-03-22 | 一种微处理器、bios固件更新方法、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210289223.9A CN114721693A (zh) | 2022-03-22 | 2022-03-22 | 一种微处理器、bios固件更新方法、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114721693A true CN114721693A (zh) | 2022-07-08 |
Family
ID=82240763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210289223.9A Pending CN114721693A (zh) | 2022-03-22 | 2022-03-22 | 一种微处理器、bios固件更新方法、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114721693A (zh) |
-
2022
- 2022-03-22 CN CN202210289223.9A patent/CN114721693A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2681689B1 (en) | Protecting operating system configuration values | |
EP3036623B1 (en) | Method and apparatus for modifying a computer program in a trusted manner | |
EP1805571B1 (en) | Verifying binding of an initial trusted device to a secured processing system | |
JP4855679B2 (ja) | サーバ管理コプロセッササブシステム内部のtcpaによる信頼性の高いプラットフォームモジュール機能のカプセル化 | |
US8806221B2 (en) | Securely recovering a computing device | |
US8789037B2 (en) | Compatible trust in a computing device | |
US11106798B2 (en) | Automatically replacing versions of a key database for secure boots | |
EP1825342A1 (en) | Method and device for verifying the integrity of platform software of an electronic device | |
EP1872231A2 (en) | Secure boot | |
US10936722B2 (en) | Binding of TPM and root device | |
CN112148314B (zh) | 一种嵌入式系统的镜像验证方法、装置、设备及存储介质 | |
CN115062307B (zh) | 基于Open POWER的程序完整性校验方法、系统、终端及存储介质 | |
US9122864B2 (en) | Method and apparatus for transitive program verification | |
CN113360914A (zh) | 一种bios更新的方法、系统、设备及介质 | |
CN108139901B (zh) | 使用外部设备的运行时间验证 | |
US12067121B2 (en) | Trusted boot method and apparatus, electronic device, and readable storage medium | |
CN111241548B (zh) | 计算机启动方法 | |
CN112861137A (zh) | 安全固件 | |
CN114721693A (zh) | 一种微处理器、bios固件更新方法、计算机设备及存储介质 | |
CN117494232B (zh) | 固件的执行方法和装置、系统、存储介质及电子设备 | |
US20240037216A1 (en) | Systems And Methods For Creating Trustworthy Orchestration Instructions Within A Containerized Computing Environment For Validation Within An Alternate Computing Environment | |
CN117874773B (zh) | 基于安全等级管控策略的操作系统安全启动方法及装置 | |
WO2024078159A1 (zh) | 完整性度量方法及装置 | |
JP2023026017A (ja) | 起動検証プログラム、情報処理装置および起動検証方法 | |
CN116541890A (zh) | 一种文件完整性校验方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |