
原文:https://blog.kchr.de/one-metadata-to-rule-them-all-or-how-to-implement-offline-signers/
作者:Parity開發者Bastian Köcher
編譯:OneBlock+
2025 年2 月21 日晚,去中心化交易平台Bybit 遭遇了金融史上最大攻擊,價值14.6 億美元的數位資產被盜。這次安全事件再次引發了業界對數位資產安全架構的深度思考。儘管採用了業內公認的高安全標準—— 3/3 多重簽名與硬體冷錢包,Bybit 仍然因為"盲簽名" (Blind Signing) 的固有風險而遭受損失。
本文將透過分析Bybit 事件的技術細節,探討波卡(Polkadot)生態系統如何透過創新的元資料解決方案,從根本解決盲簽問題,並為整個區塊鏈產業提供有益的借鏡。

Bybit 事件分析:社會工程攻擊與盲簽漏洞
事件回顧:冷錢包被攻破過程
Bybit 採用了加密貨幣產業公認的高安全性資產保管方案,即Safe 多簽錢包與冷錢包的結合。 Bybit 設定了3/3 簽章門檻,這表示必須三位私鑰持有者同時授權,才能進行資產轉移操作。儘管採取了這些嚴格的安全措施,駭客仍然透過社會工程攻擊突破了防線。
攻擊者先是成功入侵了三位簽署者的電腦系統,隨後進行長期觀察,詳細記錄簽署者的操作習慣、內部溝通內容以及轉帳流程。在充分觀察一段時間後,駭客瞄準了冷錢包向熱錢包轉移資金的周期性過程,並提前部署了帶有後門的惡意合約。當簽署者在進行日常操作時,攻擊者悄悄將正常的交易請求替換為他們提前部署好的惡意合約。簽名者在簽名時並未察覺到這一點,因為他們看到的是一筆普通的轉帳交易,但實際上,他們簽署的是一個讓駭客接管錢包控制權的交易。
事件本質:盲簽問題
事件的核心問題在於盲簽名:簽名者無法在離線簽名設備上真實看到他們實際簽署的交易內容。駭客透過控制簽名者的電腦,使他們看到的是假交易訊息,但簽名卻用於真實的惡意交易。分析表明,攻擊者僅透過一次偽造簽名攻擊就獲取了錢包的所有者權限。這強烈暗示不只一台設備被攻陷,駭客很可能已在Bybit 內網潛伏多時,掌握了足夠的內部情報來精確模擬正常交易流程和時機。
盲簽的危險性在於它為攻擊者提供了一個繞過傳統安全措施的途徑。它完全割裂了使用者意圖與實際執行的交易,創造了一個難以察覺的欺騙空間,亟需從根本解決。

波卡生態的安全簽名機制:解決盲簽問題
波卡生態系統在解決盲簽問題上進行了深入的技術創新,提出了一套完整的安全機制,確保"你看到的就是你簽署的"這一核心安全問題得到有效解決。透過元資料的應用、離線簽章驗證以及鏈上安全機制,波卡能夠有效避免類似Bybit 事件中的攻擊風險,為使用者提供安全、透明的簽章流程。
有關元資料的詳細技術文檔,請參考:
👉https://polkadot-fellows.github.io/RFCs/approved/0078-merkleized-metadata.html
什麼是元數據?
波卡生態系統提供了一個用於實現平行鏈/匯總層的軟體開發工具包(SDK),該工具包將業務邏輯(運行時) 與節點端分離開來。由於每條鏈的功能各不相同,這些運行時(Runtime) 也有所不同,它們暴露不同的交易、事件和儲存項,並對餘額使用不同的資料類型。為了讓去中心化應用(DApp) 開發者能夠與這些不同的鏈進行交互,運行時會暴露關於自身的元資料。
這些元資料包含了豐富的信息,甚至可以用來訓練AI 自動生成用戶介面並與區塊鏈進行互動。元資料本質上是鏈上功能的詳細說明書,它讓系統能夠將複雜的交易資料解碼為人類可讀的形式,從而使用戶能夠理解他們正在批准的內容。這解決了盲簽的根本問題,即用戶在不知道自己實際簽署內容的情況下進行簽名。

