一种基于椭圆曲线的区块链密钥共享和动态更新方法技术

技术编号:21145918 阅读:21 留言:0更新日期:2019-05-18 06:37
本发明专利技术公开一种基于椭圆曲线的区块链密钥共享和动态更新方法。此方法包括:节点密钥初始化,子密钥验证、主密钥合成、主密钥更新、子密钥增删以及数据加解密。本发明专利技术基于门限密钥共享体制的思想,提出用线性方程组密钥共享技术将区块链主密钥分发到各个节点,该方法可以在不改变节点子密钥的前提下,动态地更换主密钥和增删子密钥,契合区块链网络中节点动态增删的场景。这里为了防止节点之间的欺诈问题,又结合了椭圆曲线密码体制,该方法在分发子密钥后也提供了可以识别子密钥真假的方法,保证节点之间的信任问题,保证区块链存储隐私数据的安全性,增强区块链系统的可信程度,且相关操作都定义在智能合约当中,不可篡改。

【技术实现步骤摘要】
一种基于椭圆曲线的区块链密钥共享和动态更新方法
本专利技术涉及椭圆曲线密码体制、共享密钥技术、区块链技术,尤其涉及一种基于椭圆曲线的区块链密钥共享和动态更新方法。
技术介绍
椭圆曲线密码体制是一种基于椭圆曲线数学的公开密钥加密算法,椭圆曲线方程可以表示为:y2=x3+ax+b,q>3。其中4a3-27b2≠0,a,b属于有限域GF(q),q为素数或为2m的整数。在椭圆曲线上有一个离散对数难题,即对于椭圆曲线上的点K,G,满足K=kG,对给定的k和G来计算K比较容易,而根据K,G求解k非常困难,这里k与G进行的运算为有限域上的纯量乘法。正是由于这种特性,这个难题被应用在密码学上,k为私钥,K为公钥,可以利用该密钥对进行加解密、签名等操作。正是因为这种密码体制安全性高,运算速度快,存储空间小,包括比特币在内的众多区块链都将其作为加密算法。共享密钥技术是指将一个主密钥分成多个子密钥,由不同的成员保管,被主密钥加密的数据只有通过各个成员将子密钥拼凑在一起才能进行解密。1979年Shamir就曾提出过一个基于多项式插值算法的门限密钥共享体制,该体制是指,n个参与者共享主密钥S,密钥管理中心利用分配算法和主密钥生成n个子密钥,仅当有任何t个参与者将子密钥放在一起时,才能重构出子密钥。这个体制的前提是密钥分发者和接收者都是诚实的,因此无法有效地阻止密钥分发者和接收者欺诈。区块链在本质上是一个去中心化的分布式数据库,每个区块链节点都增量备份该数据库,通过共识机制保证区块链上的数据是不可篡改的。但是在一些场景下,各个区块链节点需要共享一些数据,为了数据的安全性,区块链节点会选择对数据进行加密存储,但此时加解密使用的密钥对由谁保管成为了新的难题。而传统的密钥分割方案不支持子密钥的动态增删以及主密钥的更新,不适用于区块链网络中节点经常增删、主密钥可能泄露的问题。
技术实现思路
针对现有技术的不足,本专利技术提出一种基于椭圆曲线的区块链密钥共享和动态更新方法,通过密钥共享技术使得区块链上可以存放和传输隐私数据,同时适配区块链节点的动态增删问题,更好地保证区块链节点之间的信任问题。本专利技术的目的是通过如下技术方案实现的:一种基于椭圆曲线的区块链密钥共享和动态更新方法,包含密钥管理和数据加解密过程。其中密钥管理包括如下步骤:1)节点密钥初始化:区块链在第一次启动时,执行内置的密钥初始化的智能合约方法,智能合约在执行时用合约内算法随机生成一个主密钥S,以及与节点个数相同的子密钥,将其分发给各个节点,并公布验证函数以及各参数,初始化前使用配置文件设定需要超过多少个子节点的子密钥可以重构主密钥。2)子密钥验证:各个区块链节点收到子密钥后,通过调用子密钥验证的合约方法,用当前合约中公开的各参数对子密钥进行验证,如果验证通过,说明收到的子密钥是真实的。节点之间也可以互相验证身份,调用验证方法,让被验证者提供密钥处理后的结果,验证者对其进行哈希运算,将结果与公布的哈希结果进行比对即可验证。3)主密钥合成:超过规定个数的区块链节点拿出自己的子密钥,即可以根据规定算法重构出主密钥。4)主密钥更新:当节点发起更新主密钥的请求时,当超过规定节点个数的节点愿意参与,则可以在不更新子密钥的前提下对主密钥进行更新,并重新公布新的验证函数参数。5)子密钥增删:当一个新的节点加入区块链网络,区块链自动调用新增子密钥合约方法,根据规则随机生成一个新的子密钥,并公开该子密钥的相关参数;当一个节点被区块链网络移除,区块链自动调用节点密钥移除方法,将该节点密钥标记为无效密钥,在后续主密钥合成时不能参与。若移除后节点数量少于设定的最小解密节点数量,则对主密钥进行更新,设定新的最小解密节点数量。数据加解密过程包括如下过程:6)数据加密:当一个节点需要在区块链中存储隐私数据或传输隐私数据时,可以使用主密钥对数据进行加密。7)数据解密:当一个节点需要将区块链中存储的隐私信息进行解密时,需要调用主密钥合成智能合约方法,用合成的主密钥对数据进行解密。进一步地,所述的步骤1)中,区块链在第一次启动时,系统在有限域上选取一条安全椭圆曲线E,并在椭圆曲线E上随机选择n个参数,n为创世节点数目,作为子密钥通过安全信道分配给所有创世节点。同时根据启动时的参数配置确定可以解密的最少子密钥数量t,程序内部选定一个t-1次的多项式f(x),使得f(0)=S,其中S为区块链主密钥。同时区块链公开一个验证函数供各节点校验自己节点的真实性。进一步地,所述的步骤2)中,验证函数有两个,一个为其中Aj和G都是公开参数,(i,yi)=(Di+kiG)(modn),其中Di和G也是公开参数,ki为该节点自己的密钥。另一个为Fi=H(Ci),其中H为公开的哈希函数,Ci=kiG(modn)。验证函数一方面用于节点验证自身得到的子密钥是真实的,另一方面用于节点之间互相验证身份的真实性。进一步地,所述的步骤3)中,f(x)为一个t-1次的多项式,形式为区块链在获得t个不同子密钥后,该t-1次多项式可以转换为一个由t个t元一次方程组成的方程组,则必有解,解的结果中f(0)即为主密钥。进一步地,所述的步骤4)中,只需要重新生成一个多项式f2(x),满足f2(0)=S’,S’即为新的主密钥,更新主密钥后重新计算验证函数的相关参数并对全网进行公开。进一步地,所述的步骤5)中,当一个新的节点加入区块链网络中,只需要在椭圆曲线上再随机选择一个点作为子密钥,并计算该子密钥的验证函数相关参数,进行公开。当删除一个节点时,合约中该节点密钥的状态设置为无效,在密钥合成过程中如果又收到了该无效密钥,则忽略该密钥。当密钥总个数低于初始化时设定的最小解密个数t时,即使所有节点都拿出自己的密钥也无法重构出主密钥,此时要对主密钥进行更新,并设定新的最小解密个数t’。进一步地,所述的步骤6)中,节点可以选择使用非对称加密或对称加密方法,若使用非对称加密方法,只需要使用主密钥公开的公钥进行加密即可;若使用对称加密方法,则需要调用主密钥合成智能合约方法,用合成的主密钥对数据进行加密。进一步地,所述的步骤7)中,区块链在执行合成主密钥进行解密的合约方法前,会先使用哈希验证函数对各节点提供的密钥进行验证,以防止收到错误的密钥导致主密钥合成错误。本专利技术的增益效果是:本专利技术通过将基于椭圆曲线的多项式密钥共享技术应用在区块链节点的密钥分发与更新中,使得区块链中可以更安全地存储和传输隐私数据,让区块链的应用场景更为广泛,尤其是可信数据计算及交换领域。另外,本专利技术适配了区块链节点动态增删的场景,加强了密钥共享技术在区块链领域的契合程度。更重要的是,本专利技术提供了节点子密钥的自我验证和相互验证方法,增强了区块链节点之间的信任。另外,节点在收到子密钥之后永不出库,即使要重组主密钥,各节点提供的也是子密钥经过特殊运算的结果,保证了节点密钥的安全性。附图说明图1是本专利技术的方法中进行数据加密的流程图;图2是本专利技术的方法中进行数据解密的流程图;具体实施方式下面根据附图描述本专利技术,本专利技术的目的和效果变得更加明白,以下结合附图对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。一种基于椭圆曲线的区块链密钥共享和动态更新方法,包含密钥本文档来自技高网
...

