本文是一篇软件工程硕士论文,本文提出的Fabric-CA认证机制和共识方案,在安全性、效率等方面比其他共识方案更有优势,但是由于区块链本身框架庞大,涉及领域众多。
1 绪论
1.1 研究背景与意义
自比特币出现后,区块链一词开始逐渐为人所知,比特币的实质是通过通信网络、密码学、计算机科学和其他技术构建一个完全分散的分布式共识网络协议。虽然比特币创建者最初的想法是创建一个独立的金融系统平台,但比特币的发展远远超出了预期,学者指出比特币的设计模式正是对经典计算机问题(拜占庭容错问题)的一种替代答案。
此后,比特币所使用到的区块链技术,在学术界引起大量学者广泛关注。区块链在金融交易以及医疗[1]、能源、物联网、物流、版权保护、数据共享和溯源等领域都引发了一场技术革命[2]。
区块链的工作原理是通过共识算法和密码学技术,使得网络中的每个节点都能验证和记录交易,并将交易通过哈希聚合链接到区块中,形成了不可篡改的链式结构。区块链的去中心化特性意味着没有单一的控制机构或中心化的数据库,而是由网络中的多个节点一起维护和验证账本。这种机制使得区块链具有高度的安全性和可靠性,因为要篡改一笔交易或更改账本中的数据,需要同时攻击网络中的大部分节点。
另外,区块链的匿名性赋予参与者在交易中维持一定隐私的能力,同时确保了交易的可追溯性和透明性。因此在供应链管理、智能合约、金融和数字资产交易等领域,区块链均受到广泛应用。
1.2 研究现状
对于节点身份认证的研究主要基于CA (Certificate Authority,证书授权)证书技术[6],证书包含用户的公钥、CA授权的签名和身份信息。经过CA授权认证的通信方,都可以通过验证数字证书的方式来建立信任关系,并且获得对方的公钥以备使用。近年来,CA证书技术更加广泛用于隐私保护以及可信任的身份验证领域。部分研究人员致力于将数字证书与区块链相结合,以提供去中心化的身份验证和可信任的证书管理系统。
对于共识协议的研究主要可归结于两类:基于投票的算法和基于证明的算法。 基于证明的算法,使用最多的是POX(Proof of Work,POW;Proof of stack,POS)类型的算法,以计算复杂数学难题作为衡量标准,对环境和资源造成了巨大的压力且效率低,更不适用于联盟链环境;联盟链大多使用基于投票的共识算法,其通过相互通信进行交流并投票决定分布式网络上的重要决策,如PBFT、Paxos[3]和Raft[4]相比于POX等基于证明的算法,在效率、安全、实用性各具有其优势,但是却不能同时满足实用性、安全性、高效性三个指标。
1.2.1 基于CA的身份认证技术研究
认证机构服务者签发的CA是数字签名技术的根本保障,同时也是在线身份验证的确凿证明。它能验证实体的身份及其公钥的合法性,从而证明实体与公钥之间的对应关系。对于CA证书的管理,是通过信任模型来实现的。
谷歌的证书透明性方案[52]其目标是通过为所有发出的TLS提供仅追加、公开可审计的日志来检测伪造但有效的证书,并缩短其生命周期,然而,Mazieres和Shasha[53]的研究表明,如果对手能够获取一个虽然是假的但却有效的证书,并且能够控制服务器端,那么他就可以通过提供含有虚假证书的日志来对目标受害者进行冒充攻击。
为了检测假但有效的证书,Saputra和Sukarno [54]引入了密钥绑定技术,Ahmad和Keromytis[55]等人提出了众包技术,Kubilay、Langley[56]提出了向浏览器推送吊销信息的方法,这些方法都是部分实现的,但由于可扩展性问题而失败。
2 相关理论概述
2.1 Fabric相关技术理论
在2015年,Linux基金会首先主持并开发了Fabric开源项目,其目标是开发一种可运行和部署区块链应用的平台,允许多方参与其中[18]。Fabric项目是构建一个可扩展和模块化的联盟链开发框架,并为企业级联盟链应用的开发提供解决方案。
2.1.1 Fabric整体架构
Fabric联盟链系统如图2-1所示,主要由客户端、数字证书、共识机制、链码几部分组成,各部分处于不同模块,相互组成一个完整的联盟链框架。
不同模块的作用如下:
(1)客户端(Client)。客户端是用户与Fabric网络进行连接的接口,其上部署了专用的软件开发工具包。用户经由客户端发起请求,生成交易提案(Proposal)。
(2)数字证书(CA)。数字证书是给用户提供注册登录、入网许可服务以及向Fabric网络中的节点提供身份识别、密钥管理服务。任何Fabric网络中的节点或者用户都需要经过CA认证才能进入Fabric网络,这是联盟链可以受到监管的前提。
(3)共识机制(Consensus Mechanism)。共识机制是为了解决分布式系统不同节点数据一致性问题[19]。影响共识问题的因素有很多,如节点数量,拜占庭问题等。随着节点数量的增加,区块链账本的备份数量也随之增加,这使得恶意节点修改账本的成本和难度增加,从而提高了数据的安全性。然而,这也使得各个节点的账本保持一致性变得更加困难[20]。Fabric共识机制中包含有背书节点(Endorser)、排序节点(Orderer)、提交节点(Committer)。其中背书节点是为用户的交易进行担保(对交易进行签名),以证明该交易合法[22];
2.2 证书授权相关密码学理论
2.2.1 秘密共享
秘密共享理论(Secret Sharing Theory)是密码学和信息安全领域的一个重要概念,如图2-4所示,秘密信息被分割成多个部分,然后分发给多个参与方,只有在满足一定条件时才能恢复原始秘密。目的是将秘密信息分散存储在多个地方,以确保安全性和可用性。这样,即使某些部分泄露或被攻击,攻击者也无法获得完整的秘密信息。
秘密共享方案的缺点是需要在重建阶段揭示秘密共享,如果可以在不泄露秘密份额或不重建秘密的情况下计算主题函数,则系统将更加安全。
秘密共享方案(Secret Sharing Scheme, SSS)最初是由Blakley[28]和Shamir[29]在1979年提出的,作为保护加密密钥的解决方案,得到了广泛的应用。Shamir的(k, n) SSS是基于线性多项式的,是无条件安全的,还有其他类型的阈值SSS,例如Blakley方案是基于几何的,Mignotte方案[31]和Asmuth-Bloom[30]方案是基于中国剩余定理(CRT)的。
2.2.2 阈值签名
阈值签名(Threshold Signature)是一种密码学技术,用于在分布式系统中生成和验证数字签名。与传统的数字签名算法不同,阈值签名允许多个参与方合作生成一个签名,而不是由单个实体生成。
在阈值签名方案中,参与方被分为两个或多个组,并且每个组都有一个私钥。这些私钥的组合可以用于生成签名。为了生成有效的签名,需要达到一定的阈值,即要求至少有一定数量的组参与签名生成过程。
3 基于秘密共享的 Fabric-CA 认证机制 ............................ 17
3.1 问题的提出 ......................... 17
3.2 总体方案设计 ................................. 18
3.3 基于秘密共享的阈值签名设计 ............... 19
4 基于PBFT优化的联盟链共识方法 ............. 33
4.1 问题的提出 ............................. 33
4.2 PBFT优化方案 ................................ 35
5 总结与展望........................... 47
5.1 工作总结 ............................ 47
5.2 未来展望 ............................ 48
4 基于PBFT优化的联盟链共识方法
4.1 问题的提出
不同于公有链共识机制的被动复制,Fabric的共识模型将主动复制和被动复制相结合,在拜占庭环境下实现了主从备份机制,既保证了快速达成共识的速度,又保证了一定的安全性,展示了卓越的可扩展性,适应了各种场景需求。
如图4-1 Fabric共识机制所示,其过程如下:
(1)客户端产生提案并发送给背书节点进行验证并签名。提案包含了提案产生的时间戳、链码函数及其参数、客户端的签名信息;
(2)背书节点验证提案的签名是否符合规范;然后,根据指定的背书策略模拟提案中的交易;随后,背书节点对模拟结果进行签名,并将背书结果返回给客户端。该过程中,背书节点对模拟交易的执行不会改变世界账本的状态;
(3)客户端在收到提案结果后会验证背书节点的签名,保证签名是来自Fabric-CA认证的背书节点,同一笔交易会有多个背书节点进行验证并附属上担保者的签名,因此客户端在收集到一定数量的背书结果后,会对结果进行比较,如果背书结果不一致则提案不成立,背书结果一致时,客户端产生交易并发送给排序节点进行排序;
(4)当前Fabric使用kafka集群进行交易排序,在接收到客户端发送来的交易后,会按照相应的排序规则进行交易排序,当排序好的交易累积到一定数量时,会将这些交易打包成块,在添加上排序节点的签名,之后将区块发送给提交节点;
(5)提交节点对收到的区块进行验证,保证签名是来自Fabric-CA认证的排序节点并且检查交易的合法性,检测通过后提交节点更新状态数据库。
5 总结与展望
5.1 工作总结
区块链的核心是共识算法,节点的身份认证是保证共识安全性的前提。当前的联盟链的CA认证机制和共识算法都有明显缺陷,Fabric联盟链当前的CA认证