最新研究:0.5個比特幣就能鎖定大部分流動性,讓閃電網路癱瘓

買賣虛擬貨幣
導讀:希伯來大學教授ayelet mizrah和aviv zohar聯合發表論文《支付通道網路中的擁塞攻擊》,這篇論文討論了在構建去信任的多跳支付時,支付通道網路中出現的一個基本漏洞。這篇文章提出了兩種攻擊方式:第一種是長時間鎖定儘可能多的高流動性通道,第二種是試圖將單個節點與網路隔離,並對閃電網路承受這些攻擊進行了評估。透過檢查閃電網路的三個主要實現對網路的屬性和不同引數的設定,這篇文章證明了閃電網路最近預設引數的更改會讓攻擊更易於發生。結果表明,透過使用不到0.5個比特幣就可以鎖定大部分閃電網路的流動性,這可能破壞閃電網路。

本文作者:希伯來大學教授ayelet mizrah和aviv zohar

在一篇新論文中,我們討論了在支付通道網路中構建無需信任多跳支付過程中出現的一個基本漏洞。我們提出兩種攻擊方式:第一種旨在長時間鎖定儘可能多的高流動性通道,第二種旨在將中樞(hubs)與網路的其餘部分隔離。在本文中,我們介紹了這些針對閃電網路的攻擊的評估。我們將檢查閃電網路的三個主要實現對網路的屬性和不同引數的設定,並展示閃電開發人員同意的預設引數的最新更改如何使攻擊更容易實施。我們的結果表明,透過使用不到0.5個比特幣就鎖定大部分閃電網路的流動性,這可以破壞閃電網路。

支付通道網路是解決區塊鏈可擴充套件性問題的第二層鏈下解決方案。作為比特幣二層網路的閃電網路目前擁有超過11,000個節點和35,000個通道,總容量約為880 btc(約合9,000,000美元)。

我們探索的攻擊的基本概念是可以追溯到2015年8月的lightning-dev列表中的對應內容中提到的,以及2017年5月提到的bolt中的一個git問題。從未對這種攻擊的後果進行全面評估,其成本卻非常低:攻擊者只需不到0.5個比特幣,就可以無限期地鎖定網路的大部分通道。

攻擊:

為了使通道癱瘓,攻擊者使用一套路徑的源和目標開啟通道,並透過該路徑請求許多小額付款,從而耗盡了同時開啟的htlc的數量(閃電網路的每種主要實現方式對併發htlc的數量都有不同的限制 )。 攻擊者既是付款的來源,又是目的地,並且可能嚴重延遲付款的最終執行時間(最多幾天)。 然後,攻擊者可以再次重新執行攻擊,並鎖定同一路徑額外的一段時間。

攻擊者建立了兩條長途路線用於癱瘓通道

我們研究了閃電協議的主要實現。 這是它們用於相關引數的預設值(大多數節點的確使用這些預設值-請參閱本文中的詳細資訊)。 如今,網路上的大多數節點實際上都是lnd節點(約90%)。

預設引數

下圖說明了如何沿著路徑執行單筆付款(攻擊者在每個路徑上重複多次,直到沒有更多的htlc可用):

路由建立和htlc消除的過程

我們評估了在整個閃電網路上大規模執行此操作的後果。

攻擊整個網路:

當使用一種貪婪演算法以選擇路線並使盡可能多的流動性癱瘓時,我們得到以下結果。 下圖顯示了我們設法癱瘓的閃電網路當前鎖定的總容量的一部分(一次連續3天)。

在不同的時間段內可以非常有效地鎖定網路:

攻擊的總成本很低。 成本由兩個主要因素組成:開通通道的成本(不可退款)和提供具有流動性的通道的成本(這筆錢仍由攻擊者掌握)。

我們的結果表明,攻擊者可以使用少於0.25 btc的數量使閃電網路中650 btc的流動性癱瘓3天。

攻擊中樞:

為了延長單個節點與網路的連線時間,攻擊者將連線到受害節點並使它的相鄰通道癱瘓。 為此,它會透過受害人的通道來回路徑發出多次付款請求(這在閃電網路實現中令人驚訝地被允許)。

以下是一些重要節點,攻擊它們的成本為:

該表中的最後一個條目涉及對屬於lnbig的所有25個節點的隔離攻擊,這些節點持有閃電網路中所有流動性的47.3%。

如果要攻擊較小的節點,代價通常與它們的級別成正比(但不完全相同):

我們注意到該漏洞相對難以修復,因為它涉及到鏈下支付網路的三個基本屬性:

1.支付是以一種無需信任的方式執行的,使用了有條件的支付合約(以與htlc的交易形式),這些合約在各方之間交換,並且僅在發生爭議時才傳送到區塊鏈。這些合約的規模隨著更多的有條件付款待處理而增長,因此,待處理付款的總數受到可放置在區塊鏈上的交易規模的限制。

2.到期時間長。為了允許節點在惡意夥伴關閉作為待付款項一部分的通道時收回其資金,已設定htlc到期時間以允許節點有足夠的時間對這種關閉提出上訴。在比特幣的閃電網路中,由於其指令碼語言的表達能力較低,htlc的到期時間會在路徑的整個長度上累積,直至達到2016個的區塊——通常需要兩個星期的時間。

3.付款的隱私。付款通道網路使用洋蔥路由,該路由不允許路徑上的中間節點識別付款的來源和付款地點,從而使攻擊者可以不受懲罰地採取行動。

緩解技術

實際上,對預設值的最新更改實際上使我們的攻擊更容易實施:lnd將其cltv_expiry_delta預設值從144個區塊更改為40個區塊(2019年3月12日),這允許在每個路徑中連結更多節點而不會達到locktime_max限制。此外,lightning開發人員在2018年阿德萊德會議上商定了2016(max_cltv)的最大鎖定時間以設定bolt 1.1規範。這是在某些實現中使用的先前值的增加。同樣,這允許更長的路由和更長的到期延遲,這使攻擊更具破壞性,更易於執行。

強制執行快速htlc解析。雖然htlc的到期時間可以使節點保持安全並提供足夠的時間將事務釋出到網路,但我們建議新增另一種超時機制。具體來說,如果htlc機密沒有從一個相鄰節點足夠快地傳播,則與該節點的通道應關閉。這種機制是一種將行為異常的對等方與網路斷開連線的方式,以防止它們免費重複多次攻擊。

減小路線長度。我們建議降低最大允許路由長度(當前為20跳)。網路圖是高度連線的,並且跳數仍然應該足夠:網路中節點之間的路徑平均少於3跳,並且網路直徑約為6。

根據信任級別和迴圈迴避設定最大併發支付數是另外兩種可以稍微緩解攻擊的方法。

為了確保網路安全,必須進行進一步的工作。 由於攻擊依賴於支付通道中的基本機制,因此需要更多考慮。

有關更多資訊,請參見全文。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;