16. 閃電網路的 安全性與隱私
在本章中,我們將探討與閃電網路安全性和隱私相關的一些最重要議題。首先,我們將考慮隱私,它意味著什麼,如何評估它,以及在使用閃電網路時可以採取哪些措施來保護自己的隱私。然後我們將探討一些常見的攻擊和緩解技術。
16.1. 為什麼隱私很重要?
加密貨幣的關鍵價值主張是抗審查的貨幣。比特幣為參與者提供了儲存和轉移財富的可能性,而不受政府、銀行或企業的干預。閃電網路繼續這一使命。
與託管式比特幣銀行等簡單的擴展解決方案不同,閃電網路旨在擴展比特幣而不損害自我託管,這應該會導致比特幣生態系統中更大的抗審查性。然而,閃電網路在不同的安全模型下運行,這引入了新的安全和隱私挑戰。
16.2. 隱私的定義
「閃電網路是私密的嗎?」這個問題沒有直接的答案。隱私是一個複雜的話題;通常很難精確定義我們所說的隱私是什麼意思,特別是如果你不是隱私研究人員的話。幸運的是,隱私研究人員使用流程來分析和評估系統的隱私特性,我們也可以使用它們!讓我們看看安全研究人員如何通過兩個一般步驟來回答「閃電網路是私密的嗎?」這個問題。
首先,隱私研究人員會定義一個_安全模型_,指定對手能夠做什麼以及其目標是什麼。 然後,他們會描述系統的相關屬性並檢查它是否符合要求。
16.3. 評估隱私的過程
安全模型基於一組基礎的_安全假設_。 在加密系統中,這些假設通常圍繞加密原語的數學屬性,例如密碼、簽名和雜湊函數。 閃電網路的安全假設是協定中使用的 ECDSA 簽名、SHA-256 雜湊函數和其他加密函數在其安全定義範圍內運行。 例如,我們假設實際上不可能找到雜湊函數的原像(和第二原像)。 這允許閃電網路依賴 HTLC 機制(使用雜湊函數的原像)來實現多跳付款的原子性:除了最終接收者之外,沒有人可以揭示付款秘密並解決 HTLC。 我們還假設網路中有一定程度的連通性,即閃電通道形成一個連通圖。因此,可以找到從任何發送者到任何接收者的路徑。最後,我們假設網路訊息在特定超時時間內傳播。
現在我們已經確定了一些基礎假設,讓我們考慮一些可能的對手。
以下是閃電網路中一些可能的對手模型。 「誠實但好奇」的轉發節點可以觀察付款金額、緊鄰的前一個和後一個節點,以及已公告通道及其容量的圖。 連接非常好的節點可以做同樣的事情,但程度更大。 例如,考慮一個流行錢包的開發者維護一個節點,他們的使用者預設連接到該節點。 這個節點將負責路由來自和去往該錢包使用者的大部分付款。 如果多個節點在對手控制下呢? 如果兩個串通的節點恰好在同一支付路徑上,它們會理解他們正在轉發屬於同一付款的 HTLC,因為 HTLC 具有相同的付款雜湊。
|
多部分付款(參見 多部分付款)使使用者能夠混淆他們的付款金額,因為其非均勻的分割大小。 |
閃電網路攻擊者的目標可能是什麼? 資訊安全通常用三個主要屬性來描述:機密性、完整性和可用性。
- 機密性
-
資訊只傳達給預期的接收者。
- 完整性
-
資訊在傳輸過程中不會被篡改。
- 可用性
-
系統大部分時間都在運行。
閃電網路的重要屬性主要圍繞機密性和可用性。一些最重要的保護屬性包括:
-
只有發送者和接收者知道付款金額。
-
沒有人可以將發送者和接收者聯繫起來。
-
誠實的使用者不能被阻止發送和接收付款。
對於每個隱私目標和安全模型,攻擊者成功的概率各不相同。 這個概率取決於各種因素,例如網路的大小和結構。 在其他條件相同的情況下,攻擊小型網路通常比攻擊大型網路更容易成功。 同樣,網路越集中,如果「中心」節點在攻擊者控制下,攻擊者的能力就越強。 當然,必須精確定義集中化一詞才能圍繞它建立安全模型,並且有許多可能的定義來描述網路的集中程度。 最後,作為支付網路,閃電網路依賴於經濟激勵。 費用的大小和結構影響路由演算法,因此可以通過將大多數付款轉發通過攻擊者的節點來幫助攻擊者,或者阻止這種情況發生。
16.4. 匿名集
去匿名化某人意味著什麼? 簡單來說,去匿名化意味著將某些行為與一個人的真實世界身份聯繫起來,例如他們的姓名或實際地址。 在隱私研究中,去匿名化的概念更加細緻。 首先,我們不一定談論的是姓名和地址。 發現某人的 IP 地址或電話號碼也可能被視為去匿名化。 允許將使用者的行為與其先前行為聯繫起來的資訊被稱為_身份_。 其次,去匿名化不是二元的;使用者既不是完全匿名的,也不是完全去匿名的。 相反,隱私研究會將匿名性與匿名集進行比較。
_匿名集_是隱私研究中的核心概念。 它指的是一組身份,從攻擊者的角度來看,給定的行為可能對應於該集合中的任何人。 考慮一個現實生活中的例子。 想像你在城市街道上遇到一個人。 從你的角度來看,他們的匿名集是什麼? 如果你不認識他們,並且沒有任何額外資訊,他們的匿名集大致等於城市人口,包括旅行者。 如果你額外考慮他們的外表,你可能能夠大致估計他們的年齡,並從匿名集中排除明顯比該人年長或年輕的城市居民。 此外,如果你注意到該人使用電子徽章走進 X 公司的辦公室,匿名集就縮小到 X 公司的員工和訪客數量。 最後,你可能會注意到他們用來到達該地點的汽車的車牌號碼。 如果你是一個普通觀察者,這對你沒有太大幫助。 然而,如果你是城市官員並且可以訪問將車牌號碼與姓名匹配的資料庫,你可以將匿名集縮小到只有幾個人:車主和任何可能借用汽車的親密朋友和親戚。
這個例子說明了幾個重要的觀點。 首先,每一條資訊都可能使對手更接近其目標。 可能不需要將匿名集縮小到一個人的大小。 例如,如果對手計劃進行有針對性的阻斷服務(DoS)攻擊並可以攻陷 100 台伺服器,那麼 100 人的匿名集就足夠了。 其次,對手可以交叉關聯來自不同來源的資訊。 即使隱私洩露看起來相對良性,我們永遠不知道它與其他資料來源結合可以達到什麼效果。 最後,特別是在加密設定中,攻擊者總是有暴力搜索的「最後手段」。 加密原語的設計使得實際上不可能猜測諸如私鑰之類的秘密。 然而,每一條資訊都使對手更接近這個目標,在某個時候,它變得可以實現。
就閃電網路而言,去匿名化通常意味著得出付款與由節點 ID 識別的使用者之間的對應關係。 每筆付款可能被分配一個發送者匿名集和一個接收者匿名集。 理想情況下,匿名集由網路的所有使用者組成。 這確保攻擊者沒有任何資訊。 然而,真實網路會洩露資訊,使攻擊者能夠縮小搜索範圍。 匿名集越小,成功去匿名化的機會就越高。
16.5. 閃電網路與比特幣在隱私方面的差異
雖然比特幣網路上的交易不會將真實世界身份與比特幣地址相關聯是事實,但所有交易都以明文廣播並可以被分析。 多家公司已經成立,專門對比特幣和其他加密貨幣的使用者進行去匿名化。
乍看之下,閃電網路比比特幣提供了更好的隱私,因為閃電網路付款不會廣播到整個網路。 雖然這改善了隱私基線,但閃電協定的其他屬性可能使匿名付款更具挑戰性。 例如,較大的付款可能有較少的路由選項。 這可能允許控制資本充足節點的對手路由大多數大額付款並發現付款金額以及可能的其他細節。隨著時間的推移,隨著閃電網路的增長,這可能會變得不那麼嚴重。
閃電網路和比特幣之間的另一個相關區別是閃電節點維護永久身份,而比特幣節點則不是。 老練的比特幣使用者可以輕鬆切換用於接收區塊鏈資料和廣播交易的節點。 相反,閃電網路使用者通過他們用來開設支付通道的節點發送和接收付款。 此外,閃電協定假設路由節點除了節點 ID 之外還公告其 IP 地址。 這在節點 ID 和 IP 地址之間建立了永久連結,考慮到 IP 地址通常是與使用者實際位置相關的匿名攻擊中的中間步驟,並且在大多數情況下與真實世界身份相關,這可能是危險的。 可以通過 Tor 使用閃電網路,但許多節點不使用此功能,這可以從 從節點公告收集的統計資料中看出。
閃電網路使用者在發送付款時,其匿名集中有其鄰居。 具體來說,路由節點只知道緊鄰的前一個和後一個節點。 路由節點不知道其在支付路徑中的直接鄰居是否是最終發送者或接收者。 因此,閃電網路中節點的匿名集大致等於其鄰居(參見 Alice 和 Bob 的匿名集由他們的鄰居組成)。
類似的邏輯適用於付款接收者。 許多使用者只開設少數幾個支付通道,因此限制了他們的匿名集。 此外,在閃電網路中,匿名集是靜態的或至少是緩慢變化的。 相比之下,可以在鏈上 CoinJoin 交易中實現顯著更大的匿名集。 匿名集大於 50 的 CoinJoin 交易相當頻繁。 通常,CoinJoin 交易中的匿名集對應於一組動態變化的使用者。
最後,閃電網路使用者也可能被拒絕服務,其通道被攻擊者阻塞或耗盡。 轉發付款需要資本——一種稀缺資源!——暫時鎖定在路徑上的 HTLC 中。 攻擊者可能發送許多付款但未能完成它們,長時間佔用誠實使用者的資本。 這種攻擊向量在比特幣中不存在(或至少不那麼明顯)。
總之,雖然閃電網路架構的某些方面表明它在隱私方面比比特幣更進一步,但協定的其他屬性可能使隱私攻擊更容易。需要進行徹底的研究來評估閃電網路提供什麼樣的隱私保證並改善現狀。
本章這部分討論的問題總結了 2021 年中期可用的研究。然而,這個研究和開發領域正在快速增長。我們很高興地報告,作者知道目前有多個研究團隊正在研究閃電網路隱私。
現在讓我們回顧一些在學術文獻中描述的對閃電網路隱私的攻擊。
16.6. 對閃電網路的攻擊
最近的研究描述了閃電網路安全性和隱私可能受到損害的各種方式。
16.6.1. 觀察付款金額
隱私保護支付系統的目標之一是對無關各方隱藏付款金額。 閃電網路在這方面是對第一層的改進。 雖然比特幣交易以明文廣播並且任何人都可以觀察到,但閃電網路付款只通過支付路徑上的幾個節點傳輸。 然而,中間節點確實看到付款金額,儘管這個付款金額可能不對應於實際的總付款金額(參見 多部分付款)。 這是在每一跳建立新的 HTLC 所必需的。 中間節點可以獲得付款金額不會構成直接威脅。 然而,_誠實但好奇_的中間節點可能將其用作更大攻擊的一部分。
16.6.2. 連結發送者和接收者
攻擊者可能有興趣了解付款的發送者和/或接收者以揭示某些經濟關係。 這種隱私洩露可能損害抗審查性,因為中間節點可能審查來自或去往某些接收者或發送者的付款。 理想情況下,除了發送者和接收者之外,任何人都不應該能夠將發送者與接收者聯繫起來。
在以下章節中,我們將考慮兩種類型的對手:路徑外對手和路徑上對手。 路徑外對手試圖在不參與付款路由過程的情況下評估付款的發送者和接收者。 路徑上對手可以利用他們通過路由相關付款可能獲得的任何資訊。
首先,考慮_路徑外對手_。 在這種攻擊場景的第一步中,強大的路徑外對手通過探測(在後續章節中描述)推斷每個支付通道中的個別餘額,並在時間 t1 形成網路快照。為簡單起見,讓我們設 t1 等於 12:05。 然後它在稍後的某個時間 t2 再次探測網路,我們將其設為 12:10。然後攻擊者會比較 12:10 和 12:05 的快照,並使用兩個快照之間的差異通過查看已更改的路徑來推斷有關付款的資訊。 在最簡單的情況下,如果在 12:10 和 12:05 之間只發生了一筆付款,對手會觀察到餘額變化相同金額的單一路徑。 因此,對手幾乎了解了這筆付款的所有資訊:發送者、接收者和金額。 如果多條支付路徑重疊,對手需要應用啟發式方法來識別這種重疊並分離付款。
現在,我們將注意力轉向_路徑上對手_。 這樣的對手可能看起來很複雜。 然而,在 2020 年 6 月,研究人員注意到最中心的單一節點 觀察到接近 50% 的所有閃電網路付款,而四個最中心的節點 平均觀察到 72% 的付款。 這些發現強調了路徑上攻擊者模型的相關性。 儘管支付路徑中的中介只知道其後繼者和前驅者,但惡意或誠實但好奇的中介可能會利用幾種洩漏來推斷發送者和接收者。
路徑上對手可以觀察任何路由付款的金額以及時間鎖增量(參見 洋蔥路由)。 因此,對手可以從發送者或接收者的匿名集中排除任何容量低於路由金額的節點。 因此,我們觀察到隱私和付款金額之間的權衡。 通常,付款金額越大,匿名集越小。 我們注意到,這種洩漏可以通過多部分付款或大容量支付通道來最小化。 同樣,具有小時間鎖增量的支付通道可以從支付路徑中排除。 更準確地說,如果付款可能被鎖定的剩餘時間大於轉發節點願意接受的時間,則支付通道不能屬於付款。 這種洩漏可以通過遵循所謂的影子路由來消除。
路徑上對手可以利用的最微妙但最強大的洩漏之一是時序分析。 路徑上對手可以為每筆路由的付款保留日誌,以及節點回應 HTLC 請求所需的時間。 在開始攻擊之前,攻擊者通過向閃電網路中的每個節點發送請求來了解其延遲特性。 自然地,這可以幫助確定對手在支付路徑中的精確位置。 更重要的是,正如最近所展示的,攻擊者可以使用基於時間的估計器從一組可能的發送者和接收者中成功確定付款的發送者和接收者。
最後,重要的是要認識到可能存在未知或未研究的洩漏,這些洩漏可能有助於去匿名化嘗試。例如,因為不同的閃電錢包應用不同的路由演算法,即使知道應用的路由演算法也可以幫助排除某些節點成為付款的發送者和/或接收者。
16.6.3. 揭示通道餘額(探測)
閃電通道的餘額應該出於隱私和效率原因而被隱藏。 閃電節點只知道其相鄰通道的餘額。 協定沒有提供查詢遠端通道餘額的標準方式。
然而,攻擊者可以在_探測攻擊_中揭示遠端通道的餘額。 在資訊安全中,探測是指向目標系統發送請求並根據收到的回應對其私有狀態得出結論的技術。
閃電通道容易受到探測。 回想一下,標準的閃電付款從接收者建立隨機付款秘密並將其雜湊發送給發送者開始。 請注意,對於中間節點,所有雜湊看起來都是隨機的。 沒有辦法判斷雜湊是否對應於真正的秘密還是隨機生成的。
探測攻擊按以下方式進行。 假設攻擊者 Mallory 想要揭示 Alice 在 Alice 和 Bob 之間公開通道中的餘額。 假設該通道的總容量為 100 萬聰。 Alice 的餘額可能是從零到 100 萬聰之間的任何數值(準確地說,由於通道儲備金,估計會更緊一些,但為了簡單起見,我們在這裡不考慮它)。 Mallory 與 Alice 開設一個 100 萬聰的通道,並使用_隨機數_作為付款雜湊通過 Alice 向 Bob 發送 50 萬聰。 當然,這個數字不對應於任何已知的付款秘密。 因此,付款將失敗。 問題是:它究竟會如何失敗?
有兩種情況。 如果 Alice 在她與 Bob 的通道上有超過 50 萬聰,她會轉發付款。 Bob 解密付款洋蔥並意識到付款是給他的。 他查找他本地的付款秘密儲存並搜索與付款雜湊對應的原像,但沒有找到。 按照協定,Bob 向 Alice 返回「未知付款雜湊」錯誤,Alice 將其轉發給 Mallory。 因此,Mallory 知道如果付款雜湊是真實的,付款_本可以成功_。 因此,Mallory 可以將她對 Alice 餘額的估計從「零到 100 萬之間」更新為「50 萬到 100 萬之間」。 另一種情況發生在 Alice 的餘額低於 50 萬聰時。 在這種情況下,Alice 無法轉發付款並向 Mallory 返回「餘額不足」錯誤。 Mallory 將她的估計從「零到 100 萬之間」更新為「零到 50 萬之間」。
請注意,在任何情況下,Mallory 的估計在僅僅一次探測後就變得精確了兩倍! 她可以繼續探測,選擇下一個探測金額使其將當前估計區間分成兩半。 這種眾所周知的搜索技術稱為_二分搜索_。 使用二分搜索,探測次數與所需精度成_對數_關係。 例如,要在 100 萬聰的通道中精確到單個聰獲得 Alice 的餘額,Mallory 只需執行 log2 (1,000,000) ≈ 20 次探測。 如果一次探測需要 3 秒,一個通道可以在大約一分鐘內被精確探測!
通道探測可以變得更加高效。 在最簡單的變體中,Mallory 直接連接到她想要探測的通道。 是否可以在不與其端點之一開設通道的情況下探測通道? 想像一下,Mallory 現在想要探測 Bob 和 Charlie 之間的通道,但不想開設另一個通道,這需要支付鏈上費用並等待資金交易的確認。 相反,Mallory 重複使用她現有的到 Alice 的通道,並沿著路線 Mallory → Alice → Bob → Charlie 發送探測。 Mallory 可以像以前一樣解釋「未知付款雜湊」錯誤:探測已到達目的地;因此,路線上的所有通道都有足夠的餘額來轉發它。 但是,如果 Mallory 收到「餘額不足」錯誤怎麼辦? 這是否意味著 Alice 和 Bob 之間或 Bob 和 Charlie 之間的餘額不足?
在當前的閃電協定中,錯誤訊息不僅報告發生了_哪個_錯誤,還報告它發生在_哪裡_。 因此,通過更仔細的錯誤處理,Mallory 現在知道哪個通道失敗了。 如果這是目標通道,她更新她的估計;如果不是,她選擇另一條到目標通道的路線。 除了目標通道之外,她甚至獲得了有關中間通道餘額的_額外_資訊。
探測攻擊可以進一步用於連結發送者和接收者,如前一節所述。
此時,你可能會問:為什麼閃電網路在保護其使用者的私有資料方面做得如此糟糕? 不向發送者揭示付款為什麼以及在哪裡失敗不是更好嗎? 確實,這可能是一種潛在的對策,但它有顯著的缺點。 閃電網路必須在隱私和效率之間取得仔細的平衡。 請記住,常規節點不知道遠端通道中的餘額分佈。 因此,付款可能(而且經常)因為中間跳的餘額不足而失敗。 錯誤訊息允許發送者在構建另一條路線時排除失敗的通道。 一個流行的閃電錢包甚至在內部執行探測以檢查構建的路線是否真的可以處理付款。
還有其他潛在的對策來防止通道探測。 首先,攻擊者很難針對未公告的通道。 其次,實作即時(JIT)路由的節點可能不太容易受到攻擊。 最後,由於多部分付款使容量不足的問題不那麼嚴重,協定開發者可能會考慮隱藏一些錯誤細節而不損害效率。
16.6.4. 阻斷服務
當資源公開可用時,攻擊者可能會嘗試通過執行阻斷服務(DoS)攻擊使該資源不可用。 通常,這是通過攻擊者用請求轟炸資源來實現的,這些請求與合法查詢無法區分。 這些攻擊很少導致目標遭受經濟損失,除了其服務中斷的機會成本,僅僅是為了使目標感到困擾。
典型的 DoS 攻擊緩解措施需要對請求進行身份驗證,以將合法使用者與惡意使用者分開。這些緩解措施對常規使用者產生的成本微不足道,但對於大規模發起請求的攻擊者來說將充當足夠的威懾。 反阻斷服務措施在網際網路上隨處可見——網站應用速率限制以確保沒有單一使用者可以消耗其伺服器的所有注意力,電影評論網站需要登入身份驗證以阻止憤怒的 r/prequelmemes(Reddit 群組)成員,資料服務銷售 API 金鑰以限制查詢數量。
比特幣中的 DoS
在比特幣中,節點用於中繼交易的頻寬和它們以記憶體池形式提供給網路的空間是公開可用的資源。 網路上的任何節點都可以通過發送有效交易來消耗頻寬和記憶體池空間。 如果這筆交易在有效區塊中被挖掘,他們將支付交易費用,這增加了使用這些共享網路資源的成本。
過去,比特幣網路曾面臨 DoS 攻擊嘗試,攻擊者用低費用交易向網路發送垃圾郵件。 由於交易費用低,許多這些交易沒有被礦工選中,因此攻擊者可以在不支付費用的情況下消耗網路資源。 為了解決這個問題,設定了最低交易中繼費用,該費用設定了節點傳播交易所需的閾值費用。 這一措施在很大程度上確保了消耗網路資源的交易最終將支付其鏈上費用。 最低中繼費用對常規使用者來說是可以接受的,但如果攻擊者試圖向網路發送垃圾郵件,將在經濟上受到傷害。 雖然一些交易可能無法在高費用環境中進入有效區塊,但這些措施在很大程度上有效地阻止了這類垃圾郵件。
閃電網路中的 DoS
與比特幣類似,閃電網路對其公共資源的使用收取費用,但在這種情況下,資源是公共通道,費用以路由費用的形式出現。 通過節點路由付款以換取費用的能力為網路提供了巨大的可擴展性優勢——不直接連接的節點仍然可以進行交易——但這是以暴露必須保護免受 DoS 攻擊的公共資源為代價的。
當閃電節點代表你轉發付款時,它使用資料和付款頻寬來更新其承諾交易,付款金額被保留在其通道餘額中,直到它被結算或失敗。 在成功的付款中,這是可以接受的,因為節點最終會獲得其費用。 失敗的付款在當前協定中不收取費用。 這允許節點無成本地通過任何通道路由失敗的付款。 這對合法使用者來說很好,他們不想為失敗的嘗試付費,但也允許攻擊者無成本地消耗節點的資源——就像比特幣上那些永遠不會支付礦工費用的低費用交易一樣。
在撰寫本文時,lightning-dev 郵件列表上正在 討論如何最好地解決這個問題。
已知的 DoS 攻擊
公共閃電網路通道上有兩種已知的 DoS 攻擊,它們使目標通道或一組目標通道無法使用。 這兩種攻擊都涉及通過公共通道路由付款,然後保持它們直到超時,從而最大化攻擊的持續時間。 不支付費用而使付款失敗的要求相當容易滿足,因為惡意節點可以簡單地將付款重新路由給自己。 在沒有失敗付款費用的情況下,攻擊者唯一的成本是開設通道以發送這些付款的鏈上成本,在低費用環境中這可以是微不足道的。
16.6.5. 承諾阻塞
閃電節點使用非對稱承諾交易更新其共享狀態,在這些交易上添加和移除 HTLC 以促進付款。 每一方在承諾交易中一次最多限制為 483 個 HTLC。 通道阻塞攻擊允許攻擊者通過目標通道路由 483 筆付款並保持它們直到超時來使通道無法使用。
應該注意的是,規範中選擇這個限制是為了確保所有 HTLC 都可以在 單一懲罰交易中被清掃。 雖然這個限制_可能_會增加,但交易仍然受到區塊大小的限制,因此可用插槽的數量可能仍然有限。
16.6.6. 通道流動性鎖定
通道流動性鎖定攻擊與通道阻塞攻擊類似,因為它通過通道路由付款並保持它們以使通道無法使用。 這種攻擊不是鎖定通道承諾上的插槽,而是通過目標通道路由大額 HTLC,消耗通道的所有可用頻寬。 這種攻擊的資本承諾高於承諾阻塞攻擊,因為攻擊節點需要更多資金來通過目標路由失敗的付款。
16.7. 跨層去匿名化
電腦網路通常是分層的。 分層允許關注點分離並使整個系統易於管理。 如果設計網站需要理解所有 TCP/IP 堆疊直到光纖電纜中位元的物理編碼,那就沒人能設計網站了。 每一層都應該以乾淨的方式為上一層提供功能。 理想情況下,上層應該將下層視為黑盒。 然而,在現實中,實作並不完美,細節會_洩漏_到上層。 這就是洩漏抽象的問題。
在閃電網路的背景下,閃電協定依賴於比特幣協定和閃電 P2P 網路。 到目前為止,我們只考慮了閃電網路單獨提供的隱私保證。 然而,建立和關閉支付通道本質上是在比特幣區塊鏈上執行的。 因此,為了完整分析閃電網路的隱私規定,需要考慮使用者可能與之互動的技術堆疊的每一層。 具體來說,試圖去匿名化閃電網路使用者的對手可以並且將使用鏈下和鏈上資料來聚類或連結閃電節點與相應的比特幣地址。
在跨層背景下,試圖去匿名化閃電網路使用者的攻擊者可能有各種目標:
-
聚類同一使用者擁有的比特幣地址(第一層)。我們稱這些為比特幣實體。
-
聚類同一使用者擁有的閃電節點(第二層)。
-
明確地將閃電節點集合與控制它們的比特幣實體集合聯繫起來。
有幾種啟發式方法和使用模式允許對手聚類同一閃電網路使用者擁有的比特幣地址和閃電節點。 此外,這些聚類可以使用其他強大的跨層連結啟發式方法跨層連結。 最後一種類型的啟發式方法,跨層連結技術,強調了需要對隱私有整體視角。具體來說,我們必須在兩層一起的背景下考慮隱私。
16.7.1. 鏈上比特幣實體聚類
閃電網路區塊鏈互動永久反映在比特幣實體圖中。 即使通道關閉,攻擊者也可以觀察哪個地址為通道提供了資金,以及關閉後代幣花費到哪裡。 對於這個分析,讓我們考慮四個獨立的實體。 開設通道導致從_來源實體_到_資金實體_的貨幣流動;關閉通道導致從_結算實體_到_目標實體_的流動。
在 2021 年初,https://arxiv.org/pdf/2007.00764.pdf[Romiti 等人]確定了四種允許聚類這些實體的啟發式方法。 其中兩種捕獲某些洩漏的資金行為,兩種描述洩漏的結算行為。
- 星形啟發式(資金)
-
如果一個組件包含一個將資金轉發給一個或多個資金實體的來源實體,這些資金實體很可能由同一使用者控制。
- 蛇形啟發式(資金)
-
如果一個組件包含一個將資金轉發給一個或多個實體的來源實體,這些實體本身被用作來源和資金實體,那麼所有這些實體很可能由同一使用者控制。
- 收集器啟發式(結算)
-
如果一個組件包含一個從一個或多個結算實體接收資金的目標實體,這些結算實體很可能由同一使用者控制。
- 代理啟發式(結算)
-
如果一個組件包含一個從一個或多個實體接收資金的目標實體,這些實體本身被用作結算和目標實體,那麼這些實體很可能由同一使用者控制。
值得指出的是,這些啟發式方法可能產生誤報。 例如,如果多個不相關使用者的交易在 CoinJoin 交易中合併,那麼星形或代理啟發式可能產生誤報。 如果使用者從 CoinJoin 交易為支付通道提供資金,這可能發生。 另一個潛在的誤報來源可能是,如果聚類的地址由服務(例如交易所)控制或代表其使用者(託管錢包)控制,則實體可能代表多個使用者。 然而,這些誤報可以有效地被過濾掉。
對策
如果資金交易的輸出不被重複使用來開設其他通道,蛇形啟發式就不起作用。 如果使用者避免從單一外部來源為通道提供資金並避免在單一外部目標實體中收集資金,其他啟發式方法將不會產生任何顯著結果。
16.7.2. 鏈下閃電節點聚類
閃電節點公告別名,例如 LNBig.com。 別名可以提高系統的可用性。 然而,使用者傾向於為自己的不同節點使用相似的別名。 例如,LNBig.com Billing 很可能與別名為 LNBig.com 的節點由同一使用者擁有。 基於這一觀察,可以通過應用節點別名來聚類閃電節點。 具體來說,如果閃電節點的別名相對於某些字串相似度指標相似,則將它們聚類到單一地址。
另一種聚類閃電節點的方法是應用其 IP 或 Tor 地址。 如果相同的 IP 或 Tor 地址對應於不同的閃電節點,這些節點很可能由同一使用者控制。
對策
為了更多隱私,別名應該彼此充分不同。 雖然對於希望在閃電網路中擁有入站通道的節點來說,公開公告 IP 地址可能是不可避免的,但如果每個節點的客戶端託管在不同的服務提供商上,因此使用不同的 IP 地址,則可以減輕同一使用者跨節點的可連結性。
16.7.3. 跨層連結:閃電節點和比特幣實體
將閃電節點與比特幣實體關聯是一種嚴重的隱私洩露,由於大多數閃電節點公開暴露其 IP 地址而加劇。 通常,IP 地址可以被視為使用者的唯一識別碼。 兩種廣泛觀察到的行為模式揭示了閃電節點和比特幣實體之間的連結:
- 代幣重複使用
-
每當使用者關閉支付通道時,他們會取回相應的代幣。然而,許多使用者在開設新通道時重複使用這些代幣。 這些代幣可以有效地連結到一個共同的閃電節點。
- 實體重複使用
-
通常,使用者從屬於同一比特幣實體的比特幣地址為其支付通道提供資金。
如果使用者擁有多個未聚類的地址或使用多個錢包與閃電網路互動,這些跨層連結演算法可能會被挫敗。
比特幣實體可能被去匿名化的事實說明了同時考慮兩層隱私而不是一次一層是多麼重要。
16.8. 閃電圖
閃電網路,顧名思義,是一個支付通道的點對點網路。 因此,它的許多屬性(隱私、健壯性、連通性、路由效率)受其網路性質的影響和特徵化。
在本節中,我們從網路科學的角度討論和分析閃電網路。 我們特別感興趣的是理解閃電通道圖、其健壯性、連通性和其他重要特性。
16.8.1. 閃電圖在現實中是什麼樣子?
人們可能預期閃電網路是一個隨機圖,其中邊在節點之間隨機形成。 如果是這種情況,那麼閃電網路的度分佈將遵循高斯正態分佈。 特別是,大多數節點將具有大致相同的度,我們不會期望具有異常大度的節點。 這是因為正態分佈對於分佈平均值周圍區間之外的值呈指數級下降。 隨機圖的描繪(正如我們在 截至 2021 年 7 月閃電網路部分的視覺化 中看到的)看起來像網狀網路拓撲。 它看起來是去中心化和非層級的:每個節點似乎具有同等的重要性。 此外,隨機圖具有較大的直徑。 特別是,在這樣的圖中路由是具有挑戰性的,因為任意兩個節點之間的最短路徑相當長。
然而,形成鮮明對比的是,閃電圖完全不同。
今天的閃電圖
閃電網路是一個金融網路。 因此,網路的增長和形成也受到經濟激勵的影響。 每當節點加入閃電網路時,它可能希望最大化與其他節點的連通性以增加其路由效率。這種現象稱為優先連接。 這些經濟激勵導致了一個與隨機圖根本不同的網路。
根據公開宣布通道的快照,閃電網路的度分佈遵循冪律函數。 在這樣的圖中,絕大多數節點與其他節點的連接非常少,而只有少數節點有許多連接。 在高層次上,這種圖拓撲類似於星形:網路有一個連接良好的核心和一個鬆散連接的外圍。 具有冪律度分佈的網路也稱為無標度網路。 這種拓撲有利於高效路由付款,但容易受到某些基於拓撲的攻擊。
基於拓撲的攻擊
對手可能想要破壞閃電網路,並可能決定其目標是將整個網路拆分成許多較小的組件,使得在整個網路中進行付款路由實際上不可能。 一個不那麼雄心勃勃但仍然惡意和嚴重的目標可能只是攻陷某些網路節點。 這種破壞可能發生在節點層面或邊層面。
讓我們假設對手可以攻陷閃電網路中的任何節點。 例如,它可以通過分散式阻斷服務(DDoS)攻擊來攻擊它們或通過任何方式使它們無法運行。 事實證明,如果對手隨機選擇節點,那麼像閃電網路這樣的無標度網路對節點移除攻擊是健壯的。 這是因為隨機節點位於外圍,連接數量較少,因此在網路連通性中扮演的角色可以忽略不計。 然而,如果對手更加謹慎,它可以針對連接最好的節點。 不出所料,閃電網路和其他無標度網路對有針對性的節點移除攻擊_不_健壯。
另一方面,對手可能更加隱蔽。 幾種基於拓撲的攻擊針對單一節點或單一支付通道。 例如,對手可能有興趣故意耗盡某個支付通道的容量。 更一般地說,對手可以耗盡節點的所有出站容量以將其從路由市場中淘汰。 這可以通過路由通過受害節點的付款輕鬆獲得,金額等於每個支付通道的出站容量。 完成這種所謂的節點隔離攻擊後,受害者除非收到付款或重新平衡其通道,否則無法再發送或路由付款。
總之,即使是設計上,也可以從可路由的閃電網路中移除邊和節點。 然而,根據所使用的攻擊向量,對手可能必須提供更多或更少的資源來執行攻擊。
閃電網路的時間性
閃電網路是一個動態變化的、無需許可的網路。 節點可以自由加入或離開網路,它們可以隨時開設和建立支付通道。 因此,閃電圖的單一靜態快照是具有誤導性的。我們需要考慮網路的時間性和不斷變化的性質。目前,閃電圖在節點和支付通道數量方面正在增長。 其有效直徑也在縮小;也就是說,節點彼此越來越近,正如我們在 閃電網路在節點、通道和鎖定容量方面的穩定增長(截至 2021 年 9 月) 中看到的。
在社交網路中,三角形閉合行為很常見。 具體來說,在節點代表人、友誼代表邊的圖中,預期圖中會出現三角形。 在這種情況下,三角形代表三個人之間的成對友誼。 例如,如果 Alice 認識 Bob,Bob 認識 Charlie,那麼在某個時候 Bob 很可能會將 Alice 介紹給 Charlie。 然而,這種行為在閃電網路中會很奇怪。 節點根本沒有動力去閉合三角形,因為它們本可以直接路由付款而不是開設新的支付通道。 令人驚訝的是,三角形閉合在閃電網路中是一種常見做法。 在實作多部分付款之前,三角形的數量一直在穩定增長。 考慮到節點本可以通過三角形的兩邊路由付款而不是開設第三個通道,這是違反直覺和令人驚訝的。 這可能意味著路由效率低下激勵使用者閉合三角形而不是依賴路由。 希望多部分付款將有助於提高付款路由的效率。
16.9. 閃電網路中的中心化
評估圖中節點中心性的常用指標是其_介數中心性_。中心點支配度是從介數中心性派生的指標,用於評估網路的中心性。 有關中心點支配度的精確定義,請參閱 Freeman 的工作。
網路的中心點支配度越大,網路就越中心化。 我們可以觀察到閃電網路具有比同等大小的隨機圖(Erdős-Rényi 圖)或無標度圖(Barabási-Albert 圖)更大的中心點支配度(即更中心化)。
總的來說,我們對閃電通道圖動態性質的理解相當有限。 分析多部分付款等協定變更如何影響閃電網路的動態是有意義的。 更深入地探索閃電圖的時間性質將是有益的。
16.10. 經濟激勵和圖結構
閃電圖是自發形成的,節點基於共同利益相互連接。 因此,激勵驅動圖的發展。 讓我們看看一些相關的激勵:
-
理性激勵:
-
節點建立通道來發送、接收和路由付款(賺取費用)。
-
是什麼使通道更可能在兩個理性行事的節點之間建立?
-
-
利他激勵:
-
節點「為了網路的利益」建立通道。
-
雖然我們不應該將安全假設建立在利他主義之上,但在某種程度上,利他行為驅動比特幣(接受入站連接、提供區塊)。
-
它在閃電網路中扮演什麼角色?
-
在閃電網路的早期階段,許多節點運營者聲稱賺取的路由費用無法補償來自流動性鎖定的機會成本。這表明運營節點可能主要是由「為了網路的利益」的利他激勵驅動的。 如果閃電網路有顯著更大的流量或者路由費用市場出現,這可能會在未來改變。 另一方面,如果節點希望優化其路由費用,它會最小化到每個其他節點的平均最短路徑長度。 換句話說,追求利潤的節點會嘗試將自己定位在通道圖的_中心_或接近 中心。
16.11. 使用者保護隱私的實用建議
我們仍處於閃電網路的早期階段。 本章列出的許多問題可能會隨著它的成熟和增長而得到解決。 與此同時,你可以採取一些措施來保護你的節點免受惡意使用者的攻擊;像更新節點運行的預設參數這樣簡單的事情就可以大大加強你的節點。
16.12. 未公告通道
如果你打算使用閃電網路在你控制的節點和錢包之間發送和接收資金,並且對路由其他使用者的付款不感興趣,那麼幾乎不需要向網路的其餘部分公告你的通道。 你可以在你運行完整節點的桌面電腦和你運行閃電錢包的手機之間開設一個通道,並簡單地放棄 閃電網路運作原理 中討論的通道公告。 這些有時被稱為「私有」通道;然而,更正確的說法是稱它們為「未公告」通道,因為它們並不是嚴格私有的。
未公告通道不會為網路的其餘部分所知,通常不會用於路由其他使用者的付款。 如果其他節點知道它們,它們仍然可以用於路由付款;例如,發票可能包含建議具有未公告通道的路徑的路由提示。 然而,假設你只與自己開設了未公告通道,你確實獲得了一些隱私。 由於你沒有將通道暴露給網路,你降低了節點遭受阻斷服務攻擊的風險。 你還可以更容易地管理這個通道的容量,因為它只會用於直接接收或發送到你的節點。
與已知的、經常交易的一方開設未公告通道也有優勢。 例如,如果 Alice 和 Bob 經常用比特幣玩撲克,他們可以開設一個通道來來回發送獎金。 在正常情況下,這個通道不會用於路由其他使用者的付款或收取費用。 由於通道不會為網路的其餘部分所知,Alice 和 Bob 之間的任何付款都無法通過追蹤通道路由容量的變化來推斷。 這為 Alice 和 Bob 提供了一些隱私;然而,如果其中一人決定讓其他使用者知道該通道,例如將其包含在發票的路由提示中,那麼這種隱私就會喪失。
還應該注意的是,要開設未公告通道,必須在比特幣區塊鏈上進行公開交易。 因此,如果惡意方監控區塊鏈的通道開設交易並嘗試將它們與網路上的通道匹配,則可以推斷通道的存在和大小。 此外,當通道關閉時,一旦它被提交到比特幣區塊鏈,通道的最終餘額將被公開。 然而,由於開設和承諾交易是假名的,將其連接回 Alice 或 Bob 不會是一件簡單的事。 此外,2021 年的 Taproot 升級使得難以區分通道開設和關閉交易與其他特定類型的比特幣交易。 因此,雖然未公告通道並不完全私有,但如果謹慎使用,它們確實提供了一些隱私優勢。
16.13. 路由考慮
如 阻斷服務 所述,開設公共通道的節點會面臨其通道受到一系列攻擊的風險。 雖然協定層面的緩解措施正在開發中,但節點可以採取許多步驟來保護其公共通道免受阻斷服務攻擊:
- 最小 HTLC 大小
-
在通道開設時,你的節點可以設定它將接受的最小 HTLC 大小。 設定更高的值確保你的每個可用通道插槽不會被非常小的付款佔用。
- 速率限制
-
許多節點實作允許節點動態接受或拒絕通過你的節點轉發的 HTLC。 自訂速率限制器的一些有用準則如下:
-
限制單一對等節點可能消耗的承諾插槽數量
-
監控單一對等節點的失敗率,如果其失敗突然激增則進行速率限制
-
- 影子通道
-
希望向單一目標開設大型通道的節點可以改為向目標開設單一公共通道,並通過進一步的私有通道(稱為 影子通道)支援它。這些通道仍然可以用於路由,但不會向潛在攻擊者公告。
16.13.1. 接受通道
目前,閃電節點難以引導入站流動性。雖然有一些付費解決方案來獲取入站流動性,如交換服務、通道市場和來自已知中心的付費通道開設服務,但許多節點將樂於接受任何看起來合法的通道開設請求以增加其入站流動性。
回到比特幣的背景,這可以與 Bitcoin Core 對待其入站和出站連接的方式進行比較,出於擔心節點可能被日蝕攻擊而區別對待。 如果一個節點向你的比特幣節點開設入站連接,你無法知道發起者是隨機選擇你還是有惡意意圖地專門針對你的節點。 你的出站連接不需要如此懷疑,因為節點要麼是從許多潛在對等節點的池中隨機選擇的,要麼你是故意手動連接到該對等節點的。
閃電網路也可以這樣說。 當你開設通道時,這是有意為之的,但當遠端方向你的節點開設通道時,你無法知道這個通道是否會被用來攻擊你的節點。 正如幾篇論文所指出的,啟動節點並向目標開設通道的相對較低成本是使攻擊容易的重要因素之一。 如果你接受入站通道,明智的做法是對你接受入站通道的節點設定一些限制。 許多實作暴露了通道接受掛鉤,允許你根據自己的偏好定制通道接受策略。
接受和拒絕通道的問題是一個哲學問題。 如果我們最終得到一個新節點無法參與因為無法開設任何通道的閃電網路會怎樣? 我們的建議不是設定一個你將接受通道的「超級中心」的排他列表,而是以適合你風險偏好的方式接受通道。
一些潛在的策略是:
- 無風險
-
不接受任何入站通道。
- 低風險
-
僅接受來自你以前成功開設通道的已知節點集的通道。
- 中等風險
-
僅接受來自在圖中存在較長時間並擁有一些長期通道的節點的通道。
- 較高風險
-
接受任何入站通道,並實施 路由考慮 中描述的緩解措施。
16.14. 結論
總之,隱私和安全是細緻複雜的話題,雖然許多研究人員和開發人員正在尋找全網路範圍的改進,但參與網路的每個人都了解他們可以做什麼來保護自己的隱私並在個別節點層面提高安全性是很重要的。
16.15. 參考文獻和延伸閱讀
在本章中,我們使用了許多來自正在進行的閃電網路安全研究的參考文獻。你可以在以下按主題列出的列表中找到這些有用的文章和論文。
隱私和探測攻擊
-
Jordi Herrera-Joancomartí 等人. "On the Difficulty of Hiding the Balance of Lightning Network Channels". Asia CCS '19: Proceedings of the 2019 ACM Asia Conference on Computer and Communications Security(2019 年 7 月):602–612。
-
Utz Nisslmueller 等人. "Toward Active and Passive Confidentiality Attacks on Cryptocurrency Off-Chain Networks." arXiv 預印本,https://arxiv.org/abs/2003.00003[](2020)。
-
Sergei Tikhomirov 等人. "Probing Channel Balances in the Lightning Network." arXiv 預印本,https://arxiv.org/abs/2004.00333[](2020)。
-
George Kappos 等人. "An Empirical Analysis of Privacy in the Lightning Network." arXiv 預印本,https://arxiv.org/abs/2003.12470[](2021)。
擁塞攻擊
-
Ayelet Mizrahi 和 Aviv Zohar. "Congestion Attacks in Payment Channel Networks." arXiv 預印本,https://arxiv.org/abs/2002.06564[](2020)。
路由考慮
-
Marty Bent,Joost Jager 訪談,Tales from the Crypt,播客音訊,2020 年 10 月 2 日,https://anchor.fm/tales-from-the-crypt/episodes/197-Joost-Jager-ekghn6[]。