基于SM2算法的签名和验签方法、装置、设备及介质与流程
- 国知局
- 2024-08-02 12:45:49
本发明涉及密码学,特别涉及基于sm2算法的签名和验签方法、装置、设备及介质。
背景技术:
1、智能卡是一种内嵌有集成电路微芯片的卡的统称,通常只有一张信用卡大小,可自行处理数量较多的数据。但在其实际应用领域,一个核心的问题就是密码算法的实效效率问题。虽然分组算法具有很高的实现效率,但其算法性质决定了分组算法的加解密使用相同的密钥,导致在实用过程中会遇到密钥过多以及密钥分发与存储的问题,这就不得不使用公钥算法,如sm2算法,因为公钥算法的加解密密钥是不同的,用户无法通过公钥来推测出私钥。故在进行密钥分发及其数字签名等均有不可替代的应用。但相比分组算法,公钥算法的效率是一个瓶颈,故在大批量加解密算法时一般会用分组算法、而非公钥算法,如何提升公钥算法效率是一个很重要的问题。
2、另一个核心的问题就是信息的安全问题,传统的密码分析学主要关注密码算法的设计安全性,认为密码算法的安全性取决于其数学原理本身,通过相关攻击、差分攻击、线性攻击、代数攻击等攻击方法来验证密码算法的安全性。显然,各类公开的密码算法是经过严格的数据分析论证过的,即使在未来很多年内都不具有现实破译可能的算法。但侧信道攻击的思路就是针对密码实现环节进行的攻击方法,密码算法在设备的实际安全性并不能于密码算法设计方面的理论安全性,其实现过程会产生执行时间,功率消耗,电磁辐射,故障输出等信息泄露,通过对这些泄露信息的有效分析,就可以分析出密钥。众所周知,在现实中密码算法总是需要在硬件平台上实现与运行,这样攻击者就可以对感兴趣的信息泄露进行有效收集与分析,攻击出密钥从而影响密码算法的实现安全性。
3、综上,如何提高公钥算法的效率并实现侧信道攻击防护,保证公钥算法的安全性是目前有待解决的问题。
技术实现思路
1、有鉴于此,本发明的目的在于提供一种基于sm2算法的签名和验签方法、装置、设备及介质,能够提高公钥算法的效率并实现侧信道攻击防护,保证公钥算法的安全性。其具体方案如下:
2、第一方面,本技术公开了一种基于sm2算法的签名和验签方法,应用于签名端,所述方法包括:
3、确定待签名数据,并利用摘要算法生成所述待签名数据的第一信息摘要;
4、基于随机数对密钥对中的私钥进行盲化处理,以利用盲化处理后的所述私钥对所述第一信息摘要进行签名得到签名结果;
5、将所述签名结果和所述待签名数据发送至验证端,以便所述验证端利用所述摘要算法生成所述待签名数据的第二信息摘要,利用所述密钥对中的公钥并基于多标量点乘方法对所述签名结果进行验签得到验签结果,以基于所述第二信息摘要和所述验签结果得到本次验证结果。
6、可选的,所述基于随机数对密钥对中的私钥进行盲化处理,以利用盲化处理后的所述私钥对所述第一信息摘要进行签名得到签名结果,包括:
7、产生第一随机数和第二随机数,并利用所述第一随机数和椭圆曲线的基点计算所述椭圆曲线上的第一目标点;
8、基于所述第一目标点的横坐标值、所述第一信息摘要和所述基点的阶计算第一签名值;
9、基于所述第一随机数和所述第二随机数对密钥对中的私钥进行盲化处理,以利用利用盲化处理后的所述私钥、所述第一签名值和所述基点的阶计算第二签名值;其中,所述第一签名值和所述第二签名值组成签名结果。
10、可选的,所述第一签名值和所述第二签名值分别基于第一签名值计算公式和第二签名值计算公式计算得到;
11、其中,所述第一签名值计算公式为:
12、r=(e+x1)mod n;
13、其中,r为所述第一签名值,e为所述第一信息摘要,n为所述基点的阶,mod表示取余运算符,x1为所述第一目标点(x1,y1)的横坐标值;所述第一目标点(x1,y1)=kg,y1为所述第一目标点的纵坐标值,k为所述第一随机数、g为所述基点;
14、所述第二签名值计算公式为:
15、;
16、其中,s为所述第二签名值,k为所述第一随机数,k1为所述第二随机数,r为所述第一签名值,n为所述基点的阶,mod表示取余运算符,da为私钥。
17、可选的,所述利用摘要算法生成所述待签名数据的第一信息摘要,包括:
18、获取预设的杂凑值;所述杂凑值基于所述签名端的可辨别标识、椭圆曲线参数和所述公钥确定;
19、对所述杂凑值和所述待签名数据进行拼接处理得到第一拼接数据,并利用摘要算法生成所述第一拼接数据的第一信息摘要;
20、相应的,所述验证端利用所述摘要算法生成所述待签名数据的第二信息摘要,包括:
21、所述验证端对所述杂凑值和所述待签名数据进行拼接处理得到第二拼接数据,并利用所述摘要算法生成所述第二拼接数据的第二信息摘要。
22、第二方面,本技术公开了一种基于sm2算法的签名和验签方法,应用于验证端,所述方法包括:
23、获取签名端发送的签名结果和待签名数据;其中,所述签名结果为所述签名端利用摘要算法生成所述待签名数据的第一信息摘要后,利用盲化处理后的私钥对所述第一信息摘要进行签名得到的结果,所述签名端基于随机数对密钥对中的私钥进行盲化处理;
24、利用所述摘要算法生成所述待签名数据的第二信息摘要;
25、利用所述密钥对中的公钥并基于多标量点乘方法对所述签名结果进行验签得到验签结果,以基于所述第二信息摘要和所述验签结果得到本次验证结果。
26、可选的,所述利用所述密钥对中的公钥并基于多标量点乘方法对所述签名结果进行验签得到验签结果,以基于所述第二信息摘要和所述验签结果得到本次验证结果,包括:
27、对所述签名结果中的第一签名值和第二签名值进行求和运算得到签名和值,并将所述签名和值与椭圆曲线基点的阶进行取余运算得到第一运算结果;
28、基于多标量点乘方法计算第一点乘结果与第二点乘结果之间的目标和值,以得到作为验签结果的第二目标点;所述第一点乘结果为所述第二签名值和所述基点之间的点乘结果,所述第二点乘结果为所述第一运算结果和所述密钥对中的公钥之间的点乘结果;
29、将所述第二信息摘要与所述第二目标点中横坐标值的和值与所述基点的阶进行取余运算得到第二运算结果;
30、将所述第二运算结果与所述第一签名值进行比对,若两者相等,则本次验证成功,否则本次验证失败。
31、可选的,所述基于多标量点乘方法计算第一点乘结果与第二点乘结果之间的目标和值,包括:
32、对所述基点和所述密钥对中的公钥进行点加操作得到第一和值;
33、将所述第二签名值和所述第一运算结果分别转化为对应的二进制数,并确定所述二进制数的最大比特数和设置目标和值的初始值;
34、对所述最大比特数依次执行递减操作,并对所述目标和值进行倍点操作得到更新后的所述目标和值,然后按照所述二进制数的不同取值逐比特对所述目标和值进行倍点操作或利用所述基点的阶、所述公钥和所述第一和值中的任一项数值对所述目标和值进行点加操作,直到所述最大比特数递减为零后,得到所述目标和值的最终操作结果。
35、第三方面,本技术公开了一种基于sm2算法的签名和验签装置,应用于签名端,所述装置包括:
36、摘要计算模块,用于确定待签名数据,并利用摘要算法生成所述待签名数据的第一信息摘要;
37、签名模块,用于基于随机数对密钥对中的私钥进行盲化处理,以利用盲化处理后的所述私钥对所述第一信息摘要进行签名得到签名结果;
38、验签模块,用于将所述签名结果和所述待签名数据发送至验证端,以便所述验证端利用所述摘要算法生成所述待签名数据的第二信息摘要,利用所述密钥对中的公钥并基于多标量点乘方法对所述签名结果进行验签得到验签结果,以基于所述第二信息摘要和所述验签结果得到本次验证结果。
39、第四方面,本技术公开了一种电子设备,包括:
40、存储器,用于保存计算机程序;
41、处理器,用于执行所述计算机程序,以实现前述公开的基于sm2算法的签名和验签方法的步骤。
42、第五方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的基于sm2算法的签名和验签方法的步骤。
43、可见,本技术通过签名端确定待签名数据,并利用摘要算法生成所述待签名数据的第一信息摘要;基于随机数对密钥对中的私钥进行盲化处理,以利用盲化处理后的所述私钥对所述第一信息摘要进行签名得到签名结果;将所述签名结果和所述待签名数据发送至验证端,以便所述验证端利用所述摘要算法生成所述待签名数据的第二信息摘要,利用所述密钥对中的公钥并基于多标量点乘方法对所述签名结果进行验签得到验签结果,以基于所述第二信息摘要和所述验签结果得到本次验证结果
44、有益效果:本技术首先利用摘要算法生成待签名数据的第一信息摘要,并且在对第一信息摘要进行签名时,本技术需要基于随机数对密钥对中的私钥进行盲化处理,从而利用盲化处理后的私钥对第一信息摘要进行签名得到签名结果。通过私钥盲化,能够抵抗能耗攻击等侧信道攻击,以达到对私钥的侧信道攻击防护。进一步的,本技术将签名结果和待签名数据发送至验证端,以便验证端利用摘要算法生成待签名数据的第二信息摘要,再利用密钥对中的公钥并基于多标量点乘方法对签名结果进行验签得到验签结果,需要指出的是,在传统的sm2验签算法中,涉及到两个点乘操作和一个点加操作,非常耗时,严重影响了验签性能,而本技术在这个过程中通过采取多标量点乘方法,以提升sm2验签算法的性能,从而提高整个公钥算法的效率。
本文地址:https://www.jishuxx.com/zhuanli/20240802/237698.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表