12

反51%攻击:哈佛MIT学者提出抗击双花新理论

 4 years ago
source link: https://www.8btc.com/article/568133
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

写在前面:历史上区块链世界曾多次发生51%攻击,而它们都发生在小币种的身上,而据哈佛大学和MIT的研究者表示,他们在观察到的40次重组攻击中,还看到了可能的反攻击案例,在2020年2月份,Bitcoin Gold区块链上疑似出现了攻击者与防御者的多轮对攻情况,对此,研究者提出了防御51%攻击的反击理论。

注:原论文作者 Daniel J. Moroz∗(哈佛大学),Daniel J. Aronof(MIT )、Neha Narula(MIT Media Lab)以及David C. Parkes(哈佛大学)

Vfa6ryb.jpg!web

(图片来自tuchong.com)

以下是译文:

比特币和其它工作量证明(PoW)加密货币的经济安全性,取决于重写区块链的成本。如果51%攻击在经济上是可行的,则攻击者可以向受害者发送一笔交易,发起攻击,然后双花同一笔币。中本聪(Satoshi Nakamoto)认为这种情况是不会发生的,因为大多数矿工会发现,诚实地遵守协议要比攻击区块链更有利可图。

而最近的研究表明,攻击加密货币的成本差异是非常大的,这取决于诸如算力的流动性,对币价的影响以及重写区块链所需时间等因素。在某些情况下,攻击甚至可能是免费的。 截至2020年3月,对于像比特币这样的区块链,矿工们已经在挖矿设备上进行了大量的先期投资,并且他们不愿意把大比例算力拿出去出租,因此今天要对比特币发起攻击,其成本可能是非常高的然而,其它一些币种的情况则大为不同,市场上有足够可租用的算力,可供发起经济而高效的51%攻击 ,并且在现实当中,我们已经观察到攻击者对这些币种发起的双花攻击。使用NiceHash这样的算力市场,买卖双方可以轻松地进行对接。

现在,人们通常认为,低算力的币种(所属PoW算法类别中算力较低的币种),会因为算力租赁市场的存在而容易遭受廉价的51%攻击,并且它们是不安全的。

在最近发表的题为《 针对双花攻击的反击 》这一论文中,我们讨论了一种策略,以防止处于弱势的PoW币种遭受51%攻击:受害者可以发起反击。我们证明了受害者有能力在原始链上租用算力并进行挖矿,在发生攻击时赶超攻击者链,在平衡状态下这可以阻止攻击的发生。研究结果在以下假设下成立:(1)受害者遭受了中等程度的声誉损失,而攻击者则没有(例如,如果受到攻击,交易所可能会遭受负面声誉影响,而匿名攻击者则没有),以及(2)攻击的净成本随着时间的推移而增加(例如算力的上升等)。虽然在我们撰写这篇论文时,并没有证据能够确定现实世界中存在针对双花攻击的反攻情况,但我们最近确实观察到了这种可能。

3QFNzez.png!web

(上图显示了反攻游戏的三个阶段,绿色表示当前最重的公共链(即规范链),白色表示较小的分支链。最上面的阶段显示了一次51%攻击的开始,其中攻击者A向防御者D发送了一笔交易,但这笔交易是在一条替代链上,它的目的是使原始交易无效。第二个阶段显示了双花交易的揭示,其中攻击者链成为了最重链(规范链)。第三个阶段显示了防御者D反击的结果,在此过程中,D是在原链上进行的挖矿,并超过攻击者A的区块链。)

2019年6月份,我们实现并运行了一个重组跟踪程序,该跟踪程序监控了23个目前最受欢迎的工作量证明(PoW)区块链。对于每一个币种,跟踪器都会检测并保存所有链顶端(chaintip)上的数据。截至目前,它已在Vertcoin、Litecoin Cash、Bitcoin Gold、Verge以及Hanacoin这些币种上观察到了40次至少六个区块深度的重组攻击。

关于Bitcoin Gold的重组攻击和反击

Bitcoin Gold(BTG)是于2017年10月24日从比特币分叉出来的,截至2020年3月10日,它的市值为1.68亿美元。Bitcoin Gold并没有使用比特币的SHA256算法,而是采用了ZHash抗ASIC算法,这意味着矿工可以使用GPU进行挖矿。与BTC不同,BTG每个区块都会进行难度调整。

