APP下载

针对权益证明共识机制的攻击以及应对措施综述

2021-08-24沈致远赵逢禹

小型微型计算机系统 2021年8期
关键词:攻击者共识权益

刘 亚,沈致远,赵逢禹

(上海理工大学 光电信息与计算机工程学院,上海 200093)

1 引 言

2008年,中本聪(Nakamoto)提出一种分散式数字货币比特币,比特币自2009年部署以来已引起学术界和行业的广泛关注.截至2018年4月,比特币市值约为1500亿美元,每天确认交易总数超过15万笔,是迄今为止最成功的加密货币,加密货币也因此备受学术界关注[1].作为比特币的核心技术,区块链在金融业、农业、医学、军事、工业等多个领域得到了广泛地应用[2-4].而共识机制作为区块链的核心技术,是区块链安全的基础和研究重点,加强对共识机制的研究可以完善现有的区块链系统,丰富其附加的生态环境.共识机制源于分布式计算,其目标致力于分布式节点针对某个特定的问题达成一致的意见,而其在区块链中则为区块信息一致意见的达成.共识机制最早源于“两将军问题”[5],随后演化为“拜占庭将军问题”[6],为了解决这个问题,拜占庭容错协议(Practical byzantine fault tolerance,PBFT)算法被提出[7].比特币是采用了工作量证明(Proof of Work,PoW)的区块链协议,节点通过“挖矿”来达到共识.尽管工作量证明协议标志着分布式共识的重大突破,但依赖昂贵的工作量证明组件会导致能源的巨大浪费.因此,找到一种比工作量证明耗费能源少的共识机制迫在眉睫.

权益证明(Proof of Stake,PoS)作为最有潜力的替代工作量证明的共识机制被学术界广泛研究,如Ouroboros[8]和Snow White[9].与此同时,委员会制度的共识机制如Algorand[10],空间证明的共识机制如Spacemint[11],时空证明的共识机制(Proof 吗,of Space Time)[12],权益委托证明(Delegated Proof of Stake)[13]等共识机制为区块链的发展提供了更多的选择,PBFT算法近些年来也逐步得到完善[14].在这些共识机制中,权益证明为非授权共识机制,不仅方便部署而且能被应用在去中心化的场景中,是替代工作量证明最有潜力的共识机制之一.

权益证明共识机制要求协议满足活性(Liveness)和一致性(Persistence)[15]的条件.相对于比特币工作量证明的共识机制,权益证明能源消耗小且更稳定,它不用“挖矿”的权益证明,从而不需要耗费大量电力和能源.此外,权益证明更加去中心化,基于它的加密货币对计算机硬件基本上没有过高要求,只要拥有一定量的权益,所有参与节点都可以参与“挖矿”工作,不用担心中心化矿池的出现,也可以避免紧缩导致的货币贬值.

继比特币之后,很多新型的数字货币采用权益证明机制,而且很多采用工作量证明机制的数字货币,也纷纷修改协议采用权益证明机制,譬如以太坊宣布在2020年底完成了从工作量证明到权益证明的改变.然而PoS在现有的区块链共识协议中占比并不高,且在现存数字货币市场中占比不到总值的2%,最重要的原因是现有的权益证明协议存在各种缺点,面临许多安全性威胁,因此加强对权益证明协议安全性方面的研究迫在眉睫.下面将简述基于PoS的协议以及对其攻击.

