一种高效的门限分布式椭圆曲线密钥生成及签名方法和系统与流程

文档序号:17600381发布日期:2019-05-07 20:12阅读:400来源:国知局
一种高效的门限分布式椭圆曲线密钥生成及签名方法和系统与流程

本发明涉及密码学技术领域,具体的来说涉及分布式椭圆曲线密钥生成及签名技术。



背景技术:

椭圆曲线密码学(ecc)是一种基于椭圆曲线数学的公钥加密体系,可以基于更短的密钥提供安全级别相当或更高的加密机制。椭圆曲线数字签名算法(ecdsa)是基于椭圆曲线密码学的一种数字签名算法(dsa)的变种,目前被广泛应用于区块链领域,比特币、以太坊等主流数字货币均采用该算法对交易的合法性进行签名及验证。

门限密码技术(thresholdcryptosystem)是以秘密共享技术为基础的一种密码学技术,基本思想是将密钥k按照某种秘密共享协议分成n个分享k1,k2,…,kn,已知任意x(t<=x<=n)个ki的值,可以计算出k;已知任意小于x个ki的值,则由于信息短缺而不能计算出k。这种方法一般称为(t,n)门限方法。目前被广泛采用的两个秘密共享协议为shamir秘密共享协议和asmuth-bloom秘密共享协议,前者基于拉格朗日插值公式,后者则基于中国剩余定理。

同态加密(homomorphicencryption)是一种特殊的加密方法,允许对密文进行处理得到仍然是加密的结果。即对密文直接进行处理,跟对明文进行处理后再对处理结果加密,得到的结果相同。从抽象代数的角度讲,保持了同态性。根据运算类型来说,一般分为加法同态、乘法同态、减法同态和除法同态。同时满足加法同态和乘法同态,则意味着代数同态,即全同态(fullhomomorphic)。同时满足四种同态性,则被称为算数同态。目前的加密算法中,rsa算法是乘法同态,paillier算法是加法同态,gentry算法则是全同态的。



技术实现要素:

目前已知的分布式椭圆曲线密钥生成及签名技术中,普遍存在不支持门限方案、密钥生成及签名效率低等问题,无法在真实场景中使用。

本发明所要解决的技术问题在于,克服现有技术中存在的问题,提供一种高效的门限分布式椭圆曲线密钥生成及签名方法和系统。基于本方面,可以实现与单节点效率相近的密钥生成及签名效率。

为了解决上述问题本发明的技术方案是这样的:

一种高效的门限分布式椭圆曲线密钥生成及签名方法,包括:

s1,在没有可信中心参与的情况下,所有n个节点单独生成自己的密钥对(ptki,puki),ptki为私钥,puki为公钥;

s2,各个节点根据秘密共享协议,处理各自的公私钥对,完成(n,n)门限到(t,n)门限的转换;

s3,在确定t个签名节点后,各个节点根据门限逻辑,生成(t,t)门限的私钥,完成ptki到ptki’的映射;

s4,各个节点根据签名逻辑,使用ptki’完成签名协议中各自节点的通信与计算,并对相关计算结果进行存储,最终完成整体的签名。

进一步地,所述s3包括:

s31,所有的n个节点,按照椭圆曲线的规则,各自生成自己的密钥对(ptki,puki),ptki为私钥,puki为公钥,i为节点编号;

s32,所有n个节点将各自的公钥puki广播给其他节点,并在接收到其他n-1个节点广播的pukx后,将n个pukx按照椭圆曲线的运算,组合成完整的公钥puk;

s33,所有n个节点将各自的私钥ptki按照选定的秘密共享协议做(t,n)门限处理,将ptki映射为n个片段ptkij,并将ptkij发送给对应的编号为j的节点;

s34,进行一次签名时,选定t个可用的节点,每个节点按照选定的秘密共享协议,将收到的n个ptkij按照秘密共享协议的恢复方法进行恢复,得到ptki’。

进一步地,所述秘密共享协议为shamir或asmuth-bloom协议。

进一步地,所述s4包括:

s41,根据采用的分布式签名算法,所有节点采用统一的同态加密算法he,各自生成用于同态加密的公私钥对(heptki,hepuki),heptiki为私钥,hepuki为公钥,i为节点编号;

