发明内容
本公开至少一个实施例的主要目的在于提高私钥的被窃取的难度,降低私钥被窃取的风险。
第一方面,本公开实施例提供了一种基于ECDSA算法协同生成签名的方法,包括:
公钥生成过程和签名生成过程;
其中公钥生成过程包括:
在第一电子设备和第二电子设备处,分别基于每一个电子设备预先获取的参数组生成部分公钥;其中第一电子设备所获取的第一参数组与第二电子设备所获取的第二参数组不同;
在第二电子设备处,将所生成的部分公钥发送给第一电子设备;
在第一电子设备处,将第一电子设备生成的部分公钥与接收到的部分公钥联合得到完整公钥P;
在第一电子设备处,将完整公钥P输出;或者在第一电子设备处,将完整公钥P发送给第二电子设备;并在第二电子设备处,将完整公钥P输出;
签名生成过程包括:
在第二电子设备处,计算待签名信息的摘要的哈希值;并将得到的哈希值发送到第一电子设备;
在第一电子设备处,基于第一参数组对接收到的哈希值计算部分签名,并将计算得到的部分签名发送给第二电子设备;
在第二电子设备处,基于第二参数组对接收到的部分签名计算签名分量,并发送给第一电子设备;
在第一电子设备处,根据签名分量得到完整签名;
在第一电子设备处,将完整签名输出;或者在第一电子设备处,将完整签名发送给第二电子设备;并在第二电子设备处,将完整签名输出。
第二方面,本公开提供了一种基于ECDSA算法协同生成签名的装置,包括:
公钥生成模块和签名生成模块;
其中公钥生成模块,用于
在第一电子设备和第二电子设备处,分别基于每一个电子设备预先获取的参数组生成部分公钥;其中第一电子设备所获取的第一参数组与第二电子设备所获取的第二参数组不同;
在第二电子设备处,将所生成的部分公钥发送给第一电子设备;
在第一电子设备处,将第一电子设备生成的部分公钥与接收到的部分公钥联合得到完整公钥P;
在第一电子设备处,将完整公钥P输出;或者在第一电子设备处,将完整公钥P发送给第二电子设备;并在第二电子设备处,将完整公钥P输出;
签名生成模块用于:
在第二电子设备处,计算待签名信息的摘要的哈希值;并将得到的哈希值发送到第一电子设备;
在第一电子设备处,基于第一参数组对接收到的哈希值计算部分签名,并将计算得到的部分签名发送给第二电子设备;
在第二电子设备处,基于第二参数组对接收到的部分签名计算签名分量,并发送给第一电子设备;
在第一电子设备处,根据签名分量得到完整签名;
在第一电子设备处,将完整签名输出;或者在第一电子设备处,将完整签名发送给第二电子设备;并在第二电子设备处,将完整签名输出。
第三方面,本公开实施例提供了一种计算机存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行第一方面所述的方法中的步骤。
第四方面,本公开实施例提供了一种数据处理系统,包括第一电子设备和第二电子设备;所述第一电子设备与所述第二电子设备通信连接;每一个电子设备均包括:处理器、存储器和通信模组;存储器和通信模组均耦合至所述处理器;所述存储器中存储有计算机程序,所述处理器用于执行所述存储器中存储的计算机程序;所述数据处理系统被配置为执行第一方面所述的方法。
本公开至少一个实施例中,在公钥生成过程中,在两个电子设备处分别基于不同的参数组生成部分的公钥,并将两个电子设备所生成的部分的公钥联合得到完整的公钥,这样私钥不会任意一个电子设备处完整的出现,这样即使攻破了一个电子设备,也难以得到完整的私钥,这样就能够提升私钥被窃取的难度,降低私钥被窃取的风险。并且在签名生成过程中,分别在两个电子设备处,基于所述不同的参数组进行加密,能够完成签名运算的过程。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本公开,并不用于限定本公开。
图1示出了本公开一实施例提供的签名系统的结构的示意图,图1中示出的场景是本公开一实施例提供的基于ECDSA算法的签名生成方法的典型应用场景。请参考图1,该系统包括至少两台电子设备,为了方便描述,分别称为第一电子设备100和第二电子设备200。继续参考图1,第一电子设备100包括处理器110、存储器120以及通信模组130;相应的第一电子设备200包括处理器210、存储器220以及通信模组230。各电子设备中,通信模组、存储器均耦接到处理器中,存储器可以存储可以被处理器执行的计算机程序,处理器在执行计算机程序时,会执行相应的方法流程以实现相应的功能。
这里的通信模组,可以为有线的通信模组,也可以为无线的通信模组,根据实际需要,可以配置支持一种或者多种通信协议的协议栈。如无特殊说明,本公开各个实施例中的“耦接”是指元器件之间通信连接且能够交互数据的一种状态,并不要求两个元器件直接相连。
在实施时,这里的第一电子设备100和第二电子设备200中的一个电子设备可以为终端设备,比如手机等,另外一个电子设备可以为服务器,比如设置在云端的服务器。
除了图1中示出的结构之外,图1中的电子设备通常还可能包括电源等,另在还可能会包含显示屏、声音播放设备等其他外设。在此不再详细说明。
为了便于理解,首先对本公开各实施例可能涉及的一些基本概念和术语进行说明。
E(Fq)、G和n,q是大素数,E是定义在有限域Fq上的椭圆曲线,G=(xG,yG)是E上n阶的基点。其中,[*]表示椭圆曲线上的点乘运算,[+]表示椭圆曲线上的点加运算,mod表示求模运算。
第一方面,本公开一实施例提供了一种基于ECDSA算法协同生成签名的方法,该方法可以通过图1中示出的签名系统执行。图2示出了本公开一实施例提供了一种基于ECDSA算法协同生成签名的方法的主要流程,该方法主要包含公钥生产过程和签名生成过程;
其中公钥生成过程主要包括:
步骤S211,在第一电子设备和第二电子设备处,分别基于每一个电子设备预先获取的参数组生成部分公钥;其中第一电子设备所获取的第一参数组与第二电子设备所获取的第二参数组不同;
步骤S212,在第二电子设备处,将所生成的部分公钥发送给第一电子设备;
步骤S213,在第一电子设备处,将第一电子设备生成的部分公钥与接收到的部分公钥联合得到完整公钥P;
步骤S214,在第一电子设备处,将完整公钥P输出。
签名生成过程包括:
步骤S221,在第二电子设备处,计算待签名信息的摘要的哈希值;并将得到的哈希值发送到第一电子设备;
步骤S222,在第一电子设备处,基于第一参数组对接收到的哈希值计算部分签名,并将计算得到的部分签名发送给第二电子设备;
步骤S223,在第二电子设备处,基于第二参数组对接收到的部分签名计算签名分量,并发送给第一电子设备;
步骤S224,在第一电子设备处,根据签名分量得到完整签名;
步骤S225,在第一电子设备处,将完整签名输出。
本实施例中,在公钥生成过程中,在两个电子设备处分别基于不同的参数组生成部分的公钥,并将两个电子设备所生成的部分的公钥联合得到完整的公钥,这样私钥不会任意一个电子设备处完整的出现,这样即使攻破了一个电子设备,也难以得到完整的私钥,这样就能够提升私钥被窃取的难度,降低私钥被窃取的风险。并且在签名生成过程中,分别在两个电子设备处,基于所述不同的参数组进行加密,能够完成签名运算的过程。
需要指出的是,在一些实施例中,也可以由第二电子设备输出完整公钥P和/或完成签名。在由第二电子设备输出完整公钥P时,在步骤214可以替换为:在第一电子设备处,将完整公钥P发送给第二电子设备;并在第二电子设备处,将完整公钥P输出。相应的,在由第二电子设备输出完整签名时,在步骤225可以替换为:在第一电子设备处,将完整签名发送给第二电子设备;并在第二电子设备处,将完整签名输出。
不难理解的是,本公开的各个实施方式中,“将完整公钥P输出”是指,将完整公钥P公布到网络,比如区块链网络中。“将完整签名输出”是指将完整签名输出到网络中,比如发送给完整签名的接收方。
在一种可选的实施方式中,上述的所述的第一参数组可以包括随机数K1,K2,E(Fq)、G和n,q是大素数;所述的第二参数组可以包括随机数K3,K4,E(Fq)、G和n;其中,E(Fq)是定义在有限域Fq上的椭圆曲线,G=(xG,yG)是E上n阶的基点;
此时,上述的步骤S211中,在第一电子设备和第二电子设备处,分别基于每一个电子设备预先获取的参数组生成部分公钥;其中第一电子设备所获取的第一参数组与第二电子设备所获取的第二参数组不同,可以包括:
在第一电子设备处,计算K1在Fq上的逆元K1 -1mod n,并计算P1=K1 -1[*]G,将计算结果发送给第二电子设备;
在第二电子设备处,计算K3在Fq上的逆元K3 -1mod n,并计算(x,y)=K3 -1[*]P1,将计算结果发送给所述第一电子设备;
在第一电子设备处,计算部分公钥P2=x-1K2[*]P1;
在第二电子设备处,计算部分公钥P3=x-1K3 -1K4[*]P1,并计算P4=x-1K3 -1K4[*]G,
相应的,在步骤S212中,在第二电子设备处,将所生成的部分公钥发送给第一电子设备,包括:
在第二电子设备处,将部分公钥P3以及P4发送给所述第一电子设备;
在步骤S213中,在第一电子设备处,将第一电子设备生成的部分公钥与接收到的部分公钥联合得到完整公钥P,包括:
在第一电子设备处,判断是否有P3=K1 -1[*]P4,在判断为是时,计算P=P2[+]P3,将计算结果P作为完整公钥。
由于公钥P=x-1K2[*]P1[+]x-1K3 -1K4[*]P1
=(x-1K2+x-1K3 -1K4)K1 -1[*]G
=(x-1K2K1 -1+x-1K3 -1K4K1 -1)[*]G
因此,私钥d=x-1K2K1 -1+x-1K3 -1K4K1 -1,进而通信双方均无法独立计算出私钥。
进一步的,上述的签名生成过程还可以包括:将部分公钥P2以及完整公钥P发送给所述第二电子设备;
所述方法还包括:
在第二电子设备处,根据接收到的部分公钥P2以及所生成的部分公钥P3验证接收到的完整公钥P是否正确,并将验证结果发送给第一电子设备;
所述步骤S213中,将计算结果P作为完整公钥,包括:
仅在验证结果指示完整公钥P正确时,将计算结果P作为完整公钥。
通过这种方式,能够进一步提高所生成的数字签名的安全性。
步骤S222中,在第一电子设备处,基于第一参数组对接收到的哈希值计算部分签名,包括:
按照如下公式计算部分签名S1:
S1=(K1e+K2)mod n;
步骤S223中,在第二电子设备处,基于第二参数组对接收到的部分签名计算签名分量,包括:
按照如下公式计算签名分量S:S=(K3S1+K4)mod n;
步骤S224中,在第一电子设备处,根据签名分量得到完整签名,包括:
使用公钥P验证(x,S)是否为ECDSA的有效签名,如是,将(x,S)作为完整签名。
下面证明,(x,S)为公钥P的ECDSA算法签名。
在ECDSA算法中,签名为(r,s),其中对消息m的Hash结果h进行签名的结果s应为s=k-1(h+rd)mod n。
以下证明此结论成立:
令k=(K3K1)-1,h=e=Hash(m),r=x,私钥d=x-1K2K1 -1+x-1K3 -1K4K1 -1,代入得:
s=k-1(h+rd)mod n
=K1K3(e+x(x-1K2K1 -1+x-1K3 -1K4K1 -1))mod n
=K1K3(e+K2K1 -1+K3 -1K4K1 -1)mod n
=(K1K3e+K2K3+K4)mod n
=(K3S1+K4)mod n
=S
可见,(x,S)为公钥P的ECDSA算法签名。
在具体实施时,上述任意一种实施方式中的步骤S221’中,在第一电子设备处,计算待签名信息的摘要的哈希值,包括:
利用SHA256算法计算待签名信息的摘要的哈希值;
相应的,上述任意一种实施方式中的步骤S221中,在第二电子设备处,计算待签名信息的摘要的哈希值,包括:
利用SHA256算法计算待签名信息的摘要的哈希值。
当然在具体实施时,采用其他的方式,也可以采用其他的算法计算摘要的哈希值,在此不再详细说明。
此外,在具体实施时,上述实施例中的待签名信息可以为交易信息。其中,这里的交易信息具体可以为虚拟货币的交易信息,这里的虚拟货币可以为比特币、以太币等虚拟数字货币。
第二方面,本公开一实施例还提供了一种基于ECDSA算法协同生成签名的装置。图3示出了该装置的主要结构,包括:
公钥生成模块310和签名生成模块320;
其中公钥生成模块310,用于
在第一电子设备和第二电子设备处,分别基于每一个电子设备预先获取的参数组生成部分公钥;其中第一电子设备所获取的第一参数组与第二电子设备所获取的第二参数组不同;
在第二电子设备处,将所生成的部分公钥发送给第一电子设备;
在第一电子设备处,将第一电子设备生成的部分公钥与接收到的部分公钥联合得到完整公钥P;
在第一电子设备处,将完整公钥P输出;或者在第一电子设备处,将完整公钥P发送给第二电子设备;并在第二电子设备处,将完整公钥P输出;
签名生成模块用于320:
在第二电子设备处,计算待签名信息的摘要的哈希值;并将得到的哈希值发送到第一电子设备;
在第一电子设备处,基于第一参数组对接收到的哈希值计算部分签名,并将计算得到的部分签名发送给第二电子设备;
在第二电子设备处,基于第二参数组对接收到的部分签名计算签名分量,并发送给第一电子设备;
在第一电子设备处,根据签名分量得到完整签名;
在第一电子设备处,将完整签名输出;或者在第一电子设备处,将完整签名发送给第二电子设备;并在第二电子设备处,将完整签名输出。
在一些实施方式中,所述第一参数组包括随机数K1,K2,E(Fq)、G和n,q是大素数;所述第二参数组包括随机数K3,K4,E(Fq)、G和n;其中,E(Fq)是定义在有限域Fq上的椭圆曲线,G=(xG,yG)是E上n阶的基点;
在第一电子设备和第二电子设备处,分别基于每一个电子设备预先获取的参数组生成部分公钥;其中第一电子设备所获取的第一参数组与第二电子设备所获取的第二参数组不同,包括:
在第一电子设备处,计算K1在Fq上的逆元K1 -1mod n,并计算P1=K1 -1[*]G,将计算结果发送给第二电子设备;
在第二电子设备处,计算K3在Fq上的逆元K3 -1mod n,并计算(x,y)=K3 -1[*]P1,将计算结果发送给所述第一电子设备;
在第一电子设备处,计算部分公钥P2=x-1K2[*]P1;
在第二电子设备处,计算部分公钥P3=x-1K3 -1K4[*]P1,并计算P4=x-1K3 -1K4[*]G,
所述在第二电子设备处,将所生成的部分公钥发送给第一电子设备,包括:
在第二电子设备处,将部分公钥P3以及P4发送给所述第一电子设备;
所述在第一电子设备处,将第一电子设备生成的部分公钥与接收到的部分公钥联合得到完整公钥P,包括:
在第一电子设备处,判断是否有P3=K1 -1[*]P4,在判断为是时,计算P=P2[+]P3,将计算结果P作为完整公钥。
在一些实施方式中,所述签名生成模块还用于:将部分公钥P2以及完整公钥P发送给所述第二电子设备;
验证模块,用于在第二电子设备处,根据接收到的部分公钥P2以及所生成的部分公钥P3验证接收到的完整公钥P是否正确,并将验证结果发送给第一电子设备;
所述将计算结果P作为完整公钥,包括:
仅在验证结果指示完整公钥P正确时,将计算结果P作为完整公钥。
在一些实施方式中,所述在第一电子设备处,基于第一参数组对接收到的哈希值计算部分签名,包括:
按照如下公式计算部分签名S1:
S1=(K1e+K2)mod n;
所述在第二电子设备处,基于第二参数组对接收到的部分签名计算签名分量,包括:
按照如下公式计算签名分量S:S=(K3S1+K4)mod n;
所述在第一电子设备处,根据签名分量得到完整签名,包括:
使用公钥P验证(x,S)是否为ECDSA的有效签名,如是,将(x,S)作为完整签名。
在一些实施方式中,所述在第二电子设备处,计算待签名信息的摘要的哈希值,包括:
利用SHA256算法计算待签名信息的摘要的哈希值。。
此外,在具体实施时,上述实施例中的待签名信息可以为交易信息。其中,这里的交易信息具体可以为虚拟货币的交易信息,这里的虚拟货币可以为比特币、以太币等虚拟数字货币。
由于本公开实施例提供的基于ECDSA算法协同生成签名的装置,能够用于实施如第一方面任一项所述的基于ECDSA算法协同生成签名的方法。因此本公开实施例中的技术效果、相关技术术语以及相关的实施方式可以参考第一方面的实施例,在此不再详细说明。
第三方面,本公开的实施例还提供了一种计算机存储介质,该计算机存储介质中存储有计算机指令代码,该计算机指令代码在被计算机设备执行时执行第一方面任一项所述的方法。
第四方面,本公开的实施例还提供了一种数据处理系统,该系统的主要结构可以参考图1,包括第一电子设备和第二电子设备;所述第一电子设备与所述第二电子设备通信连接;每一个电子设备均包括:处理器、存储器和通信模组;存储器和通信模组均耦合至所述处理器;所述存储器中存储有计算机程序,所述处理器用于执行所述存储器中存储的计算机程序;所述数据处理系统被配置为执行第一方面任一项所述的方法。
以上仅为本公开的优选实施例,并非因此限制本公开的专利范围,凡是利用本公开说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本公开的专利保护范围内。