一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

验签方法、验签模组、电子设备、验签模块以及控制器与流程

2022-07-13 21:23:40 来源:中国专利 TAG:


1.本公开涉及芯片技术领域,尤其涉及一种验签方法、验签模组、电子设备、验签模块以及控制器。


背景技术:

2.芯片在启动流程中,通常需要从芯片外加载固件(firmware),该固件用于控制芯片运行。而为了保证固件的安全性和可信度,固件会预先被加密和签名,当固件被加载到芯片内部后,还会被验签和解密。例如公开号为cn113688399a的专利申请中,提出了将收到的固件通过sha256算法得到哈希值a(即标准哈希值),将数字签名用公钥进行解密,得到哈希值b(即解密哈希值),将这两个哈希值对比,如果一致,则认证成功,反之则认证失败。
3.又例如公开号为cn113626803a的专利申请中,提出了在bmc每次上电引导过程中,自动检测bmc固件的镜像文件的签名值,验证bmc固件的镜像文件的完整性和合法性,验证通过后进行bmc固件的镜像文件的解密操作和程序加载运行。
4.以ecdsa验签算法为例,验签过程通常包括:首先计算被加载固件的哈希值,然后根据签名值r/s、计算出的哈希值、以及相应椭圆曲线参数,进行验签运算。然而由于芯片启动流程中,从数据加载到验签运算,涉及的处理步骤较多,且部分处理步骤的耗时较长,导致芯片完全启动所需的耗时较长。


技术实现要素:

