节选自《洒脱喜一周评丨 Facebook 研究如何阻止 PoS 协议长程攻击,Filecoin 正式启动测试网》
整理:洒脱喜
在 上一期周评论文部分,我们提到了与工作量证明(PoW)共识机制相关的自私挖矿策略研究,可以说,学术界在这方面的研究已经是非常深入了。
然而,当前越来越多的区块链项目在采用权益证明(PoS)共识机制,而非工作量证明机制(PoW),理由是前者具有更好的可扩展性以及更低的能源成本。
相较于相对成熟的 PoW,关于 PoS 的安全研究当前仍处于早期阶段,实际上,权益证明(PoS)共识协议会带来更复杂的建模挑战,目前关于 PoS 共识协议,最知名的安全挑战就是长程攻击(long range attack)以及无利害攻击(Nothing at Stake),而在本周的学术主题精选部分,我们会分享两篇与 PoS 协议安全主题相关的研究,其中一篇是关于 Tezos 的自私激励攻击,而另一篇则是关于如何解决 PoS 长程攻击问题。
Brown Cohen 等人在 2019 年初时提出,在最长链 PoS 协议模型中,完全的安全是不可能的,他们还预测称,PoS 协议当中也会存在自私攻击问题。
而来自哈佛大学约翰·保尔森工程和应用科学学院的 Michael Neuder 等人分析了最近更新的 Tezos PoS 协议,并证明了在某些条件下,理性的参与者确实会被激励参与非诚实的行为。
论文链接:https://arxiv.org/pdf/1912.02954.pdf
他们将这种自私行为,称之为 selfish endorsing (自私背书),这是以前只在理论上考虑过的攻击场景。
2019 年 10 月 17 日,标签为「Babylon」的更新被纳入了 Tezos 协议,对此,研究者分析了这次升级的一个重要组成部分:一个名为 Emmy+的新共识机制。
Tezos 实施了一个可选委托权益证明(DPoS)机制,有时也被称为流动性权益证明(LPoS)机制,以区别于其它的 DPoS 方案。Tezos 共识层的成员被称为代表,其需要持有 8000 个 Tezos 帐户单元(这被称为 roll),每个代理都有一组相关的 roll,活跃的代表参加抽签,在链中的每一个区块高度(bake)烘焙和(endorse)背书一个区块。
而 Baker (烘焙者)负责将交易纳入区块,而 endorser (背书者)则以密码方式签署他们在每一个高度所看到的「最佳」区块。这种烘焙和背书优先权抽签,是通过随机选择 roll,并将下一个可用的优先权给予该 roll 的所有者来进行的,这种技术被称为 follow-the-Satoshi。在链的每个高度,使用随机滚动选择过程创建 baker 列表,该列表中 baker 的索引确定了它们在此高度创建区块的优先级。此外,为每个区块高度创建一组 endorser (背书者,数量为 32),但是没有 endorser (背书者)的优先级列表,因此每个 endorser (背书者)具有相同的权重。而 baker (烘焙者)和 endorser (背书者)将根据参与情况获得奖励,从而激励代表们保持积极性。
下面是「Babylon」协议的更新内容:
新的共识协议 Emmy+,在三个方面不同于其前身 Emmy:
一个区块的有效期现在是一个函数,除了 baker (烘焙者)的优先权外,它还包括背书的数量。
分叉选择规则发生了更改,在这次更新之前,「规范的」分叉是得到最多认可的分叉,也就是最重链规则,而现在的最佳分叉就是从创始区块的最长链,而最长链规则使分叉的评估更容易,并减轻了 baker (烘焙者)的不确定性;
修改了烘焙区块及背书区块的奖励:之前,烘焙一个区块可以为代表赢得 16 XTZ 的固定奖励,而现在的区块奖励则是由 baker 的优先权和前一区块的背书数量 e 共用决定的。
其中烘焙奖励的公式如下:
而背书区块奖励也发生了更改,当前的公式是:
研究者给出一个其称之为自私背书的激励攻击例子,它在一定概念内激励一个理性的 baker X 忽略最长链规则,并比网络的其他部分更快地创建一个单独的两区块分叉。
上图显示了 baker X 如何使用此攻击方式在 slot l 烘焙一个区块,尽管它具有第二优先级(此时,以 0 优先级烘焙的区块也按时发布)。
由于烘焙优先级和背书权限是公开的,委托者 X 能够预测并计算何时可执行此攻击。
那这种攻击有多有利可图呢?
根据研究者的分析显示,即使持有 40% 的 XTZ 权益,执行此类自私攻击的 X,其预计能比诚实参与的年收益仅多出 254.94 XTC,因此,这种攻击的影响其实是不大的。
但无论如何,这是一种如何针对一般最长链 PoS 系统的自私攻击示例。
有意思的是,研究者还针对这类攻击提出了一个简单的修复提议,它可以进一步减少攻击收益(减少至一年 0.21 XTZ)。
研究者还提供了一个框架,可用于通过参数化特定协议的时间和回报模型来检查其它 PoS 系统是否存在自私行为的潜在漏洞。
洒脱喜简评:关于 PoS 类共识机制的自私行为攻击研究,目前还处于非常早期的阶段,虽然这一研究结果表明相关的攻击影响非常有限,但它也为今后相关方向的研究奠定了一些基础。
所谓长程攻击(Long Range Attack),是指攻击者创建了一条起始于创世区块的区块链分支,并试图替换掉当前的合法主链,而该分支链上可能存有和主链不同的交易或区块。
如果攻击者能够从同一个创始区块开始创建一个与真实交易链不可区分的替代交易链,则我们认为长程攻击是成功的。
试图进行长程攻击的敌对分叉
此前,人们已提出了一些解决方案来缓解长程攻击问题,例如定期在客户端软件中包含一个「检查点」的方案,但如果不引入一个(令人讨厌的)中心化方式,这些解决方案就很难进行部署。
而假设旧密钥的安全销毁,验证者密钥的轮转交替机制有助于缓解这一问题。
然而,验证者也可能会有动力向攻击者出售他们的旧密钥(在清空相关资产之后),尤其是当验证者的真实身份在一个无许可系统中是未知的时候。而当验证者出现这类理性的非诚实行为之时,整个系统的安全性将面临巨大的风险。
那如何有效地解决这个问题呢?
来自 Facebook Calibra 的 George Danezis 教授等人注意到,想要贿赂相当数量的 PoS 币持有者(即使他们已经没有了系统权益),会是更具挑战性的,因为他们要比验证者要多得多。
这一观察使他们引入了一种称为 Winkle 的新机制,利用来自客户端的投票创建基于客户端验证的去中心化二级层,以确认检查点(区块链的快照)并防止对 PoS 协议的长程攻击。
而投票机制非常简单:每个客户端在其签署的交易中包含一个附加字段(先前排序区块的哈希)。
这种方法只依赖于验证者的短期诚实度,以及更多利益相关者的长期诚实度。另外,研究者还提出使用委托方案,并假设了比特币或以太坊类似的使用,Winkle 检查点延迟大约是数小时或几天的时间。
论文链接:https://eprint.iacr.org/2019/1440.pdf
这种设计用于增强共识协议,动态改变验证者以抵抗长程攻击。虽然 Winkle 也可以保护其他系统,但它主要适用于基于拜占庭容错(BFT)共识的区块链,如 PBFT、LibraBFT、Tendermint、HotStuff 或者 SBFT。
最后,研究者还提出了关于 Winkle 的一个关键缺点:其假设有一个诚实的帐户投票给最新的检查点。然而,这会在区块之间创建一个边界竞争条件,这对于冷钱包而言意味着是挑战。
洒脱喜简评:Facebook Calibra 团队研究 PoS 协议的安全问题,大概率是为其 Libra 项目在将来转向 PoS 而进行的(注:Libra 的长期目标是成为非许可网络,而其最初的设计是联盟链),而长程攻击问题显然是 Libra 最迫切要解决的安全问题,目前来看,Facebook 提出的解决方案依旧是存在缺陷的,这需要进一步的研究与探索。
来源链接:www.8btc.com