元資料應用的技術挑戰
將元資料應用於離線簽章設備面臨一系列技術挑戰,最突出的就是元資料的大小問題。隨著區塊鏈功能的不斷擴展,每條鏈的元資料很容易成長到數兆位元組,相較之下,像Ledger 這樣的離線簽章設備只有幾千字節的主內存,無法載入整個元資料來解碼交易。其他解決方案如Polkadot Vault 需要透過QR 碼傳輸整個元資料到設備,這個過程可能需要幾分鐘,使用者體驗並不理想。
為解決這個問題,波卡生態系統對元資料進行了精簡和分塊處理。首先移除了關於儲存條目、事件等資訊以減少元資料的大小。然後在交易層級對元資料進行分塊,因為解碼交易Y 時不需要交易X 的元資料。這種分塊方式使得可以逐塊串流資料來解碼交易,向使用者展示後再繼續處理下一塊,直到整個交易被解碼並展示給使用者。這對於Polkadot 中可能變得相當大的批量交易特別重要。
如何安全離線簽名?
離線設備如何確保從線上錢包接收的元資料塊是正確的?如果離線設備無法驗證這一點,線上錢包可能會建構欺騙性的資料區塊,使離線設備向使用者顯示為交易Y,而在鏈上實際執行為交易X,這正是Bybit 事件中發生的安全漏洞。
波卡生態系統透過將所有元資料塊放入一個默克爾樹中來解決這個問題。每個區塊的根哈希(元資料根哈希)代表了整個元數據,離線簽名器透過驗證每個區塊的證明,確保收到的資料是正確的。此外,離線簽章器將元資料根雜湊包含在交易的簽章資料中,這不僅簽署了交易本身,還簽署了元資料的雜湊。交易在提交前會先與運行時的已知元資料根哈希進行比對,確保交易的合法性。
這種方式使得離線設備能夠在不信任線上錢包的情況下,獨立驗證交易資料的準確性。只有當元資料根哈希匹配時,交易才會被執行,確保了「你看到的就是你簽署的」這一核心安全原則。

比較Bybit 事件:波卡方案如何防止類似攻擊
如果Bybit 採用波卡的安全機制,駭客的攻擊將無法得逞。首先,波卡的離線簽名系統能夠清楚呈現交易的真實內容,即使駭客控制了簽名者的電腦。簽署者能夠明確看到交易的真實意圖,例如「授予合約控制權限」 而不是誤導性的「普通轉帳」 交易類型,從而有效避免了簽署惡意合約。
其次,波卡的方案有效防止了元資料欺騙。駭客無法提供虛假的元資料解碼訊息,因為鏈上驗證機制確保了元資料的完整性與準確性。這種機制有效地阻止了駭客利用偽造元資料實施攻擊。
最終,波卡的全流程安全架構形成了堅實的防線,從交易發起到鏈上執行的每個環節都經過嚴格的安全驗證。任何環節的異常都會被自動偵測並阻止,從根本上杜絕了類似Bybit 遭遇的攻擊可能性。
其他生態系的解決方案
Cosmos 生態系統採用了一種基於交易文本表示的方式來解決盲簽問題,他們透過標準化一些print 功能,使得用戶可以以清晰的文字形式查看交易內容。然而,這種方法的缺點是:每個網路節點在處理交易時都需要產生文字表示。考慮到區塊鏈網路中節點數量龐大,所有節點都必須重複這項操作,這無疑是一種資源浪費。

與此不同,Sovereign SDK 則借鑒了Polkadot 生態系統的解決方案,開發了一個通用錢包,能夠讓任何Sovereign SDK 應用程式自動展示格式良好且易於理解的交易內容,而應用開發者無需額外操作。由於特定應用鏈的API 集(即「呼叫訊息」)是有限的,他們為每種呼叫訊息產生了特定的人類可讀格式。透過這種方式,Sovereign SDK 的Snaps、錢包以及硬體錢包(作為受信任的二進位)能夠顯示不受信任前端提供的交易內容。
此外,錢包在簽章資料中包含了用於顯示交易的模式哈希,而每條鏈在接受交易前都會驗證該哈希。這意味著,鏈本身可以拒絕那些未正確向用戶展示的交易,從根本上保障了交易的安全性。
未來改進計畫:提升使用者體驗
雖然波卡生態系統目前的實現已經有效解決了盲簽的核心安全問題,但團隊仍計劃進一步優化用戶體驗,使系統更加用戶友好。
目前的限制在於,離線簽章設備顯示的資訊使用與鏈上函數相同的技術命名,且不提供必要的上下文資訊。這導致一般使用者難以理解交易內容— 例如,使用者無法直觀分辨某個數值是代表餘額還是其他類型的整數。要正確解讀這些交易訊息,用戶需要具備一定的技術背景。
針對這個問題,波卡團隊正在討論的未來升級將包含更豐富的上下文資訊。這意味著開發者將能夠向離線簽署設備明確表達參數的具體含義,如"parameter_a是一個Balance 類型","parameter_b是另一種資料類型"等。
此外,理想的使用者體驗應包括為每個函數附加解釋性文本,以幫助使用者理解該操作的具體作用。雖然目前系統中已有文件功能,但這些文件主要是針對開發者而非一般使用者設計。未來的改進將更注重為最終用戶提供清晰、易懂的操作說明,讓非技術人員也能輕鬆理解他們正在授權的交易內容。

結語
波卡生態系統的元資料解決方案從根本上解決了盲簽問題,為區塊鏈交易提供了更安全、透明的簽章機制。這項創新不僅有效防止了類似Bybit 的攻擊,還為用戶提供了易於理解的操作介面,確保用戶簽署的交易與實際執行的內容一致。透過將元資料驗證整合到交易簽章和執行過程中,波卡建立了一個端到端的安全體系,為區塊鏈資產安全樹立了新標竿。
隨著未來更多用戶友善性改進的實施,波卡的方案將進一步降低使用門檻,讓非技術用戶也能安全地參與區塊鏈交易,從而更好地防範社會工程學攻擊的風險。
