本文將介紹加密錢包安全和託管平台的特徵和缺陷,涵蓋未來最需要關注和發展的領域,旨在幫助 Web3 用戶更好地理解以非託管方式保護加密資產的複雜性。

原文:Wallet Security: The 'Non-Custodial' Fallacy(a16z crypto)

作者: Nassim Eddequiouaq & Riyaz Faizullabhoy

編譯: Katie 辜,Odaily 星球日報譯者

封面: Photo by GuerrillaBuzz Blockchain PR Agency on Unsplash

個人對自己的私鑰(和加密資產)有直接和唯一的控制權(和所有權)——堅持這種理念的加密錢包被稱為 “非託管” 錢包,這意味著外部無法訪問密鑰。

直到一系列 “非託管” 錢包黑客事件——9 月 Wintermute 私鑰遭 “暴力破解” 損失 1.6 億美元,8 月侵入超過 8000 個賬戶的 Slope 錢包黑客,2020 年盜取超過 200 萬美元 IOTA 的 Trinity 錢包黑客,2017 年竊取 15 萬 ETH 的 Parity 錢包黑客,以及各種硬件錢包漏洞,模糊了託管和非託管錢包之間的安全界限。在此類案件中,受害者認為自己使用的是一個非託管錢包,但發現私鑰竟然被盜。

事實上,非託管錢包並不能真正讓用戶完全控制自己的密鑰,因為錢包通常是由他人的軟硬件創建和運行的。用戶在不斷地信任第三方產品。這些產品集成或使用著區塊鏈命令行接口、錢包軟件和設備、中心化平台、智能合約代碼、去中心化應用程序,而每一個接觸點都增加了風險。所有這些連接點加起來粉碎了人們對 “非託管” 概念的美好幻想。

“非託管” 實際上可能涉及許多託管元素。

一般來說,密鑰管理(錢包安全的基礎)可以分為三個方向:

  1. 密鑰生成(創建加密密鑰);
  2. 密鑰存儲(保護靜態的密鑰);
  3. 密鑰使用(使用密鑰授權)。

每個方向都有獨特的風險點。

本文將介紹加密錢包安全和託管平台的特徵和缺陷,涵蓋未來最需要關注和發展的領域,旨在幫助 Web3 用戶更好地理解以非託管方式保護加密資產的複雜性。此外,我們也想幫助工程師識別和避免錢包開發中的常見故障點,借助我們多年來在 Docker、Anchorage、Facebook 和 a16z 加密系統中的綜合經驗,幫助用戶和項目方避免安全事故。

密鑰生成

密鑰生成步驟的安全至關重要。在這個環節,有三個首要問題需要牢記:使用可靠的代碼、正確地實現代碼和安全地處理輸出。

一些錢包提供商在他們的官方網站或 Github 存儲庫上發布的審計報告。自己做調查,試著確定錢包背後是否有信譽良好的公司。如果信息稀少,那麼重要的用戶和開發人員的活動可能會是參考指標。

遵循這些指導方針來減少風險。如果你的錢包沒有通過以下檢查,趕緊跑吧。

不使用沒有經過足夠長時間的檢驗的錢包

組成錢包的代碼應該有良好的聲譽。選擇編寫得很差的軟件,或者嘗試開發自己的替代方案可能會導致諸如密鑰洩漏或向未授權方透露機密信息等 “災難事件” 的發生。

使用有多重保險的錢包

即使代碼使用信譽良好的密碼庫,也必須被正確集成。經過審核的軟件通常會默認設置正確的參數,但在執行過程中可能會出現漏洞。對於某些密鑰生成過程,例如許多多方計算(MPC)算法,其中必須生成和協調許多單獨的密鑰——或密鑰碎片,密鑰片段,錢包應該遵循算法指定的協議。該算法可能還需要進行多輪計算和刷新密鑰,錢包必須正確集成這些密鑰,才能維護資金的安全。

使用能 “保守秘密” 的錢包

密鑰生成過程的最後階段涉及到軟件的實際操作和輸出。注意密鑰是在哪裡生成的以及以什麼形式生成的。理想情況下,密鑰應該在獨立的硬件中生成,信息應該使用可靠的算法進行加密。

