快速理解閃電網絡替換交易循環攻擊
最近(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的啊,會有辦法修復的。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC
7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...
悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤
一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...