一种基于ECDSA算法的双方协同签名方法与系统与流程

文档序号:33645268发布日期:2023-03-29 03:29阅读:84来源:国知局
一种基于ECDSA算法的双方协同签名方法与系统与流程
一种基于ecdsa算法的双方协同签名方法与系统
技术领域
1.本发明涉及信息安全和密码学应用技术领域,具体涉及一种基于ecdsa算法的通信双方协同签名方法与系统。


背景技术:

2.应用公钥密码体制可以保证数字签名的不可伪造性和不可抵赖性。公钥密码体制需要保证私钥的安全,往往需要配备专门的密码硬件以安全存储和使用用户的私钥。但是,在车联网、智能家居等物联网应用以及云计算系统中,存在有大量未配置硬件密码模块的设备,需要应用公钥密码保证信息系统安全。在引入软件密码模块应对此类设备需求时,需要特别注意私钥的安全,防止私钥泄漏。
3.椭圆曲线数字签名算法(ecdsa)是使用椭圆曲线公钥密码对数字签名算法(dsa)的模拟。针对ecdsa算法软件密码模块私钥安全性问题,现有技术中已有少数协同签名方案,将私钥分拆分存,当需要使用私钥进行签名时,各分存方分别使用自己的子私钥进行密码运算,以及相互交互部分运算结果,最后得到的密码运算结果等同于直接使用私钥进行数字签名的结果。
4.但是,由于ecdsa算法的特性,现有技术中的协同签名方案仍存在较大的安全风险,攻击者在多次截获协同签名过程中通信双方交换的信息的情况下,容易找到关于私钥分量的互不相关的方程,并通过解私钥分量方程组计算出部分私钥分量,从而威胁ecdsa算法的安全性。


技术实现要素:

5.本发明的目的是针对ecdsa算法软件密码模块安全保密的需求,提供具有更高安全性能的双方协同签名方法与系统,进一步提高ecdsa算法软件密码模块的私钥安全性。
6.为了实现上述目的,本发明技术方案提供一种基于ecdsa算法的双方协同签名方法,所述方法涉及第一通信方和第二通信方,所述第一通信方和所述第二通信方共享ecdsa算法椭圆曲线e及e上阶为n的基点g;所述方法包括协同生成公钥阶段和协同签名阶段;其中,所述协同生成公钥阶段包括:s101、所述第一通信方产生随机数d1∈[1,n-1],把d1作为所述第一通信方的子私钥,根据d1和基点g计算得到第一部分公钥p
1 = [d1]g,并将p1发送给所述第二通信方;s102、所述第二通信方产生随机数d2、d3∈[1,n-1],把d2、d3作为所述第二通信方的子私钥,根据d2、d3、p1和基点g计算得到公钥p,并公开p;所述协同签名阶段包括:s201、所述第一通信方对待签名消息m使用预定的杂凑函数,得到消息摘要e;s202、所述第一通信方产生随机数k1∈[1,n-1],根据k1和基点g生成第一部分签名q = [k1]g,并将e、q发送给所述第二通信方;s203、所述第二通信方产生随机数k2、k3∈[1,n-1],根据k2、k3、d3和接收到的q计算
椭圆曲线点w ,w的坐标为(x1,y1),然后根据w计算得到第二部分签名r = x
1 mod n,并在r=0时返回步骤s202;s204、所述第二通信方基于接收到的e和r、k2、k3、d2、d3分别生成第三部分签名s1和第四部分签名s
2 ,并将r、s1、s2发送给所述第一通信方;s205、所述第一通信方根据d1、k1和接收到的s1、s2计算s= k
1-1 * (s
1 + d
1 * s2) mod n,并在s=0时返回步骤s202;s206、第一通信方输出完整的签名(r,s)和消息m;其中,mod n表示模n运算,*表示数值乘法,以[k]g的形式表示椭圆曲线e上点g的k倍点,以k-1
的形式表示k的逆元k-1 mod n,k是正整数。
[0007]
基于上述,所述协同签名阶段还可以为:s201、所述第一通信方对待签名消息m使用预定的杂凑函数,得到消息摘要e;s202、所述第一通信方产生随机数k1∈[1,n-1],根据k1和基点g生成第一部分签名q = [k1]g,并将e、q发送给所述第二通信方;s203、所述第二通信方产生随机数k2∈[1,n-1],根据k2、d3和接收到的q计算椭圆曲线点w ,w的坐标为(x1,y1),然后根据w计算得到第二部分签名r = x
1 mod n,并在r=0时返回步骤s202;s204、所述第二通信方基于接收到的e和k2、d2、d3、r分别生成第三部分签名s1和第四部分签名s
2 ,并将r、s1、s2发送给所述第一通信方;s205、所述第一通信方根据d1、k1和接收到的s1、s2计算s= k
1-1 * (s
1 + d
1 * s2) mod n,并在s=0时返回步骤s202;s206、第一通信方输出完整的签名(r,s)和消息m。
[0008]
本发明还提供一种基于ecdsa算法的双方协同签名系统,包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享ecdsa算法椭圆曲线e和e上阶为n的基点g;所述第一通信方和所述第二通信方协同生成公钥,并在需要签名时进行协同签名;所述协同签名阶段包括:所述第一通信方通过所述第一密码运算模块产生随机数d1∈[1,n-1],把d1作为所述第一通信方的子私钥,根据d1和基点g计算得到第一部分公钥p1=[d1]g;再通过所述第一通信模块把p1发送给所述第二通信方;所述第二通信方通过第二通信模块接收p1,通过所述第二密码运算模块产生随机数d2、d3∈[1,n-1],把d2、d3作为所述第二通信方的子私钥,然后根据d2、d3、p1和基点g计算得到公钥p,并通过第二通信模块公开公钥p;所述协同签名阶段包括:所述第一通信方通过所述第一密码运算模块对待签名消息m使用预定的杂凑函数,得到消息摘要e;产生随机数k1∈[1,n-1],根据k1和g生成第一部分签名q = [k1]g,并通过第一通信模块将e、q发送给所述第二通信方;所述第二通信方通过第二通信模块接收e、q,通过所述第二密码运算模块,产生随
机数k2、k3∈[1,n-1],根据k2、k3、d3和接收到的q计算椭圆曲线点w,w的坐标为(x1,y1),然后根据w计算得到第二部分签名r = x
1 mod n;若r=0则重新开始协同签名过程;若r≠0则基于接收到的e和r、d2、d3分别生成第三部分签名s1和第四部分签名s2,并通过第二通信模块将r、s1、s2发送给所述第一通信方;所述第一通信方通过第一通信模块接收r、s1、s2,通过第一密码运算模块根据d1和接收到的s1、s2计算s= k
1-1 * (s
1 + d
1 * s2) mod n;若s=0则重新开始协同签名过程,若s≠0则第一通信方输出完整的签名(r,s)和消息m;其中,mod n表示模n运算,*表示数值乘法,以[k]g的形式表示椭圆曲线e上点g的k倍点,以k-1
的形式表示k的逆元k-1 mod n,k是正整数。
[0009]
基于上述,所述协同签名阶段还可以为:所述第一通信方通过所述第一密码运算模块对待签名消息m使用预定的杂凑函数,得到消息摘要e;产生随机数k1∈[1,n-1],根据k1和g生成第一部分签名q = [k1]g,并通过第一通信模块将e、q发送给所述第二通信方;所述第二通信方通过第二通信模块接收e、q,通过所述第二密码运算模块,产生随机数k2∈[1,n-1],根据k2、d3和接收到的q计算椭圆曲线点w,w的坐标为(x1,y1),然后根据w计算得到第二部分签名r = x
1 mod n;若r=0则重新开始协同签名过程;若r≠0则基于接收到的e和r、d2、d3分别生成第三部分签名s1和第四部分签名s2,并通过第二通信模块将r、s1、s2发送给所述第一通信方;所述第一通信方通过第一通信模块接收r、s1、s2,通过第一密码运算模块根据d1和接收到的s1、s2计算s= k
1-1 * (s
1 + d
1 * s2) mod n;若s=0则重新开始协同签名过程,若s≠0则第一通信方输出完整的签名(r,s)和消息m。
[0010]
本发明相对现有技术具有突出的实质性特点和显著的进步,具体地说:1.本发明技术方案中通信双方分别产生各自的子私钥和部分公钥,由其中一方根据己方子私钥和双方的部分公钥计算出完整的公钥并公布,通过私钥拆分分存并协同生成公钥的算法设计保证了私钥的安全性,在不依赖于密码硬件的软件密码模块中使用,可以达到增强用户数据安全保密性的效果。
[0011]
2. 本发明技术方案中在双方协同签名时,需要通过交换各自产生的多个签名分量,最终计算出完整的签名和消息,由于需要通信双方协同才可以完成,从而增强协同签名的安全性和不可伪造性。
[0012]
3.本发明技术方案在协同签名过程,在对应于标准ecdsa签名算法的k值的计算中也引入了私钥的分量,该私钥分量的存在使在协同签名过程中通信双方交换的信息中也存在有难以约简和推算的项,从而避免了攻击者通过多次截获双方交换信息推算私钥分量的风险,使密钥的安全性进一步增强,保证了签名算法的安全。
附图说明
[0013]
图1是根据本发明实施例1的流程示意图。
[0014]
图2是根据本发明实施例2的流程示意图。
[0015]
图3是根据本发明实施例3的流程示意图。
[0016]
图4是根据本发明实施例4的流程示意图。
[0017]
图5是根据本发明实施例5的流程示意图。
[0018]
图6是根据本发明实施例6的流程示意图。
具体实施方式
[0019]
本发明中,以[k]g的形式表示椭圆曲线e上的点乘运算,[k]g代表点g的k倍点,k是正整数;mod n表示模n运算;以k-1
的形式表示k的逆元k-1
mod n;*表示数值乘法;对于椭圆曲线点加/减运算,以及数值的加/减法运算,使用的符号都是加号“+”/减号
“‑”
,如果是椭圆曲线点相加/减,则“+
”ꢀ
/
“‑”
表示点加/减运算,如果是数值相加/减,则“+
”ꢀ
/
“‑”
表示数值的加/减法运算。
[0020]
实施例1本实施例提供了一种基于ecdsa算法的通信双方协同签名方法,如图1所示,所述方法涉及第一通信方和第二通信方,所述第一通信方和所述第二通信方共享ecdsa算法椭圆曲线e及e上阶为n的基点g;所述方法包括协同生成公钥阶段和协同签名阶段,其特征在于:所述协同生成公钥阶段包括:s101、所述第一通信方产生随机数d1∈[1,n-1],把d1作为所述第一通信方的子私钥,根据d1和基点g计算得到第一部分公钥p
1 = [d1]g,并将p1发送给所述第二通信方;s102、所述第二通信方产生随机数d2、d3∈[1,n-1],把d2、d3作为所述第二通信方的子私钥,根据d2、d3、p1和基点g计算得到公钥p,并公开p;所述协同签名阶段包括:s201、所述第一通信方对待签名消息m使用预定的杂凑函数,得到消息摘要e;s202、所述第一通信方产生随机数k1∈[1,n-1],根据k1和基点g生成第一部分签名q = [k1]g,并将e、q发送给所述第二通信方;s203、所述第二通信方产生随机数k2、k3∈[1,n-1],根据k2、k3、d3和接收到的q计算椭圆曲线点w ,w的坐标为(x1,y1),然后根据w计算得到第二部分签名r = x
1 mod n,并在r=0时返回步骤s202;s204、所述第二通信方基于接收到的e和r、k2、k3、d2、d3分别生成第三部分签名s1和第四部分签名s
2 ,并将r、s1、s2发送给所述第一通信方;s205、所述第一通信方根据d1、k1和接收到的s1、s2计算s= k
1-1 * (s
1 + d
1 * s2) mod n,并在s=0时返回步骤s202;s206、第一通信方输出完整的签名(r,s)和消息m;其中,mod n表示模n运算,*表示数值乘法,以[k]g的形式表示椭圆曲线e上点g的k倍点,以k-1
的形式表示k的逆元k-1 mod n,k是正整数。
[0021]
本实施例中,所述第一通信方产生的随机数d1、k1分别由一个或多个位于[1,n-1]之间的随机数运算得到,和/或所述第二通信方产生的随机数d2、d3、k2、k3分别由一个或多个位于[1,n-1]之间的随机数运算得到;所述运算包括线性运算、相乘、求逆。
[0022]
本实施例中,步骤s205中所述的第一通信方根据d1、k1和接收到的s1、s2计算出的s可化简为s= k-1 * (e + d * r) mod n的形式,其中d由d1、d2、d3经过线性运算和/或相乘和/或求逆运算得到,k中含有k1、d2和/或d3项。
[0023]
在生成双方子私钥和计算公钥阶段,第一部分公钥p1虽然需要经过传输,但基于椭圆曲线离散对数难题的存在,无法通过p1推算出任何和私钥有关的数据,因此可以确保私钥是安全的。
[0024]
在协同签名过程中,公开数据q、s1、s2也需要经过传输,但是基于椭圆曲线离散对数难题的存在,无法通过q推算出任何和私钥有关的数据。而且由于算法中对应于k值的计算中也引入了私钥的分量,该私钥分量的存在以及其与其它变量之间复杂的运算关系,包括模逆等运算,使在协同签名过程中通信双方交换的信息中也存在有难以约简和推算的项,难以从s1和s2推算得到私钥分量,从而避免了攻击者通过多次双方交换信息推算私钥分量的风险,使密钥的安全性进一步增强,保证了签名算法的安全。
[0025]
实施例2本实施例是实施例1的一个具体实施方式,其中如图2所示,步骤s102中,所述第二通信方根据d2、d3和接收到的p1计算得到的公钥p = [d2]g + [d
3-1 ]p1;步骤s203中,所述第二通信方根据k2、k3、d3和接收到的q计算得到的椭圆曲线点w = [k
3-1*
(k
2 + d3) ‑1]q;s204中,所述第二通信方根据e和r、k2、k3、d2、d3分别计算得到的第三部分签名s
1 = k3*( k
2 + d
3 ) *( e + r *d2)mod n,第四部分签名s
2 = (k3*d3ꢀ‑1* k
2 *r+ k3* r) mod n。
[0026]
协同签名正确性证明如下:由完整的公钥p = [d2]g + [d
3-1 ]p
1 = [d
2 + d1* d
3-1 ]g可知,ecdsa算法中的私钥d与子私钥d1、d2、d3的关系为:d = (d
2 + d
1 *d
3-1
) mod n

