原文標題:《Wallet Security: The「Non-Custodial」Fallacy》
原文作者:Nassim Eddequiouaq、Riyaz Faizullabhoy,a16z
原文編譯:Katie 辜負,Odaily 星球日報
個人對自己的私鑰(和加密資產)有直接和唯一的控制權(和所有權)-堅持這種理念的加密錢包被稱為為「非託管」錢包,這意味著外部無法存取金鑰。
直到一系列「非託管」錢包駭客事件——9 月Wintermute 私鑰遭「暴力破解」損失1.6 億美元,8 月侵入超過8,000 個帳戶的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 庫的情況一樣。
一個經過充分研究的密鑰使用陷阱是某些加密簽名參數的無意重複使用。有些簽章方案可能需要一個一次性的意思,「只使用一次的數字」(一個任意的數字),意味著在一個系統中使用一次。因此,請確保正在使用完善的加密庫。但這種攻擊載體在 Web3 以外的高調駭客攻擊中也曾被利用過,例如 2010 年的索尼 PlayStation 3 駭客攻擊。
另一個最佳實務經驗是避免為多個目的重用同一密鑰。例如,應該為加密和簽名保留單獨的金鑰。這遵循了在妥協情況下的「最小特權」原則,這意味著對任何資產、資訊或操作的存取應該僅限於對系統工作絕對需要的各方或代碼。根據不同的用途,不同的金鑰對備份和存取管理有不同的要求。在 Web3 生態中,最好的做法是在資產和錢包之間分離金鑰和種子短語,這樣一個帳戶的洩漏不會影響其他帳戶。
從生成到儲存到使用的許多交互作用的部分和階段,密鑰的保管是一個棘手的問題。金鑰所有權的託管或非託管性質並不像傳統觀念所認為的那樣非黑即白。由於涉及到密鑰管理的許多移動部分(從密鑰產生到儲存再到使用),情況變得複雜起來。這條鏈上的每一個硬體或軟體都會引入風險,甚至會使原本不屬於託管型錢包的選項暴露在託管型風險之下。
對於未來,我們希望做更多的開發工作來保護錢包免受攻擊,並降低上面討論的風險。有待改進的領域包括:
· 跨行動裝置和桌面作業系統共享安全的開源金鑰管理和交易簽章庫;
· 共享的開源交易批准框架。
還有共享和開源的開發:
· 在不同的儲存後端(在磁碟上加密,安全硬體等)實現最佳的安全金鑰產生庫;
· 用於行動和桌面作業系統的金鑰管理和交易簽章庫;
· 交易審批流程框架,實現專門驗證,如生物辨識、基於PKI 的審批、授權恢復等。
原文連結
歡迎加入律動 BlockBeats 官方社群:
Telegram 訂閱群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方帳號:https://twitter.com/BlockBeatsAsia