免責聲明:本文旨在傳遞更多市場信息,不構成任何投資建議。文章僅代表作者觀點,不代表火星財經官方立場。

小編:記得關注哦

來源:ECN以太坊中國

來源 | vitalik.ca

作者 | Vitalik

編譯:ECN以太坊中國

感謝 Argent 的 Itamar Lesuisse 和 Loopring 的 Daniel Wang 提供反饋。

加密貨幣和區塊鏈應用對普通用戶來說,其可用的最大挑戰之一無疑是安全性:我們如何防止用戶的資金丟失或被盜?丟失和被盜是不可忽視的問題,致使無辜的區塊鏈用戶損失數千美元,甚至在某些情況下丟失其大部分淨資產。

多年來,有許多解決方案被提出:紙錢包、硬件錢包和多籤錢包 (我個人一度的最愛)。實際上這些方案確實顯著改善了安全性,但都存在各種缺陷:防盜和防丟保護功能可能遠遠低於實際需要,或是操作的不便利導致極低的採用率。但是最近出現了一個更好的替代方案:一種稱爲“社交恢復式錢包” (social recovery wallet) 的新型智能合約錢包。與以前的選擇相比,這類錢包可以提供更高的安全性和更好的可用性,但距離輕鬆且廣泛的部署,還有一段路要走。這篇文章將介紹什麼是社交恢復式錢包、其重要性何在,以及我們應該如何在整個生態系統中對其進行更廣泛的採用。

錢包安全性問題非同小可

可以說從區塊鏈行業發軔之初,錢包安全性問題就一直困擾着生態系統。在2011年,當時比特幣幾乎是當時唯一的加密貨幣,丟失和被盜事件頻發。在建立以太坊之前,我作爲 Bitcoin Magazine 的聯合創始人和作者撰寫了一篇文章詳細介紹當時加密貨幣中發生的攻擊、損失和盜竊事件。

這是其中一個例子:

昨晚約 PDT 時間晚上九點,我點擊了一個連接進入 CoinChat[.]freetzi[.]com,並被提示運行 Java。我這麼做了(我以爲這是一個正常的聊天室),隨後什麼也沒發生。我關閉了窗口,沒有多想。大約 14 分鐘後我打開了我的 bitcoin-qt 錢包,然後看見了一個並未經我批准的交易,幾乎將整個錢包的資產都轉移到了另一個錢包……

這位用戶丟失了 2.07 個 BTC ,當時價值 300 美元,現在已經超過 7 萬美元。還有一個例子:

2011 年 6 月,Bitcointalk 成員 allinvain 丟失了 25000 個 BTC (時值 50 萬美元),起因是一個未知的入侵者以某種方式直接訪問了他的電腦。攻擊者能直接獲取 allinvain 的 wallet.dat 文件,然後迅速將錢包洗劫一空——從 allinvain 的電腦發送交易,或是在自己的電腦中上傳 wallet.dat 文件並將其清空。

按照現在的價值來算,其價值近一百萬美元。但盜竊並不是唯一的問題,還有私鑰丟失的例子。來看看 Stefan Thomas 的故事:

比特幣開發者 Stefan Thomas 的錢包有三處備份:一個加密的 USB 設備、一個 Dropbox 帳戶和一個 Virtualbox 虛擬機。他設法抹除了其中兩個,但是忘記了第三個備份的密碼,永遠失去了 7000 BTC (當時價值 12.5 萬美元) 的訪問權限。Thomas 回應說:“ 從那時起,我一直致力於開發更好的客戶端。”

根據比特幣生態系統的一份分析,每天可能有 1500 BTC 丟失,超過比特幣用戶交易手續費的十倍,隨着時間推移丟失的比特幣總量佔其總供應量的 20%。這些故事和數字都指向同一個不可避免的事實:錢包安全性問題的重要性非同小可,不應該被低估。

