快速理解闪电网络替换交易循环攻击

最近(2023 年 10 月下旬)比特币社区爆出闪电网络可能存在重大缺陷,用户可以构造一种攻击手法来偷钱,英文名叫「lightning replacement cycling attack」。

最近(2023 年 10 月下旬)比特币社区爆出闪电网络可能存在重大缺陷,用户可以构造一种攻击手法来偷钱,英文名叫「lightning replacement cycling attack」。

我读了它的原理,中文名可译成「闪电网络循环替换交易攻击」。

它的攻击原理如下。

首先解释下闪电网络的工作原理:

1.alice 和 bob 双方开通一个支付通道,就是共同开通一个 2-2 签名的地址,他们一人持有一把私钥。

alice 和 bob 分别往这个 2-2 签名的地址里充值 0.5btc 和 0.6btc(金额可以任意选择,我只是举例),这两笔充值交易都是发生在比特币主链上的,矿工是要确认的。这样这个支付通道的初始状态就是 0.5btc 属于 alice,0.6btc 属于 bob,我们记为(alice:0.5btc;bob:0.6btc)。

这样在这个 2-2 签名地址里,alice 和 bob 就可以相互支付,比如 alice 可以支付给 bob0.1btc,这样状态通道的状态就变成了 0.4btc 属于 alice,0.7btc 属于 bob,(alice:0.4btc;bob:0.7btc)。并且这样的交易是不需要到比特币主链上打包,只是发生在 alice 和 bob 之间的记账,这就叫支付通道。

alice 和 bob 之间可以任意转账,而不需要到主链结算,这就节省了大量的矿工费,并且可以实时到账,不再需要 10 分钟的区块确认。

但如果只能在两个人之间相互转账交易,那也没啥用。

2.bob 和 carol 之间也开通一个支付通道,初始状态是 bob 有 1.0btc,carol0btc,记为 (bob:1.0btc;carol:0btc)。

3.这时,你看 alice 和 bob 之间有支付通道,bob 和 carol 之间也有支付通道。

那 alice 就可以通过 bob,向,carol 支付比特币。

支付过程如下:alice 向 carol 支付 0.1btc,事实在上述两个支付通道里发生如下的状态变更

1)alice 和 bob 之间的状态变更为(alice:0.3btc;bob:0.8btc)

2)bob 和 carol 之间的状态变更为(bob:0.9btc;carol:0.1btc)

3)这样就完成了从 alice 向 carol 转 0.1btc 的交易。

4.当越来越多的双方打开支付通道,并且实现了相互联通,就形成了一个支付网络了,我们称之为闪电网络。

当然详细的技术解释太复杂了,上述就是最精简的解释。

下面介绍下闪电网络循环替换交易攻击的大致过程,详细的技术细节我也讲不明白,那些 opcode、合约和函数有点复杂。

1.攻击者是 alice 和 carol 两人,这两人合谋去攻击 bob,bob 是受害者。

2.alice 向 carol 支付 0.3btc。

1)初始状态通道如下(alice:0.3btc;bob:0.8btc)和(bob:0.9btc;carol:0.1btc)

2)alice 和 bob 之间的状态通道应该变更为(alice:0;bob:1.1btc)

3)bob 和 carol 之间的状态通道应该变更为(bob:0.6btc;carol:0.4btc)

3.alice 和 carol 决定合伙骗 bob 的 0.3btc

1)carol 一直不去认领确认自己收到了来自 alice 支付的 0.3btc,即 carol 不将闪电网络的收款回执信息发给 bob。这样就导致 bob 也无法在闪电网络内将 alice 的 0.3btc 合法的纳为己有。

2)到了一定时间,alice 耍赖,直接在比特币主链发起清算交易 tx1,声称自己还有 0.3btc,而 bob 在和他的状态通道里只有 0.8btc。

tx1 这笔交易中有 0.3btc 是发给 alice 自己的地址(单签),这样 alice 就是试图将不属于自己的 0.3btc 偷为己有。

3)因为 bob 没有拿到 carol 的收款回执,所以 bob 无法证明(alice;bob)这个状态通道当中状态应该修改为(alice:0btc;bob:1.1btc)

4)一旦 tx1 在链上被打包,即 alice 真的偷到了 0.3btc 后,carol 就会立刻在闪电网络里收下 0.3btc,将收款回执发给 bob。

5)这样,alice 没有真实发出 0.3btc 给 bob,而 carol 却真实收到了 bob 的 0.3btc。所以 bob 被 alice 和 carol 合伙偷走了 0.3btc。

6)注意 alice 在主链上发起 tx1 偷币交易时,bob 是有反制措施的,即向主链发起交易 tx2 证明 alice 在作弊,但因为 bob 没有拿到 carol 的收款回执,所以 tx2 这笔交易还是挺麻烦的,但理论上是可做到。

而 alice 在看到 tx2 后,就会再次使用更高矿工费的办法,重置 tx1,以诱使矿工打包 tx1,而拒绝 tx2,这就所谓的「替换交易(replacement)」。

7)而目前开发者说,alice 和 carol 的合谋,确实是可以让让 bob 的 tx2 在比特币主链矿工上看起来更难合法化,而想要更清楚地证明 tx2 是合法的,需要修改协议,并且对主链来说是一个软分叉,这就难了。

上述就是闪电网络循环替换交易攻击大致过程,具体的技术原理太复杂了,我也看不明白,我只是假设在网上看到的开发者发布的技术细节是正确的。

攻击的办法是两个夹一个,而交易所是天然的和所有用户开通了支付通道,所以交易所要遭殃了。

最后,我感觉这也不是啥大不了的事,软件哪有没 bug 的啊,会有办法修复的。

(声明:请读者严格遵守所在地法律法规,本文不代表任何投资建议)

(0)
上一篇 2023年10月23日 下午1:09
下一篇 2023年10月23日 下午3:31

相关推荐

  • 2023加密赛道盘点与展望

    为了解决扩容问题,以太坊从分片路线妥协为 Layer2 Rollup 路线,未来还有可能出现 Layer3 扩容。Move 系公链则选择从头构建新的 L1,一次性解决扩容和合约安全问题。他们通过并行化的执行环境提高公链性能,通过 Move 语言和 MoveVM 提供更高的合约安全性。

    2023年1月19日
    2.6K
  • Shapella升级后的市场影响和流动性状况

    上周,Shapella 升级顺利上线,使数百万质押的 ETH 得以提取。虽然以太坊去年 9 月的 Merge 升级更像是「买谣言卖新闻」类型的事件,但 Shapella 似乎对价格产生了相反的影响。ETH 现货价格在合并后下跌了近 18%,而自 Shapella 以来上涨了 11%,尽管人们担心大量抛售。

    2023年4月18日
    387
  • 技术解析Circom-Pairing库核心零知识电路安全漏洞

    零知识(Zero-Knowledge,ZK)证明系统依赖 circom-pairing 库实现对 BLS12-381 椭圆曲线(elliptic curve)上的签名(signature)的验证。在近期对于 Succinct Labs 的零知识协议进行的安全审计中,Veridise 团队截获了数个存在于 circom-pairing 库的问题。

    2023年1月9日
    839

发表回复

登录后才能评论
微信

联系我们
邮箱:whylweb3@163.com
微信:gaoshuang613