• 全国 [切换]
  • 深圳市鼎达信装备有限公司

    扫一扫关注

    当前位置: 首页 » 新闻动态 » 真空技术 » 正文

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

    放大字体  缩小字体 发布日期:2021-11-01 08:45:45    浏览次数:95    评论:0
    导读

    摘 要:权益证明由于能源消耗小,成为替代工作量证明最有前景的共识机制之一,但其在安全性上仍存在诸多问题,容易受到长程攻击、无利害攻击等威胁.近些年来越来越多的系统开始采用权益证明共识机制,或将原来基于工作量证明共识机制系统修改为基于权益证明.为了更好地研究基于权益证明的区块链网络的安全问题,首先介绍了

    摘 要: 权益证明由于能源消耗小,成为替代工作量证明最有前景的共识机制之一,但其在安全性上仍存在诸多问题,容易受到长程攻击、无利害攻击等威胁.近些年来越来越多的系统开始采用权益证明共识机制,或将原来基于工作量证明共识机制系统修改为基于权益证明.为了更好地研究基于权益证明的区块链网络的安全问题,首先介绍了权益证明的基本概念以及其发展历程;其次研究了针对它的16种攻击,并根据它们的特性将其分为四类,并对每种攻击详细阐述了攻击原理和过程;最后介绍了现有的防御手段.此研究有助于针对基于权益证明的区块链网络安全地运用到实际系统中.

    关 键 词: 区块链;共识机制;权益证明;安全攻击

    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),给予了参与者更自由地在线时间.2019年,研究者提出了权益窃取攻击[28]以及基于日食攻击的权益窃取攻击[29],此前提出的Ouroboros不能抵抗上述两种攻击.

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

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

    2 预备知识

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

    2.1 符号说明

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

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

    表示节点iep时期的权益总和.所有结点的在ep时期的权益为所有在线节点的在ep时期权益为所有在线的诚实节点权益为敌手的权益总和为SA.

    4)αH表示在线诚实节点权益占比表示r时段在线诚实节点的权益占比;αA表则在这个时段的敌手的权益占比表示r时段敌手的权益占比;β表则在这个时段的在线节点权益占比,则β=Sonline/S;节点Pi的权益比为表示r时段节点Pi的权益占比.

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

    2.2 基本模型

    2.2.1 时间模型

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

    2014年,Vasin提出研磨攻击[20],其基本原理为敌手在创建新的区块时,刻意筛选区块信息,从而在未来的领导选择过程中,自己所控制的节点有更高的概率被选举为领导者.敌手尽可能地去影响领导选择过程,提高对区块链的控制力.研磨攻击通常会使得攻击者有高于自己权益比的概率被选为领导,使得区块链更易受到51%攻击.攻击者为了提升自己控制的节点在主链C被选为领导者的概率,针对领导选举函数Eli(·)进行攻击.假设r+1时期的选举函数为(yr+1σ)=Eli(Tr+1PKSr+1seedr+1),Tr+1r+1时期的阈值,并且敌手成功的被选为r时段的领导,控制了多个节点,则拥有公钥集合PK={pk1,…,pkn},对应权益信息为了使自己控制的节点被选为时段领导,攻击者通过攻击随机数seedr+1的生成函数,减弱随机数seedr+1的随机性,使得不等式f(pkiseedr+1)<Tr+1×si(pkiPK)成立,让自己控制的节点有更高概率被选为节点领导.攻击过程如图1所示.

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

    2.2.3 协议的初始化

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

    2.2.4 区块发布模型

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

    2.2.5 模型假设

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

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

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

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

    2)选举函数为Eli(TeppkSepseed)=(yσ),它是基于子函数f(·)来实现,f(·)通常为哈希函数.参与者将公钥pk和随机数seed作为输入,将输出值和阈值进行比较,如果满足f(pkseed)<Tep·Sep,此节点则被选为这个时段的领导.选举函数输出(yσ),其中y=f(pkseed),作为当前时段领导者的身份验证,seed为函数f(·)提供随机性.

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

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

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

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

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

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

    3)拥有最新链的节点利用随机数因子seed执行选举函数Eli(·)输出yσ,判断自己是否被选为这个时段领导.如果y<Tep·Sep,则有资格参与区块的发布工作;

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

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

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

    3.1 区块生成函数攻击

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

    3.1.1 研磨攻击

    1)攻击描述

    1)攻击描述

    图1 研磨攻击

    Fig.1 Grinding attacks

    2)应对措施

    为了抵御研磨攻击,Kiayias等人[8]提出了委员会概念.节点选举出委员会,通过委员会共同计算得到下个时期所使用的随机数种子,保证领导选择函数的随机性.实现随机数的协议为πDLS,在每个时期ej开始时,所有权益持有者Ui,生成随机数ri,随机字符串ui.首先通过分发函数Deal(nui)得到n个数值并把这些数值用公钥加密;随后将这些数值随机数的承诺Com(riui)广播到区块链上.在一段时间后,权益持有者Ui将函数Open(riui)写入链表示自己已经知道他人的ui,且需参与者的权益总和需要超过一半以上.再过相同的时间之后,Ua表示为参与上一步的权益持有者,所有的UiUa中的每一个节点产生一个数值,记作并写入区块链,之后所有节点可以通过链上的信息计算得到在节点运行选举函数(yrσ)=Eli(Tr+1PKSr+1seedr+1)时,可以通过链上的信息得到随机数种子seedr+1=∑lLul ,其中r+1属于ej+1时期,Lej时期被选为领导的节点集合.每一个时期所使用的随机数seed都是由总和为半数以上的权益持有者协商决定的,攻击者很难通少量的权益控制随机数种子的随机数.

    3.1.2 币龄攻击

    1)攻击描述

    币龄攻击是针对Peercoin[19]所提出的攻击,其基本思想为攻击者不断地积累自己的币龄,币龄越高被选为领导的概率就越大,当积累了足够长的时间,攻击者在下一轮就有极高的概率被选为领导者,影响共识时间和区块增长速率.币龄攻击通常会使得攻击者有高于自己权益比的概率被选为领导,使得区块链更易受到51%攻击.这种攻击主要针对阈值的缺陷进行攻击.Tr+1r+1时期的阈值,为从上一个区块的发布到现在的时间,为时段r+1的基础阈值.根据可得,节点被选为领导的概率随着时间增长而增长.攻击者尽可能拖延时间以提高自己被选为领导节点的概率.

    2)应对措施

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

    3.1.3 交易拒绝攻击

    2.2.2 节点模型

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

    2)应对措施

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

    3.2 岔链攻击

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

    3.2.1 贿赂攻击

    1)攻击描述

    2016年,Bonneau[36]提出了贿赂攻击,攻击者给予节点领导多于正常发布区块的奖励,使得当前时刻节点领导在攻击者所提供的链上发布区块.贿赂攻击通常会使得区块链产生分叉,从而更易受到其它威胁比如双花攻击等.假设当前主链为C,攻击者利用私链Cbri发动攻击,Cbri=B0B1Bm-1.攻击者贿赂r+1时段的领导,受贿的节点领导延续Cbri产生一个与Bm矛盾的新区块并将发布到网络当中.由于敌手发布的新链与主链长度相等,即并且网络存在延迟,对于部分节点,会比C先到达,这些节点会将敌手的私链当作主链,在其的基础上发布下一个区块.

    2)应对措施

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

    3.2.2 无利害关系攻击

    1)攻击描述

    以太坊维基百科(Ethereum Wiki)在2017年首次描述了无利害攻击[24],其基本原理与贿赂攻击相似.在权益证明协议中,生成一个新的节点所需要付出的代价极小,攻击者可以在链的多个分叉上同时创造多个不同的新区块,并且发布到网络中,实现自己利益的最大化.如果攻击者同时产生多个相互矛盾的链一起发布到网络中,那么其他的诚实节点无法高效的达到共识,从而导致区块链更易受到双花攻击等.攻击者拥有链长相近的多个链{Cnot1 ,…,Cnotn},这些链在不同时段产生了分叉.攻击者针对每一个链创造一个新的区块并将所有的链发布到网络当中,以增加自己发布的区块成为主链的概率.其攻击过程如图2所示.

    图2 无利害关系攻击

    Fig. 2 Nothing at stake attacks

    2)应对措施

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

    3.2.3 历史多数攻击

    1)攻击描述

    2017年,Kiayias等人提出了历史多数攻击[8],根据诚实节点为大多数的假设,敌手可以选择性地控制当前没有权益,但在过去的某个阶段有着大量权益的节点,这些节点通常为长期不在线或者网络较差的节点.敌手利用这个节点的信息来产生不同于当前版本的区块链,来达到对区块链操控的目的.历史多数攻击会使得区块链产生分叉,使得区块链更易受到类似于双花攻击等.权益证明协议能正常运行的前提是假设需要每个时段的活跃诚实节点权益超过总权益的一半,即αH>1/2.譬如:敌手在rr+1时段的权益分存在一个节点Pi(PiUPalert)在时段r权益占比为30%,而在时段r+1的权益占比为0%.敌手如果直接在r时刻对P发起攻击,企图获得其权益,不仅违背诚实节点的权益之和过半的安全性假设,而且难度高.敌手在r+1时刻对P节点发起攻击,利用Pr时刻30%的权益来攻击区块链,再基于自己和节点P的权益生成新的r时段的区块如果攻击者被选为r+1时段的领导,那么他发布的新链将被其他诚实节点所接受(len(C)<len(C1 )),这种攻击方式不仅没有违背安全性假设前提,而且相对容易.

    2)应对措施

    攻击者通过获得在过去持有大量权益节点的私钥,来伪造过去这个时期的区块.为了抵御攻击,权益持有者在每次新发布区块签名之后将自己的私钥更替,使敌手无法伪造这个时段的区块,从而抵御此类攻击.David等[21]人使用密钥更新函数FKES保证前向安全来预防这类攻击.节点在每次完成领导选举函数之后,将自己的签名区块所使用的私钥通过FKES来更新.假设在时段1,节点Pi所使用的签名和验证的密钥对为当此节点完成时段1的领导筛选函数后,需要将自己的签名私钥通过FKES函数更新为同时再本地删除在时段2时,节点Pi所使用的签名密钥对则变为因此,如果攻击者希望在时段r,利用节点Pi在时段r-1的权益来产生区块实现攻击,即使攻击者在时段r控制了节点Pi,也无法得到节点Pir-1时段所使用的私钥从而攻击者无法伪造r-1时段的区块,保障了区块链的安全性.

    3.2.4 长程攻击

    1)攻击描述

    2014年,Buterin[21]提出了长程攻击,其基本思想为敌手产生并广播一条分叉较大而且比当前网络中广播的链长的区块链,诱使其他节点接纳,篡改已被接纳的交易信息,影响交易的客观性和中立性.长程攻击成功后会使得区块链产生分叉,如果分叉的链最终成为主链,那么攻击者获得对链的绝大部分的控制权,甚至重写所有的历史交易.假设主链为C,攻击者完全忽略已有的链,生成不同于主链且更长的私链Clon广播到网路中.由于ClonC长,其余节点按照最长链原则将本地的链C更替为Clon.最坏的情况下,攻击者可以生成一条除创世块以外其它区块都不相同的链,即并且len(Clon)>len(C).其攻击过程如图3所示.

    图3 长程攻击

    Fig. 3 Long range attacks

    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 劝阻攻击

    Fig.4 Discouragement attacks

    2)应对措施

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

    3.3.4 日食攻击(Eclipse attacks)

    1)攻击描述

    Heilman于2015年提出了日食攻击[22],攻击者通过控制目标节点的通讯网络,阻挡与其余诚实节点的信息传输,屏蔽交易信息以及区块信息,使其直接接收到攻击者所提供的交易以及区块信息,让目标节点为自己的私链工作.被攻击的节点运行筛选函数Select(·),所筛选的链的集合为敌手所提供的链的集合{ClocC1C2,…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)攻击描述

    Daian[9]于2017年提出了变节攻击,其基本思想是攻击者利用密钥窃取攻击的原理,控制当前权益低而在过去某个时段拥有大量权益的多个节点,生成一条长于主链的私链来实现攻击.变节攻击会产生一条不同于主链的私链,使得区块链产生分叉,给予攻击者对链的绝大部分的控制权,导致区块链为攻击者所用.攻击者控制节点集合为V,生成以B0为创世块的私链CPosB0同时也是主链C的创世块.攻击者控制的节点集合在时段r的权益比例为并且这些节点V在时段r之前的权益较大,并且满足攻击者根据控制节点的权益占比,在当前时段(时段r)基于创世块B0生成不同于主链的私链.具体来说,攻击者首先在时段1利用控制节点的权益比以及自己在所拥有的权益比生成不同于主链的新区块虽然但由于目前为时段r,未违背诚实节点的权益比高于半数的假设,即之后攻击者接着利用相似的原理生成直到私链CPos的长度超过主链C,即len(Cpos)>len(C).其攻击过程见图5.

    图5 变节攻击

    Fig.5 Posterior corruption attacks

    2)应对措施

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

    3.4.2 权益窃取攻击

    1)攻击描述

    Gaži等人[27]于2019年提出了权益窃取攻击,其基本思想是攻击者利用长程攻击的方式获取对区块链的控制.具体来说,攻击者首先在私链上不断积累交易费用来扩大自己的权益比,并且拒绝为主链工作影响主链的延伸速率,当积累了一定的优势后,将自己的私链广播给其他节点来替代主链.权益窃取攻击会产生一条不同于主链的私链,从而使得区块链产生分叉,给予攻击者对链的绝大部分的控制权,导致区块链为攻击者私用.攻击者从创世块开始创造一条不同于主链的私发动攻击.他同时参与主链C以及私链Csta(初始Csta为B0)的选举函数,在每次被选为时段的领导者后根据以下规则判断:如果为主链的领导者则拒绝产生区块,如果为私链的领导者则基于私链Csta生成新的区块.发动攻击前,攻击者须持有一定权益,即假设诚实节点的初始权益和为所有结点的总权益私链Csta始于主链C上的B0,敌手基于初始块B0生成的区块中.在创建时攻击者尽量写入交易费用高的有效交易信息tx,以提升攻击者的权益,tx为在主链C上存在的交易信息.因此,在私链中将自己的权益由提升为而诚实节点的权益则降低为攻击者在每次被选为节点领导后自己所拥有的权益比都会提升,基于新的权益比为私链成下一个区块.由于攻击者的权益比在私链中不断地提升,当长度大于主链时,攻击者广播私链.根据最长链原则,攻击者所产生的私链会被其他节点所接纳.其攻击原理如图6所示.

    图6 权益窃取攻击

    Fig. 6 Stake bleeding attacks

    2)应对措施

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

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

    1)攻击描述

    Le[29]于2019年提出了基于日食攻击的权益窃取攻击,攻击者为了提高权益窃取攻击的攻击效率,在发动权益窃取攻击前,首先对某些高权益的权益持有者发动日食攻击,让这些受影响的节点为自己的私链工作,提高私链的增长速率,以尽快达到攻击目的.攻击者首先选定部分节点发动日蚀攻击,V表示这些节点的集合,这些受攻击的节点只能收到攻击者所提供的链以及交易信息.诚实节点、V中的节点和敌手所控制的节点都同时运行领导选举函数.当诚实节点运行主链的选举函数的同时,V中的节点运行私链的选举函数,敌手同时在主链和私链运行选举函数.最初私链CESBA和主链相同,即CESBA=C=B0,最后一个区块为B0,节点集合V的权益为敌手的权益为诚实节点的权益为当诚实节点被选为领导时,利用收集的交易信息tx在主链发布新的区块B1,之后广播B1,其他诚实节点所控制的主链变为CB1.交易信息tx不含有敌手的交易信息,即fee(txA)=0.敌手会把新区块B1的信息屏蔽,使V中的节点无法获得此区块,V中的节点所拥有的链依旧为CESBA.节点集合V的权益为敌手的权益为诚实节点的权益为都没有发生变化.V中的节点被选为领导者,节点利用敌手所提供的交易信息txA,来发布新的区块敌手所提供的交易信息需为有效交易信息,无效的交易信息会使得交易费无效,无法使权益增加.攻击者收到后延伸私链为集合V中的节点所持有的链也为节点集合V的权益为敌手的权益未发生变化依旧为诚实节点的权益为这里假设敌手不会自主向集合V中的节点提供权益.当敌手被选为主链C上的领导时候,敌手拒绝产生新的区块,从而使得主链的增长速率变慢.当敌手被选为私链的领导时,敌手利用收集的交易集合txA产生新的区块并广播给集合V中的节点,V中的节点根据最长链原则会将添加到本地的链上.在本轮结束后,敌手控制的私链为中的节点的本地链也为节点集合V的权益为敌手的权益为诚实节点的权益为

    2)应对措施

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

    4 展 望

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

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

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

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

    5 结束语

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


     
    (文/小编)
    打赏
    免责声明
    • 
    本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:https://2024.dingdx.com/news/show.php?itemid=1571 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
    0相关评论
     

    © Copyright 深圳市鼎达信装备有限公司 版权所有 2015-2022. All Rights Reserved.
    声明:本站内容仅供参考,具体参数请咨询我们工程师!鼎达信作为创新真空产品研发制造商,我们提供海绵吸具,海绵吸盘,真空吸盘,真空发生器,真空泵,真空鼓风机,缓冲支杆,真空配件,真空吊具等等产品

    粤ICP备17119653号