作者:Shew,仙壤
在Web3圈子裡,私鑰管理是生死攸關的大事,一旦錢包私鑰被盜或丟失,數百萬美元的資產都會在頃刻間化為烏有。然而,絕大多數人都習慣採用單點式的私鑰管理,這就如同把所有雞蛋放在一個籃子裡,隨時都可能因踩中釣魚鏈接而把所有資產送給黑客。
為了應對這一麻煩,區塊鏈領域曾出現過各種各樣的解決方案。從多籤錢包到MPC,再到DeepSafe項目方提出的CRVA,每一次技術進步都在為資產管理開闢新的路徑。本文將探討上述三種資管方案的原理、特點和適用場景,幫助讀者選擇最適合自己的道路。
多籤錢包:及格,但不優秀
多籤錢包的理念源於一種樸素的智慧:不要把所有權限集中在一個地方。這種思想在現實中早已得到廣泛應用,比如三權分立,以及董事會投票。
同理,在Web3當中,多籤錢包會創建多道獨立的密鑰來分散風險。最常見的是"M-of-N"模式,比如在"2-of-3"的設置中,系統總共生成三道私鑰,但只要其中任意兩道私鑰都生成簽名,就可以讓指定賬戶執行交易。
這種設計提供了一定的容錯能力——即便丟失了某一道私鑰,資產仍然安全可控。如果你有多臺用於存儲密鑰的獨立設備,多籤方案會比較可靠。
一般來說,多籤錢包在技術上分為兩類,一類是常規的多籤,一般使用鏈上智能合約或公鏈底層的配套組件來實現,往往並不依賴於特定的密碼學工具。還有一種是依賴於特殊密碼學算法的多籤錢包,安全性取決於具體的算法,有時可以完全無需鏈上合約的參與。下面我們將分別對兩種方案展開討論。
常規多籤方案代表:Safe錢包與比特幣Taproot
Safe錢包作為目前最受歡迎的多籤方案之一,採用常規的Solidity智能合約實現多重簽名。在Safe錢包的架構中,每個多籤參與者都控制一道獨立的密鑰,而鏈上智能合約充當"仲裁者",只有收集到足夠數量的有效簽名時,合約才會批准讓多籤關聯賬戶執行交易。
這種方法的優勢在於透明度和可驗證性,所有的多籤規則都被明確編碼在智能合約中,任何人都可以審計代碼邏輯。此外,用戶還可以為多籤賬戶添加模塊,使其具備更豐富的功能,如限制每一筆交易的資金上限。然而,這種透明性也意味著多籤錢包的細則在區塊鏈上是完全公開的,可能會暴露用戶的資產管理結構。
除了Safe錢包這種以太坊生態內的知名多籤方案,比特幣網絡內也存在使用BTC腳本構建的多籤錢包,比如基於OP_CHECKMULTISIG
操作碼構建的方案。這個操作碼可以校驗UTXO解鎖腳本內包含的簽名數量是否滿足要求。
值得注意的是,上述介紹的常規多籤算法都支持 "M-of-N",但在後文中介紹的基於特定密碼學算法的多籤,有些僅支持 "M-of-M" 模式,即用戶要提供所有密鑰才可以進行交易。
密碼學層面的多籤實現
在密碼學層面,可以通過特定的密碼學算法來實現多籤驗證的效果,而這種方案有時可以擺脫鏈上智能合約的參與。我們往往會進行如下分類:
1.多籤算法(Multisignatures)。這種簽名算法只支持 "M-of-M" 模式,用戶必須一次性提交所有密鑰對應的簽名
2.閾值簽名算法(Threshold Signatures)。這種算法支持 "M-of-N" 模式,但一般來說構建難度相比於上面說的多籤算法更復雜
3.密鑰分割算法(Secret sharing)。在這種算法的設計中,用戶可以將單一私鑰分為多份,當用戶收集了足夠的私鑰碎片後,就可以恢復原有的私鑰並生成簽名
比特幣在隔離見證升級(SegWit)後引入了schnorr算法,天然可以實現多籤驗證。而以太坊共識層使用了BLS閾值算法實現了PoS體系內最核心的投票功能。
這種單純依靠密碼學算法的多籤方案有更好的兼容性,因為它可以不依賴於智能合約,比如用純鏈下方案來實現。
純密碼學多籤方案生成的簽名,與傳統的單一私鑰簽名在格式上完全相同,可以被任何支持標準簽名格式的區塊鏈接受,所以具備很強的通用性。但是基於特定密碼學的多籤算法較為複雜,實現非常困難,使用的時候往往也需要依賴於一些特定設施。
多籤技術的現實挑戰
儘管常見的多籤錢包顯著提高了資產安全性,但也帶來了新的風險。最明顯的問題是操作複雜性增加:每次交易都需要多方協調和確認,這在對時間敏感的場景中成為了重大障礙。
更嚴重的是,多籤錢包往往將風險從私鑰管理轉移到了簽名協調與驗證環節。正如最近發生的Bybit盜竊案,攻擊者通過在Safe依賴的AWS設施中植入釣魚的Safe前端界面代碼,成功欺騙了Bybit的多籤管理者使其簽署釣魚交易。這說明,即便使用了較為先進的多籤技術,前端界面和簽名驗證與協調環節的安全性仍然漏洞重重。
此外,並非所有區塊鏈使用的簽名算法都原生支持多籤,比如以太坊執行層使用的secp256k1曲線上就較少存在多籤算法,限制了多籤錢包在不同生態中的應用。對於需要通過智能合約實現多籤的網絡,還存在著合約漏洞和升級風險等額外的考量。
MPC:革命性突破
如果說多籤錢包是通過分散私鑰來提高安全性,那麼MPC(多方安全計算)技術則更進一步,它從根本上消除了完整私鑰的存在。在MPC的世界裡,完整的私鑰從來不會在任何單一地點出現,甚至在密鑰生成的過程中也是如此。同時,MPC往往支持更高級的功能,比如刷新私鑰或調整權限。
在加密貨幣的應用場景中,MPC的工作流程展現了獨特的優勢。在密鑰生成階段,多個參與方各自生成隨機數,然後通過複雜的密碼學協議,每一方都計算出屬於自己的"密鑰片段"。這些份額單獨來看沒有任何意義,但它們在數學上相互關聯,可以共同對應到一個特定的公鑰和錢包地址。
當需要針對某筆鏈上操作進行簽名時,各個參與方可以用自己的密鑰片段生成"部分簽名",然後通過MPC協議將這些部分簽名巧妙組合起來。最終生成的簽名與單一私鑰的簽名在格式上完全相同,外界觀測者甚至看不出這是MPC設施生成的簽名。
這種設計的革命性在於,整個過程中完整的私鑰從未在任何地方出現過。即使攻擊者成功入侵了某個參與方的系統,他們也無法獲得完整的私鑰,因為這道私鑰本質上並未存在於任何地方。
MPC與多籤的本質區別
雖然MPC和多籤都涉及多方參與,但兩者在本質上存在著根本性差異。從外界觀察者來看,MPC生成的交易與普通的單籤交易無法區分,這為用戶提供了更好的隱私。
這種差異還體現在兼容性方面。多籤錢包需要區塊鏈網絡的原生支持或依賴智能合約,這限制了它們在某些地方的使用。而MPC生成的簽名使用標準的ECDSA格式,可以在任何支持這種簽名算法的地方使用,包括比特幣、以太坊以及各種DeFi平臺中。
MPC技術還提供了更大的靈活性來調整安全參數。在傳統多籤錢包中,改變簽名閾值或參與方數量通常需要創建新的錢包地址,這會帶來風險。(當然,基於智能合約的多籤錢包可以方便的修改參與方及其權限),而在MPC系統中,這些參數的調整可以更靈活更簡潔化的完成,不需要改變鏈上賬戶和合約代碼,為資產管理提供了更大的便利。
MPC面臨的挑戰
然而,MPC雖然比普通多籤更優越,但還是存在相應挑戰。首先是實現上的複雜性。MPC協議涉及複雜的密碼學計算和多方通信,這使得系統的實現和維護更困難。任何bug都可能導致嚴重的安全漏洞。2025年2月,Nikolaos Makriyannis等人就發現了在MPC錢包內盜取其密鑰的方法。
性能開銷是另一個難題。MPC協議需要多方之間進行復雜的計算和數據交換,比傳統的單籤操作消耗更多的計算資源和網絡帶寬。雖然這種開銷在大多數情況下可以接受,但在某些對性能要求極高的場景中可能成為限制因素。此外,MPC系統仍需要各參與方的在線協調來完成簽名。雖然這種協調對用戶來說是透明的,但在網絡連接不穩定或者某些參與方離線的情況下,可能會影響系統的可用性。
此外,MPC仍然無法確保去中心化,2023年的Multichain一案中,21個參與MPC計算的節點均為一人控制,是典型的女巫攻擊。此事足以證明,單純表面上的幾十個節點並不能提供較高的去中心化保障。
DeepSafe:構建下一代安全驗證網絡
在多籤和MPC技術都已經相對成熟的背景下,DeepSafe團隊提出了一個更具前瞻性的解決方案:CRVA(加密隨機驗證代理)。DeepSafe的創新在於,它不是簡單地替代現有的簽名技術,而是在現有方案基礎上構建了額外的安全驗證層。
CRVA的多因素驗證
DeepSafe的核心思想是"雙重保險":用戶可以繼續使用他們熟悉的錢包解決方案,如Safe錢包,當一筆完成了多籤的交易被提交到鏈上後,會自動提交給CRVA網絡,進行額外驗證,類似於支付寶的2FA多因素驗證。
在這種架構中,CRVA充當了守門員,會根據用戶預先設置的規則來審核每一筆交易。比如單筆交易的限額、目標地址白名單、交易頻率等限制,如果有異常情況隨時可以中斷交易。
這種2FA多因素驗證的優勢在於,即使多簽過程被操縱(如Bybit事件中的前端釣魚攻擊),作為保險的CRVA仍然可以根據預設規則拒絕風險交易,保護用戶的資產安全。
傳統MPC方案基礎上的技術升級
針對傳統MPC資管方案的不足,DeepSafe的CRVA方案作出了大量改進。首先,CRVA網絡節點採用資產質押的准入形式,達到約500個節點後才會正式啟動主網,按照估算,這些節點質押的資產將長期維持在幾千萬美元或更高;
其次,為了提高MPC/TSS計算的效率,CRVA會通過抽籤算法隨機抽選節點,比如每隔半小時抽10個節點,由它們作為驗證人,驗證用戶請求是否應通過,然後生成對應的門限簽名予以放行。為了防止內部串謀或外部黑客攻擊,CRVA的抽籤算法採用原創的環狀VRF,結合ZK來隱藏被抽中者的身份,讓外界無法直接觀測被抽選者。
當然,僅做到這種程度還不夠,雖然外界不知道有誰被選中,但此時被抽中者本人知道,所以仍然有串謀的路徑。為了進一步杜絕串謀,CRVA的所有節點都要把核心代碼運行在TEE硬件環境內,相當於把核心工作放在黑箱裡進行。這樣一來,任何人都無法得知自己是否被抽中,除非他能夠破解TEE可信硬件,當然根據目前的技術條件,這極難做到。
上面講到的是DeepSafe的CRVA方案基本思路,在實際的工作流程中,CRVA網絡內的節點間要進行大量的廣播通信與信息交換,其具體的流程如下:
1.所有節點在進入CRVA網絡前,要先在鏈上質押資產,留下一個公鑰作為註冊信息。這個公鑰又稱為“永久公鑰”。
2.每過1小時,CRVA網絡會隨機挑選幾個節點。但在此之前,所有候選人都要在本地生成一次性的“臨時公鑰”,同時生成ZKP,證明“臨時公鑰”與鏈上記錄的“永久公鑰”有關聯;換句話說,每個人都要通過ZK證明自己存在於候選人名單中,但又不透露自己是哪個;
3.“臨時公鑰”的作用在於隱私保護。如果直接從“永久公鑰”集合中抽籤,公佈結果時,大家會直接知道哪些人當選。如果大家只暴露一次性的“臨時公鑰”,再從“臨時公鑰”集合中選出幾個人,你最多知道自己中籤,但不知道其他中籤的臨時公鑰對應著誰。
4.為了進一步防止身份洩露,CRVA打算讓你自己都不知道自己的“臨時公鑰”是啥。臨時公鑰的生成過程在節點的TEE環境內完成,運行TEE的你無法看到裡面發生了啥。
5.然後在TEE內把臨時公鑰明文加密為“亂碼”後再發給外界,只有特定的Relayer節點可以還原。當然,還原流程也在Relayer節點的TEE環境裡完成,Relayer並不知道這些臨時公鑰對應著哪些候選人。
6.Relayer還原出全部“臨時公鑰”後,把它們統一歸集並提交給鏈上的VRF函數,從中抽選出中籤者,由這些人驗證用戶前端發來的交易請求,然後根據驗證結果生成門限簽名,最後再提交至鏈上。(需要注意,這裡的Relayer其實也是隱藏身份且定期抽選的)
可能有人要問,既然每個節點都不知道自己是否被抽中,那工作還怎麼進行?其實前面提到,每個人都會在本地TEE環境內生成“臨時公鑰”,抽籤結果出來後,我們直接把名單廣播出去,每個人只要把名單傳入TEE,在裡面核對自己是否被選中即可。
DeepSafe這套方案的核心在於,幾乎所有的重要活動都在TEE硬件內進行,從TEE外部無法觀測到發生了什麼。每一個節點都不知道被選中的驗證人有誰,防止了串通作惡,並大幅度增加了外部攻擊的成本。要攻擊基於DeepSafe的CRVA委員會,理論上要攻擊整個CRVA網絡,加之每個節點都有TEE保護,攻擊難度大幅攀升。
而對於CRVA作惡的情況,由於CRVA是一套自動化運行的節點網絡系統,只要其初始啟動時的代碼中不包含惡意邏輯,就不會出現CRVA主動拒絕配合用戶的情況,所以基本可以忽略;
如果CRVA因停電、洪災等不可抗力導致節點大量停機,根據上述方案中提及的流程,用戶依然有辦法把資產安全提走。這裡面的信任假設就在於,我們信任CRVA足夠去中心化,不會主動作惡(理由前面已經充分說明)。
總結
Web3簽名技術的發展歷程展現了人類在數字安全領域的不懈探索。從最初的單一私鑰,到多籤錢包,再到MPC,以及CRVA等新興方案,每一次進步都在為數字資產的安全管理開闢新的可能。
然而,技術的進步並不意味著風險的消除。每一種新技術在解決既有問題的同時,也可能引入新的複雜性和風險點。從Bybit事件中我們看到,即使使用了先進的多籤技術,攻擊者仍然可以通過社會工程和供應鏈攻擊來繞過技術防護。這提醒我們,技術解決方案必須與良好的操作實踐和安全意識相結合。
最終,數字資產安全不僅僅是技術問題,更是一個系統性的挑戰。無論是多籤還是MPC,或是CRVA,都只是針對潛在風險的嘗試性解決方案,隨著區塊鏈行業的發展,未來仍需推陳出新,尋找更安全更免信任的出路。