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

技术编号:36462512 阅读:15 留言:0更新日期:2023-01-25 23:02
本发明专利技术公开了升级签名固件的方法、电子设备和存储介质,在固件升级包和启动固件根文件系统中均存放公钥文件,并且将消息摘要、消息摘要算法类型和数字签名算法类型写入操作系统内核命令行参数中,另外在对签名后的待升级固件进行校验之前,先基于操作系统内核命令行参数对固件升级包和启动固件根文件系统中的公钥文件进行校验,实现了公钥信息多重验证,确保公钥信息本身是安全的前提下再对待升级固件进行校验,且无需依赖设备启动引导程序传递公钥参数信息,既解决了升级没签名或者错误签名的固件导致升级后设备无法启动问题的,也解决了没有额外的软硬资源导致无法有效传递公钥信息的问题,从而提高了签名固件升级的可靠性。靠性。靠性。

【技术实现步骤摘要】
升级签名固件的方法、电子设备和存储介质


[0001]本专利技术涉及嵌入式设备
,特别涉及升级签名固件的方法、电子设备和存储介质。

技术介绍

[0002]支持安全启动(Secure Boot)的设备需要对固件进行签名,固件中的签名信息是作为固件不可分割的一部分实际存储在设备存储介质中,并在设备启动过程中对固件进行逐级校验,实际升级的固件必须是包含签名信息的完整签名固件。已有的针对安全启动设备的固件升级方案主要有如下两类:(1)直接升级,不区分固件是否签名,这类方案需用户确保固件本身是正确签名过的;(2)针对签名固件进行特殊处理,这类方案要求设备本身提供某种机制,如设备树,以便可以将签名固件对应的公钥信息从启动引导程序安全地传递到系统,从而使得固件程序升级程序可以使用。这类方法通常复杂性较高,同时在某些情况下,设备启动引导程序和系统之间无法有效传递这种公钥信息,例如没有额外的软硬资源的情况下。

技术实现思路

