System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及密码学,特别涉及基于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、对所述最大比特数依次执行递减操作,并对所述目标和值进行倍点操作得到更新后的所述目标和值,然后按照所述二进制数的不同取值逐比特对所述目标和值进行倍点操作或利用所述基点的阶、所述公钥和本文档来自技高网...
【技术保护点】
1.一种基于SM2算法的签名和验签方法,其特征在于,应用于签名端,所述方法包括:
2.根据权利要求1所述的基于SM2算法的签名和验签方法,其特征在于,所述基于随机数对密钥对中的私钥进行盲化处理,以利用盲化处理后的所述私钥对所述第一信息摘要进行签名得到签名结果,包括:
3.根据权利要求2所述的基于SM2算法的签名和验签方法,其特征在于,所述第一签名值和所述第二签名值分别基于第一签名值计算公式和第二签名值计算公式计算得到;
4.根据权利要求1所述的基于SM2算法的签名和验签方法,其特征在于,所述利用摘要算法生成所述待签名数据的第一信息摘要,包括:
5.一种基于SM2算法的签名和验签方法,其特征在于,应用于验证端,所述方法包括:
6.根据权利要求5所述的基于SM2算法的签名和验签方法,其特征在于,所述利用所述密钥对中的公钥并基于多标量点乘方法对所述签名结果进行验签得到验签结果,以基于所述第二信息摘要和所述验签结果得到本次验证结果,包括:
7.根据权利要求6所述的基于SM2算法的签名和验签方法,其特征在于,所述基于多
8.一种基于SM2算法的签名和验签装置,其特征在于,应用于签名端,所述装置包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的基于SM2算法的签名和验签方法的步骤。
...【技术特征摘要】
1.一种基于sm2算法的签名和验签方法,其特征在于,应用于签名端,所述方法包括:
2.根据权利要求1所述的基于sm2算法的签名和验签方法,其特征在于,所述基于随机数对密钥对中的私钥进行盲化处理,以利用盲化处理后的所述私钥对所述第一信息摘要进行签名得到签名结果,包括:
3.根据权利要求2所述的基于sm2算法的签名和验签方法,其特征在于,所述第一签名值和所述第二签名值分别基于第一签名值计算公式和第二签名值计算公式计算得到;
4.根据权利要求1所述的基于sm2算法的签名和验签方法,其特征在于,所述利用摘要算法生成所述待签名数据的第一信息摘要,包括:
5.一种基于sm2算法的签名和验签方法,其特征在于,应用于验证端,所述方法包括:
...
【专利技术属性】
技术研发人员:肖佐楠,肖本长,汪建强,钟名富,郑茳,匡启和,
申请(专利权)人:苏州国芯科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。