2008年,研究者提出了针对工作量证明的攻击:51%攻击和双花攻击[16],此攻击也同样适用于基于权益证明的协议.随后Kwon提出无法同步攻击[17].2012年,Sunny和Scott提出了首次使用权益证明共识机制的数字货币PeerCoin[18],它采用了币龄的概念,但当节点持有货币数量越多时间越长,越容易被选为领导节点.针对币龄,King和Nadal提出了币龄积累攻击[19].为了解决币龄的安全问题,2014年Pavel提出了数字货币Blackcoin[20],它修改了Peercoin中的领导筛选函数,删除了币龄的概念.Peercoin所运用的基于权益证明的共识机制也被称为第2代权益证明(Proofof Stake2.0).同年,研究者还提出了研磨攻击[20]和长程攻击[21],此前提出的协议均不能抵抗上述两种攻击.2015年研究者提出了活性拒绝攻击、日食攻击[22]和交易拒绝攻击[23],PeerCoin以及Blackcoin均不能抵抗上述3种攻击.2016年,Silvio提出了加密货币Algorand[10],它没有采用权益证明共识机制,而是采用了单一委员会共识机制,即所有在线节点首先选举出一个委员会的集合,然后委员会中的节点采用PBFT共识算法确定下一个区块,并广播给其他节点.此共识机制为后来的权益证明共识机制奠定了基础.接下来,Elaine提出了全新的共识机制(Sleepy Consensus),参与节点被形象地划分为在线(Awake/active)和离线(Asleep)两种类型,并且节点的类型可以相互转变;Phil等人提出的SnowWhite[9]则采用了此模型来描述参与节点的类型.同年,研究者提出了贿赂攻击,PeerCoin以及Blackcoin均不能抵抗上述两个攻击.2016年,Aggelos等人提出了Ouroboros协议[8],这是一种可证明安全性的权益证明共识机制.此后,他们于2017年弱化了Ouroboros中参与节点的条件提出了改进版协议OuroborosPraos[24].同年,研究者提出了无利害攻击[25]、劝阻攻击[26]、历史多数攻击[8]和变节攻击[9],此前提出的协议PeerCoin以及Blackcoin均不能抵抗上述攻击.2018年,Aggelos等人提出的Ouroboros Genesis[27]协议,该协议参考了SnowWhite的节点模型(1)https://www.chainnode.com/post/342784,给予了参与者更自由地在线时间.2019年,研究者提出了权益窃取攻击[28]以及基于日食攻击的权益窃取攻击[29],此前提出的Ouroboros不能抵抗上述两种攻击.

当前,已经有一些针对PoS共识机制攻击的研究.Deirmentzoglou等人[30]介绍了部分针对共识机制的攻击和应对措施,并详细整理了针对权益证明共识机制的长程攻击,以及现有的应对措施.Natoli等人[31]详细解析了区块链现有的共识机制,并给出了系统的分析.Ivan等人[32]解析了区块链的不同种类的安全性问题、安全威胁以及相应的应对措施.谭春桥等人[33]优化了基于权益证明的区块链网络.

本文首先对权益证明共识机制进行了系统介绍,并将主要功能函数进行符号化表示;其次,按照攻击特性和攻击原理,将现有针对权益证明共识机制的攻击分为区块生成函数攻击、岔链攻击、高权益敌手攻击和积累权益攻击等4类攻击;最后,总结了每种攻击的原理,详细描述了攻击的具体步骤以及攻击影响,并通过图示的方式阐述攻击基本流程.最后,总结了针对每种攻击现有的应对措施,并介绍了应对措施背后原理和应用场景.

2 预备知识

本部分主要讲解权益证明的基本流程和一些基本的概念,并对文中所使用的符号进行说明.

2.1 符号说明

1)主链CB0B1…Bm,其中B0为创世块.记len(C)表示主链C的长度,这里len(C)=m+1.

2)UP表示所有节点集合,Palert表示当前所有在线诚实节点,A表示敌手控制的所有节点的集合,Ponline表示当前所有在线节点包括所诚实节点以及敌手.

5)fee(tx,P)表示交易tx来自节点集合P的交易费用,fee(tx)表示交易tx中的所有交易费用.

2.2 基本模型

2.2.1 时间模型

协议的执行时间被分割成单独的时间段sl,每一个时间段包含了一个完整的协议运行过程,且与每一个区块B所对应(如果有区块产生),多个时间段构成一个时期ep,初始时段值sl0=0,时期值ep0=0.所有的参与者的时间段是同步的,即在同一时刻所有的诚实参与者的时间段参数sl是相同的.并且参与者知道自己所处的时期和时间段,才能正确地参与协议执行,否则被视为敌手.

2.2.2 节点模型

节点可以参与协议的运行,也可以保持离线状态或在线但不参与协议的执行,但只有在线了一段时期的诚实节点才会被视为有效参与者(Alert party).所有的在线节点被称为活跃节点(Active party),且都知晓其它节点的公钥.

2.2.3 协议的初始化

创世块(Genesis block)为区块链的第一个区块B0,包含了协议执行的重要信息,如初始参与者的权益信息以及他们所对应的公钥.初始权益持有者通过协商并启动区块链的执行,他们都知晓自己所拥有的权益信息以及其他初始权益持有者的权益信息.

