升级签名固件的方法、电子设备和存储介质与流程

文档序号:33044946发布日期:2023-01-24 22:17阅读:80来源:国知局
升级签名固件的方法、电子设备和存储介质与流程

1.本发明涉及嵌入式设备技术领域,特别涉及升级签名固件的方法、电子设备和存储介质。


背景技术:

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


技术实现要素:

3.本发明提供升级签名固件的方法、电子设备和存储介质,其能够提高签名固件升级的可靠性。
4.在本发明的一个方面,提供一种升级签名固件的方法。该方法包括步骤:将与签名后的待升级固件相对应的公钥文件编译放入所述签名后的待升级固件中的启动固件根文件系统,并将所述签名后的待升级固件和所述公钥文件放入固件升级包;从所述签名后的待升级固件中的启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于所述数字签名算法类型和所述消息摘要算法类型计算与所述公钥参数信息相对应的消息摘要;将所述消息摘要、所述消息摘要算法类型和所述数字签名算法类型写入操作系统内核命令行参数中;基于所述操作系统内核命令行参数对所述启动固件根文件系统中的公钥文件和所述固件升级包中的公钥文件进行验证;若所述验证的结果为通过,则基于所述操作系统内核命令行参数以及所述启动固件根文件系统中的公钥文件或所述固件升级包中的公钥文件对所述签名后的待升级固件进行校验;以及若所述校验的结果为成功,则对所述签名后的待升级固件进行升级。
5.在本发明的又一方面,提供一种电子设备。该电子设备包括存储器,被配置为存储计算机程序;以及处理器,被配置为执行所述计算机程序以执行上述的升级签名固件的方法。
6.在本发明的再一方面,提供一种计算机可读介质。该介质上存储有计算机程序,所述计算机程序被处理器执行以实现上述的升级签名固件的方法。
7.根据本发明,在固件升级包和启动固件根文件系统中均存放公钥文件,并且将消息摘要、消息摘要算法类型和数字签名算法类型写入操作系统内核命令行参数中,另外在
对签名后的待升级固件进行校验之前,先基于操作系统内核命令行参数对固件升级包和启动固件根文件系统中的公钥文件进行校验,实现了公钥信息多重验证,确保公钥信息本身是安全的前提下再对待升级固件进行校验,且无需依赖设备启动引导程序传递公钥参数信息,既解决了升级没签名或者错误签名的固件导致升级后设备无法启动问题的,也解决了没有额外的软硬资源导致无法有效传递公钥信息的问题,从而提高了签名固件升级的可靠性。
附图说明
8.图1为根据本发明实施例的升级签名固件的方法的步骤流程图;
9.图2为根据本发明实施例的升级签名固件的方法的流程示意图;
10.图3为根据本发明实施例的电子设备的结构示意图。
具体实施方式
11.为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
12.在已有技术中,针对安全启动设备的固件升级方案主要是直接升级,不区分固件是否签名,这类方案需用户确保固件本身是正确签名过的,当升级没有签名的固件或使用错误密钥签名的固件时,会导致升级后的设备无法正常启动;或者是针对签名固件进行特殊处理,这类方案要求设备本身提供某种机制,如设备树,以便可以将签名固件对应的公钥信息从启动引导程序安全地传递到系统,这就需要依赖设备树和相关技术设施。
13.为了解决至少上述技术问题,本公开提供了升级签名固件的方法。根据本公开,在固件升级包和启动固件根文件系统中均存放公钥文件,并且将消息摘要、消息摘要算法类型和数字签名算法类型写入操作系统内核命令行参数中,另外在对签名后的待升级固件进行校验之前,先基于操作系统内核命令行参数对固件升级包和启动固件根文件系统中的公钥文件进行校验。以此方式,根据本公开的实施例能够实现公钥信息多重验证,确保公钥信息本身是安全的前提下再对待升级固件进行校验,且无需依赖设备启动引导程序传递公钥参数信息,既解决了升级没签名或者错误签名的固件导致升级后设备无法启动问题的,也解决了没有额外的软硬资源导致无法有效传递公钥信息的问题,从而提高了签名固件升级的可靠性。
14.下文中,将参考具体实施例并且结合附图描述根据本公开的技术方案。
15.图1是示出根据本公开的实施例的升级签名固件的方法100的流程图。参照图1,该方法100包括以下步骤102至步骤112。
16.在步骤102,将与签名后的待升级固件相对应的公钥文件(如dev.crt或者dev.pubkey)编译放入所述签名后的待升级固件中的启动固件(如boot.img)根文件系统(如ramdisk,虚拟内存盘),并将所述签名后的待升级固件以及所述公钥文件放入固件升级包。在一些实施例中,获取系统标记,若所述系统标记表示设备为单系统,则将与签名后的待升级固件相对应的公钥文件(如dev.crt或者dev.pubkey)编译放入所述签名后的待升级固件中的升级模式固件(如recovery.img)根文件系统的特定路径(如/res/dev.crt),并将所述公钥文件对应的特定路径保存至所述升级模式固件头部的命令行参数(如pubkey_
file=/res/dev.crt)。在一些实施例中,在将与签名后的待升级固件相对应的公钥文件编译放入所述签名后的待升级固件中的启动固件根文件系统之前,还包括:对待升级固件进行签名,得到所述签名后的待升级固件;以及将所述公钥参数信息、所述数字签名算法类型和所述消息摘要算法类型写入所述签名后的待升级固件中的所述启动引导程序固件的预设位置。以此方式,通过启动引导程序固件即可获取公钥相关信息。
17.在一些实施例中,将与签名后的待升级固件相对应的公钥文件编译放入所述签名后的待升级固件中的启动固件根文件系统,以及将与所述公钥文件相对应的存放路径保存至所述启动固件头部的命令行参数(如pubkey_file=/res/dev.crt)。以此方式,以便后续用于校验公钥信息。
18.在步骤104,从签名后的待升级固件中的启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,并基于所述数字签名算法类型和所述消息摘要算法类型计算与所述公钥参数信息相对应的消息摘要。在一些实施例中,根据所述数字签名算法类型计算与所述公钥参数信息相对应的数字摘要,并将所述数字摘要与预设数字摘要进行比较;若所述比较的结果为一致,则根据所述消息摘要算法类型计算与所述公钥参数信息相对应的消息摘要;以及若所述比较的结果为不一致,则退出升级流程。以此方式,实现对公钥参数信息的一次验证,确保公钥参数信息的安全性。
19.在一些实施例中,设备安全启动,从启动存储介质(如emmc,embedded multi media card,嵌入式多媒体卡)逐级加载对应固件并校验,当成功校验和引导启动引导程序固件之后,根据所述数字签名算法类型计算所述公钥参数信息对应的数字摘要,并将所述数字摘要与预设数字摘要进行比较;若所述比较的结果为一致,则根据所述消息摘要算法类型计算与所述公钥参数信息对应的消息摘要;以及若所述比较的结果为不一致,则退出升级流程。在一些实施例中,所述预设数字摘要保存在设备芯片中的otp或者efuse(一次性可编程存储器)。
20.在步骤106,将所述消息摘要、所述消息摘要算法类型和所述数字签名算法类型写入操作系统内核命令行参数中。在一些实施例中,在将所述消息摘要、所述消息摘要算法类型和所述数字签名算法类型写入操作系统内核命令行参数中之后,还包括:启动引导程序校验所述启动固件,若所述校验为通过,则读取所述启动固件头部的命令行参数,并将与所述公钥文件相对应的存放路径添加至所述操作系统内核命令行参数中。以此方式,便于命令行参数获取到启动固件中的公钥文件,从而实现对公钥参数信息的第二次验证。
21.在步骤108,基于所述操作系统内核命令行参数对所述启动固件根文件系统中的公钥文件和所述固件升级包中的公钥文件进行验证。在一些实施例中,根据所述操作系统内核命令行参数中的所述消息摘要算法类型,将所述启动固件根文件系统中的公钥文件中的公钥参数信息和所述固件升级包中的公钥文件中的公钥参数信息分别作为输入,计算出第一验证消息摘要和第二验证消息摘要;以及分别验证所述第一验证消息摘要和所述第二验证消息摘要是否与所述操作系统内核命令行参数中的所述消息摘要一致。在一些实施例中,读取所述操作系统内核命令行参数中的所述消息摘要、所述消息摘要算法类型、所述数字签名算法类型和与所述公钥文件相对应的存放路径;根据与所述公钥文件相对应的存放路径从所述启动固件根文件系统读取公钥文件中的公钥参数信息,并将读取的所述公钥参数信息作为输入,使用所述消息摘要算法类型计算对应的第一验证消息摘要;判断所述第
一验证消息摘要与所述操作系统内核命令行参数中的所述消息摘要是否一致;若不一致,则退出升级流程,并确定所述验证的结果为不通过;若一致,则对所述固件升级包进行合法性校验,若所述合法性校验为失败,则退出升级流程,若所述合法性校验为成功,则读取所述固件升级包的公钥文件中的公钥参数信息;将读取的所述公钥参数信息作为输入,使用所述消息摘要算法类型计算对应的第二验证消息摘要;判断所述第二验证消息摘要与所述操作系统内核命令行参数中的所述消息摘要是否一致;若不一致,则退出升级流程,并确定所述验证的结果为不通过;以及若一致,则确定所述验证的结果为通过。以此方式,实现了公钥参数信息的多重验证,确保公钥参数信息本身是安全的情况下再对待升级固件进行校验,避免后续升级后的设备无法正常启动。
22.在步骤110,若所述验证的结果为通过,则基于所述操作系统内核命令行参数以及所述启动固件根文件系统中的公钥文件或所述固件升级包中的公钥文件对所述签名后的待升级固件进行校验。在一些实施例中,使用所述操作系统内核命令行参数中的所述数字签名算法类型以及所述启动固件根文件系统中的公钥文件中的公钥参数信息或所述固件升级包中的公钥文件中的公钥参数信息,对所述签名后的待升级固件进行校验。以此方式,确保待升级固件的安全性。
23.在步骤112,若所述校验的结果为成功,则对所述签名后的待升级固件进行升级。在一些实施例中,引导设备进入固件升级模式;根据所述操作系统内核命令行参数中的所述消息摘要算法类型,将所述升级模式固件根文件系统中的公钥文件中的公钥参数信息和所述固件升级包中的公钥文件中的公钥参数信息分别作为输入,计算出第三验证消息摘要和第四验证消息摘要;分别验证所述第三验证消息摘要和所述第四验证消息摘要是否与所述操作系统内核命令行参数中的所述消息摘要一致;若一致,则使用所述操作系统内核命令行参数中的所述数字签名算法类型以及所述升级模式固件根文件系统中的公钥文件中的公钥参数信息和所述固件升级包中的公钥文件中的公钥参数信息,对所述签名后的待升级固件进行校验;以及若校验通过,则执行固件升级。在一些实施例中,将系统标记写入所述操作系统内核命令行参数中,根据所述操作系统内核命令行参数中的所述系统标记获取设备的系统类型,若所述系统类型为单系统,则引导设备进入固件升级模式进行升级。在一些实施例中,若所述系统类型为双系统,则执行正常的双系统流式升级流程。以此方式,当系统类型为单系统,引导设备进入固件升级模式进行升级,当系统类型为双系统,执行正常的双系统流式升级流程,提高固件升级效率。在一些实施例中,所述单系统为非a/b系统,即只有一套固件,所述双系统为a/b系统,即有两套固件。
24.下文中,将通过示例描述根据本发明实施例的升级签名固件的方法及设备的应用场景。
25.图2是示出根据本发明实施例的升级签名固件的方法的流程图,包括以下步骤201至步骤223。
26.在步骤201,对待升级固件进行签名,得到签名后的待升级固件。
27.在步骤202,在编译生成启动固件时,将签名后的待升级固件对应的公钥文件编译放入启动固件根文件系统中,并将公钥文件对应的存放路径保存至启动固件头部的命令行参数,获取系统标记,若系统标记表示设备为非a/b系统,则将公钥文件编译放入升级模式固件根文件系统中的特定路径,并将公钥文件对应的特定路径保存至升级模式固件头部的
命令行参数。
28.在步骤203,在编译制作固件升级包时,将签名后的待升级固件、签名后的待升级固件对应的公钥文件放入固件升级包。
29.在步骤204,设备安全启动,从启动存储介质逐级加载对应固件并校验,当成功校验和引导启动引导程序固件后,启动引导程序从启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,根据数字摘要算法类型计算公钥参数信息对应的数字摘要,并将数字摘要与设备芯片中的otp(one time programmable,一种特殊类型的非易失性存储器)或者efuse(一次性可编程存储器)进行比较,若比较的结果为一致,则执行步骤205;若比较的结果为不一致,则退出升级流程。
30.在步骤205,根据消息摘要算法类型计算与公钥参数信息对应的消息摘要,将消息摘要、消息摘要算法类型、数字签名算法类型以及当前系统是否为a/b系统的标记写入操作系统内核命令行参数中。
31.在步骤206,启动引导程序校验启动固件,若校验为通过,则读取启动固件头部的命令行参数,并将公钥文件对应的存放路径添加至操作系统内核命令行参数中,最后引导启动固件并传递操作系统内核命令行参数。
32.在步骤207,设备检测到有新版本固件需要升级时,读取操作系统内核命令行参数中的消息摘要、消息摘要算法类型、数字签名算法类型、当前系统是否为a/b系统的标记和公钥文件对应的存放路径。
33.在步骤208,根据公钥文件对应的存放路径从启动固件根文件系统读取公钥文件中的公钥参数信息,并将读取的公钥参数信息作为输入,使用消息摘要算法类型计算对应的第一验证消息摘要。
34.在步骤209,判断第一验证消息摘要与操作系统内核命令行参数中的消息摘要是否一致,若不一致,则退出升级流程,并确定验证的结果为不通过;若一致,则执行步骤210。
35.在步骤210,对固件升级包进行合法性校验,若合法性校验为失败,则退出升级流程,若合法性校验为成功,则提取固件升级包中的公钥文件到内存或者可读写文件系统分区,并读取固件升级包的公钥文件中的公钥参数信息,将读取的公钥参数信息作为输入,使用消息摘要算法类型计算对应的第二验证消息摘要;
36.在步骤211,判断第二验证消息摘要与操作系统内核命令行参数中的消息摘要是否一致,若不一致,则退出升级流程,并确定验证的结果为不通过,若一致,则确定验证的结果为通过。
37.在步骤212,从固件升级包中依次提取出签名后的待升级固件的二进制文件到内存或者可读写文件系统分区,并使用操作系统内核命令行参数中的数字签名算法类型和公钥文件中的公钥参数信息对签名后的待升级固件进行校验,若校验的结果均为成功,则执行步骤213,若任一校验的结果为失败,则退出升级流程。
38.在步骤213,根据操作系统内核命令行参数中当前系统是否为a/b系统的标记获取设备的系统类型,若系统类型为a/b系统,则执行正常的a/b系统固件流式升级流程,完成设备固件的升级,若系统类型为非a/b系统,则执行步骤214;
39.在步骤214,引导设备进入固件升级模式(如recovery)进行升级。
40.在步骤215,设备安全启动,从启动存储介质逐级加载对应固件并校验,当成功校
验和引导启动引导程序固件后,启动引导程序从启动引导程序固件中获取公钥参数信息、数字签名算法类型和消息摘要算法类型,根据数字摘要算法类型计算公钥参数信息对应的数字摘要,并将数字摘要与设备芯片中的otp或者efuse进行比较,若比较的结果为一致,则执行步骤216;若比较的结果为不一致,则退出升级流程。
41.在步骤216,根据消息摘要算法类型计算与公钥参数信息对应的消息摘要,将消息摘要、消息摘要算法类型、数字签名算法类型以及当前系统是否为a/b系统的标记写入操作系统内核命令行参数中。
42.在步骤217,启动引导程序校验升级模式固件,若校验为通过,则读取升级模式固件头部的命令行参数,并将公钥文件对应的特定路径添加至操作系统内核命令行参数中,最后引导升级模式固件并传递操作系统内核命令行参数。
43.在步骤218,在固件升级模式中,读取操作系统内核命令行参数中的消息摘要、消息摘要算法类型、数字签名算法类型、当前系统是否为a/b系统的标记和公钥文件对应的特定路径。
44.在步骤219,根据公钥文件对应的特定路径从升级模式固件根文件系统读取公钥文件中的公钥参数信息,并将读取的公钥参数信息作为输入,使用消息摘要算法类型计算对应的第三验证消息摘要。
45.在步骤220,判断第三验证消息摘要与操作系统内核命令行参数中的消息摘要是否一致,若不一致,则退出升级流程,并确定验证的结果为不通过;若一致,则执行步骤221。
46.在步骤221,对固件升级包进行合法性校验,若合法性校验为失败,则退出升级流程,若合法性校验为成功,则提取固件升级包中的公钥文件到内存或者可读写文件系统分区,并读取固件升级包的公钥文件中的公钥参数信息,将读取的公钥参数信息作为输入,使用消息摘要算法类型计算对应的第四验证消息摘要;
47.在步骤222,判断第四验证消息摘要与操作系统内核命令行参数中的消息摘要是否一致,若不一致,则退出升级流程,并确定验证的结果为不通过,若一致,则确定验证的结果为通过。
48.在步骤223,从固件升级包中依次提取出签名后的待升级固件的二进制文件到内存或者可读写文件系统分区,并使用操作系统内核命令行参数中的数字签名算法类型和公钥文件中的公钥参数信息对签名后的待升级固件进行校验,若校验的结果均为成功,则执行固件升级流程,完成设备固件的升级,若任一校验的结果为失败,则退出升级流程。
49.根据本发明的又一方面,图3是示出根据本发明实施例的升级签名固件的设备300的示意图。参照图3,该电子设备300包括存储器302、处理器304以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上面描述的升级签名固件的方法的各个步骤。
50.根据本发明的又一方面,提供了一种计算机可读介质。该计算机可读介质上存储有计算机程序,该计算机程序被处理器执行以实现如上面描述的升级签名固件的方法。
51.综上所述,本发明提供的升级签名固件的方法、电子设备和存储介质,同时在固件升级包和启动固件根文件系统中存放公钥文件,并通过启动引导程序往命令行参数写入经过校验的公钥参数信息的数字摘要,然后在使用公钥文件中的公钥参数信息对待升级固件进行校验之前,基于操作系统内核命令行参数对固件升级包和启动固件根文件系统中的公
钥文件进行校验,实现了公钥信息多重验证,确保公钥信息本身是安全的前提下再对待升级固件进行校验,且无需依赖设备启动引导程序传递公钥参数信息,既解决了升级没签名或者错误签名的固件导致升级后设备无法启动问题的,也解决了没有额外的软硬资源导致无法有效传递公钥信息的问题,从而提高了签名固件升级的可靠性。
52.以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1