s42,所有节点使用统一的秘密转换函数fconv,根据椭圆曲线数字签名算法的计算流程,将计算过程中不能直接公开的信息使用fconv转换为可公开信息;

s43,各个节点依次执行s42中的fconv函数,将秘密转换后发送给对应的节点,并接收其他节点的信息;

s44,根据椭圆曲线数字签名算法的流程,各节点记录下s43中与所签名信息无关但最终签名生成所需的信息,各个节点共同维持统一的视图编号v;

s45,根据线上业务的需求,重复执行s42-44,完成分布式签名所需的离线计算过程;

s46,线上提供服务时,各节点同步视图信息v,取出该视图下存储的计算结果,同时各节点另起线程,持续执行s45,计算之后的签名的中间过程;

s47,各节点读取需要计算签名的信息,完成与签名信息相关的计算,并根据s46取出的中间结果,最终完成各自节点的签名计算,生成签名结果sigi,i为节点编号;

s48,各节点将s47中的sigi发送给选定的组装节点,组装节点在接收到各节点发送的信息后,完成最终签名的组装,生成最终的签名结果sig。

进一步地,所述fconv函数的实现依赖于框架中使用的同态加密算法,需要使用s41中的公私钥对实现秘密的传输和解密。

进一步地,根据所采用的分布式签名算法,所述s42中各个节点一般需要数轮计算和通信。

进一步地,所述s43中,如果所有的信息已经完成转换和发送,则将该中间计算结果存储在该视图信息下;如果还有信息需要转换和发送,则继续使用fconv函数进行转换和发送,直至所有信息处理完成。

进一步地,所述s48中的签名信息即为puk公钥所对应的签名信息,可用puk对sig进行验证。

进一步地,所述门限分布式椭圆曲线密钥及签名方法应用于数字资产钱包app和数字资产交易所钱包系统,用于安全增强和数字资产管理;利益无关的各方共同管理数字资产,分别充当本方案的中的签名节点,各自执行本签名流程。

一种高效的门限分布式椭圆曲线密钥生成及签名系统,包括:

密钥生成模块,用于实现在没有可信中心参与的情况下,所有n个节点单独生成自己的密钥对(ptki,puki),ptki为私钥,puki为公钥;

转换模块,用于实现各个节点根据秘密共享协议,处理各自的公私钥对,完成(n,n)门限到(t,n)门限的转换;

映射模块,用于实现在确定t个签名节点后,各个节点根据门限逻辑,生成(t,t)门限的私钥,完成ptki到ptki’的映射;

签名模块,用于实现各个节点根据签名逻辑,使用ptki’完成签名协议中各自节点的通信与计算,并对相关计算结果进行存储,最终完成整体的签名。

进一步地,所述映射模块具体包括:

接收单元,用于实现各个节点接收所有节点发送过来的公钥和私钥分片。

发送单元,用于实现各个节点将公钥广播给其他节点,将私钥分片按照秘密共享协议发送给对应的节点。

恢复单元,用于实现各个节点将接收单元接收到的公钥按照椭圆曲线运算生成最终的公钥,将接收单元接收到的私钥分片按照秘密共享协议的恢复方法恢复成新的私钥。

进一步地,所述秘密共享协议为shamir或asmuth-bloom协议。

进一步地,所述签名模块具体包括:

第一单元,用于运行线程1,包括:各节点生成同态加密的公私钥对;使用fconv函数进行秘密转换;发送并接收转换后的信息给对应的节点;

进一步地,如果所有的信息已经完成转换和发送,则将该中间计算结果存储在该视图信息下;如果还有信息需要转换和发送,则继续使用fconv函数进行转换和发送,直至所有信息处理完成。

进一步地,所述fconv函数的实现依赖于框架中使用的同态加密算法,需要使用公私钥对实现秘密的传输和解密。

第二单元,用于运行线程2,包括:各节点同步视图信息;读取该视图信息下的中间计算结果;完成与签名消息有关的计算;各节点生成各自的签名sigi并将该签名广播给其他节点。