5.本公开的目的是提供一种验签方法、验签模组、电子设备、验签模块以及控制器,旨在提升芯片的验签效率。
6.根据本公开的一个方面,提供一种验签模组,包括:验签模块和控制器;验签模块被配置为:读取签名值和第一中间数据,并根据签名值和第一中间数据,进行验签运算;其中,第一中间数据是根据待验证固件计算出的数据,待验证固件是在芯片启动流程中所需的固件,验签模块是芯片中的一个模块;控制器被配置为:将待验证固件从第一片外存储器搬运至片内存储器,或者将待验证固件从第一片外存储器搬运至第二片外存储器,第二片外存储器的数据读取速率高于第一片外存储器的数据读取速率;其中,待验证固件的搬运过程与验签运算在时间上存在重叠;验签模块还被配置为:从片内存储器或第二片外存储器读取待验证固件,并根据待验证固件计算第二中间数据,以及判断第一中间数据与第二中间数据是否匹配;验签模块还被配置为:在验签运算的验签结果为通过,且第一中间数据与第二中间数据匹配的情况下,确定验签通过。
7.可选地,验签模块还被配置为:在根据签名值和第一中间数据,进行验签运算之前,读取验签算法选择信息,并根据验签算法选择信息,从芯片内获取相应的验签参数;验签模块在进行验签运算时,具体被配置为:根据签名值、第一中间数据以及验签
参数,进行验签运算。
8.可选地,验签模块还被配置为:在根据待验证固件计算第二中间数据之前,读取中间数据算法选择信息,中间数据算法选择信息对应的算法是用于计算第一中间数据的算法;验签模块在计算第二中间数据时,具体被配置为:基于中间数据算法选择信息对应的算法,根据待验证固件,计算第二中间数据。
9.可选地,第一中间数据是根据待验证固件的哈希值所推导出的数值,中间数据算法选择信息是哈希算法选择信息。
10.可选地,控制器还被配置为:在验签模块读取签名值和第一中间数据之前,将签名值和第一中间数据从第一片外存储器搬运至片内存储器;验签模块在读取签名值和第一中间数据时,具体被配置为:从片内存储器读取签名值和第一中间数据。
11.可选地,在控制器将签名值和第一中间数据从第一片外存储器搬运至片内存储器之前,验签数据和待验证固件按照从前至后的顺序存储在第一片外存储器中,验签数据包括签名值和第一中间数据;控制器具体被配置为:按照上述顺序,依次搬运验签数据和待验证固件。
12.可选地,控制器还被配置为:在验签模块读取签名值和第一中间数据之前,将签名值和第一中间数据从第一片外存储器搬运至第二片外存储器;验签模块在读取签名值和第一中间数据时,具体被配置为:从第二片外存储器读取签名值和第一中间数据。
13.可选地,在控制器将签名值和第一中间数据从第一片外存储器搬运至第二片外存储器之前,验签数据和待验证固件按照从前至后的顺序存储在第一片外存储器中,验签数据包括签名值和第一中间数据;控制器具体被配置为:按照顺序,依次搬运验签数据和待验证固件。
14.根据本公开的另一个方面,提供一种电子设备,该电子设备包括上述任一实施例中所述的签名模组。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、vr设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
15.根据本公开的另一个方面,提供一种验签方法,包括:验签模块读取签名值和第一中间数据,并根据签名值和第一中间数据,进行验签运算;其中,第一中间数据是根据待验证固件计算出的数据,待验证固件是在芯片启动流程中所需的固件,验签模块是芯片中的一个模块;控制器将待验证固件从第一片外存储器搬运至片内存储器,或者将待验证固件从第一片外存储器搬运至第二片外存储器,第二片外存储器的数据读取速率高于第一片外存储器的数据读取速率;其中,待验证固件的搬运过程与验签运算在时间上存在重叠;验签模块从片内存储器或第二片外存储器读取待验证固件,并根据待验证固件计算第二中间数据,以及判断第一中间数据与第二中间数据是否匹配;在验签运算的验签结果为通过,且第一中间数据与第二中间数据匹配的情况下,所述验签模块确定验签通过。
16.可选地,在根据签名值和第一中间数据,进行验签运算之前,验签方法还包括:验签模块读取验签算法选择信息,并根据验签算法选择信息,从芯片内获取相应的验签参数;根据所述签名值和所述第一中间数据,进行验签运算,包括:验签模块根据签名值、第一中间数据以及验签参数,进行验签运算。
17.可选地,在根据待验证固件计算第二中间数据之前,验签方法还包括:验签模块读取中间数据算法选择信息,中间数据算法选择信息对应的算法是用于计算第一中间数据的算法;根据待验证固件计算第二中间数据,包括:基于中间数据算法选择信息对应的算法,根据待验证固件,计算第二中间数据。
18.可选地,第一中间数据是根据待验证固件的哈希值所推导出的数值,中间数据算法选择信息是哈希算法选择信息。
19.可选地,在验签模块读取签名值和第一中间数据之前,验签方法还包括:控制器将签名值和第一中间数据从第一片外存储器搬运至片内存储器;验签模块读取签名值和第一中间数据,包括:验签模块从片内存储器读取签名值和第一中间数据。
20.可选地,在控制器将签名值和第一中间数据从第一片外存储器搬运至片内存储器之前,验签数据和待验证固件按照从前至后的顺序存储在第一片外存储器中,验签数据包括签名值和第一中间数据;控制器按照上述顺序,依次搬运验签数据和待验证固件。
21.可选地,在验签模块读取签名值和第一中间数据之前,验签方法还包括:控制器将签名值和第一中间数据从第一片外存储器搬运至第二片外存储器;验签模块读取签名值和第一中间数据,包括:验签模块从第二片外存储器读取签名值和第一中间数据。
22.可选地,在控制器将签名值和第一中间数据从第一片外存储器搬运至第二片外存储器之前,验签数据和待验证固件按照从前至后的顺序存储在第一片外存储器中,验签数据包括签名值和第一中间数据;控制器按照上述顺序,依次搬运验签数据和待验证固件。
23.根据本公开的另一个方面,提供一种验签模块,包括验签单元、比较单元以及流程控制单元,验签单元、比较单元以及流程控制单元均设置在同一芯片内;验签单元用于:在从片内存储器或第一片外存储器获取到签名值和第一中间数据后,根据签名值和第一中间数据,进行验签运算;其中,第一中间数据是根据待验证固件计算出的数据,待验证固件是在芯片启动流程中所需的固件;比较单元用于:在从片内存储器或第二片外存储器获取到第一中间数据和待验证固件后,根据待验证固件计算第二中间数据,以及判断第一中间数据与第二中间数据是否匹配;其中,待验证固件是在验签单元执行验签运算期间,从第一片外存储器被搬运至片内存储器的,或者从第一片外存储器被搬运至第二片外存储器的,第二片外存储器的数据读取速率高于第一片外存储器的数据读取速率;流程控制单元用于:在验签运算的验签结果为通过,且第一中间数据与第二中间数据匹配的情况下,确定验签通过。
24.可选地,验签模块还包括dma控制单元;
dma控制单元用于:在验签单元被流程控制单元启动后,从片内存储器或第一片外存储器读取签名值和第一中间数据,并将签名值和第一中间数据送入验签单元;dma控制单元还用于:在比较单元被流程控制单元启动后,从片内存储器或第一片外存储器读取第一中间数据和待验证固件,并将第一中间数据和待验证固件送入比较单元。
25.可选地,验签单元还用于:在根据签名值和第一中间数据,进行验签运算之前,通过dma控制单元从片内存储器或第一片外存储器获取验签算法选择信息,并根据验签算法选择信息,从芯片内获取相应的验签参数;验签单元在进行验签运算时,具体用于:根据签名值、第一中间数据以及验签参数,进行验签运算。
26.可选地,比较单元还用于:在根据待验证固件计算第二中间数据之前,通过dma控制单元从片内存储器或第一片外存储器读取中间数据算法选择信息,中间数据算法选择信息对应的算法是用于计算第一中间数据的算法;比较单元在计算第二中间数据时,具体用于:基于中间数据算法选择信息对应的算法,根据待验证固件,计算第二中间数据。
27.可选地,第一中间数据是根据待验证固件的哈希值所推导出的数值,中间数据算法选择信息是哈希算法选择信息。
28.根据本公开的另一个方面,提供一种控制器,控制器用于:在芯片启动流程中,按照验签数据和待验证固件在第一片外存储器中的顺序,依次将验签数据和待验证固件搬运至片内存储器;或者,在芯片启动流程中,按照验签数据和待验证固件在第一片外存储器中的顺序,首先将验签数据搬运至片内存储器,然后将待验证固件搬运至第二片外存储器;或者,在芯片启动流程中,按照验签数据和待验证固件在第一片外存储器中的顺序,依次将验签数据和待验证固件搬运至第二片外存储器;其中,第二片外存储器的数据读取速率高于第一片外存储器的数据读取速率;验签数据包括签名值和中间数据,中间数据是根据待验证固件计算出的数据,中间数据用于对待验证固件进行验签。
附图说明
29.图1为本公开一实施例提供的验签方法的流程示意图;图2是本公开另一实施例提供的验签方法的流程示意图;图3是本公开一实施例提供的验签模块的结构示意图。
具体实施方式
30.在介绍本公开实施例之前,应当说明的是:本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
31.本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区
分。
32.本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
33.应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
34.为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
35.本公开的目的是提供一种提高验签效率的方案,特别是在芯片启动期间提高对固件的验签效率的方案。
36.在本公开提供的一种方案中,在芯片启动流程中,验签数据和待验证固件会按照从前至后的顺序存储在芯片外的存储器中。为简化说明,以下将芯片外的存储器简称为片外存储器。相对应地,将芯片内的存储器简称为片内存储器。其中,验签数据包括:签名值、第一中间数据、验签算法选择信息、以及中间数据算法选择信息。其中,第一中间数据是根据待验证固件计算出的数据,中间数据算法选择信息对应的算法是用于计算第一中间数据的算法。
37.需要说明的是,本公开中,对于签名值、第一中间数据、验签算法选择信息、以及中间数据算法选择信息的排列顺序,本公开不做限定,但是待验证固件排列在这些数据之后。
38.如图1所示,在芯片启动流程中,控制器按照排列顺序,首先将签名值、第一中间数据、验签算法选择信息、以及中间数据算法选择信息等少量数据,从第一片外存储器快速搬运至片内存储器sram。
39.在上述数据搬运完成后,一方面,控制器将待验证固件从第一片外存储器快速搬运至片内存储器sram,或者将待验证固件从数据读取速率偏低的第一片外存储器搬运至数据读取率更高的第一片外存储器ddr。
40.另一方面,在控制器搬运待验证固件期间,芯片内的验签模块开始从片内存储器读取签名值、第一中间数据、以及验签算法选择信息,并根据读取到的这些数据,执行验签运算。
41.当控制器搬运完待验证固件后,验签模块从片内存储器或者读取速率更高的第一片外存储器读取待验证固件,并根据中间数据算法选择信息和待验证固件,计算第二中间数据。验签模块在计算出第二中间数据后,判断第一中间数据与第二中间数据是否匹配。
42.如果第一中间数据与第二中间数据匹配,则说明第一中间数据是准确的,第一中间数据没有被篡改。因此,在验签运算的验签结果为通过,且第一中间数据与第二中间数据匹配的情况下,验签模块确定出最终验签结果,最终验签结果为验签通过。
43.值得说明的是,验签运算的运算时间通常较长,待验证固件的搬运时间也通常较长,而本公开同时执行验签运算和待验证固件搬运操作,并通过比较第一中间数据和第二中间数据,从而可以在安全可靠的前提下提升验签效率,进而降低芯片的启动耗时。
44.以上,本公开提供一种验签方案。以下,本公开通过多个实施例提供一些验签方
法、验签模组、电子设备、验签模块以及控制器。需要说明的是,以下每个实施例中,可能包括以上验签方案中的部分特征或全部特征。
45.参考图2,图2是本公开一实施例提供的验签方法的流程示意图。如图2所示,该验签方法包括以下步骤:s210:验签模块读取签名值和第一中间数据,并根据签名值和第一中间数据,进行验签运算;其中,第一中间数据是根据待验证固件计算出的数据,待验证固件是在芯片启动流程中所需的固件,验签模块是芯片中的一个模块。
46.其中,验签模块是用于在芯片启动流程中,对加载至芯片的固件进行验签的模块。
47.在一些实施例中,芯片还包括存储器。为简化说明,以下将芯片内的存储器简称为片内存储器。相对应地,对于芯片外的存储器,以下可简称为第一片外存储器。其中,片内存储器可选用sram存储器(即静态随机存取存储器)。第一片外存储器可选用spi flash存储器和ddr存储器(即双倍速率同步动态随机存储器)。
48.在一些实施例中,在验签模块读取签名值和第一中间数据之前,控制器可以将签名值和第一中间数据从第一片外存储器搬运至片内存储器。如此,在步骤s110中,验签模块具体从片内存储器读取签名值和第一中间数据。其中,第一片外存储器可以选用spi flash,片内存储器可以选用sram。控制器可选用spi控制器,spi控制器设置于芯片内。或者,控制器也可以选用第一片外存储器对应的控制器,本公开对此不做限定。
49.在另一些实施例中,在验签模块读取签名值和第一中间数据之前,控制器可以将签名值和第一中间数据从第一片外存储器搬运至第二片外存储器。如此,在步骤s110中,验签模块具体从第二片外存储器读取签名值和第一中间数据。其中,第二片外存储器的数据读取速率高于第一片外存储器的数据读取速率。例如第二片外存储器可以选用ddr,第一片外存储器可以选用spi flash。控制器可选用spi控制器,spi控制器设置于芯片内。或者,控制器也可以选用第一片外存储器对应的控制器,本公开对此不做限定。
50.本公开中,第一中间数据是用于对待验证固件进行验签操作的数据。具体地,第一中间数据是根据待验证固件计算出的用于对待验证固件进行验签的数据。
51.为便于理解,以ecdsa验签算法为例,在基于ecdsa验签算法进行验签时,具体包括如下过程:首先计算待验证固件m的哈希值h,然后根据哈希值h推导出整数e,接着根据整数e和签名值计算参数u1和u2,再根据参数u1、u2以及椭圆曲线参数,执行验签运算。本公开中,第一中间参数可以是待验证固件m的哈希值h,或者也可以是根据哈希值h推导出的整数e,或者还可以是根据整数e和签名值计算出的参数u1和u2。
52.在一些实施例,将待验证固件的哈希值h推导出的数值e作为第一中间参数。将数值e作为第一中间参数的好处在于:数值e的数据量较小,有利于进一步缩短数据搬运耗时。
53.需要说明的是,除了可以在ecdsa验签利用本公开以达到提升验签效率的目的。在其他验签算法中,例如sm2算法中,也可以利用本公开以达到提升验签效率的目的。换言之,本公开对于验签算法,不做限定。
54.s220:控制器将待验证固件从第一片外存储器搬运至片内存储器,或者将待验证固件从第一片外存储器搬运至第二片外存储器。
55.如前所述,第二片外存储器的数据读取速率高于第一片外存储器的数据读取速率。此外,待验证固件的搬运过程与验签运算在时间上存在重叠。
56.本公开中,如前所述,控制器可选用spi控制器,spi控制器可设置于芯片内。或者,控制器也可以选用第一片外存储器对应的控制器,本公开对此不做限定。
57.在一些实施例中,如前所述,验签数据和待验证固件按照从前至后的顺序存储在第一片外存储器中,验签数据至少包括签名值和第一中间数据。控制器按照上述顺序,依次搬运验签数据和待验证固件。
58.例如在芯片启动流程中,控制器首先将签名值和第一中间数据从第一片外存储器spi flash搬运至片内存储器sram,然后将待验证固件(例如驱动程序)从第一片外存储器spi flash搬运至片内存储器sram。或者,在芯片启动流程中,控制器首先将签名值和第一中间数据从第一片外存储器spi flash搬运至片内存储器sram,然后将待验证固件(例如驱动程序)从第一片外存储器spi flash搬运至第二片外存储器ddr。或者,在芯片启动流程中,控制器首先将签名值和第一中间数据从第一片外存储器spi flash搬运至第二片外存储器ddr,然后将待验证固件(例如驱动程序)从第一片外存储器spi flash搬运至第二片外存储器ddr。
59.值得说明的是,本公开中,通过将签名值、第一中间数据以及待验证固件按照一定顺序存储在芯片外的存储器,使得控制器在按照顺序搬运数据期间,可以更顺利地先将签名值和第一中间数据搬运至片内存储器或读取速率更快的第一片外存储器,从而使得芯片内的验签模块可以更快速的启动验签运算。
60.s230:验签模块从片内存储器或第二片外存储器读取待验证固件,并根据待验证固件计算第二中间数据,以及判断第一中间数据与第二中间数据是否匹配。
61.本公开中,由于第一中间数据和第二中间数据均是根据待验证固件计算出的,因此在第一中间数据未被篡改的情况下,第一中间数据应当与第二中间数据匹配。
62.其中,第一中间数据与第二中间数据匹配,可以是指第一中间数据等于第二中间数据。或者,也可以是指第一中间数据经过运算后,等于第二中间数据。或者,还可以是指第二中间数据经过运算后,等于第一中间数据。需要说明的是,本公开对于第一中间数据与第二中间数据的具体匹配方式,不做限定。
63.s240:在验签运算的验签结果为通过,且第一中间数据与第二中间数据匹配的情况下,验签模块确定验签通过。
64.简言之,如果步骤s210中验签运算的验签结果表示验签通过,且步骤s230中的判断结果为第一中间数据与第二中间数据匹配,则验签模块确定出最终验签结果,最终验签结果为验签通过。
65.值得说明的是,本公开中,如果第一中间数据与第二中间数据匹配,则说明第一中间数据是准确的,第一中间数据没有被篡改。因此,在验签运算的验签结果为通过,且第一中间数据与第二中间数据匹配的情况下,验签模块确定验签通过。
66.还值得说明的是,验签运算的运算时间通常较长,待验证固件的搬运时间也通常较长,而本公开同时执行验签运算和待验证固件搬运操作,使得验签运算不必在待验证固件搬运完成后才开始执行。并且,本公开通过比较第一中间数据和第二中间数据,以验证验签运算是否可信。如此,本公开可以在安全可靠的前提下提升验签效率,进而降低芯片启动耗时。
67.在一些实施例中,在步骤s210中,验签模块在根据签名值和第一中间数据,进行验
签运算之前,还可以读取验签算法选择信息,并根据验签算法选择信息,从芯片内获取相应的验签参数。接着验签模块在进行验签运算时,根据签名值、第一中间数据以及验签参数,进行验签运算。
68.其中,验签算法选择信息可以是椭圆曲线选择信息,验签算法选择信息对应的验签参数为椭圆曲线参数。例如,控制器在搬运数据时,首先将签名值、第一中间数据以及椭圆曲线选择信息从第一片外存储器spi flash搬运至片内存储器sram。然后验签模块从片内存储器读取到签名值、第一中间数据以及椭圆曲线选择信息后,根据椭圆曲线选择信息,从片内存储器获取该椭圆曲线选择信息对应的椭圆曲线参数(例如p-256椭圆曲线参数),然后根据签名值、第一中间数据以及椭圆曲线参数,执行验签算法(例如ecdsa算法)。
69.值得说明的是,本公开通过在芯片内预置多种验签算法各自对应的验签参数,例如多种椭圆曲线各自对应的椭圆曲线参数,并根据验签算法选择信息选择相应的验签参数,从而可以提升芯片对多种验签算法的兼容性。并且,相比于验签参数,验签算法选择信息的数据量更小,可以进一步减小数据搬运量,从而进一步提升验签效率。
70.在另一些实施例中,验签模块仅支持默认的验签算法,因此验签模块不需要根据验签算法选择信息获取验签参数。
71.在一些实施例中,在步骤s230中,验签模块在根据待验证固件计算第二中间数据之前,还可以读取中间数据算法选择信息。本公开中,中间数据算法选择信息对应的算法是用于计算第一中间数据的算法。接着验签模块在计算第二中间数据时,基于中间数据算法选择信息对应的算法,根据待验证固件,计算第二中间数据。
72.如前所述,第一中间数据可以是根据待验证固件计算出的哈希值,相应地,中间数据算法选择信息是哈希算法选择信息。例如,控制器在搬运数据时,首先将签名值、第一中间数据以及哈希算法选择信息从第一片外存储器spi flash搬运至片内存储器sram,然后将待验证固件从第一片外存储器spi flash搬运至片内存储器sram。在步骤s230中,验签模块从片内存储器sram读取到哈希算法选择信息和待验证固件后,首先根据哈希算法选择信息,选择相应的哈希算法(例如sha-256哈希算法),然后基于选择的哈希算法,计算待验证固件的哈希值,最后比较第一中间数据与计算出的哈希值是否相等。
73.值得说明的是,本公开根据中间数据算法选择信息选择相应的算法,可以提升芯片对多种算法的兼容性。
74.在另一些实施例中,验签模块仅支持默认的用于计算中间数据的算法(例如sha-256哈希算法),因此验签模块不需要根据中间数据算法选择信息选择算法。
75.以上,本公开通过一个或多个实施例提供了一种或多种验签方法。以下,本公开通过一个或多个实施例提供一种或多种验签模组。需要说明的是,由于验签模组的运作方式与上述验签方法相对应。因此为避免重复,以下对验签模组进行简要介绍,对于验签模组的具体实施方式,可参见验签方法的相关内容。
76.本公开中,验签模组包括:验签模块和控制器。
77.其中,验签模块被配置为:读取签名值和第一中间数据,并根据签名值和第一中间数据,进行验签运算;其中,第一中间数据是根据待验证固件计算出的数据,待验证固件是在芯片启动流程中所需的固件,验签模块是芯片中的一个模块。
78.控制器被配置为:将待验证固件从第一片外存储器搬运至片内存储器,或者将待
验证固件从第一片外存储器搬运至第二片外存储器,第二片外存储器的数据读取速率高于第一片外存储器的数据读取速率;其中,待验证固件的搬运过程与验签运算在时间上存在重叠。
79.验签模块还被配置为:从片内存储器或第二片外存储器读取待验证固件,并根据待验证固件计算第二中间数据,以及判断第一中间数据与第二中间数据是否匹配。
80.验签模块还被配置为:在验签运算的验签结果为通过,且第一中间数据与第二中间数据匹配的情况下,确定验签通过。
81.在一些实施例中,验签模块还被配置为:在根据签名值和第一中间数据,进行验签运算之前,读取验签算法选择信息,并根据验签算法选择信息,从芯片内获取相应的验签参数。
82.验签模块在进行验签运算时,具体被配置为:根据签名值、第一中间数据以及验签参数,进行验签运算。
83.在一些实施例中,验签模块还被配置为:在根据待验证固件计算第二中间数据之前,读取中间数据算法选择信息,中间数据算法选择信息对应的算法是用于计算第一中间数据的算法。
84.验签模块在计算第二中间数据时,具体被配置为:基于中间数据算法选择信息对应的算法,根据待验证固件,计算第二中间数据。
85.在一些实施例中,第一中间数据是根据待验证固件计算出的哈希值,中间数据算法选择信息是哈希算法选择信息。
86.在一些实施例中,控制器还被配置为:在验签模块读取签名值和第一中间数据之前,将签名值和第一中间数据从第一片外存储器搬运至片内存储器。
87.验签模块在读取签名值和第一中间数据时,具体被配置为:从片内存储器读取签名值和第一中间数据。
88.在一些实施例中,在控制器将签名值和第一中间数据从第一片外存储器搬运至片内存储器之前,验签数据和待验证固件按照从前至后的顺序存储在第一片外存储器中,验签数据包括签名值和第一中间数据;控制器具体被配置为:按照上述顺序,依次搬运验签数据和待验证固件。
89.在一些实施例中,控制器还被配置为:在验签模块读取签名值和第一中间数据之前,将签名值和第一中间数据从第一片外存储器搬运至第二片外存储器。
90.验签模块在读取签名值和第一中间数据时,具体被配置为:从第二片外存储器读取签名值和第一中间数据。
91.在一些实施例中,在控制器将签名值和第一中间数据从第一片外存储器搬运至第二片外存储器之前,验签数据和待验证固件按照从前至后的顺序存储在第一片外存储器中,验签数据包括签名值和第一中间数据;控制器具体被配置为:按照上述顺序,依次搬运验签数据和待验证固件。
92.本公开实施例还提供一种电子设备,该电子设备包括上述的验签模组。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、vr设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机、工作站、服务器等。
93.参考图3,图3是本公开一实施例提供的验签模块的结构示意图。如图3所示,验签
模块包括:验签单元、比较单元以及流程控制单元(flow control),其中,验签单元、比较单元以及流程控制单元均设置在同一芯片内。
94.其中,验签单元用于:在从片内存储器或第一片外存储器获取到签名值和第一中间数据后,根据签名值和第一中间数据,进行验签运算。其中,第一中间数据是根据待验证固件计算出的数据,待验证固件是在芯片启动流程中所需的固件。
95.比较单元用于:在从片内存储器或第二片外存储器获取到第一中间数据和待验证固件后,根据待验证固件计算第二中间数据,以及判断第一中间数据与第二中间数据是否匹配。其中,待验证固件是在验签单元执行验签运算期间,从第一片外存储器被搬运至片内存储器的,或者从第一片外存储器被搬运至第二片外存储器的,第二片外存储器的数据读取速率高于第一片外存储器的数据读取速率。
96.流程控制单元用于:在验签运算的验签结果为通过,且第一中间数据与第二中间数据匹配的情况下,确定验签通过。
97.在一些实施例中,流程控制单元(flow control)用于在芯片启动期间对验签操作进行流程控制,包括:启动下述dma控制单元、启动验签单元、启动比较单元、收集验签单元的验签结果和比较单元的比较结果、以及输出最终的验签结果。
98.在一些实施例中,如图3所示,验签模块还包括dma控制单元。dma控制单元用于:在验签单元被流程控制单元启动后,从片内存储器或第一片外存储器读取签名值和第一中间数据,并将签名值和第一中间数据送入所述验签单元。
99.dma控制单元还用于:在比较单元被流程控制单元启动后,从片内存储器或第一片外存储器读取第一中间数据和待验证固件,并将第一中间数据和待验证固件送入比较单元。
100.在一些实施例中,验签单元还用于:在根据签名值和第一中间数据,进行验签运算之前,通过dma控制单元从片内存储器或第一片外存储器获取验签算法选择信息,并根据验签算法选择信息,从芯片内获取相应的验签参数。
101.验签单元在进行验签运算时,具体用于:根据签名值、第一中间数据以及验签参数,进行验签运算。
102.在一些实施例中,比较单元还用于:在根据待验证固件计算第二中间数据之前,通过dma控制单元从片内存储器或第一片外存储器读取中间数据算法选择信息,中间数据算法选择信息对应的算法是用于计算第一中间数据的算法。
103.比较单元在计算第二中间数据时,具体用于:基于中间数据算法选择信息对应的算法,根据待验证固件,计算第二中间数据。
104.在一些实施例中,第一中间数据是根据待验证固件计算出的哈希值,中间数据算法选择信息是哈希算法选择信息。
105.在一些实施例中,在芯片启动流程中,签名值、第一中间数据、验签算法选择信息、以及中间数据算法选择信息,被前述控制器(例如spi控制器)搬运至芯片内的sram存储器,并且上述信息在sram存储器中的存储地址会被写入至验签单元对应的寄存器。
106.流程控制单元启动验签单元后,验签单元通过dam控制单元从sram存储器读取签名值、第一中间数据、验签算法选择信息、以及中间数据算法选择信息,dam控制单元将验签算法选择信息和中间数据算法选择信息写入寄存器,并将签名值和第一中间数据写入验签
单元内部的sram,使得验签单元启动验签运算。
107.在验签单元执行验签运算期间,前述控制器(例如spi控制器)继续将待验证固件搬运至芯片内的sram存储器,或者搬运至芯片外的ddr存储器。通常,如果待验证固件的数据量较小,则会将待验证固件搬运至芯片内的sram存储器,如果待验证固件的数据量较大,则会将待验证固件搬运至芯片外的ddr存储器。
108.在待验证固件搬运完成后,第一中间数据和待验证固件的存储地址会被写入比较单元。比较单元通过dam控制单元从sram存储器或ddr存储器读取第一中间数据和待验证固件。比较单元根据中间数据算法选择信息,选择相应算法,然后根据选择的算法对待验证固件进行计算,得到第二中间数据。比较单元判断第一中间数据与第二中间数据是否匹配。
109.流程控制单元收集验签单元的计算结果和比较单元的比较结果,如果验签单元的计算结果表示验签通过,且比较单元的比较结果表示第一中间数据与第二中间数据匹配,则流程控制单元输出最终的验签结果:验签通过。否则,流程控制单元输出最终的验签结果:验签未通过。
110.本公开实施例还提供一种控制器,该控制器用于:在芯片启动流程中,按照验签数据和待验证固件在第一片外存储器中的顺序,依次将验签数据和待验证固件搬运至片内存储器。
111.或者,该控制器用于:在芯片启动流程中,按照验签数据和待验证固件在第一片外存储器中的顺序,首先将验签数据搬运至片内存储器,然后将待验证固件搬运至第二片外存储器。
112.或者,该控制器用于:在芯片启动流程中,按照验签数据和待验证固件在第一片外存储器中的顺序,依次将验签数据和待验证固件搬运至第二片外存储器。
113.其中,第二片外存储器的数据读取速率高于第一片外存储器的数据读取速率。验签数据包括签名值和中间数据,中间数据是根据待验证固件计算出的数据,中间数据用于对待验证固件进行验签。
114.尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
115.显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献