一种基于群签名的许可区块链匿名背书方案*

2022-07-13 00:47张明武夏禹轩张语荻陈启祥
密码学报 2022年3期
关键词:背书排序许可

张明武, 夏禹轩, 张语荻, 陈启祥, 杨 波

1. 湖北工业大学计算机学院, 武汉 430068

2. 襄阳湖北工业大学产业研究院, 襄阳 441100

3. 广西密码学与信息安全重点实验室, 桂林 541004

4. 陕西师范大学计算机科学学院, 西安 710119

1 引言

区块链技术(Blockchain) 是分布式存储、点对点传输、加密算法、共识机制等结合的新型应用, 能够实现无中心化节点的大型数据的存储、更新、追溯等, 以及服务参与者的激励. 区块链最初在2008 年由中本聪提出的比特币项目中开始被人们关注, 比特币通过技术手段实现了去中心化的加密货币交易方案, 并且取得了巨大成功[1,2]. 2013 年以太坊[3]中引入智能合约的概念, 使得通过程序实现自动化的业务处理变得更加容易. 随着区块链应用领域的不断扩展, 各种区块链技术与平台也随之出现, 例如面向企业应用解决方案的Hyperledger Fabric[4], 以及更加注重保护隐私的Zcash[5]等. 区块链技术得到长足的发展和应用, 不仅在加密货币方面, 同时在金融、医疗、电子政务等领域也得到广泛应用[6,7]. 然而, 现有区块链上大多数区块链的实现依赖链上数据的公开透明, 这与现在普遍应用场景所需要遵循的隐私保护要求不相符, 区块链隐私问题成为区块链除效率外阻碍其实施与应用的又一难题[8].

针对区块链隐私问题学者提出了隐私保护的方法, 主要集中在交易的隐私保护[9], 较少涉及到区块链背书隐私保护问题. 区块链背书(block endorsement) 是区块链实现共识的基础, 其背书者身份的泄漏会威胁到整个区块链共识的安全, 然而现在大多数区块链包括许可区块链并没有对背书采取具体的隐私保护手段. 例如, 针对目前使用最广的联盟许可区块链的Hyperledger Fabric, 仅通过分析其背书签名就可以轻易获取某项特定交易的背书策略, 从而得知参与此项交易的背书节点身份. 在背书节点身份泄露的情况下, 攻击者通过对指定背书节点的DDOS 攻击或阻拦通信, 可以用极小的代价阻碍相关交易的正常执行,而如果可以实现对特定背书节点的腐蚀或共谋, 甚至可以威胁到整个交易的安全[10].

针对背书中存在的隐私问题, Mazumdar[11]等人提出一种针对Hyperledger Fabric 的匿名背书方案, 该方案保证背书节点身份的匿名性, 并且可以在匿名条件下实现(t,n) 门陷的背书策略, 但该方案在交易发生歧义或问题时无法快速进行身份追踪, 这与现有的大多数联盟区块链应用要求相违背, 也为区块链溯源增加了困难, 而且每次背书策略改变或者需要增加或减少背书节点时都必须重新分配密钥, 造成整个系统效率低下.

群签名方案在实现匿名验证中一直有着不错的效果, 除了群管理员, 其它人都无法获知签名者的身份,只有群内成员才能生成合法签名, 在发生争议时, 可以由群管理员通过打开签名确认签名者身份. 群签名的概念首先由Chaum 等人[12]提出, 在1997 年Camenisch 等人[13]提出首个针对大群组的群签名方案,该方案加入新成员时不需要重新更新其它成员的密钥, 但该方案没有考虑如何安全高效地撤销群内成员.Kim 等人[14]提出了一个可以撤销群成员的群签名方案, 但每次撤销都需要重新更新其它群成员密钥, 带来额外的开销. 文献[15] 提出了基于中国剩余定理的群签名, 其优势在于在成员的加入和注销时不用改变已经生成的密钥, 更为灵活, 但该方案并不能抵抗联合攻击以及实现非关联性. 文献[16] 针对该方案进行了改进, 提出了能抵抗联合攻击的基于中国剩余定理的群签名方案.