我們很容易得出錢包安全性容易被低估的社會和心理原因:人們不希望在總是具有批判性的公衆面前顯得愚蠢或粗心,結果其資金往往容易被盜。而丟失資金就更是如此,因爲普遍 (儘管在我看來非常不正確) 的看法是“要怪只能怪自己”。但現實是,包括區塊鏈在內的數字技術,其目標在於使人們能更輕鬆地參與複雜事務,而無需付出極大的腦力勞動或是活在擔心失誤的恐懼中。如果一個生態系統解決丟失和被盜問題的方式僅僅是 12 個步驟的教程、不太安全的對策和不那麼偶然的諷刺性的“對您的損失感到抱歉”的回應,其將很難被廣泛採用。

因此,旨在降低資金丟失和被盜風險的方案開始被採用,這些方案不需要加密貨幣用戶消耗過多精力和時間來維護個人資產安全性,並且對於整個行業來說也是非常有價值的。

光靠硬件錢包還不夠

硬件錢包經常被宣揚爲加密貨幣資產管理的最佳技術。硬件錢包是一種專用硬件設備,可以連接到用戶的計算機或手機 (例如通過 USB),並且包含專用芯片,該芯片只能生成私鑰和簽署交易。用戶能在計算機或手機上發起交易,並且必須在硬件錢包中確認後才能發送。私鑰保留在硬件錢包中,因此,攻擊計算機或手機中無法將資金洗劫一空。

硬件錢包是一個意義重大的進步,可以避免上述的 Java 聊天室案例,但硬件錢包也不是盡善盡美的。在我看來硬件錢包有兩大問題:

➤ 供應鏈攻擊:如果你購買了一個硬件錢包,就相當於你信任其生產過程中的許多參與者,包括設計錢包的公司、生產錢包的工廠以及運輸過程中的經手人,他們可以調換錢包。硬件錢包可能會引來此類攻擊:資金被盜的概率與被盜設備數量相關性非常高。值得稱讚的是,諸如 Ledger 之類的硬件錢包生產商已經採取了許多保護措施來防範這些風險,但並不是萬事大吉了。從根本上來說,硬件設備不像開源軟件,無法進行審計。

➤ 單點故障:如果有人站在你的身後目睹你輸入 PIN,然後偷走了你的硬件錢包,他們就能竊取你的資金。如果你丟失了你的硬件錢包,你也就丟失了你的資產,除非硬件錢包在初始設置時生成並輸出備份,但正如我們看到的一樣,仍然有不同的問題存在。

光靠助記詞也不夠

許多錢包 (無論是硬件還是軟件) 都有一個初始設置過程,在此過程中會輸出一些助記詞短語,這是錢包根私鑰的編碼,形式是人類可讀的 12-24 個單詞。助記詞短語如下:

vote dance type subject valley fall usage silk essay lunch endorse lunar obvious race ribbon key already arrow enable drama keen survey lesson cruel

如果你丟失了錢包但保留有助記詞,則可以在設置新錢包恢復帳戶時輸入助記詞,因爲助記詞包含根密鑰,可以從中生成所有其他密鑰。

助記詞有助於防止丟失,但是對資金被盜的情況來說於事無補。更糟糕的是,如果你有標準的硬件錢包+助記符備份組合,那麼無論是硬件錢包+ PIN 被盜或助記詞備份被盜都會導致資金損失。此外,要保證保護好助記詞並且不意外丟失本身就是一項的精神負擔。

如果將短語五五分,然後將一半交由朋友保存,可以減輕盜竊的問題,但是 1) 幾乎沒有人真正推廣這種行爲;2) 存在安全問題,如果助記詞很簡短 (128位),那麼一個死磕的攻擊者,偷走一半之後可能會暴力尋找其餘 264 種可能的組合來找到另一半,並且 3) 進一步增加了精神負擔。

那我們需要的是什麼?

我們需要的錢包設計要滿足以下三個標準:

➤ 不存在單點故障:不存在會被竊取的事物,從而使攻擊者可以獲取您的資金,或者即使丟失了,也可以拒絕獲取資金。

➤ 減輕精神負擔:儘可能不要求用戶學習陌生的新習慣或付出腦力,以始終遵循某些行爲模式。

➤ 交易便捷:進行大多數正常活動不應該比常規錢包花費更多的精力 (例如 Status 和 Metamask 等等)

多籤還不錯!

早在2013年,解決這些問題的最佳技術是多重簽名 (multisig)。你可以擁有一個配有三個密鑰的錢包,需要其中任何兩個密鑰才能發送交易。

最初這項技術是在比特幣生態中開發的,但是以太坊現在也有優秀的多籤錢包 (例如 Gnosis Safe)。多籤錢包在組織內部的應用十分成功,以太坊基金會使用 4-7 多籤錢包來存儲資金,以太坊生態中許多其他的組織也應用了多籤錢包。

對於多籤錢包來說,要替“個人”持有資金主要的挑戰是:誰持有資金?如何批准交易?最常見的公式是“由用戶持有的兩個易於獲取但獨立的密鑰 (例如筆記本和手機),而第三個密鑰是更爲安全且更難獲取的備份,線下保存或是由朋友或者組織持有”。

這是相當安全的:任何單一設備丟失或被盜不會導致你無法使用資金。但是其安全性遠非完美無缺,如果能竊取某人的筆記本電腦,那麼竊取他們的手機通常來說也並不難。可用性也是一個挑戰,因爲每筆交易現在都需要使用兩個設備進行兩次確認。

社交恢復更勝一籌

這是我個人比較傾向的錢包保障方式:社交恢復。其運行機制如下:

➤ 有一個單獨的“簽名密鑰”用以批准交易

➤ 還有一套至少由三個成員組成的“守護者”,其中大多數人聯合起來可以改變賬戶的簽名密鑰

簽名密鑰能夠增加或減少守護者,這個過程存在延遲 (通常爲 1-3 天)。

在正常情況下,用戶都可以像普通錢包一樣簡易使用社交恢復式錢包,並使用其簽名密鑰對消息進行簽名,從而使每個已簽名的交易都可以通過一次確認點擊快速完成,操作如同“傳統”錢包 (如 Metamask)。

而社交恢復式錢包真正發揮作用的地方,就是用戶丟失簽名密鑰的情況。用戶可以聯繫他們的守護者,並要求他們簽署一個特殊交易,以更改其在錢包中註冊的簽名公鑰。這其實不難,他們可以訪問一個網頁 (比如security.loopring.io),登入之後收到一個恢復請求,然後進行簽名。守護者的操作可能就像在 Uniswap上進行交易一樣簡單。

守護者有很多可能的選擇,其中最常見的三種選項是:

➤ 錢包所有者自己的其他設備 (或是紙質助記詞)

➤ 朋友或是家庭成員

➤ 組織機構,在收到你的電話號碼或電子郵件確認後簽署恢復交易,或者在所設價值較高的情況下通過視頻通話來驗證你的身份

添加守護者也很容易,只需輸入 ENS 域名或 ETH 地址即可添加監護人,儘管大多數社交恢復式錢包都要求守護者在恢復頁面中籤署交易以同意添加。在任何設計合理的社交恢復式錢包中,守護者無需下載並使用同一錢包,他們可以使用其現有的以太坊錢包,不受類型限制。鑑於添加守護者的便利性,如果你的社交圈由以太坊用戶組成,我個人更偏向設置較多守護者 (最好是7個以上),以提高安全性。如果你已經有了一個錢包,那麼就不需要守護者不斷保持注意,你可以通過現有的錢包進行任何恢復操作。如果你不認識足夠的活躍以太坊用戶,那麼設置數量較少且懂得操作的守護者是更好的選擇。