【技术保护点】
1.一种基于椭圆曲线的区块链密钥共享和动态更新方法,其特征在于,包含密钥管理和数据加解密过程。其中密钥管理包括如下步骤:1)节点密钥初始化:区块链在第一次启动时,执行内置的密钥初始化的智能合约方法,智能合约在执行时用合约内算法随机生成一个主密钥S,以及与节点个数相同的子密钥,将其分发给各个节点,并公布验证函数以及各参数,初始化前使用配置文件设定需要超过多少个子节点的子密钥可以重构主密钥。2)子密钥验证:各个区块链节点收到子密钥后,通过调用子密钥验证的合约方法,用当前合约中公开的各参数对子密钥进行验证,如果验证通过,说明收到的子密钥是真实的。节点之间也可以互相验证身份,调用验证方法,让被验证者提供密钥处理后的结果,验证者对其进行哈希运算,将结果与公布的哈希结果进行比对即可验证。3)主密钥合成:超过规定个数的区块链节点拿出自己的子密钥,即可以根据规定算法重构出主密钥。4)主密钥更新:当节点发起更新主密钥的请求时,当超过规定节点个数的节点愿意参与,则可以在不更新子密钥的前提下对主密钥进行更新,并重新公布新的验证函数参数。5)子密钥增删:当一个新的节点加入区块链网络,区块链自动调用新增子密钥合约方法,根据规则随机生成一个新的子密钥,并公开该子密钥的相关参数;当一个节点被区块链网络移除,区块链自动调用节点密钥移除方法,将该节点密钥标记为无效密钥,在后续主密钥合成时不能参与。若移除后节点数量少于设定的最小解密节点数量,则对主密钥进行更新,设定新的最小解密节点数量。数据加解密过程包括如下步骤:6)数据加密:当一个节点需要在区块链中存储隐私数据或传输隐私数据时,可以使用主密钥对数据进行加密。7)数据解密:当一个节点需要将区块链中存储的隐私信息进行解密时,需要调用主密钥合成智能合约方法,用合成的主密钥对数据进行解密。...