2.2.4 区块发布模型

在每一个时间段中,所有参与节点会随机地被选举为这个时段的领导者(Slot leader),负责区块的创建以及分发.节点所持有权益比和被选为领导者的概率相同,并且权益比可用于计算选举证明.如果节点在本时段的选举证明小于阈值,则表明他成功的被选举成为这个时间段的领导者.

2.2.5 模型假设

如同工作量证明公式机制,权益证明协议能成功的执行的前提为在线诚实节点的权益比要不少于50%,以此保证区块链的安全性.

2.3 权益证明共识机制的执行过程

权益证明共识机制执行当中所需函数定义如下:

1)接收函数为Rec(P,Pother)=(C1,C2,…Cn,tx),其中P为调用函数的节点,Pother为其他参与者集合,(C1,C2,…Cn)为每一个节点在这个时段收到的区块信息,tx为交易信息.

2)选举函数为Eli(Tep,pk,Sep,seed)=(y,σ),它是基于子函数f(·)来实现,f(·)通常为哈希函数.参与者将公钥pk和随机数seed作为输入,将输出值和阈值进行比较,如果满足f(pk,seed)

3)区块生成函数为Gen(B′,(y,σ),pk,sig,tx)=B,每一个被选为领导的节点,调用此函数,产生一个新的区块,并且用私钥对其签名,B为生成的新区快.区块包含但不限于这些信息:前一个区块的哈希值hash(B′)、节点选为领导的证明(y,σ)、节点的公钥pk、节点的签名sig和交易信息集合tx.

4)验证函数为Val(B,pk,Tep,Sep,seed,Cloc)=True/False,每一个节点在接收一个新的区块时需要验证这个区块的合法性.验证通常分为两部分,节点领导者身份的正确性以及区块的合法性.验证领导者身份需利用本地所拥有的区块链C得到前一个区块的哈希值h,运行选举函数Eli(·)得到身份信息,并和B中的信息进行比较.验证区块合法性主要判断签名的正确性,以及其它参数的合法性.

5)筛选函数为Sel(Cloc,C1,C2,…Cn)=Cmax,当同时收到多个不同的链{C1,C2,…Cn}时,需要对比筛选出最合适的一条链.通常依照最长链原则返回最长的一条链Cmax.

基于上述函数的权益证明共识机制的执行过程分为以下4步:

1)所有节点调用接收函数Rec(·)收集网络中广播的链{C1,C2,…Cn}以及交易信息tx;

2)收集到信息的节点利用验证函数Val(·)在集合{C1,C2,…Cn}中筛选出最长合法链并运行Sel(·)更新本地链Cloc;

3)拥有最新链的节点利用随机数因子seed执行选举函数Eli(·)输出y,σ,判断自己是否被选为这个时段领导.如果y

4)被选为领导的节点,执行Gen(·)函数,写入Cloc的最后一个区块的哈希值和交易信息tx等,并广播包含新区块的本地链,结束本次协议执行,等待下一个时段开始.

3 针对PoS共识机制的攻击和应对措施

仔细分析了针对PoS共识机制的攻击的原理、基本流程和执行过程,根据攻击的主要特性,将其分为4类:区块生成函数攻击、岔链攻击、高权益敌手攻击和积累权益攻击.阐述每种攻击的基本原理和攻击过程,并通过图示介绍攻击的基本流程,最后介绍针对每种攻击现有的防御措施.在所有的攻击模型中,假设敌手均在第r时段对主链C发动攻击,且初始敌手权益小于诚实节点权益总和.

3.1 区块生成函数攻击

敌手针对权益证明共识机制的区块生成过程发动攻击,利用协议执行中存在的漏洞获利或者影响协议的正常运行流程.

3.1.1 研磨攻击

1)攻击描述

图1 研磨攻击

2)应对措施

3.1.2 币龄攻击

1)攻击描述

2)应对措施

币龄积累攻击产生的原因为,币龄在设计时没有最大上线,导致攻击者有机可乘,Vasin提出将币龄设置有最大上线[9],从而防止了这类攻击.当前大部分的权益证明共识协议中,已不再使用币龄.

3.1.3 交易拒绝攻击

1)攻击描述