本文使用基于中国剩余定理的群签名方案实现可灵活更改背书策略的许可区块链背书方案, 可以满足(t,n) 策略的验证要求, 同时满足许可区块链的溯源要求.

1.1 本文贡献

基于依托中国剩余定理的群签名方案, 本文设计了一种可以应用于许可区块链上的匿名背书方案, 保护了许可区块链上的背书节点身份隐私以及区块链交易的背书策略信息, 主要贡献如下:

(1) 通过应用中国剩余定理实现背书成员的快速加入以及退出, 解决了已有匿名背书方案的背书成员加入以及退出低效的问题.

(2) 引入Schnorr 签名提高群签名过程中的签名及验证效率, 从而提高了整个匿名背书系统效率.

(3) 设计了可以隐藏背书策略的匿名背书方案, 并且满足背书节点权重不对等条件下的许可区块链应用需求, 同时该方案还兼容新旧签名的验证以及对以往交易的溯源. 同时, 给出了方案的实验结果及性能分析.

2 预备知识

2.1 区块链及背书

2.1.1 许可区块链和非许可区块链

区块链根据其节点的加入及对网络的访问可以划分为许可区块链与非许可区块链. 最初非许可区块链如: 比特币以及以太坊得到极力推广, 因为它们在实现去中心的可信任系统具有优势, 但随着区块链技术的发展及其与商业应用的结合, 需求发生了变化, 更加贴切企业生产环境要求的许可区块链被提出, 其中的佼佼者是IBM 的Hyperledger Fabric. 在许可区块链环境下, 为满足生产的需要, 通常采取半中心化或中心化的结构, 通过设置权限及访问限制来保证整个区块链网络的安全, 同时保留了非许可区块链原有的数据不可篡改, 智能合约自动化处理交易、共识协议保证交易的一致性等特性.

2.1.2 Hyperledger Fabric 许可区块链背书

比特币及以太坊等公有链采取先排序再执行的交易流程, 对智能合约有着严格的要求, 必须保证智能合约在任何机械、任何时间针对相同的输入都必须输出确定性的结果, 因此对智能合约的编写和使用有着很高的限制. 如图1 所示, Hyperledger Fabric 许可区块链采用执行-排序-验证的交易流程[17], 其先通过背书节点模拟执行, 然后选取一致的背书结果, 再排序验证. 这在保证交易一致性的硬性要求下, 给了智能合约编写更灵活的空间, 因此其智能合约开发可以使用Golang、Java 等高级语言, 但也使得其更依赖于底层的背书来保证交易的一致性和正确性, 其交易背书流程可见图2, 简述为以下几步:

图1 Hyperledger Fabric 与非许可区块链交易流程Figure 1 Hyperledger Fabric and non-permissioned chain transaction process

图2 Hyperledger Fabric 交易背书流程Figure 2 Framework of Hyperledger Fabric transaction endorsement

(1) 系统初始化, 设定背书策略并在相应的背书节点上安装智能合约.

(2) 发送交易请求, 客户端向背书策略中的背书节点发送交易请求.

(3) 收集背书结果, 背书节点模拟执行, 返回背书结果读写集及签名, 客户端收集并背书结果直至满足所需的背书策略.

(4) 交易排序, 客户端将背书结果及签名发送至排序节点, 排序节点验证签名, 背书策略是否满足, 交易是否完整, 交易是否已经存在.

(5) 打包及广播, 排序节点将排序好的交易打包成区块, 然后广播给区块链网络内的可以记账的节点,让它们写入账本.

2.1.3 Hyperledger Fabric 许可区块链背书分析

分析许可区链交易背书过程, 我们发现其存在以下安全性问题:

(1) 一项交易的链码在安装后, 除非链码更新, 其背书策略都不会改变, 交易的背书节点固定, 这在关键背书节点故障时会影响到整个交易的正常执行, 且背书节点固定也会增加受到针对特定交易的攻击.

(2) 背书策略不光交易的发起者知道, 所有参与的背书节点以及排序节点都知道, 因此除非以上所有参与者都足够诚信, 否则背书策略很容易暴露给第三方, 现实情况下这种诚实性是很难保证的.

(3) 当区块链成员进行隐私交易的时候, 由于背书过程中排序节点及客户端都需要验证背书策略是否满足, 因此必须向排序节点或客户端公开交易的背书及相关隐私信息, 这是在很多应用情况下, 比如电子政务或涉及患者隐私信息的医疗领域都不乐见的.

2.2 安全与密码学原语

2.2.1 中国剩余定理

设p1,p2,··· ,pk是k个两两互素的正整数,k ≥2, 对于任意整数y1,y2,··· ,yk, 满足:

该方程的正整数解可表示为:

2.2.2 Schnorr 签名

Schnorr 签名[18]是基于离散对数安全假设的签名方案, 具体方案如下:

(1) 系统初始化: 选取满足p ≥2512大素数p, 选取大素数q, 满足q|(p −1),q ≥2160, 从Z∗p中选取元素g, 满足gq ≡1 (modp), 选取一个安全的hash 函数h:{0,1}→Z∗q.

(2) 密钥生成: 生成用户秘密钥x, 满足1

(3) 签名的产生: 输入待签名的消息m, 签名者执行: 选择满足1

(4) 签名的验证: 在接收方收到消息m和数字签名σ=(e,s) 后, 先计算r′≡gsy−e(modp), 然后计算e=H(r,m), 验证等式H(r′,m)=e是否成立, 若成立则签名合法, 否则签名非法.

2.2.3 群签名

群签名方案是一种特殊的数字签名方案, 群中的任何人可以产生代表群的签名, 签名的验证者只能验证签名是否由群内成员产生, 而不能获知签名者的具体身份[20]. 一个群签名方案包括以下功能的算法:

(1) 创建: 产生群公钥和私钥的多项式时间概率算法.

(2) 加入: 用户和群管理人之间的使用户成为群成员的交互式或非交互式协议. 执行该协议可产生群成员的私钥和成员证书, 并使群管理人得到群成员的成员管理钥.

(3) 签名: 当输入一个消息和一个群成员的私钥后, 输出对该消息的签名.

(4) 验证: 在输入对消息的签名及群公钥后确定签名是否有效.

(5) 打开: 在给定一个签名及群私钥的条件下确定签名人身份.

群签名的安全性包含以下几方面:

•匿名性: 除了群管理员, 任何人不能得到签名者的具体身份.

•非关联性: 在不打开签名的情况下, 获知两个不同的签名是否由同一个成员签署的, 在计算上是困难的. 在某些特定的应用场景下群签名可以不满足该性质, 比如投票中防止重复投票.

•防伪造性: 只有群成员才能生成有效的签名.

•可追踪性: 群管理员在有必要的时候可以打开一个签名, 而签名者不能阻止合法签名的打开.

•防陷害性: 包括管理员在内的任何群成员都不能以其他群成员的名义生成一个合法的签名.

•抗联合攻击性: 即使一些成员串通也不能生成一个合法的不能被攻击的群签名.

2.2.4 基于中国剩余定理的群签名方案

群签名方案有很多种构造方法, 本节介绍一种基于中国剩余定理的群签名方案[15], 方案构造如下:

3 许可区块链的匿名背书

3.1 匿名背书的群签名方案

本文结合Schnorr 签名与中国剩余定理群签名方案给出的群签名方案, 可以灵活快速地实现成员的加入以及注销, 且能防止许可区块链背书中的同一成员多次签名同一消息.

3.1.1 具体方案

本匿名背书的群签名方案包括7 个算法: 系统建立、成员的加入、用户的撤销、签名的生成、签名验证、背书策略的验证和签名的打开等. 具体方案构造如下:

(1)系统建立: 系统建立阶段会进行系统初始化及密钥生成, 具体流程参见图3 所示. 步骤如下:

图3 系统初始化及密钥生成Figure 3 System initialization and key generation

(a) 区块链管理员在进行链码安装时首先确认要安装的链码所设定的背书策略, 在本匿名背书方案下, 不使用原Fabric 许可区块链的and 及or 逻辑的背书策略, 而是按照选定的背书节点权重及数量转换为相应的(t,n) 门限背书策略, 即此模式下当有权重总和为t的背书节点完成背书时, 该交易背书被认为是有效的.

(b) 管理员选取待背书节点, 节点总数记为k, 为每个背书节点设置权重ti(i指代第i个背书节点编号), 并保证选取的背书节点的总权重满足d=t1+t2+···+tk>t(为保证容错性背书节点的总权重n不能与背书策略要求的权重t过于接近), 将各个节点权重与身份的对应关系记录到表{ID,ti}中.

(c) 根据参与的背书节点总数d的数量选取相同数量的大素数pi, 选取对应数量的大素数qi, 满足qi|(pi −1). 选取所有Z∗pi共同的生成元g, 满足gqi ≡1 (modpi),i=1,2,··· ,k.

(d) 选取一个安全的哈希函数:H(·). 计算P=p1p2···pk, 将pi和qi发送给安装了链码的背书节点.

(e) 背书节点收到区块链管理员发送的pi,qi后, 选取密钥xi, 满足1

(f) 区块链管理员收到yi后, 确保i ̸=j时,yi ̸=yj, 记录{ID,yi,ti}对照关系表, 构造满足式(1)的同余方程组. 并求该方程组的唯一解:

其中Pi,如2.2.4 节所述, 之后区块链管理员公开(g,c,pi),i=1,2,··· ,k.

(2)成员的加入: 对于新成员的加入, 执行如下过程:

(3)撤销用户: 区块链管理者将退出的背书节点ID 对应的yi设为不同的随机数, 然后重新计算并公开参数c.

(4)签名的生成: 背书节点选取随机数ri, 满足1

(6)背书策略的验证: 签名验证者在经过u的签名收集时间后, 将计算收集的yi集合发送给区块链管理者, 由区块链管理者查询(ID,yi,ti), 得到ti, 验证t1+t2+···+tl>t(l为区块链管理员收到的yi总数), 并将结果布尔值返回给验证者, 验证者根据验证结果判断收集到的签名是否满足背书策略要求, 具体验证流程可见图4.

图4 签名的生成和验证Figure 4 Signature generation and verification

(7)签名的打开: 区块链管理者根据签名信息中的pi计算yi ≡c(modpi), 在(ID,yi,ti) 对照表中

查找对应背书节点的身份ID.

3.1.2 方案分析

(6)背书权重隐藏: 区块链管理者通过收到的yi查询权重ti, 验证t1+t2+···+tl>t, 并返回结果,验证过程中, 验证者无法获知具体背书节点的权重情况, 只能得到背书结果是否满足背书策略的布尔值.

(7)防止同一成员对同一消息重复背书: 许可链背书过程中要求交易背书中背书结果及签名由不同的背书节点产生, 在本方案中验证者可以通过签名中的pi判断该签名是否由同一背书节点产生.

3.2 匿名背书方案的设计

3.2.1 系统结构

本背书方案参与方包含以下成员, 其结构见图5 所示:

图5 匿名背书系统结构Figure 5 Anonymous endorsement system structure

(1) 客户端: 安装在用户节点上的应用程序, 负责发起交易的背书请求以及收集背书结果和签名.

(2) 背书节点: 负责交易的背书, 会模拟执行智能合约, 输出背书结果及相应的群签名.

(3) 排序服务: 由排序节点和提交节点组成. 排序节点负责验证客户端发送的交易是否满足背书策略,交易的完整性以及交易是否已经存在, 还有对已验证的交易进行排序. 提交节点负责将排序好的交易打包成块然后广播给网络内记账的节点.

(4) 记账节点: 包含所有在区块链网络中可以记账的节点, 这些节点将排序好的交易按顺序写入本地账本, 共同维护某一智能合约中的交易账本.

(5) 智能合约: 在本方案中以链码形式安装在相关节点上, 对应一个背书策略, 会自动对输入的交易进行处理输出一个读写结果集.

3.2.2 系统初始化及智能合约的安装

(1) 区块链用户, 开发者及区块链管理者确定待安装的智能合约及所需要的背书策略(t,n), 为所有拟加入背书的节点安装智能合约及配置背书策略门限要求t, 并收集安装成功与否的反馈结果.

(2) 区块链管理者生成一个匿名背书节点候选集群E, 将所有安装成功的拟参与许可区块链背书的节点添加到该集群E中, 为候选集E中的每一个背书节点分配参数pi,qi, 设置背书权重ti. 将pi,qi发送给候选背书节点, 收集候选背书节点计算的参数yi, 根据背书节点的身份ID 记录关系对照表(ID,yi,ti).

(3) 所有以上参数分配及收集完成后, 区块链管理计算群签名的关键参数c, 向区块链所有有背书验证权限的节点公开参数(g,c,pi), 将背书策略门限要求t发送给排序节点.

(4) 每经过一段时间, 区块链管理员从背书候选集合E选取子集F, 保证F中的背书节点权限ti之和大于t,F作为当前时刻使用的背书节点集合列表发送给用户的客户端.

参数t,pi,qi,ti和yi的选取和生成,c的计算具体可见3.1.1 节.

3.2.3 用户订阅

用户通过订阅相关交易的背书服务来加入许可区块链中的具体交易:

(1) 区块链的已注册用户向区块链管理员申请加入交易.

(2) 申请通过后区块链管理员向其发送公开参数(g,c,pi), 当前时刻的背书节点集合F, 为其安装交易智能合约及配置背书策略门限要求t.

3.2.4 背书策略的更新及候选背书节点的加入和退出

(1) 背书策略更新当需要进行背书策略更新时, 因为本方案中智能合约和背书策略分开, 因此只需要区块链管理员更新背书策略门限要求t, 将其发送给用户客户端和排序节点即可.

(2) 候选背书节点的加入当新的背书节点需要加入时, 区块链管理员将新生成的pi+1,qi+1发送给新的候选背书节点, 收集候选背书节点计算的参数yi+1, 根据背书节点的身份ID 将新的身份关系(ID,yi+1,ti+1) 添加到关系对照表(ID,yi,ti), 重新计算c并公布, 将新的候选节点添加至集合E中.

以上操作均不需要改变其它背书节点的验证参数yi, 背书节点的加入及退出通过计算公布新的参数c即可完成.

3.2.5 匿名背书交易流程

匿名背书交易流程可见图6, 具体如下:

图6 匿名背书流程Figure 6 Anonymous endorsement process

(1) 发送交易请求

当区块链用户需要执行交易时, 通过其客户端根据自己已有的背书节点集合列表F向背书节点发送广播交易请求m, 以及自己对m的签名sc.

(2) 背书节点模拟执行

背书节点收到后先验证客户端的签名sc, 然后用智能合约进行模拟执行, 输出执行结果读写集resi,然后根据统一的哈希函数H生成相应的读写集resi的哈希值H(resi), 使用在3.1.1 节中方案描述的自己的xi对H(resi) 生成相应的签名si, 最终签名为(si,ei,pi), 其中ei为签名中计算出来的参数,pi在系统初始化阶段由区块链管理员发给背书节点.

