CN112632630A - 一种基于sm2的协同签名计算方法及装置 - Google Patents

一种基于sm2的协同签名计算方法及装置 Download PDF

Info

Publication number
CN112632630A
CN112632630A CN201910949318.7A CN201910949318A CN112632630A CN 112632630 A CN112632630 A CN 112632630A CN 201910949318 A CN201910949318 A CN 201910949318A CN 112632630 A CN112632630 A CN 112632630A
Authority
CN
China
Prior art keywords
elliptic curve
signature
participant
point
sub
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.)
Pending
Application number
CN201910949318.7A
Other languages
English (en)
Inventor
宁红宙
王启刚
危学艳
龚征
马昌社
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aisino Corp
Original Assignee
Aisino Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Aisino Corp filed Critical Aisino Corp
Priority to CN201910949318.7A priority Critical patent/CN112632630A/zh
Publication of CN112632630A publication Critical patent/CN112632630A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Abstract

本发明公开了一种基于SM2的协同签名计算方法及装置,用以解决现有技术中存在的协同签名计算方法过于复杂,签名计算时间较长、效率较低的问题。第一参与方实施的协同签名计算方法,包括:接收第二参与方发送的第二参与方的第二子公钥;采用第一算法生成第一随机数;根据第一随机数以及第二子公钥,生成椭圆曲线第一随机点;将椭圆曲线第一随机点发送给第二参与方,并接收第二参与方发送的根据椭圆曲线第一随机点生成的待签名消息的第一部分签名以及中间签名;根据第一参与方的第一子私钥、第一随机数、第一部分签名以及中间签名,生成待签名消息的第二部分签名,以确定由第一部分签名及第二部分签名构成的签名消息的完整签名。

Description

一种基于SM2的协同签名计算方法及装置
技术领域
本发明涉及信息安全与密码学领域,尤其涉及一种基于SM2的协同签名计算方法及装置。
背景技术
在传统互联网中,为了保护用户网上业务的安全,往往采用基于PKI(Public KeyInfrastructure,公钥基础设施)的数字签名和加解密等密码技术,来验证用户身份的真实性,保证信息的机密性、完整性和签名者的不可否认性等。基于PKI的应用,私钥的保护安全性问题至关重要。传统模式通常给用户配备USBKey、SmartCard等安全硬件外设,来保障私钥的安全。
而随着移动互联网、云计算的快速发展和应用,移动智能终端在生活、学习、工作等方面给人们带来方便快捷的同时,对信息安全提出了更高的要求。在移动智能终端或云环境下,由于成本或没有合适的密码硬件等原因,用户不能再依赖密码硬件来使用私钥进行加解密和签名验签等密码运算。
针对这些场景,目前常用的方法是以软件的形式存储和使用私钥,但很容易被攻击者窃取,从而导致安全事故。为了在移动智能终端或云环境中不泄露完整的私钥,目前出现了通信双方协同签名的技术方案,即签名计算需由移动端和服务端共同计算协作产生,任何一方都无法单独产生完整的签名结果。而现有的协同签名计算方法过于复杂,签名计算时间较长、效率较低。
鉴于此,如何提高协同签名计算方法的效率成为一个亟待解决的技术问题。
发明内容
本申请实施例提供了一种基于SM2的协同签名计算方法及装置,用以解决现有技术中存在的协同签名计算方法过于复杂,签名计算时间较长、效率较低的问题。
第一方面,为解决上述技术问题,本申请实施例提供一种基于SM2的协同签名计算方法,应用于第一参与方,包括:
接收第二参与方发送的所述第二参与方的第二子公钥;
采用第一算法生成第一随机数;
根据所述第一随机数以及所述第二子公钥,生成椭圆曲线第一随机点,其中,所述椭圆曲线第一随机点为指定椭圆曲线的加法群上的一个元素;
将所述椭圆曲线第一随机点发送给所述第二参与方,并接收所述第二参与方发送的根据所述椭圆曲线第一随机点生成的待签名消息的第一部分签名以及中间签名,其中,所述中间签名为所述第二参与方的第二子私钥被混淆后的值;
根据所述第一参与方的第一子私钥、所述第一随机数、所述第一部分签名以及所述中间签名,生成所述待签名消息的第二部分签名,以确定由所述第一部分签名及所述第二部分签名构成的所述待签名消息的完整签名。
在本申请实施例中,可以通过接收第二参与方发送的第二参与方的第二子公钥,采用第一算法生成第一随机数,然后根据第一随机数以及第二子公钥,生成椭圆曲线第一随机点,其中,椭圆曲线第一随机点为指定椭圆曲线的加法群上的一个元素,将椭圆曲线第一随机点发送给第二参与方,并接收第二参与方发送的根据椭圆曲线第一随机点生成的待签名消息的第一部分签名以及中间签名,其中,中间签名为第二参与方的第二子私钥被混淆后的值,根据第一参与方的第一子私钥、第一随机数、第一部分签名以及中间签名,生成待签名消息的第二部分签名,以确定由第一部分签名及第二部分签名构成的待签名消息的完整签名,从而使得完整签名需由第一参与方和第二参与方共同计算协作产生,任何一方都无法单独产生完整签名,提高安全性,进一步地,第一参与方与第二参与方只需要二次通信,便可得到待签名消息的完整签名,所以,在本申请实施例中可以使用较少的通信次数,便能获得待签名消息的完整签名,减少了在签名数据在网络中传输的总时间,能够满足无线移动通信或云计算环境中低延迟、少交互的应用需求。
结合第一方面,在第一方面的第一种可选实施方式中,根据所述第一随机数以及所述第二子公钥,生成椭圆曲线第一随机点,包括:
采用第一公式对所述第一随机数以及所述第二子公钥进行点乘运算,生成所述椭圆曲线第一随机点;所述第一公式用于将所述椭圆曲线第一随机点约束在所述指定椭圆曲线的加法群上;
所述第一公式,具体为:
Q1=(x1,y1)=k1[*]P2
其中,Q1为所述椭圆曲线第一随机点,x1和y1分别为所述椭圆曲线第一随机点的横纵坐标,k1为所述第一随机数,且k1∈[1,n-1]范围内的整数,P2为所述第二子公钥,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,[*]表示椭圆曲线点乘运算。
结合第一方面,在第一方面的第二种可选实施方式中,根据所述第一参与方的第一子私钥、所述第一随机数、所述第一部分签名以及所述中间签名,生成所述待签名消息的第二部分签名,包括:
采用第二公式对所述第一子私钥、所述第一随机数、所述第一部分签名以及所述中间签名进行模运算,生成所述第二部分签名;
所述第二公式,具体为:
s=[(hd1)-1×(k1+s1)-r]mod n
其中,s为所述第二部分签名,(hd1)-1为所述第一子私钥hd1在有限素域Fq上的逆元,k1为所述第一随机数,且k1∈[1,n-1]范围内的整数,s1为所述中间签名,r为所述第一部分签名,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,mod表示求模运算。
结合第一方面,在第一方面的第三种可选实施方式中,接收第二参与方发送的所述第二参与方的第二子公钥之后,还包括:
将所述第一参与方的第一子公钥发送给所述第二参与方;
采用第三公式对所述第一子私钥、所述第二子公钥及所述指定椭圆曲线的基点进行运算,获得所述第一参与方与所述第二参与方的共同公钥;
所述第三公式,具体为:
PA=hd1[*]P2[-]G
其中,PA为所述共同公钥,hd1为所述第一子私钥,且hd1∈[1,n-1]范围内的整数,P2为所述第二子公钥,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
第二方面,提供一种基于SM2的协同签名计算方法,应用于第二参与方,包括:
将所述第二参与方的第二子公钥发送给第一参与方,并接收所述第一参与方发送的椭圆曲线第一随机点,其中,所述椭圆曲线第一随机点为所述第一参与方根据选取的第一随机数确定的指定椭圆曲线的加法群上的一个元素;
采用第二算法生成第二随机数;
根据所述第二随机数、所述指定椭圆曲线的基点及所述椭圆曲线第一随机点,生成所述指定椭圆曲线上的椭圆曲线第二随机点;
对待签名消息进行哈希计算,获得待签名消息的消息摘要;
根据所述消息摘要以及所述椭圆曲线第二随机点的横坐标,生成所述待签名消息的第一部分签名;
根据所述第二子私钥、所述第二随机数及所述第一部分签名,生成所述待签名消息的中间签名,其中,所述中间签名为所述第二参与方所持有的第二子私钥被混淆后的值;
将所述第一部分签名以及所述中间签名发送给所述第一参与方。
结合第二方面,在第二方面的第一种可选实施方式中,根据所述第二随机数、所述指定椭圆曲线的基点及所述椭圆曲线第一随机点,生成所述指定椭圆曲线上的椭圆曲线第二随机点,包括:
采用第五公式对所述第二随机数、所述指定椭圆曲线的基点及所述椭圆曲线第一随机点进行点乘运算,生成所述指定椭圆曲线上的椭圆曲线第二随机点;所述第五公式用于将所述椭圆曲线第二随机点约束在所述指定椭圆曲线的加法群上;
所述第五公式,具体为:
Q2=(x2,y2)=k2[*]G[+]Q1
其中,Q2为所述椭圆曲线第二随机点,x2和y2分别为所述椭圆曲线第二随机点的横纵坐标,k2为所述第二随机数,且k2∈[1,n-1]范围内的整数,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,Q1为所述椭圆曲线第一随机点,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算。
结合第二方面,在第二方面的第二种可选实施方式中,根据所述消息摘要以及所述椭圆曲线第二随机点的横坐标,生成所述待签名消息的第一部分签名,包括:
采用第六公式对所述消息摘要、所述椭圆曲线第二随机点的横坐标进行模运算,生成所述第一部分签名;
所述第六公式,具体为:
r=(x2+e)mod n
其中,r为所述第一部分签名,x2为所述椭圆曲线第二随机点的横坐标,e为所述摘要消息转换而成的整数,n为所述基点G的阶,mod表示求模运算。
结合第二方面,在第二方面的第三种可选实施方式中,根据所述第二子私钥、所述第二随机数及所述第一部分签名,生成所述待签名消息的中间签名,包括:
采用第七公式对所述第二子私钥、所述第二随机数及所述第一部分签名进行模运算,获得所述中间签名,其中,所述中间签名为所述第二参与方所持有的第二子私钥被混淆后的值;
所述第七公式,具体为:
s1=[(hd2)-1×(k2+r)]mod n
其中,s1为所述中间签名,(hd2)-1为所述第二子私钥hd2在有限素域Fq上的逆元,k2为所述第二随机数,且k2∈[1,n-1]范围内的整数,r为所述第一部分签名,n为所述基点G的阶,mod表示求模运算。
结合第二方面,在第二方面的第四种可选实施方式中,将所述第二参与方的第二子公钥发送给第一参与方之后,还包括:
接收所述第一参与方发送的所述第一参与方的第一子公钥;
采用第八公式对所述第二子私钥、所述第一子公钥及所述指定椭圆曲线的基点进行运算,获得所述第一参与方与所述第二参与方的共同公钥。
所述第八公式,具体为:
PA=hd2[*]P1[-]G
其中,PA为所述共同公钥,hd2为所述第二子私钥,且hd2∈[1,n-1]范围内的整数,P1为所述第一子公钥,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
第三方面,提供一种基于SM2的协同签名计算装置,应用于第一参与方,包括:
接收单元,用于接收第二参与方发送的所述第二参与方的第二子公钥;
第一生成单元,用于采用第一算法生成第一随机数;
第二生成单元,用于根据所述第一随机数以及所述第二子公钥,生成椭圆曲线第一随机点,其中,所述椭圆曲线第一随机点为指定椭圆曲线的加法群上的一个元素;
处理单元,用于将所述椭圆曲线第一随机点发送给所述第二参与方,并接收所述第二参与方发送的根据所述椭圆曲线第一随机点生成的待签名消息的第一部分签名以及中间签名,其中,所述中间签名为所述第二参与方的第二子私钥被混淆后的值;
第三生成单元,用于根据所述第一参与方的第一子私钥、所述第一随机数、所述第一部分签名以及所述中间签名,生成所述待签名消息的第二部分签名,以确定由所述第一部分签名及所述第二部分签名构成的所述待签名消息的完整签名。
第四方面,提供一种基于SM2的协同签名计算装置,应用于第二参与方,包括:
第一处理单元,将所述第二参与方的第二子公钥发送给第一参与方,并接收所述第一参与方发送的椭圆曲线第一随机点,其中,所述椭圆曲线第一随机点为所述第一参与方根据选取的第一随机数确定的指定椭圆曲线的加法群上的一个元素;
第一生成单元,用于采用第二算法生成第二随机数;
第二生成单元,用于根据所述第二随机数、所述指定椭圆曲线的基点及所述椭圆曲线第一随机点,生成所述指定椭圆曲线上的椭圆曲线第二随机点;
第三生成单元,用于对待签名消息进行哈希计算,获得待签名消息的消息摘要;
第四生成单元,用于根据所述消息摘要以及所述椭圆曲线第二随机点的横坐标,生成所述待签名消息的第一部分签名;
第五生成单元,用于根据所述第二子私钥、所述第二随机数及所述第一部分签名,生成所述待签名消息的中间签名,其中,所述中间签名为所述第二参与方所持有的第二子私钥被混淆后的值;
第二处理单元,用于将所述第一部分签名以及所述中间签名发送给所述第一参与方。
第五方面,提供一种基于SM2的协同签名计算装置,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面与第二方面中的任一实施方式所述的方法包括的步骤。
第六方面,提供一种存储介质,该存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面与第二方面中的任一实施方式包括的步骤。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请实施例提供的基于SM2的协同签名计算方法,应用于第一参与方的流程图;
图2为本申请实施例提供的基于SM2的协同签名计算方法,应用于第二参与方的流程图;
图3为本发明实施例提供的基于SM2的协同签名计算装置,应用于第一参与方的结构示意图;
图4为本发明实施例提供的基于SM2的协同签名计算装置,应用于第二参与方的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,能够以不同于此处的顺序执行所示出或描述的步骤。
本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例中,“至少一个”可以表示一个或者至少两个,例如可以是一个、两个、三个或者更多个,本申请实施例不做限制。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
为了便于理解,下面先对本申请实施例的技术背景进行介绍。
如前文所述,针对不能再依赖密码硬件来使用私钥进行加解密和签名验签等密码运算的场景,目前常用的方法是以软件的形式存储和使用私钥,但很容易被攻击者窃取,从而导致安全事故。为了在移动智能终端或云环境中不泄露完整的私钥,目前出现了通信双方协同签名的技术方案,即签名计算需由移动端和服务端共同计算协作产生,任何一方都无法单独产生完整的签名结果。而现有的协同签名计算方法过于复杂,签名计算时间较长、效率较低。
鉴于此,本申请实施例提供一种基于SM2的协同签名计算方法,可以通过接收第二参与方发送的第二参与方的第二子公钥,采用第一算法生成第一随机数,然后根据第一随机数以及第二子公钥,生成椭圆曲线第一随机点,其中,椭圆曲线第一随机点为指定椭圆曲线的加法群上的一个元素,将椭圆曲线第一随机点发送给第二参与方,并接收第二参与方发送的根据椭圆曲线第一随机点生成的待签名消息的第一部分签名以及中间签名,其中,中间签名为第二参与方的第二子私钥被混淆后的值,根据第一参与方的第一子私钥、第一随机数、第一部分签名以及中间签名,生成待签名消息的第二部分签名,以确定由第一部分签名及第二部分签名构成的待签名消息的完整签名,从而使得签名结果需由第一参与方和第二参与方共同计算协作产生,任何一方都无法单独产生完整的签名结果,提高安全性,进一步地,第一参与方与第二参与方只需要二次通信,便可得到待签名消息的完整签名,所以,在本申请实施例中可以使用较少的通信次数,便能获得待签名消息的完整签名,减少了在签名数据在网络中传输的总时间,能够满足无线移动通信或云计算环境中低延迟、少交互的应用需求。
为了更好的理解上述技术方案,下面通过说明书附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
以下,将分别从第一参与方、第二参与方的角度对基于SM2的协同签名计算方法进行描述。
请参考图1,本申请实施例提供一种基于SM2的协同签名计算方法,应用于第一参与方,该方法的处理过程如下。
步骤101:接收第二参与方发送的第二参与方的第二子公钥。
在本申请实施例中,在使用SM2算法进行协同签名之前,通信双方以第一参与方和第二参与方为例,该实施例中第一参与方和第二参方需要满足:共享指定椭圆曲线E(Fq)的参数;通信双方生成并持有各自的签名私钥;通信双方生成并持有各自的签名公钥及完整的签名公钥。
第一参与方和第二参与方共享指定椭圆曲线E(Fq)参数,包括:有限素域Fq的素数q、指定椭圆曲线方程的系数a,b∈Fq范、指定椭圆曲线E(Fq)上的基点G=(xG,yG)(G≠0,xG∈Fq,yG∈Fq)和基点G的阶n。指定椭圆曲线E(Fq)参数的具体取值,见中华人民共和国密码行业标准GM/T 0003.5-2012《SM2椭圆曲线公钥密码算法第5部分:参数定义》。在双方共享了指定椭圆曲线E(Fq)的上述参数之后,第一参与方和第二参与方分别生成并持有各自的签名私钥。第一参与方的签名私钥称之为第一子私钥(可用hd1表示),第二参与方的签名私钥称之为第二子私钥(可用hd2表示),hd1和hd2均随机取为[1,n-1]内的整数。完整的签名私钥定义为dA=(hd1×hd2-1)mod n,通信双方均不知对方的签名私钥,也不知完整的签名私钥dA,其中,mod表示求模运算。
在双方生成各自的签名私钥(即第一子私钥和第二子私钥)之后,便需要生成它们各自的签名公钥,进而确定完整的签名公钥(可用PA表示)。第一参与方的签名公钥称之为第一子公钥(可用P1表示),第二参与方的签名公钥称之为第二子公钥(可用P2表示)。具体地,第一参与方用第一子私钥hd1计算第一子公钥P1=hd1[*]G,并将第一子公钥P1发送给第二参与方,接收并保存第二参与方发送的第二子公钥P2;第二参与方用第二子私钥hd2计算第二子公钥P2=hd2[*]G,并将第二子公钥P2发送给第一参与方,接收并保存第一参与方发送的第一子公钥P1;第一参与方根据第二子公钥P2计算完整的签名公钥PA=hd1[*]P2[-]G;第二参与方根据第一子公钥P1计算完整的签名公钥PA=hd2[*]P1[-]G。这样就使得第一参与方与第二参与方双方均拥有完整的签名公钥。其中,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
步骤102:采用第一算法生成第一随机数。
在本申请实施例中,第一参与方采用第一算法生成第一随机数,具体的,第一随机数可以通过随机数生成器(即第一算法)随机生成,其取值范围为[1,n-1]的整数,n为指定椭圆曲线的基点G的阶。
步骤103:根据第一随机数以及第二子公钥,生成椭圆曲线第一随机点。
在本申请实施例中,在第一参与方和第二参与方均拥有完整的签名公钥之后,第一参与方按照第一公式对采用第一算法生成的第一随机数以及第二参与方的第二子公钥进行点乘运算,生成椭圆曲线第一随机点;其中,第一公式用于将椭圆曲线第一随机点约束在指定椭圆曲线的加法群上。
具体的,第一公式为:
Q1=(x1,y1)=k1[*]P2
其中,Q1为椭圆曲线第一随机点,x1和y1分别为椭圆曲线第一随机点的横纵坐标,k1为第一随机数,且k1∈[1,n-1]范围内的整数,P2为第二子公钥,指定椭圆曲线E(Fq)定义在有限素域Fq上,G为指定椭圆曲线E(Fq)的基点,n为基点G的阶,[*]表示椭圆曲线点乘运算。
步骤104:将椭圆曲线第一随机点发送给第二参与方,并接收第二参与方发送的根据椭圆曲线第一随机点生成的待签名消息的第一部分签名以及中间签名。
在本申请实施例中,中间签名可以是第二参与方的第二子私钥被混淆后的值。
步骤105:根据第一参与方的第一子私钥、第一随机数、第一部分签名以及中间签名,生成待签名消息的第二部分签名,以确定由第一部分签名及第二部分签名构成的待签名消息的完整签名。
在本申请实施例中,在接收第二参与方发送的根据椭圆曲线第一随机点生成的待签名消息的第一部分签名以及中间签名之后,第一参与方采用第二公式对第一子私钥、第一随机数、第一部分签名以及中间签名进行模运算,生成待签名消息的第二部分签名,以确定由第一部分签名及第二部分签名构成的待签名消息的完整签名。
具体的,第二公式为:
s=[(hd1)-1×(k1+s1)-r]mod n
其中,s为第二部分签名,(hd1)-1为第一子私钥hd1在有限素域Fq上的逆元,k1为第一随机数,且k1∈[1,n-1]范围内的整数,s1为中间签名,r为第一部分签名,指定椭圆曲线E(Fq)定义在有限素域Fq上,G为指定椭圆曲线E(Fq)的基点,n为基点G的阶,mod表示求模运算。
则最终确定由第一部分签名及第二部分签名构成的待签名消息的完整签名为(r,s)。
进一步地,在确定待签名消息的完整签名为(r,s),可采用SM2签名验证算法验证完整签名,见《SM2椭圆曲线公钥密码算法》(GM/T 0003-2012),具体的,采用第九公式对完整的签名公钥和完整签名进行运算,生成椭圆曲线第三随机点,其中,椭圆曲线第三随机点为指定椭圆曲线的加法群上的一个元素,第九公式用于将椭圆曲线第三随机点约束在指定椭圆曲线的加法群上。
具体的,第九公式为:
Q3=(x3,y3)=s[*]G+(r+s)[*]PA
其中,Q3为椭圆曲线第三随机点,x3和y3分别为椭圆曲线第三随机点的横纵坐标,r为完整签名的第一部分签名,s为完整签名的第二部分签名,PA为完整的签名公钥,指定椭圆曲线E(Fq)定义在有限素域Fq上,G为指定椭圆曲线的基点,n为基点G的阶,[*]表示椭圆曲线点乘运算;
然后接收第二参与方发送的椭圆曲线第二随机点,其中,椭圆曲线第二随机点为第二参与方根据选取的第二随机数、指定椭圆曲线的基点及椭圆曲线第一随机点确定的指定椭圆曲线的加法群上的一个元素,判断椭圆曲线第二随机点的横坐标是否与椭圆曲线第三随机点的横坐标相同,若是,则完整签名验证成功。
请参考图2,本申请实施例提供一种基于SM2的协同签名计算方法,应用于第二参与方,该方法的处理过程如下。
步骤201:将第二参与方的第二子公钥发送给第一参与方,并接收第一参与方发送的椭圆曲线第一随机点。
步骤202:采用第二算法生成第二随机数。
在本申请实施例中,第二参与方采用第二算法生成第二随机数,具体的,第二随机数可以通过随机数生成器(即第二算法)随机生成,第二随机数取值范围为[1,n-1]的整数,n为指定椭圆曲线的基点G的阶。其中,第一参与方与第二参与方可以采用相同的随机数生成器,也可以采用不同的随机数生成器,即第一算法与第二算法可以相同,也可以不同。
步骤203:根据第二随机数、指定椭圆曲线的基点及椭圆曲线第一随机点,生成指定椭圆曲线上的椭圆曲线第二随机点。
在本申请实施例中,可采用第五公式对第二随机数、指定椭圆曲线的基点及椭圆曲线第一随机点进行点乘运算,生成指定椭圆曲线上的椭圆曲线第二随机点;其中,第五公式用于将椭圆曲线第二随机点约束在指定椭圆曲线的加法群上。
具体的,第五公式为:
Q2=(x2,y2)=k2[*]G[+]Q1
其中,Q2为椭圆曲线第二随机点,x2和y2分别为椭圆曲线第二随机点的横纵坐标,k2为第二随机数,且k2∈[1,n-1]范围内的整数,指定椭圆曲线E(Fq)定义在有限素域Fq上,G为指定椭圆曲线E(Fq)的基点,n为基点G的阶,Q1为椭圆曲线第一随机点,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算。
步骤204:对待签名消息进行哈希计算,获得待签名消息的消息摘要。
在本申请实施例中,第二参与方对待签名消息进行哈希计算,获得待签名消息的消息摘要。为了便于理解,下面以举例的方式进行说明:
例如,假设待签名消息为M,那么待签名消息M的消息摘要e的计算公式为:
e=Hash(M)
其中,Hash()函数可以是SM3密码杂凑算法。
步骤205:根据消息摘要以及椭圆曲线第二随机点的横坐标,生成待签名消息的第一部分签名。
在本申请实施例中,可采用第六公式对消息摘要、椭圆曲线第二随机点的横坐标进行模运算,生成第一部分签名。
具体的,第六公式为:
r=(x2+e)mod n
其中,r为第一部分签名,x2为椭圆曲线第二随机点的横坐标,e为摘要消息转换而成的整数,n为基点G的阶,mod表示求模运算。
步骤206:根据第二子私钥、第二随机数及第一部分签名,生成待签名消息的中间签名。
在本申请实施例中,可采用第七公式对第二子私钥、第二随机数及第一部分签名进行模运算,获得中间签名,其中,中间签名为第二参与方所持有的第二子私钥被混淆后的值。
具体的,第七公式为:
S1=[(hd2)-1×(k2+r)]mod n
其中,s1为中间签名,(hd2)-1为第二子私钥hd2在有限素域Fq上的逆元,k2为第二随机数,且k2∈[1,n-1]范围内的整数,r为第一部分签名,n为所述基点G的阶,mod表示求模运算。
步骤207:将第一部分签名以及中间签名发送给第一参与方。
在本申请实施例中,将第一部分签名以及中间签名发送给第一参与方之后,第二参与方将椭圆曲线第二随机点,其中,椭圆曲线第二随机点为第二参与方根据选取的第二随机数、指定椭圆曲线的基点及椭圆曲线第一随机点确定的指定椭圆曲线的加法群上的一个元素。
基于同一发明构思,本申请实施例提供一种基于SM2的协同签名计算装置,应用于第一参与方,该装置的协同签名计算方法的具体实施方式可参见第一参与方的方法实施例部分的描述,重复之处不再赘述,请参见图3,该装置包括:
接收单元301,用于接收第二参与方发送的所述第二参与方的第二子公钥;
第一生成单元302,用于采用第一算法生成第一随机数;
第二生成单元303,用于根据所述第一随机数以及所述第二子公钥,生成椭圆曲线第一随机点,其中,所述椭圆曲线第一随机点为指定椭圆曲线的加法群上的一个元素;
处理单元304,用于将所述椭圆曲线第一随机点发送给所述第二参与方,并接收所述第二参与方发送的根据所述椭圆曲线第一随机点生成的待签名消息的第一部分签名以及中间签名,其中,所述中间签名为所述第二参与方的第二子私钥被混淆后的值;
第三生成单元305,用于根据所述第一参与方的第一子私钥、所述第一随机数、所述第一部分签名以及所述中间签名,生成所述待签名消息的第二部分签名,以确定由所述第一部分签名及所述第二部分签名构成的所述待签名消息的完整签名。
可选的,所述第二生成单元303,具体用于:
采用第一公式对所述第一随机数以及所述第二子公钥进行点乘运算,生成所述椭圆曲线第一随机点;所述第一公式用于将所述椭圆曲线第一随机点约束在所述指定椭圆曲线的加法群上;
所述第一公式,具体为:
Q1=(x1,y1)=k1[*]P2
其中,Q1为所述椭圆曲线第一随机点,x1和y1分别为所述椭圆曲线第一随机点的横纵坐标,k1为所述第一随机数,且k1∈[1,n-1]范围内的整数,P2为所述第二子公钥,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,[*]表示椭圆曲线点乘运算。
可选的,所述第三生成单元305,具体用于:
采用第二公式对所述第一子私钥、所述第一随机数、所述第一部分签名以及所述中间签名进行模运算,生成所述第二部分签名;
所述第二公式,具体为:
s=[(hd1)-1×(k1+s1)-r]mod n
其中,s为所述第二部分签名,(hd1)-1为所述第一子私钥hd1在有限素域Fq上的逆元,k1为所述第一随机数,且k1∈[1,n-1]范围内的整数,s1为所述中间签名,r为所述第一部分签名,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,mod表示求模运算。
可选的,所述装置还包括第四生成单元,用于:
将所述第一参与方的第一子公钥发送给所述第二参与方;
采用第三公式对所述第一子私钥、所述第二子公钥及所述指定椭圆曲线的基点进行运算,获得所述第一参与方与所述第二参与方的共同公钥;
所述第三公式,具体为:
PA=hd1[*]P2[-]G
其中,PA为所述共同公钥,hd1为所述第一子私钥,且hd1∈[1,n-1]范围内的整数,P2为所述第二子公钥,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
基于同一发明构思,本申请实施例提供一种基于SM2的协同签名计算装置,应用于第二参与方,该装置的协同签名计算方法的具体实施方式可参见第二参与方的方法实施例部分的描述,重复之处不再赘述,请参见图4,该装置包括:
第一处理单元401,将所述第二参与方的第二子公钥发送给第一参与方,并接收所述第一参与方发送的椭圆曲线第一随机点,其中,所述椭圆曲线第一随机点为所述第一参与方根据选取的第一随机数确定的指定椭圆曲线的加法群上的一个元素;
第一生成单元402,用于采用第二算法生成第二随机数;
第二生成单元403,用于根据所述第二随机数、所述指定椭圆曲线的基点及所述椭圆曲线第一随机点,生成所述指定椭圆曲线上的椭圆曲线第二随机点;
第三生成单元404,用于对待签名消息进行哈希计算,获得待签名消息的消息摘要;
第四生成单元405,用于根据所述消息摘要以及所述椭圆曲线第二随机点的横坐标,生成所述待签名消息的第一部分签名;
第五生成单元406,用于根据所述第二子私钥、所述第二随机数及所述第一部分签名,生成所述待签名消息的中间签名,其中,所述中间签名为所述第二参与方所持有的第二子私钥被混淆后的值;
第二处理单元407,用于将所述第一部分签名以及所述中间签名发送给所述第一参与方。
可选的,所述第二生成单元403,具体用于:
采用第五公式对所述第二随机数、所述指定椭圆曲线的基点及所述椭圆曲线第一随机点进行点乘运算,生成所述指定椭圆曲线上的椭圆曲线第二随机点;所述第五公式用于将所述椭圆曲线第二随机点约束在所述指定椭圆曲线的加法群上;
所述第五公式,具体为:
Q2=(x2,y2)=k2[*]G[+]Q1
其中,Q2为所述椭圆曲线第二随机点,x2和y2分别为所述椭圆曲线第二随机点的横纵坐标,k2为所述第二随机数,且k2∈[1,n-1]范围内的整数,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,Q1为所述椭圆曲线第一随机点,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算。
可选的,所述第四生成单元405,具体用于:
采用第六公式对所述消息摘要、所述椭圆曲线第二随机点的横坐标进行模运算,生成所述第一部分签名;
所述第六公式,具体为:
r=(x2+e)mod n
其中,r为所述第一部分签名,x2为所述椭圆曲线第二随机点的横坐标,e为所述摘要消息转换而成的整数,n为所述基点G的阶,mod表示求模运算。
可选的,所述第五生成单元406,具体用于:
采用第七公式对所述第二子私钥、所述第二随机数及所述第一部分签名进行模运算,获得所述中间签名,其中,所述中间签名为所述第二参与方所持有的第二子私钥被混淆后的值;
所述第七公式,具体为:
s1=[(hd2)-1×(k2+r)]mod n
其中,s1为所述中间签名,(hd2)-1为所述第二子私钥hd2在有限素域Fq上的逆元,k2为所述第二随机数,且k2∈[1,n-1]范围内的整数,r为所述第一部分签名,n为所述基点G的阶,mod表示求模运算。
可选的,所述装置还包括第六生成单元,用于:
接收所述第一参与方发送的所述第一参与方的第一子公钥;
采用第八公式对所述第二子私钥、所述第一子公钥及所述指定椭圆曲线的基点进行运算,获得所述第一参与方与所述第二参与方的共同公钥。
所述第八公式,具体为:
PA=hd2[*]P1[-]G
其中,PA为所述共同公钥,hd2为所述第二子私钥,且hd2∈[1,n-1]范围内的整数,P1为所述第一子公钥,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
基于同一发明构思,本申请实施例中提供了一种基于SM2的协同签名计算装置,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如上所述的第一参与方与第二参与方进行协同签名计算的方法包括的步骤。
基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的基于SM2的协同签名计算方法的步骤。
在一些可能的实施方式中,本申请提供的基于SM2的协同签名计算方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在第一参与方或者第二参与方上运行时,程序代码用于第一参与方或者第二参与方执行本说明书上述描述的根据本申请各种示例性实施方式的基于SM2的协同签名计算方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (13)

