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

一种数字签名方法、系统及设备与流程

2022-03-30 10:20:00 来源:中国专利 TAG:


1.本技术涉及信息安全技术领域,特别涉及一种数字签名方法、系统及设备。


背景技术:

2.sm2算法是一种安全的算法,能确保算法本身不被破译,不可逆向操作。但sm2算法为开源算法,在使用过程中,若密钥信息被获取,也就意味着算法的整个流程可复制。因此,在使用过程中对密钥的保护至关重要。目前,主要的密钥攻击手段为侧信道攻击,如通过获取算法运算过程的能量曲线、电磁曲线等进行模板分析、dpa(能量)等手段得到敏感信息。sm2签名算法的运算过程包括消息和密钥,其中密钥为私有密钥,需为签名机构私有。私钥参与点乘和求逆过程,而这两个过程的能量曲线与其他点加点运算存在很大差异,攻击者通过多次提取点乘或求逆过程就可分析出真实的私钥值。
3.目前,针对sm2签名过程的密钥保护,常用的方法是通过增加干扰项提高被攻击的难度,如增加无用的求逆过程或点乘,将真实的过程掩藏,其中,达到混淆视听从而增加攻击难度的目的,但这样影响了sm2算法的性能。


技术实现要素:

4.有鉴于此,本技术的目的在于提供一种数字签名方法、系统及设备,能够在不影响sm2算法性能的前提下,提升数字签名安全性。其具体方案如下:
5.第一方面,本技术公开了一种数字签名方法,所述签名方法应用于sm2算法加密装置中,所述方法包括:
6.获取签名密钥,消息摘要,第一随机数,椭圆曲线点;
7.基于第一预设规则,对所述签名密钥进行运算得到第一中间数,所述第一预设规则包括逆运算;
8.基于所述消息摘要和所述椭圆曲线点运算得到第一签名部分;
9.基于第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分;
10.基于所述第一签名部分和所述第二签名部分确定数字签名。
11.可选的,
12.所述第一预设规则为公式s1=(1 da)-1
modn,其中s1为第一中间数,da为签名密钥,n为模数;
13.所述第二预设规则为公式s=(s1(k r)-r)modn,其中k为第一随机数,r为第一签名部分,s为第二签名部分。
14.可选的,所述方法还包括:
15.获取第二随机数;
16.所述基于第一预设规则,对所述签名密钥进行运算得到第一中间数,包括:基于所述第二随机数和所述第一预设规则,对所述签名密钥进行运算得到第一中间数;
17.所述基于第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分,包括:基于所述第二随机数和所述第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分。
18.可选的,
19.基于所述第二随机数和所述第一预设规则,对所述签名密钥进行运算得到第一中间数,包括:
20.基于公式s1=(r2 r2da)-1
modn运算得到第一中间数,其中r2为第二随机数;
21.基于所述第二随机数和所述第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分,包括:
22.基于公式s=(s1(k r)r
2-r)modn运算得到第二签名部分。
23.可选的,基于所述第二随机数和所述第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分,包括:
24.基于第三预设规则对所述第一签名部分和所述第一随机数进行运算得到第二中间数,所述第三预设规则为模加运算;
25.基于第四预设规则对所述第二随机数、所述第一中间数和所述第二中间数进行运算得到第三中间数,所述第四预设规则为模乘运算;
26.基于第五预设规则对所述第三中间数和所述第一随机数进行运算得到第二签名部分,所述第五预设规则为模减运算。
27.可选的,
28.所述第三预设规则为s2=(k r)modn,s2为第二中间数;
29.所述第四预设规则为s3=(s1s2r2)modn,s1为第一中间数,s3为第三中间数;
30.所述第五预设规则为s=(s
3-r)modn,s为第二签名部分。
31.可选的,所述基于第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分,包括:
32.基于第三预设规则对所述第一签名部分和所述第一随机数进行运算得到第二中间数,所述第三预设规则为模加运算;
33.基于第四预设规则对所述第一中间数和所述第二中间数进行运算得到第三中间数,所述第四预设规则为模乘运算;
34.基于第五预设规则对所述第三中间数和所述第一随机数进行运算得到第二签名部分,所述第五预设规则为模减运算。
35.可选的,
36.所述第三预设规则为s2=(k r)modn,s2为第二中间数;
37.所述第四预设规则为s3=(s1s2)modn,s1为第一中间数,s3为第三中间数;
38.所述第五预设规则为s=(s
3-r)modn,s为第二签名部分。
39.第二方面,本技术公开了一种数字签名系统,所述签名系统应用于sm2算法加密装置中,所述系统包括:
40.获取模块,用于获取签名密钥,消息摘要,第一随机数,椭圆曲线点;
41.第一中间数运算模块,用于基于第一预设规则,对所述签名密钥进行运算得到第一中间数,所述第一预设规则包括逆运算;
42.第一签名部分运算模块,用于第二基于所述消息摘要和所述椭圆曲线点运算得到第一签名部分;
43.第二签名部分运算模块,用于基于第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分;
44.数字签名确定模块,用于基于所述第一签名部分和所述第二签名部分确定数字签名。
45.第三方面,本技术公开了一种电子设备,包括:
46.存储器,用于保存计算机程序;
47.处理器,用于执行所述计算机程序,以实现前述的数字签名方法。
48.可见,本技术先获取签名密钥,消息摘要,第一随机数,椭圆曲线点,之后基于第一预设规则,对所述签名密钥进行运算得到第一中间数,所述第一预设规则包括逆运算,以及基于所述消息摘要和所述椭圆曲线点运算得到第一签名部分,然后基于第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分,最后基于所述第一签名部分和所述第二签名部分确定数字签名。这样,签名密钥仅参与求逆运算,相对于标准sm2算法中的参与多种运算,降低了被攻击的风险,能够在不影响sm2算法性能的前提下,提升数字签名安全性。
附图说明
49.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
50.图1为本技术提供的一种数字签名方法流程图;
51.图2为本技术提供的一种标准sm2算法流程图;
52.图3为本技术提供的一种数字签名装置结构示意图;
53.图4为本技术提供的一种电子设备结构图。
具体实施方式
54.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
55.目前,针对sm2签名过程的密钥保护,常用的方法是通过增加干扰项提高被攻击的难度,如增加无用的求逆过程或点乘,将真实的过程掩藏,其中,达到混淆视听从而增加攻击难度的目的,但这样影响了sm2算法的性能。为此,本技术提供了一种数字签名方案,能够在不影响sm2算法性能的前提下,提升数字签名安全性。
56.参见图1所示,本技术实施例公开了一种数字签名方法,所述签名方法应用于sm2算法加密装置中,所述方法包括:
57.步骤s11:获取签名密钥,消息摘要,第一随机数,椭圆曲线点。
58.其中,本技术实施例在计算待签名消息的数字签名时,可以先对待签名消息进行压缩运算,得到消息摘要,在一些实施例中,可以利用密码杂凑函数对包含杂凑值和待签名消息的消息数据进行压缩,得到消息摘要。
59.在具体的实施方式中,本技术实施例可以获取待签名消息,并基于公式计算得到消息摘要,其中,e为消息摘要,m为待签名的消息,za为关于用户a的可辨别标识、部分椭圆曲线系统参数和用户a公钥的杂凑值,hv为消息摘要长度为v比特的密码杂凑函数。并且,可以产生第一随机数k∈[1,n-1]。
[0060]
步骤s12:基于第一预设规则,对所述签名密钥进行运算得到第一中间数,所述第一预设规则包括逆运算。
[0061]
其中,所述第一预设规则为公式s1=(1 da)-1
modn,其中s1为第一中间数,da为签名密钥,也即用户a的私钥,n为模数。
[0062]
步骤s13:基于所述消息摘要和所述椭圆曲线点运算得到第一签名部分。
[0063]
在具体的实施方式中,可以基于(x1,y1)=[k]g计算出椭圆曲线点,其中,g为椭圆曲线的一个基点,其阶为素数,(x1,y1)为椭圆曲线点。
[0064]
本技术实施例可以基于所述消息摘要和所述椭圆曲线点的横坐标的坐标值运算得到第一签名部分。
[0065]
进一步的,可以基于r=(e x1)modn得到第一签名部分,其中,x1为所述椭圆曲线点的x轴坐标值,r为第一签名部分。
[0066]
步骤s14:基于第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分。
[0067]
其中,所述第二预设规则为公式s=(s1(k r)-r)modn,其中k为第一随机数,r为第一签名部分,s为第二签名部分。
[0068]
步骤s15:基于所述第一签名部分和所述第二签名部分确定数字签名。
[0069]
在具体的实施方式中,可以得到数字签名[r,s]。
[0070]
参见图2所示,图2为本技术实施例提供的一种标准sm2算法流程图。其中,签名密钥参与运算的公式为:
[0071]
s=((1 da)-1
(k-rda))modn;
[0072]
从上式可以看出,标准sm2算法流程中da会直接参与到(1 da)-1
的求逆运算以及rda的点乘运算中。进一步的,可以对标准sm2算法中签名密钥参与运算的公式进行等价转换:
[0073]
s=((1 da)-1
(k-rda))modn
[0074]
=((1 da)-1
(k r-r-rda))modn
[0075]
=((1 da)-1
((k r)-r(1 rda)))modn
[0076]
=((1 da)-1
(k r)-((1 da)-1
r(1 rda)))modn
[0077]
=((1 da)-1
(k r)-r)modn
[0078]
这样进行转换,转换后da仅参与求逆运算,基于此,本技术实施例先基于第一预设规则,对所述签名密钥进行运算得到第一中间数,所述第一预设规则包括逆运算,然后基于第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分。因为第一预设规则中对da进行了求逆运算得到了第一中间数,而第二预设规则则只需要对第一中间数、第一签名部分及第一随机数进行计算,不包括da的运算,实现了对sm2签
名过程密钥运算过程的优化,优化后的sm2运算过程中密钥只参与求逆运算,在不影响sm2运算性能的前提下,有效保护sm2私钥不易被外部侧信道攻击手段攻击,达到提高sm2签密私钥安全性的目的。
[0079]
在一些实施例中,所述基于第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分,具体包括:
[0080]
步骤001:基于第三预设规则对所述第一签名部分和所述第一随机数进行运算得到第二中间数,所述第三预设规则为模加运算;
[0081]
步骤002:基于第四预设规则对所述第一中间数和所述第二中间数进行运算得到第三中间数,所述第四预设规则为模乘运算;
[0082]
步骤003:基于第五预设规则对所述第三中间数和所述第一随机数进行运算得到第二签名部分,所述第五预设规则为模减运算。
[0083]
其中,所述第三预设规则为s2=(k r)modn,s2为第二中间数;所述第四预设规则为s3=(s1s2)modn,s1为第一中间数,s3为第三中间数;所述第五预设规则为s=(s
3-r)modn,s为第二签名部分。
[0084]
也即,本技术实施例可以基于公式s1=(1 da)-1
modn、r=(e x1)modn、s2=(k r)modn、s3=(s1s2)modn、s=(s
3-r)modn计算,得到数字签名的第一签名部分和第二签名部分。
[0085]
需要指出的是,从能量曲线上各个操作类型的曲线有较大差异,而同一类型运算的曲线有很大相似性。因此,本技术为了保护标准算法中的第一签名部分,也即确定第二签名部分的中间变量,防止通过模加操作截取第一签名部分的信息。将第一签名部分的计算过程放置在s1=(1 da)-1
modn和s2=(k r)modn之间,这样,两次模加操作能做到很好的掩护效应,让攻击难度提升。
[0086]
进一步的,本技术实施例可以获取第二随机数;相应的,所述基于第一预设规则,对所述签名密钥进行运算得到第一中间数,包括:基于所述第二随机数和所述第一预设规则,对所述签名密钥进行运算得到第一中间数;所述基于第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分,包括:基于所述第二随机数和所述第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分。
[0087]
在一种具体的实施方式中,基于所述第二随机数和所述第一预设规则,对所述签名密钥进行运算得到第一中间数,包括:基于公式s1=(r2 r2da)-1
modn运算得到第一中间数,其中r2为第二随机数;基于所述第二随机数和所述第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分,包括:基于公式s=(s1(k r)r
2-r)modn运算得到第二签名部分。
[0088]
需要指出的是,对s=((1 da)-1
(k r)-r)modn中的求逆运算可以进一步进行随机化掩码操作,如下:
[0089]
s=((1 da)-1
(k r)-r)modn
[0090]
=((r2)-1
(1 da)-1
(k r)r
2-r)modn
[0091]
=((r2 r2da)-1
(k r)r
2-r)modn
[0092]
基于此,本技术实施例先基于公式s1=(r2 r2da)-1
modn运算得到第一中间数,其中
r2为第二随机数;然后基于公式s=(s1(k r)r
2-r)modn运算得到第二签名部分。这样,通过随机化掩码后,da只直接参与了r2da的运算,而r2为随机数,因此点乘运算的运算结果因随机数r2每次不同而出现差异,从电磁攻击或模板攻击等侧信道攻击的方法来看,攻击的难度极大的提高,从而密钥da的安全性大大的提高了。
[0093]
进一步的,在一些实施例中,基于所述第二随机数和所述第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分,具体包括:
[0094]
步骤011:基于第三预设规则对所述第一签名部分和所述第一随机数进行运算得到第二中间数,所述第三预设规则为模加运算;
[0095]
步骤012:基于第四预设规则对所述第二随机数、所述第一中间数和所述第二中间数进行运算得到第三中间数,所述第四预设规则为模乘运算;
[0096]
步骤013:基于第五预设规则对所述第三中间数和所述第一随机数进行运算得到第二签名部分,所述第五预设规则为模减运算。
[0097]
其中,所述第三预设规则为s2=(k r)modn,s2为第二中间数;所述第四预设规则为s3=(s1s2r2)modn,s1为第一中间数,s3为第三中间数;所述第五预设规则为s=(s
3-r)modn,s为第二签名部分。
[0098]
也即,本技术实施例可以基于公式s1=(r2 r2da)-1
modn、r=(e x1)modn、s2=(k r)modn、s3=(s1s2r2)modn、s=(s
3-r)modn计算,得到数字签名的第一签名部分和第二签名部分。
[0099]
可见,本技术实施例为了保护第一签名部分,也即,确定第二签名部分的中间变量,防止通过模加操作截取第一签名部分的信息。确定第一签名部分的公式隐藏到s2的运算前,这样两次模加操作能做到很好的掩护效应,让攻击难度提升。
[0100]
以soc芯片为例,基于公式s1=(r2 r2da)-1
modn、r=(e x1)modn、s2=(k r)modn、s3=(s1s2r2)modn、s=(s
3-r)modn编译sm2签名算法程序,其中,对于第二随机数r2,可调用soc芯片自带的产生随机数功能产生,也可调用算法库(如c库)中自带的软件随机数接口产生。并且,编辑测试用例测试sm2签名结果是否正常。本技术提供的方案在不影响sm2算法性能的前提下,提升了安全性。
[0101]
进一步的,在一些实施例中,所述第四预设规则可以包括s
’3=(s2r2)modn、s3=(s1s
’3)modn,也即,可以基于公式s1=(r2 r2da)-1
modn、r=(e x1)modn、s2=(k r)modn、s
’3=(s2r2)modn、s3=(s1s
’3)modn、s=(s
3-r)modn计算,得到数字签名的第一签名部分和第二签名部分。
[0102]
参见图3所示,本技术实施例公开了一种数字签名系统,所述签名系统应用于sm2算法加密装置中,所述系统包括:
[0103]
获取模块11,用于获取签名密钥,消息摘要,第一随机数,椭圆曲线点;
[0104]
第一中间数运算模块12,用于基于第一预设规则,对所述签名密钥进行运算得到第一中间数,所述第一预设规则包括逆运算;
[0105]
第一签名部分运算模块13,用于第二基于所述消息摘要和所述椭圆曲线点运算得到第一签名部分;
[0106]
第二签名部分运算模块14,用于基于第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分;
[0107]
数字签名确定模块15,用于基于所述第一签名部分和所述第二签名部分确定数字签名。
[0108]
可见,本是申请实施例中签名密钥仅参与求逆运算,相对于标准sm2算法中的参与多种运算,降低了被攻击的风险,能够在不影响sm2算法性能的前提下,提升数字签名安全性。
[0109]
其中,所述第一预设规则为公式s1=(1 da)-1
modn,其中s1为第一中间数,da为签名密钥,n为模数;所述第二预设规则为公式s=(s1(k r)-r)modn,其中k为第一随机数,r为第一签名部分,s为第二签名部分。
[0110]
进一步的,所述系统还包括:第二随机数获取模块,用于获取第二随机数。
[0111]
相应的,第一中间数运算模块12,具体用于基于所述第二随机数和所述第一预设规则,对所述签名密钥进行运算得到第一中间数;第二签名部分运算模块14,具体用于基于所述第二随机数和所述第二预设规则,对所述第一中间数、第一签名部分及第一随机数进行运算得到第二签名部分。
[0112]
并且,第一中间数运算模块12,具体用于基于公式s1=(r2 r2da)-1
modn运算得到第一中间数,其中r2为第二随机数;第二签名部分运算模块14,具体用于基于公式s=(s1(k r)r
2-r)modn运算得到第二签名部分。
[0113]
在一种实施方式中,第二签名部分运算模块14,具体包括:
[0114]
第二中间数运算子模块,用于基于第三预设规则对所述第一签名部分和所述第一随机数进行运算得到第二中间数,所述第三预设规则为模加运算;
[0115]
第三中间数运算子模块,用于基于第四预设规则对所述第二随机数、所述第一中间数和所述第二中间数进行运算得到第三中间数,所述第四预设规则为模乘运算;
[0116]
第二签名部分运算子模块,用于基于第五预设规则对所述第三中间数和所述第一随机数进行运算得到第二签名部分,所述第五预设规则为模减运算。
[0117]
其中,所述第三预设规则为s2=(k r)modn,s2为第二中间数;所述第四预设规则为s3=(s1s2r2)modn,s1为第一中间数,s3为第三中间数;所述第五预设规则为s=(s
3-r)modn,s为第二签名部分。
[0118]
在另一种实施方式中,第二签名部分运算模块14,具体包括:
[0119]
第二中间数运算子模块,用于基于第三预设规则对所述第一签名部分和所述第一随机数进行运算得到第二中间数,所述第三预设规则为模加运算;
[0120]
第三中间数运算子模块,用于基于第四预设规则对所述第一中间数和所述第二中间数进行运算得到第三中间数,所述第四预设规则为模乘运算;
[0121]
第二签名部分运算子模块,用于基于第五预设规则对所述第三中间数和所述第一随机数进行运算得到第二签名部分,所述第五预设规则为模减运算。
[0122]
其中,所述第三预设规则为s2=(k r)modn,s2为第二中间数;所述第四预设规则为s3=(s1s2)modn,s1为第一中间数,s3为第三中间数;所述第五预设规则为s=(s
3-r)modn,s为第二签名部分。
[0123]
参见图4所示,本技术实施例公开了一种电子设备20,包括处理器21和存储器22;其中,所述存储器22,用于保存计算机程序;所述处理器21,用于执行所述计算机程序,前述实施例公开的数字签名方法。
[0124]
关于上述数字签名方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0125]
并且,所述存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,存储方式可以是短暂存储或者永久存储。
[0126]
另外,所述电子设备20还包括电源23、通信接口24、输入输出接口25和通信总线26;其中,所述电源23用于为所述电子设备20上的各硬件设备提供工作电压;所述通信接口24能够为所述电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;所述输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
[0127]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0128]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0129]
以上对本技术所提供的一种数字签名方法、系统及设备进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

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

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

相关文献