理解区块链的双花攻击

  • cyfrin
  • 发布于 2025-02-20 11:17
  • 阅读 50

本文深入探讨了区块链中的双重消费攻击,详细介绍了攻击的原理、类型及其示例,并探讨了防护措施和共识机制的作用。双重消费严重威胁到交易的完整性和信任,是区块链技术广泛应用的障碍之一。

在本文中,我们探讨了区块链双重支出攻击是如何发生的,提供示例以及减轻和避免它们的方法。

双重支出攻击发生在相同的代币被多次使用时,破坏了金融交易的信任和安全性。 这个问题在区块链技术中尤其普遍,因为交易是去中心化的,没有中央权威进行管理。

在本文中,我们将通过实例探讨双重支出的发生、起源,以及减轻和避免它的机制。

什么是区块链中的双重支出"攻击"?

双重支出攻击在区块链中是利用相同的代币多次使用的漏洞。

如果你不熟悉区块链是什么,区块链包含一系列区块,每个区块包含交易。新创建的区块会被哈希,并包含数据,包括该区块何时被添加。

交易数据通过节点进行验证并通过以下步骤添加到区块链中:

  1. 用户发起一笔交易(如发送资产),并将交易广播到网络进行验证。
  2. 网络参与者(矿工或验证节点)对交易进行验证。
  3. 矿工或验证者将已验证的交易分组到区块中。
  4. 达成共识(根据链的不同,网络的共识机制也有所不同),参与者一致同意区块的有效性和交易的顺序。
  5. 这些区块按顺序添加到区块链中。
  6. 每个添加到区块链的区块确认它所包含的交易。
  7. 交易的确认次数是指在包含该交易的区块后添加到区块链的区块数量。

双重支出发生在一笔交易在一个区块中被确认,但随后一个冲突的交易花费相同的代币被插入到之前的区块中,或者对区块的顺序进行了操控。这会造成节点错误地将早期的非最终区块视为已最终确定,从而使双重支出得以实施。

减轻和避免区块链双重支出攻击对于确保对区块链系统的信任和采用至关重要,使其作为安全和可靠的交换媒介。

背景:拜占庭将军问题和BFT

拜占庭将军问题,由Leslie Lamport、Robert Shostak和Marshall Pease于1982年提出,是一个理解分布式共识的理论框架,用于网络中不可靠节点而没有中心权威的情况。

在问题的情景中,一组拜占庭将军包围一个城市,并决定是进攻还是撤退。有些将军可能是叛徒,向不同的将军发送冲突消息。

正如拜占庭将军问题要求将军们在存在叛徒的情况下达成共识,双重支出问题也要求区块链参与者在潜在存在恶意行动者试图双重支出的情况下达成共识。

当恶意行为者试图通过传播冲突交易来操纵网络时,就会出现此问题,从而导致双重支出的场景。

显示Sybil攻击如何工作的图片,特别是拜占庭问题如何工作

拜占庭将军问题与双重支出问题

拜占庭容错(BFT)算法旨在通过使节点的分布式网络能够在存在故障或恶意节点的情况下达成共识来解决此问题。 这些算法,如实用拜占庭容错(PBFT),确保诚实节点能够在存在拜占庭故障的情况下就交易的有效性达成一致。

比特币如何解决双重支出问题

比特币于2009年由一个或一组使用化名Satoshi Nakamoto的人发布。它利用基于工作量证明(PoW)的共识机制来解决与早期加密货币如DigiCash相关的双重支出问题,并实现去中心化共识。PoW算法要求矿工解决计算密集型数学难题,以验证并将新区块添加到区块链中。这个过程使攻击者重写交易历史或进行双重支出攻击的经济成本很高,因为这需要控制大部分网络的计算能力。

在区块链网络中,双重支出问题主要通过基于Sybil抵抗机制的共识机制进行解决,如工作量证明(PoW)、权益证明(PoS)和实用拜占庭容错(PBFT)。 这些机制建立了一个共享的分类账,其中交易被以安全和不可篡改的方式验证并添加到区块链中。

然而,某些类型的双重支出攻击仍然存在。

区块链中的双重支出攻击类型

双重支出攻击可以以不同形式表现出来,包括:

双重支出竞争攻击

当攻击者利用去中心化区块链网络中交易传播的时间延迟时发生。

  • 攻击者发起两个冲突交易,每个交易在不同的商品或服务上花费相同的加密货币。
  • 冲突交易被广播到网络中不同的节点子集,旨在利用交易确认时间的差异。
  • 交易确认中的不一致可能会导致暂时的区块链分叉。
  • 攻击者期望有一个冲突交易被一个节点子集确认并接受,从而有效地无效化付款(例如由于相同的代币被花费)。
  • 供应商接受待处理交易并发送商品或服务。
  • 与此同时,网络拒绝另一笔待处理交易。然而,攻击者已经从商品或服务中获利。

显示区块链双重支出竞争攻击如何工作的图片

竞争攻击实现双重支出

双重支出Finney攻击