1.一种基于SM2的协同签名计算方法,应用于第一参与方,其特征在于,包括:
接收第二参与方发送的所述第二参与方的第二子公钥;
采用第一算法生成第一随机数;
根据所述第一随机数以及所述第二子公钥,生成椭圆曲线第一随机点,其中,所述椭圆曲线第一随机点为指定椭圆曲线的加法群上的一个元素;
将所述椭圆曲线第一随机点发送给所述第二参与方,并接收所述第二参与方发送的根据所述椭圆曲线第一随机点生成的待签名消息的第一部分签名以及中间签名,其中,所述中间签名为所述第二参与方的第二子私钥被混淆后的值;
根据所述第一参与方的第一子私钥、所述第一随机数、所述第一部分签名以及所述中间签名,生成所述待签名消息的第二部分签名,以确定由所述第一部分签名及所述第二部分签名构成的所述待签名消息的完整签名。
2.如权利要求1所述的方法,其特征在于,根据所述第一随机数以及所述第二子公钥,生成椭圆曲线第一随机点,包括:
采用第一公式对所述第一随机数以及所述第二子公钥进行点乘运算,生成所述椭圆曲线第一随机点;所述第一公式用于将所述椭圆曲线第一随机点约束在所述指定椭圆曲线的加法群上;
所述第一公式,具体为:
Q1=(x1,y1)=k1[*]P2
其中,Q1为所述椭圆曲线第一随机点,x1和y1分别为所述椭圆曲线第一随机点的横纵坐标,k1为所述第一随机数,且k1∈[1,n-1]范围内的整数,P2为所述第二子公钥,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,[*]表示椭圆曲线点乘运算。
3.如权利要求1所述的方法,其特征在于,根据所述第一参与方的第一子私钥、所述第一随机数、所述第一部分签名以及所述中间签名,生成所述待签名消息的第二部分签名,包括:
采用第二公式对所述第一子私钥、所述第一随机数、所述第一部分签名以及所述中间签名进行模运算,生成所述第二部分签名;
所述第二公式,具体为:
s=[(hd1)-1×(k1+s1)-r]mod n
其中,s为所述第二部分签名,(hd1)-1为所述第一子私钥hd1在有限素域Fq上的逆元,k1为所述第一随机数,且k1∈[1,n-1]范围内的整数,s1为所述中间签名,r为所述第一部分签名,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,mod表示求模运算。
4.如权利要求1所述的方法,其特征在于,接收第二参与方发送的所述第二参与方的第二子公钥之后,还包括:
将所述第一参与方的第一子公钥发送给所述第二参与方;
采用第三公式对所述第一子私钥、所述第二子公钥及所述指定椭圆曲线的基点进行运算,获得所述第一参与方与所述第二参与方的共同公钥;
所述第三公式,具体为:
PA=hd1[*]P2[-]G
其中,PA为所述共同公钥,hd1为所述第一子私钥,且hd1∈[1,n-1]范围内的整数,P2为所述第二子公钥,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
5.一种基于SM2的协同签名计算方法,应用于第二参与方,其特征在于,包括:
将所述第二参与方的第二子公钥发送给第一参与方,并接收所述第一参与方发送的椭圆曲线第一随机点,其中,所述椭圆曲线第一随机点为所述第一参与方根据选取的第一随机数确定的指定椭圆曲线的加法群上的一个元素;
采用第二算法生成第二随机数;
根据所述第二随机数、所述指定椭圆曲线的基点及所述椭圆曲线第一随机点,生成所述指定椭圆曲线上的椭圆曲线第二随机点;
对待签名消息进行哈希计算,获得待签名消息的消息摘要;
根据所述消息摘要以及所述椭圆曲线第二随机点的横坐标,生成所述待签名消息的第一部分签名;
根据所述第二子私钥、所述第二随机数及所述第一部分签名,生成所述待签名消息的中间签名,其中,所述中间签名为所述第二参与方所持有的第二子私钥被混淆后的值;
将所述第一部分签名以及所述中间签名发送给所述第一参与方。
6.如权利要求5所述的方法,其特征在于,根据所述第二随机数、所述指定椭圆曲线的基点及所述椭圆曲线第一随机点,生成所述指定椭圆曲线上的椭圆曲线第二随机点,包括:
采用第五公式对所述第二随机数、所述指定椭圆曲线的基点及所述椭圆曲线第一随机点进行点乘运算,生成所述指定椭圆曲线上的椭圆曲线第二随机点;所述第五公式用于将所述椭圆曲线第二随机点约束在所述指定椭圆曲线的加法群上;
所述第五公式,具体为:
Q2=(x2,y2)=k2[*]G[+]Q1
其中,Q2为所述椭圆曲线第二随机点,x2和y2分别为所述椭圆曲线第二随机点的横纵坐标,k2为所述第二随机数,且k2∈[1,n-1]范围内的整数,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,Q1为所述椭圆曲线第一随机点,[*]表示椭圆曲线点乘运算,[+]表示椭圆曲线点加运算。
7.如权利要求5所述的方法,其特征在于,根据所述消息摘要以及所述椭圆曲线第二随机点的横坐标,生成所述待签名消息的第一部分签名,包括:
采用第六公式对所述消息摘要、所述椭圆曲线第二随机点的横坐标进行模运算,生成所述第一部分签名;
所述第六公式,具体为:
r=(x2+e)mod n
其中,r为所述第一部分签名,x2为所述椭圆曲线第二随机点的横坐标,e为所述摘要消息转换而成的整数,n为所述基点G的阶,mod表示求模运算。
8.如权利要求5所述的方法,其特征在于,根据所述第二子私钥、所述第二随机数及所述第一部分签名,生成所述待签名消息的中间签名,包括:
采用第七公式对所述第二子私钥、所述第二随机数及所述第一部分签名进行模运算,获得所述中间签名,其中,所述中间签名为所述第二参与方所持有的第二子私钥被混淆后的值;
所述第七公式,具体为:
s1=[(hd2)-1×(k2+r)]mod n
其中,s1为所述中间签名,(hd2)-1为所述第二子私钥hd2在有限素域Fq上的逆元,k2为所述第二随机数,且k2∈[1,n-1]范围内的整数,r为所述第一部分签名,n为所述基点G的阶,mod表示求模运算。
9.如权利要求5所述的方法,其特征在于,将所述第二参与方的第二子公钥发送给第一参与方之后,还包括:
接收所述第一参与方发送的所述第一参与方的第一子公钥;
采用第八公式对所述第二子私钥、所述第一子公钥及所述指定椭圆曲线的基点进行运算,获得所述第一参与方与所述第二参与方的共同公钥;
所述第八公式,具体为:
PA=hd2[*]P1[-]G
其中,PA为所述共同公钥,hd2为所述第二子私钥,且hd2∈[1,n-1]范围内的整数,P1为所述第一子公钥,所述指定椭圆曲线E(Fq)定义在有限素域Fq上,G为所述指定椭圆曲线E(Fq)的基点,n为所述基点G的阶,[*]表示椭圆曲线点乘运算,[-]表示椭圆曲线点减运算。
10.一种基于SM2的协同签名计算装置,应用于第一参与方,其特征在于,包括:
接收单元,用于接收第二参与方发送的所述第二参与方的第二子公钥;
第一生成单元,用于采用第一算法生成第一随机数;
第二生成单元,用于根据所述第一随机数以及所述第二子公钥,生成椭圆曲线第一随机点,其中,所述椭圆曲线第一随机点为指定椭圆曲线的加法群上的一个元素;
处理单元,用于将所述椭圆曲线第一随机点发送给所述第二参与方,并接收所述第二参与方发送的根据所述椭圆曲线第一随机点生成的待签名消息的第一部分签名以及中间签名,其中,所述中间签名为所述第二参与方的第二子私钥被混淆后的值;
第三生成单元,用于根据所述第一参与方的第一子私钥、所述第一随机数、所述第一部分签名以及所述中间签名,生成所述待签名消息的第二部分签名,以确定由所述第一部分签名及所述第二部分签名构成的所述待签名消息的完整签名。
11.一种基于SM2的协同签名计算装置,应用于第二参与方,其特征在于,包括:
第一处理单元,将所述第二参与方的第二子公钥发送给第一参与方,并接收所述第一参与方发送的椭圆曲线第一随机点,其中,所述椭圆曲线第一随机点为所述第一参与方根据选取的第一随机数确定的指定椭圆曲线的加法群上的一个元素;
第一生成单元,用于采用第二算法生成第二随机数;
第二生成单元,用于根据所述第二随机数、所述指定椭圆曲线的基点及所述椭圆曲线第一随机点,生成所述指定椭圆曲线上的椭圆曲线第二随机点;
第三生成单元,用于对待签名消息进行哈希计算,获得待签名消息的消息摘要;
第四生成单元,用于根据所述消息摘要以及所述椭圆曲线第二随机点的横坐标,生成所述待签名消息的第一部分签名;
第五生成单元,用于根据所述第二子私钥、所述第二随机数及所述第一部分签名,生成所述待签名消息的中间签名,其中,所述中间签名为所述第二参与方所持有的第二子私钥被混淆后的值;
第二处理单元,用于将所述第一部分签名以及所述中间签名发送给所述第一参与方。
12.一种基于SM2的协同签名计算装置,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-9任一项所述的方法包括的步骤。
13.一种存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1-9任一项所述的方法包括的步骤。
CN201910949318.7A 2019-10-08 2019-10-08 一种基于sm2的协同签名计算方法及装置 Pending CN112632630A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910949318.7A CN112632630A (zh) 2019-10-08 2019-10-08 一种基于sm2的协同签名计算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910949318.7A CN112632630A (zh) 2019-10-08 2019-10-08 一种基于sm2的协同签名计算方法及装置

