本申请涉及安全启动,具体地,涉及一种固件安全启动方法和系统。
背景技术:
1、在mcu(microcontroller unit,微控制单元)的安全启动过程中,第一要素是需要对固件(firmware,用户应用程序,镜像)进行保护,保证固件的安全性,防止固件被破解和篡改。为了保护这些固件,需要对启动固件做加密或者签名操作(打包操作),如果固件被第三方修改或者遭到破坏,固件则无法启动,只有通过身份校验的固件才可被执行,达到安全启动的作用。
2、目前,对固件打包的流程如图1所示,首先对固件进行加密得到密文,以及对固件的哈希值进行签名。打包后的固件主要包含密文、签名、密钥等信息,在校验阶段需串行进行解密、哈希计算和签名,再进行签名校验,校验无误后固件才能被执行。
3、现有的方案实现,虽也达到了安全启动的目的,但是随着固件增大,解密和哈希计算所花费的时间也随之增加,不利于快速安全启动。
技术实现思路
1、为了解决上述技术缺陷之一,本申请实施例中提供了一种固件安全启动方法和系统。
2、根据本申请实施例的第一个方面,提供了一种固件安全启动方法,包括:
3、获取待启动固件的密文信息;所述密文信息为加密端利用所述待启动固件对应的加密密钥使用预设加密算法对所述待启动固件进行加密获得的;
4、获取所述待启动固件的签名信息;所述签名信息为加密端利用所述待启动固件对应的签名密钥使用预设签名算法对所述固件的密文信息的哈希值进行签名获得的;
5、获取所述待启动固件的解密信息;所述解密信息为解密端利用保存的或获取的所述待启动固件的解密密钥使用预设解密算法对所述密文信息进行解密获得的;
6、获取所述待启动固件的签名验证信息;所述签名验证信息为解密端利用保存的或获取的所述待启动固件对应的签名密钥使用预设签名算法对所述固件的密文信息的哈希值进行签名获得的;
7、将所述待启动固件的签名信息与所述待启动固件的签名验证信息进行校验;
8、若校验通过,利用所述待启动固件的解密信息执行启动处理。
9、在本申请一个可选的实施例中,利用所述待启动固件对应的签名密钥使用预设签名算法对所述固件的密文信息的哈希值进行签名包括:
10、读取所述待启动固件的文件列表;
11、计算所述文件列表的哈希值;
12、利用所述签名密钥使用预设签名算法对所述哈希值进行签名。
13、在本申请一个可选的实施例中,将所述待启动固件的签名信息与所述待启动固件的签名验证信息进行校验包括:
14、判断所述签名信息与所述签名验证信息是否相同或者所述签名信息与所述签名验证信息是否符合预设的规则;
15、当所述签名信息与所述签名验证信息相同或者所述签名信息与所述签名验证信息符合预设的规则时,校验通过;
16、当所述签名信息与所述签名验证信息不同或者所述签名信息与所述签名验证信息不符合预设的规则,校验不通过,并停止启动所述待启动固件。
17、在本申请一个可选的实施例中,根据直接内存访问特性,并行执行获取所述待启动固件的解密信息的步骤和获取所述待启动固件的签名验证信息的步骤。
18、在本申请一个可选的实施例中,计算所述文件列表的哈希值包括:
19、对所述文件列表中所有文件计算哈希值;
20、使用预设哈希算法将所有文件的哈希值进行计算得到所述文件列表的哈希值。
21、根据本申请实施例的第二个方面,提供了一种固件安全启动系统,包括:加密端、解密端和验证端;
22、验证端获取待启动固件的密文信息;所述密文信息为加密端利用所述待启动固件对应的加密密钥使用预设加密算法对所述待启动固件进行加密获得的;
23、验证端获取所述待启动固件的签名信息;所述签名信息为加密端利用所述待启动固件对应的签名密钥使用预设签名算法对所述固件的密文信息的哈希值进行签名获得的;
24、验证端获取所述待启动固件的解密信息;所述解密信息为解密端利用保存的或获取的所述待启动固件的解密密钥使用预设解密算法对所述密文信息进行解密获得的;
25、验证端获取所述待启动固件的签名验证信息;所述签名验证信息为解密端利用保存的或获取的所述待启动固件对应的签名密钥使用预设签名算法对所述固件的密文信息的哈希值进行签名获得的;
26、验证端将所述待启动固件的签名信息与所述待启动固件的签名验证信息进行校验;
27、若校验通过,验证端利用所述待启动固件的解密信息执行启动处理。
28、在本申请一个可选的实施例中,验证端将所述待启动固件的签名信息与所述待启动固件的签名验证信息进行校验包括:
29、判断所述签名信息与所述签名验证信息是否相同或者所述签名信息与所述签名验证信息是否符合预设的规则;
30、当所述签名信息与所述签名验证信息相同或者所述签名信息与所述签名验证信息符合预设的规则时,校验通过;
31、当所述签名信息与所述签名验证信息不同或者所述签名信息与所述签名验证信息不符合预设的规则,校验不通过,并停止启动所述待启动固件。
32、在本申请一个可选的实施例中,验证端根据直接内存访问特性,并行执行获取所述待启动固件的解密信息的步骤和获取所述待启动固件的签名验证信息的步骤。
33、根据本申请实施例的第三个方面,提供了一种计算机设备,包括:存储器;
34、处理器;以及计算机程序;其中,计算机程序存储在存储器中,并被配置为由处理器执行以实现如本申请实施例的第一个方面任一项方法的步骤。
35、根据本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序;计算机程序被处理器执行以实现如本申请实施例的第一个方面任一项方法的步骤。
36、采用本申请实施例中提供的固件安全启动方法,具有以下有益效果:
37、本申请首先对固件加密得到密文,再对密文的哈希值进行签名,在校验时,对密文进行解密和验签并行执行,达到了安全启动的目的,并有效缩短了安全启动的时间,固件越大,安全启动时间的节约效果越明显,提高整体固件安全启动的效率。
1.一种固件安全启动方法,其特征在于,包括:
2.根据权利要求1所述的固件安全启动方法,其特征在于,将所述待启动固件的签名信息与所述待启动固件的签名验证信息进行校验包括:
3.根据权利要求1所述的固件安全启动方法,其特征在于,根据直接内存访问特性,并行执行获取所述待启动固件的解密信息的步骤和获取所述待启动固件的签名验证信息的步骤。
4.根据权利要求1所述的固件安全启动方法,其特征在于,计算所述文件列表对应的密文信息的哈希值包括:
5.一种固件安全启动系统,其特征在于,包括:加密端、解密端和验证端;
6.根据权利要求5所述的固件安全启动系统,其特征在于,验证端将所述待启动固件的签名信息与所述待启动固件的签名验证信息进行校验包括:
7.根据权利要求5或6所述的固件安全启动系统,其特征在于,验证端根据直接内存访问特性,并行执行获取所述待启动固件的解密信息的步骤和获取所述待启动固件的签名验证信息的步骤。
8.一种计算机设备,其特征在于,包括:
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序;所述计算机程序被处理器执行以实现如权利要求1-4任一项所述的方法。