爲了減少守護者遭受攻擊和串謀的風險,不必要公開守護者,實際上,他們不需要知道彼此的身份。這可以通過兩種方式來實現。首先,將守護者地址列表的哈希存儲在鏈上,而非守護者的地址,並且錢包所有者只需要在恢復時發佈完整列表即可。其次,可以要求每個守護者確定性地生成一個新的地址,僅以用於當次恢復。除非實際需要恢復,不然他們不需要使用該地址發送任何交易。爲了配合技術上的防護,建議選擇來自不同社交圈的、具有差異性的守護者 (理想情況下包括一個機構守護者),這些方案使守護者很難同時受到攻擊或是進行串謀。

如果錢包所有者去世或是永久喪失行爲能力,這將是一項社會認可的標準協議,守護者可以公開其身份,以便在這種情況下他們可以找到彼此並恢復資金。

社交恢復式錢包並未背叛“密碼學價值”,而是一種體現

對於任何形式的多重簽名,社交恢復等等使用建議的一種常見反應是,這些解決方案最終還是要追溯到“信任他人”這一點上,因此是對區塊鏈和加密貨幣行業價值的背叛。雖然我理解人們爲什麼會在乍看之下產生這種想法,但我還是認爲,這種批評源於對密碼技術的誤解。

對我而言,密碼技術的目標絕不是消除所有形式的信任。相反,密碼技術的目的是使人們能夠使用密碼學和經濟學來構建事物,從而增加可信任對象的選擇,並進一步建立更多有限的信任形式:可以授予某人代表你進行某些行爲的權力,而無需授予全權。從這種角度來看,多重簽名和社交恢復是這一原則的完美體現:每個參與者對能否接受或拒絕交易都有一定影響,但是沒有人能單方面轉移資金。與必須由個人或密鑰單方面控制資金的情況相比,這種更復雜的邏輯引入了安全得多的設置。

“謹慎地運用人的輸入而非徹底拋棄”這一基本理念是有效的,因爲這可以很好地與人腦的優缺點相適應。人腦非常不適合記憶密碼和保存紙錢包,但卻是用於追蹤與他人關係的 ASIC。對於非技術用戶來說,其效果甚至更強。他們可能在使用錢包和密碼時遇到麻煩,但是他們與技術用戶一樣擅長處理諸如“選擇七個不會全部勾結起來欺騙我的人”之類的社交任務。如果我們能夠從人類輸入中提取一些信息到某種機制中,而又避免使這些輸入成爲攻擊向量,那麼我們應該弄清楚如何實現。社交恢復非常穩健,要破壞一個擁有七個守護者的錢包,七個守護者中至少有四個需要以某種方式識別彼此並勾結起來盜取資金,其中任何一個人都不能向錢包所有者通風報信,這比起攻擊一個純粹由個人維護的錢包要困難許多。

社交恢復如何防止盜竊?

上文所述的社交恢復討論到了“丟失”錢包的風險,但是仍然存在簽名密鑰被“竊取”的風險:有人侵入你的計算機,在你已經登入的情況下趁虛而入,然後給你當頭一棒,甚至只是通過製造用戶界面故障來引誘你簽署交易。

我們可以通過添加保險庫來增強社交恢復能力以應對此類問題。每個社交恢復式錢包都可以附帶一個自動生成的保險庫。只需將資產發送到保險庫地址即可將其轉移至保險庫,但要將其轉出保險庫需要一週延遲時間。在延遲期間,簽名密鑰 (或監護者) 可以取消交易。如果需要,還可以對保險庫進行編程,以便可以立即進行一些有限的操作 (例如在白名單代幣之間進行 Uniswap 交易)。

既有的社交恢復式錢包

目前已經有兩個主要的錢包實現了社交恢復功能,Argent 以及 Loopring:

Argent 錢包是首個且最受歡迎的“智能合約”錢包,社交恢復是其賣點之一。Argent 錢包加入了可以對監護者進行增刪的界面:

爲了防止盜竊,錢包設有每日限額:達到該金額的交易可以即時進行,但超過該金額的交易需要守護者批准才能完成提款。

Loopring 錢包爲大家所知可能因爲它是由 Loopring 協議 (用於支付和去中心化交易所的 ZK rollup 方案) 開發者及支持者構建的。但是 Loopring 錢包還具有社交恢復功能,與 Argent 中的功能非常相似。在這兩種情況下,錢包服務商都免費提供一位守護者,該守護者通過手機發送的確認碼來對用戶進行身份驗證。用戶可以通過提供以太坊地址來添加同一錢包的其他用戶或任何以太坊用戶作爲其他守護者。

兩個錢包的用戶體驗都非常順滑。可能存在兩個挑戰。首先,兩個錢包中的操作順滑度都依賴於錢包商的“中心化”中繼者 (relayer),將已簽署的交易重新發布出來,其次費用較高。所幸這兩個挑戰都是可以解決的。

遷移到 L2 (rollups) 可以解決其他挑戰

如上所述,存在兩個主要挑戰:1) 依賴中繼者 (relayer) 來處理交易,以及 2) 交易費用高。在以太坊應用中,對中繼者的依賴是一個日益普遍的問題。出現此問題的原因是,以太坊中有兩種帳戶類型:由單個私鑰控制的外部帳戶 (EOA) 和合約賬戶。以太坊有一條規則,即每筆交易都必須始於外部賬戶。最初的意圖是外部賬戶代表“用戶”,合約賬戶代表“應用程序”,並且僅當用戶與應用程序交互時,該應用程序才能運行。如果我們想要機制更加複雜 (如多籤和社會恢復) 的錢包,則需要使用合約來代表用戶。但一個新的挑戰隨之而來:如果你的資金在合約賬戶中,則需要擁有一個其他有 ETH 餘額的賬戶,以支付每筆交易,一旦交易費用迅速攀升,可能需要大量的 ETH。

Argent 和 Loopring 的解決方案式親自運行中繼者。中繼者偵聽用戶提交的鏈下數字簽名的消息,並將這些消息打包在交易中,繼而發佈到鏈上。但是從長遠來看,這不是一個好的解決方案,因其帶來了中心化問題。如果中繼者發生故障,而用戶需要發送交易,雖然他們始終可以從自己的外部賬戶發送交易,但是仍然需要在中心化和使用不便之間引入新的權衡。有解決方案嘗試在去中心化的情況下解決這個問題並提升操作便利度。主要的兩種解決方案一是創建一個通用型去中心化中繼者網絡,二是修改以太坊協議以支持交易從合約賬戶發出。但是這些方案都不能解決交易費用的問題,實際上由於智能合約本來就更復雜,可能會加劇問題嚴重性。

幸運的是,我們可以尋求第三種解決方案同時解決這兩個問題:將生態系統移至二層協議,例如 optimistic rollups 和 ZK rollups。Optimistic 和 ZK rollups 可以設計爲內置抽象,無需中繼者。現有的錢包開發人員已經在研究 rollups,但是最終要整體遷移到 rollup 上是整個生態系統的挑戰。

將生態系統大規模遷移到 rollups 提供了很好的機會,可以扭轉以太坊生態系統早期的錯誤,併爲多籤和智能合約錢包在幫助保護用戶資金方面發揮更加重要的作用。但這需要大家更廣泛地認識到錢包安全性確實是一項挑戰,而且我們還沒有做出足夠的嘗試以應對挑戰。多重簽名和社交恢復不一定是故事的結局,可能會有更好的設計。但是轉移到 rollups 並確保其將智能合約錢包視爲“頭等公民”,這一革新是實現這個目標的關鍵步驟。

原文鏈接:https://vitalik.ca/general/2021/01/11/recovery.html

相關文章