Publications (1)

Publication Number Publication Date
CN112632630A true CN112632630A (zh) 2021-04-09

Family

ID=75283024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910949318.7A Pending CN112632630A (zh) 2019-10-08 2019-10-08 一种基于sm2的协同签名计算方法及装置

Country Status (1)

Country Link
CN (1) CN112632630A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113259095A (zh) * 2021-04-27 2021-08-13 博雅中科(北京)信息技术有限公司 协同公钥生成方法、多方协同签名方法和系统
CN113343259A (zh) * 2021-06-17 2021-09-03 北京宏思电子技术有限责任公司 基于sm2的联合签名实现方法、装置、电子设备及存储介质
CN114567448A (zh) * 2022-04-29 2022-05-31 华南师范大学 一种协同签名方法以及协同签名系统
CN115314205A (zh) * 2022-10-11 2022-11-08 中安网脉(北京)技术股份有限公司 一种基于密钥分割的协同签名系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统
CN109245903A (zh) * 2018-09-29 2019-01-18 北京信安世纪科技股份有限公司 双方协同生成sm2算法的签名方法、装置及存储介质
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾系统
CN109309569A (zh) * 2018-09-29 2019-02-05 北京信安世纪科技股份有限公司 基于sm2算法的协同签名的方法、装置及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107196763A (zh) * 2017-07-06 2017-09-22 数安时代科技股份有限公司 Sm2算法协同签名及解密方法、装置与系统
CN109245903A (zh) * 2018-09-29 2019-01-18 北京信安世纪科技股份有限公司 双方协同生成sm2算法的签名方法、装置及存储介质
CN109309569A (zh) * 2018-09-29 2019-02-05 北京信安世纪科技股份有限公司 基于sm2算法的协同签名的方法、装置及存储介质
CN109274503A (zh) * 2018-11-05 2019-01-25 北京仁信证科技有限公司 分布式协同签名方法及分布式协同签名装置、软盾系统

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113259095A (zh) * 2021-04-27 2021-08-13 博雅中科(北京)信息技术有限公司 协同公钥生成方法、多方协同签名方法和系统
CN113259095B (zh) * 2021-04-27 2022-12-20 博雅中科(北京)信息技术有限公司 协同公钥生成方法、多方协同签名方法和系统
CN113343259A (zh) * 2021-06-17 2021-09-03 北京宏思电子技术有限责任公司 基于sm2的联合签名实现方法、装置、电子设备及存储介质
CN113343259B (zh) * 2021-06-17 2023-09-29 北京宏思电子技术有限责任公司 基于sm2的联合签名实现方法、装置、电子设备及存储介质
CN114567448A (zh) * 2022-04-29 2022-05-31 华南师范大学 一种协同签名方法以及协同签名系统
CN114567448B (zh) * 2022-04-29 2022-08-02 华南师范大学 一种协同签名方法以及协同签名系统
CN115314205A (zh) * 2022-10-11 2022-11-08 中安网脉(北京)技术股份有限公司 一种基于密钥分割的协同签名系统及方法
CN115314205B (zh) * 2022-10-11 2023-01-03 中安网脉(北京)技术股份有限公司 一种基于密钥分割的协同签名系统及方法