然而,BTG遭受了多次双花攻击,其中最大规模的一次51%攻击发生在2018年5月份,当时有388,000 BTG(当时约为1800万美元)被偷。而在2020年1月和2月份,BTG再次受到了双花攻击。通过重组跟踪器,我们可以在2020年1月23日-2020年2月5日之间观察到8次BTG重组。其中有4次是有双花的,涉及到12,858 BTG(约合15万美元)。

在2月份,我们注意到,BTG链上似乎上演了一场了反击游戏。一开始,这只是一次典型的重组攻击,其中一笔交易在一次双花中被逆转,但随后又出现了双花被逆转的情况,这使得原始交易再次有效。2月8日,攻击者和反击者在2.5小时内来回进行了4次大战。最终,原来的区块链被修复,所以这笔双花并没有成功。2月9日和2月11日,我们观察到了称之为“one-shot”的反击:攻击者制造了一次重组,而防御者只进行了一次反击,就恢复了原来的区块链。

在2月8日发生的反击游戏中,双方争夺的是两笔交易757 和d5f(译者注:tx的缩写),攻击者将它们替换为交易50d 和f38。AbC和AYP(注:地址的缩写)这两个地址总共被偷了4390 BTG(约合44000美元),这些币被发送到了GVe和GYz。最终的重组深度为23,这将为矿工带来大约290 BTG(3000美元)的区块奖励,约双花总收入的7%(关于更多详细,请参阅 此处 )。注意,在每一对交易中,第二笔交易花费了第一笔交易的输出,即如果第一笔交易由于双花而无效,则第二笔交易也将无效。因此,我们可以把它们视为一个单元。两个单元有相同的输入,但有不同的输出,我们将其解释为被盗的地址。

接下来,我们将说明2月8日发生的反击游戏的挖矿动态。你可以在这里看到来自两条链的带时间戳的区块列表。 我们称这些地址为“防御者”,当原始链不是工作量最大的区块链时,“防御者”将在原始链上获得挖矿奖励。而那些一直跟随工作量最多链(即从未在少数分支链上挖矿)的矿工,则被认为是“旁观者”

我们的节点在在UTC时间06:56开始观察到了4次重组。第一次重组将原区块链的最后9个区块替换为9个新区块。在新的区块链中,每个区块中都有两个攻击者地址:GKGUq2p和Gh46Jw1,并且在分叉区块(block 619935)之后的第一个新区块中有双花交易。然后,在UTC时间07:35,我们的节点观察到了另一次重组,其在原始链上又挖了另外4个区块(难度更大)。而防御者则是GbWi6y7和GSsjeTZ,双方反复进行了交战,之后,攻击者以放弃告终,并在UTC 时间08:58挖了最后一个区块。根据区块中的时间戳以及节点观察到的重组世界,我们对时间轴的最佳猜测如下:

  1. 4:04 ,攻击者开始从619934高度的区块挖矿,并在高度619935挖取了一个区块,并进行了双花;
  2. 6:55,攻击者挖了9个区块,其所在链超过了现有链;
  3. 6:56,我们的节点观察到并重新定位到攻击者的区块链。“旁观者”矿工切换至攻击者的区块链,并将其延长了2个区块;
  4. 7:20 防御者开始挖矿,并延长原始链上未被攻击的区块(区块高度619943);
  5. 7:33 防御者在挖到4个新区块后超过攻击者的区块链;
  6. 7:35 我们的节点观察到并重新定位到防御链。“旁观者”矿工切换到防守链;
  7. 7:53 攻击者再次开始挖矿,扩展自己的攻击链,该链有两个附加的“旁观者”区块;
  8. 8:22 防御者在12个区块之后停止挖矿;
  9. 8:58 攻击者在超过防御者11个区块之后,也停止了挖矿;
  10. 9:00 我们的节点观察到并切换至攻击者更深的重组链;
  11. 9:14 防御者再次开始挖矿;
  12.  9:27 防御者在原始链超过攻击者链后,继续挖矿;
  13.  9:28 我们的节点重新定位到防御者的重链上;
  14.  10:20 防御者减少投入算力;
  15.  12:15 防御者停止挖矿;