[0027]
令k = k
1 * k
3-1 *(k
2 + d3)
ꢀ‑1mod n,协同签名过程中q = [k1]g,w = [k
3-1*
(k
2 + d3) ‑1]q,其坐标为(x1,y1),r = x
1 mod n;s
1 = k3*( k
2 + d
3 ) * ( e + r *d2)mod n,s
2 = (k3*d3ꢀ‑1* k
2 *r+ k3* r) mod n,因此s = k
1-1 * (s
1 + d
1 * s2) mod n= k
1-1
* (k3* ( k
2 + d
3 ) * ( e + r *d2)+ d
1 * r * (k3*d
3-1
*k
2 +k3)) mod n= k
1-1
* (k
3 * ( k
2 + d
3 ) * ( e + r *d2)+ d
1 * r * k3* (d
3-1
*k
2 +1)) mod n= k
1-1
*k3* (( k
2 + d
3 ) * ( e + r *d2) + d
1 * r *d3ꢀ‑
1 *(k
2 +d3)) mod n= k
1-1
* k3*(k
2 + d3) * ( e + r *d
2 + d
1 * r *d3ꢀ‑1) mod n= (k
1-1
* k3*(k
2 + d3)) *( e + (d
2 + d
1 *d3ꢀ‑1)* r ) mod n = k-1 * (e + d*r) mod n由此可见,上述协同签名算法可以正确签名。
[0028]
在协同签名过程中,通过对于s1、s2的结构化设计,在对应于标准ecdsa算法中的随机数k中引入了私钥分量d3,从s
1 = k3*( k
2 + d
3 ) * ( e + r *d2)mod n,s
2 = (k3*d3ꢀ‑1* k
2 *r+ k3* r) mod n可以看出,由于计算的复杂性,难以从s1和s2推算得到私钥相关的数据,保证了协同签名过程安全性。攻击者无法从传输的数据中推算对方的子私钥,无法计算得到私钥,从而保证ecdsa算法具有更高的安全性。
[0029]
实施例3本实施例是实施例1的另一个具体实施方式,其中,如图3所示,步骤s102中,所述
mod n,并在s=0时返回步骤s202;s206、第一通信方输出完整的签名(r,s)和消息m。
[0034]
本实施例中,随机数d1、d2、d3、k1、k2分别由一个或多个位于[1,n-1]之间的随机数运算得到;所述运算包括线性运算、相乘、求逆。
[0035]
本实施例中,步骤s205中所述的第一通信方同样根据d1、k1和接收到的s1、s2计算出的s可化简为s= k-1 * (e + d * r) mod n的形式,其中d由d1、d2、d3经过线性运算和/或相乘和/或求逆运算得到,k中含有k1、d2和/或d3项。
[0036]
实施例5本实施例是实施例4的一个具体实施方式,其中如图5所示,步骤s102中,所述第二通信方根据d2、d3和接收到的p1计算得到的公钥p = [d2]p1+[ d2*d
3-1 ]g;步骤s203中,所述第二通信方根据k2、d3和接收到的q计算得到的椭圆曲线点w = [ (k
2 * d3) ‑1]q;步骤s204中,所述第二通信方根据e和k2、d2、d3、r分别计算得到的第三部分签名s
1 = k
2 * (d
3 *e + r *d
2 )mod n,第四部分签名s
2 = k
2 *d2*d3*r mod n。
[0037]
由p =[d2]p1+[ d2*d
3-1 ]g = [d1*d2]g+[ d2*d
3-1
]g = [d1*d
2 + d2*d
3-1 ]g可知,ecdsa算法中的私钥d与子私钥d1、d2、d3的关系为 d = (d1*d
2 + d2*d
3-1
) mod n。
[0038]
协同签名正确性证明如下:令k = k
1 * k
3-1 * d3ꢀ‑1mod n,协同签名过程中q = [k1]g,w = [(k
2 * d3) ‑1]q,其坐标为(x1,y1),r = x
1 mod n;s
1 =k
2 * (d
3 *e + r *d
2 )mod n,s
2 = k
2 *d2*d3*r mod n,因此s= k
1-1 * (s
1 + d
1 * s2) mod n= k
1-1
( k
2 *( d
3 *e + d
2 * r ) + d
1 * k2* d2*d3*r ) mod n= k
1-1 (k
2 * d
3 *e + k
2 *d
2 * r + d1* k2* d2*d3*r) mod n= k
1-1 *k
2 * d3* (e + d2*d
3-1
* r + d1* d
2 *r) mod n= (k
1-1 *k
2 * d
3 ) * (e + r*( d1* d
2 + d
2 *d
3-1 )) mod n= k-1
(e+ r*( d1* d
2 + d
2 *d
3-1 )) mod n= k-1 ( e + r *d ) mod n由此可见,上述协同签名算法可以正确签名。
[0039]
在协同签名过程中,通过对于s1、s2的结构化设计,在对应于标准ecdsa算法中的随机数k中引入了私钥分量d3。从s
1 =k
2 * (d
3 *e + r *d
2 )mod n,s
2 = k
2 *d2*d3*r mod n可以看出,由于计算的复杂性,难以从s1和s2推算得到私钥相关的数据,保证了协同签名过程安全性。攻击者无法从传输的数据中推算对方的子私钥,无法计算得到私钥,从而保证ecdsa算法具有更高的安全性。
[0040]
实施例6本实施例是实施例4的另一个具体实施方式,其中如图6所示,步骤s102中,所述第二通信方根据d2、d3和接收到的p1计算得到的公钥p = [ d2*d
3-1 ] p1;步骤s203中,所述第二通信方根据k2、d3和接收到的q计算得到的椭圆曲线点w = [ (k
2 * d
3 + d3) ‑1]q;
步骤s204中,所述第二通信方根据e和k2、d2、d3、r分别计算得到的第三部分签名s
1 = ( k
2 * d
3 *e + e *d
3 )mod n,第四部分签名s
2 = ( k
2 *d2*r +d2*r )mod n。。
[0041]
由p = [ d2*d
3-1 ] p
1 = [ d1*d2*d
3-1
]g 可知,ecdsa算法中的私钥d与子私钥d1、d2、d3的关系为 d = d1*d2*d
3-1 mod n。
[0042]
协同签名正确性证明如下:令k = k1*( k
2 * d3+*d3)-1
mod n,协同签名过程中q = [k1]g,w =[ (k
2 * d
3 + d3) ‑1]q,其坐标为(x1,y1),r = x
1 mod n;s
1 =( k
2 * d
3 *e + e *d
3 )mod n,s
2 = ( k
2 *d2*r +d2*r ) mod n,因此s= k
1-1 * (s
1 + d
1 * s2) mod n= k
1-1 * ( k2* d3*e + d
3 *e + d
1 * k
2 *d
2 * r + d
1 * d2*r) mod n= k
1-1 (e* (k2* d3+d3) + d
3-1
* d
1 *d
2 * r* ( k
2 *d
3 + d3)) mod n= k
1-1
* (k2* d3+d3) *(e + d
1 *d
2 *d
3-1 *r) mod n=k-1
(e + d
1 *d
2 *d
3-1 *r ) mod n= k-1 ( e + r *d ) mod n在协同签名过程中,通过对于s1、s2的结构化设计,在对应于标准ecdsa算法中的随机数k中引入了私钥分量d3。从s
1 =( k
2 * d
3 *e + e *d
3 )mod n,s
2 = ( k
2 *d2*r +d2*r ) mod n可以看出,由于计算的复杂性,难以从s1和s2推算得到私钥相关的数据,保证了协同签名过程安全性。攻击者无法从传输的数据中推算对方的子私钥,无法计算得到私钥,从而保证ecdsa算法具有更高的安全性。
[0043]
实施例7基于与上述方法同样的发明构思,本实施例中提供一种基于ecdsa算法的双方协同签名系统,包括第一通信方和第二通信方,所述第一通信方包括第一密码运算模块和第一通信模块,所述第二通信方包括第二密码运算模块和第二通信模块,所述第一通信方和所述第二通信方通过所述第一通信模块和所述第二通信模块通信连接;所述第一通信方和所述第二通信方共享ecdsa算法椭圆曲线e和e上阶为n的基点g;所述第一通信方和所述第二通信方协同生成公钥,并在需要签名时进行协同签名;所述协同签名阶段包括:所述第一通信方通过所述第一密码运算模块产生随机数d1∈[1,n-1],把d1作为所述第一通信方的子私钥,根据d1和基点g计算得到第一部分公钥p1=[d1]g;再通过所述第一通信模块把p1发送给所述第二通信方;所述第二通信方通过第二通信模块接收p1,通过所述第二密码运算模块产生随机数d2、d3∈[1,n-1],把d2、d3作为所述第二通信方的子私钥,然后根据d2、d3、p1和基点g计算得到公钥p,并通过第二通信模块公开公钥p;所述协同签名阶段包括:所述第一通信方通过所述第一密码运算模块对待签名消息m使用预定的杂凑函数,得到消息摘要e;产生随机数k1∈[1,n-1],根据k1和g生成第一部分签名q = [k1]g,并通过第一通信模块将e、q发送给所述第二通信方;所述第二通信方通过第二通信模块接收e、q,通过所述第二密码运算模块,产生随
机数k2、k3∈[1,n-1],根据k2、k3、d3和接收到的q计算椭圆曲线点w,w的坐标为(x1,y1),然后根据w计算得到第二部分签名r = x
1 mod n;若r=0则重新开始协同签名过程;若r≠0则基于接收到的e和r、d2、d3分别生成第三部分签名s1和第四部分签名s2,并通过第二通信模块将r、s1、s2发送给所述第一通信方;所述第一通信方通过第一通信模块接收r、s1、s2,通过第一密码运算模块根据d1和接收到的s1、s2计算s= k
1-1 * (s
1 + d
1 * s2) mod n;若s=0则重新开始协同签名过程,若s≠0则第一通信方输出完整的签名(r,s)和消息m;其中,mod n表示模n运算,*表示数值乘法,以[k]g的形式表示椭圆曲线e上点g的k倍点,以k-1
的形式表示k的逆元k-1 mod n,k是正整数。
[0044]
实施例8本实施例是实施例7的另一个具体实施方式,其中,所述协同签名阶段还可以为:所述第一通信方通过所述第一密码运算模块对待签名消息m使用预定的杂凑函数,得到消息摘要e;产生随机数k1∈[1,n-1],根据k1和g生成第一部分签名q = [k1]g,并通过第一通信模块将e、q发送给所述第二通信方;所述第二通信方通过第二通信模块接收e、q,通过所述第二密码运算模块,产生随机数k2∈[1,n-1],根据k2、d3和接收到的q计算椭圆曲线点w,w的坐标为(x1,y1),然后根据w计算得到第二部分签名r = x
1 mod n;若r=0则重新开始协同签名过程;若r≠0则基于接收到的e和r、d2、d3分别生成第三部分签名s1和第四部分签名s2,并通过第二通信模块将r、s1、s2发送给所述第一通信方;所述第一通信方通过第一通信模块接收r、s1、s2,通过第一密码运算模块根据d1和接收到的s1、s2计算s= k
1-1 * (s
1 + d
1 * s2) mod n;若s=0则重新开始协同签名过程,若s≠0则第一通信方输出完整的签名(r,s)和消息m。
[0045]
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1