买币
行情
现货
合约
理财
活动
更多
reward-center新手专区
报告分析详情
行业调研

闪电网络中的替换周期攻击

CoinEx logo
发布于 2023-12-25

比特币闪电网络是比特币的一个二层扩展解决方案,旨在解决比特币区块链的可扩展性挑战。它实现了即时且低成本的比特币交易,使其对用户来说更加高效和易于使用。与比特币链上交易相比,闪电网络上的交易是私密的,发生在链下,只有最终结果会被记录。

闪电网络的主要优势之一是其速度和经济性。它使用户能够以简单和成本效益的方式在比特币网络上进行小额支付。通过在用户之间创建支付通道网络,闪电网络能够实现交易而无需将每笔交易广播到区块链上。这减少了比特币区块链的拥堵,提高了交易的可扩展性。

然而,需要注意的是,闪电网络仍在开发中,面临着一定的安全风险和中心化风险。今年10月,闪电网络中新发现了一个名为"替换循环攻击"的漏洞,涉及交易替换机制,可能导致闪电网络中通道资金的损失。这种攻击方法的出现引起了人们对闪电网络安全性的担忧,并促使进一步研究和改进其协议和实施。

闪电网络机制

比特币闪电网络利用多重签名机制来确保支付通道的安全性。参与者需要锁定资金并建立支付通道。参与者可以在通道内进行快速、低成本的支付,而无需每次都将交易提交到比特币区块链上。支付通道只是参与者在比特币区块链之外的一种关系,通过在通道内签署一系列交易来实现,这些交易只在通道两端之间传播,不涉及整个比特币网络的共识。

具体流程方面,在开启支付通道时,参与者需要创建一个多重签名脚本,要求通道上的每一方提供其公钥,同时指定所需的签名数量,例如,定义一个包含多个公钥和签名验证逻辑的脚本。在生成多重签名地址时,这个脚本将被转换为比特币地址,形成支付通道的基础设施。

例如,如图1所示,Bob和Alice首先在链上创建一个2-of-2多重签名的比特币地址作为共同资金。在通道内,他们可以进行无限次的链下承诺交易来记录当前资金分配的状态。双方可以协商并签署新的承诺交易来更新通道状态,而无需将这些更新广播到整个比特币网络。当他们决定关闭通道时,最终的链上结算交易将根据最后协商的分配分配资金。这笔结算交易需要Bob和Alice的联合签名,确保资金按最终商定的方式分配。通过这种方式,闪电网络提高了比特币交易的效率,降低了成本,同时保留了其去中心化的特性。

图1:状态通道图

State Channel Diagram

来源:https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1204.png

HTLC机制

比特币闪电网络还采用了基于哈希时间锁定合约(HTLCs)的支付通道来实现可路由的多跳支付通道系统。在实施过程中,HTLCs需要一个复杂的交易脚本,该脚本使用脚本语言定义,以满足哈希条件和时间锁定条件。这个脚本将在开启支付通道时用于初始化,并在支付过程中触发。通过这种方式,比特币闪电网络实现了跨链支付的效率和安全性。

HTLC(哈希时间锁合约)是一种哈希时间锁定合约,是在区块链上实现跨链交易的重要组成部分之一。HTLC有两个常见的应用:跨链原子交换和闪电网络中的支付通道。HTLC可以锁定一笔转账并设置解锁条件,例如在指定时间内提供特定信息。这确保了只有在满足条件时,接收方才能提取资金。

从技术角度来看,HTLC是承诺交易中的一个额外输出,具有独特的输出脚本。这是一个包含OP_HASH160、OP_EQUALVERIFY等操作的Script脚本,用于锁定资金,使得只有提供原像值R才能解锁。这个脚本有两个可能的路径。第一个路径(在OP_IF中定义)在Bob能提供R的情况下将资金发送给Bob。第二个路径是使用支付交易中的nLockTime来强制执行时间锁定,允许在锁定过期后将资金退还给Alice。

OP_IF

OP_HASH160 <Hash160(R)> OP_EQUALVERIFY

2 <Alice2> <Bob2> OP_CHECKMULTISIG

OP_ELSE

2 <Alice1> <Bob1> OP_CHECKMULTISIG

OP_ENDIF

路由示例

在闪电网络中,Alice想要向Eric支付1个比特币,但Alice和Eric之间没有直接的支付通道。因此,Alice通过支付通道网络中的中间节点(Bob、Carol、Diana)路由支付,构建一条安全的支付路径,使她能够间接地向Eric支付1个比特币。支付路由使用HTLC - 只有在特定时间窗口内提供正确的"秘密"才能解锁资金,从而确保支付安全。

在这个示例中,在第1步,Eric生成一个秘密R(解决方案)并计算哈希值H(谜题),然后将哈希值H提供给Alice。

