1.一种针对联盟链的高效认证方法,其特征在于:包括以下步骤:S1:系统初始化:联盟链服务器根据安全参数生成系统公共参数;包括如下步骤:S11:联盟链服务器随机选择一个素数p,G和GT是两个阶为素数p的乘法循环群,g是G的生成元,双线性映射e:G×G→GT;
*
S12:服务器定义并生成两个哈希函数:H:{0,1}→G; 然后服务器公开公共参数params={G,GT,p,g,e,H,H1,N},其中N为联盟链中心个数;
S2:各个联盟链中心CBA根据公共参数生成参数h、各自的公/私钥对以及主公/私钥对;
包括如下步骤:
S21:联盟链中心CBA初始化生成参数h,包括:S211:每个联盟链中心IDi根据所接收的公共参数随机选择一个N‑1阶的多项式Hi(z)=N‑1ci0+ci1z+…+ci(N‑1)z ,其中N为联盟链中心个数;
S212:每个IDi分别计算和广播 其中k=0,1,...,N‑1;
S213:每个IDi计算秘密值tij,其中j=1,...,N,然后IDi发送tij给IDj,其中j≠i;
S214:每个中心IDi验证秘密值是否为真,如果是真则认为IDj为诚实的中心,否则,IDi要求IDj重新广播tji;
S215:每个中心IDi都可以计算参数S22:联盟链中心CBA生成自己的公/私钥对以及主公/私钥对,包括:N‑1
S221:每个IDi随机选择两个N‑1阶多项式Fi(x)=ai0+ai1x+…+ai(N‑1)x ,F′i(x)=bi0+N‑1bi1x+...+bi(N‑1)x ,其中ai0作为其私钥;
S222:每个IDi分别计算和广播 其中k=0,1,...,N‑1;
S223:每个IDi计算秘密值sij和s′ij,其中j=1,...,N,然后IDi发送sij和s′ij给IDj,其中j≠i;
S224:每个中心IDi验证等式 是否成立,如果等式成立,则认为IDj所发送的秘密值为真,否则,IDi要求IDj重新发送(sji,s′ji);
S225:所有中心一起才能够通过计算恢复联盟链中心CBA主私钥S226:每个中心IDi广播它的公钥 并计算 作为主公钥,然后将公钥与主公钥广播出去作为公共参数;
S3:用户的注册和密钥生成:用户向联盟链服务器请求注册,通过服务器验证后每个联盟链中心CBA生成该用户的部分私钥,用户接收部分私钥并根据公共参数验证部分私钥的正确性,之后用户使用部分私钥生成自己的公/私钥对;所述的用户idi注册与私钥的生成,包括如下步骤:S31:用户idi申请加入系统,向联盟链服务器提供身份信息进行注册,通过认证后,联盟链中心CBA为用户idi生成私钥;
S32:每个中心IDj计算部分密钥 并安全传送给用户idi;
S33:当用户idi收到来自中心IDj的部分密钥 后,验证等式是否成立,如果正确则认为中心IDj发送的部分私钥是正确的,否则就要求中心IDj重新发送;
S34:在接收部分密钥 后,用户计算自己的私钥S4:用户签名和联盟链中心签名:当用户选择好想要上传的消息后,使用用户私钥对消息进行签名,并将签名上传到所属联盟链的各个中心之后联盟链中负责上传区块的中心对这些数据打包并进行签名,最后将签名上传至联盟链中;
S5:联盟链中心签名认证:当用户或者中心接收到签名消息后,验证消息是否出自某个联盟链中的中心,如果验证通过,则接受消息并做后续处理,如果未通过,则拒绝接受消息;
S6:用户签名普通/批量认证:当用户或者中心接收到签名消息后,验证消息是否出自某个用户,并对消息进行批量验证,如果验证通过,则接受消息并做后续处理,如果未通过,则拒绝接受消息。
2.根据权利要求1所述的针对联盟链的高效认证方法,其特征在于:所述步骤S4包括如下步骤:S41:用户idi对消息m进行签名,包括:r
S411:用户idi随机选择整数 并计算u=H(0||idi)∈G;
S412:计算
S413:计算
S414:生成签名σ=(u,v);
S42:本次负责上传区块的联盟链中心IDi对用户上传的签名σ与消息m进行打包并签名和上传,包括:S421:联盟链每隔一段时间根据共识机制选出本次上传区块的联盟链中心IDi,IDi将这段时间内所有用户上传的签名σ与消息m打包成一个区块,其中区块看做消息M;
S422:中心IDi计算签名
S423:中心IDi上传区块和区块签名δ。
3.根据权利要求2所述的针对联盟链的高效认证方法,其特征在于:步骤S5中所述中心的签名认证,包括如下步骤:S51:接收区块消息M与其签名δ;
S52:验证等式e(δ,g)=e(H(1||M),Ai0),如果等式成立,则认为认证成立,否则认证失败。
4.根据权利要求3所述的针对联盟链的高效认证方法,其特征在于:所述步骤S6包括如下步骤:S61:用户普通签名认证,包括:
S611:接收用户消息m与其签名σ;
S612:计算
t
S613:验证等式e(v,g)=e(u,y)·e(H(0||idi) ,y)是否成立,如果等式成立,则认为认证成立,否则认证失败;
S62:用户批量签名验证,包括:
S621:当需要批量验证n条来自于同一个签名者idi的签名时,这n条签名(mj,σj=(uj,vj)),其中j=1,...,n,验证等式是否成立,如果等式成立,则认为认证成立,否则认证失败;
S622:当需要批量验证n条来自于n个签名者id1,...,idn的签名时,这n条签名σj=(uj,vj)对应于n个消息mj,其中j=1,...,n,验证等式是否成立,如果等式成立,则认为认证成立,否则认证失败。