算法1 交易背书Input: parameters m, sc, xi, pi, qi, ri Output: result H(resi), ei, si 1 if ver(sc,m) == true then 2execute the smart contract to get the result;3resi = result;4Ri ≡gri (mod pi);5ei = H(Ri||m);6si ≡ri +xiei (mod qi);7 end 8 return H(resi),ei,si

(3) 返回匿名背书结果

各背书节点将上步过程中产生的签名si及读写哈希值H(resi) 发送回提交交易请求的客户端.

(4) 背书结果收集

客户端在本地进行模拟执行然后根据统一哈希函数对结果进行哈希, 生成本地读写集res′的哈希值H(res′), 收集背书结果, 判断H(res′)=H(res) 是否成立, 成立则验证该群签名si(验证方法可见3.1.1 节中的签名验证), 验证通过后将{m,H(resi),si}加入待发送的结果集合F中, 判断是否已经收集到集合F中所有背书节点的签名, 或者时间是否超过背书时限Te, 是则准备将其发送给排序节点.

算法2 背书结果收集Input: parameters m, si, ei, pi, H(resi), total Output: result F 1 execute the smart contract to get the result;2 res′ = result;3 create set F for each i in all do 5 add {m,H(resi),si} to set F;4if H(res′) == H(resi) AND ver(si,m,ei,pi) == true then 6 if time out OR i ≥total then 7 break;end 9end 10 end 11 return F 8

(5) 发送交易及背书结果

将上一步的结果集合F及客户端自己的签名sc发送给区块链排序节点.

(6) 背书策略验证及交易排序

排序节点收到客户端发送的背书节点集合后首先检查客户端的签名sc是否正确, 然后检查签名是否存在同一背书节点多签的情况(通过计算yi ≡c(modpi) ), 在区块链管理员的辅助下验证是否满足背书策略要求t, 满足则进行每个群签名si的验证. 验证通过后检查交易m的完整性, 是否已经存在, 全部通过后进行交易排序, 输出排序后的交易TX.

算法3 交易排序Input: parameters m, sc, si, yi, ti, t Output: result TX 1 if ver(sc,m) == True AND when i ̸= j,yi ̸= yj then 2if sum(ti) ≥t then 3 for each i in all do 4 if ver(si,m,ei,pi) == true AND transaction m is complete and not repeated then 5 add m to set TX;6 end end 8end 9 end 10 sort TX;11 return TX 7

(7) 生成区块, 广播及记账

当排序完成后, 排序节点用排序后的交易TX 生成区块, 发送给提交节点, 提交节点发布新的世界状态, 并广播给区块链内的所有节点, 让它们进行复制, 写入各节点的账本.

3.2.6 许可区块链溯源及身份追踪

当交易出现争议或问题时, 为了进行溯源, 需要追踪背书节点身份. 在本匿名方案中, 追踪签名对应的yi仍然有效时, 只需要区块链管理员计算yi ≡c(modpi), 查询yi在现有关系对照表(ID,yi,ti) 中的对应ID 即可获取该背书节点身份. 追踪签名对应的yi失效时, 根据历史y′i失效记录时间time 查询历史关系对照表(time,c′,ID,y′i,t′i), 计算y′i ≡c′(modpi) 获取签名者身份ID.

算法4 背书节点身份追踪Input: parameters m, si, pi, c, (ID,yi,ti), (time,c′,ID,y′i,t′i)Output: result ID 1 yi ≡c (mod pi);2 if yi not in (ID,yi,ti) then 3get ID from (time,c′,ID,y′i,t′i);4 end 5 get ID from (ID,yi,ti);6 if ver(si,m,ei,pi) == true then 7return ID;8 end 9 return signature illegal

4 仿真实验及分析

本实验使用电脑 CPU 为 Intel(R) Core(TM) i7-9750H, 内存为 8 GB, 操作系统为 64 位的Ubuntu 20.04.1 LTS, 使用编写语言为与Hyperledger Fabric 源码相同的Golang, Golang 版本为1.15, 使用库主要包含Golang 的math/big, crypto 中的rand 及SHA3 库, Schnorr 签名使用库github.com/ChainSafe/go-schnorrkel. 具体实验分为群签名的效率测试实验及在Hyperledger Fabric 许可区块链上的匿名背书仿真实验两部分.

4.1 群签名性能测试及分析

该部分实验通过编写Golang 代码, 测试方案中的群签名在签名及验证的效率, 方案中的加入以及删除新的成员节点的效率, 测试结果可见图7. 分析以上测试结果可知, 本方案中的群签名部分在签名上的效率要稍差, 验证效率良好, 考虑匿名背书中因为签名部分是并行处理的, 实际影响不会很大. 成员加入部分, 因为包含新成员的密钥生成, 花费时间较长, 但也在可接受的范围内, 成员删除部分则有着很高的效率.

图7 (a) 签名和验证; (b) 成员节点的加入; (c) 成员节点的删除;Figure 7 (a) Signing and verification; (b) Joining of member nodes; (c) Deletion of member nodes

4.2 Hyperledger Fabric 许可区块链上的仿真实验及分析

本部分实验通过部署版本1.4.6 的Hyperledger Fabric 并编写代码来仿真模拟实现, 以测试本方案应用对许可区块链的效率的影响. 我们部署的Hyperledger Fabric 包含两个组织, 每个组织各有两个peer节点, 它们同时具有背书节点及记账节点身份, 五个orderer 节点用来实现排序服务及raft 共识. 实验中的交易请求除了初始交易请求由排序节点发出, 其它均由组织2 的管理员节点上的客户端发出. 设定的背书策略为上述四个peer 共同完成交易背书, 通过Golang 的math/rand 为背书节点随机设定的背书权重, 范围为1 至3, 权重总和达到5 即背书成功.

实验样本采用2750 条独立的交易数据, 并将这些数据以50 为单位递增, 分为10 组, 分别进行交易的执行实验, 对最后的结果处理中, 我们去掉实验结果中的最大及最小误差项并对剩下数据进行平均处理,实验测试结果可见表1、图8. 对以上数据分析对比可知, 使用本方案中的匿名背书方法对Fabric 许可区块链的交易执行效率影响较小, 整个许可区块链交易在保证背书身份的匿名前提下仍具有较高执行效率.

图8 (a) 匿名背书交易执行时间与原Fabric 许可链交易执行时间(平均); (b) 交易时间差值Figure 8 (a) Anonymous endorsement transaction time and original Fabric permissioned blockchain transaction time (average); (b) Trading time difference

表1 匿名背书许可区块链交易执行时间Table 1 Running time of anonymous endorsement permissioned blockchain transaction

5 结束语

本文在基于现有许可区块链中存在的安全问题, 提出了一种基于群签名的许可区块链匿名背书方案.通过中国剩余定理实现适用于许可区块链匿名背书要求的群签名方案, 该方案除了实现对背书节点身份的保护外, 还解决了现有许可区块链匿名方案中存在的成员加入与删除效率不高的问题. 在此基础上, 提出了一种以Hyperledger Fabric 许可区块链为基础的匿名背书方案, 该方案可以实现非对等的权重背书节点配置下的匿名背书, 以满足许可区块链应用中的溯源要求. 通过在Hyperledger Fabric 许可区块链上的仿真实验, 给出方案的测试结果, 实验分析表明使用所提出的许可区块链背书, 在具有匿名性的前提下仍有着较好的计算效率.

猜你喜欢
背书排序许可
版权许可声明
版权许可声明
背书是写作的基本功
作者简介
背书
恐怖排序
节日排序
关于许可对人大代表采取强制措施制度的探讨
背书连续性若干问题探析