进一步地,所述门限分布式椭圆曲线密钥及签名方法应用于数字资产钱包app和数字资产交易所钱包系统,用于安全增强和数字资产管理;利益无关的各方共同管理数字资产,分别充当本方案的中的签名节点,各自执行本签名流程。

本发明的有益效果:本发明中的门限分布式椭圆曲线密钥生成及签名框架,具有无中心化、强鲁邦性、高安全和手续费损耗低等优点,具体为:1)所有节点各自生成公私钥对,只将公钥公布出来,整个过程无需借助密钥分发中心,杜绝了密钥分发中心作恶的情况;2)支持门限逻辑,既确保了所有节点中的大多数签名才可以完成最终签名,又避免了因少数节点不可用而导致签名功能瘫痪;3)采用存储中间计算结果的方式提供签名服务,可以保持很高的效率,实际测试中与单节点签名效率相近;4)基于此签名方法实现的多签名,最终完成的结构中只包含一条签名信息。在实际的比特币等网络中发送交易时,只需花费单签名大小的手续费,就可实现多签名的安全性。

附图说明

下面结合附图和具体实施方式来详细说明本发明;

图1为总方法流程图;

图2为(t,n)门限到(t,t)门限的映射图;

图3为整体签名流程图;

图4为本发明所述的门限分布式椭圆曲线密钥生成及签名方法流程图;

图5为系统框架图;

图6为映射模块的框架图;

图7为签名模块的运行流程图。

具体实施方式

本实施例中,一种高效安全的门限分布式椭圆曲线密钥生成及签名的总方法流程图如图1所示,包括在没有可信中心参与的情况下,所有n个节点单独生成自己的密钥对(ptki,puki),ptki为私钥,puki为公钥;各个节点根据秘密共享协议,处理各自的公私钥对,完成(n,n)门限到(t,n)门限的转换;在确定t个签名节点后,各个节点根据门限逻辑,生成(t,t)门限的私钥,完成ptki到ptki’的映射;各个节点根据签名逻辑,使用ptki’完成签名协议中各自节点的通信与计算,并对相关计算结果进行存储,最终完成整体的签名。为了应对线上高并发和高效率的需求,将签名过程中与被签名消息m无关的计算提前计算并存储起来,各个节点维持统一视图。在线上提供服务时各个节点只需完成与m相关的计算,再取出同一视图的中间计算结果,完成最终的签名结果组装即可。

所述的分布式密钥生成及签名方法及系统在完成(t,n)门限到(t,t)门限的映射时,具体包括以下步骤:

s301:所有的n个节点,按照椭圆曲线的规则,各自生成自己的密钥对(ptki,puki),ptki为私钥,puki为公钥,i为节点编号。

s302:所有n个节点将各自的公钥puki广播给其他节点,在接收到其他n-1个节点广播的pukx后,将n个pukx按照椭圆曲线的运算,组合成完整的公钥puk。

s303:所有n个节点将各自的私钥ptki按照选定的秘密共享协议(如shamir或asmuth-bloom协议)做(t,n)门限处理,将ptki映射为n个片段ptkij,并将ptkij发送给对应的编号为j的节点。

s304:进行一次签名时,选定t个可用的节点,每个节点按照s103中选定的秘密共享协议,将收到的n个ptkij按照秘密共享协议的恢复方法进行恢复,得到ptki’。

所述的分布式密钥生成及签名框架在完成选定的t个节点ptki到ptki’映射后,将根据签名逻辑进行通信与计算,并对相关计算结果进行存储,最终完成整体的签名。具体步骤如下:

s401:根据采用的分布式签名算法,所有节点采用统一的同态加密算法he,并各自生成用于同态加密的公私钥对(heptki,hepuki),heptiki为私钥,hepuki为公钥,i为节点编号。

s402:所有节点使用统一的秘密转换函数fconv,根据椭圆曲线数字签名算法的计算流程,将计算过程中不能直接公开的信息使用fconv转换为可公开信息。fconv函数的实现依赖于框架中使用的同态加密算法,需要使用s201中的公私钥对实现秘密的传输和解密。

s403:各个节点依次使用s202中的fconv函数,将秘密转换后发送给对应的节点,并接收其他节点的信息。根据所采用的分布式签名算法,各个节点一般需要数轮计算和通信。

s404:根据椭圆曲线数字签名算法的流程,各节点记录下s203中与所签名信息无关但最终签名生成所需的信息,各个节点共同维持统一的视图编号v。

s405:根据线上业务的需求,重复执行s202-s204,完成分布式签名所需的离线计算过程。

s406:线上提供服务时,各节点同步视图信息v,取出该视图下存储的计算结果。同时各节点另起线程,持续执行s205,为之后的签名计算中间过程。

s407:各节点读取需要计算签名的信息,完成与签名信息相关的计算。并根据s206中取出的中间结果,最终完成各自节点的签名计算,生成签名结果sigi,i为节点编号。

s408:各节点将s207中的sigi,发送给选定的组装节点。组装节点在接收到各节点发送的信息后,完成最终签名的组装,生成最终的签名结果sig。该签名信息即为puk公钥所对应的签名信息,可用puk对sig进行验证。

图4展示了一个(6,10)门限的例子。所有10个节点单独生成公私钥对(ptk1,puk1),ptk1为私钥,puk1为公钥;然后将公钥广播给其他节点。私钥则根据共同的秘密共享协议进行处理,每个私钥均被处理为10份,然后将每一份分发给对应的节点。然后选定参与签名的节点,在本例中,节点1-6选定为签名节点。每个节点首先根据10个私钥分片(接收到9个,自己保存1个),利用秘密共享协议重新恢复出处理后的私钥。再根据共同的fconv转换函数,将签名过程中的秘密信息转换为可以发送给其他节点的信息,然后发送并接收相关转换后的信息。最终根据需要签名的对象信息,生成各自节点的签名。然后各节点将各自的签名广播,组装成最终的签名。

图5展示了本发明公开的一种高效安全的门限分布式椭圆曲线密钥生成及签名的系统框架图,其中密钥生成模块,用于实现在没有可信中心参与的情况下,所有n个节点单独生成自己的密钥对(ptki,puki),ptki为私钥,puki为公钥;

转换模块,用于实现各个节点根据秘密共享协议,处理各自的公私钥对,完成(n,n)门限到(t,n)门限的转换;

映射模块,用于实现在确定t个签名节点后,各个节点根据门限逻辑,生成(t,t)门限的私钥,完成ptki到ptki’的映射;

签名模块,用于实现各个节点根据签名逻辑,使用ptki’完成签名协议中各自节点的通信与计算,并对相关计算结果进行存储,最终完成整体的签名。

图6展示了映射模块的框架图,包括:

接收单元,用于实现各个节点接收所有节点发送过来的公钥和私钥分片。

发送单元,用于实现各个节点将公钥广播给其他节点,将私钥分片按照秘密共享协议发送给对应的节点。

恢复单元,用于实现各个节点将接收单元接收到的公钥按照椭圆曲线运算生成最终的公钥,将接收单元接收到的私钥分片按照秘密共享协议的恢复方法恢复成新的私钥。

图7为签名模块的运行流程图,其包括第一单元和第二单元,分别负责两个线程。线程1包括:

s501、各节点生成同态加密的公私钥对;

s502、使用fconv函数进行秘密转换;

s503、发送并接收转换后的信息给对应的节点;

s503中,如果所有的信息已经完成转换和发送,则将该中间计算结果存储在该视图信息下;如果还有信息需要转换和发送,则继续使用fconv函数进行转换和发送,直至所有信息处理完成。fconv函数的实现依赖于框架中使用的同态加密算法,需要使用s301中的公私钥对实现秘密的传输和解密。

其中,线程2包括:

s504、各节点同步视图信息;

s505、读取该视图信息下的中间计算结果;

s506、完成与签名消息有关的计算;

s507、各节点生成各自的签名sigi并将该签名广播给其他节点。

本方案可应用于数字资产钱包app和数字资产交易所钱包系统,用于安全增强和数字资产管理。具体应用时,利益无关的各方共同管理数字资产,分别充当本方案的中的签名节点,各自执行本签名流程即可。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明专利要求保护的范围由所附的权利要求书及其等同物界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1