每個月,MetaMask 安全總監 Luker 都會報告您需要了解的最新加密貨幣攻擊事件與新興風險。
2022 年 5 月的報告涵蓋了 MetaMask 在 HackerOne 上推出漏洞獎勵計畫、Endo 實作 import.meta 與 __dirname 以提升 MetaMask 相依性相容性,以及一個分散式金鑰生成原型 snap,展示了在 MetaMask Flask 中進行多方計算簽名的能力。請繼續閱讀詳細內容,但首先……
精選 STEM 先驅:Adi Shamir,RSA 共同發明人與秘密共享機制創始人
Adi Shamir 是一位以色列密碼學家,於 1977 年與 Ron Rivest 和 Leonard Adleman 共同發明了 RSA 演算法——這是第一個實用的公開金鑰密碼系統,三人因此榮獲 2002 年圖靈獎。1979 年,他發表了〈如何共享一個秘密〉,提出了 Shamir 秘密共享機制:一種將秘密拆分為多個份額的方案,只需達到門檻數量的份額即可重建原始秘密。這一特性是本報告所涵蓋的分散式金鑰生成工作的基礎。
MetaMask 推出 HackerOne 漏洞獎勵計畫
MetaMask 於 2022 年 6 月在 HackerOne 上推出了漏洞獎勵計畫,為安全研究人員提供一個正式管道,以回報 MetaMask 產品中的安全漏洞。
Endo 實作 import.meta 與 __dirname,提升 MetaMask 相依性相容性
根據 2022 年 4 月 Endo CommonJS 支援的進展,端對端測試結果顯示,執行熱門模組時剩餘的最大阻礙為 import.meta.url 與 __dirname 的支援問題。
2022 年 5 月 3 日,Agoric、MetaMask 與 Moddable 召開會議,就模組匯入流程中 import.meta 的處理時機達成共識。importMetaHook 概念被引入 Compartment 規範。此 hook 僅在靜態分析顯示模組存取 import.meta 時才會被呼叫——由於 Node.js 在此處附加了一個 resolve 函式,且其建立成本較高,因此最好僅在結果可能被使用時才呼叫該 hook。
import.meta 的實作已完成(規範議題、實作 PR)。剩餘工作為在 Endo 中預設將 import.meta.url 傳入模組。__dirname 的實作也已完成(PR),經過多次迭代以確保正確性並支援 Windows 路徑。
此外,新增了對巢狀 package.json 檔案的支援,可變更 .js 檔案的預設模組類型假設,使 compartment-mapper 能夠處理具有複雜結構、旨在同時支援 CommonJS 與 ES 模組規範的套件(來源)。
__esModule 行為支援目前暫緩。兩次實作嘗試均導致端對端測試分數下降。第三種方案——將支援邏輯置於 SES 內的 ThirdPartyModuleInstance 中——被認為具有爭議性。此功能的追蹤記錄於議題 #927。
分散式金鑰生成原型 snap 展示 MetaMask Flask 中的 MPC 簽名功能
多方計算(MPC)能力方面已取得進展。我們的團隊以早期的概念驗證 WebAssembly(WASM)綁定為基礎,建立了一個可在 MetaMask Flask 中使用的原型 snap,展示了分散式金鑰生成(DKG)與訊息簽名功能。此 snap 除支援金鑰生成與儲存證明以進行訊息簽名外,還支援匯出與匯入金鑰份額。
在底層實作上,該套件採用了 GG2020(Gennaro and Goldfeder 2020,論文)的一個實作。GG2020 是一種支援非互動式線上階段的協議,允許參與者非同步參與而無需同時在線,並能有效偵測中止方。
後續步驟包括為 snap_manageState 新增加密支援,以消除 snap 程式碼中對金鑰份額的手動加密,接著新增交易簽名支援。此原型的追蹤記錄於 tss-snap 儲存庫(最初以 ecdsa-wasm 名稱發布)。
MetaMask 2022 年 5 月加密貨幣安全報告涵蓋了 Endo 實作 import.meta 與 __dirname 以強化 MetaMask 模組相容性鏈,以及展示在 MetaMask Flask 中進行多方計算簽名的分散式金鑰生成原型 snap。瀏覽 MetaMask 加密貨幣安全報告的往期內容,了解更多威脅、趨勢,以及在整個生態系中保持安全的實用建議。