快速理解閃電網路替換交易循環攻擊

最近(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的啊,會有辦法修復的。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)