Vitalik于2015在以太坊论坛年提出了交易拒绝攻击[23],其基本原理是每一个成为领导的节点都拥有发布下一个区块的权利,他将其所收集的交易写入自己发布的区块中,但也可以拒绝写入.如果多个节点联合起来拒绝写入同一笔交易,此交易将会被延迟,影响区块链的活性.被拒绝的节点可能因为此类攻击不再使用此区块链,最终导致区块链失去活力,并且使用者数量的减少也将导致持有者的权益渐渐失去实际价值.每个恶意节点在运行区块创建函数Gen(B′,(y,σ),pk,sig,tx)时,写入的交易信息tx不包含特定的交易信息,这些未写入的交易信息会被滞后一定的时段.

2)应对措施

面对交易拒绝攻击,Kiayias等人提出的Ouroboros[8]对区块链的活性(Liveness)进行了分析,区块链活性的假设保证所有合法交易最终会被写入主链,此类攻击在协议设计时已经被考虑,只要存在持有一定权益比例的诚实节点,所有合法的交易就会被接纳到这些节点所发布的区块当中,并被写入主链.Zamfir提出了惩罚机制也可以应对这种攻击[34].他们通过检测到参与此类攻击的节点会受到惩罚,没有按照交易到达的正常顺序发布区块的节点,将被去除委员会的身份或者被剥夺所有权益.此外,区块链在设计时就考虑隐私保护,利用匿名交易保护交易者的身份[35].交易者广播的交易为加密的,节点的领导无法得知交易的具体信息,不能辨别交易者的身份,从而避免了交易信息被恶意延后的情况.

3.2 岔链攻击

攻击者利用岔链发动攻击,使得主链发生分叉或者使长于主链的岔链替代主链.这种攻击不但会影响共识速率,甚至会使诚实节点的工作无效.

3.2.1 贿赂攻击

1)攻击描述

2)应对措施

所有的节点领导都是权益持有者,如果区块链受到攻击会使得权益持有者的利益下降,那么他们将无法获得正常运行所得到的利益.单纯从利益的角度考虑,节点领导不会主动发起攻击.如果攻击者给予节点领导多于正常运行所得到的奖励,那么节点领导存在动机对网络发动攻击.然而能发动攻击的节点都是在网络中持有一定比例权益的节点领导,他们在网络中都投入了相当比例的资产,产生一个分叉的区块会使得链变得不稳定,最终导致权益持有者的利益受损,甚至消失,而攻击所带来的收益,会远小于自己的损失.因此从利益角度考虑,基于权益证明的区块链系统不易受到这类攻击的影响.

3.2.2 无利害关系攻击

1)攻击描述

图2 无利害关系攻击

2)应对措施

Kiayias等人引入了惩罚机制[8],节点如果被检测到参与恶意攻击,节点的验证者身份将被撤销,从而失去未来所有获利.这个节点通过无利害攻击的收益远远小于收到的惩罚,因此可以杜绝无利害攻击的发生.Buterin和Griffith提出权益冻结(state freezing)和惩罚机制的概念[37],权益冻结的原理为网络会将某个时期的权益暂时存储作为一个检查点,如果在未来的某个时期发现问题,那么所有节点回滚到之前的冻结权益.Daian[9]提出的应对措施为,如果节点被检测到在相同链高(链上相同的位置)发布两个或两个以上的区块,这个节点的收益将会被没收.

3.2.3 历史多数攻击

1)攻击描述

2)应对措施

3.2.4 长程攻击

1)攻击描述

图3 长程攻击

2)应对措施

长程攻击在所有攻击方式中最具影响力,其防御措施被学术界广泛研究,方案大致分为5种,具体如下.

①充裕法则

Badertscher等人[38]提出了筛选函数不再使用最长链原则,利用此筛选规则可以有效地避免长程攻击.具体来说,记C[0:k]为链C中时段0到时段k的所有区块,当产生的分叉不大于安全参数k时,使用最长链原则,否则比较C[0:j+s]以及Clon[0:j+s]二者的长度,将较长的作为目标链,j为二者拥有最后一个相同区块的时段,s为安全性参数.基于诚实节点持有大多数权益的假设,诚实节点所控制的链增长速率应快于敌手的链,所以诚实节点控制的链应为C[0:j+s]与Clon[0:j+s]中增长速率更快、链长更长的一个.

