区块链中的交易安全往往与区块的最终性问题相互关联。
交易接收者必须确保交易不会被撤消,并且发送者无法执行两次消费。就法定货币而言,终局性受到法律的约束,即使货币成为法定货币。在基于PoW(工作量证明)的设计中,区块是永远不会有最终性的。中本聪(Satoshi Nakamoto)表明,在N个区块内发生自发分叉的可能性可以忽略不计,因此人们可以声称比特币具有概率上的终结性。但是,研究人员表明,区块最终性确定实际上是经济确定:当交易逆转所需的成本大于双花攻击的潜在利润时,那么交易就是最终性的。
有时一些区块链专家声称,基于PoS(权益证明)的区块链不存在区块最终性的问题,因为其中的区块是“即时最终”。这种说法是错误的。
无论选择哪种共识规则,分叉都是任何区块链不可避免的问题。
最近关于Steem区块链的报道就是一个很好的例子。网络社区分裂成两个互相敌对的阵营。尽管有共识规则,区块链还是分叉了。每个小组维持自己的分叉链,并在冻结对方的钱包中余额。显然,遵循原始协议规则的原链已经输掉了这场决斗,因为它的市值已经低于分叉链的市值。因此,我们可以得出结论,与PoW区块链类似,PoS区块链中的终结性具有经济基矗以太坊2.0的开发人员有着相同的愿景。
然而,他们声称Casper协议的slashing机制不仅可以防止任何危险的攻击,而且会使双花的攻击更加昂贵。显然复杂的协议逻辑为更复杂的双花攻击打开了大门。
简化的双花攻击
对PoS区块链的双花出攻击的最简单形式是恶意攻击者锁定的抵押数量是诚实参与者的两倍。如果恶意行为者B在类似于Ethereum 2.0的网络中成功做到了这一点,那么在这个特别的分片委员会中,他可能会获得诚实验证者两倍的抵押。
因此,恶意行为者控制分片委员会中2/3的选票。在以太坊2.0中,此票数足以“最终确定”该区块。
假设他想在分片上实现双花攻击。他发布一项交易,B用户向用户A发送代币。该交易进入诚实验证者签名的区块中。B用户增加了一部分选票,使该区当眩在基于PoS的协商一致意见中,委员会的票数必须是赞成票,才能“最终确定”该区块。
根据我们的假设,攻击者的选票中有一半是委员会中的五分之一。那么与诚实的验证者的加在一起,它就等于2/3的选票。这也是“最终确定”区块所需的阈值。因此,A用户了解到该交易已“完成”,并向B用户释放商品。然后B用户通过创建一个分叉并使用他在委员会中的所有投票来验证交易,从而还原该交易。根据Casper协议,B用户在两个分叉中使用的分片的一半抵押应该被削减。Casper协议的设计者声称这是攻击的代价。
在这种简化的情况下,攻击者失去了分片中一半的抵押。同样,此数量等于诚实验证者在此分片中所占的份额。假设网络中有N个分片,然后,攻击者损失了他的总权益的1/2N或诚实利益相关方的总权益的1/N。因此网络中的分片越多,那么攻击者的双花攻击就越便宜。如果将这一值视为衡量网络安全性的标准,那么安全性将下降N倍。请注意,这不是被认为是可伸缩性难题的可能解决方案的属性。但是以太坊2.0的开发人员声称,这种攻击的代价如此之大,以至于1/N的因素都不会对其造成影响。
复杂的双花攻击
上一节中描述的攻击场景不是唯一的。恶意攻击者可能会执行更复杂的双花攻击。Casper协议的作者声称,攻击者的部分抵押会被削减。真的吗?答案是不”。网络中发生的一切都会记录到区块链中。如果区块链不包含任何恶意行为的记录,那么如何指控某人从事恶意行为?
在接下来的的双重攻击中,恶意的参与者可以抵御系统对其抵押的削减。为了减少风险,诚实节点应在特定链上包括用于协调利益相关者的相应记录。它称为信标链。如果信标链遵循未经许可的PoS共识,则需要确认者的三分之二的投票才能将该记录包含在区块链中。因此,只要恶意行为体控制信标链委员会的1/3数量,他就可以避免大刀阔斧!如果他直到他的抵押被解锁之前一直不断攻击,那么他的进攻几乎是免费的!问题是:他应该将抵押锁定多长时间?
在目前的以太坊2.0规范中,这个抵押锁定周期是半年。但是攻击者可以在抵押锁定间隔结束时发起攻击。一个可能的解决方法是在发布前设置一个时间间隔,在此期间,抵押不能被选入分片委员会,然后用于双花攻击。但是这种对策降低了抵押的成本效益。在此时间间隔内,所有受影响的利益相关者都应为其锁定资金获得补偿。但是这些资金已“停用”,因此不参与区块验证。此外,恶意的参与者可以使用此修复来为自己的利益服务,因为他可以谨慎地选择攻击的时间。他可以同时锁定自己的抵押,以便同时“激活”和“停用”他的抵押。相比之下,诚实的利益相关者通常会有一部分利益被停用,因此被排除在验证过程之外。因此,在委员会中获得2/3选票变得更加容易。
有人可能会争辩说,在此版本的攻击中,诚实节点可以观察到信标链委员会中的1/3抵押用于完成攻击。首先,他们可以采取Casper协议中未列出的措施来惩罚攻击者。第二种选择是尝试将更多资金锁定在抵押中,甚至开始新的分叉。第一种选择不是可行的情况,因为攻击者可以进行“审查”。
他可以在信标链委员会中使用其选票来阻止分配新抵押。因此,他可以根据需要在分片委员会中保留1/3的选票。第二种选择是可行的,但是,它一开始就滥用了参与者接受的网络协议。如果一个独立的观察者试图根据区块链中记录的数据找出网络中发生了什么,那么他将无法区分恶意行为者和诚实的验证者。
在结束讨论之前,我们考虑一下上次攻击的修改版本。新版本结合了远程攻击和无风险攻击。恶意行为者再次使用其部分抵押分叉一条新的分片链。然而在本例中,他没有向诚实节点透露新的分叉链。然后他就等着,直到他被受损的抵押被解锁。现在他出售了自己受损的抵押,鲁莽的参与者,停止使用他的票委员会诚实分片链,然后向其他分片参与者透露他新的分叉链。根据该协议,应放弃由诚实验证者维护的链,因此攻击的修改版本成功。请注意,用于分叉链的抵押保证金已售出。因此,恶意行为者避免了再次被大幅削减。此外,在这次袭击中,他在信标链上的抵押并未受到损害。
可以根据使用检查点的情况,建议对修改后的攻击进行修复。根据这个修正,这个链包含了“无法恢复”的检查点区块,但是这个修正是有争议的,因为“检查点”的概念在区块链的设置中不起作用。众所周知,区块链中的区块永远不会不分叉。分叉是区块链的自然属性,任何分叉都会有自己的“完全确定的检查点”。因此使用“检查点”的概念通常会造成混淆和误导。如果节点必须依靠检查点,那么它必须依靠“检查点提供者”。这要求将信任元素引入所谓的无信任网络中。
我们的结论是,攻击者以抵押形式分配大量权力,可以在网络中发起毁灭性攻击,同时避免大幅削减机制。这种攻击形式非常类似于51%攻击,这可能是在基于PoW的区块链中进行的。
----------------------------------------------------
原文作者:Jax.Network
译者:链三丰
译文出处:http://bitoken.world
----------------------------------------------------