算力从何而来?

我们没有确凿的证据能够证明观察到的任何BTG重组,其算力是否来自于Nicehash。这种不确定性,是由于在没有主动攻击的情况下,BTG上的出现的价格和可用算力的大幅波动造成的。

这与我们最近在Vertcoin(VTC)双花攻击中观察到的Lyra2REv3(从Nicehash市场租用了算力)形成了对比,在这次攻击中,我们清楚地看到算力的价格在攻击期间出现了飙升,而攻击后又回到了基线。

算力可用性和价格的峰值频率,使得我们很难将看到的峰值归因于攻击。然而,市场上有足够的ZHash算力可被用于执行BTG攻击,并且存在与检测到的重组事件一致的算力峰值。

Vn6VFrA.png!web

检测到的重组期间Nicehash ZHash市场总结,红线表示重组事件的时间

攻击理论

实际上,攻击可通过在Bitcoin Core节点上调用一个命令来完成,因此攻击者可能不需要编写任何新代码。

例如,攻击者可能执行了以下操作:

invalidateblock
而防御者只需在包含双花交易的攻击者区块上调用 invalidateblock

,这将导致其节点继续在原始链上挖矿,而不是重新定位到攻击者链。

有可能在最后两个案例中,攻击者在看到受害者正在反击时立即停止了攻击。也许攻击者知道,如果受害者能够进行反击,就不值得去和他们对战。在几乎所有的区块对战中,防御者的地址都是GSsjeTZ。在2月1日之前,这个地址从未使用过,而在反击战发生后,其也没有被用于挖矿。

然而,这可能不是一个故意的复仇游戏。在这里我们讨论下其他的可能性。

可能性1 :测试

一种解释是,所谓的反击实际并不是反击,而是由一个试图测试反击软件的实体模拟的。大家可以想象,一家交易所、商家或者有核心开发者已经编写了一个基础设施,以便在发生深度重组时自动反击,他们希望测试自己的软件是否能够正常工作。这可以解释为什么在2月6日发生的反击没有任何双花。

可能性2 :矿工之战

矿工们可能一直在互相进行反击,这不是因为其中一人或两人有兴趣追回双花的资金,而是为了偷窃,然后追回区块奖励。再一次,2月6日的反击没有双花的事实,也支持了这一理论。

可能性3 :网络分裂

这可能是Bitcoin Gold中存在的一个短暂、重复发生的网络分裂。有可能在同一时间,某个客户端钱包广播了一笔交易,该交易将花费的输出加倍到分裂链的另一端。我们不知道是否有Bitcoin Gold钱包软件能做到这一点。区块时间戳与此是不一致的,这表明矿工是积极在挖矿的,然后停止了几次。而时间戳也存在可能是伪造的。攻击者和防御者的地址,在攻击前后,都没有再被使用过。

可能性4: 软件漏洞

有可能是因为参与挖矿的软件存在某种漏洞,导致他们无法在最长链上挖矿,或者他们意外地调用了 invalidateblock

可能性5: 偶然的机会

另一种可能,则是两个大型矿工恰好在同一时间发现了区块,这种分裂的概率是很低的。这似乎不太可信,因为时间戳没有反映这一点,并且最长的重组是23个区块;

结论

算力市场的日益发展,可能会破坏工作量证明(PoW)加密货币的安全性。然而,尽管流动算力市场的存在表明一条弱链是容易受到攻击的,但受害者反击的可能,在平衡状态下有可能阻止攻击。如果这种力量的平衡,足以保护区块链,那么这就提出了一个问题,即需要多少工作量才能防止攻击?

在这项研究工作中,我们只考虑了一个理性的攻击者,而如果存在非理性的攻击者,其可能不在乎在51%攻击中损失的金钱,这使得他们要比潜在的反击者更具有优势。对于这样的破坏者来说,51%攻击的成本可能仍然是重要的威慑力量,正如今天比特币所拥有的那样。

致谢:我们要感谢《针对双花攻击的反击》论文的共同作者Dan Aronoff和David Parkes。也感谢Tadge Dryja、Madars Virza和Gert Jaap Glasbergen对这项工作的有益反馈。

作者:James Lovejoy, Dan Moroz, Neha Narula


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK