详解共识算法中独特的存在——BFT类算法和结合可信环境的共识算法 | 火星号精选

原文标题:《区块链与密码学全民课堂第2-6讲:区块链基础技术大剖析之共识算法(二)》

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】

BFT类算法

无论是PoW类算法还是PoS类算法,其中心思想都是将所有节点视作竞争对手,每个节点都需要进行一些计算或提供一些凭证来竞争出块的权利(以获取相应的出块好处)。BFT类算法则采取了不同的思路,它希望所有节点协同工作,通过协商的方式来产生能被所有(诚实)节点认可的区块。这就是我们俗话说的:有事好商量。

拜占庭容错问题最早由Leslie Lamport 等学者于1982年在论文《The Byzantine Generals Problem》中正式提出,主要描述分布式网络节点通信的容错问题。

从20世纪80年代起,提出了很多解决该问题的算法,这类算法被统称为BFT算法。实用拜占庭容错(Practical BFT,PBFT)算法是最经典的BFT算法,由 Miguel Castro和 Barbara Liskov 于1999年提出。PBFT算法解决了之前BFT算法容错率较低的问题,且降低了算法复杂度,使BFT算法可以实际应用于分布式系统。

那么为什么叫拜占庭问题呢?

拜占庭是东罗马帝国的首都,位于如今的土耳其的伊斯坦布尔。由于当时拜占庭罗马帝国国土辽阔,军队之间分隔很远,军队之间只能靠信差传消息。然而,当发生战争时,必须所有的拜占庭军队达成一致共识,才能决定是否去攻打敌人,任意部分军队攻打敌军,都无法取胜。如果军队中出现叛徒或间谍,左右各军队将军的决定,达成的共识可能不代表大多数人意见。这时,在已知有间谍的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,就是“拜占庭将军问题”。

拜占庭问题是一个协议问题,拜占庭军队必须全体一致决定是否攻击敌军。问题是:

  • 军队之间分隔远,无法同时一起商议,只能通过信使。

  • 信使或将军有可能存在叛徒,干扰共识过程。

叛徒可以任意行动达到以下目标:

  • 迷惑部分将军,使他们无法做出决定。

  • 欺骗将军,采取相反决定,如将军们不希望进攻,但叛徒促成进攻行动。

叛徒只要完成任意目标,都代表攻击行动的结果失败。

看似是一部谍战片,其背后却有深刻的数学原理。Leslie Lamport 证明了在将军总数n大于3m ,背叛者为m 或者更少时,忠诚的将军可以达成命令上的一致。

拜占庭解决

BFT类算法一般有完备的安全性证明,能在算法流程上保证在群体中恶意节点数量不超过三分之一时,诚实节点的账本保持一致。然而,这类算法的协商轮次也很多,协商的通信开销也比较大,导致这类算法普遍不适用于节点数目较大的系统。业界普遍认为,BFT算法所能承受的最大节点数目不超过100。目前BFT算法被广泛用于以PoS为基础的共识算法组合中,代表基础设施有以太坊2.0、PlatON等。

结合可信环境的共识算法

可信计算是在计算和通信系统中广泛使用基于硬件安全模块支持下的可信计算平台,以提高系统整体的安全性。

早期可信计算的研究主要以国际可信计算工作组TCG(Trusted Computing Group)为主。可信计算最核心的就是TPM硬件芯片,其TPM(Trusted Platform Module)1.2规范是比较经典的,大多数厂家的芯片都以TPM1.2为标准,该规范已经升级到TPM 2.0。

国内对应的是TCM(Trusted Computing Module)芯片,可以参考“可信计算密码支撑平台功能与接口规范”,而且已经成为国家标准,即GB/T 29829-2013。

随着可信计算的发展,可信平台模块不一定再是硬件芯片的形式,特别是在资源比较受限的移动和嵌入式环境中,可信执行环境(TEE,Trusted Execution Environment)的研究比较热,如基于ARM TrustZone、智能卡等可以实现可信计算环境。

TEE可信硬件

2013年,Intel推出SGX(Software Guard Extensions)指令集扩展,旨在以硬件安全为强制性保障,不依赖于固件和软件的安全状态,提供用户空间的可信执行环境,通过一组新的指令集扩展与访问控制机制,实现不同程序间的隔离运行,保障用户关键代码和数据的机密性与完整性不受恶意软件的破坏。

可信执行环境是一类能够保证在该类环境中执行的操作绝对安全可信、无法被外界干预修改的运行环境,它与设备上的普通操作系统(Rich OS)并存,并且能给Rich OS提供安全服务。可信执行环境所能够访问的软硬件资源是与Rich OS完全分离的,从而保证了可信执行环境的安全性。利用可信执行环境,可以对区块链系统中参与共识的节点进行限制,很大程度上可以消除恶意节点的不规范或恶意操作,从而能够减少共识算法在设计时需要考虑的异常场景,一般来说能够大幅提升共识算法的性能。但其也有劣势,性能的提升会削弱隐私保护的能力。

关于共识算法的知识就讲到这里啦,下节课我们继续解析区块链基础技术,将登场的是对区块链具有颠覆性的技术——智能合约。敬请期待!

本文来源:PlatON
原文标题:详解共识算法中独特的存在——BFT类算法和结合可信环境的共识算法 | 火星号精选