基于变化因子的协作式数字签名的计算方法及装置

文档序号:31875931发布日期:2022-10-21 21:37阅读:27来源:国知局
基于变化因子的协作式数字签名的计算方法及装置

1.本公开涉及密码领域,更具体地,涉及一种基于变化因子的协作式数字签名的计算方法及装置、电子设备和计算机可读存储介质。


背景技术:

2.随着密码学技术的发展,在电子商务、身份认证等领域,基于公钥密码学的数字签名技术已经成为保障信息安全的重要工具。
3.可以将私钥拆分为多个子私钥,并分别存储在多方的独立设备中。在每一次数字签名操作中,均需要由多方协作、多个子私钥参加计算。此外,在上述协作式数字签名计算过程中,每一方都无法获取到其它各方的子私钥的信息、也无法获取到私钥整体的信息。最常见情况是2方协作的数字签名计算,由客户端和服务器分别掌握各自的子私钥,合作完成数字签名计算。密码行业标准sm2椭圆曲线公钥密码算法的数字签名算法,也有2方协作的数字签名计算方法。
4.但是,由于客户端的资源限制和成本限制,难以使用专用密码硬件设备来保护子私钥。因此,攻击者可以通过软件漏洞、网络攻击、数据复制等方法窃取客户端的子私钥。一旦攻击者窃取了客户端的子私钥,可以冒充客户端、与服务器进行协作计算,完成数字签名操作。此外,攻击者任何时候都可以与服务器进行协作计算、完成任意多次的数字签名操作。在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:攻击者可以通过软件漏洞、网络攻击、数据复制等方法窃取通信双方中一方的子私钥,并冒充该方与另一方通信,进行任意多次的数字签名操作,从而导致无法保障数字签名操作的安全性。


技术实现要素:

