CN115357293A - 升级签名固件的方法、电子设备和存储介质 - Google Patents

升级签名固件的方法、电子设备和存储介质 Download PDF

Info

Publication number
CN115357293A
CN115357293A CN202211037324.3A CN202211037324A CN115357293A CN 115357293 A CN115357293 A CN 115357293A CN 202211037324 A CN202211037324 A CN 202211037324A CN 115357293 A CN115357293 A CN 115357293A
Authority
CN
China
Prior art keywords
firmware
message digest
upgraded
algorithm type
upgrading
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
Application number
CN202211037324.3A
Other languages
English (en)
Inventor
纪大峣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Rockchip Electronics Co Ltd
Original Assignee
Rockchip Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Rockchip Electronics Co Ltd filed Critical Rockchip Electronics Co Ltd
Priority to CN202211037324.3A priority Critical patent/CN115357293A/zh
Publication of CN115357293A publication Critical patent/CN115357293A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Abstract

本发明公开了一种升级签名固件的方法、电子设备和存储介质,获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于消息摘要算法类型计算与数字签名算法类型和公钥参数信息相对应的消息摘要;将消息摘要和系统标记写入命令行参数中,并将公钥参数信息、数字签名算法类型和熔断标记写入引导通信分区的第一位置;将加密后的消息摘要和消息摘要算法类型写入引导通信分区的第二位置;若根据系统标记和熔断标记确定需要校验,则对签名后的待升级固件进行校验;校验成功则对签名后的待升级固件进行升级,确保固件签名正确的前提下才对固件进行升级,且避免了升级没有签名的固件或使用错误密钥签名的固件,从而提高签名固件升级的可靠性。

Description

