目录
- 日蚀攻击的工作原理
- 日蚀攻击的后果
- 无需确认的“双花”
- 需N次确认的“双花”
- 削弱矿工之间的竞争
- 减缓减缓日蚀攻击的影响
- 总结
日蚀攻击的工作原理
比特币矿工需要专用设备生成验证新区块,但是非挖矿(或完整)节点仅需要非常小的算力即可运行。通过这种方式,任何人都可以在廉价设备上运营节点,这也有助于比特币的去中心化。软件程序维护了与对等方同步的事务处理数据库,以便与网络保持同步。
对大量节点连接的限制因素是带宽。因此,尽管有大量设备可以运行该程序,但比特币网络中设置了连接数量限制(最多只能连接125个),普通设备无法直接与其他设备进行互连。
如果发生这种情况,毫无戒心的受害者就会听从恶意节点的摆布,攻击者向它们提供了错误数据,他们无法从真实网络中获取到数据。
日蚀攻击造成的后果
如果攻击者通过消耗网络节点的资源,能够使其从网络中分离,那么他们就有动机实施此类攻击。如果节点被隔离了,攻击者就可以实施几次连续攻击。
无需确认的“双花”
某些商户和个人接受这些0确认交易。假设某个商人Bob,他销售高端汽车。他不知道Alice已将将他的节点进行了日蚀攻击,再看到她的豪华跑车订单后,也没有产生任何怀疑。Alice创建了交易,Bob随即将其广播到网络。在看到付款消息即将被确认后,感到非常满意,他将车钥匙交给了Alice,Alice开车加速离开。
而实际上,交易并没有被广播到网络中,Bob只是将交易传递到了Alice的恶意节点中,而Alice所控制的恶意节点也不会将交易传递到真实节点中。因此,该笔交易会被认为无效,这个时候Alice在(真实)网络上又支付了同样的金额,可以是转给她自己也可以是转给其他人。即使最后在真实网络中看到了最初和Bob之间的初始交易,但由于Alice账户中的资金已经使用掉,该笔交易也无法被验证。
需N次确认的“双花”
需N次确认的“双花”与无需确认的“双花”相类似,只是涉及更多的准备工作。许多商户都希望付款被标记为有效之前能够先等待一定数量的确认。为了解决该问题,攻击者必须使矿工和商户节点都进行日蚀攻击。如果攻击者与商户建立了订单,他们就会向(遭受日蚀攻击)的矿工广播交易。商户可以在区块链网络中看到交易被确认,但由于矿工和商户所在的网络都被隔离了,因此该区块链并不是大多数真实节点所能够见证的。
削弱矿工之间的竞争
遭受日蚀攻击的节点会继续运行,不会受到被网络隔离的影响。矿工将继续在协议规定的规则范围内对区块进行验证,但是添加的区块将会在和真实网络节点进行通过的过程中进行丢弃。
我们假设将这种算力分布在10个参与者中(每个参与者大约拥有8TH/s),攻击者可以通过将这些参与者从网络隔离,大大降低51%攻击的要求。如果其中的5个节点遭受日蚀攻击,攻击者就可以减少40TH/s的算力,用于来寻找下一个区块,并且攻击者现在只需要提高20TH/s的算力即可实现对节点的控制。
减缓日蚀攻击的影响
如果拥有足够多的IP地址,攻击者就可以对任何节点实施日蚀攻击。而防止这种情况发生的最直接方法是让阻止节点的非法接入,并仅建立到特定节点(例如已被对等网络中的其他节点列入白名单的IP)的出站连接。但是,正如研究论文所指出的那样,这并不是一种可以大规模实施的方案,如果所有参与者都采取这些措施,则新节点将无法加入到网络。
总结
日蚀攻击是在对等网络上进行的。作为一种可独立攻击部署的方式,它们会让人感到厌烦。进行日蚀攻击的真正目的,其实是为了实施其他能够造成更大影响的攻击,或者为攻击者提供了在挖矿方面的优势。
普遍来说,日蚀攻击尚未造成严重影响,尽管区块链网络中已部署了防范措施,但威胁仍然存在。日蚀攻击与比特币和其他大部分加密货币所面临的大多数攻击一样,最好的防御措施是让恶意攻击者无利可图。