【技术特征摘要】
1.一种基于椭圆曲线的区块链密钥共享和动态更新方法,其特征在于,包含密钥管理和数据加解密过程。其中密钥管理包括如下步骤:1)节点密钥初始化:区块链在第一次启动时,执行内置的密钥初始化的智能合约方法,智能合约在执行时用合约内算法随机生成一个主密钥S,以及与节点个数相同的子密钥,将其分发给各个节点,并公布验证函数以及各参数,初始化前使用配置文件设定需要超过多少个子节点的子密钥可以重构主密钥。2)子密钥验证:各个区块链节点收到子密钥后,通过调用子密钥验证的合约方法,用当前合约中公开的各参数对子密钥进行验证,如果验证通过,说明收到的子密钥是真实的。节点之间也可以互相验证身份,调用验证方法,让被验证者提供密钥处理后的结果,验证者对其进行哈希运算,将结果与公布的哈希结果进行比对即可验证。3)主密钥合成:超过规定个数的区块链节点拿出自己的子密钥,即可以根据规定算法重构出主密钥。4)主密钥更新:当节点发起更新主密钥的请求时,当超过规定节点个数的节点愿意参与,则可以在不更新子密钥的前提下对主密钥进行更新,并重新公布新的验证函数参数。5)子密钥增删:当一个新的节点加入区块链网络,区块链自动调用新增子密钥合约方法,根据规则随机生成一个新的子密钥,并公开该子密钥的相关参数;当一个节点被区块链网络移除,区块链自动调用节点密钥移除方法,将该节点密钥标记为无效密钥,在后续主密钥合成时不能参与。若移除后节点数量少于设定的最小解密节点数量,则对主密钥进行更新,设定新的最小解密节点数量。数据加解密过程包括如下步骤:6)数据加密:当一个节点需要在区块链中存储隐私数据或传输隐私数据时,可以使用主密钥对数据进行加密。7)数据解密:当一个节点需要将区块链中存储的隐私信息进行解密时,需要调用主密钥合成智能合约方法,用合成的主密钥对数据进行解密。2.根据权利要求1所述的一种基于椭圆曲线的区块链密钥共享和动态更新方法,其特征在于,步骤1)中,区块链在第一次启动时,区块链自动执行内置的共享密钥初始化合约,在有限域上选取一条安全椭圆曲线E,并在椭圆曲线E上随机选择n个参数,n为创世节点数目,作为子密钥通过安全信道分配给所有创世节点。同时根据启动时的参数配置确定可以解密的最少子密钥数量t,程序内部选定一个t-1次的多项式f(x...

【专利技术属性】
技术研发人员:邱炜伟李启雷李伟梁秀波尹可挺金鹏
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1