升级签名固件的方法、电子设备和存储介质
技术领域
本发明涉及嵌入式设备技术领域,特别涉及升级签名固件的方法、电子设备和存储介质。
背景技术
支持安全启动(Secure Boot)的设备要求对固件进行签名,并使用主密钥对启动过程中涉及的各类固件进行校验,如果设备熔断并且校验出错,则设备无法引导启动。
现有针对签名固件的升级方案,主要包括以下几种:
1.绝大多数升级方案依赖用户自身确保固件本身是签名过的,并实际升级验证成功后再发布到固件升级服务器上,固件升级本身通常都是对固件直接升级。这就会导致一旦因为操作失误而升级了没有签名的固件或者使用错误密钥签名的固件,会导致升级后的设备无法正常启动。
2.依赖芯片一次性密钥存储区域(如OTP,One Time Programmable,一种特殊类型的非易失性存储器)存储公钥信息。这类方案要求能在系统升级过程中直接读取保存在芯片一次性密钥存储区域(如OTP)中的公钥信息,但是在有些安全性要求高的设备中,在用户空间的应用系统中通常无法直接读取芯片一次性密钥存储区域等敏感区域的数据;同时芯片的一次性密钥存储区域空间有限,很多时候无法直接存储密钥信息本身,而是存储公钥的哈希值,这就意味着无法从一次性密钥存储区域中获取实际使用的密钥信息。
3.存在对设备树和相关技术设施的依赖。此方案在安全启动引导过程中将密钥信息通过设备树传递,存在对设备树和相关技术设施的依赖,因此在不支持设备树和相关技术设施的场景下,就受到限制。
发明内容
本发明的实施例提供升级签名固件的方法、电子设备和存储介质,其能够提高签名固件升级的可靠性。
在本发明的一个方面,提供一种升级签名固件的方法。该方法包括:从签名后的待升级固件中的启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于所述消息摘要算法类型计算与所述数字签名算法类型和所述公钥参数信息相对应的消息摘要;将所述消息摘要和系统标记写入命令行参数中,并将所述公钥参数信息、所述数字签名算法类型和熔断标记写入引导通信分区的第一位置;对所述消息摘要和所述消息摘要算法类型进行加密,并将加密后的消息摘要和消息摘要算法类型写入所述引导通信分区的第二位置;根据所述系统标记和所述熔断标记确定是否需要进行校验;若确定需要进行校验,则基于所述命令行参数和所述引导通信分区对所述签名后的待升级固件进行校验;以及若所述校验的结果为成功,则对所述签名后的待升级固件进行升级。
在本发明的又一方面,提供一种电子设备。该电子设备包括存储器,被配置为存储计算机程序;以及处理器,被配置为执行所述计算机程序以执行上述的升级签名固件的方法。
在本发明的再一方面,提供一种计算机可读介质。该介质上存储有计算机程序,所述计算机程序被处理器执行以实现上述的升级签名固件的方法。
根据本发明的实施例,通过签名后的待升级固件中的启动引导程序固件获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于消息摘要算法类型计算与数字签名算法类型和公钥参数信息相对应的消息摘要,将消息摘要和系统标记写入命令行参数中,并将公钥参数信息、数字签名算法类型和熔断标记写入引导通信分区的第一位置,将加密后的消息摘要和消息摘要算法类型写入引导通信分区的第二位置,当根据系统标记和熔断标记判断需要进行校验时,基于命令行参数和引导通信分区对签名后的待升级固件进行校验,当校验的结果为成功时,对签名后的待升级固件进行升级。通过将消息摘要写入命令行参数中,并将公钥参数信息、数字签名算法类型、加密后的消息摘要和消息摘要算法类型写入引导通信分区,无需依赖设备树和相关技术设施,在固件升级前,对签名后的待升级固件进行校验,确保固件签名正确的前提下才对固件进行升级,且避免了升级没有签名的固件或使用错误密钥签名的固件,从而提高签名固件升级的可靠性。
附图说明
图1为根据本发明实施例的升级签名固件的方法的步骤流程图;
图2为根据本发明实施例的升级签名固件的方法的流程示意图;
图3为根据本发明实施例的电子设备的结构示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
在已有技术中,针对签名固件的升级方案需要依赖用户自身确保固件本身是签名过的,并实际升级验证成功后再发布到固件升级服务器上,或者依赖芯片一次性密钥存储区域存储公钥信息,再或者将密钥信息通过设备树传递,存在对设备树和相关技术设施的依赖,当升级没有签名的固件或使用错误密钥签名的固件时,会导致升级后的设备无法正常启动。
为了解决至少上述技术问题,本公开提供了签名固件的升级方法。根据本公开,将数字签名算法类型和公钥参数信息的消息摘要写入命令行参数中,并将公钥参数信息、数字签名算法类型、加密后的消息摘要和消息摘要算法类型写入引导通信分区,基于命令行参数和引导通信分区对签名后的待升级固件校验成功后进行固件升级。以此方式,根据本公开的实施例能够无需依赖设备树和相关技术设施,确保固件签名正确的前提下才对固件进行升级,且避免了升级没有签名的固件或使用错误密钥签名的固件,从而提高签名固件升级的可靠性。
下文中,将参考具体实施例并且结合附图描述根据本公开的技术方案。
图1是示出根据本公开的实施例的升级签名固件的方法100的流程图。参照图1,该方法100包括以下步骤102至步骤112。
在步骤102,从签名后的待升级固件中的启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于所述消息摘要算法类型计算与所述数字签名算法类型和所述公钥参数信息相对应的消息摘要。在一些实施例中,设备安全启动,从启动存储介质(如eMMC,embedded Multi Media Card,嵌入式多媒体卡)加载对应签名后的待升级固件并校验,当安全引导启动引导程序固件之后,从签名后的待升级固件中的启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于所述消息摘要算法类型计算与所述数字签名算法类型和所述公钥参数信息相对应的消息摘要。
在一些实施例中,该方法100还可以包括:对待升级固件进行签名,得到所述签名后的待升级固件;将所述公钥参数信息、所述数字签名算法类型和所述消息摘要算法类型写入所述签名后的待升级固件中的所述启动引导程序固件的预设位置;以及将所述签名后的待升级固件存储至固件升级包。以此方式,确保可通过启动引导程序固件获取到固件签名的相关信息。
在一些实施例中,计算所述公钥参数信息的数字摘要,并将所述数字摘要与预设数字摘要进行比较;若所述比较的结果为一致,则将所述数字签名算法类型和所述公钥参数信息作为输入,基于所述消息摘要算法类型计算所述消息摘要;以及若所述比较的结果为不一致,则退出升级流程。在一些实施例中,所述预设数字摘要保存在设备芯片中的OTP或者efuse(一次性可编程存储器)。以此方式,能够对签名使用的密钥进行一次验证,提高安全性。
在步骤104,将所述消息摘要和系统标记写入命令行参数(如hash(哈希)参数)中,并将所述公钥参数信息、所述数字签名算法类型和熔断标记写入引导通信分区的第一位置。
在步骤106,对所述消息摘要和所述消息摘要算法类型进行加密,并将加密后的消息摘要和消息摘要算法类型写入所述引导通信分区的第二位置。在一些实施例中,使用所述启动引导程序固件中预设的对称加密算法和密钥对所述消息摘要和所述消息摘要算法类型进行加密。以此方式,无需依赖设备树和和相关技术设施,后续可基于引导通信分区中的数据进行校验,提高了签名固件升级的适用性。此外,通过引导通信分区中的熔断标记判断设备是否熔断,来执行对应的验证流程。
在步骤108,根据所述系统标记和所述熔断标记确定是否需要进行校验。在一些实施例中,判断所述系统标记是否表示设备为单系统,若是,则判断所述熔断标记是否表示设备熔断,若表示设备熔断,则确定需要进行校验;以及若表示设备未熔断,则确定不需要进行校验,并且所述方法还包括直接对所述签名后的待升级固件进行升级。在一些实施例中,所述单系统为非A/B系统,即只有一套固件。以此方式,避免固件升级后得到未签名或签名出错的固件,从而保证升级后设备能够正常启动,提高了签名固件的升级可靠性。
在一些实施例中,判断所述系统标记是否表示设备为双系统;若是,则判断所述熔断标记是否表示设备熔断;若表示设备熔断,则确定需要进行校验;以及若表示设备未熔断,则确定不需要进行校验,并且所述方法还包括直接对所述签名后的待升级固件进行升级。在一些实施例中,所述双系统为A/B系统,即有两套固件。以此方式,A/B系统可无需进入升级模式直接进行升级,而非A/B系统需要进入升级模式后,进行升级,根据系统标记或熔断标记执行对应的固件校验流程,提高校验效率。
在步骤110,若确定需要进行校验,则基于所述命令行参数和所述引导通信分区对所述签名后的待升级固件进行校验。在一些实施例中,基于所述引导通信分区的第一位置中的所述数字签名算法类型和所述公钥参数信息、所述命令行参数中的所述消息摘要、以及所述引导通信分区的第二位置中的所述加密后的消息摘要和消息摘要算法类型,对所述签名后的待升级固件进行校验。在一些实施例中,基于所述加密后的消息摘要与所述命令行参数中的所述消息摘要进行校验;以及基于所述数字签名算法类型、所述公钥参数信息和所述加密后的消息摘要算法类型与所述命令行参数中的所述消息摘要进行校验。
在一些实施例中,使用对称加密算法和密钥对从所述引导通信分区的第二位置中读取的所述加密后的消息摘要和消息摘要算法类型进行解密,得到解密后的消息摘要和消息摘要算法类型;判断解密后的消息摘要与从所述命令行参数中读取的所述消息摘要是否一致;若不一致,则退出升级流程,并确定所述校验的结果为失败,若一致,则将从所述引导通信分区的第一位置中读取的所述数字签名算法类型和所述公钥参数信息作为输入,使用解密后的消息摘要算法类型计算对应的校验消息摘要;判断所述校验消息摘要与从所述命令行参数中读取的所述消息摘要是否一致;若不一致,则退出升级流程,并确定所述校验的结果为失败;以及若一致,则确定所述校验的结果为成功。
在步骤112,若所述校验的结果为成功,则对所述签名后的待升级固件进行升级。在一些实施例中,若所述命令行参数中的所述系统标记表示设备为单系统,则从所述固件升级包中随机选择一待校验固件,并将所述待校验固件的二进制文件写入内存或可读写文件系统分区;使用所述数字签名算法类型和所述公钥参数信息对所述待校验固件进行校验,若校验失败,则退出升级流程;以及若校验成功,则对所述签名后的待升级固件进行升级。以此方式,针对单系统设备,在进入升级模式之前,随机选择一个固件进行签名校验,如果校验失败则直接退出升级流程,以此提高签名固件的升级效率。
在一些实施例中,若校验成功,则引导设备进入固件升级模式;从所述固件升级包中依次选择待升级固件,并将所述待升级固件的二进制文件写入内存或可读写文件系统分区;使用所述数字签名算法类型和所述公钥参数信息对每一待升级固件进行校验;若任一待升级固件校验失败,并且若所述熔断标记表示设备熔断,则退出升级流程;以及若每一待升级固件均校验成功,则执行固件升级流程,对所述签名后的待升级固件进行升级。以此方式,在随机选择的固件签名校验成功后,再进入升级模式对所有固件进行校验,只要任一固件校验失败就退出升级,即保证了校验的可靠性也提高了升级效率。
在一些实施例中,若所述命令行参数中的所述系统标记表示设备为双系统,则从所述固件升级包中依次选择待升级固件,并将所述待升级固件的二进制文件写入内存或可读写文件系统分区;使用所述数字签名算法类型和所述公钥参数信息对每一待升级固件进行校验,若任一待升级固件校验失败,则退出升级流程;以及若每一待升级固件均校验成功,则执行固件升级流程,对所述签名后的待升级固件进行升级。以此方式,保证在双系统情况下,实现可靠的签名固件校验。
下文中,将通过示例描述根据本发明实施例的签名固件的升级方法及设备的应用场景。
图2是示出根据本发明实施例的签名固件升级方法的流程图,包括以下步骤201至步骤230。
在步骤201,对待升级固件进行签名,得到签名后的待升级固件,并将签名后的待升级固件放入固件升级包。其中,在对待升级固件中的启动引导程序固件进行签名时,将公钥参数信息、数字签名算法类型和消息摘要算法类型写入启动引导程序固件的预设位置。
在步骤202,设备安全启动并加载启动引导程序,启动引导程序读出包含在启动引导程序固件中的公钥参数信息、数字签名算法类型和消息摘要算法类型,根据消息摘要算法类型使用对应的消息摘要算法计算公钥参数信息对应的数字摘要。
在步骤203,判断数字摘要与设备SoC芯片中的OTP或者efuse是否一致,若是,则执行步骤204,若否,则提示出错并退出升级流程。
在步骤204,根据消息摘要算法类型使用对应的消息摘要算法将数字签名算法类型和公钥参数信息作为输入进行摘要计算,输出对应的消息摘要,然后将计算出的消息摘要写入命令行参数(如hash参数),同时也将当前系统是否为A/B系统的标记也写入命令行参数(如androidboot.slot_suffix),将数字签名算法类型、公钥参数信息和和设备是否熔断标记写入引导通信分区的第一位置。
在步骤205,使用固化在启动引导程序固件中预设的对称加密算法和密钥对上述计算出的消息摘要和使用的消息摘要算法类型进行加密,并将加密后的数据写入引导通信分区的第二位置。
在步骤206,启动引导程序对即将引导的存储介质中的启动固件(如boot)进行校验,校验通过后,引导启动固件。
在步骤207,设备检测到有新版本固件需要升级时,读取引导通信分区的第一位置中的数据,得到对应的数字签名算法类型、公钥参数信息和设备是否熔断标记,从命令行参数中读取当前系统是否为A/B系统的标记。
其中,当当前系统为A/B系统且设备熔断,则执行步骤208。当当前系统为A/B系统且设备未熔断,则启动执行正常的A/B系统流式升级流程,一边下载固件一边升级。当当前系统为非A/B系统且设备熔断,则执行步骤209。当当前系统为非A/B系统且设备未熔断,则执行步骤218。
在步骤208,获取完整的固件升级包,检测固件升级包的合法性。
在步骤209,读取命令行参数中的消息摘要,读取引导通信分区的第二位置中的加密后的数据,使用预设的对称加密算法和密钥对读取的加密后的数据进行解密,得到解密后的消息摘要和消息摘要算法类型。
在步骤210,判断解密后的消息摘要和从命令行参数中读取的消息摘要是否一致,若是,则执行步骤211,若否,则提示出错并退出升级流程。
在步骤211,将从引导通信分区的第一位置中读取的数字签名算法类型和公钥参数信息作为输入,使用上述解密后的消息摘要算法类型计算得到对应的校验消息摘要。
在步骤212,判断校验消息摘要与命令行参数中读取的消息摘要是否一致,若是,则执行步骤213,若否,则提示出错并退出升级流程。
在步骤213,判断当前系统是否为A/B系统,若是,则执行步骤214,若否,则执行步骤216。
在步骤214,从固件升级包中依次提取出签名后的待升级固件,并将其对应的二进制文件写入内存或者可读写文件系统分区,使用获取到的数字签名算法类型和公钥参数信息对待升级的固件进行校验,得到校验结果。
在步骤215,判断校验结果是否为固件升级包中所有签名后的待升级固件全部校验通过,若是,则执行固件升级流程,完成设备固件的升级,若否,则提示出错并退出升级流程。
在步骤216,从固件升级包中随机选择一个签名后的待升级固件作为待校验固件,并将待校验固件对应的二进制文件写入内存或者可读写文件系统分区,使用获取到的数字签名算法类型和公钥参数信息对该待校验固件进行校验,得到校验结果。
在步骤217,判断所述校验结果是否为校验成功,若是,则执行步骤218,若否,则提示出错并退出升级流程。
在步骤218,启动固件升级,引导设备进入固件升级模式。
在步骤219,设备安全启动并加载启动引导程序,启动引导程序读出包含在启动引导程序固件中的公钥参数信息、数字签名算法类型和消息摘要算法类型,根据消息摘要算法类型使用对应的消息摘要算法计算公钥参数信息对应的数字摘要。
在步骤220,判断数字摘要与设备SoC芯片中的OTP或者efuse是否一致,若是,则执行步骤221,若否,则提示出错并退出升级流程。
在步骤221,根据消息摘要算法类型使用对应的消息摘要算法将数字签名算法类型和公钥参数信息作为输入进行摘要计算,输出对应的消息摘要,然后将计算出的消息摘要写入命令行参数,同时也将当前系统是否为A/B系统的标记也写入命令行参数,将数字签名算法类型、公钥参数信息和和设备是否熔断标记写入引导通信分区的第一位置。
在步骤222,使用固化在启动引导程序固件中预设的对称加密算法和密钥对上述计算出的消息摘要和使用的消息摘要算法类型进行加密,并将加密后的数据写入引导通信分区的第二位置。
在步骤223,启动引导程序对即将引导的存储介质中的升级模式固件(如recovery)进行校验,校验通过后,引导升级模式固件。
在步骤224,读取命令行参数中的消息摘要,读取引导通信分区的第二位置中的加密后的数据,使用预设的对称加密算法和密钥对读取的加密后的数据进行解密,得到对应的消息摘要和消息摘要算法类型。
在步骤225,判断解密后的消息摘要和命令行参数中读取的消息摘要是否一致,若是,则执行步骤226,若否,则提示出错并退出升级流程。
在步骤226,将从引导通信分区的第二预设位置中读取的数字签名算法类型和公钥参数信息作为输入,使用上述解密后的消息摘要算法类型计算得到对应的校验消息摘要。
在步骤227,判断校验消息摘要与命令行参数中读取的消息摘要是否一致,若是,则执行步骤228,若否,则提示出错并退出升级流程。
在步骤228,从固件升级包中依次提取出签名后的待升级固件,并将其对应的二进制文件写入内存或者可读写文件系统分区,使用获取到的数字签名算法类型和公钥参数信息对待升级的固件进行校验,得到校验结果。
在步骤229,判断校验结果是否为固件升级包中所有签名后的待升级固件全部校验通过,若是,则执行固件升级流程,完成设备固件的升级,若否,则执行步骤230。
在步骤230,判断设备是否熔断,若是,则提示出错并退出升级流程,若否,则执行固件升级流程,完成设备固件的升级。
由于非A/B系统需要重启进入升级模式,存在重启的过程,针对非A/B系统,在进入升级模式之前,随机选择一个固件进行签名校验,校验通过后,再进入升级模式对所有签名固件进行校验,若校验出错,则无需重启进入升级模式,而是退出升级流程,提高了签名固件的升级效率,如果随机校验通过,进入升级模式后,再进行一次全面校验;而A/B系统不需要重启进入升级模式,当前运行的是A系统时,升级到B系统,当前运行的是B系统时,升级到A系统,所以不需要随机校验的过程,而是直接全部校验,效率更高。
根据本发明的又一方面,图3是示出根据本发明实施例的签名固件的升级设备300的示意图。参照图3,该电子设备300包括存储器302、处理器304以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上面描述的签名固件的升级方法的各个步骤。
根据本发明的又一方面,提供了一种计算机可读介质。该计算机可读介质上存储有计算机程序,该计算机程序被处理器执行以实现如上面描述的签名固件的升级方法。
综上所述,本发明提供的签名固件的升级方法、电子设备和存储介质,从签名后的待升级固件中的启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于所述消息摘要算法类型计算与所述数字签名算法类型和所述公钥参数信息相对应的消息摘要;将所述消息摘要和系统标记写入命令行参数中,并将所述公钥参数信息、所述数字签名算法类型和熔断标记写入引导通信分区的第一位置;对消息摘要和消息摘要算法类型进行加密,并将加密后的消息摘要和消息摘要算法类型写入引导通信分区的第二位置;根据所述系统标记和熔断标记判断是否需要进行校验,若需要,则基于所述命令行参数和所述引导通信分区对所述签名后的待升级固件进行校验;以及若所述校验的结果为成功,则对所述签名后的待升级固件进行升级,无需依赖设备树和相关技术设施,在固件升级前,对签名后的待升级固件进行校验,且对使用的密钥进行双重验证,确保公钥参数信息的合法性,确保固件签名正确的前提下才对固件进行升级,且避免了升级没有签名的固件或使用错误密钥签名的固件,同时支持A/B系统和非A/B系统升级,针对非A/B系统,在进入升级模式之前,随机选择一个固件进行签名校验,校验通过后,再进入升级模式对所有签名固件进行校验,若校验出错,则无需再进入升级模式,提高了签名固件的升级效率,从而提高签名固件升级的可靠性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (14)

1.一种升级签名固件的方法,其特征在于,包括:
从签名后的待升级固件中的启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于所述消息摘要算法类型计算与所述数字签名算法类型和所述公钥参数信息相对应的消息摘要;
将所述消息摘要和系统标记写入命令行参数中,并将所述公钥参数信息、所述数字签名算法类型和熔断标记写入引导通信分区的第一位置;
对所述消息摘要和所述消息摘要算法类型进行加密,并将加密后的消息摘要和消息摘要算法类型写入所述引导通信分区的第二位置;
根据所述系统标记和所述熔断标记确定是否需要进行校验;
若确定需要进行校验,则基于所述命令行参数和所述引导通信分区对所述签名后的待升级固件进行校验;以及
若所述校验的结果为成功,则对所述签名后的待升级固件进行升级。
2.根据权利要求1所述的方法,其特征在于,基于所述命令行参数和所述引导通信分区对所述签名后的待升级固件进行校验包括:
基于所述引导通信分区的第一位置中的所述数字签名算法类型和所述公钥参数信息、所述命令行参数中的所述消息摘要、以及所述引导通信分区的第二位置中的所述加密后的消息摘要和消息摘要算法类型,对所述签名后的待升级固件进行校验。
3.根据权利要求2所述的方法,其特征在于,基于所述命令行参数和所述引导通信分区对所述签名后的待升级固件进行校验包括:
基于所述加密后的消息摘要与所述命令行参数中的所述消息摘要进行校验;以及
基于所述数字签名算法类型、所述公钥参数信息和所述加密后的消息摘要算法类型与所述命令行参数中的所述消息摘要进行校验。
4.根据权利要求1所述的方法,其特征在于,还包括:
对待升级固件进行签名,得到所述签名后的待升级固件;
将所述公钥参数信息、所述数字签名算法类型和所述消息摘要算法类型写入所述签名后的待升级固件中的所述启动引导程序固件的预设位置;以及
将所述签名后的待升级固件存储至固件升级包。
5.根据权利要求1所述的方法,其特征在于,基于所述消息摘要算法类型计算与所述数字签名算法类型和所述公钥参数信息相对应的消息摘要包括:
计算所述公钥参数信息的数字摘要,并将所述数字摘要与预设数字摘要进行比较;
若所述比较的结果为一致,则将所述数字签名算法类型和所述公钥参数信息作为输入,基于所述消息摘要算法类型计算所述消息摘要;以及
若所述比较的结果为不一致,则退出升级流程。
6.根据权利要求1所述的方法,其特征在于,对所述消息摘要和所述消息摘要算法类型进行加密包括:
使用所述启动引导程序固件中预设的对称加密算法和密钥对所述消息摘要和所述消息摘要算法类型进行加密。
7.根据权利要求1所述的方法,其特征在于,根据所述系统标记和所述熔断标记确定是否需要进行校验包括:
判断所述系统标记是否表示设备为单系统;
若是,则判断所述熔断标记是否表示设备熔断;
若表示设备熔断,则确定需要进行校验;以及
若表示设备未熔断,则确定不需要进行校验,并且所述方法还包括直接对所述签名后的待升级固件进行升级。
8.根据权利要求1所述的方法,其特征在于,根据所述系统标记和所述熔断标记确定是否需要进行校验包括:
判断所述系统标记是否表示设备为双系统;
若是,则判断所述熔断标记是否表示设备熔断;
若表示设备熔断,则确定需要进行校验;以及
若表示设备未熔断,则确定不需要进行校验,并且所述方法还包括直接对所述签名后的待升级固件进行升级。
9.根据权利要求6所述的方法,其特征在于,基于所述命令行参数和所述引导通信分区对所述签名后的待升级固件进行校验包括:
使用对称加密算法和密钥对从所述引导通信分区的第二位置中读取的所述加密后的消息摘要和消息摘要算法类型进行解密,得到解密后的消息摘要和消息摘要算法类型;
判断解密后的消息摘要与从所述命令行参数中读取的所述消息摘要是否一致;
若不一致,则退出升级流程,并确定所述校验的结果为失败;
若一致,则将从所述引导通信分区的第一位置中读取的所述数字签名算法类型和所述公钥参数信息作为输入,使用解密后的消息摘要算法类型计算对应的校验消息摘要;
判断所述校验消息摘要与从所述命令行参数中读取的所述消息摘要是否一致;
若不一致,则退出升级流程,并确定所述校验的结果为失败;以及
若一致,则确定所述校验的结果为成功。
10.根据权利要求4所述的方法,其特征在于,对所述签名后的待升级固件进行升级包括:
若所述命令行参数中的所述系统标记表示设备为单系统,则从所述固件升级包中随机选择一待校验固件,并将所述待校验固件的二进制文件写入内存或可读写文件系统分区;
使用所述数字签名算法类型和所述公钥参数信息对所述待校验固件进行校验;
若校验失败,则退出升级流程;以及
若校验成功,则对所述签名后的待升级固件进行升级。
11.根据权利要求10所述的方法,其特征在于,对所述签名后的待升级固件进行升级包括:
若校验成功,则引导设备进入固件升级模式;
从所述固件升级包中依次选择待升级固件,并将所述待升级固件的二进制文件写入内存或可读写文件系统分区;
使用所述数字签名算法类型和所述公钥参数信息对每一待升级固件进行校验;
若任一待升级固件校验失败,并且若所述熔断标记表示设备熔断,则退出升级流程;以及
若每一待升级固件均校验成功,则执行固件升级流程,对所述签名后的待升级固件进行升级。
12.根据权利要求4所述的方法,其特征在于,对所述签名后的待升级固件进行升级还包括:
若所述命令行参数中的所述系统标记表示设备为双系统,则从所述固件升级包中依次选择待升级固件,并将所述待升级固件的二进制文件写入内存或可读写文件系统分区;
使用所述数字签名算法类型和所述公钥参数信息对每一待升级固件进行校验;
若任一待升级固件校验失败,则退出升级流程;以及
若每一待升级固件均校验成功,则执行固件升级流程,对所述签名后的待升级固件进行升级。
13.一种电子设备,其特征在于,包括:
存储器,被配置为存储计算机程序;以及
处理器,被配置为执行所述计算机程序以执行根据权利要求1至12中任一项所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行以实现根据权利要求1至12中任一项所述的方法。
CN202211037324.3A 2022-08-26 2022-08-26 升级签名固件的方法、电子设备和存储介质 Pending CN115357293A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211037324.3A CN115357293A (zh) 2022-08-26 2022-08-26 升级签名固件的方法、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211037324.3A CN115357293A (zh) 2022-08-26 2022-08-26 升级签名固件的方法、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN115357293A true CN115357293A (zh) 2022-11-18