②移动检测节点

King和Nadal 在Peercoin中使用校准节点限制长程攻击[19].网络中的链只有最后的多个区块是可以变动的,之前的所有区块都不可以修改.校准节点限制了长程攻击的攻击范围,无法利用从创世块生成的私链来替代主链,主链上在最后n个区块之前的所有区块不可篡改.Peercoin中限制的范围为最后1个月时限内的区块[19],NXT社区建议限制的范围为最后几天或者等价的几个小时内的区块[39].

③情境感知交易

在交易中写之前区块的交易信息或者区块信息,敌手无法利用长程攻击将这些写有区块信息的交易再列入攻击链中,生成新链替代主链.Larimer[40]在每一笔的交易中都写有之前区块的哈希信息,Coleman[41]在每个交易写有交易的时间信息且与其对应的时段绑定.通过写入特定信息,敌手无法将主链的交易信息加入支链当中,但如果敌手生成一条从创世块开始的区块链,包含全新的交易信息依旧可以达到长程攻击的效果,但难度大大增加.情境感知交易是一种有效限制长程攻击的方式之一.

④经济定局

Zamfir和Buterin分别提出惩罚机制(Slashing)[34,42],如果时段领导的行为导致权益持有者的货币损失,这些有不正当行为的时段领导会受到惩罚.时段领导如果被检测到在相同链高(链的相同位置)的多个区块验证通过信息,他的持有权益将被清零,同时领导身份也有可能被撤销.因为相同时段领导在相同链高度只能发布一个区块,在相同的位置仅存在一个区块,所以诚实时段领导只能通过一个区块.长程攻击需要生成一条不同于主链的私链,当时段领导参与了主链的验证工作,便无法再参与私链的验证工作,否则会面临失去权益的惩罚,虽然在相同的链高可能存在未参与主链的验证者,但惩罚机制已经很大程度上降低了长程攻击的成功率.

⑤可信任执行环境

Li[43]利用可信任执行环境(TEE)技术来应对长程攻击,部分运算过程安全执行,使得敌手无法针对这部分的运算过程发动攻击.利用TEE实现签名过程,保护签名密钥,使得敌手无法对签名过程发动攻击获得签名的私钥,进而无法发动长程攻击.此外,所有加入的节点的密钥都是通过TEE产生的,保证节点身份的正确性.

3.2.5 基于无利害关系攻击的双花攻击

1)攻击描述

Nakamoto在设计比特币[16]的时提出双花攻击,攻击者希望将一笔金钱进行多次花费后,被多个收款方接受.当多个收款方接纳了来源相同的金钱,攻击成功.由于区块在设计的时候会对相同来来源的货币的花费进行限制,因此双花攻击常常借助其他攻击实现,譬如基于无利害关系攻击的双花攻击.攻击者首先通过无利害关系攻击生成多个分叉的链,在生成链时不同的链写入来自相同货币的不同交易,每条链都为合法的链,然后将这些分叉链广播到网络中,由于这些链的长度相同,不同的节点可能会接受不同的链并发布新的区块.若来自相同货币的不同交易会在网络中存在了足够长的时间,双花攻击便可实现.

2)应对措施

Kwon[38]对不正常工作节点提出地惩罚机制可以有效的限制参与恶意攻击节点.每一个新区块都与历史区块的信息相关,如果某个节点被检测到不正当的运行行为,那么他在前2000个区块内的收入会全部被清除,并且发现异常行为的节点还会获得这些收入的33%作为奖励,相似的惩罚机制Buterin[37]也提出过.

3.3 高权益敌手攻击

高权益敌手攻击的原理为敌手通过提高自己相对于诚实节点的权益比发动攻击,通过增加自己的权益,或者减少诚实节点的权益,提高自己对链的控制能力.譬如:51%攻击、活性拒绝、劝阻攻击、日食攻击、无法同步攻击均有这种特性.

3.3.1 51% 攻击

1)攻击描述

攻击者控制了网络中多数的权益,每次都可以大概率地被选为时段的领导,可以实现对区块链网络的控制.敌手可以提供分叉的链,使得诚实节点的工作无效,甚至重新生成一条完全不同的链.

2)应对措施