步骤 2-5:Alice、Bob、Carol、Diana 和 Eric 两两之间构建 HTLC,要求在一定时间内提供 R(解决方案)以从上游方检索锁定的资金。

步骤 6-9:Eric 向 Diana 提供 R(解决方案)以检索 1 BTC。然后 Diana 用 R 从 Carol 那里检索 BTC,R 以这种方式向后传递,直到 Alice 的 1.003 BTC(其中 0.003 BTC 是中间节点的服务费)被检索。

在这个例子中,如果在步骤 6 中 Eric 没有在固定时间内提供 R(解决方案),在时间到期后,步骤 2-5 中锁定的资金将直接解锁并返回。

图 2:路由示例

路由示例

来源:https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1210.png

替换循环攻击

比特币的交易替换机制是指当一笔交易被标记为可替换时,在它被确认进入区块之前,可以被网络中另一笔手续费更高的交易所替换。如果一笔交易支付了更高的绝对手续费和更高的费率,它可以替换与之直接冲突的待确认的未确认交易。节点在收到替换交易后,会将原来费率较低的交易从内存池中移除,只保留替换交易。交易替换机制允许在交易确认之前调整交易费用或其他参数。但这种机制也可能被用来实施交易拒绝服务攻击,例如反复替换关键交易,导致其无法确认。因此,交易替换机制为调整交易提供了便利,但同时也引入了被滥用的风险。

根据比特币核心开发者Antoine Riard的邮件,替换循环攻击主要涉及比特币闪电网络中的支付通道。攻击者广播一个具有更高绝对费用和费率的HTLC-preimage交易,以替换诚实节点的HTLC-timeout交易。在替换过程中,攻击者可以添加额外的输入或输出,以确保替换交易被网络成功接受。这种攻击方法可能导致支付通道中资金的双重支出,即在诚实节点广播HTLC-timeout交易后,攻击者通过替换成功取回资金。我们可以给出一个简单的例子来说明,类似于之前的例子,假设路径简化为只有Alice、Bob和Eric,Alice和Eric串通以窃取Bob的BTC。

步骤1:Alice打算通过Bob向Eric支付1 BTC。Alice\Bob和Bob\Eric各自建立一个HTLC。Eric需要在块高1020之前(假设当前高度为1000)向Bob提供R(解决方案),否则Bob可以取回锁定的1 BTC;同样,Bob需要在块高1080之前向Alice回应,否则Alice可以取回她的1 BTC。

步骤2:Eric在块高1020之前没有向Bob提供R(解决方案)。Bob将广播一个包含HTLC-timeout的交易。这个交易中的资金将退还给Bob。

步骤3:Eric监控Bob的HTLC-timeout交易,并用一个具有更高费率的HTLC-preimage交易替换它。然后Eric发起另一笔交易,将之前的HTLC-preimage从内存池中驱逐出去。

步骤4:Bob的节点将重新广播HTLC-timeout交易,直到块高1080。Eric每次都可以发起替换。直到块高1080,另一方通道参与者Alice的交易得到确认,Alice取回锁定的BTC。

步骤5:Eric的HTLC-preimage得到确认,因此Bob锁定的1 BTC被转移给Eric。

因此,Bob的1 BTC被转移给了Eric,而他也没有收到应得的来自Alice的BTC。

总结

截至2023年11月,闪电网络已拥有超过16,000个闪电节点和5,000个比特币。尽管尚未确认实际的替换循环攻击案例,但这凸显了对闪电网络持续进行安全研究和改进的必要性。Antoine Riard还建议了几项避免或缓解替换循环攻击的措施,如监控本地内存池和中继交易、在矿工和闪电节点之间建立覆盖网络,以及主动重放HTLC超时交易以增加攻击者成本。但与此同时,他宣布停止参与闪电网络及其实施工作,包括协调协议级安全漏洞的解决方案。

随着闪电网络规模的扩大,替换循环攻击的潜在威胁可能成为其发展道路上的一个障碍,迫使社区更加关注安全研究和改进。然而,正是通过认真对待和改进安全问题,我们可能会看到闪电网络在未来逐步解决潜在风险,实现一个更健康、更可靠的生态系统。

关于CoinEx

CoinEx成立于2017年,是一家致力于让交易更简单的全球加密货币交易所。该平台为超过200多个国家和地区的500多万用户提供一系列服务,包括现货和保证金交易、期货、掉期、做市账户(AMM)和财务管理服务。自成立以来,CoinEx一直坚持"用户至上"的服务原则。怀着培育公平、尊重和安全的加密交易环境的真诚意图,CoinEx通过提供易于使用的产品和服务,使用户能够轻松进入加密货币世界。

参考文献

https://cypherpunks-core.github.io/bitcoinbook/

https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/022032.html

https://lightning.network/lightning-network-paper.pdf

https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf