公开/公告号CN113438087B
专利类型发明专利
公开/公告日2022.11.01
原文格式PDF
申请/专利权人 深圳市风云实业有限公司;
申请/专利号CN202110704620.3
申请日2021.06.24
分类号H04L9/32(2006.01);G06F21/64(2013.01);G06F21/60(2013.01);
代理机构北京正华智诚专利代理事务所(普通合伙) 11870;
代理人李梦蝶
地址 518040 广东省深圳市福田区车公庙天安工业区天吉大厦2B2、3B2、4B1
入库时间 2022-11-28 17:54:09
法律状态公告日
法律状态信息
法律状态
2022-11-01
授权
发明专利权授予
技术领域
本发明属于嵌入式设备领域,具体涉及一种UBOOT(主要用于嵌入式系统的引导加载程序)下的基于国密算法的系统镜像签名校验方法。
背景技术
目前最常用的非对称算法1024位RSA被证实存在被攻击的风险,且可能预置NSA后门,国家密码局认定的国产密码算法主要包括SM1、SM2、SM3和SM4,其中,SM3为密码杂凑算法,SM2为非对称加密,可以用于替代RSA。该算法基于ECC,不存在亚指数级算法危机,256位的SM2安全程度高于2048位的RSA,且其签名速度与密钥生成速度都快于RSA,更适合移植于资源受限的嵌入式系统。
嵌入式设备一般采用flash或硬盘等介质作为存储,或网络服务器存储系统镜像,存在可移动性以及可替换性,为防止系统镜像被替换或者被攻击,需要对设备的系统镜像文件做校验。
发明内容
针对现有技术中的上述不足,本发明提供的UBOOT下基于国密算法的系统镜像签名校验方法解决了现有的系统中少有对系统镜像进行校验,造成系统镜像被替换或者攻击的问题。
为了达到上述发明目的,本发明采用的技术方案为:一种UBOOT下基于国密算法的系统镜像签名校验方法,包括以下步骤:
S1、接收系统镜像文件,并进行镜像签名打包,生成签名镜像文件;
S2、在UBOOT中,使用国密算法中的SM2和SM3对签名镜像文件进行校验。
进一步地,所述步骤S1具体为:
S11、在服务器中使用SM2数字签名算法生成用于签名的公私秘钥对,并保存;
S12、通过签名者将需要签名的系统镜像文件发送到服务端;
S13、基于服务端存储的签名者的数字证书,检查当前接收的系统镜像文件对应的签名者的数字证书是否有效;
若是,则进入步骤S14;
若否,则进入步骤S15;
S14、使用SM3杂凑算法对接收的系统镜像文件处理,产生待签名的消息摘要,进入步骤S16;
S15、提示证书无效,没有被签名的权限,结束流程;
S16、使用SM2数字签名算法用服务器存储的SM2私钥对信息摘要进行签名,产生数字签名;
S17、判断当前产生的数字签名是否校验成功;
若是,则进入步骤S18;
若否,则返回步骤S14;
S18、将数字签名生成签名文件,并将其和系统镜像文件通过mkimage打包,生成最终的签名镜像文件,并将其与SM2公共秘钥发送给签名者。
进一步地,所述步骤S12中的系统镜像文件为img格式,其包括设备启动需要的dtb、内核和文件系统。
进一步地,所述步骤S13中的数字证书包括身份拥有者的公钥信息、证书有效期、签名内容、发证机构名称、数字身份证号和发证机构的数字签名;
所述数字证书由数字证书认证中心CA发放;
所述步骤S13中,检查当前接收的系统镜像文件对应的签名者的数字证书是否有效的方法具体为:
利用数字证书认证中心CA的CA证书中的公钥对签名者提供的数字证书进行解密得到摘要1,用CA证书中指定的hash算法对签名者提供的数字证书计算hash得到摘要2,对比摘要1和摘要2是否一致;
若是,则数字证书有效,进入步骤S14;
若否,则数字证书无效,进入步骤S15。
进一步地,所述步骤S14具体为:
使用SM3杂凑算法计算系统镜像文件的摘要,产生固定位数的待签名的消息摘要。
进一步地,所述步骤S17中对数字签名进行校验的方法为:取出从服务器接收的SM2公共秘钥,并基于SM2公共秘钥使用SM2数字签名算法的验证算法解密数字签名,并对比消息摘要是否一致;
若是,则校验成功,进入步骤S18;
若否,则校验失败,返回步骤S14。
进一步地,所述步骤S18中,生成最终的签名镜像文件添加有时间戳。
进一步地,所述步骤S2具体为:
S21、在UBOOT上从GMALG库中移植SM2数字签名算法和SM3杂凑算法;
S22、当设备启动到UBOOT后,将签名镜像文件加载至内存中的固定地址;
S23、使用imxtract从内存中取出签名镜像文件中的系统镜像文件,并调用GMALG库中的SM3杂凑算法对其进行处理,生成消息摘要;
S24、使用imxtract从内存中取出签名镜像文件中的数字签名和SM2公共秘钥,并利用SM2数字签名算法对消息摘要进行验签,判断是否验签成功;
若是,则进入步骤S26;
若否,则进入步骤S25;
S25、提示校验错误信息,不允许启动,重启设备;
S26、校验成功,启动系统,使设备进入内核。
进一步地,所述步骤S22中,从设备的启动参数获取当前签名镜像文件的加载方式;
当设备为硬盘时,则设备的启动参数包括镜像名、文件系统格式和分区;当设备为网络服务器时,则设备的启动参数包括网络协议、服务器地址和镜像名。
本发明的有益效果为:
(1)本发明中将国密算法移植进UBOOT中,使设备支持了SM2数字签名算法和SM3密码杂凑算法;
(2)本发明方法中支持的SM2数字签名算法比主流的RSA算法更加安全、快速和可靠;
(3)本发明中在嵌入式设备启动内核过程中,对系统镜像的签名检验,提高了设备的安全性和可靠性。
附图说明
图1为本发明提供的UBOOT下基于国密算法的系统镜像签名校验方法流程图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1所示,一种UBOOT下基于国密算法的系统镜像签名校验方法,包括以下步骤:
S1、接收系统镜像文件,并进行镜像签名打包,生成签名镜像文件;
S2、在UBOOT中,使用国密算法中的SM2和SM3对签名镜像文件进行校验。
本实施例的步骤S1具体为:
S11、在服务器中使用SM2数字签名算法生成用于签名的公私秘钥对,并保存;
S12、通过签名者将需要签名的系统镜像文件发送到服务端;
S13、基于服务端存储的签名者的数字证书,检查当前接收的系统镜像文件对应的签名者的数字证书是否有效;
若是,则进入步骤S14;
若否,则进入步骤S15;
S14、使用SM3杂凑算法对接收的系统镜像文件处理,产生待签名的消息摘要,进入步骤S16;
S15、提示证书无效,没有被签名的权限,结束流程;
S16、使用SM2数字签名算法用服务器存储的SM2私钥对信息摘要进行签名,产生数字签名;
S17、判断当前产生的数字签名是否校验成功;
若是,则进入步骤S18;
若否,则返回步骤S14;
S18、将数字签名生成签名文件,并将其和系统镜像文件通过mkimage打包,生成最终的签名镜像文件,并将其与SM2公共秘钥发送给签名者。
上述步骤S12中的系统镜像文件为img格式,其包括设备启动需要的dtb、内核和文件系统,整个打包后形成img格式文件。
上述步骤S13中的数字证书包括身份拥有者的公钥信息、证书有效期、签名内容、发证机构名称、数字身份证号和发证机构的数字签名;
其中,数字证书由数字证书认证中心CA发放;数字身份可由可信的数字证书认证中心发放的,还支持证书有效性检查,包括检查数字证书的真实性、数字证书是否在有效期内。
上述步骤S13具体为:
使用SM3杂凑算法计算系统镜像文件的摘要,产生固定位数的待签名的消息摘要。
上述步骤S13中,检查当前接收的系统镜像文件对应的签名者的数字证书是否有效的方法具体为:
利用数字证书认证中心CA的CA证书中的公钥对签名者提供的数字证书进行解密得到摘要1,用CA证书中指定的hash算法对签名者提供的数字证书计算hash得到摘要2,对比摘要1和摘要2是否一致;
若是,则数字证书有效,进入步骤S14;
若否,则数字证书无效,进入步骤S15。
上述步骤S14具体为:
使用SM3杂凑算法计算系统镜像文件的摘要,产生固定位数的待签名的消息摘要。
上述步骤S16中对数字签名进行校验的方法为:取出从服务器接收的SM2公共秘钥,并基于SM2公共秘钥使用SM2数字签名算法的验证算法解密数字签名,并对比消息摘要是否一致;
若是,则校验成功,进入步骤S18;
若否,则校验失败,返回步骤S14。
上述步骤S18中,生成最终的签名镜像文件添加有时间戳,并将最终的签名镜像文件发送给签名者。
本实施例的步骤S2具体为:
S21、在UBOOT上从GMALG库中移植SM2数字签名算法和SM3杂凑算法;
其中,在UBOOT上移植GMALG库,让UBOOT支持SM2、SM3算法并测试算法校验文件的准确性,由于GMALG库是一个无系统的算法库,直接修改Makefile与UBOOT结合即可,这里不做详细的描述。
S22、当设备启动到UBOOT后,将签名镜像文件加载至内存中的固定地址;
其中,从设备的启动参数获取当前签名镜像文件的加载方式;
当设备为硬盘时,则设备的启动参数包括镜像名、文件系统格式和分区;当设备为网络服务器时,则设备的启动参数包括网络协议、服务器地址和镜像名;
S23、使用imxtract从内存中取出签名镜像文件中的系统镜像文件,并调用GMALG库中的SM3杂凑算法对其进行处理,生成消息摘要;
S24、使用imxtract从内存中取出签名镜像文件中的数字签名和SM2公共秘钥,并利用SM2数字签名算法对消息摘要进行验签,判断是否验签成功;
若是,则进入步骤S26;
若否,则进入步骤S25;
S25、提示校验错误信息,不允许启动,重启设备;S26、校验成功,启动系统,使设备进入内核。
机译: 使用KCDSA(基于韩国证书的数字签名算法)的签密方法
机译: 在不使用奇偶校验和镜像的情况下,在raid系统中建立高级别的冗余,容错和性能的方法
机译: 在不使用奇偶校验和镜像的情况下,在raid系统中建立高级别的冗余,容错和性能的方法