Similar Documents

Publication Publication Date Title
CN109309569B (zh) 基于sm2算法的协同签名的方法、装置及存储介质
CN108667626B (zh) 安全的两方协作sm2签名方法
CN107634836B (zh) 一种sm2数字签名生成方法及系统
CN107579819B (zh) 一种sm9数字签名生成方法及系统
CN109245903B (zh) 双方协同生成sm2算法的签名方法、装置及存储介质
CN107707358B (zh) 一种ec-kcdsa数字签名生成方法及系统
CN107196926B (zh) 一种云外包隐私集合比较方法与装置
CN108199835B (zh) 一种多方联合私钥解密方法
CN112632630A (zh) 一种基于sm2的协同签名计算方法及装置
CN111563261A (zh) 一种基于可信执行环境的隐私保护多方计算方法和系统
CN101296075B (zh) 一种基于椭圆曲线的身份认证系统
CN107682151B (zh) 一种gost数字签名生成方法及系统
CN109767218B (zh) 区块链证书处理方法及系统
CN109936456B (zh) 基于私钥池的抗量子计算数字签名方法和系统
CN107425971B (zh) 无证书的数据加/解密方法和装置、终端
CN108833095B (zh) 区块链中的行为验证方法、节点、系统及电子设备
CN109921905B (zh) 基于私钥池的抗量子计算密钥协商方法和系统
CN109787758B (zh) 基于私钥池和Elgamal的抗量子计算MQV密钥协商方法和系统
CN109905229B (zh) 基于群组非对称密钥池的抗量子计算Elgamal加解密方法和系统
CN113676333A (zh) 一种两方协作生成sm2盲签名方法
CN103297230B (zh) 信息加解密方法、装置及系统
CN115396115B (zh) 区块链数据隐私保护方法、装置、设备及可读存储介质
US10530581B2 (en) Authenticated broadcast encryption
CN114726546A (zh) 数字身份认证方法、装置、设备和存储介质
CN111478911A (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