CN109787767A - Sm2协同数字签名方法及装置 - Google Patents
Sm2协同数字签名方法及装置 Download PDFInfo
- Publication number
- CN109787767A CN109787767A CN201811453013.9A CN201811453013A CN109787767A CN 109787767 A CN109787767 A CN 109787767A CN 201811453013 A CN201811453013 A CN 201811453013A CN 109787767 A CN109787767 A CN 109787767A
- Authority
- CN
- China
- Prior art keywords
- secret
- data
- random
- share
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本申请提供一种SM2协同数字签名方法及装置,方法包括:在与共享同一SM2算法的服务器共同完成密钥分割后生成第一随机数组,并触发使得所述服务器生成第二随机数组,根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密,与所述服务器共同完成对该目标数据的协同签名。本申请能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种SM2协同数字签名方法及装置。
背景技术
随着科技的飞速发展,通过互联网来进行文件数据交换的应用场景也越来越多,因此,数字签名(digital signature)也应运而生,成为互联网数据交换的有效保密与鉴别手段,以满足互联网的机密性、完整性、身份认证与授权以及不可抵赖性的要求。在各类数字签名算法中,SM2算法中的数字签名算法也因其不可忽视的优势成为众多数字签名算法中的重点研究课题。
现有技术中,应用SM2数字签名方法通常为应用Shamir秘密分享方案(SS)及联合Shamir随机秘密分享(Joint-RSS)来实现互联网文件数据的交换。即接收方对收到的文档要进行有效性的鉴别,在验证发送方的身份后才能确定文档是否有效。
然而,由于现有技术中的SM2数字签名方法,在数据传输过程中,若传输的数据被拦截,则可能被拦截方推算出传输两端中的一方或两方所掌握的分享秘密,因此,现有的算法无法满足客户端与服务器、或者服务器与服务器之间的加密安全要求。
发明内容
针对现有技术中的问题,本申请提供一种SM2协同数字签名方法及装置,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知。
为解决上述技术问题,本申请提供以下技术方案:
第一方面,本申请提供一种SM2协同数字签名方法,包括:
在与共享同一SM2算法的服务器共同完成密钥分割后,生成第一随机数组,并触发使得所述服务器生成第二随机数组,其中,所述第一随机数组包括随机生成的第一非目标随机数、对应于目标数据的第一目标随机数,以及分享秘密和对应的第一份额和第二份额,所述第二随机数组包括所述服务器随机生成的第二非目标随机数、对应于所述目标数据的第二目标随机数,以及所述分享秘密和对应的第三份额和第四份额;
根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密;
与所述服务器共同完成对该目标数据的协同签名。
进一步地,所述根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密,包括:
接收所述服务器根据所述第二随机数组发送的初始数据项;
根据所述初始数据项和第一随机数组确定第一组合数据项和参考组合数据项;
将所述第一组合数据项和参考组合数据项均发生至所述服务器,使得所述服务器根据该第一组合数据项确定第一分享子秘密,并根据所述参考组合数据项和所述第二随机数组生成第二组合数据项;
接收所述服务器发送的所述第二组合数据项;
根据所述第二组合数据项确定所述第二分享子秘密。
进一步地,所述与所述服务器共同完成对该目标数据的协同签名,包括:
应用N阶秘密和分享的方式,与所述服务器互相分享所述第一分享子秘密及第二分享子秘密;
根据所述第一分享子秘密及第二分享子秘密获取所述目标数据的分享秘密和,完成对该目标数据的协同签名;
其中,N为大于2的奇数。
进一步地,还包括:
生成第一随机密钥;
接收所述服务器发送的第二密钥数据项并基于所述第一随机密钥及第二密钥数据项确定公钥,或者,将第一密钥数据项发送至所述服务器,使得所述服务器基于所述第二随机密钥及第一密钥数据项确定公钥;
其中,所述第一密钥数据项根据所述第一随机密钥及SM2算法中椭圆曲线的基点确定,所述第二密钥数据项根据所述服务器生成的第二随机密钥及所述基点确定。
进一步地,所述初始数据项包括:SM2算法中椭圆曲线中的第一坐标点和初始组合数据项;
其中,所述第一坐标点根据所述第二非目标随机数、所述第二目标随机数和所述椭圆曲线的基点确定;
所述初始组合数据项由所述第二非目标随机数以及所述分享秘密和对应的第三份额和第四份额确定。
进一步地,所述根据所述初始数据项和第一随机数组确定第一组合数据项和参考组合数据项,包括:
根据所述第一坐标点、基点、第一非目标随机数和第一目标随机数,确定所述椭圆曲线上的一第二坐标点;
确定明文哈希值;
根据所述第二坐标点中的横第二坐标点及所述明文哈希值确定所述签名子项;
基于所述签名子项、初始组合数据项、第一份额和第二份额确定所述第一组合数据项;
根据所述第一非目标随机数、第一份额和第二份额生成所述参考组合数据项。
进一步地,所述第二组合数据项根据所述参考组合数据项、第三份额和第四份额确定。
第二方面,本申请提供一种SM2协同数字签名方法,包括:
在与共享同一SM2算法的客户端共同完成密钥分割后,根据所述客户端的触发指令生成第二随机数组,其中,所述第二随机数组包括随机生成的第二非目标随机数、对应于目标数据的第二目标随机数,以及分享秘密和对应的第三份额和第四份额;
根据所述第二随机数组与应用第一随机数组的所述客户端进行数据交互,确定所述目标数据对应的第一分享子秘密,并使得所述客户端获取所述目标数据对应的第二分享子秘密,其中,所述第一随机数组包括所述客户端随机生成的第一非目标随机数、对应于所述目标数据的第一目标随机数,以及所述分享秘密和对应的第一份额和第二份额;
与所述客户端共同完成对该目标数据的协同签名。
进一步地,所述根据所述第二随机数组与应用第一随机数组的所述客户端进行数据交互,确定所述目标数据对应的第一分享子秘密,并使得所述客户端获取所述目标数据对应的第二分享子秘密,包括:
根据所述第二随机数组生成初始数据项;
将所述初始数据项发送至所述客户端,并接收该客户端根据该初始数据项及所述第二随机数组生成的第一组合数据项和参考组合数据项;
根据所述第一组合数据项确定所述第一分享子秘密;
基于所述参考组合数据项和所述第二随机数组确定第二组合数据项,并将该第二组合数据项发送至所述客户端,使得该客户端根据所述第二组合数据项确定所述第二分享子秘密。
进一步地,所述与所述客户端共同完成对该目标数据的协同签名,包括:
应用N阶秘密和分享的方式,与所述客户端互相分享所述第一分享子秘密及第二分享子秘密;
根据所述第一分享子秘密及第二分享子秘密获取所述目标数据的分享秘密和,完成对该目标数据的协同签名;
其中,N为大于2的奇数。
进一步地,还包括:
生成第二随机密钥;
接收所述客户端发送的第一密钥数据项并基于所述第二随机密钥及第一密钥数据项确定公钥,或者,将第二密钥数据项发送至所述客户端,使得所述客户端基于所述第一随机密钥及第二密钥数据项确定公钥;
其中,所述第一密钥数据项根据所述客户端生成的第一随机密钥及SM2算法中椭圆曲线的基点确定,所述第二密钥数据项根据所述第二随机密钥及所述基点确定。
进一步地,所述初始数据项包括:SM2算法中椭圆曲线中的第一坐标点和初始组合数据项;
所述根据所述第二随机数组生成初始数据项,包括:
根据所述第二非目标随机数、所述第二目标随机数和SM2算法中椭圆曲线的基点确定所述第一坐标点;
基于所述第二非目标随机数以及所述分享秘密和对应的第三份额和第四份额确定初始组合数据项。
进一步地,所述第一组合数据项根据签名子项、所述初始组合数据项、第一份额和第二份额确定;
其中,所述签名子项根据所述椭圆曲线上的一第二坐标点中的横第二坐标点及明文哈希值确定,且所述第二坐标点根据所述第一坐标点、基点、第一非目标随机数和第一目标随机数确定;
所述参考组合数据项根据所述第一非目标随机数、第一份额和第二份额确定。
进一步地,所述基于所述第一组合数据项和所述第二随机数组确定第二组合数据项,包括:
根据所述参考组合数据项、第三份额和第四份额确定所述第二组合数据项。
第三方面,本申请提供一种客户端,包括:
第一随机数组生成模块,用于在与共享同一SM2算法的服务器共同完成密钥分割后,生成第一随机数组,并触发使得所述服务器生成第二随机数组,其中,所述第一随机数组包括随机生成的第一非目标随机数、对应于目标数据的第一目标随机数,以及分享秘密和对应的第一份额和第二份额,所述第二随机数组包括所述服务器随机生成的第二非目标随机数、对应于所述目标数据的第二目标随机数,以及所述分享秘密和对应的第三份额和第四份额;
第二分享子秘密确定模块,用于根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密;
第一协同签名模块,用于与所述服务器共同完成对该目标数据的协同签名。
第四方面,本申请提供一种服务器,包括:
第二随机数组生成模块,用于在与共享同一SM2算法的客户端共同完成密钥分割后,根据所述客户端的触发指令生成第二随机数组,其中,所述第二随机数组包括随机生成的第二非目标随机数、对应于目标数据的第二目标随机数,以及分享秘密和对应的第三份额和第四份额;
第一分享子秘密确定模块,用于根据所述第二随机数组与应用第一随机数组的所述客户端进行数据交互,确定所述目标数据对应的第一分享子秘密,并使得所述客户端获取所述目标数据对应的第二分享子秘密,其中,所述第一随机数组包括所述客户端随机生成的第一非目标随机数、对应于所述目标数据的第一目标随机数,以及所述分享秘密和对应的第一份额和第二份额;
第二协同签名模块,用于与所述客户端共同完成对该目标数据的协同签名。
第五方面,本申请提供一种协同签名系统,包括:所述的客户端以及所述的服务器;
所述客户端和所述服务器之间通信连接。
第六方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的SM2协同数字签名方法。
第七方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的SM2协同数字签名方法。
由上述技术方案可知,本申请提供一种SM2协同数字签名方法及装置,通过在与共享同一SM2算法的服务器共同完成密钥分割后,生成第一随机数组,并触发使得所述服务器生成第二随机数组,其中,所述第一随机数组包括随机生成的第一非目标随机数、对应于目标数据的第一目标随机数,以及所述分享秘密和对应的第一份额和第二份额,所述第二随机数组包括所述服务器随机生成的第二非目标随机数、对应于所述目标数据的第二目标随机数,以及所述分享秘密和对应的第三份额和第四份额;根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密;与所述服务器共同完成对该目标数据的协同签名,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中的执行主体为客户端的SM2协同数字签名方法的流程示意图。
图2为本发明实施例中的协同签名系统的构架示意图。
图3为本发明实施例中的执行主体为客户端的SM2协同数字签名方法中的步骤A20的流程示意图。
图4为本发明实施例中的执行主体为客户端的SM2协同数字签名方法中的步骤A30的流程示意图。
图5为本发明实施例中的执行主体为客户端的SM2协同数字签名方法中的步骤X01和步骤X02的流程示意图。
图6为本发明实施例中的执行主体为客户端的SM2协同数字签名方法中的步骤A22的流程示意图。
图7为本发明实施例中的执行主体为服务器的SM2协同数字签名方法的流程示意图。
图8为本发明实施例中的执行主体为服务器的SM2协同数字签名方法中的步骤B20的流程示意图。
图9为本发明实施例中的执行主体为服务器的SM2协同数字签名方法中的步骤B30的流程示意图。
图10为本发明实施例中的执行主体为服务器的SM2协同数字签名方法中的步骤Y01和步骤Y02的流程示意图。
图11为本发明实施例中的执行主体为服务器的SM2协同数字签名方法中的B21的流程示意图。
图12为本发明实施例中的客户端的结构示意图。
图13为本发明实施例中的服务器的结构示意图。
图14为本发明实施例中的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
考虑到现有技术存在的SM2协同数字签名的方式无法满足客户端与服务器、或者服务器与服务器之间的加密安全要求的问题,本申请提供一种以客户端为执行主体的SM2协同数字签名方法、以服务器为执行主体的SM2协同数字签名方法、客户端、服务器、包含有该客户端和服务器的协同签名系统、电子设备和计算机可读存储介质。其中的以客户端为执行主体的SM2协同数字签名方法通过在与共享同一SM2算法的服务器共同完成密钥分割后,生成第一随机数组,并触发使得所述服务器生成第二随机数组,其中,所述第一随机数组包括随机生成的第一非目标随机数、对应于目标数据的第一目标随机数,以及所述分享秘密和对应的第一份额和第二份额,所述第二随机数组包括所述服务器随机生成的第二非目标随机数、对应于所述目标数据的第二目标随机数,以及所述分享秘密和对应的第三份额和第四份额,根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密,与所述服务器共同完成对该目标数据的协同签名,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
可以理解的是,所述SM2签名算法及门限密码知识具体包含有如下内容:
SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,包括数字签名算法、密钥交换协议和公钥加密算法三部分。其中的数字签名算法部分是应用SM2算法进行数据加密传输中的重要基础环节。
(一)SM2签名算法
部分参数如下:
E:定义在有限域Fp上的椭圆曲线
G:椭圆曲线E上的基点
q:基点G的阶
1、密钥生成:
(1)随机生成秘密值d∈[1,q-1]。
(2)计算P=d*G,d作为私钥,P作为公钥。
2、签名生成:
(1)生成随机数k∈[1,q-1],计算(x1,y1)=k*G。
(2)计算明文哈希值e=Hash(m)。
(3)计算r=(e+x1)modq,若r=0或r+k=q,跳转(1)步执行。
(4)计算s=(1+d)-1(k-rd)modq,若s=0,跳转(1)步执行。
(5)将(r,s)作为签名结果。
3、签名验证:
(1)验证r,s,若r,验证失败。
(2)若(r+s)modq=0,验证失败。
(3)计算明文哈希值e=Hash(m)。
(4)计算(x′1,y′1)=s*G+(r+s)*P。
(5)计算r′=(e+x′1)modq,若r′=r验证通过,否则验证不通过。
(二)门限密码知识
1、Shamir秘密分享方案(SS)
Shamir(t,n)是一种存在可信中心的秘密分享方案。它将秘密d分成n份,分别发送给n个参与者。任意t+1及以上个参与者可以恢复出秘密d,任意t个参与者无法恢复出秘密。具体步骤如下:
(1)可信中心构造t阶组合数据项分享的秘密d=f(0)=a0。
(2)可信中心计算分享份额di=f(i)(1≤i≤n)并发送至n个参与者。
(3)参与者保存di。
上述过程称为t阶ss。任意t+1个参与者集合Q可通过拉格朗日插值公式计算完整
2、联合Shamir随机秘密分享(Joint-RSS)
联合Shamir是一种无可信中心的秘密分享方案,参与方以“自己”为可信中心产生随机秘密值并分发,最终秘密值等于所有参与方各自秘密值之和。具体步骤如下:
(1)各参与方以自己为可信中心执行t阶ss。
(2)参与者将其他参与者发送给自己的秘密份额相加得到最终秘密值的分享份额。
上述过程称为t阶Joint-RSS。
3、秘密和/差分享
参与者执行t阶ss秘密分享方案,将各自秘密份额相加/减即可得到最终秘密和/差的分享份额。
基于上述内容,本申请还提供一种协同签名系统,该系统可以包含有一种客户端S1和服务器S2,参见图2,其中,所述服务器S2可以与至少一个客户端设备S1通信连接,所述客户端S1和服务器S2之间通信连接,应用本申请所述的SM2协同数字签名方法,共同实现协同数字签名。
可以理解的是,所述客户端设备B1可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
所述服务器与所述客户端设备之间、所述服务器与作为客户端的另一服务器之间均可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的RPC协议(Remote Procedure CallProtocol,远程过程调用协议)、REST协议(Representational State Transfer,表述性状态转移协议)等。
可以理解的是,本申请中的各数据项或各类组合数据项,其本质均为由不同类型参数经组合计算后得到的数据,区别于直接发送或接受的源数据,这类数据在数据交互过程中的应用,能够有效防止数据在传输过程中被拦截后获取或推导出源数据。另外,在本申请的一个或多个实施例中,各类以参数表达式表达的数据,实际为应用该参数表达式计算出的结果数据。举例来说,初始组合数据项为计算k3+4u3-u4之后得到的数值,在交互过程中传输的也是该数值对应的数值数据,而非表达式本身。
在本申请的一个或多个实施例中,所述第一随机数组包含有随机生成的第一非目标随机数、对应于目标数据的第一目标随机数,以及所述分享秘密和对应的第一份额和第二份额,其中,参见表1,所述第一非目标随机数对应用k1表示,所述第一目标随机数对应用k2表示,且所述第一目标随机数k2对应的份额分别用u1和u2组成。
表1
在本申请的一个或多个实施例中,所述第二随机数组包含有随机生成的第二非目标随机数、对应于目标数据的第二目标随机数,以及所述分享秘密和对应的第三份额和第四份额,其中,参见表2,所述第二非目标随机数对应用k3表示,所述第二目标随机数对应用k4表示,且所述第二目标随机数k4对应的份额分别用u3和u4组成。
表2
可以理解的是,所述客户端在确定第一目标随机数k2与第二目标随机数k4对应于分享秘密和之后,所述客户端和所述服务器将该分享秘密和k2+k4分为四个份额,分别为所述客户端对应的第一份额u1和第二份额u2,所述服务器对应的第三份额u3和第四份额u4。
在本申请的一个或多个实施例中,所述初始数据项包含有SM2算法中椭圆曲线中的第一坐标点O和初始组合数据项k3+4u3-u4,参见表3。其中,所述第一坐标点O根据所述第二非目标随机数k3、所述第二目标随机数k4和所述椭圆曲线的基点G确定,所述初始组合数据项由所述第二非目标随机数k3以及所述第二目标随机数对应的第三份额u3和第四份额u4确定。
表3
在本申请的一个或多个实施例中,所述第一组合数据项M基于所述签名子项r、初始组合数据项k3+4u3-u4、第一份额u1和第二份额u2确定,参见表4。其中,所述签名子项根据所述椭圆曲线上的一第二坐标点(x1,y1)中的x1及所述明文哈希值e确定。所述第二坐标点(x1,y1)根据所述第一坐标点O、初始组合数据项根据第一坐标点O、基点G、第一非目标随机数k3和第一目标随机数k4确定。
表4
在本申请的一个或多个实施例中,所述参考组合数据项k1+4u1-6u2参见表5,由第一非目标随机数、第二目标随机数对应的第一份额和第二份额确定。
表5
在本申请的一个或多个实施例中,所述第一分享子秘密s1根据所述第一组合数据项M确定,参见表6。
表6
第一分享子秘密s<sub>1</sub> |
第一组合数据项M |
在本申请的一个或多个实施例中,所述第二组合数据项N根据参考组合数据项k1+4u1-6u2、第三份额u3和第四份额u4确定。参见表7。
表7
在本申请的一个或多个实施例中,所述第二分享子秘密s2根据所述第二组合数据项N确定,参见表8。
表8
第二分享子秘密s<sub>2</sub> |
第二组合数据项N |
针对执行主体为客户端的情况下,本申请提供一种SM2协同数字签名方法的具体实施例,参见图1,所述SM2协同数字签名方法具体包含有如下内容:
步骤A10:在与共享同一SM2算法的服务器共同完成密钥分割后,生成第一随机数组,并触发使得所述服务器生成第二随机数组。
可以理解的是,所述第一随机数组包括随机生成的第一非目标随机数k1、对应于目标数据的第一目标随机数k2,以及所述分享秘密和k1+k2中的第一目标随机数k2对应的第一份额u1和第二份额u2,所述第二随机数组包括所述服务器随机生成的第二非目标随机数k3、对应于所述目标数据的第二目标随机数k4,以及所述分享秘密和k1+k2中的第二目标随机数k4对应的第三份额u3和第四份额u4。
步骤A20:根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密。
步骤A30:与所述服务器共同完成对该目标数据的协同签名。
从上述描述可知,本申请实施例提供的SM2协同数字签名方法,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
在一种具体实施方式中,参见图3,所述SM2协同数字签名方法中的步骤A20具体包含有如下内容:
步骤A21:接收所述服务器根据所述第二随机数组发送的初始数据项。
步骤A22:根据所述初始数据项和第一随机数组确定第一组合数据项和参考组合数据项。
步骤A23:将所述第一组合数据项和参考组合数据项均发生至所述服务器,使得所述服务器根据该第一组合数据项确定第一分享子秘密,即并根据所述参考组合数据项和所述第二随机数组生成第二组合数据项。
步骤A24:接收所述服务器发送的所述第二组合数据项。
步骤A25:根据所述第二组合数据项确定所述第二分享子秘密,即
在一种具体实施方式中,参见图4,所述SM2协同数字签名方法中的步骤A30具体包含有如下内容:
步骤A31:应用N阶秘密和分享的方式,与所述服务器互相分享所述第一分享子秘密及第二分享子秘密。
步骤A32:根据所述第一分享子秘密及第二分享子秘密获取所述目标数据的分享秘密和,完成对该目标数据的协同签名,其中,N为大于2的奇数。
可以理解的是,所述N阶秘密和分享的方式具体可以优选为3阶秘密和分享方案,即N为3。另外,N也可以为等于5或7等,可以根据实际应用情形进行选取。例如:客户端和服务端执行3阶秘密和分享方案,分享秘密和为s1+s2,最终可计算得到s=s1+s2-r。
在一种具体实施方式中,参见图5,所述SM2协同数字签名方法中的步骤A10之前还包含有步骤X01和步骤X02,具体包含有如下内容:
步骤X01:生成第一随机密钥,即d1。
步骤X02:接收所述服务器发送的第二密钥数据项并基于所述第一随机密钥及第二密钥数据项确定公钥,或者,将第一密钥数据项发送至所述服务器,使得所述服务器基于所述第二随机密钥及第一密钥数据项确定公钥。其中,所述第一密钥数据项根据所述第一随机密钥及SM2算法中椭圆曲线的基点确定,所述第二密钥数据项根据所述服务器生成的第二随机密钥及所述基点确定。
可以理解的是,令1+d=d1*d2,则有
由于完整私钥为d=d1*d2-1,因此,服务器或者客户端中的一方只要获知另一方对应的密钥数据项,既能够获知完整公钥:
P=d*G=(d1*d2-1)G=d1*d2*G-G。
举例来说:
情形一:客户端接收所述服务器发送的第二密钥数据项,所述第二密钥数据项根据所述服务器生成的第二随机密钥及所述基点确定,即:d2*G的结果数据;
而后,所述客户端根据其自身已知的第一随机密钥d1、G以及接收到的d2*G结果数据,即能够根据d1*d2G-G计算得到完整公钥P。
情形二:服务器接收所述客户端发送的第一密钥数据项,所述第一密钥数据项根据所述客户端生成的第一随机密钥及所述基点确定,即:d1*G的结果数据;
而后,所述服务器根据其自身已知的第二随机密钥d2、G以及接收到的d1*G结果数据,即能够根据d1G*d2-G计算得到完整公钥P。
基于此方式,客户端和服务端各自随机产生密钥因子,互不影响。
从上述描述可知,本申请实施例提供的SM2协同数字签名方法,不仅能够使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,还能够在密钥产生阶段,通过客户端和服务端独立产生密钥、独立存储的设置,使得彼此之间无需发送密钥相关信息,进而能够保证密钥产生阶段的安全性,并一步提高SM2数字签名过程的机密性和可靠性。
在一种具体举例中,所述初始数据项包括:SM2算法中椭圆曲线中的第一坐标点和初始组合数据项。
其中,所述第一坐标点根据所述第二非目标随机数、所述第二目标随机数和所述椭圆曲线的基点确定,即O=(k3+2k4)*G。
所述初始组合数据项由所述第二非目标随机数以及所述分享秘密和对应的第三份额和第四份额确定,即k3+4u3-u4。
在一种具体举例中,参见图6,步骤A22包括:
步骤A221:根据所述第一坐标点、基点、第一非目标随机数和第一目标随机数,确定所述椭圆曲线上的一第二坐标点,即(x1,y1)=(k1+2k2)*G+O。
步骤A222:确定明文哈希值,即e=Hash(m)。
步骤A223:根据所述第二坐标点中的横第二坐标点及所述明文哈希值确定所述签名子项,即r=(e+x1)modq。
步骤A224:基于所述签名子项、初始组合数据项、第一份额和第二份额确定所述第一组合数据项,即
步骤A225:根据所述第一非目标随机数、第一份额和第二份额生成所述参考组合数据项,即k1+4u1-6u2。
在一种具体实施例中,所述第二组合数据项根据所述参考组合数据项、第三份额和第四份额确定,即
针对执行主体为服务器的情况下,本申请提供一种SM2协同数字签名方法的具体实施例,参见图7,所述SM2协同数字签名方法具体包含有如下内容:
步骤B10:在与共享同一SM2算法的客户端共同完成密钥分割后,根据所述客户端的触发指令生成第二随机数组。
可以理解的是,所述第二随机数组包括随机生成的第二非目标随机数k3、对应于目标数据的第二目标随机数k4,以及所述第二目标随机数k4对应的第三份额u3和第四份额u4。
步骤B20:根据所述第二随机数组与应用第一随机数组的所述客户端进行数据交互,确定所述目标数据对应的第一分享子秘密,并使得所述客户端获取所述目标数据对应的第二分享子秘密。
可以理解的是,所述第一随机数组包括所述客户端随机生成的第一非目标随机数k1、对应于所述目标数据的第一目标随机数k2,以及所述第一目标随机数k2对应的第一份额u1和第二份额u2。
步骤B30:与所述客户端共同完成对该目标数据的协同签名。
从上述描述可知,本申请实施例提供的SM2协同数字签名方法,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
在一种具体实施方式中,参见图8,所述SM2协同数字签名方法中的步骤B20具体包含有如下内容:
步骤B21:根据所述第二随机数组生成初始数据项。
步骤B22:将所述初始数据项发送至所述客户端,并接收该客户端根据该初始数据项及所述第二随机数组生成的第一组合数据项和参考组合数据项。
步骤B23:根据所述第一组合数据项确定所述第一分享子秘密,即
步骤B24:基于所述参考组合数据项和所述第二随机数组确定第二组合数据项,并将该第二组合数据项发送至所述客户端,使得该客户端根据所述第二组合数据项确定所述第二分享子秘密,即
在一种具体实施方式中,参见图9,所述SM2协同数字签名方法中的步骤B30具体包含有如下内容:
步骤B31:应用N阶秘密和分享的方式,与所述客户端互相分享所述第一分享子秘密及第二分享子秘密。
步骤B32:根据所述第一分享子秘密及第二分享子秘密获取所述目标数据的分享秘密和,完成对该目标数据的协同签名,其中,N为大于2的奇数。
可以理解的是,所述N阶秘密和分享的方式具体可以优选为3阶秘密和分享方案,即N为3。另外,N也可以为等于5或7等,可以根据实际应用情形进行选取。例如:客户端和服务端执行3阶秘密和分享方案,分享秘密和为s1+s2,最终可计算得到s=s1+s2-r。
在一种具体实施方式中,参见图10,所述SM2协同数字签名方法中的所述步骤BA10之前还包含有步骤Y01和步骤Y02,具体包含有如下内容:
步骤Y01:生成第二随机密钥,即d2。
步骤Y02:接收所述客户端发送的第一密钥数据项并基于所述第二随机密钥及第一密钥数据项确定公钥,或者,将第二密钥数据项发送至所述客户端,使得所述客户端基于所述第一随机密钥及第二密钥数据项确定公钥。其中,所述第一密钥数据项根据所述客户端生成的第一随机密钥及SM2算法中椭圆曲线的基点确定,所述第二密钥数据项根据所述第二随机密钥及所述基点确定。
可以理解的是,令1+d=d1*d2,则有
由于完整私钥为d=d1*d2-1,因此,服务器或者客户端中的一方只要获知另一方对应的密钥数据项,既能够获知完整公钥:
P=d*G=(d1*d2-1)G=d1*d2*G-G。
基于此,客户端和服务端各自随机产生密钥因子,互不影响。
从上述描述可知,本申请实施例提供的SM2协同数字签名方法,不仅能够使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,还能够在密钥产生阶段,通过客户端和服务端独立产生密钥、独立存储的设置,使得彼此之间无需发送密钥相关信息,进而能够保证密钥产生阶段的安全性,并一步提高SM2数字签名过程的机密性和可靠性。
在一种具体实施例中,所述初始数据项包括:SM2算法中椭圆曲线中的第一坐标点和初始组合数据项。
其中,参见图11,所述步骤B21包括:
步骤B211:根据所述第二非目标随机数、所述第二目标随机数和SM2算法中椭圆曲线的基点确定所述第一坐标点,即O=(k3+2k4)*G。
步骤B212:基于所述第二非目标随机数以及所述分享秘密和对应的第三份额和第四份额确定初始组合数据项,即k3+4u3-u4。
在一种具体实施例中,所述第一组合数据项根据签名子项、所述初始组合数据项、第一份额和第二份额确定,即:
其中,所述签名子项根据所述椭圆曲线上的一第二坐标点中的横第二坐标点及明文哈希值确定,即r=(e+x1)modq;且所述第二坐标点根据所述第一坐标点、基点、第一非目标随机数和第一目标随机数确定(x1,y1)=(k1+2k2)*G+O;
所述参考组合数据项根据所述第一非目标随机数、第一份额和第二份额确定,即k1+4u1-6u2。
在一种具体实施例中,所述步骤B24包括:
根据所述参考组合数据项、第三份额和第四份额确定所述第二组合数据项,即
针对客户端与服务端双向交互的情况,本申请提供一种SM2协同数字签名方法的具体应用实例,所述SM2协同数字签名方法具体包含有如下内容:
SM2算法中s=(1+d)-1(k-rd),对等式做变形得s=(1+d)-1(k+r)-r。以客户端-服务端通信架构为例,如下说明SM2密钥分割及协同签名算法。
(一)SM2密钥分割
(1)服务端产生随机密钥d1
(2)客户端产生随机密钥d2
(3)令1+d=d1*d2,则有
完整私钥d=d1*d2-1,完整公钥P=d*G。客户端和服务端各自随机产生密钥因子,互不影响。
(二)协同签名
签名流程如下:
客户端产生随机数k1、k2,服务端产生随机数k3、k4。客户端和服务端执行3阶秘密和分享方案,分享秘密和为k2+k4。其中客户端份额为u1、u2,服务端份额为u3、u4。由拉格朗日插值公式可以得k2+k4=4u1-6u2+4u3-u4。
服务端返回O=(k3+2k4)*G、k3+4u3-u4
客户端做如下计算
(x1,y1)=(k1+2k2)*G+O
e=Hash(m)
r=(e+x1)modq
客户端向服务端发送k1+4u1-6u2、M
服务端做如下计算:
服务端将N发送给客户端
客户端计算
客户端和服务端执行3阶秘密和分享方案,分享秘密和为s1+s2,最终可计算s=s1+s2-r。
基于上述内容,本申请还提供结果准确性的验证过程,具体如下:
从上述描述可申请应用实例提供的SM2协同数字签名方法,在密钥产生阶段:客户端和服务端独立产生密钥,独立存储,无需彼此发送密钥相关信息,可以保证密钥产生阶段的安全性。在签名生成阶段:在3阶秘密和分享过程中,客户端和服务端分别持有两个因子,客户端、服务端通信中,即便拦截传输信息也无法获取组合数据项参数等信息,以及在客户端、服务端通信时会传输M、N、r,k3+4u3-u4、k1+4u1-6u2,通过M、N、r、k3+4u3-u4、k1+4u1-6u2无法计算秘密信息k1、k2、k3、k4等。
在软件层面,本申请还提供一种用于实现执行主体为客户端的SM2协同数字签名方法的全部内容的客户端,参见图12,所述客户端具体包含有如下内容:
第一随机数组生成模块A1,用于在与共享同一SM2算法的服务器共同完成密钥分割后,生成第一随机数组,并触发使得所述服务器生成第二随机数组,其中,所述第一随机数组包括随机生成的第一非目标随机数、对应于目标数据的第一目标随机数,以及所述分享秘密和对应的第一份额和第二份额,所述第二随机数组包括所述服务器随机生成的第二非目标随机数、对应于所述目标数据的第二目标随机数,以及所述分享秘密和对应的第三份额和第四份额。
第二分享子秘密确定模块A2,用于根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密。
第一协同签名模块A3,用于与所述服务器共同完成对该目标数据的协同签名。
本申请提供的客户端实施例具体可以用于执行上述实施例中的执行主体为客户端的SM2协同数字签名方法的各个实施例的全部处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
从上述描述可知,本申请实施例提供的客户端,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
在软件层面,本申请还提供一种用于实现执行主体为服务器的SM2协同数字签名方法的全部内容的服务器,参见图13,所述服务器具体包含有如下内容:
第二随机数组生成模块B1,用于在与共享同一SM2算法的客户端共同完成密钥分割后,根据所述客户端的触发指令生成第二随机数组,其中,所述第二随机数组包括随机生成的第二非目标随机数、对应于目标数据的第二目标随机数,以及所述分享秘密和对应的第三份额和第四份额;
第一分享子秘密确定模块B2,用于根据所述第二随机数组与应用第一随机数组的所述客户端进行数据交互,确定所述目标数据对应的第一分享子秘密,并使得所述客户端获取所述目标数据对应的第二分享子秘密,其中,所述第一随机数组包括所述客户端随机生成的第一非目标随机数、对应于所述目标数据的第一目标随机数,以及所述分享秘密和对应的第一份额和第二份额;
第二协同签名模块B3,用于与所述客户端共同完成对该目标数据的协同签名。
本申请提供的服务器实施例具体可以用于执行上述实施例中的执行主体为服务器的SM2协同数字签名方法的各个实施例的全部处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
从上述描述可知,本申请实施例提供的服务器,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
在交互层面,本申请还提供一种用于实现执行主体为服务器的SM2协同数字签名方法以及实现执行主体为客户端的SM2协同数字签名方法的全部内容的协同签名系统,参见图2,所述客户端和所述服务器之间通信连接。能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
本申请的实施例还提供能够实现上述实施例中的实现执行主体为客户端的SM2协同数字签名方法的全部内容中全部或部分步骤的一种电子设备的具体实施方式,参见图14,所述电子设备具体包括如下内容:
处理器(processor)601、存储器(memory)602、通信接口(CommunicationsInterface)603和总线604;
其中,所述处理器601、存储器602、通信接口603通过所述总线604完成相互间的通信;所述通信接口603用于客户端、服务器以及其他参与机构之间的信息传输;
所述处理器601用于调用所述存储器602中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的执行主体客户端的SM2协同数字签名方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤A10:在与共享同一SM2算法的服务器共同完成密钥分割后,生成第一随机数组,并触发使得所述服务器生成第二随机数组。
可以理解的是,所述第一随机数组包括随机生成的第一非目标随机数k1、对应于目标数据的第一目标随机数k2,以及所述第一目标随机数k2对应的第一份额u1和第二份额u2,所述第二随机数组包括所述服务器随机生成的第二非目标随机数k3、对应于所述目标数据的第二目标随机数k4,以及所述第二目标随机数k4对应的第三份额u3和第四份额u4。
步骤A20:根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密。
步骤A30:与所述服务器共同完成对该目标数据的协同签名。
从上述描述可知,本申请实施例提供的电子设备,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
本申请的实施例还提供能够实现上述实施例中的实现执行主体为服务器的SM2协同数字签名方法的全部内容中全部或部分步骤的另一种电子设备的具体实施方式,其结构示意图与前述的电子设备相同,该另一种电子设备具体包括如下内容:
处理器(processor)601、存储器(memory)602、通信接口(CommunicationsInterface)603和总线604;
其中,所述处理器601、存储器602、通信接口603通过所述总线604完成相互间的通信;所述通信接口603用于客户端、服务器以及其他参与机构之间的信息传输;
所述处理器601用于调用所述存储器602中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的执行主体为服务器的SM2协同数字签名方法或者执行主体为客户端的SM2协同数字签名方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤B10:在与共享同一SM2算法的客户端共同完成密钥分割后,根据所述客户端的触发指令生成第二随机数组。
可以理解的是,所述第二随机数组包括随机生成的第二非目标随机数k3、对应于目标数据的第二目标随机数k4,以及所述第二目标随机数k4对应的第三份额u3和第四份额u4。
步骤B20:根据所述第二随机数组与应用第一随机数组的所述客户端进行数据交互,确定所述目标数据对应的第一分享子秘密,并使得所述客户端获取所述目标数据对应的第二分享子秘密。
可以理解的是,所述第一随机数组包括所述客户端随机生成的第一非目标随机数k1、对应于所述目标数据的第一目标随机数k2,以及所述第一目标随机数k2对应的第一份额u1和第二份额u2。
步骤B30:与所述客户端共同完成对该目标数据的协同签名。
从上述描述可知,本申请实施例提供的另一种电子设备,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
本申请的实施例还提供能够实现上述实施例中的执行主体为客户端的SM2协同数字签名方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为客户端的SM2协同数字签名方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤A10:在与共享同一SM2算法的服务器共同完成密钥分割后,生成第一随机数组,并触发使得所述服务器生成第二随机数组。
可以理解的是,所述第一随机数组包括随机生成的第一非目标随机数k1、对应于目标数据的第一目标随机数k2,以及所述第一目标随机数k2对应的第一份额u1和第二份额u2,所述第二随机数组包括所述服务器随机生成的第二非目标随机数k3、对应于所述目标数据的第二目标随机数k4,以及所述第二目标随机数k4对应的第三份额u3和第四份额u4。
步骤A20:根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密。
步骤A30:与所述服务器共同完成对该目标数据的协同签名。
从上述描述可知,本申请实施例提供的计算机可读存储介质,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
本申请的实施例还提供能够实现上述实施例中的执行主体为服务器的SM2协同数字签名方法中全部步骤的另一种计算机可读存储介质,该另一种计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器的SM2协同数字签名方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤B10:在与共享同一SM2算法的客户端共同完成密钥分割后,根据所述客户端的触发指令生成第二随机数组。
可以理解的是,所述第二随机数组包括随机生成的第二非目标随机数k3、对应于目标数据的第二目标随机数k4,以及所述第二目标随机数k4对应的第三份额u3和第四份额u4。
步骤B20:根据所述第二随机数组与应用第一随机数组的所述客户端进行数据交互,确定所述目标数据对应的第一分享子秘密,并使得所述客户端获取所述目标数据对应的第二分享子秘密。
可以理解的是,所述第一随机数组包括所述客户端随机生成的第一非目标随机数k1、对应于所述目标数据的第一目标随机数k2,以及所述第一目标随机数k2对应的第一份额u1和第二份额u2。
步骤B30:与所述客户端共同完成对该目标数据的协同签名。
从上述描述可知,本申请实施例提供的另一种计算机可读存储介质,能够有效提高SM2数字签名过程中数据传输的机密性,使得数据在传输过程中即使被拦截,也能够保证签名两端的客户端及服务器端的机密信息无法被获知,进而能够有效提高SM2数字签名过程的安全性及可靠性,进一步提高文件数据在互联网传播中的安全性和机密性。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。
Claims (19)
1.一种SM2协同数字签名方法,其特征在于,包括:
在与共享同一SM2算法的服务器共同完成密钥分割后,生成第一随机数组,并触发使得所述服务器生成第二随机数组,其中,所述第一随机数组包括随机生成的第一非目标随机数、对应于目标数据的第一目标随机数,以及分享秘密和对应的第一份额和第二份额,所述第二随机数组包括所述服务器随机生成的第二非目标随机数、对应于所述目标数据的第二目标随机数,以及所述分享秘密和对应的第三份额和第四份额;
根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密;
与所述服务器共同完成对该目标数据的协同签名。
2.根据权利要求1所述的SM2协同数字签名方法,其特征在于,所述根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密,包括:
接收所述服务器根据所述第二随机数组发送的初始数据项;
根据所述初始数据项和第一随机数组确定第一组合数据项和参考组合数据项;
将所述第一组合数据项和参考组合数据项均发生至所述服务器,使得所述服务器根据该第一组合数据项确定第一分享子秘密,并根据所述参考组合数据项和所述第二随机数组生成第二组合数据项;
接收所述服务器发送的所述第二组合数据项;
根据所述第二组合数据项确定所述第二分享子秘密。
3.根据权利要求1所述的SM2协同数字签名方法,其特征在于,所述与所述服务器共同完成对该目标数据的协同签名,包括:
应用N阶秘密和分享的方式,与所述服务器互相分享所述第一分享子秘密及第二分享子秘密;
根据所述第一分享子秘密及第二分享子秘密获取所述目标数据的分享秘密和,完成对该目标数据的协同签名;
其中,N为大于2的奇数。
4.根据权利要求1所述的SM2协同数字签名方法,其特征在于,还包括:
生成第一随机密钥;
接收所述服务器发送的第二密钥数据项并基于所述第一随机密钥及第二密钥数据项确定公钥,或者,将第一密钥数据项发送至所述服务器,使得所述服务器基于所述第二随机密钥及第一密钥数据项确定公钥;
其中,所述第一密钥数据项根据所述第一随机密钥及SM2算法中椭圆曲线的基点确定,所述第二密钥数据项根据所述服务器生成的第二随机密钥及所述基点确定。
5.根据权利要求2所述的SM2协同数字签名方法,其特征在于,所述初始数据项包括:SM2算法中椭圆曲线中的第一坐标点和初始组合数据项;
其中,所述第一坐标点根据所述第二非目标随机数、所述第二目标随机数和所述椭圆曲线的基点确定;
所述初始组合数据项由所述第二非目标随机数以及所述分享秘密和对应的第三份额和第四份额确定。
6.根据权利要求5所述的SM2协同数字签名方法,其特征在于,所述根据所述初始数据项和第一随机数组确定第一组合数据项和参考组合数据项,包括:
根据所述第一坐标点、基点、第一非目标随机数和第一目标随机数,确定所述椭圆曲线上的一第二坐标点;
确定明文哈希值;
根据所述第二坐标点中的横第二坐标点及所述明文哈希值确定所述签名子项;
基于所述签名子项、初始组合数据项、第一份额和第二份额确定所述第一组合数据项;
根据所述第一非目标随机数、第一份额和第二份额生成所述参考组合数据项。
7.根据权利要求2所述的SM2协同数字签名方法,其特征在于,所述第二组合数据项根据所述参考组合数据项、第三份额和第四份额确定。
8.一种SM2协同数字签名方法,其特征在于,包括:
在与共享同一SM2算法的客户端共同完成密钥分割后,根据所述客户端的触发指令生成第二随机数组,其中,所述第二随机数组包括随机生成的第二非目标随机数、对应于目标数据的第二目标随机数,以及分享秘密和对应的第三份额和第四份额;
根据所述第二随机数组与应用第一随机数组的所述客户端进行数据交互,确定所述目标数据对应的第一分享子秘密,并使得所述客户端获取所述目标数据对应的第二分享子秘密,其中,所述第一随机数组包括所述客户端随机生成的第一非目标随机数、对应于所述目标数据的第一目标随机数,以及所述分享秘密和对应的第一份额和第二份额;
与所述客户端共同完成对该目标数据的协同签名。
9.根据权利要求8所述的SM2协同数字签名方法,其特征在于,所述根据所述第二随机数组与应用第一随机数组的所述客户端进行数据交互,确定所述目标数据对应的第一分享子秘密,并使得所述客户端获取所述目标数据对应的第二分享子秘密,包括:
根据所述第二随机数组生成初始数据项;
将所述初始数据项发送至所述客户端,并接收该客户端根据该初始数据项及所述第二随机数组生成的第一组合数据项和参考组合数据项;
根据所述第一组合数据项确定所述第一分享子秘密;
基于所述参考组合数据项和所述第二随机数组确定第二组合数据项,并将该第二组合数据项发送至所述客户端,使得该客户端根据所述第二组合数据项确定所述第二分享子秘密。
10.根据权利要求8所述的SM2协同数字签名方法,其特征在于,所述与所述客户端共同完成对该目标数据的协同签名,包括:
应用N阶秘密和分享的方式,与所述客户端互相分享所述第一分享子秘密及第二分享子秘密;
根据所述第一分享子秘密及第二分享子秘密获取所述目标数据的分享秘密和,完成对该目标数据的协同签名;
其中,N为大于2的奇数。
11.根据权利要求8所述的SM2协同数字签名方法,其特征在于,还包括:
生成第二随机密钥;
接收所述客户端发送的第一密钥数据项并基于所述第二随机密钥及第一密钥数据项确定公钥,或者,将第二密钥数据项发送至所述客户端,使得所述客户端基于所述第一随机密钥及第二密钥数据项确定公钥;
其中,所述第一密钥数据项根据所述客户端生成的第一随机密钥及SM2算法中椭圆曲线的基点确定,所述第二密钥数据项根据所述第二随机密钥及所述基点确定。
12.根据权利要求9所述的SM2协同数字签名方法,其特征在于,所述初始数据项包括:SM2算法中椭圆曲线中的第一坐标点和初始组合数据项;
所述根据所述第二随机数组生成初始数据项,包括:
根据所述第二非目标随机数、所述第二目标随机数和SM2算法中椭圆曲线的基点确定所述第一坐标点;
基于所述第二非目标随机数以及所述分享秘密和对应的第三份额和第四份额确定初始组合数据项。
13.根据权利要求12所述的SM2协同数字签名方法,其特征在于,所述第一组合数据项根据签名子项、所述初始组合数据项、第一份额和第二份额确定;
其中,所述签名子项根据所述椭圆曲线上的一第二坐标点中的横第二坐标点及明文哈希值确定,且所述第二坐标点根据所述第一坐标点、基点、第一非目标随机数和第一目标随机数确定;
所述参考组合数据项根据所述第一非目标随机数、第一份额和第二份额确定。
14.根据权利要求9所述的SM2协同数字签名方法,其特征在于,所述基于所述第一组合数据项和所述第二随机数组确定第二组合数据项,包括:
根据所述参考组合数据项、第三份额和第四份额确定所述第二组合数据项。
15.一种客户端,其特征在于,包括:
第一随机数组生成模块,用于在与共享同一SM2算法的服务器共同完成密钥分割后,生成第一随机数组,并触发使得所述服务器生成第二随机数组,其中,所述第一随机数组包括随机生成的第一非目标随机数、对应于目标数据的第一目标随机数,以及分享秘密和对应的第一份额和第二份额,所述第二随机数组包括所述服务器随机生成的第二非目标随机数、对应于所述目标数据的第二目标随机数,以及所述分享秘密和对应的第三份额和第四份额;
第二分享子秘密确定模块,用于根据所述第一随机数组与应用所述第二随机数组的所述服务器进行数据交互,确定所述目标数据对应的第二分享子秘密,并使得所述服务器获取所述目标数据对应的第一分享子秘密;
第一协同签名模块,用于与所述服务器共同完成对该目标数据的协同签名。
16.一种服务器,其特征在于,包括:
第二随机数组生成模块,用于在与共享同一SM2算法的客户端共同完成密钥分割后,根据所述客户端的触发指令生成第二随机数组,其中,所述第二随机数组包括随机生成的第二非目标随机数、对应于目标数据的第二目标随机数,以及分享秘密和对应的第三份额和第四份额;
第一分享子秘密确定模块,用于根据所述第二随机数组与应用第一随机数组的所述客户端进行数据交互,确定所述目标数据对应的第一分享子秘密,并使得所述客户端获取所述目标数据对应的第二分享子秘密,其中,所述第一随机数组包括所述客户端随机生成的第一非目标随机数、对应于所述目标数据的第一目标随机数,以及所述分享秘密和对应的第一份额和第二份额;
第二协同签名模块,用于与所述客户端共同完成对该目标数据的协同签名。
17.一种协同签名系统,其特征在于,包括:如权利要求15所述的客户端以及如权利要求16所述的服务器;
所述客户端和所述服务器之间通信连接。
18.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述的SM2协同数字签名方法,或者实现如权利要求8至14任一项所述的SM2协同数字签名方法。
19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述的SM2协同数字签名方法,或者实现如权利要求8至14任一项所述的SM2协同数字签名方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811453013.9A CN109787767B (zh) | 2018-11-30 | 2018-11-30 | Sm2协同数字签名方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811453013.9A CN109787767B (zh) | 2018-11-30 | 2018-11-30 | Sm2协同数字签名方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109787767A true CN109787767A (zh) | 2019-05-21 |
CN109787767B CN109787767B (zh) | 2022-03-15 |
Family
ID=66496537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811453013.9A Active CN109787767B (zh) | 2018-11-30 | 2018-11-30 | Sm2协同数字签名方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109787767B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457936A (zh) * | 2019-07-01 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 数据交互方法、装置和电子设备 |
CN113765662A (zh) * | 2021-09-10 | 2021-12-07 | 长春吉大正元信息安全技术有限公司 | 一种基于sm2算法的签名及解密方法和系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160156626A1 (en) * | 2014-06-26 | 2016-06-02 | Amazon Technologies, Inc. | Mutual authentication with symmetric secrets and signatures |
CN106549770A (zh) * | 2017-01-13 | 2017-03-29 | 武汉理工大学 | Sm2数字签名生成方法及系统 |
CN106656512A (zh) * | 2017-01-17 | 2017-05-10 | 武汉理工大学 | 支持门限密码的sm2数字签名生成方法及系统 |
CN106712942A (zh) * | 2017-01-10 | 2017-05-24 | 武汉理工大学 | 基于秘密共享的sm2数字签名生成方法及系统 |
CN106850198A (zh) * | 2017-01-16 | 2017-06-13 | 武汉理工大学 | 基于多装置协同的sm2数字签名生成方法及系统 |
WO2017145016A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys |
CN107483191A (zh) * | 2017-08-16 | 2017-12-15 | 济南浪潮高新科技投资发展有限公司 | 一种sm2算法密钥分割签名系统及方法 |
CN107612680A (zh) * | 2017-09-14 | 2018-01-19 | 哈尔滨理工大学 | 一种移动网络支付中的国密算法 |
CN107888380A (zh) * | 2017-10-30 | 2018-04-06 | 武汉大学 | 一种两方分布式基于身份的rsa数字签名生成方法与系统 |
-
2018
- 2018-11-30 CN CN201811453013.9A patent/CN109787767B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160156626A1 (en) * | 2014-06-26 | 2016-06-02 | Amazon Technologies, Inc. | Mutual authentication with symmetric secrets and signatures |
WO2017145016A1 (en) * | 2016-02-23 | 2017-08-31 | nChain Holdings Limited | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys |
CN106712942A (zh) * | 2017-01-10 | 2017-05-24 | 武汉理工大学 | 基于秘密共享的sm2数字签名生成方法及系统 |
CN106549770A (zh) * | 2017-01-13 | 2017-03-29 | 武汉理工大学 | Sm2数字签名生成方法及系统 |
CN106850198A (zh) * | 2017-01-16 | 2017-06-13 | 武汉理工大学 | 基于多装置协同的sm2数字签名生成方法及系统 |
CN106656512A (zh) * | 2017-01-17 | 2017-05-10 | 武汉理工大学 | 支持门限密码的sm2数字签名生成方法及系统 |
CN107483191A (zh) * | 2017-08-16 | 2017-12-15 | 济南浪潮高新科技投资发展有限公司 | 一种sm2算法密钥分割签名系统及方法 |
CN107612680A (zh) * | 2017-09-14 | 2018-01-19 | 哈尔滨理工大学 | 一种移动网络支付中的国密算法 |
CN107888380A (zh) * | 2017-10-30 | 2018-04-06 | 武汉大学 | 一种两方分布式基于身份的rsa数字签名生成方法与系统 |
Non-Patent Citations (5)
Title |
---|
FAN DING; YIHONG LONG; PEILI WU: ""Study on Secret Sharing for SM2 Digital Signature and Its Application"", 《2018 14TH INTERNATIONAL CONFERENCE ON COMPUTATIONAL INTELLIGENCE AND SECURITY (CIS)》 * |
PING GUO;HONG ZHANG: ""An Elliptic Curve Digital Signature Scheme Based on Proactive Secret Sharing"", 《2009 WRI GLOBAL CONGRESS ON INTELLIGENT SYSTEMS》 * |
邓高宇等: "基于iOS终端的SM2移动密码系统", 《软件》 * |
陈子迪等: "基于秘密共享的IBE移动密码系统", 《软件》 * |
陈泌文: ""泄露条件下的秘密共享方案研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457936A (zh) * | 2019-07-01 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 数据交互方法、装置和电子设备 |
CN110457936B (zh) * | 2019-07-01 | 2020-08-14 | 阿里巴巴集团控股有限公司 | 数据交互方法、装置和电子设备 |
US10873452B1 (en) | 2019-07-01 | 2020-12-22 | Advanced New Technologies Co., Ltd. | Secret sharing data exchange for generating a data processing model |
CN113765662A (zh) * | 2021-09-10 | 2021-12-07 | 长春吉大正元信息安全技术有限公司 | 一种基于sm2算法的签名及解密方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109787767B (zh) | 2022-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106961336B (zh) | 一种基于sm2算法的密钥分量托管方法和系统 | |
CN109558517B (zh) | 一种基于区块链的多方安全选举系统 | |
EP3627797B1 (en) | Manicoding for access verification | |
CN107017993A (zh) | 一种多方联合密钥产生和数字签名方法及系统 | |
US20120002811A1 (en) | Secure outsourced computation | |
CN107078910A (zh) | 生成区块链区块的方法、装置、节点、签名设备及系统 | |
CN107196926A (zh) | 一种云外包隐私集合比较方法与装置 | |
WO2024093426A1 (zh) | 基于联邦机器学习的模型训练方法和装置 | |
CN113034135A (zh) | 基于区块链的信息处理方法、装置、设备、介质和产品 | |
CN105187425B (zh) | 面向云计算通信系统安全的无证书门限解密方法 | |
CN111191280A (zh) | 基于加密数据的区块链交易方法、电子设备和存储介质 | |
CN104754570B (zh) | 一种基于移动互联网络的密钥分发和重构方法与装置 | |
CN101908961B (zh) | 一种短密钥环境下多方秘密握手方法 | |
CN101282216B (zh) | 带隐私保护的基于口令认证的三方密钥交换方法 | |
JP2023552263A (ja) | 秘密分散の再分配 | |
CN115396115B (zh) | 区块链数据隐私保护方法、装置、设备及可读存储介质 | |
WO2020021394A2 (en) | Computer-implemented system and method for asset mixing | |
CN112436938A (zh) | 数字签名的生成方法、装置和服务器 | |
CN109787767A (zh) | Sm2协同数字签名方法及装置 | |
Alwen et al. | Collusion-free multiparty computation in the mediated model | |
CN116527279A (zh) | 工控网络中安全数据聚合的可验证联邦学习装置及方法 | |
Lai et al. | An efficient quantum blind digital signature scheme | |
Ki et al. | Constructing Strong Identity‐Based Designated Verifier Signatures with Self‐Unverifiability | |
CN111769945A (zh) | 基于区块链的拍卖处理方法和区块链节点 | |
WO2022116175A1 (zh) | 数字签名的生成方法、装置和服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 250101 2204, floor 22, building 3, Aosheng building, 1166 Xinluo street, high tech Zone, Jinan City, Shandong Province Applicant after: Shengan Information Technology Co.,Ltd. Address before: 250101 2208, floor 22, building 3, Aosheng building, 1166 Xinluo street, high tech Zone, Jinan City, Shandong Province Applicant before: JINAN SHENGAN INFORMATION TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |