免責宣告:本文旨在傳遞更多市場資訊,不構成任何投資建議。文章僅代表作者觀點,不代表火星財經官方立場。
小編:記得關注哦
來源:巴位元
原文標題:Bitcoin Core開發者:閃電網路易受時間膨脹攻擊,防日蝕攻擊或成關鍵
( 注:原文作者Gleb Naumenko曾是Chaincode Labs的研究員,同時他也是一名Bitcoin Core開發者,目前其得到了BitMEX 母公司 HDR的資助,並將重點研究比特幣的P2P安全和隱私問題)
以下是譯文:
時間膨脹(Time-dilation)攻擊,目前似乎是透過日蝕攻擊(Eclipse attack)竊取閃電網路使用者資金的最實用方法,原因有幾個,攻擊既不需要呼叫算力,也不只是針對商家。
這是關於閃電網路時間膨脹攻擊的完整論文:https://arxiv.org/abs/2006.01418
(
圖片來自:pxhere.com
比特幣底層的協議真的很酷,它們在可擴充套件性、保密性和功能性方面提供了巨大的機會,但代價是新的安全性假設。
我們都知道支付通道必須受到監控,否則,資金就可能被盜。這聽起來有點抽象,為此,我們決定研究一個攻擊者究竟要做些什麼,才能從閃電網路使用者那裡竊取到資金。
更具體地說,我們探討了點對點層攻擊如何有助於打破上述假設。每次時間膨脹攻擊,攻擊者控制受害者對比特幣網路的訪問(很難,但並非不可能),並延遲向受害者傳送區塊。之後,攻擊者就利用受害者無法及時訪問最近區塊這一點施行攻擊。在某些情況下,僅僅隔離受害者兩個小時就足夠了。
然後,攻擊者在閃電網路上對受害者的通道執行兩個(完全按規則行事的)操作,同時提交一個不同的狀態。由於受害者在最新的區塊鏈提示方面落後,他們無法檢測到這一點並按照協議的要求作出反應。我們演示了攻擊者從受害者處竊取資金的三種不同方式,並討論了這些攻擊的可行性/成本。我們還探索了廣泛的對策,這可能會大大增加攻擊成本。
簡而言之,我們的研究收穫是:
為什麼這很重要?
首先,時間膨脹攻擊目前對很多閃電網路客戶端都是可行的。同時,這些問題是根本性的,不會消失。我們將在下一節中進一步討論這個問題。
然而,這項研究工作不應被視為對閃電網路的批評。相反,我們的目標是使閃電網路的安全模型更加清晰。廣義而言,瞭解這些問題並提出緩解措施將有助於使平臺更加成熟。當閃電網路受到更廣泛的關注時,成千上萬的參與者將不得不考慮這些攻擊,以確保他們的棧是安全的。
希望我們的研究工作可以:
只是理論上的問題嗎?
攻擊者既不必控制金鑰基礎設施(例如受害者的ISP),也不必租用任何算力。攻擊者可以同時從多個通道(甚至屬於不同的受害者)進行竊取,以證明攻擊的代價是合理的。最後,受害者不一定要是商家。
為了利用時間膨脹來竊取資金,攻擊者應開啟與受害者的通道,並使受害者的比特幣客戶端失效(隔離)。前者通常是可行的:LN節點通常預設接受開啟通道的請求。
而後者——日蝕攻擊(Eclipse attack),通常被認為是非常困難的。
根據最新的研究,只有在攻擊者能夠訪問關鍵的網際網路基礎設施的情況下,它們才是攻擊Bitcoin Core全節點的實用工具。僅僅攻擊比特幣軟體(例如AddrMan poisoning)被認為是不夠的。但是,如果攻擊者竊取受害者的全部可用資金(甚至是一次攻擊幾個受害者),並因此可獲得很高的收益,那麼高昂的攻擊成本也是具有合理性的( 這是關於閃電網路hub或服務提供商的一個合理假設,一般而言他們都會執行一個全節點)。
至於輕(SPV)客戶端,不幸的是,對它們發動日蝕攻擊(Eclipse attack)一點也不難。能夠為輕客戶端提供服務的比特幣節點非常少,此外,輕客戶端的防女巫(anti-Sybil)機制也很差(Electrum也是一樣的問題)。因此,它要求攻擊者執行數百個惡意節點/伺服器,並向Eclipse輕客戶端提供不同的IP。需要明確的是,整個過程需要的時間就是1小時,花費則不到100美元。
但假設輕客戶端連線到來自網路的隨機比特幣節點,這是正確的。如果輕客戶端連線到使用者自己的比特幣節點(透過Neutrino或Electrum),那就很好了。Bitcoin Core 節點仍然可能受到攻擊,但問題並沒有那麼嚴重。
輕客戶端也可以連線到受信任的節點。例如,錢包應用可能有一個比特幣輕客戶端在後臺與錢包開發者的全節點對話。閃電網路應該是非託管的,所以我們不能僅僅假設信任錢包提供商的節點是可以的。如果將受信任的節點與隨機節點一起使用,則效果更好,但仍然難以推理。據我們所知,一些頂級的閃電網路錢包就是使用的這種模型。
這裡的問題是,該軟體可以正確地實現半信任模型(同時具有可信和隨機對等節點),但可信方仍然可以時間膨脹攻擊受害者的通道。例如,錢包開發者可以一次詐騙所有使用者,然後消失。
在我們的研究工作中,我們關注的是一個信任最小化的場景(根本沒有可信節點),這類似於比特幣威脅模型,儘管大多數時間膨脹方面與受害者的區塊源無關(我們僅假設日蝕攻擊是可能的)。
難道受害者就沒法看到區塊停滯的情況嗎?
這不是檢測時間膨脹攻擊的可靠方法,因為挖礦是一個隨機過程。例如,比特幣網路每天平均有7個區塊的間隔時間超過了30分鐘,這就是問題很難完全緩解的原因。
Bitcoin Core目前唯一可用的對策是過時提示檢測(stale tip detection):如果一個節點在過去30分鐘內沒有觀察到某個區塊,它會嘗試與網路中的某個人建立新的隨機連線。
在論文中,我們認為最佳的攻擊策略是在向受害者饋送新的區塊之前保持29.5分鐘的視窗。在這種情況下,只有其中一個區塊自然地花費了太長時間(至少30分鐘),攻擊才會失敗。而失敗的機率大約為6%。
失敗案例意味著受害者可能有機會(但不能保證)擺脫日蝕攻擊。請注意,這一措施並沒有在Neutrino中實現,因此攻擊者完全可以停止饋送區塊,並利用比Bitcoin Core更早的時間膨脹。
需要改進這種檢測方法,因為它要麼是可愚弄的,要麼由於自然的“慢”區塊而具有很高的假陽性率。一個誠實的使用者無法區分一個“慢”區塊是否受到攻擊,所以他們只能做出一個很好的猜測。這些解決方案也有問題,因為即使是過時提示檢測也有太高的假陽性率(1天7次),儘管它對時間膨脹不是很有效。
其他基於檢測的解決方案也不是那麼簡單。例如,檢視區塊頭中的時間戳是很棘手的,並且要應用的準確分析也不清楚。
那假設成功檢測到了,受害者會怎麼做?這種反應可歸結為反日蝕措施,其應該首先實現,而無需任何觸發。這就是為什麼我們強調對抗日蝕攻擊,是時間膨脹攻擊的關鍵解決方案。
攻擊
下面說說攻擊的具體方法。
首先,攻擊者應使誠實網路受害者的比特幣客戶端處於被遮蔽的狀態。然後攻擊者必須找到受害者的閃電網路節點,並與受害者開啟一個通道。攻擊者也可以從一個開放的通道開始,然後找到並日蝕攻擊受害者的比特幣客戶端,這無關緊要。
在此之後,攻擊者必須執行時間膨脹攻擊:他們開始以較慢的速度向受害者傳送區塊,直到受害者比實際提示落後N個區塊為止,其中N由特定配置定義(通常為幾小時到幾天) 。
對於Bitcoin Core,由於其實施了“過時提示檢測”規則,時間膨脹速度受到每個區塊延遲20分鐘的限制。而對於Neutrino,攻擊者可簡單地停止向受害者提供區塊。這就是為什麼在下面的描述中,攻擊Bitcoin Core需要花費更長的時間。
在我們的描述中,估計的攻擊時間是基於論文中提出的最優時間膨脹策略。就數量而言,根據目前的實現,這三種攻擊都可能導致竊取閃電網路通道的全部容量。
現在,我們來描述三種從時間膨脹的閃電網路節點的支付通道中竊取資金的方法。
1、通道狀態終結攻擊,類似於常規的比特幣雙花:攻擊者假裝他們同意更新通道狀態並接收某些內容,然後使用不同的值關閉通道。由於受害者看不到最新的提示,因此他們不會發送撤銷交易。當前實現的預設安全區塊delta至少為144個區塊,因此攻擊者必須對受害者發動至少24小時的日蝕攻擊(如果使用的是Bitcoin Core,則是36個小時)。
2、每跳資料包延遲攻擊,它是基於受害者的路由,受害者與攻擊者應至少有兩個通道。
與第一種攻擊類似,當受害者最終收到實際的區塊鏈提示時,其做出反應將為時過晚。每次攻擊,預設值約為14-144個區塊,具體取決於實現情況,因此攻擊者必須遮蔽受害者2-24小時(如果受害者使用的是Bitcoin Core,則需要4-36小時)。
3、資料包終結攻擊,是最有創意的方法,也是最可行的攻擊方法!當受害者向攻擊者傳送傳入HTLC的原像時,攻擊者不響應受害者。
在這種情況下,相關的安全策略就要7-11個區塊,因此攻擊者對受害者發動日蝕攻擊最多隻需持續2個小時(如果其使用的是Bitcoin Core,則是3個小時)。
首先,WatchTower(瞭望塔)是很實用的(例如The Eye of Satoshi),它們應該可以幫你盯著通道,並且如果有人發動攻擊,WatchTower(瞭望塔)就會採取行動。
但從協議的角度來看,這屬於欺騙的行為:實際上,這是一種更可信的假設。使用者將與WatchTower(瞭望塔)提供商繫結。一些設計提出了負責任的WatchTower(瞭望塔),但同樣,這引入了新的假設,應該詳細探討。但畢竟,它們也可能會受到攻擊,甚至是出現賄賂的情況!
我們將看到WatchTower(瞭望塔)在實踐中是如何運作的,然後讓我們考慮一下其它不需要進行新假設的解決方案。
大多數“非欺騙”(即無需信任的)對策都是關於訪問比特幣網路的冗餘方式。越有創意越好!比如Blockstream衛星,或透過閃電網路中繼區塊頭。你也可以在一些冗餘的基礎設施下執行自己的WatchTower(瞭望塔)(幸運的是,該軟體通常是開源的)。
P2P層隱私改進也有幫助。不過,Dandelion可能行不通,Tor也很棘手。但是其他想法還是有希望的。也許將來我們會看到一些混合網(基於Lightning?)或SCION體系結構。
如果您想知道為什麼我們不討論基於檢測的解決方案,請回到上面,並在論文中閱讀更多內容。(它們可能也有幫助,但還是不夠的)
結論
我們相信閃電網路是超級酷的,它已經是比特幣堆疊的重要組成部分。它將在未來獲得更多的關注,因此安全模型應該得到很好的理解,尤其是因為它不同於比特幣的安全模型。時間膨脹就是一個例子:時間膨脹是一種特定於LN的攻擊,儘管實際上它需要利用比特幣的P2P層。
我們的研究工作詳細探討了時間膨脹攻擊,並提出瞭如何最大程度地減少損害的建議。我們鼓勵所有協議開發人員(尤其是那些在輕客戶端上工作的開發人員)注意防女巫攻擊和防日蝕攻擊的措施。
希望我們的工作,將有助於使閃電網路變得更加成熟,並激勵系統參與者使用最安全的方案。我們在這裡討論了一些很有意思的觀點,但論文當中還有更多,你可以關注。
開放性問題
探索時間膨脹攻擊引發了我們兩人之間的一系列討論,我們希望與設法找到此部分的人分享其中的一些話題。這與論文的“討論”部分不同,因為它們與時間膨脹攻擊的關聯性較少。
如果這些想法中的任何一個,已經有人討論過或者正在談論當中,我們都會很高興得知!
如果你有興趣探索其中任何一種想法,或有類似的想法,請隨時與我們聯絡。