一种针对联盟链的支持节点动态变化的密钥授权方法
技术领域
本发明属于网络空间安全认证领域,涉及一种针对联盟链的支持节点动态变化的密钥授权方法。
背景技术
随着区块链技术的不断发展,越来越多基于区块链的应用应运而生,在区块链技术带来数据安全的同时,在联盟链这种环境下的多中心密钥授权就成了急需解决的问题。由于联盟链是将各个不同的大型单位或者机构联合在一起的系统,这些单位或者机构往往相互之间存在利益冲突,这就导致这些节点本身是无法相互信任的。因此,整个系统的密钥生成以及密钥授权是其中必须解决的技术,其次是联盟链系统的节点并被固定不变的,既当节点产生变化时如何维护密钥授权的节点更新问题:
首先,多中心的密钥授权问题。在联盟链这种环境下,本身联盟链中的节点之间一定存在利益冲突,导致他们之间互不信任。因此各个节点之前很难达成共识,尽管有许多共识算法来解决共识问题。但是面对密钥授权问题就更为棘手,因为密钥本身是需要保密的,我们又希望各个利益相互冲突的节点能够在密钥问题上达成共识,本身就是一件很难解决的问题。
其次,节点定义问题。在联盟链以及共识算法中,目前通常会将节点定义为主节点和从节点两种节点类型,在共识算法中从节点主要负责投票及确认,而主节点所负责的则更多,从本身来看主节点所具有的权利本身就要比从节点要大。因此,我们在设定主节点和从节点在密钥授权的能力上是要有差异的。
再次,主节点和从节点的更新问题问题。在联盟链这种多中心环境下本身进行密钥授权就是一种比较复杂的情况,并且在实际情况来看,联盟链中的节点还需要满足动态变化的能力。因此我们还需要解决在联盟链环境下满足节点动态变化的密钥授权技术。
发明内容
有鉴于此,本发明的目的在于提供一种针对联盟链的支持节点动态变化的密钥授权方法,解决在联盟链环境下多中心密钥授权问题、以及在此基础上的满足节点动态变化的密钥授权技术问题。
为达到上述目的,本发明提供如下技术方案:
一种针对联盟链的支持节点动态变化的密钥授权方法,包括以下步骤:
S1:系统初始化:联盟链服务器根据安全参数生成系统公共参数;
S2:主节点初始化:在主节点层各个主节点根据系统发送公共参数,通过相互交互和认证来生成各自的主节点公/私钥对以及系统主公/私钥对,并将参数y和
添加到公共参数中,其中y表示系统主公钥,ID
i表示联盟链主节点,
表示主节点公钥;
S3:用户idi注册与私钥生成:用户通过向其需要注册的主节点提供身份信息进行注册,主节点接收到注册信息后去校验身份信息是否正确,如果确认正确则向用户发送授权信息,用户接收授权信息后,通过使用授权信息向其他节点申请部分私钥,其他节点通过验证用户的授权信息,如果验证通过则发送部分私钥给用户,用户接收部分私钥并验证,最终合成自己的用户私钥;
S4:更新主节点多项式:通过更新主节点多项式的方法来更新系统主密钥;减少主/从节点也需要更新主节点多项式;针对主节点和从节点不同的身份,中心节点通过更新多项式,来进行节点进入系统和退出系统时的节点更新;
S5:增加/减少从节点:增加从节点,新的从节点IDM+1获得自己的的从节点私钥/公钥;减少从节点,使被淘汰的从节点丧失本身的作用;
S6:增加/减少主节点:主节点作为系统的主要节点,具有管理部分密钥以及添加从节点的能力。
进一步,所述步骤S1具体包括以下步骤:
S11:联盟链服务器随机选择一个素数p,G和GT是两个阶为素数q的乘法循环群,g是G的生成元,双线性映射e:G×G→GT;
S12:服务器定义并生成两个哈希函数:
之后服务器公开公共参数params={G,G
T,p,g,e,H,H
1,H
2,T,N},其中T为门限值,N为联盟链中心个数。
进一步,所述步骤S2具体包括以下步骤:
S21:主节点生成节点私钥/节点公钥,包括:
S211:每个联盟链主节点IDi根据所接收的公共参数随机选择一个T-1阶的多项式fi(x)=ai0+ai1x+…+ai(T-1)xT-1,其中ai0作为IDi的主节点私钥;
S212:每个ID
i分别计算和广播
其中k=0,1,...,T-1;
S213:每个IDi计算秘密值sij=fi(H(IDj))(modp),其中j=1,...,N,将IDi发送sij给IDj,其中i≠j;
S214:每个主节点ID
i验证等式
是否成立,如果等式成立,则认为ID
j为诚实的主节点,否则,ID
i要求ID
j重新广播s
ji直到等式成立;
S215:当主节点ID
i收到N-1个来自其他主节点发来的秘密值s
ji(j=1,...,i-1,i+1,...N),主节点构建它的主节点私钥
和主节点公钥
S22:主节点生成系统主公钥y及新参数,包括:
S221:根据步骤S21,所有主节点都根据其他主节点的主节点公钥生成系统主公钥y:
S222:每个主节点将系统主公钥y和
加入公共参数params当中:
进一步,所述步骤S3具体包括以下步骤:
S31:用户id
i申请加入系统,向主节点ID
j提供身份信息进行注册,通过认证后,主节点发送授权
其中timestamp为授权的时间戳;
S32:用户id
i发送授权信息S
ij和时间戳timestamp给其他节点ID
k,ID
k验证等式
如果等式成立则发送部分私钥
否则拒绝发送;
S33:当用户id
i收到来自节点ID
k的部分密钥
后,验证等式
是否成立,如果正确则认为节点ID
k发送的部分私钥是正确的,否则就要求节点ID
j重新发送,用户需要收集T个以上的不同部分私钥;
进一步,步骤S4具体包括以下步骤;
S41:主节点更新多项式,主节点IDi更新自己的多项式与其他节点达成一致,包括:
S411:每个主节点IDi生成自己的更新多项式fi′(x)=a′i0+a′i1x+…+a′i(T-1)xT′-1,如果要求不变更主私钥时,则各个主节点设a′i0=0;如果要求增加门限T,则设T′>T;如果要求门限T保持不变,则设a′i(T-1)≠-ai(T-1);如果要求降低门限,则设(a′i(T′-1)=-ai(T′-1),...,a′i(T-1)=-ai(T-1));
S412:主节点计算新多项式为f
i″(x)=f
i(x)+f
i′(x)=a″
i0+a″
i1x+…+a″
i(T-1)x
T″-1,并计算更新公钥
其中k=0,1,...,T″-1,并更新值s
i′
j=f
i′(H(ID
j))(modp),其中j=1,...,N,将ID
i发送s
ij给ID
j,其中i≠j;
S413:每个主节点ID
i验证等式
是否成立,如果等式成立,则认为ID
j为诚实的主节点,否则,ID
i要求ID
j重新广播s′
ji直到等式成立;
S414:当主节点ID
i收到N-1个来自其他主节点发来的秘密值s′
ji(j=1,...,i-1,i+1,...N),主节点构建它的主节点私钥
主节点公钥
和更新公钥
S415:根据步骤S411-S414,所有主节点都根据其他主节点的主节点公钥生成系统主公钥y″:
S416:每个主节点将参数
加入公共参数params当中:
S42:主节点私钥和用户私钥进行更新,包括:
S421:用户id
i向主节点ID
k申请更新密钥,主节点发送部分更新私钥
给用户;
S422:当用户id
i收到来自主节点ID
k的部分更新私钥
后,验证等式
是否成立,如果正确则认为主节点ID
k发送的部分更新私钥是正确的,否则就要求主节点ID
k重新发送,用户需要收集T″个以上的不同部分更新私钥;
S423:在接收部分更新私钥
后,用户计算新的部分私钥
并计算自己的私钥
S424:当从节点IDM申请更新私钥时,主节点IDi(i=1,...,N)计算s′i,M=f′i(H(IDM))(modp)并发送s′i,M给从节点;
S425:从节点ID
M收到s′
i,M后对其进行等式验证
如果正确则认为主节点ID
M发送的s
i,M是正确的,否则就要求主节点ID
M重新发送直到等式成立;
S426:从节点ID
M收到N个s
i,M后,计算从节点私钥
以及从节点公钥
进一步,步骤S5具体包括以下步骤:
S51:增加从节点,新的从节点IDM+1获得自己的从节点私钥/公钥,包括:
S511:当从节点IDM+1获得系统认可后,主节点IDi(i=1,...,N)计算si,M+1=fi(H(IDM+1))(modp)并发送si,M+1给从节点IDM+1;
S512:从节点ID
M+1收到s
i,M+1后对其进行等式验证
如果正确则认为主节点ID
M+1发送的s
i,M+1是正确的,否则就要求主节点ID
M+1重新发送直到等式成立;
S513:从节点ID
M+1收到N个s
i,M+1后,就计算从节点私钥
从节点公钥
S52:减少从节点,使被淘汰的从节点丧失本身的作用,包括:当从节点IDM被系统认定为淘汰节点时,则通过S4的更新主节点多项式来淘汰节点IDM。
进一步,步骤S6具体包括以下步骤:
S61:增加主节点,包括:
S611:当在不要求主私钥不变的情况下增加主节点IDN+1,则新的主节点按照正常情况向其他节点请求秘密值和发送自己对于其他节点的秘密值,并按正常主节点交互进行;
S612:当在要求主私钥不变的情况下增加主节点IDN+1,则需每个主节点IDi,其中i=1,...,N;分别生成更新多项式fi′(x)=a′i0+a′i1x+…+a′i(T-1)xT-1其中a′ij≠aij,通过对比公钥得知;
S613:主节点计算新多项式为f
i″(x)=f
i(x)-f
i′(x)=a″
i0+a″
i1x+…+a″
i(T″-1)x
T-1,并计算更新公钥
其中k=0,1,...,T-1,并更新值s′
ij=f′
i(H(ID
j))(modp),其中j=1,...,N+1,将ID
i发送s′
ij给ID
N+1;
S614:主节点ID
N+1验证等式
是否成立,如果等式成立,则认为ID
i为诚实的中心,否则,ID
N+1要求ID
i重新广播s′
ij直到等式成立;
S615:主节点ID
N+1分别计算
其中i=1,...,N+1;
S616:之后主节点计算自己的多项式fN+1(x):
S617:主节点更新自己的主节点公钥;
S62:减少主节点,使被淘汰的主节点丧失本身的作用,包括:当主节点IDM被系统认定为淘汰节点时,则通过S4的更新主节点多项式来淘汰主节点IDM。
本发明的有益效果在于:实现了在联盟链这种多中心环境下的支持节点动态变化密钥授权方案。在此环境下由于各个节点相互处于不信任状态,本身密钥生成是需要由专门的密钥生成中心。但是联盟链这种环境是去中心化的,本身是不期望存在有中心掌握过高的权利。因此本方案解决了在多中心环境下,各节点相互交互共同维护密钥生成。另外由于系统中的节点是可以动态变化的,本方案还解决了当系统内节点发生更新时的密钥系统维护方法。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
图1为本发明所述系统模型示意图;
图2为本发明所述针对联盟链的支持节点动态变化的密钥授权方法流程框图;
图3为系统初始化流程框图;
图4为主节点初始化流程框图;
图5为用户主节点与私钥生成流程框图;
图6为更新主节点多项式流程框图;
图7为更新从节点流程框图;
图8为更新主节点流程框图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
本发明的系统模型如图1所示,该模型由三层组成,分别为主节点层、从节点层和用户层,首先主节点通过协议进行交互,协商出该系统的密钥以及他们各自的密钥。接下来通过他们的授权能力通过与从节点交互,授予被系统认可的从节点分发部分密钥的能力。结合共识算法的一些定义,我们需要保证其中主节点的数量不少于从节点数量,并且其门限值不得小于总结点数量的三分之一。最后,用户层通过认证和交互获取自己的密钥。
本发明提供的一种针对联盟链的支持节点动态变化的密钥授权方法流程参见图2,包括以下步骤:
S1:系统初始化:联盟链服务器根据安全参数生成系统公共参数;
可选地,参见图3,所述步骤S1包括如下步骤:
S11:联盟链服务器初始化,包括:
S111:联盟链服务器随机选择一个素数p,G和GT是两个阶为素数q的乘法循环群,g是G的生成元,双线性映射e:G×G→GT;
S112:服务器定义并生成两个哈希函数:
之后服务器公开公共参数params={G,G
T,p,g,e,H,H
1,H
2,T,N},其中T为门限值,N为联盟链中心个数;
S2:主节点初始化:在主节点层各个主节点根据系统发送公共参数,通过相互交互和认证来生成各自的主节点公/私钥对以及系统主公/私钥对,并将参数y和
添加到公共参数中;
可选地,参见图4,所述步骤S2包括如下步骤:
S21:主节点生成节点私钥/节点公钥,包括:
S211:每个联盟链主节点IDi根据所接收的公共参数随机选择一个T-1阶的多项式fi(x)=ai0+ai1x+…+ai(T-1)xT-1,其中ai0作为IDi的主节点私钥;
S212:每个ID
i分别计算和广播
其中k=0,1,...,T-1;
S213:每个IDi计算秘密值sij=fi(H(IDj))(modp),其中j=1,...,N,之后IDi发送sij给IDj,其中i≠j;
S214:每个主节点ID
i验证等式
是否成立,如果等式成立,则认为ID
j为诚实的主节点,否则,ID
i要求ID
j重新广播s
ji直到等式成立;
S215:当主节点ID
i收到N-1个来自其他主节点发来的秘密值s
ji(j=1,...,i-1,i+1,...N),之后主节点可以构建它的主节点私钥
和主节点公钥
S22:主节点生成系统主公钥y及新参数,包括:
S221:根据上述阶段,所有主节点都可以根据其他主节点的主节点公钥生成系统主公钥y:
S222:之后每个主节点增加参数y和
加入公共参数params当中:
S3:用户idi注册与私钥的生成:用户通过向其需要注册的主节点提供身份信息进行注册,主节点接收到注册信息后去校验身份信息是否正确,如果确认正确则向用户发送授权信息,用户接收授权信息后,通过使用授权信息向其他节点申请部分私钥,其他节点通过验证用户的授权信息,如果验证通过则发送部分私钥给用户,用户接收部分私钥并验证,最终合成自己的用户私钥;
可选地,参见图5,所述步骤S3包括如下步骤:
S31:用户idi的注册,包括:
S311:用户id
i申请加入系统,向主节点ID
j提供身份信息进行注册,通过认证后,主节点发送授权
其中timestamp为授权的时间戳;
S32:用户idi的私钥生成,包括:
S321:用户id
i发送授权信息S
ij和时间戳timestamp给其他节点ID
k,ID
k验证等式
如果等式成立则发送部分私钥
否则拒绝发送;
S322:当用户id
i收到来自节点ID
k的部分密钥
后,可以验证等式
是否成立,如果正确则认为节点ID
k发送的部分私钥是正确的,否则就要求节点ID
j重新发送,用户需要收集T个以上的不同部分私钥;
S323:在接收部分密钥
后,用户可以计算自己的私钥
S4:更新主节点多项式:由于在节点减少时,必须通过改变多项式的方式来消除原本节点所具有的能力。针对主节点和从节点不同的身份,中心节点通过更新多项式,来进行节点进入系统和退出系统时的节点更新;
可选地,参见图6,所述步骤S4包括如下步骤:
S41:主节点更新多项式,主节点IDi更新自己的多项式与其他节点达成一致,包括:
S411:每个主节点IDi生成自己的更新多项式fi′(x)=a′i0+a′i1x+…+a′i(T-1)xT′-1,如果要求不变更主私钥时(在现实应用中几乎不会出现要求改变主私钥的情况),则各个主节点设a′i0=0。如果要求增加门限T,则设T′>T。如果要求门限T保持不变,则设a′i(T-1)≠-ai(T-1)。如果要求降低门限T(在现实应用中几乎不会出现要求降低门限的情况),则设(a′i(T′-1)=-ai(T′-1),...,a′i(T-1)=-ai(T-1))。
S412:之后主节点计算新多项式为f
i″(x)=f
i(x)+f
i′(x)=a″
i0+a″
i1x+…+a″
i(T″-1)x
T″-1,并计算更新公钥
其中k=0,1,...,T″-1并更新值s′
ij=f′
i(H(ID
j))(mod p)其中j=1,...,N,之后ID
i发送s
ij给ID
j,其中i≠j;
S413:每个主节点ID
i验证等式
是否成立,如果等式成立,则认为ID
j为诚实的主节点,否则,ID
i要求ID
j重新广播s′
ji直到等式成立;
S414:当主节点ID
i收到N-1个来自其他主节点发来的秘密值s′
ji(j=1,...,i-1,i+1,...N),之后主节点可以构建它的主节点私钥
主节点公钥
和更新公钥
S415:根据上述阶段,所有主节点都可以根据其他主节点的主节点公钥生成系统主公钥y″:
S416:之后每个主节点增加参数y″和
加入公共参数params当中:
S42:主节点私钥和用户私钥进行更新,包括:
S421:用户id
i向主节点ID
k申请更新密钥,主节点发送部分更新私钥
给用户;
S422:当用户id
i收到来自主节点ID
k的部分更新私钥
后,可以验证等式
是否成立,如果正确则认为主节点ID
k发送的部分更新私钥是正确的,否则就要求主节点ID
k重新发送,用户需要收集T″个以上的不同部分更新私钥;
S423:在接收部分更新私钥
后,用户计算新的部分私钥
之后计算自己的私钥
S424:当从节点IDM申请更新私钥时,主节点IDi(i=1,...,N)计算s′i,M=fi′(H(IDM))(modp)并发送s′i,M给从节点;
S425:从节点ID
M收到s′
i,M后对其进行等式验证
如果正确则认为主节点ID
M发送的s
i,M是正确的,否则就要求主节点ID
M重新发送直到等式成立;
S426:从节点ID
M收到N个s
i,M后,从节点就可以计算它的从节点私钥
从节点公钥
S5:增加/减少从节点:从节点本身一般是属于小型机构或者单位,本身并不能和主节点具有相同的安全能力,因此,从节点自然无法承担过多的责任。但是我们需要从节点可以起到和主节点相同的作用,因此从节点只可以为用户进行密钥授权,却没有更新节点的权利;
可选地,参见图7,所述步骤S5包括如下步骤:
S51:增加从节点,新的从节点IDM+1获得自己的从节点私钥/公钥,包括:
S511:当从节点IDM+1获得系统认可后,主节点IDi(i=1,...,N)计算si,M+1=fi(H(IDM+1))(modp)并发送si,M+1给从节点IDM+1;
S512:从节点ID
M+1收到s
i,M+1后对其进行等式验证
如果正确则认为主节点ID
M+1发送的s
i,M+1是正确的,否则就要求主节点ID
M+1重新发送直到等式成立;
S513:从节点ID
M+1收到N个s
i,M+1后,从节点就可以计算它的从节点私钥
从节点公钥
S52:减少从节点,使被淘汰的从节点丧失本身的作用,包括:
S521:当从节点IDM被系统认定为淘汰节点时,则通过S4的更新主节点多项式来淘汰节点IDM;
S6:增加/减少主节点:主节点作为系统的主要节点,本身承担了整体系统安全性的责任,并且往往主节点都是要有大型机构或单位进行承担,因此它在系统中的所具备的能力要比从节点要高,具有管理部分密钥以及添加从节点的能力,增加了系统的灵活度;
可选地,参见图8,所述步骤S6包括如下步骤:
S61:增加主节点,包括:
S611:当在不要求主私钥不变的情况下增加主节点IDN+1,则新的主节点可以按照正常情况向其他节点请求秘密值和发送自己对于其他节点的秘密值,并按正常主节点交互进行即可;
S612:当在要求主私钥不变的情况下增加主节点IDN+1,则需每个主节点IDi,其中i=1,...,N。分别生成更新多项式fi′(x)=a′i0+a′i1x+…+a′i(T-1)xT-1其中a′ij≠aij,可以通过对比公钥得知;
S613:主节点计算新多项式为f
i″(x)=f
i(x)-f
i′(x)=a″
i0+a″
i1x+…+a″
i(T″-1)x
T-1,并计算更新公钥
其中k=0,1,...,T-1并更新值s′
ij=f
i′(H(ID
j))(mod p)其中j=1,...,N+1,之后ID
i发送s′
ij给ID
N+1;
S614:主节点ID
N+1验证等式
是否成立,如果等式成立,则认为ID
i为诚实的中心,否则,ID
N+1要求ID
i重新广播s′
j直到等式成立;
S615:主节点ID
N+1分别计算
其中i=1,...,N+1;
S616:之后主节点计算自己的多项式fN+1(x):
S617:主节点更新自己的主节点公钥;
S62:减少主节点,使被淘汰的主节点丧失本身的作用,包括:
S621:当主节点IDM被系统认定为淘汰节点时,则通过S4的更新主节点多项式来淘汰主节点IDM。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。