原创 | Odaily星球日报
作者 | 南枳
引言
10月20日,Bitcoin Core核心开发者/dev/fd0在X平台宣布,将停止参与闪电网络及其实施的开发,包括协调处理协议级安全问题。
/dev/fd0表示,每个比特币节点都有自己的内存池。交易由对等节点转发。如果闪电网络节点用于打开通道并接受HTLC转发,那么很容易受到替代循环攻击(Replacement Cycling Attacks)。
该开发者所指的“替代循环攻击”是什么,其具体实现途径如何,Odaily星球日报将于本文揭示。
闪电网络
比特币网络的TPS仅约为7,并且手续费高昂,为解决小额支付的需求,闪电网络应运而生。
闪电网络(Lightning Network)是一种针对比特币和其他加密货币的第二层扩展解决方案,旨在解决加密货币网络的可扩展性和交易速度问题。
其实现原理可简化为:
交易双方A与B建立了一个“交易通道”(实际上是个多签钱包)
A与B分别往里面充钱A1和B1(此步上链)
A与B在链下发生任意笔交易,A净转出额X(例如A向B转账100次1元,B向A转账99次1元,最终A净流出1元)
将A1-X与B1+X的交易更新上链
通过以上流程,不论A、B在链下进行多少次交易,都只要支付两笔上链费用,并节约了大量的时间。
哈希时间锁合约(HTLC)
以上介绍的形式限于A和B之间有直接的交易通道,为跨通道支付而出现了中继节点,中继节点中转两者交易,以便跨通道进行支付,而中继节点可以收取小费。
但这面临着一个问题:需要确保每个通道内每个参与者都是诚实守信的,通过多通道链接是安全的。
因而出现了HTLC(Hash Time-Lock Contract、哈希时间锁合约),一笔带有 HTLC 的支付事务可简化为:
A准备一个暗号R,并计算其哈希值H
A设定一个时限T
A向B发送一笔带有 HTLC 的支付事务,仅当符合以下两个条件时交易才会最终成立
B回答出暗号R(通过H验证)
B回答的时间在T之内(例如10个区块内给出答案)
若B不知道暗号,或者回答超时,则资金退回给A
正常交易流程
通过上述的HTLC,一笔涉及中继节点的支付流程如下:
最终的接收者C向发送资金者A提供暗号
A用哈希值H发起HTLC支付(请注意,此时资金并未到B手中)
B接收到支付信息,向C用哈希值H发起HTLC支付
C为了接收资金,回答暗号,收到资金。B此时也知道了暗号
B用暗号获取A发起的支付,收到资金,交易完成
涉及三者的流程如上,中间也可以多加入几个中继节点,而支付模式仍保持不变,通过链式发送支付到最终接收者,然后再反向传播暗号至初始的中继节点,最终完成交易。
而中继节点如果迟迟没有收到暗号R(下家不做解答,时限由中继节点自行判断),则中继节点可以选择关闭通道,若成功上链,则B发起的支付将“失效”,没有资金损失。
循环替代攻击
回到HTLC的基本原理中,除了回答暗号外,中继节点还需要达成另一条件“中继节点回答的时间在T之内”,而恶意攻击者即是瞄准了该点进行攻击:
A和C恶意串通,受害人为中继节点B(B要求下家3个区块内回答)
A向B发起支付(假设此时区块高度为1000),要求在 区块1020前回答
B向C发起支付(区块高度1005)
区块高度1008时,B见到C还不回答,决定关闭通道,将在区块 1009 生效
C发起高Gas的交易①(区块1008),使B发起的交易无法进入内存池
C发起高Gas的交易②(区块1009),B仍无法进入内存池
C无限循环操作,直到区块1020,给出暗号R,提取资金
B尽管获取了暗号,但已没有时间回答A发起的支付,资金退回给A,而向C的支付又已经成立,最终“循环替代攻击”实现。此外,A、C也可以通过串通,循环攻击B的关闭交易而实现双花。
结语
尽管存在以上攻击途径,但并不意味着攻击者就可以为所欲为,任意盗取闪电网络中的资金,原文中作者也提出了五种处理办法,如本地内存池和事务中继流量监控、矿工内存池监控等。
前途是光明的,道路是曲折的,今年比特币网络上也诞生出了Ordinals、BRC-20、Taproot Asset等一系列新事物,问题虽存在,但持续的发展终将能解决问题。
参考资料
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/022032.html
https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf
本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://czxurui.com/zx/91956.html
发表回复
评论列表(0条)