标签: 攻击

  • 什么是日蚀攻击(Eclipse Attack)?

    日蚀攻击是一种相对简单的基础攻击,攻击者可能会通过该攻击方式干扰网络上的节点。顾名思义,该攻击能够使对等网络中被攻击节点无法获取有效信息,从而引发网络中断或为更复杂的攻击做准备。

    从表面上看,日蚀攻击(Eclipse Attack)与女巫攻击(Sybil Attack)相似。尽管它们具有某些相似之处(攻击者通过攻击节点扰乱网络),但它们最终的攻击目标是不同的。日蚀攻击的目标是单个节点(原因将在下文中说明),而女巫攻击的目标是整个网络范围,旨在篡改网络协议的信誉体系。

    2015年所发表的《在比特币对等网络上的日蚀攻击》论文中,对该概念进行了详尽的讨论,其中来自波士顿大学和希伯来大学的研究人员报告了他们进行日蚀攻击的实验结果,以及与之对抗的防范措施。

    日蚀攻击的工作原理

    比特币矿工需要专用设备生成验证新区块,但是非挖矿(或完整)节点仅需要非常小的算力即可运行。通过这种方式,任何人都可以在廉价设备上运营节点,这也有助于比特币的去中心化。软件程序维护了与对等方同步的事务处理数据库,以便与网络保持同步。

    对大量节点连接的限制因素是带宽。因此,尽管有大量设备可以运行该程序,但比特币网络中设置了连接数量限制(最多只能连接125个),普通设备无法直接与其他设备进行互连。

    在日蚀攻击中,攻击者会确保目标的所有连接都建立在攻击者所控制的节点上。攻击者将首先从自己的IP地址向目标地址发送泛洪,受害者可能会在程序重启时连接到攻击者的IP地址。可以强制重启(即对目标进行DDoS攻击),或者仅等待程序自动重启。 

    如果发生这种情况,毫无戒心的受害者就会听从恶意节点的摆布,攻击者向它们提供了错误数据,他们无法从真实网络中获取到数据。

    日蚀攻击造成的后果

    如果攻击者通过消耗网络节点的资源,能够使其从网络中分离,那么他们就有动机实施此类攻击。如果节点被隔离了,攻击者就可以实施几次连续攻击。

    无需确认的“双花”

    如果独立节点接受了未经确认的交易,那么就会发生“双花”风险。如果发生的交易在进入区块之前(提交至区块链),可能已经进行广播了,那么发送方就可以在其他地方轻松得进行一次新的交易,花费掉与此前交易相同的金额。如果新产生的交易手续费较高,这个时候矿工们会优先处理该笔交易,并认为这笔交易是最先发生的,从而造成最先发生的交易无效。 

    某些商户和个人接受这些0确认交易。假设某个商人Bob,他销售高端汽车。他不知道Alice已将将他的节点进行了日蚀攻击,再看到她的豪华跑车订单后,也没有产生任何怀疑。Alice创建了交易,Bob随即将其广播到网络。在看到付款消息即将被确认后,感到非常满意,他将车钥匙交给了Alice,Alice开车加速离开。

    而实际上,交易并没有被广播到网络中,Bob只是将交易传递到了Alice的恶意节点中,而Alice所控制的恶意节点也不会将交易传递到真实节点中。因此,该笔交易会被认为无效,这个时候Alice在(真实)网络上又支付了同样的金额,可以是转给她自己也可以是转给其他人。即使最后在真实网络中看到了最初和Bob之间的初始交易,但由于Alice账户中的资金已经使用掉,该笔交易也无法被验证。

    需N次确认的“双花”

    需N次确认的“双花”与无需确认的“双花”相类似,只是涉及更多的准备工作。许多商户都希望付款被标记为有效之前能够先等待一定数量的确认。为了解决该问题,攻击者必须使矿工和商户节点都进行日蚀攻击。如果攻击者与商户建立了订单,他们就会向(遭受日蚀攻击)的矿工广播交易。商户可以在区块链网络中看到交易被确认,但由于矿工和商户所在的网络都被隔离了,因此该区块链并不是大多数真实节点所能够见证的。

    攻击者将该虚假的区块链网络信息发送给商户,商户在看到交易已经被确认后,就进行了商品的交接。而当这些遭受日蚀攻击的节点重新加入真实网络后,真实的区块链网络会认为这部分节点是无效的,从而将这部分节点进行孤立(这与51%攻击相类似)。

    削弱矿工之间的竞争

    遭受日蚀攻击的节点会继续运行,不会受到被网络隔离的影响。矿工将继续在协议规定的规则范围内对区块进行验证,但是添加的区块将会在和真实网络节点进行通过的过程中进行丢弃。

    从理论上讲,对大部分矿工的大规模日蚀攻击可用于促进51%攻击。就目前的情况而言,即使是最有资源的攻击者,接管大多数比特币算力(约80TH/s)的成本也过于高昂,攻击者至少需要以超过40TH/s的算力进行尝试。 

    我们假设将这种算力分布在10个参与者中(每个参与者大约拥有8TH/s),攻击者可以通过将这些参与者从网络隔离,大大降低51%攻击的要求。如果其中的5个节点遭受日蚀攻击,攻击者就可以减少40TH/s的算力,用于来寻找下一个区块,并且攻击者现在只需要提高20TH/s的算力即可实现对节点的控制。

    通过对目标实施日蚀攻击,可以实现的其他破坏性活动,包括操纵节点进行非法挖矿活动,或利用矿工之间的算力竞争来获取下一个区块。

    减缓日蚀攻击的影响

    如果拥有足够多的IP地址,攻击者就可以对任何节点实施日蚀攻击。而防止这种情况发生的最直接方法是让阻止节点的非法接入,并仅建立到特定节点(例如已被对等网络中的其他节点列入白名单的IP)的出站连接。但是,正如研究论文所指出的那样,这并不是一种可以大规模实施的方案,如果所有参与者都采取这些措施,则新节点将无法加入到网络。

    作者曾对比特币程序提出了的一些调整方案,而其中的一些也在白皮书发布后,集成到了比特币程序中。通过对代码进行较小的修改,例如随机选择新连接和提升地址的存储空间,这些措施都会使日蚀攻击的成本不断升高。

    总结

    日蚀攻击是在对等网络上进行的。作为一种可独立攻击部署的方式,它们会让人感到厌烦。进行日蚀攻击的真正目的,其实是为了实施其他能够造成更大影响的攻击,或者为攻击者提供了在挖矿方面的优势。

    普遍来说,日蚀攻击尚未造成严重影响,尽管区块链网络中已部署了防范措施,但威胁仍然存在。日蚀攻击与比特币和其他大部分加密货币所面临的大多数攻击一样,最好的防御措施是让恶意攻击者无利可图。

  • 什么是 51% 攻击?

    在深入了解 51% 攻击之前,我们有必要先仔细了解挖矿和基于区块链的系统。

    比特币及其底层区块链技术的主要优势之一是构建和验证数据的分布式特性。节点的去中心化工作可确保遵守协议规则,并确保所有网络参与者同意区块链的当前状态。这意味着大多数节点需要定期就挖矿过程、使用的软件版本、交易的有效性等达成共识。

    比特币的共识算法(工作量证明)确保了矿工只有在网络节点一致同意其提供的区块哈希值是准确的情况下(即区块哈希值证明矿工的工作量足够并为该区块的问题找到了有效的解决方案)才能验证新的交易区块。 

    作为一个去中心化账本和分布式系统,区块链基础设施可防止任何中心化实体将网络用于自己的目的,这就是比特币网络不存在单一权威的原因。

    由于挖矿过程(在基于 PoW 的系统中)涉及投入大量电力和计算资源,因此矿工的表现取决于其拥有的算力,这通常称为哈希算力或哈希率。参与挖矿活动的节点有很多,而且分布在不同的地点,这些节点会相互竞争,因为它们都想成为下一个找到有效区块哈希值的节点,并获得新生成的比特币奖励。

    因此,挖矿能力分布在世界各地的不同节点上,这意味着哈希率不会由某个单一实体掌握。至少也不应该如此。

    但如果哈希率分布不佳会发生什么?例如,如果某个实体或组织能够获得 50% 以上的哈希算力会如何?可能导致的后果之一就是我们所说的 51% 攻击,也称为多数攻击。

    什么是 51% 攻击?

    51% 攻击是针对区块链网络的潜在攻击,指单个实体或组织能够控制大部分哈希率,从而可能扰乱网络。此时攻击者将有足够的挖矿能力来故意排除或修改交易的顺序。他们还可以在管控网络的情况下撤销已做出的交易,从而导致双花问题。

    成功的多数攻击还可以让攻击者阻止部分或所有交易被确认(交易拒绝服务),或阻止部分或所有其他矿工挖矿,导致所谓的挖矿垄断。

    另一方面,多数攻击无法让攻击者撤销其他用户的交易,也无法让攻击者阻止他人创建交易以及将交易广播至网络。变更区块奖励、凭空制造代币或窃取不属于攻击者的代币也都无法实现。

    出现 51% 攻击的可能性有多大? 

    由于区块链由分布式节点网络维护,因此所有参与者都是在达成共识的过程中开展合作。这是区块链的安全性一般较高的原因之一。网络越大,防御攻击和数据损坏的能力就越强。

    而关于工作量证明区块链,矿工拥有的哈希率越高,为下一个区块找到有效解决方案的机会就越大。这是真的,因为挖矿涉及无数次哈希尝试,而更高的计算能力意味着每秒可以尝试更多次。一些早期矿工加入了比特币网络,为其发展和安全作出了贡献。随着比特币作为一种货币的价格不断上涨,许多新矿工进入该系统,意图争夺区块奖励(目前设定的奖励为每区块 12.5 枚比特币)。这种竞争的存在是比特币安全的原因之一。如果不是为了诚实行事并努力获得区块奖励,矿工就不会有动力投入大量资源。

    因此,由于比特币网络的规模较大,51% 攻击不太可能发生。一旦区块链变得足够大,单人或团体获得足够计算能力来压倒所有其他参与者的可能性就会迅速下降到极低的水平。

    此外,随着链的增长,更改之前确认的区块会变得越来越困难,因为这些区块都是通过加密证明链接起来的。出于同样的原因,一个区块所获确认越多,更改或撤销其中交易的成本就越高。因此,一次成功的攻击可能只能在短时间内修改最近几个区块的交易。

    接下来请试想,如果一个恶意实体攻击比特币网络并非为了获得利润,而只是为了将其摧毁,并且不计代价。那么即使攻击者成功破坏了网络,比特币软件和协议也会回应其攻击,迅速进行修改和调整。这需要其他网络节点达成共识,就这些更改达成一致,但如果情况紧急,该流程可能很快就可以完成。比特币具有很强的抵御攻击的能力,被认为是现存最安全、最可靠的加密货币。 

    虽然获得比其余比特币网络更多的计算能力对攻击者而言相当困难,但如果是规模较小的加密货币,挑战性就小很多。与比特币相比,山寨币拥有的可保护其区块链的哈希算力相对较低。低到足以让 51% 攻击切实发生。受到过多数攻击的加密货币的几个著名例子有 Monacoin、Bitcoin Gold 和 ZenCash。