这类攻击发生时,通常区块链网络中现有的公链会被敌手产生的新链颠覆.当权益持有者发现这类情况时,可以链和社区其他诚实节点来对被颠覆的主链进行恢复.

3.3.2 活性拒绝攻击

1)攻击描述

攻击者为权益持有者,部分或者全部权益持有者拒绝产生新的区块,以此影响区块的产生速率,影响区块链的活性(Liveness).当多数权益持有者拒绝参与新区块的发布工作时,此时在线诚实节点权益占比αH将降低,从而导致这个时段没有区块产生的概率增加.如果多数权益持有者长期拒绝参与新区块的发布工作,那么在相同时间段内,区块产生的数量会降低,整体而言区块的增长速率会下降.这将导致诚实节点的权益小于假设值,区块链的活性会受到影响,安全性无法保证.

2)应对措施

活性拒绝攻击会影响区块链的增长速率,但不会威胁区块链的安全.权益证明协议的活性假设会导致不活跃的节点的权益逐渐向活跃节点转移,即使大部分的节点参与此类攻击,也仅仅会导致不活跃的节点的权益向活跃节点转移,参与攻击地节点对网络的影响会随着区块链的延伸逐渐变弱.尽管区块链的活性假设未被满足.Buterin和Griffith[27]提出了基于委员会的权益证明协议可以对拒绝参与协议执行的节点进行限制,委员会可以投票决定剔除部分不活跃的节点,参与攻击的节点验证者的身份和拥有的权益将受到影响,甚至权益被清空.

3.3.3 劝阻攻击

1)攻击描述

2017年,Vitalik提出了劝阻攻击[26],其基本思想是攻击者广播自己的恶意意图,诚实节点为了避免被影响退出委员会,主动放弃验证者的身份,从而使攻击者的权益占比提升,并为其他攻击做铺垫.攻击者通过攻击降低在线诚实节点权益占比αH,当诚实节点的权益小于假设值时,区块链的安全性则无法被保证,攻击者可以实施其他攻击,获得对链的控制.其攻击过程如图4所示.

图4 劝阻攻击

2)应对措施

诚实节点可以向其他参与者揭露攻击者的恶意意图,并通过委员会机制对攻击节点进行惩罚操作.

3.3.4 日食攻击(Eclipse attacks)

1)攻击描述

Heilman于2015年提出了日食攻击[22],攻击者通过控制目标节点的通讯网络,阻挡与其余诚实节点的信息传输,屏蔽交易信息以及区块信息,使其直接接收到攻击者所提供的交易以及区块信息,让目标节点为自己的私链工作.被攻击的节点运行筛选函数Select(·),所筛选的链的集合为敌手所提供的链的集合{Cloc,C1,C2,…Cn},并且不包含主链.当被攻击节点在不知情的情况下为敌手工作时,可以视为被敌手控制的节点.如果敌手的权益比更高,区块链更易受到51%攻击.

2)应对措施

日食攻击需要事先知道未来的领导节点的分布情况,以便针对部分节点发动日食攻击,从而提高领导选择的随机性可以一定程度的减少日食攻击对区块链的影响.Heilman[22]指出利用调整随机性可以减少日食攻击的成功率,变向增强网络抵抗日食攻击的能力.同时,他还利用冗余网络让敌手难以控制自己的通信网络,每个节点在物理层增加与别的节点的连接数量,可以有效地减弱日食攻击的影响力.此外,Alangot[44]利用轻量级客户端通信交换区块信息以及交易信息也可以有效的减弱敌手对目标节点网络的控制能力.

3.3.5 无法同步攻击

1)攻击描述

Boverman[17]于2011年提出了无法同步攻击.其基本思想时在权益证明协议网络中,节点需要协同完成区块的发布工作,节点之间需要通过时钟来实现同步过程.攻击者影响节点的同步时钟使受害者节点无法与其他节点同步,或者延缓受害者节点的信息传输速率.当在线活跃节点受到攻击时,他会变为离线节点,处于滞后状态无法完成协议的执行.事实上,攻击者通过影响在线诚实节点的权益比αH,来威胁区块链的安全性.

2)应对措施

为了抵御无法同步攻击,节点之间可以互相参考时间,或者通过第3方来达到同步.Szalachowski[45]提出节点可以相互沟通,协商一个可信的节点来负责提供时间参考信息,或者通过可靠第3方时间戳提供者.随后,Szalachowski[46]还提出了不同的方案,即节点之间协商出同步信息,然后其他节点参考这个同步信息来实现网络节点的稳定.

