主页 > 比特币资讯 >

比特币点对点网络中的日蚀攻击

比特币 2018-11-08 17:01 比特币 BTG比特币

         比特币点对点网络中的日蚀攻击
  自从区块链成为一个热的一塌糊涂的技术后,很多朋友通过各种方式问我:作为知乎密码学领域的一个略有知名度的知友,你是否在研究区块链呀?现在可以告诉大家答案了:我的确也在研究区块链,不过研究的主要内容还是区块链本身的安全性,以及与区块链相关的一些密码学技术。无论区块链整个行业引入了多少资金、区块链相关的代币涨跌情况如何,我一直坚信一个核心原则:技术无罪。当真正深入理解一个技术所能解决的核心问题、这个技术解决此问题的核心思想后,我们才能为一个技术给出客观、公正的评价。

  我个人没有购买过任何代币,当然也就不太关注区块链相关代币的涨跌情况了。但我想承认的是,无论区块链最终发展到什么状态,作为一个数据安全与密码学研究者,我很感激区块链这门技术。正是由于这个技术得到了巨大的关注,才使得密码学相关领域得到了进一步的关注、认同和快速发展。我目前认为,“安全”、“去中心化”、“效率”这个不可能三角是长时间不可解决的。

  一直以来,我们都将重心放在“效率”上,并在满足“效率”的条件下尽可能提供一定的“安全”。但是,如果“效率”和“安全”产生了不可避免的矛盾,大部分情况下我们还是会倾向于选择“效率”。而区块链技术的发展路线更像是以“安全”为出发点的技术,并在满足“安全”的条件下,尽可能提供“去中心化”。同时,如果想提高“效率”,大部分情况下我们反而会选择牺牲掉一定的“去中心化”,而去保“安全”。这是安全领域很少见到的一种技术发展现象。

  好了,闲话不多说,今天我为知友们带来的是一篇安全顶级会议USENIX Security 2015上的一篇论文,题目是《比特币点对点网络中的日蚀攻击》(Eclipse Attacks on Bitcoin's Peer-to-Peer Network)。大约1个月前,我和一位区块链爱好者进行交流后,他为我推荐了这篇论文,并向我提供了会议的演讲视频,希望我能解释一下这篇论文的原理和攻击思想。我观看了以后认为,这篇论文给出的比特币系统攻击方法非常巧妙,同时攻击方法的介绍也涉及到比特币系统实现过程中的很多细节。为了让更多的知友了解比特币系统的细节,作为一个前字幕组成员,我完成了演讲视频的翻译,并将字幕版视频放在专栏中,供知友们观看。(编者:视频翻译可见:https://zhuanlan.zhihu.com/p/42446193)

  为了让没有太多时间观看视频,而又希望了解相关内容的知友了解日蚀攻击的原理,我在下方简要撰写了核心攻击思想。当然了,我还是建议感兴趣的知友们观看视频,甚至阅读论文。这篇论文撰写的非常清晰易懂,通过论文中的引文也能一窥学术领域对比特币的研究情况。

  注意:理解日蚀攻击的原理需要对比特币系统的交易、挖矿流程有着非常清晰的理解。

  相关信息:

  论文下载链接(USENIX Security组会委将所有论文设置为了Open Access,任何人都可以免费下载论文):https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-heilman.pdf。 演讲视频连接(USENIX Security组委会官方也发布了演讲视频,任何人都可以免费观看):https://www.youtube.com/watch?v=J-lF0zxGpu0&t=3s。

  视频介绍

  我们都知道,比特币是一个基于点对点网络(Peer-to-Peer Network)的去中心化数字货币系统,应用区块链完成交易的记录,使用工作量证明机制(Proof of Work)和最长链规则(Longest Chain Rule)作为共识机制,使各个节点比特币的账本达到一致性。比特币系统先天可以遭受51%攻击:当某个节点拥有全网50%以上算力的时候,其从理论上可以实现账本的篡改,从而实现所谓的双重花费(Double Spending)攻击。而51%也就成为比特币系统的安全阈值(Security Threshold)了。

  然而,比特币系统的安全阈值真的为50%吗?是否有其它方法、或者在特定的假设下,可以让比特币系统的安全阈值降低到50%以下?答案当然是肯定的。其中一种实现方法叫作自私挖矿攻击(Selfish-Mining Attack),在提出此攻击的论文《Majority is not Enough: Bitcoin Mining is Vulnerable》中已经证明,理论上此种攻击可以将比特币系统的安全阈值从50%降低到33%。

  We further show that the upper bound on threshold size is 1/3": the protocol will never be safe against attacks by a selfish mining pool that commands more than 33% of the total mining power of the network.

  值得一提的是,这篇论文撰写于2013年,最初发表在密码学著名会议FC 2014上。现在这篇论文已经被著名期刊《Communications of the ACM》接收并于2018年正式刊出。值得注意的是,自私挖矿攻击不依赖于其它假设,只要旷工拥有超过33%的算力并实施攻击,则在比特币系统下,此攻击总可以成立。因此,这是一种非常通用的攻击行为。

  除了自私挖矿攻击外,另一种可以降低安全阈值的方案就是今天介绍的这篇论文所引入的日蚀攻击了。与自私挖矿攻击相比,日蚀攻击对攻击者的要求更高,其需要攻击者实施网络攻击,但并不要求攻击者拥有挖矿算力。下面我们就来看一看这一攻击方法的原理简介。

  点对点网络理论上期望节点与全网中的每一个节点都建立连接。但在实际中这是不可能做到的:建立可靠的TCP连接需要消耗节点的网络资源。因此,比特币系统实际上只允许一个节点接受117个连接请求,并最多向外发起8个连接。

  

比特币

 

  比特币系统中的节点只能接受117个对内连接,对外发起8个连接 我们设想这样一个场景:如果一个节点接受的117个对内连接、对外发起的8个连接,其连接目标都是发起攻击的攻击者,那这是不是就意味着攻击者可以完全控制此节点所接受的信息了?事实就是如此,如果真的可以做到这一点,则攻击者就可以在被攻击节点和比特币网络中建立一个“中继”,使得此节点是能收到攻击者希望它能收到的信息。当发生此种情况时,我们称此节点被攻击者“日蚀”(Eclipse),这个词还是挺形象的~

  

比特币

 

  如果一个节点建立的连接都指向攻击者,则称此节点被攻击者日蚀 如果攻击者足够强大,它不仅可以日蚀一个节点,甚至可以日蚀多个节点,从而将整个比特币网络划分成2个部分。如果真的如此,攻击者就可以用少于50%的算力发起51%的攻击了。攻击过程如下图所示。

  

比特币

 

  通过日蚀实现51%攻击 假定攻击者可以将整个比特币网络划分为两个部分,左侧部分的节点总体拥有30%的算力,右侧部分的节点总体拥有30%的算力,而攻击者总体拥有40%的算力。如果攻击者可以让左右两侧的节点都接收不到相互之间的通信信息,则攻击者相当于与左侧节点建立了一个比特币子网络,而攻击者在这个子网络中拥有4/7的算力;反之,攻击者与右侧节点建立了另一个比特币子网络,攻击者在这个子网络中同样拥有4/7的算力。这样一来,攻击者虽然在全网只占有40%的算力,但在左/右两侧的子网络中却分别拥有50%以上的算力,从而实现51%攻击。

  更糟糕的是,即使攻击者没有包含任何算力,其也可以通过日蚀实现双重花费攻击。具体原理如下图所示。

  

比特币

 

  通过日蚀实现双重花费攻击 假定攻击者A通过日蚀将比特币网络划分成两个部分:左侧节点拥有30%的算力,右侧节点拥有70%的算力,而攻击者要与某个商人M进行数字货币交易,此商人位于左侧。此时,攻击者在左侧子网络中发起一个COIN_0--然而,由于右侧的旷工占有70%的算力,它们一定可以产生一个更长的区块链,并且区块链中包含交易COIN_0--

  由此可见,日蚀攻击的原理很像网络安全中的中间人攻击(Man-in-the-Middle Attack),只不过在中间人攻击中,攻击者只需要阻碍两个参与方之间的通信即可。但在点对点网络中,攻击者需要阻碍参与方与网络中任何其它参与方的通信,这就提高了攻击的难度。通过深入研究比特币系统的源代码,论文作者组合利用了比特币系统中的多了漏洞,成功实现了日蚀攻击。实际攻击表明,当应用一个包含大约400个IP地址的僵尸网络,对一个在线节点发起1小时的攻击后,成功率为84%(攻击实验进行了50次)。

  

 

  日蚀攻击对实际比特币节点的攻击效果 那么,如何抵御日蚀攻击呢?实际上,论文作者给出了6种防御方法,并将攻击过程、防御方法告诉了比特币开发社区。比特币开发社区迅速做出了响应,并更新了比特币系统的源代码。

  

比特币

 

  日蚀攻击防御方法在比特币系统中的部署情况

  以太坊是否存在日蚀攻击?

  实际上,只要区块链系统中点对点网络的实现机制和比特币系统类似,就会存在日蚀攻击。因此,从离乱角度看,以太坊中也存在日蚀攻击。这方面我查询到学术领域给出了两个相关的论文:

  Wüst K, Gervais A. Ethereum eclipse attacks[R]. ETH Zurich, 2016.(以太坊中的日蚀攻击) Marcus Y, Heilman E, Goldberg S. Low-Resource Eclipse Attacks on Ethereum's Peer-to-Peer Network[J]. IACR Cryptology ePrint Archive, 2018, 2018: 236.(以太坊点对点网络中的低资源日蚀攻击)

  其中,第二篇论文的第二作者就是比特币系统日蚀攻击论文的第一作者。感兴趣的知友可以进一步阅读这两篇论文,了解在以太坊中如何实施日蚀攻击。

本文地址:BTG比特币http://www.btglotto.com/bitebizixun/1144.html