一种基于数字信封技术和SM2算法的两方安全协同签名验签方法与流程

文档序号:36728446发布日期:2024-01-16 12:37阅读:43来源:国知局
一种基于数字信封技术和SM2算法的两方安全协同签名验签方法与流程

本发明涉及计算机密码,具体为一种基于数字信封技术和sm2算法的两方安全协同签名验签方法。


背景技术:

1、随着移动互联网的不断发展,政务、金融等领域的信息交换过程会经受更多安全风险,使用数字签名的需求日益增多。现今的诸多数字签名技术往往通过使用非对称加密技术,单纯利用私钥签名、公钥验签的原理实现。

2、国家密码局于2010年12月17日颁布了非对称加密算法的sm2椭圆曲线公钥密码算法,相较于传统非对称加密算法如rsa算法,sm2在性能与安全上更胜一筹。然而即使应用sm2算法进行私钥签名公钥验签,若客户端用户私钥发生丢失、泄露,或在签名通信中被攻击者截获敏感信息,仍会轻易导致针对数据签名信息的恶意篡改,动摇客户端用户本身签名的完整性与不可否认性,威胁整个信息系统的安全防范机制。


技术实现思路

1、(一)解决的技术问题

2、针对现有技术的不足,本发明提供了基于数字信封技术和sm2算法的两方安全协同签名验签方法,具备安全可靠的签名验签机制,实现数据通信双方利用各自私钥生成部分签名,并通过计算获得一个完整签名,从而确保双方签名信息的完整性和不可否认性。同时,双方在密钥分发、协同签名和验签等关键步骤均使用了临时公钥与临时对称密钥加密通讯内容作为数字信封,利用信道加密手段进一步加固了本发明在各种应用场景下两方数据交换过程的安全强度等优点,解决了上述问题。

3、(二)技术方案

4、为实现上述目的,本发明提供如下技术方案:一种基于数字信封技术和sm2算法的两方安全协同签名验签方法,包括以下步骤:

5、s1、密钥分发阶段;

6、s2、协同签名阶段;

7、s3、验证签名阶段。

8、所述密钥分发阶段还包括以下步骤:

9、s1.1、客户端a根据sm2椭圆曲线生成私钥分量da和临时公钥pa,并把临时临时公钥pa发送给服务端b;

10、s1.2、服务端b根据sm2椭圆曲线生成私钥分量db和临时公钥pb,并把临时公钥pb发送给客户端a;

11、s1.3、客户端a使用生成临时对称密钥kr1加密中间计算数据,并使用服务端b的临时公钥pb加密临时对密钥kr1作为数字信封传输给服务端b;

12、s1.4、服务端b接收到数据后使用私钥分量db解密获得临时对密钥kr1,再通过临时对称密钥kr1解密数字信封内容获得中间数据,并计算得出协同签名使用的公钥pk;

13、所述协同签名阶段还包括以下步骤:

14、s2.1、客户端a根据约定杂凑算法计算待签名信息的摘要并生成随机数计算第一部分签名,使用临时对称密钥kr2加密后,再使用服务端b的临时公钥pb加密临时对称密钥kr2作为数字信封传输给服务端b;

15、s2.2、服务端b接收数据后使用私钥分量db解密获得临时对称密钥kr2,再通过临时对称密钥kr2解密数字信封内容获得摘要和第一部分签名;

16、s2.3、服务端b通过生成的临时随机数、摘要信息和第一部分签名计算出第二、三、四部分签名,并生成临时对称密钥kr3将其加密,再使用客户端a临时公钥pa加密临时对称密钥kr3作为数字信封传输给客户端a;

17、s2.4、客户端a接收数据后使用私钥分量da解密获得临时对称密钥kr3,再通过临时对称密钥kr3解密数字信封内容获得第二、三、四部分签名信息;

18、s2.5、客户端a根据各部分签名信息计算出完整签名信息并进行输出;

19、所述验证签名阶段还包括以下步骤:

20、s3.1、客户端a使用临时对称密钥kr4加密完整签名信息和原始待签名信息,再使用服务端b的临时公钥pb加密临时对称密钥kr4作为数字信封传输给服务端b;

21、s3.2、服务端b接收数据后使用私钥分量db解密获得临时对称密钥kr4,再通过临时对称密钥kr4解密数字信封内容获得完整签名信息和原始待签名信息;

22、s3.3、服务端b将原始待签名信息根据约定杂凑算法计算生成摘要后,根据完整签名信息和生成的摘要进行计算对比,完成签名验证。

23、优选的,所述密钥分发包括以下过程:

24、a1.1、客户端a选择随机数da作为第一部分私钥分量保存,da∈[1,n-1],并生成临时公钥pa=da[*]g,将pa发送给服务端b;

25、a1.2、服务端b选择随机数db作为第二部分私钥分量保存,db∈[1,n-1],并生成临时公钥pb=db[*]g,将pb发送给客户端a;

26、a1.3、客户端a计算da在椭圆曲线e上的逆元da-1mod n,记作da-1;

27、a1.4、服务端b计算db在椭圆曲线e上的逆元db-1mod n,记作db-1;