[0003]本专利技术提供升级签名固件的方法、电子设备和存储介质,其能够提高签名固件升级的可靠性。
[0004]在本专利技术的一个方面,提供一种升级签名固件的方法。该方法包括步骤:将与签名后的待升级固件相对应的公钥文件编译放入所述签名后的待升级固件中的启动固件根文件系统,并将所述签名后的待升级固件和所述公钥文件放入固件升级包;从所述签名后的待升级固件中的启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于所述数字签名算法类型和所述消息摘要算法类型计算与所述公钥参数信息相对应的消息摘要;将所述消息摘要、所述消息摘要算法类型和所述数字签名算法类型写入操作系统内核命令行参数中;基于所述操作系统内核命令行参数对所述启动固件根文件系统中的公钥文件和所述固件升级包中的公钥文件进行验证;若所述验证的结果为通过,则基于所述操作系统内核命令行参数以及所述启动固件根文件系统中的公钥文件或所述固件升级包中的公钥文件对所述签名后的待升级固件进行校验;以及若所述校验的结果为成功,则对所述签名后的待升级固件进行升级。
[0005]在本专利技术的又一方面,提供一种电子设备。该电子设备包括存储器,被配置为存储计算机程序;以及处理器,被配置为执行所述计算机程序以执行上述的升级签名固件的方法。
[0006]在本专利技术的再一方面,提供一种计算机可读介质。该介质上存储有计算机程序,所述计算机程序被处理器执行以实现上述的升级签名固件的方法。
[0007]根据本专利技术,在固件升级包和启动固件根文件系统中均存放公钥文件,并且将消息摘要、消息摘要算法类型和数字签名算法类型写入操作系统内核命令行参数中,另外在
对签名后的待升级固件进行校验之前,先基于操作系统内核命令行参数对固件升级包和启动固件根文件系统中的公钥文件进行校验,实现了公钥信息多重验证,确保公钥信息本身是安全的前提下再对待升级固件进行校验,且无需依赖设备启动引导程序传递公钥参数信息,既解决了升级没签名或者错误签名的固件导致升级后设备无法启动问题的,也解决了没有额外的软硬资源导致无法有效传递公钥信息的问题,从而提高了签名固件升级的可靠性。
附图说明
[0008]图1为根据本专利技术实施例的升级签名固件的方法的步骤流程图;
[0009]图2为根据本专利技术实施例的升级签名固件的方法的流程示意图;
[0010]图3为根据本专利技术实施例的电子设备的结构示意图。
具体实施方式
[0011]为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。
[0012]在已有技术中,针对安全启动设备的固件升级方案主要是直接升级,不区分固件是否签名,这类方案需用户确保固件本身是正确签名过的,当升级没有签名的固件或使用错误密钥签名的固件时,会导致升级后的设备无法正常启动;或者是针对签名固件进行特殊处理,这类方案要求设备本身提供某种机制,如设备树,以便可以将签名固件对应的公钥信息从启动引导程序安全地传递到系统,这就需要依赖设备树和相关技术设施。
[0013]为了解决至少上述技术问题,本公开提供了升级签名固件的方法。根据本公开,在固件升级包和启动固件根文件系统中均存放公钥文件,并且将消息摘要、消息摘要算法类型和数字签名算法类型写入操作系统内核命令行参数中,另外在对签名后的待升级固件进行校验之前,先基于操作系统内核命令行参数对固件升级包和启动固件根文件系统中的公钥文件进行校验。以此方式,根据本公开的实施例能够实现公钥信息多重验证,确保公钥信息本身是安全的前提下再对待升级固件进行校验,且无需依赖设备启动引导程序传递公钥参数信息,既解决了升级没签名或者错误签名的固件导致升级后设备无法启动问题的,也解决了没有额外的软硬资源导致无法有效传递公钥信息的问题,从而提高了签名固件升级的可靠性。
[0014]下文中,将参考具体实施例并且结合附图描述根据本公开的技术方案。
[0015]图1是示出根据本公开的实施例的升级签名固件的方法100的流程图。参照图1,该方法100包括以下步骤102至步骤112。
[0016]在步骤102,将与签名后的待升级固件相对应的公钥文件(如dev.crt或者dev.pubkey)编译放入所述签名后的待升级固件中的启动固件(如boot.img)根文件系统(如ramdisk,虚拟内存盘),并将所述签名后的待升级固件以及所述公钥文件放入固件升级包。在一些实施例中,获取系统标记,若所述系统标记表示设备为单系统,则将与签名后的待升级固件相对应的公钥文件(如dev.crt或者dev.pubkey)编译放入所述签名后的待升级固件中的升级模式固件(如recovery.img)根文件系统的特定路径(如/res/dev.crt),并将所述公钥文件对应的特定路径保存至所述升级模式固件头部的命令行参数(如pubkey_
file=/res/dev.crt)。在一些实施例中,在将与签名后的待升级固件相对应的公钥文件编译放入所述签名后的待升级固件中的启动固件根文件系统之前,还包括:对待升级固件进行签名,得到所述签名后的待升级固件;以及将所述公钥参数信息、所述数字签名算法类型和所述消息摘要算法类型写入所述签名后的待升级固件中的所述启动引导程序固件的预设位置。以此方式,通过启动引导程序固件即可获取公钥相关信息。
[0017]在一些实施例中,将与签名后的待升级固件相对应的公钥文件编译放入所述签名后的待升级固件中的启动固件根文件系统,以及将与所述公钥文件相对应的存放路径保存至所述启动固件头部的命令行参数(如pubkey_file=/res/dev.crt)。以此方式,以便后续用于校验公钥信息。
[0018]在步骤104,从签名后的待升级固件中的启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于所述数字签名算法类型和所述消息摘要算法类型计算与所述公钥参数信息相对应的消息摘要。在一些实施例中,根据所述数字签名算法类型计算与所述公钥参数信息相对应的数字摘要,并将所述数字摘要与预本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种升级签名固件的方法,其特征在于,包括:将与签名后的待升级固件相对应的公钥文件编译放入所述签名后的待升级固件中的启动固件根文件系统,并将所述签名后的待升级固件和所述公钥文件放入固件升级包;从所述签名后的待升级固件中的启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于所述数字签名算法类型和所述消息摘要算法类型计算与所述公钥参数信息相对应的消息摘要;将所述消息摘要、所述消息摘要算法类型和所述数字签名算法类型写入操作系统内核命令行参数中;基于所述操作系统内核命令行参数对所述启动固件根文件系统中的公钥文件和所述固件升级包中的公钥文件进行验证;若所述验证的结果为通过,则基于所述操作系统内核命令行参数以及所述启动固件根文件系统中的公钥文件或所述固件升级包中的公钥文件对所述签名后的待升级固件进行校验;以及若所述校验的结果为成功,则对所述签名后的待升级固件进行升级。2.根据权利要求1所述的方法,其特征在于,基于所述操作系统内核命令行参数对所述启动固件根文件系统中的公钥文件和所述固件升级包中的公钥文件进行验证包括:根据所述操作系统内核命令行参数中的所述消息摘要算法类型,将所述启动固件根文件系统中的公钥文件中的公钥参数信息和所述固件升级包中的公钥文件中的公钥参数信息分别作为输入,计算出第一验证消息摘要和第二验证消息摘要;以及分别验证所述第一验证消息摘要和所述第二验证消息摘要是否与所述操作系统内核命令行参数中的所述消息摘要一致。3.根据权利要求1所述的方法,其特征在于,基于所述操作系统内核命令行参数以及所述启动固件根文件系统中的公钥文件或所述固件升级包中的公钥文件对所述签名后的待升级固件进行校验包括:使用所述操作系统内核命令行参数中的所述数字签名算法类型以及所述启动固件根文件系统中的公钥文件中的公钥参数信息或所述固件升级包中的公钥文件中的公钥参数信息,对所述签名后的待升级固件进行校验。4.根据权利要求1所述的方法,其特征在于,还包括:将与所述签名后的待升级固件相对应的所述公钥文件编译放入所述签名后的待升级固件中的升级模式固件根文件系统,其中对所述签名后的待升级固件进行升级包括:引导设备进入固件升级模式;根据所述操作系统内核命令行参数中的所述消息摘要算法类型,将所述升级模式固件根文件系统中的公钥文件中的公钥参数信息和所述固件升级包中的公钥文件中的公钥参数信息分别作为输入,计算出第三验证消息摘要和第四验证消息摘要;分别验证所述第三验证消息摘要和所述第四验证消息摘要是否与所述操作系统内核命令行参数中的所述消息摘要一致;若一致,则使用所述操作系统内核命令行参数中的所述数字签名算法类型以及所述升级模式固件根文件系统中的公钥文件中的公钥参数信息和所述固件升级包中的公钥文件中的公钥参数信息,对所述签名后的待升级固件进行校验;以及
若校验通过,则执行固件升级。5.根据权利要求1所述的方法,其特征在于,在将与签名后的待升级固件相对应的公钥文件编译放入所述签名后的待升级固件中的启动固件根文件系统之前,还包括:对待升级固件进行签名,得到所述签名后的待升级固件;以及将所述公钥参数信息、所述数字签名算法类型和所述消息摘要算法类型写入所述签名后的待升级固件中的所述...

【专利技术属性】
技术研发人员:纪大峣
申请(专利权)人:瑞芯微电子股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1