System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于SM2密码算法的协同签名方法及系统技术方案_技高网

一种基于SM2密码算法的协同签名方法及系统技术方案

技术编号:42335860 阅读:7 留言:0更新日期:2024-08-14 16:11
本申请提供了一种基于SM2密码算法的协同签名方法及系统,方法包括:发起端依据第一私钥d1、第二公钥P2和基点G确定用户公钥PA;发起端依据阶数n和基点G确定椭圆曲线点Q1;发起端依据待签名的消息M确定第一消息摘要e,并依据第一消息摘要e、椭圆曲线点Q1、基点G和阶数n确定签名值分量r';发起端依据第一私钥d1、签名值分量r'、阶数n确定签名值分量s',并发送第一消息摘要e、椭圆曲线点Q1、签名值分量r'和签名值分量s'至协作端;发起端依据签名值分量r、签名值分量s2和阶数n确定签名值分量s,并通过用户公钥PA对签名值分量r和签名值分量s进行签名验证。解决了现有的SM2协同签名协议需要引入额外身份鉴别机制的技术问题。

【技术实现步骤摘要】

本申请涉及数字签名领域,特别是涉及一种基于sm2密码算法的协同签名方法及系统。


技术介绍

1、sm2协同签名方法是由两个签名的参与方(发起方和协作方)分别存储私钥,双方协同完成消息签名的操作,以相对安全的方式防止攻击以保护数据安全。

2、此处引述申请公布号为cn114186251a的专利文件,其公开了一种保护用户隐私的sm2密码算法协同签名、解密方法,在该协同签名方法中,服务方不知道用户完整公钥,不需要关联发起方的部分私钥,以保护用户的隐私,然而,该协同签名方法增加了协同签名系统的复杂性。


技术实现思路

1、鉴于上述问题,提出了本申请以便提供克服上述问题或者至少部分解决上述问题的一种基于sm2密码算法的协同签名方法及系统。

2、本申请公开一种基于sm2密码算法的协同签名方法,所述方法涉及发起端和协作端;所述发起端和所述协作端均预设有椭圆曲线;其中,所述椭圆曲线包括椭圆曲线的基点g以及所述基点g的阶数n;所述发起端存有第一私钥d1和第一公钥p1;所述协作端存有第二私钥d2和第二公钥p2;当协同生成用户的密钥对时,所述发起端与所述协作端通过所述第一公钥p1和所述第二公钥p2进行互验;

3、所述协同签名方法包括:

4、所述发起端依据所述第一私钥d1、所述第二公钥p2和所述基点g确定用户公钥pa;

5、所述发起端依据所述阶数n和所述基点g确定椭圆曲线点q1;

6、所述发起端依据待签名的消息m确定第一消息摘要e,并依据所述第一消息摘要e、所述椭圆曲线点q1、所述基点g和所述阶数n确定签名值分量r';

7、所述发起端依据所述第一私钥d1、所述签名值分量r'、所述阶数n确定签名值分量s',并发送所述第一消息摘要e、所述椭圆曲线点q1、所述签名值分量r'和所述签名值分量s'至所述协作端;所述协作端用于通过所述第一公钥p1对所述签名值分量r'和所述签名值分量s'进行签名验证,以及依据所述第一消息摘要e、所述基点g、所述第二私钥d2、所述椭圆曲线点q1和所述阶数n确定签名值分量r,以及依据所述第二私钥d2、所述签名值分量r和所述阶数n确定签名值分量s2,以及发送所述签名值分量r和所述签名值分量s2至所述发起端;

8、所述发起端依据所述签名值分量r、所述签名值分量s2和所述阶数n确定签名值分量s,并通过所述用户公钥pa对所述签名值分量r和所述签名值分量s进行签名验证;若验证通过,则协同签名成功。

9、进一步地,所述发起端依据所述阶数n和所述基点g确定椭圆曲线点q1的步骤,包括:

10、所述发起端依据所述阶数n确定随机数k1;

11、所述发起端依据所述随机数k1和所述基点g确定椭圆曲线点q1。

12、进一步地,所述发起端依据所述第一消息摘要e、所述椭圆曲线点q1、所述基点g和所述阶数n确定签名值分量r'的步骤,包括:

13、所述发起端依据所述第一消息摘要e和所述椭圆曲线点q1确定第二消息摘要e1';

14、所述发起端依据所述阶数n确定随机数k1';

15、所述发起端依据所述随机数k1'和所述基点g确定中间值x1';

16、所述发起端依据所述第二消息摘要e1'、所述中间值x1'和所述阶数n确定签名值分量r'。

