閃電錢包託管模式光譜

作者:VLS

來源:https://vls.tech/posts/lightning-custody-models/

摘要

  • 閃電網絡錢包和閃電網絡服務商(LSP)的現狀,究竟什麼是真正的 “非託管”。
  • 在比特幣 Layer 1 上,持有密鑰就意味著自主保管。而在閃電通道中,即使你持有密鑰,如果你的簽名器會盲目地許可支付請求而不驗證,節點被攻陷也可能導致你資金丟失 —— 這是共享託管模式。
  • 盲目簽名既不是非託管,也不安全。它創造了兩個故障點(節點和簽名器)。只要任何一個被攻陷了,資金都會丟失。
  • “VLS(帶驗證的閃電通道簽名器)” 為分離私鑰和節點提供了真正非託管的解決方案。節點被攻陷也不會導致資金丟失。

閃電錢包的承諾與問題

你仔細地研究和挑選 “非託管的” 閃電錢包,因為你相信 “無私鑰,即無幣”。你精心地保護你的種子詞

直到有一天,你起床後發現自己的通道已經關閉了,應當屬於你的比特幣被髮送到了你不知道的地址。而程序的日誌顯示你的簽名器授權了所有東西。你的比特幣就這麼飛走了。你的 “自主保管的” 錢包就這麼欺騙了你。

閃電錢包承諾要在即時支付上實現比特幣的自治原則。但有些地方出了問題。

你的錢包軟件可能會自稱是 “非託管的”, 因為 “你自己持有私鑰”,然而,如果你的簽名器會盲目地許可請求而不驗證,那到底是誰控制著你的錢?

這就是盲目簽名的真相,是閃電錢包的骯髒秘密。

什麼是閃電錢包裡的 “盲目簽名”?

閃電錢包裡有兩個模塊:

  • 節點,負責提議狀態變更(增減餘額);
  • 簽名器,決定這些更新是否可以安全地簽名(許可)。

在一個妥當的非託管裝置中,簽名器會根據協議的規則和用戶條款,在簽名之前驗證每一次請求。

而在 “盲目簽名” 模式中,閃電錢包的私鑰本身與節點隔離,然而,簽名器會盲目地許可節點的請求,也就是完全不驗證請求的內容。這是因為,盲目簽名器可以在格式正確的交易上簽名,但並沒有足夠的信息來分辨安全的請求和不安全的請求。

將一個盲目簽名器標榜為 “非託管的”,就好像一家銀行說自己是非託管的,因為它不知道你的銀行卡口令。不設驗證的簽名器不是控制器,而是威脅。

用戶有權知道真相:盲目簽名模式是共享託管,它實際上比一些託管解決方案還要危險一些。多年來,閃電錢包技術公司一直將盲目簽名的解決方案偽裝成 “非託管” 或 “自主託管”。

硬件錢包測試

設想一個比特幣硬件錢包,它會簽名任何交易而不檢查找零地址、手續費和支付目的地。你會管這樣的錢包叫 “非託管” 錢包嗎?你會信任它?

這就是閃電錢包的盲目簽名模式。

為什麼盲目簽名比熱錢包還要糟糕?

純託管:1 個攻擊點(託管商)盲目簽名:2 個攻擊點(節點 + 盲目簽名器)熱錢包:1 個攻擊點(設備)VLS:1 個加強後的攻擊點(帶有驗證程序的簽名器)

盲目簽名,讓你可能受到攻擊的界面倍增(字面意義上的倍增),而且依然是託管的。只要節點或者簽名器被攻陷,你就可能丟失資金。我們專門指出這一點,是因為用戶有權利知道真相。

熱錢包的用戶至少知道自己在承擔風險。盲目簽名的用戶卻因為 “自己控制著私鑰” 而誤以為自己是安全的。

可能的攻擊形式

每一種爆破都從某個點開始。以下是漏洞如何轉化為盜竊:

場景 1:供應鏈 -> 攻陷節點 -> 惡意關閉通道

攻擊者修改節點的依賴項,獲得節點的控制權 ->

節點請求:“關閉通道,將資金髮送到攻擊者的地址” ->

盲目簽名器:無法驗證地址 -> 許可 ->

資金被盜

場景 2 :社會工程學攻擊 -> LSP 訪問權 -> 陳舊狀態

攻擊者假裝成用戶,向服務支持團隊聲稱自己需要 “緊急修復” ->

獲得節點訪問權,廣播舊的通道狀態 ->

盲目簽名器:無法識別這是陳舊狀態 -> 許可 ->

懲罰交易取走所有資金

場景 3:內部威脅 -> 手續費操縱

惡意僱員或已被攻陷的基礎設施 ->

節點為每一筆交易設置超量的手續費 ->

盲目簽名器:無法驗證數額 -> 許可 ->

資金被緩慢吸乾

帶有驗證程序的簽名器將拒絕所有這些請求,而盲目簽名器會同意所有這些請求

為什麼閃電錢包的託管模式與比特幣錢包的不同

在比特幣 Layer 1 上,自主保管是非常直接的。你的硬件錢包(冷錢包)通過檢查地址、手續費和找零地址來檢查每一筆交易,然後才簽名。這種驗證程序與對私鑰的控制相配合,使之成為自主保管的。你的私鑰舊意味著你的錢幣。

比特幣的冷錢包模式無法直接移植到閃電錢包中,因為:

  • 通道狀態會持續更新:與比特幣錢包中地址保持靜態不同。
  • HTLC 有截止時間:錯過這個截止時間意味著丟失資金。
  • 懲罰需要快速響應:如果對手廣播過時的通道狀態,己方必須立即響應。
  • 路由支付需要在亞秒級時間內完成簽名:冷錢包太慢了。

這些要求意味著,早期的閃電錢包實現都要求你運行自己的節點並使用熱私鑰(即兩者是合在一起的),這對用戶來說太複雜,也有風險。

LSP:創造了新問題的解決方案

“閃電網絡服務供應商(LSP)” 是為著解決閃電錢包的易用性危機而出現的。運行一個閃電節點需要專門的技術知識、持續監視、同蓋茨管理和流動性提供。LSP 可以為用戶處理所有這些複雜性,也確實值得讚譽。這是一個巨大的用戶體驗升級。

然而,為了使用 LSP,同時保持 “非託管”,整個行業採用了盲目簽名模式。這個補丁很簡單:由 LSP 來運行你的節點,而你保管你的私鑰。有私鑰、就有幣,不是這樣的嗎?

根本不是。當你的私鑰會盲目簽名 LSP 的節點請求而不加驗證時,你實際上是在信任 LSP 不會偷你的錢。這不是自主保管,充其量是共享保管。

諷刺之處在於:LSP 讓閃電錢包變得可用,而盲目簽名又讓它變得不安全,比熱錢包和託管服務都要不安全。你得到的是沒有控制桿的複雜性。

好消息是:LSP 的便利不是非付出這樣的代價不可。帶驗證的簽名就可以解決這個問題。

譯者注:文中所述的這種對 LSP 的用法,應該只是其中一種,甚至可能不是主要的用法。

VLS 如何修復這個問題

“VLS(帶驗證的閃電錢包簽名器)” 實現了每個閃電錢包簽名器都應該做到的事:在簽名之前先驗證。

在簽名任何東西之前,VLS 都會檢查:

協議兼容性

  • 這是一個陳舊的狀態嗎?是 -> 拒絕
  • HTLC 的餘額匹配嗎? 是 -> 通過
  • 交易的手續費數額合理嗎? -> 檢查限制
  • 支付目的地得到過許可嗎?是 -> 通過

用戶條款

  • 支付數額在限制之內
  • 關閉通道的支付地址在許可列表上
  • 阻擋不常見的使用模式
  • 大額交易需要額外許可