今年夏天遭到黑客攻擊的 Slope 錢包的密鑰生成後,以明文形式登錄到外部服務器。這種安全漏洞可能出現在代碼的審計或開源實現中。缺乏透明度的錢包——以封閉的源代碼為特徵,對公眾沒有可用的第三方安全審計應該引起警覺。

密鑰存儲

密鑰生成後,它們需要被隱藏在某個地方(不以明文形式,永遠加密)。但是,僅僅擁有存儲密鑰的設備並不一定等同於密鑰的所有權和控制權。必須考慮許多因素,如設備的供應鏈安全、設備的連接方式以及設備與哪些其他組件交互。此外,每種存儲方法在安全性、可訪問性、可維護性和可用性之間都有自己的權衡。

下面,我們根據相關的所知的風險水平對最常見的錢包安全類別進行了分類。

高風險:熱錢包

在其他條件相同的情況下,冷錢包比熱錢包更安全,但它們也更難用。連接到任何網絡的錢包都更容易被黑客攻擊,因為它讓攻擊者有更多機會發現和利用漏洞。

熱錢包聯網有兩種形式:

  • 連接軟件:在線數據庫或 Web 服務器應用程序內存、瀏覽器擴展

這些風險最高。因為錢包軟件不管是否託管,都可以直接訪問密鑰——所有這些都與外部互聯網相連。理想情況下,密鑰應該是加密的,而用於加密它們的另一組密鑰應該存儲在專用的密鑰管理系統(KMS)中,該系統具有高度限制的訪問控制,如操作系統密鑰鍊或云密鑰管理系統。

  • 連接硬件:專用設備、移動安全區域、在線硬件安全模塊(HSM)

連接硬件通常被認為比連接軟件風險更低,但它仍然不如冷存儲安全。在連接的硬件中,密鑰只生成在專用硬件設備中。然後這些可以連接到內部或公共網絡。這類設備通常承擔與密鑰管理相關的多重責任,包括密鑰生成、簽名和存儲的安全性。

還有硬件錢包,如 Trezor 和 Ledger。也有硬件安全模塊,或稱 HSM,通常用於更傳統的業務設置,如處理敏感數據處理(如信用卡支付)的設置。

設備的安全程度取決於生產和配置它們的供應鏈。當考慮連接硬件時,最好直接從可信的供應商那裡購買設備。直接從源頭運過來,確保包裹看起來沒有損壞。也可以在使用之前驗證固件版本和配置。

當然,硬件錢包以後總是有可能被盜或被未經授權的一方訪問。鑑於這些威脅,重要的是要確保硬件錢包也有安全的訪問控制層——安全措施確保它們不會盲目地簽署任何和所有的交易。控制可以包括密碼要求、對交易的每一步要求明確許可的提示,以及描述交易實際操作的簡單摘要。此外,大多數硬件錢包支持私鑰加密,也稱為 “密鑰包裝”。

風險較小:冷錢包

在其他條件相同的情況下,冷錢包通常被認為比熱錢包更安全,儘管它們通常也不太好用。冷錢包與任何內部或公共網絡都沒有連接。

讓我們回顧一些冷錢包選項:

  • 離線軟件:離線服務器應用

因為攻擊者可以在任何時候偷竊或使機器在線,冷錢包應該設計在線時的安全系統。與連接軟件相比,強烈推薦特殊用途的硬件,如 HSM,因為它們通常提供更多的控制。

  • 離線硬件:離線硬件錢包、離線硬件安全模塊(HSM)

這種解決方案被認為是最安全的。與前面的類別類似,我們應該假設硬件可以被竊取並在線獲取。因此,正如前面所討論的,這些系統必須包含正確實現的訪問控制層。許多 HSM 供應商要求在解鎖密鑰訪問之前,必須有一定數量的物理智能卡聚集在一起。即使設備沒有顯示屏幕,它也應該為用戶提供一些方法來驗證交易的細節。

因為冷錢包或離線錢包是最安全的一類,所以大公司管理的大多數資金都以這種方式存儲,如 Coinbase 、Gemini、Kraken 等,以及 Anchorage。這些玩家中的許多人還會選擇另一道防線——備份和恢復,以防萬一他們失去訪問權限,或者機器損壞、被盜或被摧毀。