Family

ID=84005507

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211037324.3A Pending CN115357293A (zh) 2022-08-26 2022-08-26 升级签名固件的方法、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN115357293A (zh)

Similar Documents

Publication Publication Date Title
US20100325628A1 (en) Information processing device
US8392724B2 (en) Information terminal, security device, data protection method, and data protection program
US11385902B2 (en) Secure firmware management with hierarchical boot sequence using last known good firmware
US11803366B2 (en) Firmware updating system and method
US10268845B2 (en) Securing of the loading of data into a nonvolatile memory of a secure element
EP3026559A1 (en) Method and device for providing verifying application integrity
CN109814934B (zh) 数据处理方法、装置、可读介质和系统
WO2014206170A1 (zh) 一种验证方法及设备
CN113127011A (zh) 电子设备及电子设备的操作方法
CN111177709A (zh) 一种终端可信组件的执行方法、装置及计算机设备
CN112148314A (zh) 一种嵌入式系统的镜像验证方法、装置、设备及存储介质
CN112685338A (zh) 包括安全可修补rom的半导体装置及其修补方法
CN111523124B (zh) 一种云音箱固件保护方法及系统
CN111093190B (zh) 写入关键数据的方法、装置、系统、电子设备及存储介质
CN110086623B (zh) 一种基于安全元件的固件防伪方法及安全元件
CN114547620A (zh) 签名固件升级方法、设备及计算机可读介质
CN116775145A (zh) 一种服务器的启动恢复方法、装置、设备及存储介质
CN115357293A (zh) 升级签名固件的方法、电子设备和存储介质
CN116149706A (zh) 一种车辆设备升级方法、装置、车辆和可读存储介质
CN115220796A (zh) 安全引导设备
CN113486360A (zh) 基于risc-v的安全启动方法及系统
CN115828255A (zh) 升级签名固件的方法、电子设备和存储介质
CN116257839A (zh) 升级签名固件的方法、电子设备和存储介质
CN116204867A (zh) 升级签名固件的方法、电子设备和存储介质
US20230114009A1 (en) Information Processing Apparatus and Program Starting Method

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