针对Layer 2协议审查攻击的研究,Vitalik称同步99%容错共识或是解决方案
译者前言:近日,区块链研究者Ryuya Nakamura等人提出了一种针对Layer2 协议的 审查攻击策略 ,他们认为,这种攻击很难被识别,即使用户通过软分叉去做恢复,也无法在不惩罚诚实验证者的情况下去惩罚攻击者。
而来自以太坊研究社区的其他研究者则提出,实施这种攻击的理论成本是非常高的,因此要实施它并不现实,对此,以太坊创始人Vitalik也发表了他的看法。
(图片来自:pexels.com)
以下是该攻击策略的具体内容及研究者们的讨论:Ryuya Nakamura:我们提出了一种审查特定交易的攻击策略(例如Layer2 协议中的欺诈证明),而想要识别出攻击者会是很困难的。即使用户可通过社区协调的软/硬分叉从攻击中恢复,我们也无法在不惩罚诚实验证者的情况下去惩罚攻击者。
背景
基于欺诈证明的Layer2协议(如Plasma、Optimistic Rollup以及状态通道)的安全性,取决于以下假设:如果运营者/参与者claim无效链外状态,则可以在预定义的时间段内向链提交欺诈证明并将其包含在链中(脚注1)。最近,@gluk64提出了这些协议的安全性,然后在 Twitter 和 ethresear.ch 上进行了讨论。粗略地讲,攻击者可通过在这样的Layer2 结构中,使用51%攻击来审查欺诈证明,以此实现获利,使整个系统(包括Layer1)不兼容激励,特别是因为协议内的奖励补偿了攻击者运行验证器的成本(脚注2)
主要对策是:
1、我们可通过“ 反DoS攻击 ”来增加此类审查攻击的成本。(参见@adlerjohn的评论)
TL;DR: 在以太坊的智能合约模型中,如果不实际执行交易,就不知道在执行交易时调用了哪些合约,因此可以通过向攻击者发送一堆交易来对审查进行DoS攻击; 2、我们可以通过软分叉从攻击中实施恢复,也可以“消灭”攻击者在PoS链中的权益。(参见@ vbuterin的评论 )
而在这篇文章中,我们描述了一种新的审查攻击策略,而以上这些策略都无法解决这种攻击,此策略适用于除Layer2协议中欺诈证明之外的任何交易。
攻击的描述
我们假设一个PoS系统,比方说以太坊2.0 信标链(脚注3),其中区块提议者创建一个区块,验证者委员会在每个slot周期(6秒)为一个区块投票,这些投票也被解释为Casper FFG投票以确定区块。我们期望类似的策略也适用于其他共识协议或PoW系统。攻击者的能力
在这篇文章中,我们假设一个攻击者控制了大多数的权益(例如55%)。因为这样的攻击者控制了超过1/3的投票,所以Casper FFG无法完成攻击者所不喜欢的区块。攻击者的策略
1、如果主链并不包含欺诈证明,攻击者将投票给主链 。2、如果主链中包含欺诈证明,攻击者将创建冲突链并为其投票,以分叉欺诈证明 。
2.1 攻击者少数的验证器会投票给包含欺诈证明的链 。(这些其实是 “伪装投票”(alibi votes) ,其使得攻击者的验证器行为类似于诚实的验证器,另外,这种“伪装投票”数必须是足够少的(比如slot投票数的5%),这样区块在分叉选择中就无法获胜)
攻击者在创建区块时以一定的概率选择以下任一项。
3、创建一个没有欺诈证明的区块,其充满了攻击者自己制造的交易 (例如,在攻击者控制的帐户之间传输token的交易)(脚注4);
4、创建一个包含欺诈证明和自制交易的区块 。
4、1 攻击者在下一个区块被发布后,紧接着就发布此区块,以便大多数诚实的验证者不会投票给该区块; 4、2 攻击者为该区块发布“伪装”投票(例如slot投票的40%);
此外,攻击者还有一个策略,它可以鼓励诚实的验证者在没有欺诈证明的情况下创建区块。
5、 攻击者经常以高昂的费用广播其自制交易 ;
为什么说攻击者是安全的
抵抗“反DoS攻击”
当攻击者创建一个区块时,他并不包含其他人创建的任何交易。因此,攻击者只验证诚实验证者区块中包含的交易(要求是全节点),因此,攻击者并不会遭受上述的DoS攻击。攻击的不可检测性
在上面提到的策略中,攻击者不会生成含糊其辞或无效的消息。 攻击者和诚实验证者之间的区别,仅仅在于它们如何创建、发布和投票给包含欺诈证明的区块 。为了减少创建具有欺诈证明的区块的投票率差异,攻击者增加了“伪装投票”(策略2.1和4.2),并减少诚实验证者对攻击者制造的欺诈证明进行的投票(策略4.1)。除此之外,策略2和4.1利用了分布式系统的特性,即活跃性(liveness)故障不能从根本上与网络故障区分开来。此外,还会有各种的网络层攻击,通过这些攻击,攻击者可以延迟诚实验证者的区块和投票,使得诚实验证者看起来和攻击者相似。
因此,尽管我们必须改进策略(例如,通过参数化攻击者的stake、网络条件)以使这些论点更为正式,但我们推测,在不进行错误指控的情况下,很难去识别出攻击者的验证器。
用软分叉、硬分叉惩罚攻击者
如果用户们协调一次软分叉从审查交易中恢复,攻击者可以很快加入新链,以避免被检测到或遭受对liveness(活跃性)失败的任何惩罚。因为用户很难确定攻击者到底是谁,所以我们能做的就是用类似于“惩罚双方”的理念,在惩罚诚实验证者的同时,去惩罚所有可疑的验证者。抵押
而确保只有攻击者一方受到惩罚的一种方法,是强迫任何人去存款成为Plasma/Opistic Rollup的运营者或参与通道,并通过欺诈证明罚没抵押品。如果我们假设社区协调的软分叉很可能成功,并且抵押品是足够多的,那么这样的Layer2协议可能实现激励相容性,同时权衡更高的进入壁垒。如果我们想避免因 诚实的错误 而对欺诈行为进行过多的惩罚,在这种情况下,欺诈证明可顺利提交而不会遭到审查,我们可以限制惩罚的默认金额,在遭到审查攻击的情况下,我们可以用硬分叉对攻击者进行大量惩罚。
脚注
- OTOH,分片中的无效状态根的欺诈证明使链无效而不包含在链中。 这篇文章 提出了一个聪明的技巧;
- 请注意,攻击者不仅可以从单个 Layer2构造中获益,其还可以同时从多个Layer2构造中获益。这就是为什么对非链上(off-chain)资产价值设定上限并不能解决这个问题;
- 在以太坊2.0中,Layer2系统将部署在分片链上,而不是在信标链上,因此最佳攻击策略可能会有所不同。我们把它留给以后讨论;
- 此类自制交易的费用将归攻击者所有;
以太坊研究社区的讨论
对于nrryuya提出的攻击策略,ConsenSys区块链研究员、optimistic rollup创建者John Adler回复称:
“首先,这种攻击的代价并非是零。随后,Matter Labs合伙人Alex Gluchowski(gluk64)回复称:通过估算,要实施这样的协议攻击,攻击者需要掌握大约300万 ETH,或大约4.5亿美元。
其次(更重要的是),你的投票策略是错误的,创建区块并不是投票策略的一部分,而是区块创建策略的一部分。每个slot的领导者(区块提议者)是已知的,至少在ETH2.0的Casper中它是已知的。一个 slot内不可能有多个区块提议者,因此,攻击者的区块将被轻易丢弃掉。
”
“是的,这种策略可能行不通,因为欺诈证明gas价格可能被定得高得难以置信。然而,在不补贴欺诈证明区块的情况下,这种攻击会是可行的,这才是最重要的。攻击者需要的只是“伪装”。很快,这一讨论也引起了以太坊创始人Vitalik Buterin的关注,其回复道:进行伪装的能力,是这项研究最重要的成果。
矿工们既自私又主动,一旦他们意识到有欺诈证明的区块总是被拒绝,很多人自然会引入审查政策以避免损失。尤其是如果这种行为是a)不可察觉(有伪装)和b)通过swag futures行贿激励。
”
“我知道@vladzamfir正在研究一个主观‘CBC审查检测’系统,其提出了一个同步性假设(所有审查检测显然都必须依赖于同步性,因为审查与足够高的延迟是无法区分的),这允许验证器检测谁在进行审查,并形成集群,其中如果多数人在进行审查,少数人可以找到对方并建立在对方的区块上。我想知道它是否最终类似于 https://vitalik.ca/general/2018/08/07/99_fault_tolerance.html ;有可能类似于Lamport的同步99%容错共识的技术,最终会成为自动拒绝审查链的强制性解决方案。”
更多讨论内容,读者可访问原贴:https://ethresear.ch/t/undetectable-censorship-attack-on-fraud-proof-based-layer2-protocols/6492