28、a1.5、客户端a计算p1=da-1[*]g,使用sm4等约定对称加密算法生成临时对称密钥kr1并加密p1为p’1,并将kr1使用服务端b临时公钥pb加密为k’r1,连同p’1传给服务端b;

29、a1.6、服务端b接收数据后使用私钥分量db解密得到kr1,再使用kr1解密数据得到p1,计算pk=db-1[*]p1[–]g,将计算结果pk作为公钥保存。

30、优选的,所述协同签名包括以下过程:

31、b1.1、客户端a将其与服务端b采用如随机数发生器产生的共同身份标识c与待签名信息m进行拼接运算,并使用sm3等约定密码杂凑算法进行哈希计算,取得哈希值e=hash(c||m),并将e转换为整数;

32、b1.2、客户端a生成随机数k1∈[1,n-1],计算第一部分签名s1=k1[*]g,使用sm4等约定对称加密算法生成临时对称密钥kr2并加密e、s1为e'、s'1,e'将kr2使用服务端b临时公钥pb加密为k'r2,连同e'、s'1发送至服务端b;

33、b1.3、服务端b接收数据后使用私钥分量db解密得到kr2,再使用kr2解密数据得到e、s1,同时生成随机数k2∈[1,n-1],计算临时点st=k2[*]g;

34、b1.4、服务端b生成随机数k3∈[1,n-1],计算椭圆曲线e上坐标点位(x,y)=k3[*]s1[+]st;

35、b1.5、服务端b计算第二部分签名s2=(e+x)mod n,另记作r,当s2=0时,返回第4步重新生成k3并按顺序依次计算;

36、b1.6、服务端b计算第三部分签名s3=(db*k3)mod n,第四部分签名s4=(db*(s2+k2))mod n,使用sm4等约定对称加密算法生成临时对称密钥kr3并加密s2、s3、s4为s'2、s'3、s'4,并将kr3使用客户端a临时公钥pa加密为kr3’,连同s'2、s'3、s'4,发送至客户端a;

37、b1.7、客户端a接收数据后使用私钥分量da解密得到kr3,再使用kr3解密数据得到s2、s3、s4,计算s=((da*k1)*s3+da*s4–s2)mod n,当s=0或s=n-s2时,返回第2步重新生成k1并按顺序依次计算;

38、b1.8、客户端a将坐标点位(r,s)作为完整签名输出。

39、优选的,所述验证签名包括以下过程:

40、c1.1、客户端a使用sm4等约定对称加密算法生成临时对称密钥kr4并加密完整签名信息(r,s)和原始待签名信息m,将kr4使用服务端b临时公钥pb加密为kr4’,连同原始待签名信息m和加密后的完整签名信息发送至服务端;

41、c1.2、服务端b接收数据后使用私钥分量db解密得到kr4,再使用kr4解密数据得到完整签名信息(r,s)和原始待签名信息m,分别计算r、s的范围是否在[1,n-1]范围内,如不在则验证失败;

42、c1.3、服务端b计算t=(r+s)mod n,若t=0则验证失败;

43、c1.4、服务端b计算e上的点v=s[*]g+t[*]pk,获取v的坐标点位(xv,yv),如v是无穷远点则验证失败;

44、c1.5、服务端b使用与客户端a共同身份标识c与原始待签名信息m进行拼接运算,使用sm3等约定密码杂凑算法进行哈希计算,取得哈希值ev=hash(c||m),并将ev转换为整数;

45、c1.6、服务端b计算r=(ev+xv)mod n;

46、c1.7、服务端b比较r与r,如果相等则验证通过,不相等则验证失败。

47、优选的,所述sm2椭圆曲线函数公式如下:

48、y2=x3+ax+b

49、4a3+27b2≠0(mod q)

50、公式中,通过函数公式确定一条椭圆曲线e,选定椭圆曲线上阶为素数的基点g作为生成元,n是椭圆曲线的阶,q是定义有限域fq中元素大小的数目,参数a,b是有限域fq上的元素,其中“mod”是求模运算,“||”是拼接运算,“[+]”、“[-]”、“[*]”是椭圆曲线的点加、点减、点乘运算。

51、与现有技术相比,本发明提供了基于数字信封技术和sm2算法的两方安全协同签名验签方法,具备以下有益效果:

52、1、本发明通过计算获得一个完整签名,从而确保双方签名信息的完整性和不可否认性。同时,双方在密钥分发、协同签名和验签等关键步骤均使用了临时公钥与临时对称密钥加密通讯内容作为数字信封,利用信道加密手段进一步加固了本发明在各种应用场景下两方数据交换过程的安全强度。

53、2、本发明通过针对计算机入侵等黑客技术较强的抗攻击能力,同时,在协同签名使用过程中,参与方之间的通信量较小,计算复杂度相对较低,能够快速完成两方安全签名和验签操作。

54、3、本发明在各种安全通信场景如签署电子合同、进行金融交易时,基于数字信封技术和sm2算法的协同签名及验签方法可有效保障使用者签名的机密性、合法性、完整性和有效性,具备针对计算机入侵等黑客技术较强的抗攻击能力,同时,在协同签名使用过程中,参与方之间的通信量较小,计算复杂度相对较低,能够快速完成两方安全签名和验签操作。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1