5.有鉴于此,本公开提供了一种基于变化因子的协作式数字签名的计算方法及装置、电子设备和计算机可读存储介质。
6.根据本公开的一个方面,提供了一种基于变化因子的协作式数字签名的计算方法,应用于第一通信方,包括:响应于原始待签名信息的计算操作完成,确定原始子私钥d1’和第一变化因子w1,其中,上述原始子私钥d1’用于对上述原始待签名信息进行计算;将上述第一变化因子w1发送给第二通信方;接收来自于第二通信方的第二变化因子w2;利用上述第一变化因子w1和上述第二变化因子w2,对上述原始子私钥d1’进行处理,得到当前子私钥d1;利用上述当前子私钥d1对当前待签名信息m进行计算,得到第一签名结果s1;将上述第一签名结果s1发送给上述第二通信方;接收来自于上述第二通信方的第二签名结果s2;以及利用上述当前子私钥d1、上述第一签名结果s1和上述第二签名结果s2对上述当前待签名信息m进行计算,得到签名结果s。
7.根据本公开的实施例,上述数字签名的计算方法基于椭圆曲线公钥密码算法。
8.上述响应于原始待签名信息的计算操作完成,确定原始子私钥d1’和第一变化因子w1包括:响应于原始待签名信息的计算操作完成,生成第一随机数k1,其中,上述第一随
机数k1属于(1,n-1),n表示椭圆曲线的阶;以及将上述第一随机数k1确定为上述第一变化因子w1;
9.上述利用上述第一变化因子w1和上述第二变化因子w2,对上述原始子私钥d1’进行处理,得到当前子私钥d1包括:根据上述第一变化因子w1、上述第二变化因子w2和上述原始子私钥d1’,计算v1,其中,v1=(d1’*w1-1
*w2)mod n,*表示整数乘法运算,mod n表示模n运算;以及将v1确定为上述当前子私钥d1。
10.根据本公开的实施例,上述响应于原始待签名信息的计算操作完成,确定原始子私钥d1’和第一变化因子w1包括:响应于原始待签名信息的计算操作完成,生成第一随机数k1,其中,上述第一随机数k1属于(1,n-1),n表示椭圆曲线的阶;以及将上述第一随机数k1确定为上述第一变化因子w1;
11.上述利用上述第一变化因子w1和上述第二变化因子w2,对上述原始子私钥d1’进行处理,得到当前子私钥d1包括:根据上述第一变化因子w1、上述第二变化因子w2和上述原始子私钥d1’,计算u1,其中,u1=(((d1’+1)*w1*w2-1
)-1)mod n,*表示整数乘法运算,mod n表示模n运算;以及将u1确定为上述当前子私钥d1。
12.根据本公开的实施例,上述响应于原始待签名信息的计算操作完成,确定原始子私钥d1’和第一变化因子w1包括:响应于原始待签名信息的计算操作完成,生成第一随机数k1,其中,上述第一随机数k1属于(1,n-1),n表示椭圆曲线的阶;以及将上述第一随机数k1确定为上述第一变化因子w1;
13.根据本公开的实施例,上述利用上述第一变化因子w1和上述第二变化因子w2,对上述原始子私钥d1’进行处理,得到当前子私钥d1包括:根据上述第一变化因子w1、上述第二变化因子w2和上述原始子私钥d1’,计算j1,其中,j1=(d1’+w1-w2)mod,*表示整数乘法运算,mod n表示模n运算;以及将j1确定为上述当前子私钥d1。
14.根据本公开的实施例,上述利用待签名信息和上述当前子私钥d1对当前待签名信息m进行计算,得到第一签名结果s1包括:生成第三随机数k3,其中,上述第三随机数k3属于(1,n-1),n表示椭圆曲线的阶;计算q1,其中,q1=[k3]g,g表示椭圆曲线的基点,[k3]g表示椭圆曲线的基点g的k3倍点运算;以及将q1确定为上述第一签名结果s1;
[0015]
根据本公开的实施例,上述利用上述当前子私钥d1、上述第一签名结果s1和上述第二签名结果s2对上述当前待签名信息m进行计算,得到签名结果s包括:接收来自于上述第二通信方的s’和r;计算s,其中,s=(d1*(k3+s”)-r)mod n;以及在s不等于零且s不等于n-r的情况下,将(r,s)确定为上述当前待签名信息m的签名结果s。
[0016]
根据本公开的实施例,上述利用上述当前子私钥d1对待签名信息m进行计算,得到第一签名结果s1包括:生成第三随机数k3,其中,上述第三随机数k3属于(1,n-1),n表示椭圆曲线的阶;计算q1,其中,q1=[k3]g,g表示椭圆曲线的基点,[k3]g表示椭圆曲线的基点g的k3倍点运算;以及将q1确定为上述第一签名结果s1;
[0017]
根据本公开的实施例,上述利用上述当前子私钥d1、上述第一签名结果s1和上述第二签名结果s2对上述当前待签名信息m进行计算,得到签名结果s包括:接收来自于上述第二通信方的s’、s”和r;计算s,其中,s=(d1*s’+d1*k3*s
”‑
r)mod n,+表示整数加法运算或者椭圆曲线点加法运算,-表示整数减法运算或者椭圆曲线点减法运算;以及在s不等于零且s不等于n-r的情况下,将(r,s)确定为上述待签名信息m的签名结果s。
[0018]
根据本公开的实施例,上述利用上述当前子私钥d1对待签名信息m进行计算,得到第一签名结果s1包括:生成第三随机数k3,其中,上述第三随机数k3属于(1,n-1),n表示椭圆曲线的阶;计算q1,其中,q1=[k3](g+p),g表示椭圆曲线的基点,p表示公钥,[k3](g+p)表示(g+p)的k3倍点运算;以及将q1确定为上述第一签名结果s1;
[0019]
上述利用上述当前子私钥d1、上述第一签名结果s1和上述第二签名结果s2对上述当前待签名信息m进行计算,得到签名结果s包括:接收来自于上述第二通信方的s’和r;计算s,其中,s=(k3+r*d1+s
’‑
r)mod n,+表示整数加法运算或者椭圆曲线点加法运算,-表示整数减法运算或者椭圆曲线点减法运算;以及在s不等于零且s不等于n-r的情况下,将(r,s)确定为上述待签名信息m的签名结果s。
[0020]
根据本公开的另一个方面,提供了一种基于变化因子的协作式数字签名的计算方法,应用于第二通信方,包括:响应于确定第一通信方针对原始待签名信息的计算操作完成,确定原始子私钥d2’和第二变化因子w2,其中,上述原始子私钥d2’用于对上述原始待签名信息进行计算;将上述第二变化因子w2发送给上述第一通信方;接收来自上述第一通信方的第一变化因子w1;利用上述第一变化因子w1和上述第二变化因子w2,对上述原始子私钥d2’进行处理,得到当前子私钥d2;接收来自于上述第一通信方的第一签名结果s1;利用上述第一签名结果s1和上述当前子私钥d2对当前待签名信息m进行计算,得到第二签名结果s2;以及将上述第二签名结果s2发送给上述第一通信方,以便于上述第一通信方利用上述第二签名结果s2对上述当前待签名信息m进行计算以得到签名结果s。
[0021]
根据本公开的另一个方面,提供了一种基于变化因子的协作式数字签名的计算装置,应用于第一通信方,包括:第一确定模块,用于响应于原始待签名信息的计算操作完成,确定原始子私钥d1’和第一变化因子w1,其中,上述原始子私钥d1’用于对上述原始待签名信息进行计算;第一发送模块,用于将上述第一变化因子w1发送给第二通信方;第一接收模块,用于接收来自于第二通信方的第二变化因子w2;第一处理模块,用于利用上述第一变化因子w1和上述第二变化因子w2,对上述原始子私钥d1’进行处理,得到当前子私钥d1;第一签名模块,用于利用上述当前子私钥d1对当前待签名信息m进行计算,得到第一签名结果s1;第二发送模块,用于将上述第一签名结果s1发送给上述第二通信方;第二接收模块,用于接收来自于上述第二通信方的第二签名结果s2;以及计算模块,用于利用上述当前子私钥d1、上述第一签名结果s1和上述第二签名结果s2对上述当前待签名信息m进行计算,得到签名结果s。
[0022]
根据本公开的另一个方面,提供了一种基于变化因子的协作式数字签名的计算装置,应用于第二通信方,包括:第二确定模块,用于响应于确定第一通信方针对原始待签名信息的计算操作完成,确定原始子私钥d2’和第二变化因子w2,其中,上述原始子私钥d2’用于对上述原始待签名信息进行计算;第三发送模块,用于将上述第二变化因子w2发送给上述第一通信方;第三接收模块,用于接收来自于上述第一通信方的第一变化因子w1;第二处理模块,用于利用上述第一变化因子w1和上述第二变化因子w2,对上述原始子私钥d2’进行处理,得到当前子私钥d2;第四接收模块,用于接收来自于上述第一通信方的第一签名结果s1;第二签名模块,用于利用上述第一签名结果s1和上述当前子私钥d2对当前待签名信息m进行计算,得到第二签名结果s2;以及第四发送模块,用于将上述第二签名结果s2发送给上述第一通信方,以便于上述第一通信方利用上述第二签名结果s2对上述当前待签名信息m
进行计算以得到签名结果s。
[0023]
根据本公开的实施例,在数字签名计算的过程中,可以在上一轮次的原始待签名信息的计算操作完成的情况下,通过变化因子改变通信双方的子私钥,得到当前子私钥。在本轮次数字签名计算中,利用得到的当前子私钥对当前待签名信息进行签名计算,从而得到签名结果。通过上述技术手段,至少部分地克服了相关技术中攻击者可以利用窃取的子私钥进行任意多次的数字签名操作,无法保障私钥的安全性的技术问题,进而对攻击者可以发起的攻击时间窗口进行了限制,提高了数字签名的计算的安全性。
附图说明
[0024]
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
[0025]
图1示意性示出了根据本公开实施例的基于变化因子的协作式数字签名的计算方法的流程图;
[0026]
图2示意性示出了根据本公开另一实施例的基于变化因子的协作式数字签名的计算方法的流程图;
[0027]
图3示意性示出了根据本公开实施例的基于变化因子的协作式数字签名的计算过程的示例示意图;
[0028]
图4示意性示出了根据本公开另一实施例的基于变化因子的协作式数字签名的计算过程的示例示意图;
[0029]
图5示意性示出了根据本公开另一实施例的基于变化因子的协作式数字签名的计算过程的示例示意图;
[0030]
图6示意性示出了根据本公开另一实施例的基于变化因子的协作式数字签名的计算过程的示例示意图;
[0031]
图7示意性示出了根据本公开实施例的基于变化因子的协作式数字签名的计算装置的框图;
[0032]
图8示意性示出了根据本公开另一实施例的基于变化因子的协作式数字签名的计算装置的框图;以及
[0033]
图9示意性示出了根据本公开实施例的适于实现基于变化因子的协作式数字签名的计算方法的电子设备的框图。
具体实施方式
[0034]
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
[0035]
在本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
[0036]
在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
[0037]
为了至少部分地解决相关技术中存在的技术问题,本公开提供了一种基于变化因子的协作式数字签名的计算方法及装置。该数字签名的计算方法包括:响应于原始待签名
信息的计算操作完成,确定原始子私钥d1’和第一变化因子w1,其中,原始子私钥d1’用于对原始待签名信息进行计算;将第一变化因子w1发送给第二通信方;接收来自于第二通信方的第二变化因子w2;利用第一变化因子w1和第二变化因子w2,对原始子私钥d1’进行处理,得到当前子私钥d1;利用当前子私钥d1对当前待签名信息m进行计算,得到第一签名结果s1;将第一签名结果s1发送给第二通信方;接收来自于第二通信方的第二签名结果s2;以及利用当前子私钥d1、第一签名结果s1和第二签名结果s2对当前待签名信息m进行计算,得到签名结果s。
[0038]
图1示意性示出了根据本公开实施例的基于变化因子的协作式数字签名的计算方法的流程图。
[0039]
如图1所示,该基于变化因子的协作式数字签名的计算方法包括操作s110~s180。
[0040]
在操作s110,响应于原始待签名信息的计算操作完成,确定原始子私钥d1’和第一变化因子w1。原始子私钥d1’用于对原始待签名信息进行计算。
[0041]
在操作s120,将第一变化因子w1发送给第二通信方。
[0042]
在操作s130,接收来自于第二通信方的第二变化因子w2。
[0043]
在操作s140,利用第一变化因子w1和第二变化因子w2,对原始子私钥d1’进行处理,得到当前子私钥d1。
[0044]
在操作s150,利用当前子私钥d1对当前待签名信息m进行计算,得到第一签名结果s1。
[0045]
在操作s160,将第一签名结果s1发送给第二通信方。
[0046]
在操作s170,接收来自于第二通信方的第二签名结果s2。
[0047]
在操作s180,利用当前子私钥d1、第一签名结果s1和第二签名结果s2对当前待签名信息m进行计算,得到签名结果s。
[0048]
根据本公开的实施例,第一通信方可以是服务器端或客户端。第二通信方可以是服务器端或客户端。在第一通信方是服务器的情况下,第二通信方可以是客户端。在第一通信方是客户端的情况下,第二通信方可以是服务器。
[0049]
根据本公开的实施例,原始待签名信息可以用于表征上一轮次的数字签名计算中的待签名信息。当前待签名信息可以用于表征本轮次的数字签名计算中的待签名信息。
[0050]
根据本公开的实施例,第一通信方可以生成原始子私钥d1’,在此情况下,第一通信方的原始子私钥d1’可以与第二通信方的原始子私钥d2’协作生成公钥p。或者,可以通过密钥生成器随机生成私钥并计算得到公钥p,此情况下,第一通信方可以接收来自密钥生成器的原始子私钥d1’。可以利用原始子私钥d1’对原始待签名信息进行计算,得到中间结果。
[0051]
根据本公开的实施例,在上一轮次的数字签名计算完成之后,第一通信方可以通过生成随机数来确定第一变化因子w1。或者,第一通信方可以根据上一轮次的数字签名计算中的原始待签名信息、第一签名结果、第二签名结果和签名结果中的全部值或部分值来确定第一变化因子w1。
[0052]
根据本公开的实施例,第一通信方可以利用第一变化因子w1和第二变化因子w2,对原始子私钥d1’进行变化处理,得到当前子私钥d1。原始子私钥d1’、d2’与当前子私钥d1、d2对应相同的私钥。
[0053]
根据本公开的实施例,第一签名结果s1可以是第一通信方利用当前子私钥d1对当
前待签名信息m进行计算得到的部分签名结果。第二签名结果s2可以是第二通信方利用第一签名结果s1和当前子私钥d2对当前待签名信息m进行计算得到的部分签名结果。签名信息s可以是第一通信方利用当前子私钥d1、第一签名结果s1和第二签名结果s2对当前待签名信息m进行计算得到的数字签名的计算结果。
[0054]
根据本公开的实施例,在数字签名计算的过程中,可以在上一轮次的原始待签名信息的计算操作完成的情况下,通过变化因子改变通信双方的子私钥,得到当前子私钥。在本轮次数字签名计算中,利用得到的当前子私钥对当前待签名信息进行签名计算,从而得到签名结果。通过上述技术手段,至少部分地克服了相关技术中攻击者可以利用窃取的子私钥进行任意多次的数字签名操作、无法保障私钥的安全性的技术问题,进而对攻击者可以发起的攻击时间窗口进行了限制,提高了数字签名的计算的安全性。
[0055]
图2示意性示出了根据本公开另一实施例的基于变化因子的协作式数字签名的计算方法的流程图。
[0056]
如图2所示,该基于变化因子的协作式数字签名的计算方法包括操作s210~s270。
[0057]
在操作s210,响应于确定第一通信方针对原始待签名信息的计算操作完成,确定原始子私钥d2’和第二变化因子w2。原始子私钥d2’用于对原始待签名信息进行计算。
[0058]
在操作s220,将第二变化因子w2发送给第一通信方。
[0059]
在操作s230,接收来自第一通信方的第一变化因子w1。
[0060]
在操作s240,利用第一变化因子w1和第二变化因子w2,对原始子私钥d2’进行处理,得到当前子私钥d2。
[0061]
在操作s250,接收来自于第一通信方的第一签名结果s1。
[0062]
在操作s260,利用第一签名结果s1和当前子私钥d2对当前待签名信息m进行计算,得到第二签名结果s2。
[0063]
在操作s270,将第二签名结果s2发送给第一通信方,以便于第一通信方利用第二签名结果s2对当前待签名信息m进行计算以得到签名结果s。
[0064]
根据本公开的实施例,第一通信方可以是服务器端或客户端。第二通信方可以是服务器端或客户端。在第二通信方是服务器的情况下,第一通信方可以是客户端。在第二通信方是客户端的情况下,第一通信方可以是服务器。
[0065]
根据本公开的实施例,原始待签名信息可以用于表征上一轮次的数字签名计算中的待签名信息。当前待签名信息可以用于表征本轮次的数字签名计算中的待签名信息。
[0066]
根据本公开的实施例,第二通信方可以生成原始子私钥d2’,在此情况下,第二通信方的原始子私钥d2’可以与第一通信方的原始子私钥d1’协作生成公钥p。或者,可以通过密钥生成器随机生成私钥并计算得到公钥p,此情况下,第二通信方可以接收来自密钥生成器的原始子私钥d2’。可以利用原始子私钥d2’对原始待签名信息进行计算,得到中间结果。
[0067]
根据本公开的实施例,在上一轮次的数字签名计算完成之后,第二通信方可以通过生成随机数来确定第二变化因子w2。或者,第二通信方可以根据上一轮次的数字签名计算中的原始待签名信息、第一签名结果、第二签名结果和签名结果中的全部值或部分值来确定第二变化因子w2。
[0068]
根据本公开的实施例,第二通信方可以利用第一变化因子w1和第二变化因子w2,对原始子私钥d2’进行变化处理,得到当前子私钥d2。原始子私钥d1’、d2’与当前子私钥d1、
d2对应相同的私钥。
[0069]
根据本公开的实施例,在数字签名计算的过程中,可以在上一轮次的原始待签名信息的计算操作完成的情况下,通过变化因子改变通信双方的子私钥,得到当前子私钥。在本轮次数字签名计算中,利用得到的当前子私钥对当前待签名信息进行签名计算,从而得到签名结果。通过上述技术手段,至少部分地克服了相关技术中攻击者可以利用窃取的子私钥进行任意多次的数字签名操作,无法保障私钥的安全性的技术问题,进而对攻击者可以发起的攻击时间窗口进行了限制,提高了数字签名的计算的安全性。
[0070]
根据本公开的实施例,第一通信方和第二通信方可以共享椭圆曲线公钥密码算法(sm2算法)的椭圆曲线参数e(fq)、g和n,椭圆曲线e为定义在有限域fq上的椭圆曲线,g表示椭圆曲线e上n阶的基点。各参数的具体取值可以由本领域技术人员根据实际需求按照sm2算法进行预先设定。根据本公开的实施例,在基于椭圆曲线公钥密码算法数字签名的计算方法中,私钥d以子私钥d1和子私钥d2的形式分别存储在第一通信方和第二通信方。公钥p=[d]g,其中[d]g表示椭圆曲线的基点g的d倍点运算。
[0071]
下面参考图3~图6,结合具体实施例对图1和图2所示的方法做进一步说明。
[0072]
图3示意性示出了根据本公开实施例的基于变化因子的协作式数字签名的计算过程的示例示意图。
[0073]
根据本公开的实施例,基于椭圆曲线公钥密码算法的数字签名的计算方法,将私钥拆分两份得到子私钥并分别存储在通信双方,双方协作完成数字签名操作。
[0074]
如图3所示,在操作s301,响应于原始待签名信息的计算操作完成,第一通信方确定原始子私钥d1’和第一变化因子w1。
[0075]
在操作s302,第一通信方将第一变化因子w1发送给第二通信方。
[0076]
在操作s303,第二通信方确定原始子私钥d2’和第二变化因子w2。原始子私钥d2’用于对原始待签名信息进行计算。
[0077]
在操作s304,第二通信方将第二变化因子w2发送给第一通信方。
[0078]
在操作s305,第一通信方接收来自于第二通信方的第二变化因子w2。
[0079]
在操作s306,第二通信方接收来自第一通信方的第一变化因子w1。
[0080]
在操作s307,第一通信方利用第一变化因子w1和第二变化因子w2,对原始子私钥d1’进行处理,得到当前子私钥d1。
[0081]
在操作s308,第二通信方利用第一变化因子w1和第二变化因子w2,对原始子私钥d2’进行处理,得到当前子私钥d2。
[0082]
在操作s309,第一通信方利用当前子私钥d1对当前待签名信息m进行计算,得到第一签名结果s1。
[0083]
在操作s310,第一通信方将第一签名结果s1发送给第二通信方。
[0084]
在操作s311,第二通信方接收来自于第一通信方的第一签名结果s1。
[0085]
在操作s312,第二通信方利用第一签名结果s1和当前子私钥d2对当前待签名信息m进行计算,得到第二签名结果s2。
[0086]
在操作s313,第二通信方将第二签名结果s2发送给第一通信方。
[0087]
在操作s314,第一通信方接收来自于第二通信方的第二签名结果s2。
[0088]
在操作s315,第一通信方利用当前子私钥d1、第一签名结果s1和第二签名结果s2
对当前待签名信息m进行计算,得到签名结果s。
[0089]
根据本公开的实施例,在每一轮次数字签名操作中,第一通信方和第二通信方双方存储的子私钥均会发生变化、且保持sm2算法的私钥整体不变化。
[0090]
图4示意性示出了根据本公开另一实施例的基于变化因子的协作式数字签名的计算过程的示例示意图。
[0091]
根据本公开的实施例,数字签名的计算方法基于椭圆曲线公钥密码算法。
[0092]
根据本公开的实施例,操作s110可以包括以下操作。
[0093]
响应于原始待签名信息的计算操作完成,生成第一随机数k1。第一随机数k1属于(1,n-1),n表示椭圆曲线的阶。将第一随机数k1确定为第一变化因子w1。
[0094]
根据本公开的实施例,操作s210可以包括以下操作。
[0095]
响应于确定第一通信方针对原始待签名信息的计算操作完成,生成第二随机数k2。第二随机数k2,属于(1,n-1),n表示椭圆曲线的阶。将第二随机数k2确定为第二变化因子w2。
[0096]
根据本公开的实施例,在这种情况下,私钥d、第一通信方的原始子私钥d1’和第二通信方的原始子私钥d2’满足(d+1)-1
=(d1’*d2’)mod n。
[0097]
根据本公开的实施例,操作s140可以包括以下操作。
[0098]
根据第一变化因子w1、第二变化因子w2和原始子私钥d1’,计算v1,v1=(d1’*w1-1
*w2)mod n,*表示整数乘法运算,mod n表示模n运算。将v1确定为当前子私钥d1。
[0099]
根据本公开的实施例,操作s240可以包括以下操作。
[0100]
根据第一变化因子w1、第二变化因子w2和原始子私钥d2’,计算v2,v2=(d2’*w1*w2-1
)mod n,*表示整数乘法运算,w2-1
mod n表示w2模n的逆元。将v2确定为当前子私钥d2。
[0101]
根据本公开的实施例,第一通信方可以生成原始子私钥d1’第一通信方的原始子私钥d1’可以与第二通信方的原始子私钥d2’协作生成公钥p。
[0102]
例如,第一通信方可以生成一个位于(1,n-1)之间的随机数,将生成的随机数作为原始子私钥d1’。第一通信方可以计算d1’模n的逆元t1=d1
’-1
mod n,即有d1’*t1=1 mod n。第一通信方可以计算p1=[t1]g,并将p1发送给第二通信方。
[0103]
根据本公开的实施例,第二通信方可以生成原始子私钥d2’,第二通信方的原始子私钥d2’可以与第一通信方的原始子私钥d1’协作生成公钥p。
[0104]
例如,第二通信方可以生成一个位于(1,n-1)之间的随机数,将生成的随机数作为原始子私钥d2’。第二通信方可以计算d2’模n的逆元t2=d2
’-1
mod n,即有d2’*t2=1 mod n。第二通信方可以接收来自第一通信方的p1,并计算p=[t2]p1-g,将计算结果p作为公钥,即有p=[t2*t1-1]g,在计算-g时,可使用等价的+[n-1]g计算。
[0105]
根据本公开的实施例,可以通过密钥生成器随机生成私钥并计算得到公钥p,第一通信方可以接收来自密钥生成器的原始子私钥d1’。
[0106]
例如,密钥生成器可以生成一个位于(1,n-1)之间的随机数,将生成的随机数作为私钥d,计算p=[d]g,将计算结果p作为公钥。密钥生成器可以生成一个位于(1,n-1)之间的随机数,作为原始子私钥d1’。密钥生成器可以将d1’发送给第一通信方。密钥生成器可以接收来自第一通信方的原始子私钥d1’,并计算d2’=((d+1)-1
*d1
’-1
)mod n,将计算结果d2’作为原始子私钥d2’。
[0107]
根据本公开的实施例,操作s150可以包括以下操作。
[0108]
生成第三随机数k3。第三随机数k3属于(1,n-1),n表示椭圆曲线的阶。计算q1,q1=[k3]g,g表示椭圆曲线的基点,[k3]g表示椭圆曲线的基点g的k3倍点运算。将q1确定为第一签名结果s1。
[0109]
根据本公开的实施例,操作s180可以包括以下操作。
[0110]
接收来自于第二通信方的s’和r。计算s,s=(d1*(k3+s’)-r)mod n。在s不等于零且s不等于n-r的情况下,将(r,s)确定为当前待签名信息m的签名结果s。
[0111]
根据本公开的实施例,操作s260可以包括以下操作。
[0112]
对z和m进行拼接处理,得到m’,m’=z||m,z表示基于椭圆曲线公钥密码算法标准的第一通信方和第二通信方的身份标识的杂凑值,||表示比特串或字节串的拼接。计算e、t2和q2,e=hash(m’),t2=d2-1
mod n,q2=[t2]q1,hash()表示杂凑函数,d2-1
mod n表示d2模n的逆元,[t2]q1表示q1的t2倍点运算。生成第五随机数k5。第五随机数k5属于(1,n-1),n表示椭圆曲线的阶。计算(x,y)和r,(x,y)=[k5]g+q2,r=(e+x)mod n,(x,y)表示椭圆曲线的点的坐标,g表示椭圆曲线的基点,[k5]g表示椭圆曲线的基点g的k5倍点运算,+表示整数加法运算或者椭圆曲线点加法运算。在r不等于零的情况下,计算s’,s’=(d2*(r+k5))mod n,mod n表示模n运算。将s’确定为第二签名结果s2。
[0113]
如图4所示,在操作s401,响应于原始待签名信息的计算操作完成,第一通信方可以计算v1=(d1’*w1-1
*w2)mod n,并将计算结果v1确定为当前子私钥d1。
[0114]
在操作s402,响应于确定第一通信方针对原始待签名信息的计算操作完成,第二通信方可以计算v2=(d2’*w1*w2-1
)mod n,并将计算结果v2确定为当前子私钥d2。
[0115]
在操作s403,第一通信方可以生成属于(1,n-1)的第三随机数k3,并计算q1,q1=[k3]g,将q1确定为第一签名结果s1。
[0116]
在操作s404,第一通信方可以将s1发送给第二通信方。
[0117]
在操作s405,第二通信方可以接收来自第一通信方的s1。
[0118]
在操作s406,第二通信方可以对z和m进行拼接处理,得到m’并计算e=hash(m’)。
[0119]
在操作s407,第二通信方可以计算t2=d2-1
mod n,q2=[t2]q1。
[0120]
在操作s408,第二通信方可以生成属于(1,n-1)的第五随机数k5,并计算(x,y)=[k5]g+q2,r=(e+x)mod n。
[0121]
在操作s409,在r不等于零的情况下,第二通信方可以计算s’=(d2*(r+k5))mod n,并将s’确定为第二签名结果s2。
[0122]
在操作s410,第二通信方可以将r和包括s’的第二签名结果s2发送给第一通信方。
[0123]
在操作s411,第一通信方可以接收来自于第二通信方的s’和r。
[0124]
在操作s412,第一通信方可以计算s=(d1*(k3+s’)-r)mod n。
[0125]
在操作s413,在s不等于零且s不等于n-r的情况下,第一通信方可以将(r,s)确定为待签名信息m的签名结果s。
[0126]
根据本公开的实施例,上述过程相当于使用k3*d2-1
+k5替代sm2椭圆曲线公钥密码算法的数字签名的计算方法中的随机数k。可以保持椭圆曲线公钥密码算法的私钥整体不变化,即变化后的当前子私钥d1和d2仍然满足(d+1)-1
=(d1*d2)mod n。
[0127]
根据本公开的实施例,第一通信方和第二通信方可以根据q1的全部值或部分值来
计算得到下一轮次数字签名的计算中的w1。例如,w1可以设定为q1的x坐标、q1的y坐标、或hash(q1)mod n等。
[0128]
根据本公开的实施例,第一通信方和第二通信方可以各自分别根据r和s’的全部值或部分值来计算得到w1和w2。例如,w1和w2可以设定为(r+s’)mod n、(r+s’)mod n、或hash(r)mod n等。
[0129]
图5示意性示出了根据本公开另一实施例的基于变化因子的协作式数字签名的计算过程的示例示意图。
[0130]
根据本公开的实施例,数字签名的计算方法基于椭圆曲线公钥密码算法。
[0131]
根据本公开的实施例,操作s110可以包括以下操作。
[0132]
响应于原始待签名信息的计算操作完成,生成第一随机数k1。第一随机数k1属于(1,n-1),n表示椭圆曲线的阶。将第一随机数k1确定为第一变化因子w1。
[0133]
根据本公开的实施例,操作s210可以包括以下操作。
[0134]
响应于确定第一通信方针对原始待签名信息的计算操作完成,生成第二随机数k2。第二随机数k2,属于(1,n-1),n表示椭圆曲线的阶。将第二随机数k2确定为第二变化因子w2。
[0135]
根据本公开的实施例,在这种情况下,私钥d、第一通信方的原始子私钥d1’和第二通信方的原始子私钥d2’满足(d+1)-1
=(d1’+1)*(d2’+1)mod n。
[0136]
根据本公开的实施例,操作s140可以包括以下操作。
[0137]
根据第一变化因子w1、第二变化因子w2和原始子私钥d1’,计算u1。u1=(((d1’+1)*w1*w2-1
)-1)mod n,*表示整数乘法运算,mod n表示模n运算。将u1确定为所述当前子私钥d1。
[0138]
根据本公开的实施例,操作s240可以包括以下操作。
[0139]
根据第一变化因子w1、第二变化因子w2和原始子私钥d2’,计算u2,u2=(((d2’+1)*w1-1
*w2)-1)mod n,*表示整数乘法运算,w2-1
mod n表示w2模n的逆元。将u2确定为当前子私钥d2。
[0140]
根据本公开的实施例,操作s150可以包括以下操作。
[0141]
生成第三随机数k3。第三随机数k3属于(1,n-1),n表示椭圆曲线的阶。计算q1,q1=[k3]g,g表示椭圆曲线的基点,[k3]g表示椭圆曲线的基点g的k3倍点运算。将q1确定为第一签名结果s1。
[0142]
根据本公开的实施例,操作s180可以包括以下操作。
[0143]
接收来自于第二通信方的s’、s”和r。计算s,s=((d1+1)*s’+(d1+1)*k3*s
”‑
r)mod n,+表示整数加法运算或者椭圆曲线点加法运算,-表示整数减法运算或者椭圆曲线点减法运算。在s不等于零且s不等于n-r的情况下,将(r,s)确定为待签名信息m的签名结果s。
[0144]
根据本公开的实施例,操作s260可以包括以下操作。
[0145]
对z和m进行拼接处理,得到m’,m’=z||m,z表示基于椭圆曲线公钥密码算法标准的第一通信方和第二通信方的身份标识的杂凑值,||表示比特串或字节串的拼接。计算e,e=hash(m’),hash()表示杂凑函数。生成第四随机数k4。第四随机数k4属于(1,n-1),n表示椭圆曲线的阶。计算q2,q2=[k4]q1,q1表示第一签名结果s1,[k4]q1表示q1的k4倍点运算。生成第五随机数k5。第五随机数k5属于(1,n-1),n表示椭圆曲线的阶。计算(x,y)和r,(x,y)
=[k5]g+q2,r=(e+x)mod n,(x,y)表示椭圆曲线的点的坐标,g表示椭圆曲线的基点,[k5]g表示椭圆曲线的基点g的k5倍点运算,+表示整数加法运算或者椭圆曲线点加法运算。在r不等于零的情况下,计算s’和s”,s’=((d2+1)*(r+k5))mod n,s”=((d2+1)*k4)mod n,mod n表示模n运算。将s’和s”确定为第二签名结果s2。
[0146]
如图5所示,在操作s501,响应于原始待签名信息的计算操作完成,第一通信方可以计算u1=(((d1’+1)*w1*w2-1
)-1)mod n,并将计算结果u1确定为当前子私钥d1。
[0147]
在操作s502,响应于确定第一通信方针对原始待签名信息的计算操作完成,第二通信方可以计算u2=(((d2’+1)*w1-1
*w2)-1)mod n,并将计算结果u2确定为当前子私钥d2。
[0148]
在操作s503,第一通信方可以生成属于(1,n-1)的第三随机数k3,并计算q1,q1=[k3]g,将q1确定为第一签名结果s1。
[0149]
在操作s504,第一通信方可以将q1发送给第二通信方。
[0150]
在操作s505,第二通信方可以接收来自第一通信方的q1。
[0151]
在操作s506,第二通信方可以对z和m进行拼接处理,得到m’并计算e=hash(m’)。
[0152]
在操作s507,第二通信方可以生成属于(1,n-1)第四随机数k4,并计算q2=[k4]q1。
[0153]
在操作s508,第二通信方可以生成属于(1,n-1)的第五随机数k5,并计算(x,y)=[k5]g+q2,r=(e+x)mod n。
[0154]
在操作s509,在r不等于零的情况下,第二通信方可以计算s’=((d2+1)*(r+k5))mod n,s”=((d2+1)*k4)mod n,并将s’和s”确定为第二签名结果s2。
[0155]
在操作s510,第二通信方可以将r和包括s’和s”的第二签名结果s2发送给第一通信方。
[0156]
在操作s511,第一通信方可以接收来自于第二通信方的s’、s”和r。
[0157]
在操作s512,第一通信方可以计算s=((d1+1)*s’+(d1+1)*k3*s
”‑
r)mod n。
[0158]
在操作s513,在s不等于零且s不等于n-r的情况下,第一通信方可以将(r,s)确定为待签名信息m的签名结果s。
[0159]
根据本公开的实施例,上述过程相当于使用k3*k4+k5替代sm2椭圆曲线公钥密码算法的数字签名的计算方法中的随机数k。可以保持椭圆曲线公钥密码算法的私钥整体不变化,即变化后的当前子私钥d1和d2仍然满足(d+1)-1
=(d1+1)*(d2+1)mod n。
[0160]
根据本公开的实施例,第一通信方和第二通信方可以根据q1的全部值或部分值来计算得到下一轮次数字签名的计算中的w1。例如,w1可以设定为q1的x坐标、q1的y坐标、或hash(q1)mod n等。
[0161]
根据本公开的实施例,第一通信方和第二通信方可以各自分别根据r、s’和s”的全部值或部分值来计算得到w1和w2。例如,w1和w2可以设定为(r+s’+s”)mod n、(r+s’)mod n、或hash(r)mod n等。
[0162]
图6示意性示出了根据本公开另一实施例的基于变化因子的协作式数字签名的计算过程的示例示意图。
[0163]
根据本公开的实施例,数字签名的计算方法基于椭圆曲线公钥密码算法。
[0164]
根据本公开的实施例,操作s110可以包括以下操作。
[0165]
响应于原始待签名信息的计算操作完成,生成第一随机数k1。第一随机数k1属于
(1,n-1),n表示椭圆曲线的阶。将第一随机数k1确定为第一变化因子w1。
[0166]
根据本公开的实施例,操作s210可以包括以下操作。
[0167]
响应于确定第一通信方针对原始待签名信息的计算操作完成,生成第二随机数k2。第二随机数k2,属于(1,n-1),n表示椭圆曲线的阶。将第二随机数k2确定为第二变化因子w2。
[0168]
根据本公开的实施例,在这种情况下,私钥d、第一通信方的原始子私钥d1’和第二通信方的原始子私钥d2’满足(d+1)-1
=(d1’+d2’)mod n。
[0169]
根据本公开的实施例,操作s140可以包括以下操作。
[0170]
根据第一变化因子w1、第二变化因子w2和原始子私钥d1’,计算j1,j1=(d1’+w1-w2)mod n,*表示整数乘法运算,mod n表示模n运算。将v1确定为当前子私钥d1。根据本公开的实施例,操作s240可以包括以下操作。
[0171]
根据第一变化因子w1、第二变化因子w2和原始子私钥d2’,计算j2。j2=(d2
’‑
w1+w2)mod n,*表示整数乘法运算,mod n表示模n运算。将u2确定为所述当前子私钥d2。
[0172]
根据本公开的实施例,操作s150可以包括以下操作。
[0173]
生成第三随机数k3。第三随机数k3属于(1,n-1),n表示椭圆曲线的阶。计算q1,q1=[k3](g+p),g表示椭圆曲线的基点,[k3](g+p)表示(g+p)的k3倍点运算。将q1确定为所述第一签名结果s1。
[0174]
根据本公开的实施例,操作s180可以包括以下操作。
[0175]
接收来自于所述第二通信方的s’和r。计算s,s=(k3+r*d1+s
’‑
r)mod n,+表示整数加法运算或者椭圆曲线点加法运算,-表示整数减法运算或者椭圆曲线点减法运算。在s不等于零且s不等于n-r的情况下,将(r,s)确定为所述待签名信息m的签名结果s。
[0176]
根据本公开的实施例,操作s260可以包括以下操作。
[0177]
对z和m进行拼接处理,得到m’,m’=z||m,z表示基于椭圆曲线公钥密码算法标准的第一通信方和第二通信方的身份标识的杂凑值,||表示比特串或字节串的拼接。计算e和q2,e=hash(m”),hash()表示杂凑函数。生成第五随机数k5,第五随机数k5属于(1,n-1),n表示椭圆曲线的阶,计算q2,q2=[k5](g+p)。计算(x,y)和r,(x,y)=s1+q2,r=(e+x)mod n,(x,y)表示椭圆曲线的点的坐标,g表示椭圆曲线的基点,[k5]g表示椭圆曲线的基点g的k5倍点运算,+表示整数加法运算或者椭圆曲线点加法运算。在r不等于零的情况下,计算s’,s’=(k5+r*d2”)mod n,mod n表示模n运算。将s’确定为第二签名结果s2。
[0178]
如图6所示,在操作s601,响应于原始待签名信息的计算操作完成,第一通信方可以计算j1=(d1’+w1-w2)mod n,并将计算结果j1确定为当前子私钥d1。
[0179]
在操作s602,响应于确定第一通信方针对原始待签名信息的计算操作完成,第二通信方可以计算j2=(d2
’‑
w1+w2)mod n,并将计算结果j2确定为当前子私钥d2。
[0180]
在操作s603,第一通信方可以生成属于(1,n-1)的第三随机数k3,并计算q1,q1=[k3](g+p),,将q1确定为第一签名结果s1。
[0181]
在操作s604,第一通信方可以将s1发送给第二通信方。
[0182]
在操作s605,第二通信方可以接收来自第一通信方的s1。
[0183]
在操作s606,第二通信方可以对z和m进行拼接处理,得到m’并计算e=hash(m’)。
[0184]
在操作s607,第二通信方可以生成属于(1,n-1)的第五随机数k5,并计算q2,第二
通信方可以计算q2=[k5](g+p)。
[0185]
在操作s608,第二通信方可以计算(x,y)=s1+q2,r=(e+x)mod n。
[0186]
在操作s609,在r不等于零的情况下,第二通信方可以计算s’=(k5+r*d2)mod n,并将s’确定为第二签名结果s2。
[0187]
在操作s610,第二通信方可以将r和包括s’的第二签名结果s2发送给第一通信方。
[0188]
在操作s611,第一通信方可以接收来自于第二通信方的s’和r。
[0189]
在操作s612,第一通信方可以计算s=(k3+r*d1+s
’‑
r)mod n。
[0190]
在操作s613,在s不等于零且s不等于n-r的情况下,第一通信方可以将(r,s)确定为待签名信息m的签名结果s。
[0191]
根据本公开的实施例,上述过程相当于使用(d+1)(k3*k5)替代sm2椭圆曲线公钥密码算法的数字签名的计算方法中的随机数k。可以保持椭圆曲线公钥密码算法的私钥整体不变化,即变化后的当前子私钥d1和d2仍然满足(d+1)
11
=(d1+d2)mod n。
[0192]
根据本公开的实施例,第一通信方和第二通信方可以根据q1的全部值或部分值来计算得到下一轮次数字签名的计算中的w1。例如,w1可以设定为q1的x坐标、q1的y坐标、或hash(q1)mod n等。
[0193]
根据本公开的实施例,第一通信方和第二通信方可以各自分别根据r和s’的全部值或部分值来计算得到w1和w2。例如,w1和w2可以设定为(r+s’)mod n、(r+s’)mod n、或hash(r)mod n等。
[0194]
图7示意性示出了根据本公开实施例的基于变化因子的协作式数字签名的计算装置的框图。
[0195]
如图7所示,基于变化因子的协作式数字签名的计算装置700包括第一确定模块710、第一发送模块720、第一接收模块730、第一处理模块740、第一签名模块750、第二发送模块760、第二接收模块770和计算模块780。
[0196]
第一确定模块710,用于响应于原始待签名信息的计算操作完成,确定原始子私钥d1’和第一变化因子w1。原始子私钥d1’用于对原始待签名信息进行计算。
[0197]
第一发送模块720,用于将第一变化因子w1发送给第二通信方。
[0198]
第一接收模块730,用于接收来自于第二通信方的第二变化因子w2。
[0199]
第一处理模块740,用于利用第一变化因子w1和第二变化因子w2,对原始子私钥d1’进行处理,得到当前子私钥d1。
[0200]
第一签名模块750,用于利用当前子私钥d1对当前待签名信息m进行计算,得到第一签名结果s1。
[0201]
第二发送模块760,用于将第一签名结果s1发送给第二通信方。
[0202]
第二接收模块770,用于接收来自于第二通信方的第二签名结果s2。
[0203]
计算模块780,用于利用当前子私钥d1、第一签名结果s1和第二签名结果s2对当前待签名信息m进行计算,得到签名结果s。
[0204]
根据本公开的实施例,所述数字签名的计算方法基于椭圆曲线公钥密码算法。
[0205]
根据本公开的实施例,第一确定模块710可以包括第一生成单元和第一确定单元。
[0206]
第一生成单元,用于响应于原始待签名信息的计算操作完成,生成第一随机数k1,其中,所述第一随机数k1属于(1,n-1),n表示椭圆曲线的阶。
[0207]
第一确定单元,用于将所述第一随机数k1确定为所述第一变化因子w1。
[0208]
根据本公开的实施例,第一处理模块740可以包括第一计算单元和第二确定单元。
[0209]
第一计算单元,用于根据所述第一变化因子w1、所述第二变化因子w2和所述原始子私钥d1’,计算v1,其中,v1=(d1’*w1-1
*w2)mod n,*表示整数乘法运算,mod n表示模n运算。
[0210]
第二确定单元,用于将v1确定为所述当前子私钥d1。
[0211]
根据本公开的实施例,第一确定模块710可以包括第二生成单元和第三确定单元。
[0212]
第二生成单元,用于响应于原始待签名信息的计算操作完成,生成第一随机数k1,其中,所述第一随机数k1属于(1,n-1),n表示椭圆曲线的阶。
[0213]
第三确定单元,用于将所述第一随机数k1确定为所述第一变化因子w1。
[0214]
根据本公开的实施例,第一处理模块740可以包括第二计算单元和第四确定单元。
[0215]
第二计算单元,用于根据所述第一变化因子w1、所述第二变化因子w2和所述原始子私钥d1’,计算u1,其中,u1=(((d1’+1)*w1*w2-1
)-1)mod n,*表示整数乘法运算,mod n表示模n运算;以及
[0216]
第四确定单元,用于将u1确定为所述当前子私钥d1。
[0217]
根据本公开的实施例,第一确定模块710可以包括第三生成单元和第五确定单元。
[0218]
第三生成单元,用于响应于原始待签名信息的计算操作完成,生成第一随机数k1,其中,所述第一随机数k1属于(1,n-1),n表示椭圆曲线的阶。
[0219]
第五确定单元,用于将所述第一随机数k1确定为所述第一变化因子w1。
[0220]
根据本公开的实施例,第一处理模块740可以包括第三计算单元和第六确定单元。
[0221]
第三计算单元,用于根据所述第一变化因子w1、所述第二变化因子w2和所述原始子私钥d1’,计算j1,其中,j1=(d1’+w1-w2)mod,*表示整数乘法运算,mod n表示模n运算。
[0222]
第六确定单元,用于将j1确定为所述当前子私钥d1。
[0223]
根据本公开的实施例,第一签名模块750可以包括第四生成单元、第四计算单元和第七确定单元。
[0224]
第四生成单元,用于生成第三随机数k3,其中,所述第三随机数k3属于(1,n-1),n表示椭圆曲线的阶。
[0225]
第四计算单元,用于计算q1,其中,q1=[k3]g,g表示椭圆曲线的基点,[k3]g表示椭圆曲线的基点g的k3倍点运算。
[0226]
第七确定单元,用于将q1确定为所述第一签名结果s1。
[0227]
根据本公开的实施例,计算模块780可以包括第一接收单元、第五计算单元和第八确定单元。
[0228]
第一接收单元,用于接收来自于所述第二通信方的s’和r。
[0229]
第五计算单元,用于计算s,其中,s=(d1*(k3+s’)-r)mod n。
[0230]
第八确定单元,用于在s不等于零且s不等于n-r的情况下,将(r,s)确定为所述当前待签名信息m的签名结果s。
[0231]
根据本公开的实施例,第一签名模块750可以包括第五生成单元、第六计算单元和第九确定单元。
[0232]
第五生成单元,用于生成第三随机数k3,其中,所述第三随机数k3属于(1,n-1),n
表示椭圆曲线的阶。
[0233]
第六计算单元,用于计算q1,其中,q1=[k3]g,g表示椭圆曲线的基点,[k3]g表示椭圆曲线的基点g的k3倍点运算。
[0234]
第九确定单元,用于将q1确定为所述第一签名结果s1。
[0235]
根据本公开的实施例,计算模块780可以包括第二接收单元、第七计算单元和第十确定单元。
[0236]
第二接收单元,用于接收来自于所述第二通信方的s’、s”和r。
[0237]
第七计算单元,用于计算s,其中,s=((d1+1)*s’+(d1+1)*k3*s
”‑
r)mod n,+表示整数加法运算或者椭圆曲线点加法运算,-表示整数减法运算或者椭圆曲线点减法运算。
[0238]
第十确定单元,用于在s不等于零且s不等于n-r的情况下,将(r,s)确定为所述待签名信息m的签名结果s。
[0239]
根据本公开的实施例,第一签名模块750可以包括第六生成单元、第八计算单元和第十一确定单元。
[0240]
第六生成单元,用于生成第三随机数k3,其中,所述第三随机数k3属于(1,n-1),n表示椭圆曲线的阶。
[0241]
第八计算单元,用于计算q1,其中,q1=[k3](g+p),g表示椭圆曲线的基点,[k3](g+p)表示(g+p)的k3倍点运算。
[0242]
第十一确定单元,用于将q1确定为所述第一签名结果s1。
[0243]
根据本公开的实施例,计算模块780可以包括第三接收单元、第九计算单元和第十二确定单元。
[0244]
第三接收单元,用于接收来自于所述第二通信方的s’和r。
[0245]
第九计算单元,用于计算s,其中,s=(k3+r*d1+s
’‑
r)mod n,+表示整数加法运算或者椭圆曲线点加法运算,-表示整数减法运算或者椭圆曲线点减法运算。
[0246]
第十二确定单元,用于在s不等于零且s不等于n-r的情况下,将(r,s)确定为所述待签名信息m的签名结果s。
[0247]
图8示意性示出了根据本公开另一实施例的基于变化因子的协作式数字签名的计算装置的框图。
[0248]
如图8所示,基于变化因子的协作式数字签名的计算装置800包括第二确定模块810、第三发送模块820、第三接收模块830、第二处理模块840、第四接收模块850、第二签名模块860和第四发送模块870。
[0249]
第二确定模块810,用于响应于确定第一通信方针对原始待签名信息的计算操作完成,确定原始子私钥d2’和第二变化因子w2。原始子私钥d2’用于对原始待签名信息进行计算。
[0250]
第三发送模块820,用于将第二变化因子w2发送给第一通信方。
[0251]
第三接收模块830,用于接收来自于第一通信方的第一变化因子w1。
[0252]
第二处理模块840,用于利用第一变化因子w1和第二变化因子w2,对原始子私钥d2’进行处理,得到当前子私钥d2。
[0253]
第四接收模块850,用于接收来自于第一通信方的第一签名结果s1。
[0254]
第二签名模块860,用于利用第一签名结果s1和当前子私钥d2对当前待签名信息m
进行计算,得到第二签名结果s2。
[0255]
第四发送模块870,用于将第二签名结果s2发送给第一通信方,以便于第一通信方利用第二签名结果s2对当前待签名信息m进行计算以得到签名结果s。
[0256]
需要说明的是,本公开的实施例中基于变化因子的协作式数字签名的计算装置部分与本公开的实施例中基于变化因子的协作式数字签名的计算方法部分是相对应的,基于变化因子的协作式数字签名的计算装置部分的描述具体参考基于变化因子的协作式数字签名的计算方法部分,在此不再赘述。
[0257]
图9示意性示出了根据本公开实施例的适于实现基于变化因子的协作式数字签名的计算方法的电子设备的框图。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0258]
如图9所示,根据本公开实施例的计算机电子设备900包括处理器901,其可以根据存储在只读存储器(rom)902中的程序或者从存储部分909加载到随机访问存储器(ram)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0259]
在ram 903中,存储有电子设备900操作所需的各种程序和数据。处理器901、rom 902以及ram 903通过总线904彼此相连。处理器901通过执行rom 902和/或ram 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom 902和ram 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0260]
根据本公开的实施例,电子设备900还可以包括输入/输出(i/o)接口905,输入/输出(i/o)接口905也连接至总线904。电子设备900还可以包括连接至i/o接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至i/o接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
[0261]
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0262]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只渎存储器(rom)、可擦式可编程只渎存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0263]
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom 902和/或ram 903和/或rom 902和ram 903以外的一个或多个存储器。
[0264]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
[0265]
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1