3.4 积累权益攻击

在针对共识机制的所有攻击中,有时攻击者不需要提高自己的权益比就可以达到对区块链网络的控制.在没有直接提高当前自己相对于诚实节点的权益比的情况,通过其他方式获得并不断积累权益优势,最终发动攻击实现对链的控制.这类攻击称为积累权益攻击,包括变节攻击、权益窃取攻击和基于日食攻击的权益窃取攻击.

3.4.1 变节攻击

1)攻击描述

图5 变节攻击

2)应对措施

变节攻击的攻击原理与密钥切取攻击的原理相似,因此可以参照密钥窃取攻击的防御措施.

3.4.2 权益窃取攻击

1)攻击描述

图6 权益窃取攻击

2)应对措施

权益窃取攻击可以通过校准节点或者情境感知交易进行预防.其次,King和Nadal提出的币龄概念也有助于抑制权益窃取攻击[19].具体来说,敌手需要花费时间积累足够多的币龄,来产生不同于主链的私链,而通常敌手私链地创建晚于主链,攻击者很难积累足够多的币龄,所以难以发动权益窃取攻击.最后,用于抵御权益窃取攻击的应对措施也可以用于抵御基于日食攻击的权益窃取攻击.

3.4.3 基于日食攻击的权益窃取攻击

1)攻击描述

2)应对措施

针对此类攻击的防御措施可以参考权益窃取攻击或者日食攻击.

4 展 望

权益证明共识机制由于其能源消耗远小于工作量证明,是替代工作量证明最有潜力的共识机制之一,在区块链技术中有着广泛的应用[47,48].但基于权益证明共识的区块链协议近年来在安全方面暴露了一些问题,需要进一步研究.未来研究者可以针对权益证明共识机制方面开展以下研究:

1)长程攻击和无利害关系攻击仍然为权益证明面临的最严峻的挑战之一,目前防御这两种攻击最有效的手段为中心化委员会惩罚作恶的节点,但这与区块链去中心化的设计初衷背道而驰,如何用更加去中心化的方式抵御这两种类型的攻击仍然为权益证明的研究重点.

2)权益窃取攻击是近些年来提出的新颖攻击方式,在足够多的初始权益的假设下,大部分基于权益证明的数字货币无法抵御这种攻击,敌手可以在几年时间内实现对主链的颠覆.针对权益窃取攻击的攻防研究目前还不够充足,因此研究者迫切需要开展针对权益窃取攻击防御手段的研究.

3)基于权益证明的共识机制能源消耗小,是替代工作量证明的核心共识机制技术之一.当前基于权益证明的共识机制还存在诸多安全问题,在市场占有率并不高,而基于工作量证明的区块链目前面临着诸多的问题,因此提出安全高效的权益证明的共识机制方案是区块链的重要研究方向之一.

5 结束语

本文详细阐述了基于权益证明共识机制区块链所面临的安全性问题,总结了16种针对基于PoS的共识机制的攻击的思想、原理和执行流程,并详细阐述了每种攻击的防御措施,以提高区块链网络的安全性.但针对PoS的攻击不止于这些基本的攻击,攻击者可能同时实施多种攻击来实现对区块链的控制,比如基于日食攻击的权益窃取攻击,或者利用协议的漏洞来提高攻击者自己的权益占比来使诚实节点的工作无效化.上述研究意在启发研究者深入探究基于PoS共识机制面临的威胁和安全问题,完善并提高现有共识协议的安全性.在未来,研究者构建基于权益证明的共识算法时,需预先考虑到本文所提出的攻击,从而设计出更加安全的协议.权益证明的发展离不开这些攻击的提出,而针对权益证明攻击的分析使得权益证明向着安全高效的方向一步步发展.

猜你喜欢

攻击者共识权益
身在异国他乡,海外华侨华人如何维护自身权益
通报:存在侵害用户权益行为的84款App
基于贝叶斯博弈的防御资源调配模型研究
凝聚共识:新时代人民政协的初心与使命
漫话权益
商量出共识
正面迎接批判
正面迎接批判
撑起老年人权益的“保护伞”
“慢养孩子”应成社会普遍共识