进阶篇6.1 区块链上的攻击
区块链通常被认为是高度安全的,但它们提供的安全级别与支持网络的哈希功率的大小成正比。矿工越多,采矿硬件越强大,就越难对网络进行攻击。在本文中,我们将涵盖大部分公共区块链上最常见的攻击情形。
拜占庭将军的问题
在我们进入不同的攻击场景之前,我们想向您介绍一种思想实验,即拜占庭将军的问题,该问题在几个世纪以来一直未解决,直到区块链技术被引入,声称已经解决了它。
想象一下,几个世纪前你是一名将军,你想用你的军队攻击一座城堡,城堡非常强大,军队内部强大。你已经安排了许多其他军队来支援这次袭击,而且每支军队都会从不同的方面进行攻击。军队之间的距离是相距几英里的距离。如果他们同时攻击,那么胜利的机会非常高。如果攻击不协调,那么你很可能会遭受失败。
拜占庭将军问题你作为将军有以下问题:你如何确保所有军队同时进攻。换句话说,如何在攻击时间达成共识?你不能用旗帜,火把或烟雾给出信号,因为这些信号可以被敌人拾取。
你可以在马背上派信使,但是如果他们中的一个人在到达友方的将军之前被俘或被杀了怎么办?要知道其他将军收到了这条消息,你可以让他们发回一个信使来确认。派遣出去确认的信使也可以在返回途中被捕获或杀死。其他将军不知道你是否收到他们的确认,所以你必须发出2次确认信使,但如果这些信使被抓获怎么办?即使没有冒充者传递欺诈性信息和叛徒,但如果因攻击有风险,需确认以不采取行动,这种情况也被认为是无法解决的。没有人能够绝对肯定地知道其他将军是否打算同时攻击与否。
区块链技术声称已经解决了这个问题。
每个将军现在都有一个事件分类账,这些事件总是与其他将军的分类账同步,而且没有中央方负责协调。每次开采一个区块,所有参与者都会同意最近几分钟的事件顺序。回到我们一般的问题,现在他们有办法知道他们是否都要攻击,或者他们是否应该集体撤退。
批评者可能会指出,工作证明区块链并非真正的拜占庭容错,因为共识没有终极性。交易的确认越多,或者更一般地说,块中包含的信息越多,该信息最终的概率就越高。但总有小概率会发生分叉,而另一个不同的长链将取代旧的。如果您不熟悉最长链规则,请查看我们关于共识机制/挖掘的文章。
查看具有大量哈希率的PoW区块链,例如比特币区块链,在一个区块之后有一个分叉的机会,只要在它有6个最少确认数就会被最终认定为一个区块。在我们关于高级部分51%攻击的文章中,我们将看一下计算这些机会背后的数学。
现在我们已经讨论了共识机制旨在解决的一般问题,让我们看看一些简单直观的攻击场景以及我们如何解决它们。
DDOS攻击
计算中的分布式拒绝服务(DDOS)攻击是一种攻击,其中犯罪者试图通过向网络充斥大量多余请求以试图使系统过载,使其用户无法使用网络资源。 这是一种攻击不仅是区块链,而且任何在线服务都会受到影响。 在一个简单的形式,DOS(拒绝服务)攻击,所有这些请求来自同一个来源。 这使得它比较容易预防。 如果单个IP地址发送了大量因合理原因却无法证明的请求,您可以采取措施自动阻止此IP地址。 在DDOS攻击的情况下,分布式是指向不同源网络向外发出大量恶意请求。
DDOS攻击比较难以解决,因为这样做需要区分合法和恶意请求。 这是一个非常难的问题。 在区块链的背景下,这归结为一个几乎意识形态的问题。 引入交易费的动机是消除垃圾邮件。 有些人认为,只要请求附加了交易费,根据定义它们就不能被视为垃圾邮件。 我认为,只要请求(在这种情况下是交易)的唯一目的是减慢网络速度,它仍然可以被视为垃圾邮件。 这是一个强烈的主观观点,因为无法确定大量交易背后的动机。
Sybil女巫攻击
Sybil攻击是通过创建多个虚假身份来尝试操纵P2P网络。 对于观察者来说,这些不同的身份看起来像个人用户,但在幕后,单个实体一次控制所有这些假实体。 特别是当您考虑在线投票时,这种类型的攻击非常重要。 我们看到Sybil攻击的另一个领域是社交网络,过多假账户可以引导公众的讨论。
Sybil攻击的另一个可能用途是审查某些参与者。 许多Sybil节点可以围绕您的节点,并阻止它连接到网络上的其他诚实节点。 这样可以防止您向网络发送或接收信息。
缓解Sybil攻击的一种方法是引入或提高创建身份的成本。这个成本必须仔细平衡。它必须足够低,以便不限制新参与者加入网络并创建合法身份。它同时也必须足够高,以至于在短时间内创建大量身份变得非常困难。在PoW区块链中,实际对交易打包的节点是挖矿节点。有一个现实世界的成本,即购买矿机的成本,与创建虚假的“采矿标识”相关联。另外,拥有大量挖掘节点仍然不足以对网络产生巨大影响。要产生大影响,你还需要大量的算力。换句话说,您需要大型计算机集群。相关的成本使Sybil难以对工作证明区块链发起攻击。
我们已将高级篇中的有一整篇文章,是专门用于Sybil攻击以及如何降低它们发生的风险。现在,让我们继续讨论我们想要介绍的最后一种类型的攻击。
51%的攻击力
对公共PoW区块链的最着名的攻击类型是51%的攻击。 51%攻击的目标是执行双重花费,这意味着将硬币同时花出去两次。要对区块链网络执行51%的攻击,您需要控制网络的大部分哈希率或计算能力,正如名字一样,需要控制51%的算力才能发起攻击。
想要执行双花攻击的恶意矿工,他首先创建一个常规交易,再将其硬币存到交易所,再换成好币或其它货币。这发生在下面的#40区块中。与此同时,他们将开始私下挖出一条私链。这意味着他们将遵循通常的挖掘协议,但有两个例外。
首先,他们不会将自己的交易打包在自己的私人开采的链中。其次,他们不会将他们找到的块广播到网络,因此我们将其称为私有链。
如果他们控制大部分算力,他们的链条平均出块速度将比诚实链条快。 PoW区块链中的最长链规则,也称为中本聪共识,用于在这种情况下发生的情况。具有更多区块的分支链,被认为是有效链。
一旦攻击者收到用他们的硬币购买的货币或其他货币,他们就会将私链广播到整个网络。所有诚实的矿工将放弃诚实的链条,并开始挖掘恶意链。攻击者的交易视为从未发生过,因为攻击者未将其包含在恶意链中。攻击者仍在控制他们的资金,现在可以再次使用它们。
51攻击原理过去,许多较小的区块链发生了这种情况。 事实上,Horizen在2018年6月初遭受了51%的攻击。我们立即开始研究解决方案,以防止区块链被51%攻击,因为这些区块链没有像比特币区块链那么多的计算能力。
我们想出了一个解决延迟块提交区块的解决方案。 矿工没有合理的理由同时向网络广播几个区块。 我们的保护机制使这些攻击非常昂贵。 如此昂贵,以至于对我们的网络进行这样的双花攻击没有任何经济意义。 许多其他区块链现在正在寻求使用其协议实现类似的保护机制。 您可以在官网找到我们防止双花攻击的白皮书。
总结
区块链解决了拜占庭将军在交易中,不能达成共识的问题。区块链可以通过不同方式受到攻击。随着更多的计算能力被添加到网络并且它变得更加健壮,随着时间的推移执行这些攻击变得更加困难。在DDOS攻击中,犯罪者希望通过向网络发送大量事务,或垃圾邮件来减慢或停止网络。在Sybil攻击中,恶意行为者控制许多假身份,并试图干涉在线选举或操纵P2P网络中的通信。在51%的攻击中,控制网络上大部分计算能力的矿工试图通过首先编写区块链的私有版本来花两次硬币,然后立即将所有区块广播给诚实的矿工。
除了51%攻击外,本文中介绍的攻击情形不是区块链的特有情况,并且自分布式对等网络开始以来一直存在。有许多措施可以降低不同攻击情形的风险。我们将在高级篇仔细研究它们。我们希望上一篇文章不会让您对区块链安全性留下错误的印象。区块链技术是高度安全的,但与数字领域的其他任何东西一样,没有无敌的协议。
这是我们技术部进阶篇的最后一篇文章。我们希望你喜欢你在这里找到的东西。您为什么不转到我们的高级篇以更深入地了解区块链技术?我们将更详细地介绍整个进阶篇中所提出的各个想法。我们的进阶篇文章的大多数小节都是专门我们为雄心勃勃的读者提供的文章。
我们一直在寻求建设性的反馈。如果您对我们如何改进我们的学院有任何想法,请不要犹豫,联系我们academy@horizen.global。
感谢您的阅读,您的Horizen团队!
微信群加:gyshiyi
知识星球:https://t.zsxq.com/7uNJaiI
中文电报群:https://t.me/joinchat/F_PCzUZpS76NkG-E_Yz4hg
英文电报群:t.me/horizencommunity