作者:Clara & Sergei
來源:https://raw.githubusercontent.com/s-tikhomirov/ln-jamming-simulator/master/unjamming-lightning.pdf
原文出版於 2022 年,提出了一種如今稱作 “HTLC 背書” 的解決閃電通道阻塞攻擊的方法。
摘要
去中心化金融網絡的用戶會遇到新形式的安全性爆破。在這樣的網絡中,無法應用基於身份的欺詐防範方法,這與其面向隱私的設計哲學相矛盾。因此需要新的緩解策略。然而,推出新的方法可能會傷害網絡的其它有用屬性。
在這篇文章中,我們提出了一種用在去中心化金融網絡中的緩解策略評估框架。這一框架讓研究者和開發者可以在多個維度上檢驗和比較被提議的協議修改,例如隱私性、安全性和用戶體驗。
作為一個例子,我們分析了閃電網絡中的 “通道阻塞攻擊(jamming attack)”。閃電網絡是一個點對點的支付通道網絡,建立在比特幣協議上。阻塞攻擊是一種便宜的拒絕服務攻擊,讓一個敵手可以通過氾濫的失敗支付來暫時禁用一些閃電通道。
我們為阻塞攻擊提出了一種實用的解決方案,集合了無條件支付的手續費和對等節點聲譽。根據這個框架的指引,我們證明了,在遏制阻塞攻擊的同時,我們的解決方案也保持了協議的激勵兼容性。該解決方案也保持了安全性、隱私性和用戶體驗,而且實現起來也直接。我們用分析和模擬來支撐我們的結論。而且,我們的反阻塞解決發難可能會幫助緩解其它問題,例如惡意的通道餘額偵測。
1 引言
去中心化的區塊鏈協議,比如比特幣,代表著金融網絡的一種新範式。它們的核心設計原則是免信任的訪問 1 以及用戶隱私性。處於這個目的,用戶以公鑰為身份,而且可以生成事實上無限數量的公鑰。任何人都可以加入這樣的網絡,而無需正式的身份鑑別。這個特性讓傳統的基於身份的反欺詐方法在協議層面無法實施。
與此同時,去中心化的金融網絡,又是攻擊者的垂涎之物。在遭受攻擊時,用戶和服務供應商會失去自己的資金或是曝光自己的隱私。
腳註 1:准入型網絡則正好相反,是由一組已知的參與者來運行的。這樣的系統不在本文討論範圍之內。
在這種環境下,聲譽和經濟激勵變成了緩解策略的主要工具。前者的作用是從誠實用戶中辨識出行為不軌的參與者,然後選擇性地屏蔽他們。後者則是為不受歡迎的行為施加成本,同時也可能會給受害者補償。
在提出一項協議變更時,我們要將網絡作為一個整體,來分析其效果。新提案不能引入新的攻擊界面、犧牲用戶體驗以及危害隱私性和安全性。如果無法認識和繞過無法避免的取捨,可能會讓緩解措施完全無用。此外,還要考慮實現的難度。
本文關注的是對免許可金融網絡的攻擊的緩解策略。我們的主要顧慮之一是,一項被提議的解決方案,假設能解決攻擊,會不會大大損害協議的別的方面的有點。為避免 “把孩子和洗澡水一起潑出去”,我們提出了一種通用的框架,用於設計和評估緩解措施。作為案例,我們考慮的是閃電網絡(LN)中的通道阻塞攻擊的緩解策略。
閃電網絡是建立在比特幣上的一個支付網絡,其設計目標是解決比特幣區塊鏈協議內在的交易吞吐量限制。通道阻塞攻擊是閃電網絡中一種長期存在【47】、但尚未被解決的 DoS 攻擊界面。它讓一個攻擊者可以便宜且高效地禁用受害者的通道。阻塞攻擊會阻止用戶使用網絡的核心功能,並減少用戶的轉發費收益。閃電網絡的社區已經討論過許多緩解通道阻塞攻擊的措施【16】,但沒有一個得到了實現。
譯者注:“【】” 為參考文獻的編號。
為了展現我們的框架的威力,我們用它提煉出了一種能夠應對通道阻塞且沒有根本缺陷的有效解決方案。
我們的貢獻
- 我們提出了一種評估攻擊緩解措施的通用框架。這一框架幫助保證了被建議的變更不會顯著削弱現有的協議優點。
- 我們提出了一種針對通道阻塞的緩解策略。我們的解決方案結合了無條件支付的手續費以及基於對等節點過往行為的局域聲譽系統。我們通過上面定義的框架的透鏡來評估我們的解決方案,從而為其設計選擇辯護。
下文的結構安排是這樣的。首先,我們會提出評估框架(章節 2)。然後,我們會提供關於閃電網絡、尤其是通道阻塞的背景只是(章節 3)。我們會在跟通道阻塞緩解措施的相關設計決策上應用上述評估框架(章節 4),然後提出我們對通道阻塞的解決方案(章節 5),該方案結合了無條件手續費(章節 5.1)和局域聲譽系統(章節 5.2)。然後,我們會討論模擬的結果(章節 6)並評審相關的工作(章節 7)。最後,我們會列舉未來的工作方向(章節 8)並給出結論(章節 9)。
2 一種評估緩解策略的框架
我們建議用從下列角度來評估緩解措施。
有效性。緩解措施應該能阻遏或防止攻擊。敵手必須付出代價,可以是貨幣(付出手續費或會遭受懲罰)、時間(在攻擊前需要積累聲譽),也可以是兩者的結合。注意,攻擊者的動機並不一定只跟金錢有關(例如想要惡意破壞網絡)。
激勵兼容性。緩解措施應該維持協議的激勵兼容性。去中心化的網絡依賴於參與者的理性:遵守規則應與他們的最佳利益一致。支付網絡應-激勵節點轉發支付以及誠實地報告故障。
用戶體驗。緩解措施不能摧毀用戶體驗。交互界面的變更應該符合直覺並且易於解釋。用戶體驗應該從終端用戶和專業的服務提供商的視角來評估。
隱私性和安全性。緩解措施不應顯著犧牲用戶的隱私性。至於安全性,我們必須保證被提議的協議的變更不會引入新的攻擊界面。緩解措施的負面效果與其潛在好處必須謹慎權衡。
實現難度。緩解措施實現起來應該直截了當。協議變更需要在社區(尤其是開發者)中達成粗糙共識【46】。易於實現的提議更要可能被採用,而不會被永久推遲。
上述框架可以這樣使用。首先,考慮緩解措施的所有可能分類。其次,排除顯然不兼容上述至少一條標準的策略。最後,在具體的網絡語境下比較剩餘選項的代價和好處。
我們要指出的是,前面兩條標準(有效性和激勵兼容性)是有用解決方案的硬性標準。後面的三條則常常需要取捨。有時候,使用更中心化的架構或積累更多的用戶數據,就能改善用戶體驗,但這會犧牲隱私性。類似地,實現起來更簡單的策略可能需要用戶額外信任一些預設的第三方。
注意,上面的一些標準(至少在一定程度上)是客觀可以量化的,而其它則很大程度上是主觀的。繞過這些取捨取決於具體的網絡和攻擊。
3 閃電網絡和通道阻塞概述
免許可的區塊鏈網絡面臨內在的可拓展性挑戰,這正是二層(L2)協議想要解決的問題【19】。它們希望在提高交易的吞吐量的同時利用底層區塊鏈網絡的安全性保證。
閃電網絡是一種主要的基於比特幣的 L2 協議【38】。成對的閃電節點通過在一個共同擁有的資金地址中鎖定資金來開啟 支付通道。然後,它們通過在 通道狀態 中反映最新的資金分配來實現支付。支付在 鏈下 發生,僅在需要的時候才到 鏈上 結算。一種懲罰機制保證了餘額更新的經濟安全性。
為了發起一次 多跳 支付,發送者先找出一條可以通向接收者的、由通道連成的合適路徑 2 。假定一條路徑 $U_0, … , U_m$ 上有一個節點 ($U_i, 0 <= i <= m$)。伸向發送者($U_j, 0 <= j < i$)的路徑稱作 “上游”,通向接收者($U_j, i < j <= m$)的路徑稱作 “下游”。而 Ui 在路徑上的對等節點($U_{i-1}$ 和 $U_{i+1}$)分別叫作該節點的上游節點和下游節點。
每一個 路由節點,在收到轉發請求之後,要麼 轉發 這筆支付,要麼讓它 終止(failed)。如果一個轉發節點終止一筆交易,它會提醒發送者,後者可以嘗試繞過出錯的節點。接收者,在收到支付之後,也可以 領取 資金或者終止它。在向最後一個路由節點領取支付的時候,接收者要揭曉一個秘密值,讓轉發節點可以向自己的上游對等節點領取資金,以此類推。
接收節點在拒絕進入的支付時也必須跟其上游節點更新通道狀態。節點被期望僅在缺乏轉發支付的資源(例如,流動資金)時才終止一筆支付。節點一般來說不會限制一筆進入的支付可以使用的流動資金數量 3。
一筆支付,無論是被領走了,還是終止了,都叫 解決了 。持續一段時間不能得到解決的支付會被取消並出發通道的關閉 4。
未解決的支付會鎖住沿路每一條通道的部分流動性。這些流動資金將不能用來轉發別的支付。而且,在同一時間,一條通道只能保持一定數量以內的未決支付。這個限制來自比特幣協議規則:帶有太多未決支付的欺詐性通道關閉將無法在鏈上裁決 5。因此我們說,每條通道都有限定數量的 支付槽(payment slot)。每一個未決支付都會佔據一個支付槽和一定比例的流動性。
為了隱私性,閃電支付使用洋蔥路由。路由節點至知道自己在路徑上的直接對等節點,但無法知道最初的發送者和最終的接收者 6。
腳註 2:一筆支付可能會被分割,然後沿不同的路徑發送【40】。
腳註 3:最近有人提出基於閥門的流量控制手段【36】。
腳註 4:一份全面的協議描述可見,例如【8】。
腳註 5:在任一給定的時刻,一條通道最多隻能維持 483 個未決支付。用戶還可能為自己的通道設置更低的限額。
腳註 6:這一假設在時序攻擊中可能打破【43】。
通道阻塞
阻塞是一種對閃電通道的拒絕服務攻擊。攻擊者控制著一條目標路徑的兩端,在一頭髮送支付,在另一條拒絕申領,從而阻塞掉整條路徑上所有通道的流動性和支付槽。阻塞攻擊的目標可能是癱瘓某一組通道(例如,屬於商業對手的通道),甚至是整個網絡。
我們要區分 基於流動性 的阻塞和 基於支付槽 的阻塞。前者主要是為了鎖住受害者通道的流動資金,而後者是想佔住所有支付槽。總的來說,基於流動性的阻塞要付出更大的代價。要佔據一個支付槽,只需請求轉發超過目標節點願意轉發的最小支付規模 7。基於支付槽的阻塞可以說更加 “高效”,因為不論受害者通道本身有多大的容量,要堵塞它都只需付出同等數量的資金。
我們也要區分 迅速 的阻塞和 緩慢 的阻塞。在迅速的阻塞攻擊中,攻擊者發送一連串的阻塞並在幾秒內解決,從而模仿失敗的誠實支付。相反,緩慢的阻塞要在一個很長的時延(以小時甚至天為單位)之後才會解決,從而受害者可以發現這種攻擊。兩者之間的界限取決於對誠實支付最大解決時延的主觀定義。
攻擊者可能會追求多種目標。我們要指出的是,參加網絡的用戶一般有兩個主要目標:發送和接收支付;從轉發支付中賺取手續費。因此,攻擊者可能是想阻止用戶交換支付,也可能是想阻止轉發服務的供應商獲得手續費收益。
阻塞攻擊是完全免費的。攻擊者不需要支付手續費,因為路由節點不會對終止的支付收取手續費。對攻擊者來說,唯一的代價是攻擊期間鎖定的資金的機會成本 9,以及開啟通道的成本。洋蔥路由讓阻塞緩解措施更難設計,因為對路由節點來說,發送者的身份是不可知的。
腳註 7:基於支付槽的阻塞支付的規模也要大於 粉塵限制 —— 這是在轉發通道中佔據一個支付槽的最小數量。小於粉塵限制的支付是允許的(雖然其安全性保證會更弱),但它們無法用在(基於支付槽)的阻塞攻擊中,因為它們不佔用支付槽。而且,因為它的價值太過微小,用來發動針對流動性的阻塞攻擊也是不實用的。
腳註 8:從技術上來說,攻擊者也可能讓阻塞喬裝成成功的支付,此時會付出手續費。但在下文中,我們總是假設阻塞支付會終止,而不是成功。
腳註 9:關於通道代價的進一步細節,見【18】。
4 阻塞緩解措施的設計抉擇
以及出現了多種阻塞緩解策略提議 【16,33】。他們可以歸類為基於貨幣代價的,以及基於聲譽的。為了系統地分析解決方案的設計空間,我們先要列出可選的設計抉擇,然後,基於章節 2 所述的框架來評估這些選擇。
4.1 貨幣方案
貨幣方案的目標是讓攻擊變得更昂貴。這些策略也可以補償受害者。在阻塞攻擊的語境下,貨幣方案的思路是在現有的手續費(僅對成功支付收取手續費)的基礎上對終止的支付也收取手續費。我們考慮以下的設計抉擇。
- 誰能收到這部分手續費? 接收者可以是:下游節點、一個一致認可的第三方,或者直接是沒有人(可證地銷燬這部分手續費)。
- 要用哪種貨幣來支付這部分手續費? 手續費可以用網絡的原生資產來支付(在閃電網絡中就是比特幣),或是其它資產。而在銷燬手續費的方案中,可以用工作量謎題的解來收取手續費。
- 這部分手續費要無條件支付嗎? 最簡單的手續費設計是一種 預先 (也即在提出一筆支付時)無條件支付的手續費。一種替代方案是在支付成功時返回這部分(為終止情形)預付的手續費。也可以考慮別的田間。
- 如何計算這部分手續費的數額? 當前,閃電網絡的手續費是由兩部分組成的:一個常量的基礎手續費,還有跟支付數額成線性比例的手續費。更復雜的手續費算法可能要取決於其它參數。
向一個對等節點支付手續費要比向一個第三方支付手續費更簡單,因為引入一個第三方會讓經濟激勵更加複雜。閃電網絡本身也沒有提供可證地銷燬資金的明顯方案 10,所以基於銷燬證據的方案是難以實現的。因此,我們將手續費支付的設計空間收窄到向下遊對等節點。
不設返還的無條件手續費更易於實現,至少,返回機制需要多次價值轉移。
至於手續費數額的計算,為了簡單,我們採用跟現有的成功手續費相同的結構(即,基礎手續費加上比例手續費)。我們假設手續費的數額總是正數 11(即,總是支付給下游對等節點,而不是上游對等節點)。讓手續費的數額跟實際的支付解決時間掛鉤是好的,但我們當前還不知道任何實現這種想法的可靠辦法。
至於用戶體驗、隱私性和安全性,可選的設計的好處和缺點都是類似的。
腳註 10:相反,基礎層的比特幣可以發送到可證無法花費的地址。
腳註 11:雙向的手續費(包含支付給上游節點的費用)在【16】中得到了討論。因為廣告負的手續費可能會引來不想要的流動,這種提議需要進一步的評估。
4.2 聲譽方案
在基於聲譽的策略中,節點會跟蹤自己對其它節點的信任等級。在阻塞攻擊的語境下,聲譽評分會幫助路由節點區分好的對等節點和壞的對等節點,然後要麼終止由後者發來的支付,要麼完全斷開跟他們的連接。在設計一種聲譽方案時,我們要考慮以下的設計抉擇。
- 誰的聲譽會影響支付的轉發? P2P 網絡【28】的一種常見的設計模式是一個路由節點僅考慮其上游對等節點的聲譽。除了這種模式,最初發送者的聲譽也可以附加在支付上。我們將僅對對等節點評分的方案稱為 局域 聲譽方案,反之則是 全局 方案。
- 聲譽機制要求共識嗎? 節點可以獨立評分,也可以嘗試在網絡層面、對所有節點的聲譽達成共識。
- 聲譽是同質化的嗎? 同質化的聲譽評分的形式是 token,可以在節點之間轉移。非同質化的聲譽評分則相反,跟最初打出評分的節點是不可分割的。
- 如何打分? 一種辦法是基於對等節點過往的行為。另一種方法則是基於對一些稀缺資源的承諾,例如工作量證明或者比特幣所有權證據(權益證書【34】)。
在支付中附加發送者聲譽的方案違反了閃電網絡的隱私性目標。
由於節點在客觀上只能感受其對等節點的行為,聲譽評分應該是局部的。
有感於女巫攻擊,我們傾向於獨立評分,而不是是基於共識的聲譽系統。
我們傾向於非同質化的方案,因為聲譽 token 的二級市場對設計的安全性是不小的挑戰 12。
最後,我們選擇基於過往的行為、而不是對稀缺資源的承諾,來打分。從它作為一種轟炸防範措施的失敗來看【25】,工作量證明在這個角度上看起來沒什麼作用。尤其是,可以阻止攻擊的工作量難度對誠實用戶來說是高得不可接受的。我們將其它基於稀缺資源的聲譽方案的評估交給未來的工作。
腳註 12:以往的研究已經證明,設計一種應用型 token 的次級市場是一個很難的事情【10、14、51】。舉個例子,大機構可以獲得大量這樣的 token 來操縱市場。
5 我們對阻塞攻擊的解決方案
基於章節 4 的論證,我們提議一種雙管齊下的策略來緩解阻塞攻擊。
- 無條件的手續費,支付給下游節點,通過為每一筆支付施加一個小額的代價來解決快速的通道阻塞。
- 局域聲譽,基於過往的行為,通過懲罰轉發需要太長時間來解決的支付的對等節點,解決緩慢的阻塞攻擊。
在章節 5.1 和 5.2,我們給出了無條件手續費和局域聲譽系統的更多細節。我們通過章節 2 提出的框架來檢視我們的解決方案的這兩個部分,然後討論參數選擇的最佳做法。
5.1 無條件的手續費
考慮一條支付路徑 $U_0, … , U_m$ 。令 $f_{i, i+1}$ 表示一筆由 $U_i$ 支付給 $U_i+1$ 的手續費,其中 $i \in [0, m-1]$ 。我們將成功情形要支付的記作 $f^S$ ,而無條件支付的手續費記作 $f^N$ 。對於 $X \in {S, N}$ ,類型 $X$ 的 手續費收益 是 $U_i$ 所支付的與所收到的之間的差額:
$$F_i^X = f_{i-1}^X - f_{i, i+1}^X$$ ……(1)
對於路由節點 $U_i$ ,我們一體的手續費方案如下(見圖 1)。
- 圖 1. 路由節點 Ui 的決策樹。葉子上的數值表示總收入 -
- $U_{i-1}$ 支付 $f_{i-1, i}^N$ 支付給 $U_{i}$ 。
- $U_{i}$ 決定要終止還是轉發這筆支付。如果 $U_{i}$ 終止支付,就不會再收到更多手續費。
- 如果 $U_{i}$ 決定轉發,則要支付 $f_{i1, i+1}^N$ 給 $U_{i+1}$ 。
- 上述過程繼續,直到支付在某一跳終止,或成功。如果支付成功,$U_{i}$ 會收到 $f_{i-1, i}^S$,而付出 $f_{i, i+1}^S$ 。
如果 $U_{i}$ 終止這筆支付(而不是繼續轉發),其手續費收益是 $f_{i-1, i}^N$ 。在轉發了但支付在下游終止的情形中,是 $F_{i}^S$ ;在轉發了且支付成功的情形下,是 $F_i^S + F_i^N$ 。
注意,每一筆支付 $f$,都不僅包含了支付給下游對等節點的手續費,還包含了給未來所有路由節點的手續費。舉個例子,想象一條四個節點的路徑 $(U_1, U_2, U_3, U_4)$ ,其中 $U_2$ 和 $U_3$ 為每筆支付收取 1 聰的固定費用 13。發送者 $U_1$ 在轉發一筆支付給 $U_2$ 的時候要附帶 2 聰 的手續費:$f_{1, 2} = 2$;但 $f_{2, 3} = 1$ 。因此,兩個節點的手續費收益分別等於:$F^2 = f_{1, 2} - f_{2, 3} = 2 -1 = 1$ ,$F^3 = f_{2, 3} - f_{3, 4} = 1 - 0 = 1$ 。不論支付成功還是失敗,都是如此。
腳註 13:“聰” 是比特幣的最小單位。1 BTC 等於 1 億聰。
有效性
使用無條件手續費之後,阻塞攻擊就不再是免費的了。而且,無條件手續費的兩個部分(基本手續費和比例手續費)分別解決了基於佔位的和基於流動性的阻塞攻擊。低價值的阻塞支付本意要佔據支付槽,但現在要付出基礎手續費;而比例手續費可以更好地阻遏高價值的、以鎖定流動性為目標的阻塞。
使用合理設定的手續費係數,無條件手續費可以讓路由節點從阻塞中賺取跟誠實支付相仿的收益 14,從而補償他們在阻塞攻擊中受到的經濟損失。將無條件手續費設得相對比較低,就可以實現這種效果,因為攻擊者要持續發送阻塞支付,以保持攻擊效果,而誠實支付通常只會佔用小比例的通道資源。模擬也證實了這一直覺(見章節 6)。
腳註 14:對於一個節點來說,從誠實支付中賺到的手續費收益取決於其在網絡中的位置、其流動性管理習慣(例如,再平衡),以及其它因素。
激勵兼容性
為轉發一筆支付,一個路由節點要在跟下游對等節點的其中一條通道中分配一個支付槽和一些流動性。這些資源在支付未決期間,不可以用作別的用途。因此,我們面臨激勵兼容性挑戰:路由節點可以先拿走無條件手續費,然後故意終止支付。為了保證激勵兼容性,成功支付的手續費收益必須補償路由節點在轉發活動中的風險。
令 $\theta$ 為支付終止的概率 15。如果 $U_i$ 決定轉發支付,其預期手續費收益是:
$$\mathbb{E}(F_i|Forward)=(1-\theta)(F_i^S + F_i^N) + \theta*F_i^N$$ ……(2)
$$=F_i^N + (1-\theta)F_i^S = (f_{i-1, i}^N + (1-\theta)F^S)$$ ……(3)
如果 $U_i$ 絕對終止支付,那麼收益就只是 $f_{i-1, i}^N$ 。為了確保 $U_i$ 傾向於轉發支付,轉發支付的預期收益必須高於立即終止的收益:
$$f_{i-1, i}^N - f_{i, i+1}^N + (1-\theta)F^S > f_{i-1, i}^N$$ ……(4)
$$(1-\theta)F^S > f_{i, i+1}^N$$ ……(5)
換句話說,轉發支付的 額外 預期收益必須能補償轉發節點給下游節點支付的無條件手續費。發送者應該也會避免使用持續終止支付的通道,即使這些通道表示僅收取低手續費:這可能是盯著無條件手續費、不轉發支付的惡意策略。
腳註 15:我們使用類似於【37】的方法(章節 4.2)。
用戶體驗
用戶體驗上的關鍵顧慮是,向失敗的支付收取手續費可能會勸退用戶。錢包可以恰當地抽象掉這些細節。實際上,每次支付的預期嘗試次數是低的 16,即使終止概率 $\theta$ 一般高。要讓一筆支付以至少 $p$ 的概率在至多 $K$ 跳中成功,需要滿足下列條件:
$$1 - \theta^K > p$$ ……(6)
這就等價於:
$$log(1 - p) > K log \theta$$ ……(7)
因為 $log \theta < 0$ ,所以:
$$\frac{log(1 - p)}{log \theta} < K$$ ……(8)
- 圖 2. 在不同的支付終止概率 θ 下,預期的嘗試次數是所要求的成功概率 p 的函數。 -
所需的嘗試次數只會緩慢增長(與所需要的成功概率 $p$ 成對數)。甚至假設 $\theta = 20%$,成功概率在一次、兩次、三次嘗試之後會分別達到 80%、96% 和 99% 。我們的結論是,這對用戶體驗的負面影響是很小的,因為每一筆支付只需嘗試很少幾次,因此無條件的手續費也很低(見圖 2)。
隱私性和安全性
路由節點不應能夠知道自己在轉發路徑中的位置。無條件的手續費會讓這種屬性變弱:路由節點可以從手續費數額和各節點公開的手續費策略中推斷自己到最終接收者的距離 17。這個問題可以通過讓發送方將一部分支付額分配為最後一跳的無條件手續費(預期接收者能夠收到)來解決,看起來像是路徑延伸到了更遠的地方。這一方法的缺點在於,較高的無條件手續費會導致路由節點的激勵不一致。我們並不認為這個問題會變得非常嚴重,因為無條件手續費的數額本身較低。
腳註 17:在這個角度上,對成功支付收取的手續費就沒有那麼多困擾,因為路由節點不知道有多大比例的支付額代表手續費。相反,無條件手續費是跟支付額獨立的。
實現難度
無條件手續費是易於實現的。一種方法是提前支付。另一種方法是,下游節點 $U_i$ 在支付終止時返還資金給 $U_{i-1}$ 時先扣住手續費 $f_{i-1, i}^N$ ,就像一個概念驗證實現做的那樣【48】。其它實現任務包括在 gossip 消息中公告額外的手續費策略,以及在路由選擇中考慮無條件手續費。
5.2 局域聲譽評分
無條件手續費自身還不足以解決阻塞攻擊。因此,我們還需要一種基於聲譽的緩解策略。根據定義,聲譽方案包含三個部分:初始化、聲譽的更新,以及基於聲譽評分作出選擇。
初始化
在初始化階段,節點需要設定下列參數:
- τ(秒)—— 區分誠實支付和不誠實支付的最大解決時間;
- t(秒), T(秒)、A(聰/秒) —— 聲譽更新的參數(見下文);
- K(整數)、L(聰)—— 支付槽和流動性的高風險配額。
上述參數的具體數值取決於節點的風險偏好。舉個例子,K 和 L 的更高數值反映了更高的風險容忍度。路由節點應該權衡從誠實但更高風險的支付(例如,來自新的節點)所帶來的收益提升,與相應的阻塞攻擊風險。t、T 和 A 的數值可能取決於在現有通道保持阻塞的情況下、開啟新通道來處理誠實支付的成本。
更新聲譽評分
我們考慮聲譽評分的兩種可能數值:高 和 低 (更細粒度的方案也是可以做到的)。最初,所有的節點都只有低評分。如果一筆支付在 τ 秒內解決,就被視為 誠實 的。否則,它就會被視為一次阻塞。如果一個對等節點僅轉發誠實的支付,就被定義成 好的 。而且,這些支付只需給路由節點支付每秒 A 聰的手續費。如果一個對等節點在足夠長的時間內表現良好,其評分就升級。
更具體來說,聲譽評分是這樣更新的:
- 如果一個對等節點在時間週期 t 內保持良好行為,將其評分改成 高 ;
- 如果在時間窗口 T 秒內無法保持良好行為長達 t 秒,就改成 低 。
基於滑動時間窗口的聲譽更新算法可以容忍偶發的錯誤,同時懲罰持續的不軌行為。類似的方法眼看用在更早的 P2P 系統中【13】。
如果對等節點提前同意容忍有意延遲解決的支付 18,那麼這樣的支付就不會影響轉發支付的節點的聲譽。
腳註 18:這對一些 L2 協議來說是有用的,例如原子化互換【55】(例如,潛水艇互換【6】)以及 “謹慎日誌合約”【26】。需要更多研究來分析這樣的協議在多跳環境中的效果。
轉發
提出支付 的節點可以(但不是必須)將一筆支付標記為低風險的,也就是給它 背書 19。它的下游節點(接受請求的節點 )在且僅在驗證該背書來自高聲譽的對等節點時同意該支付是 低風險的 。低風險的支付可以盡最大努力轉發,相反,高風險的支付則只能使用 K 個支付槽和 L 聰的流動性配額。簡而言之,配額應用在下游節點,聲譽應用在上游節點。
腳註 19:這將我們的提議與(我們之間已經拒絕過的)基於發送者聲譽的方案區別開來:風險評分是附加在支付上的,而與其初始發送者無關。
有效性
低聲譽的攻擊者不再能完全阻塞一條通道,因為通道會留出一些資源給低風險的支付。為了規避這種對抗措施,攻擊者需要提前建立聲譽,這需要精力和資源。注意,為了獲得一個高聲譽評分,節點必須轉發支付,在至少 t 秒內每秒支付 A 聰作為手續費。
我們這裡提議的聲譽方案的一個缺點在於,它可能讓通道資源處於潛在的低效利用狀態。在大額支付中,一些誠實的高風險支付可能會因為缺乏高風險配額而終止。另一個顧慮是,一種不完整的阻塞攻擊,可以僅僅針對高風險配額支付槽和流動性,相比完全阻塞會變得更便宜。
激勵兼容性
路由節點應被激勵盡其所知給支付背書,兩種可能的偏離策略是背書高風險的支付,以及不背書低風險的支付。不背書低風險的支付顯然會降低節點自己的手續費收益。更有趣的是,在背書高風險支付的時候,如果支付成功了,可以提高背書節點的預期收益,風險是在自己的下游節點丟失聲譽(如果該支付最終被證明是一次阻塞的話)。通過設定合理的聲譽系統參數,可以讓這種策略變得無利可圖。如果重建聲譽是非常昂貴的,那麼額外的手續費收益就不足以覆蓋錯誤背書的風險。
用戶體驗
本提議的用戶體驗困擾主要是對新用戶的,他們可能遇到更高的失敗概率,因為他們一開始只有低聲譽。對於閒人用戶,這可能不是嚴重的問題,因為他們的對等節點的高風險配額足以應對他們的低支付量。而且,專業的閃電網絡服務供應商可能會給客戶提供更加寬鬆的聲譽策略。
隱私性和安全性
無論是否背書一筆支付,節點都會洩露支付可能的源頭的信息。為了保護最初發送者的隱私,節點可以選擇不背書一些低風險的支付(代價是損失少數手續費收益)。
聲譽機制的安全性風險是一種級聯式攻擊(cascading attack),讓阻塞交易通過很長的轉發路徑,從而降低沿路節點的聲譽評分。這將傷害整個網絡的性能,因為節點們將錯誤低終止許多低風險的支付。雖然降低路由節點的聲譽評分讓支付更有可能失敗,它不能完全阻斷支付流。
級聯式攻擊的原理已在多種語境下得到了研究,例如金融業【32】、物聯網【17】和病毒擴散。這些論文已經基於理論結果良好了風險(例如【7,11,39】)。受到這些研究和閃電網絡屬性【29】的啟發,我們推測,級聯攻擊是難以實現的。在參數選擇和攻擊策略上,需要進一步的研究。
譯者注:根據 Carla Kirk-Cohen 等人在 2024 年 9 月的仿真實驗,在應用本文作者的方案後,唯一能夠長期阻塞通道的攻擊正是利用了此處所謂 “級聯式攻擊” 的方法。可能要通過改進聲譽系統來應對。
實現難度
我們所提議的聲譽系統是相對容易實現的。額外的開發包括要給支付數據結構添加編碼背書的字段。節點也要能夠在本地的數據庫中記錄其對等節點的聲譽評分。
6 模擬
(略)
7 相關的工作
關於阻塞攻擊的討論可以追溯到 2015 年【1,47】。前沿方案的總結可見【16,33,41】。
阻塞攻擊的影響,以及攻擊的改進和潛在對抗措施,已經得到充分研究【15,30,31,35,42,52】。預先支付作為一種對抗措施,在此前已被討論過【45,22】。相關的方法包括權益證書【34】和節點層面的防禦措施【2,36】。中心化的全局節點評分也是可選的,但很少在現實中中使用【5】。
像 “flood and loot”【20】和 “大規模退出”【50】這樣的攻擊可以通過製造基礎層的堵塞來爆破 L2 協議。對閃電網絡的隱私性攻擊包括餘額偵測【12,21】、時序攻擊【43】和跨層去匿名化【23,44】。截至今日,尚無緩解策略得到應用。
8 未來的工作
未來的工作方向包括模擬更多的攻擊場景和基於聲譽的防範策略。更廣義來說,可以考慮其它的設計選擇的可行性。在手續費數額中考慮支付的解決時間和保護隱私的發送者聲譽方案,是尤為有趣的方向,雖然這些想法都有尚未解決的理論和實踐困難。此外,阻塞攻擊的代價和效率,可以在不同的攻擊目標和成功標準下研究。
有效的對抗措施也許能緩解其它的閃電網絡問題。首先,它會阻遏偵測攻擊【21】,因為偵測類似於阻塞,都需要發送許多有意失敗的支付。其次,我們的手續費方案可能對免信任瞭望塔的激勵也是有用的【9,24,29】—— 瞭望塔是代表用戶擊敗欺詐性通道關閉的第三方服務。
9 結論
在本文中,我們為去中心化金融網絡的攻擊緩解策略建立了評估框架。作為一個案例,我們考慮了阻塞攻擊 —— 一種在閃電網絡(比特幣上的主導性 L2 協議)中長期存在的拒絕服務攻擊界面。在我們所提出的框架下考慮了多種設計抉擇之後,我們提出了一種有效的解決方案,通過結合無條件手續費和基於過往行為的局域聲譽評分來緩解阻塞攻擊。我們用仿真和分析計算證明了我們的提議的可行性。
致謝
我們感謝 Sergi Delgado Segura 為無條件手續費製作概念驗證實現。感謝 Carla Kirk-Cohen、Thomas Huet、Joost Jager、Gleb Naumenko、René Pickhardt、Antoine Riard、Bastien Teinturier 和廣大的閃電網絡開發者社區的通透討論。
參考文獻
(略)