为了解决Hyperledger Fabric使用固定背书节点进行背书而引发的安全问题, 提出了一种基于可验证延迟函数的Hyperledger Fabric背书策略优化方案. 利用可验证延迟函数不可并行计算以及可高效验证的特点, 设计了匿名化、随机化选取背书节点的Fabric交易模型, 增强了Fabric交易背书的安全性. 通过实验对比优化方案与原始方案, 验证了优化方案在增强安全性的同时, 在效率上也有一定的提升.
To solve the security problem of Hyperledger Fabric caused by the use of fixed endorsement nodes for endorsement, this study proposes an optimization scheme based on a verifiable delay function for the endorsement policy of Hyperledger Fabric. Considering that the verifiable delay function cannot be calculated in parallel but can be efficiently verified, a Fabric transaction model that anonymously and randomly selects endorsement nodes is designed to enhance the security of Fabric transaction endorsement. The experimental comparison between the optimized scheme and the original one verifies that the optimized scheme not only enhances security but also improves efficiency.
区块链技术是结合了密码学、数学、分布式计算等一系列学科的跨学科技术, 被广泛应用于农业、金融业、工业等现实场景中, 对现代经济社会的发展作出了重要贡献[
虽然去中心化的区块链技术解决了数据过于集中易被攻击的安全问题, 但也引发了一个新的问题, 即如何在一个去中心化、弱信任的分布式系统中让各个节点对系统的某一行为产生共识, 让系统节点产生共识的机制也被称为共识机制[
联盟链是在区块链技术基础上衍生的一种新的实用型分布式处理数据技术, 而Hyperledger Fabric正是在联盟链技术的基础上发展起来的. 它由 IBM、DAH等企业提交到Linux基金会[
背书提高了交易的效率, 排序保证了交易的一致性, 验证保证了交易的合法性, 这种将系统各个部分解耦的方式为Hyperledger Fabric提供了灵活的、可插拔式的功能选项, 使其广泛适用于各个场景. Hyperledger Fabric中的背书节点[
以上方案虽然都通过动态选取背书节点的方式将背书节点匿名化, 但没有考虑存在硬件加速计算的情况, 敌手可以通过增加算力的方式来达到伪造背书节点身份的目的. 可验证延迟函数是一类能够产生随机数且运算过程不能通过增加算力的方式加快的函数, 为了解决Hyperledger Fabric使用固定背书节点容易引发安全问题以及抵御并行加速计算, 本文在“背书-排序-验证”共识机制的基础上, 引入可验证延迟函数, 提出了Hyperledger Fabric共识机制的优化方案, 具体方案如下.
(1)将原先固定的背书节点改为候选背书节点集合, 引入可验证延迟函数, 利用可验证延迟函数输出随机数的特性, 通过设置阈值的方式从候选的背书节点集中动态选择背书节点对交易进行背书.
(2)因为可验证延迟函数不可并行加速计算的特性, 敌手在事先不知道密钥的情况下无法通过并行计算的方式伪造成被选择的背书节点.
(3)当背书节点对现有交易进行背书之后, 其背书节点的身份被释放, 该节点重新回到候选背书集合中, 可对接下来的交易进行背书, 提高交易的处理效率.
Hyperledger Fabric是由IBM、DAH等企业[
Hyperledger Fabric系统架构
共识机制是保证交易能被正确执行并且提交到链上的关键. 区别于传统的公有链共识机制, Hyperledger Fabric采用“背书-排序-验证”的方式对链上的交易达成共识. Hyperledger Fabric的原始交易流程如
(1)交易提案
(2)交易背书
Hyperledger Fabric原始交易流程
(3)交易排序
(4)交易提交
可验证延迟函数(verifiable delay function, VDF)是由Boneh 等人[
(1)
(2)
(3)
可验证延迟函数的运行流程如
可验证延迟函数运行流程
可验证延迟函数的概念被提出之后, 许多有效的构造也被相继提出. Wesolowski[
可验证延迟函数不可并行加速以及验证高效的特性可以用来增强公共可验证随机数的安全性, 是一个十分强大的工具, 研究人员也将其功能与区块链技术结合起来. 可验证延迟函数在Chia区块链的架构中扮演了重要的角色, 以太坊基金会和Protocol Labs也将其列为下一代区块链平台的核心角色.
本文在Hyperledger Fabric的原始架构基础上引入了可验证延迟函数, 将原始方案中固定的背书节点改为从背书节点候选集中随机抽取背书节点.
可验证延迟函数的设计关键是要保证匿名的攻击者在未持有背书节点私钥的情况下, 要想得出正确的运算结果以及身份证明, 需要进行大量的连续计算, 这种计算是不能并行加速的, 即不能靠增加计算资源来缩短求解结果的时间. 持有私钥的背书节点可以高效地实现计算求解, 得出正确的计算结果和证明. 本文基于Wesolowski[
本文的可验证延迟函数基于未知阶的RSA群, 密钥生成算法由式(1)、式(2)得出:
其中,
拥有私钥
(1)计算相关参数
(2)计算返回给验证者的结果
其中,
(3)生成证明
算法1. 陷门计算算法
输入:
输出:
Compute parameters
①
②
Compute result
③
Compute prove
④
⑤
⑥
⑦
没有私钥
(1)计算参数
(2)计算返回给验证者的结果
(3)生成证明
算法2. 计算算法
输入:
输出:
Compute parameter
①
Compute result
②
Compute prove
③
④
在算法2中, 计算结果由等式
身份验证算法通过验证结果
(1) 计算参数
(2)验证结果: 如果
只有在计算结果
算法3. 身份验证算法
输入:
输出:
Compute parameters
①
②
③
if
return true
else
return false
改进方案基于可验证延迟函数, 主要是从下列两个方面优化了交易流程.
(1)原始方案中的背书节点是固定且公开的, 客户端需要根据背书策略将交易提交给特定的背书节点进行背书确认. 由于背书是交易能否顺利进行的关键, 外部攻击者为了达到破坏或者安插不法交易的目的, 势必会攻击相应的背书节点, 而背书节点身份的透明又加剧了其遭受攻击的可能性. 本方案匿名化了背书节点, 候选背书节点集只有经过可验证延迟函数的计算后才能对交易进行背书. 由于背书节点的选取是随机的, 攻击者要想控制交易, 必须攻击候选背书节点集, 这增加了攻击者的攻击成本, 提高了背书节点的安全性.
(2)在原始方案中, 被背书策略指定的背书节点才能对交易进行背书. 在同一时间内, 如果被指定的背书节点都有交易要处理, 那么当有新交易被客户端提交给背书节点后, 只能处于等待阶段. 与此同时, 未被背书策略指定的背书节点处于空闲状态, 这造成了资源的浪费. 优化方案采取随机的方式抽取背书节点, 且候选背书集中的每个背书节点被抽取的概率都是相同的. 在同一时间下, 不同的交易可以被提交给不同的背书节点进行背书. 随着交易数量的增加, 繁忙的节点将不再被抽取为背书节点, 而空闲的背书节点被指定为交易背书, 这种随机方式提高了候选背书节点的利用率.
优化后的Hyperledger Fabric交易流程如
优化后的Hyperledger Fabric交易流程
(1)客户端发起提案
(2)候选背书节点集收到来自客户端的需要背书的交易之后, 首先验证其签名
其中,
(3)随机选取的背书节点运算完抽取算法之后, 对相关交易进行背书, 得到读写结果集合
(4)客户端收到背书节点发来的结果集
如果验证结果为
(5)背书有效的交易被客户端提交给排序节点进行排序, 排序节点接受到交易之后, 将不同的交易排序打包成块并进行签名, 之后将该区块全网广播.
(6)提交节点监听网络上的交易区块, 当有新的交易区块被发送到提交节点时, 提交节点首先验证排序节点的签名合法性, 其次验证读写集的合法性. 通过两项验证之后的交易区块被提交到区块链上并更新账本, 之后提交节点进行全网广播
上述改进方案引入了可验证延迟函数(VDF)来处理背书节点的选取问题. 本节将从两个方面来分析方案的安全性: 其一是可验证延迟函数的可靠性; 其二是可验证延迟函数的不可并行加速性.
首先给出可靠性的定义: 给定参数
若
根据第2.1.4节的算法
将式(10)两边同乘以
攻击者可以伪造证明, 即通过不等于
① 计算
② 素数
③ 计算
根据式(11)可以计算出
只要攻击者发送给验证者的证明
VDF的可靠性是建立在RSA的大整数分解困难问题之上的. 一般地, 定义
定义
假设可验证延迟函数并不可靠, 即攻击者可以在多项式有界时间内产生一个错误的结果集
如果能够绕过上述困难假设, 那么可以很快计算出
则
上述不是通过
通过上述论证可知, 在大整数分解困难问题成立的前提下, VDF函数具有很高的可靠性.
在利用可验证延迟函数选出背书节点的过程中, 拥有私钥
定义
给定安全参数
由Time-lock可知, 在
拥有私钥的
综上所述, Time-lock保证了可验证延迟函数的不可并行加速性.
本文基于Hyperledger Fabric的架构设计了相关的区块链交易系统, 该系统模拟了Fabric的交易流程. 作为对比, 本文将采取两种实验方案: 采用固定的方式抽取背书节点的原有方案以及采用可验证延迟函数抽取背书节点的优化方案. 两种方案都包含4类节点: 客户端节点、背书节点、排序节点以及提交节点. 值得注意的是, 优化方案在客户端节点刚刚发起交易时的背书节点只是候选背书节点集, 只有被可验证延迟函数抽取到的才能作为该交易流程中的背书节点对交易进行背书. 4类节点的数量为: 200个客户端节点, 30个背书节点, 1个排序节点和150个提交节点.
优化方案除了背书节点需要选取之外, 交易流程与原有方案是一样的: 不同的客户端节点独立提交相关的交易提案给背书节点, 交易经过背书返回客户端, 验证无误之后被提交给排序节点进行交易排序打包成区块, 最后提交节点将区块提交上链. 本文的实验环境为: Ubuntu 16.04操作系统, 8核CPU, 16 GB内存, 512 GB硬盘.
考虑Fabric系统的特性, 我们将给予Golang语言来实现交易的业务逻辑, 可验证延迟函数的实现依赖于相关的crypto库以及外部已经实现的模块. 本文采用Caliper系统对实验结果进行测试, 并从平均交易时间以及交易延迟两个方面来进行性能分析.
对原有方案以及优化方案进行平均交易时间测试, 测试结果如
两种方案平均交易时间
从实验数据可以看出, 随着交易数量的增加, 原始方案和优化方案的平均交易时间也增加, 但优化方案平均交易时间要小于原始方案. 引入可验证延迟函数后, 一方面, 因为非恶意的背书节点拥有私钥
综上, 优化方案通过引入可验证延迟函数, 既保证了背书节点的安全性, 也减少了背书节点平均交易时间.
本文基于Caliper对两种方案的交易延迟进行了测试, 实验结果如
两种方案交易延迟
交易延迟是一笔交易从提交到能够被处理的时间, 由
针对Hyperledger Fabric中背书节点身份暴露易被攻击的安全问题, 本文提出了基于可验证延迟函数的Hyperledger Fabric背书策略优化方案. 本方案将原始方案中固定背书节点划分为候选背书节点集, 通过可验证延迟函数随机抽取背书节点并完成身份验证. 最后, 将优化方案与原始方案作性能对比, 比较了两者的平均交易时间和交易延迟. 结果表明, 优化方案在保证背书节点安全性的同时在效率上也是可行的.
李娟娟, 袁勇, 王飞跃. 基于区块链的数字货币发展现状与展望. 自动化学报, 2021, 47(4): 715–729.
Fu X, Wang HM, Shi PC. A survey of blockchain consensus algorithms: Mechanism, design and applications. Science China Information Sciences, 2021, 64(2): 121101.
,夏玲玲,王振力,梁广俊.区块链共识算法及应用研究[J].计算机科学与探索,2022,16(06):1214-1242.
孟吴同, 张大伟. Hyperledger Fabric共识机制优化方案. 自动化学报, 2021, 47(8): 1885–1898.
et al. Hyperledger fabric: A distributed operating system for permissioned blockchains. Proceedings of the Thirteenth EuroSys Conference. Porto: ACM, 2018. 30.]]>
et al. Endorsement in hyperledger fabric. Proceedings of 2019 IEEE International Conference on Blockchain (Blockchain). Atlanta: IEEE, 2019. 510–519.]]>
高云, 严悍. Hyperledger Fabric区块链软件架构中的中间件设计. 计算机与数字工程, 2020, 48(9): 2195–2200, 2274.
Mazumdar S, Ruj S. Design of anonymous endorsement system in hyperledger fabric. IEEE Transactions on Emerging Topics in Computing, 2021, 9(4): 1780–1791.
张龙静. Hyperledger Fabric背书策略的提案分发改进方案. 计算机科学与应用, 2021, 11(4): 1157–1164.
et al. Verifiable delay functions. Proceedings of the 38th Annual International Cryptology Conference. Santa Barbara: Springer, 2018. 757–788.]]>
et al. Continuous verifiable delay functions. Proceedings of the 39th Annual International Conference on the Theory and Applications of Cryptographic Techniques. Zagreb: Springer, 2020. 125–154.]]>
et al. Tight verifiable delay functions. Proceedings of the 12th International Conference on Security and Cryptography for Networks. Amalfi: Springer, 2020. 65–84.]]>