17、进一步地,所述发起端依据所述签名值分量r、所述签名值分量s2和所述阶数n确定签名值分量s的步骤,包括:

18、所述发起端依据所述阶数n确定随机数k1;

19、所述发起端依据所述第一私钥d1、所述随机数k1、所述签名值分量s2、所述签名值分量r和所述阶数n确定签名值分量s。

20、进一步地,所述发起端与所述协作端通过所述第一公钥p1和所述第二公钥p2进行互验的步骤,包括:

21、所述发起端生成随机数rnd,并依据所述随机数rnd和所述第一公钥p1确定摘要值c,并发送所述摘要值c至所述协作端;所述协作端用于依据所述摘要值c发送所述第二公钥p2至所述发起端;

22、所述发起端对所述第二公钥p2进行合法性效验;

23、若验证通过,则所述发起端发送所述随机数rnd和所述第一公钥p1至所述协作端;所述协作端用于对所述第一公钥p1进行合法性效验,以及依据所述摘要值c对所述随机数rnd和所述第一公钥p1进行验证。

24、本申请还公开一种基于sm2密码算法的协同签名方法,所述方法涉及发起端和协作端;所述发起端和所述协作端均预设有椭圆曲线;其中,所述椭圆曲线包括椭圆曲线的基点g以及所述基点g的阶数n;所述发起端存有第一私钥d1和第一公钥p1;所述协作端存有第二私钥d2和第二公钥p2;当协同生成用户的密钥对时,所述发起端与所述协作端通过所述第一公钥p1和所述第二公钥p2进行互验;所述发起端用于依据所述第一私钥d1、所述第二公钥p2和所述基点g确定用户公钥pa,以及依据所述阶数n和所述基点g确定椭圆曲线点q1,以及依据待签名的消息m确定第一消息摘要e,以及依据所述第一消息摘要e、所述椭圆曲线点q1、所述基点g和所述阶数n确定签名值分量r',以及依据所述第一私钥d1、所述签名值分量r'、所述阶数n确定签名值分量s',并发送所述第一消息摘要e、所述椭圆曲线点q1、所述签名值分量r'和所述签名值分量s'至所述协作端;

25、所述协同签名方法包括:

26、所述协作端通过所述第一公钥p1对所述签名值分量r'和所述签名值分量s'进行签名验证;

27、若验证通过,则所述协作端依据所述第一消息摘要e、所述基点g、所述第二私钥d2、所述椭圆曲线点q1和所述阶数n确定签名值分量r;

28、所述协作端依据所述第二私钥d2、所述签名值分量r和所述阶数n确定签名值分量s2,并发送所述签名值分量r和所述签名值分量s2至所述发起端;所述发起端用于依据所述签名值分量r、所述签名值分量s2和所述阶数n确定签名值分量s,以及通过所述用户公钥pa对所述签名值分量r和所述签名值分量s进行签名验证。

29、进一步地,所述协作端通过所述第一公钥p1对所述签名值分量r'和所述签名值分量s'进行签名验证的步骤,包括:

30、所述协作端依据所述签名值分量r'、所述签名值分量s'和所述阶数n确定中间值t;

31、所述协作端依据所述第一消息摘要e和所述椭圆曲线点q1确定第三消息摘要e2';

32、所述协作端依据所述签名值分量s'、所述基点g、所述中间值t和所述第一公钥p1确定中间值x2';

33、所述协作端依据所述第三消息摘要e2'、所述中间值x2'和所述阶数n确定中间值r;

34、所述协作端进行验证:若t≠0且r=r',则对所述签名值分量r'和所述签名值分量s'的验证通过。

35、进一步地,所述协作端依据所述第一消息摘要e、所述基点g、所述第二私钥d2、所述椭圆曲线点q1和所述阶数n确本文档来自技高网...

【技术保护点】

1.一种基于SM2密码算法的协同签名方法,其特征在于,所述方法涉及发起端和协作端;所述发起端和所述协作端均预设有椭圆曲线;其中,所述椭圆曲线包括椭圆曲线的基点G以及所述基点G的阶数n;所述发起端存有第一私钥d1和第一公钥P1;所述协作端存有第二私钥d2和第二公钥P2;当协同生成用户的密钥对时,所述发起端与所述协作端通过所述第一公钥P1和所述第二公钥P2进行互验;

2.根据权利要求1所述的方法,其特征在于,所述发起端依据所述阶数n和所述基点G确定椭圆曲线点Q1的步骤,包括:

3.根据权利要求1所述的方法,其特征在于,所述发起端依据所述第一消息摘要e、所述椭圆曲线点Q1、所述基点G和所述阶数n确定签名值分量r'的步骤,包括:

4.根据权利要求1所述的方法,其特征在于,所述发起端依据所述签名值分量r、所述签名值分量s2和所述阶数n确定签名值分量s的步骤,包括:

5.根据权利要求1所述的方法,其特征在于,所述发起端与所述协作端通过所述第一公钥P1和所述第二公钥P2进行互验的步骤,包括:

6.一种基于SM2密码算法的协同签名方法,其特征在于,所述方法涉及发起端和协作端;所述发起端和所述协作端均预设有椭圆曲线;其中,所述椭圆曲线包括椭圆曲线的基点G以及所述基点G的阶数n;所述发起端存有第一私钥d1和第一公钥P1;所述协作端存有第二私钥d2和第二公钥P2;当协同生成用户的密钥对时,所述发起端与所述协作端通过所述第一公钥P1和所述第二公钥P2进行互验;所述发起端用于依据所述第一私钥d1、所述第二公钥P2和所述基点G确定用户公钥PA,以及依据所述阶数n和所述基点G确定椭圆曲线点Q1,以及依据待签名的消息M确定第一消息摘要e,以及依据所述第一消息摘要e、所述椭圆曲线点Q1、所述基点G和所述阶数n确定签名值分量r',以及依据所述第一私钥d1、所述签名值分量r'、所述阶数n确定签名值分量s',并发送所述第一消息摘要e、所述椭圆曲线点Q1、所述签名值分量r'和所述签名值分量s'至所述协作端;

7.根据权利要求6所述的方法,其特征在于,所述协作端通过所述第一公钥P1对所述签名值分量r'和所述签名值分量s'进行签名验证的步骤,包括:

8.根据权利要求6所述的方法,其特征在于,所述协作端依据所述第一消息摘要e、所述基点G、所述第二私钥d2、所述椭圆曲线点Q1和所述阶数n确定签名值分量r的步骤,包括:

9.根据权利要求8所述的方法,其特征在于,所述协作端依据所述第二私钥d2、所述签名值分量r和所述阶数n确定签名值分量s2的步骤,包括:

10.一种基于SM2密码算法的协同签名系统,其特征在于,所述系统包括发起端和协作端;所述发起端和所述协作端均预设有椭圆曲线;其中,所述椭圆曲线包括椭圆曲线的基点G以及所述基点G的阶数n;所述发起端存有第一私钥d1和第一公钥P1;所述协作端存有第二私钥d2和第二公钥P2;当协同生成用户的密钥对时,所述发起端与所述协作端通过所述第一公钥P1和所述第二公钥P2进行互验;

...

【技术特征摘要】

1.一种基于sm2密码算法的协同签名方法,其特征在于,所述方法涉及发起端和协作端;所述发起端和所述协作端均预设有椭圆曲线;其中,所述椭圆曲线包括椭圆曲线的基点g以及所述基点g的阶数n;所述发起端存有第一私钥d1和第一公钥p1;所述协作端存有第二私钥d2和第二公钥p2;当协同生成用户的密钥对时,所述发起端与所述协作端通过所述第一公钥p1和所述第二公钥p2进行互验;

2.根据权利要求1所述的方法,其特征在于,所述发起端依据所述阶数n和所述基点g确定椭圆曲线点q1的步骤,包括:

3.根据权利要求1所述的方法,其特征在于,所述发起端依据所述第一消息摘要e、所述椭圆曲线点q1、所述基点g和所述阶数n确定签名值分量r'的步骤,包括:

4.根据权利要求1所述的方法,其特征在于,所述发起端依据所述签名值分量r、所述签名值分量s2和所述阶数n确定签名值分量s的步骤,包括:

5.根据权利要求1所述的方法,其特征在于,所述发起端与所述协作端通过所述第一公钥p1和所述第二公钥p2进行互验的步骤,包括:

6.一种基于sm2密码算法的协同签名方法,其特征在于,所述方法涉及发起端和协作端;所述发起端和所述协作端均预设有椭圆曲线;其中,所述椭圆曲线包括椭圆曲线的基点g以及所述基点g的阶数n;所述发起端存有第一私钥d1和第一公钥p1;所述协作端存有第二私钥d2和第二公钥p2;当协同生成用户的密钥对时,所述发起端与所述协作端通过所述第一公钥p1和所述第二公钥p2进...

【专利技术属性】
技术研发人员:李竞
申请(专利权)人:深圳奥联信息安全技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1