以比特币先驱Hal Finney命名,这些攻击涉及:

  • 矿工保留一个包含合法交易(用于购买商品或服务)的区块。
  • 攻击者在假设交易稍后会被确认的情况下收到商品或服务。
  • 随后,攻击者将被保留的区块广播到网络中,该区块包含一个被操控的冲突交易。
  • 这个冲突交易将加密货币重定向到攻击者控制的另一个地址。
  • 尽管此冲突交易使原始合法交易无效,但攻击者已经收到商品或服务,同时也保留了用于购买的加密货币,因为他们将其重定向到自己。

显示区块链双重支出攻击的工作原理的图片

Finney攻击实现双重支出

51%攻击

如果一个节点控制了工作量证明(PoW)或权益证明(PoS)区块链的网络哈希率的多数或者加密货币或权益,这可能会让它比网络的其他部分更快地挖掘区块,并控制确认过程。这使得它能够重写交易历史和双重支出代币。这类攻击主要是PoW中的一个问题,因为PoS区块链(稍后会讨论)通常有机制来阻止此类攻击,例如对参与恶意行为的验证者实施削减罚款

显示如何进行51%攻击的图片

51%攻击实现双重支出

如何避免双重支出 - 缓解策略

区块链网络不断完善其安全协议和共识机制,以减轻双重支出风险。

一些有效的缓解策略包括:

共识机制

区块链网络采用基于工作量证明(PoW)、权益证明(PoS)、实用拜占庭容错(PBFT)或其他Sybil抵抗机制的各种共识机制来实现分布式节点之间的协议。这些机制确保大多数节点对交易的有效性和顺序达成一致,从而使进行双重支出在经济上或计算上都变得不可行。

工作量证明(PoW)

通过挖矿达成共识。矿工竞争解决复杂的数学难题,首先解决难题的矿工将新的经过验证的交易区块添加到区块链中。这个过程需要大量的计算能力,通常最快的矿工会添加区块。

在权益证明(PoS)中

验证者根据他们持有或作为抵押的加密货币的数量来选择提出和验证区块。验证者轮流提出区块,必须大多数验证者同意区块的有效性,才能将其添加到区块链中。被选中的验证者将区块添加到区块链。验证者在经济上有动力诚实行事,因为如果他们验证无效交易,就会面临失去抵押代币的风险。

确认机制

一般来说,区块链系统实现确认机制,在收到更多网络确认时,交易变得越来越安全。确认数量表示在包含特定交易的区块后添加到区块链的区块数量。随着交易获得更多确认,它们获得的安全性增加,使得撤销或修改它们变得更加困难。

交易终结性

一些区块链平台提供交易终结性的特性,一旦交易被确认就不可逆转。以太坊向以太坊2.0的过渡采用基于权益证明的共识机制,旨在提供比当前的工作量证明系统更快的终结性。

网络监控

不断监控网络,警惕可疑活动或异常行为,可以帮助及时检测和减少双重支出尝试。节点可以实施算法或方法来检测潜在的欺诈交易,以及共识规则来识别和拒绝潜在的欺诈交易。

确认UTXO是否已经被花费

未花费交易输出(UTXO)表示之前交易的输出,这些输出尚未被花费。在处理新交易之前,区块链网络验证所引用的UTXO是否已被花费,确保其只被使用一次,从而防止双重支出尝试。

教育与意识

教育用户和利益相关者关于双重支出的风险以及在确认交易之前验证交易细节的重要性,采用智能合约开发和安全课程等。推广安全管理加密资产的最佳实践可以帮助防止未经授权的交易,并减轻双重支出的风险。

安全性和社区警惕

实施安全最佳实践,包括加密和身份验证机制,帮助防止数据的未经授权篡改,从而缓解双重支出等潜在攻击。此外,积极参与安全审计和漏洞奖励计划可以提高整体安全性,并有助于识别和解决智能合约中的潜在双重支出漏洞。

防止重放攻击

重放攻击可以通过重新传输有效交易来利用相同的资金进行双重支出。防止重放攻击有助于减轻重放攻击的风险,因此减少双重支出的风险。有关重放攻击及其缓解方法,请参阅重放攻击综合指南

示例双重支出漏洞和审计发现

  • 以太坊经典和比特币黄金: 2020年,比特币黄金和以太坊经典遭遇51%的双重支出攻击,允许攻击者分别双重支出$70k$1.68M
  • Flexa: Trail of Bits进行的审计发现了协议中的漏洞,这有可能导致双重支出攻击。虽然技术上是重放攻击,但这一发现表明智能合约中的漏洞可能导致双重支出。PendingDepositRefund事件缺少Nonce参数,这可能导致第三方工具不知哪笔存款被退款。

总结

双重支出问题对区块链网络构成了重大挑战,威胁到交易的完整性和可信度,从而阻止其主流采用。

通过拜占庭容错算法和基于Sybil抵抗机制如PoW和PoS的共识机制,区块链网络努力达成共识并防止双重支出攻击。

对你的协议进行审计可以显著降低发生攻击的概率。

  • 原文链接: cyfrin.io/blog/understan...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
cyfrin
cyfrin
Securing the blockchain and its users. Industry-leading smart contract audits, tools, and education.