備份和恢復

簽名密鑰應該在加密後進行備份。加密簽名密鑰和密鑰包裝密鑰的重複是至關重要的。備份簽名密鑰的方法各不相同,但應該始終選擇硬件本機解決方案。

對於硬件錢包,備份通常涉及一個純文本種子,從該短語派生出私鑰。標準加密密鑰具有可以導出密鑰的機制,這些密鑰在默認情況下使用訪問控制進行加密。如果滿足訪問控制,則可以將密鑰導入其他 HSM。大量的 HSM 還可以提供一個通用的加密密鑰,該密鑰來自於智能卡的法定數量。以這種方式將硬件與關鍵材料分離有助於避免單點故障。

最後,還要考慮人為因素。恢復機制應能夠承受帳戶管理業務中涉及的任何個人的臨時或永久不可用的情況。個人應確保在發生停機或其他緊急情況時,提供收回密鑰的方法。與此同時,群體運營應該確定一個人數,在突發事件發生時能繼續運營。

密鑰使用

在生成並存儲密鑰之後,可以使用它們創建授權交易的數字簽名。軟件和硬件的組合越多,風險就越大。為了降低風險,錢包應該遵守以下授權和身份驗證指南。

可信任,但也要驗證

錢包應該需要驗證。換句話說,應該驗證用戶的身份,並且只有授權方才能訪問錢包的內容。這裡最常見的安全措施是 PIN 碼或密碼短語。更高級的身份驗證形式可以包括生物識別或基於公鑰加密的批准,例如來自多個其他安全設備的加密簽名。

不要使用沒有經過足夠長時間的檢驗的錢包

錢包應該使用完善的密碼學庫。做一些調查,以確保它們被審計和安全,以避免密鑰材料洩漏或完全丟失私鑰。使問題更加複雜的是,即使是受信任的庫也可能具有不安全的接口,正如最近這些 Ed25519 庫的情況一樣。

Nonce 重用

一個經過充分研究的密鑰使用陷阱是某些加密簽名參數的無意重用。有些簽名方案可能需要一個一次性的意思,“只使用一次的數字”(一個任意的數字),意味著在一個系統中使用一次。因此,要確保正在使用完善的加密庫。但這種攻擊載體在 Web3 之外的高調黑客攻擊中也曾被利用過,比如 2010 年的索尼 PlayStation 3 黑客攻擊。

一密鑰一用

另一個最佳實踐經驗是避免為多個目的重用同一密鑰。例如,應該為加密和簽名保留單獨的密鑰。這遵循了在妥協情況下的 “最小特權” 原則,這意味著對任何資產、信息或操作的訪問應該僅限於對系統工作絕對需要的各方或代碼。根據不同的用途,不同的密鑰對備份和訪問管理有不同的要求。在 Web3 生態中,最好的做法是在資產和錢包之間分離密鑰和種子短語,這樣一個帳戶的洩露不會影響其他帳戶。

總結

從生成到存儲到使用的許多相互作用的部分和階段,密鑰的保管是一個棘手的問題。密鑰所有權的託管或非託管性質並不像傳統觀念所認為的那樣非黑即白。由於涉及到密鑰管理的許多移動部分(從密鑰生成到存儲再到使用),情況變得複雜起來。這條鏈上的每一個硬件或軟件都會引入風險,甚至會使原本不屬於託管型錢包的選項暴露在託管型風險之下。

對於未來,我們希望做更多的開發工作來保護錢包免受攻擊,並降低上面討論的風險。有待改進的領域包括:

  • 跨移動和桌面操作系統共享安全的開源密鑰管理和交易簽名庫;
  • 共享的開源交易審批框架。

還有共享和開源的開發:

  • 在不同的存儲後端(在磁盤上加密,安全硬件等)實現最佳的安全密鑰生成庫;
  • 用於移動和桌面操作系統的密鑰管理和交易簽名庫;
  • 交易審批流程框架,實現專門驗證,如生物識別、基於 PKI 的審批、授權恢復等。

相關閱讀

私鑰洩露導致 1.6 億天價損失,關於私鑰你需要知道這些事

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。