獨立驗證

  • 專門驗證區塊鏈狀態
  • 獨立跟蹤通道狀態
  • 監視時間鎖過期
  • 交叉檢查節點聲明

VLS 在行動

盲目簽名器VLS
節點“關閉通道,將資金髮送到地址 X”“關閉通道,將資金髮送到地址 X”
簽名器動作“收到!簽名!”“X 是不是白名單上的地址?交易表示最新狀態嗎?數額對不對得上?”
結果資金可能被盜惡意請求被阻攔,資金安全

證明這真的有用:Blockstream Greenlight 錢包

Greenlight 證明了 VLS 可以大規模應用:

  • 架構:Blocsteam 運行節點,用戶通過 VLS 控制驗證
  • 跟蹤記錄:沒有資金因為節點被攻陷而丟失
  • 安全性:節點被攻陷也無法盜竊資金
  • 性能:亞秒級驗證,不影響用戶體驗
  • 用戶:數千名用戶用上了真正的自主保管

這種模式證明了你可以獲得 LSP 的便利性,並且在託管上無需犧牲。這裡更加詳細了講解了為什麼 Greenlight 選擇了 VLS 以及他們的集成經驗。

閃電錢包的四種託管模式

瞭解你用的閃電錢包落在光譜的哪個位置,是極為關鍵的:

1. 完全託管

你持有:空氣

他們持有:私鑰 + 節點

保管程度:0%(他們控制著所有東西)

攻擊界面:1 個點(託管商)

案例:絕大部分交易所錢包

適合用戶:初次嘗試用閃電網絡來買杯咖啡的用戶

2. 共享託管:盲目簽名

你持有:私鑰,但它盲目簽名

他們持有:請求籤名的節點

保管程度:大約 50%,共享託管:雙方都需要對方,但是節點可以欺騙簽名器

攻擊界面:2 個點(節點 或者 簽名器 被攻陷 = 資金丟失)

案例:許多 “非託管的” LSP 錢包

事實檢查:比完全託管更糟 —— 更復雜、更多攻擊界面、依然需要信任

3. 自主保管的熱錢包

你持有:私鑰 + 節點,放在同一個設備上

他們持有:無

保管程度:100%(你控制著所有東西)

攻擊界面:1 個點(你的設備)

案例:Zeus(使用本地節點模式)、Phoenix(自主保管)

適合用戶:習慣熱錢包風險的專業用戶

4. 使用帶驗證簽名器(VLS)的自主保管錢包

你持有:私鑰 + 驗證邏輯

他們持有:節點(但無法偷盜)

保管程度:100%(節點可以提議,但只有你才能許可)

攻擊界面:1 個加強點(帶有驗證邏輯的簽名器)

案例:Blockstream 的 Greenlight,使用 VLS

適合用戶:任何投入具有重要意義資金數量的用戶

現狀:誰是真正的非託管?

以下是關於閃電錢包和 LSP 在託管模式光譜具體位置的表格。你可以看看多少 “非託管” 的服務實際上使用了盲目簽名模式。營銷口號不一定跟技術事實相匹配!

(表格請見原文,此處不附。)

如何檢查你當前使用的錢包是什麼模式

詢問你的閃電錢包供應商以下幾個問題:

問題 1:“如果你的 服務器/節點 今天被劫持了,攻擊者能否偷走我的錢?”

“不能,因為驗證程序保護了它” -> 帶有驗證的簽名器的自主保管錢包

“不能,因為私鑰在你手上” -> 盲目簽名錢包警告

“是的,你會丟錢” -> 至少他們是誠實的

問題 2:“簽名器在簽名之前,會執行哪些具體的檢查?”

詳細的驗證清單 -> 真正的自主保管

“它會簽名你授權的東西” -> 盲目簽名

含糊其辭的安全口號 -> 盲目簽名

問題 3:“我的通道關閉時,剩餘的餘額可以發送到任何地址嗎?”

“只能發送到你限定的地址” -> 帶有驗證

“將發送到你簽了名的任何地址” -> 盲目簽名

為你的資金選擇正確的託管模式

買一杯咖啡的錢

  • 完全託管錢包也沒啥 —— 簡單,而且在信任模式上是誠實的
  • 避免盲目簽名模式 —— 這是不必要的複雜性

日常開支

  • 熱錢包,如果你懂技術的話
  • 如果你不懂技術,選擇高質量的託管 LSP
  • 明確規避盲目簽名的風險

不小的錢

  • 只使用帶有驗證簽名器(比如 VLS)的自主保管錢包
  • 熱錢包也可以,只要你確定自己知道相關的風險
  • 永遠不要使用盲目簽名錢包

企業用戶/交易所保證金

  • VLS 是唯一負責人的選擇

除非錢的數目小到你丟了也無所謂,否則就不要使用盲目簽名模式。它會讓攻擊界面倍增,比其它選擇都更危險。

呼籲開發者行動:不要發佈盲目簽名器

使用哪種裝置?

  • 我是一家企業或者 app 的開發者,只想要一個安全的閃電錢包裝置,不想做繁重的基礎設施

    -> 使用一個由 VLS 賦能的帶設施非託管供應商Blockstream 的 Greenlight 或者 Breez SDK

  • 我希望控制我自己的閃電節點,但不希望從頭開發所有東西

    -> 使用 CLN + VLS ;安全又靈活,無需完全定製的插件。

  • 我希望完全控制權以及深入的集成靈活性

    -> 使用 LDK + VLS ;適合定製化的部署。

- - -

使用哪種閃電錢包技術棧?

選擇你的起點:

  • CLN + VLS

    使用我們的 vls-hsmd 插件來轉發來自 Core Lightning 節點的簽名請求。

  • LDK + VLS

    通過 vls-proxy 庫,集成到你的基於 LDK 的節點。

  • Docker 沙盒

    使用 Docker 運行 CLN + VLS + Bitcoind 。非常適合測試。

  • LND 或 Eclair

    尚未支持 VLS 。請幫忙向 LND 和 Eclair 請求支持 VLS:

沒有技術上的藉口再使用盲目簽名器了。VLS 是 Apache 許可的開源軟件,而且準備好進入生產環境了。

你的行動:要求真正的自主保管

閃電錢包生態已經將持有私鑰與控制資金混淆了太久了。盲目簽名是帶有額外步驟的共享託管,並非自主保管。

VLS 證明了,真正的自主保管閃電錢包是可以做到的。不要再找藉口,不要再用盲目簽名模式。

前進的道路

閃電網絡的未來取決於我們對待託管模式的誠實。我們請求:

用戶

  1. 理解你真正信任的東西
  2. 選擇與你的風險偏好相匹配的託管模式
  3. 向錢包供應商要求透明性
  4. 用你的聰投票:支持真正的自主保管

開發者

  1. 別再把盲目簽名叫做 “非託管”
  2. 實現驗證邏輯,或者在託管模式上誠實
  3. 在真正的安全性上競爭,而不是打營銷戰
  4. 區分出真正的非託管產品

閃電網絡生態

  1. 將帶驗證簽名確定為行業最低標準
  2. 指出盲目簽名的實質:共享託管
  3. 用戶將真正的自主保管放在優先地位的項目
  4. 完全淘汰盲目簽名

現在你知道真相了:那麼你會怎麼做呢?

  • 今天:使用我們的問題來檢查你當前使用的錢包
  • 這周:如有需要,移動資金到帶有驗證的非託管錢包
  • 未來:要求透明性,支持真正的解決方案。

沒有驗證,你的私鑰就不控制你的錢幣。請做出明智的選擇。

(完)

相关赛道:
來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
87
收藏
17
評論