跳到正文

會話金鑰錢包

了解智慧帳戶會話金鑰如何委派有限權限、必須強制執行哪些限制,以及如何驗證、撤銷並因應金鑰洩露。

更新於

僅供教育參考,不構成投資建議。洩露或權限過大的會話金鑰可能造成不可逆的數位資產損失。

直接答案

錢包會話金鑰通常是輔助簽名金鑰,或與該金鑰綁定的委派憑證;智慧帳戶只會在預設規則內接受它。規則可限制時間、目標合約、函式選擇器、代幣金額、交易次數或其他條件。其目的是讓應用程式能重複執行操作,而無須帳戶擁有者每次都用主簽名者確認。

「會話金鑰」是一種設計模式,並非以太坊上的統一標準。ERC-4337 提供可程式化帳戶驗證和有時間邊界的 UserOperation 驗證;ERC-7579 等模組化帳戶系統則可以承載驗證器、執行器和掛鉤。金鑰能做什麼,最終取決於錢包已部署的帳戶與模組程式碼。僅設定到期時間並不能保證會話安全;刪除瀏覽器裡的金鑰副本,也不一定會撤銷已登記上鏈或仍包含在未到期委派中的權限。

運作方式

典型流程有 5 個階段:

  1. 擁有者在裝置上建立全新的金鑰對,或授權用於識別會話簽名者的憑證。除非設計明確把應用程式伺服器作為受信託管方,否則絕不應把會話私鑰傳送給伺服器。
  2. 擁有者使用主錢包授權一項策略。有些系統在鏈上安裝金鑰與策略;另一些系統使用簽名委派,在操作到達時由帳戶驗證。
  3. 應用程式建立操作並用會話金鑰簽名。在 ERC-4337 流程中,帳戶的 validateUserOp 邏輯檢查簽名和策略;打包器模擬只是准入檢查,並非執行成功或安全性的證明。
  4. 帳戶必須在執行前強制實施所有限制。有效權限可概括為 A_effective = K ∩ P ∩ S:持有金鑰(K)、已設定策略(P)以及目前帳戶或鏈狀態(S)都必須允許該操作。
  5. 會話可透過到期、nonce 或配額耗盡、明確撤銷、移除模組或其他實作特定的失效路徑結束。應在正確的鏈上確認最終帳戶狀態。

授權會話前,應核對:

  • 鏈 ID、智慧帳戶地址、帳戶實作,以及驗證器或模組地址;
  • 會話公鑰或憑證識別碼,以及私鑰材料將儲存在哪裡;
  • 每個允許的目標、函式選擇器、代幣、收款人規則、原生資產數額上限,以及單次或累計支出上限;
  • validAftervalidUntil、nonce 規則、使用次數,以及時間採用區塊時間戳還是其他來源;
  • 除非確有需要,批次交易、巢狀呼叫、delegatecall、代幣授權、安裝模組、升級帳戶和 ERC-1271 訊息簽名是否均被阻止;
  • 誰能撤銷會話、擁有者是否保留獨立復原路徑,以及撤銷是否需要 Gas 或正常運作的打包器或 paymaster。

策略必須檢查實際將被執行的操作。只檢查外層批次交易的目標,可能讓內層呼叫不受限制;只檢查收款人而忽略函式和數額,也會產生同類問題。只有執行程式碼涵蓋每一條執行路徑時,限制才真正有效。

範例

某遊戲錢包建立一個持續 24 小時的會話。它只允許呼叫經驗證的遊戲合約,阻止 delegatecall 和代幣授權,把每次呼叫的原生資產數額上限設為 0.02 ETH,累計支出上限設為 20 USDC。遊戲可以無須擁有者反覆確認就提交獲准操作,但轉移無關 NFT 的請求必須驗證失敗。

使用前,擁有者記錄帳戶、鏈、模組、會話公鑰、到期時間、限額和撤銷方法。擁有者先測試一筆低價值操作,核對解碼後的呼叫與帳戶事件,再單獨測試撤銷。這能確認設定的路徑有效,但不能證明模組不存在漏洞,也不能證明受感染裝置無法花完剩餘額度。

風險與控制

  • 策略過寬: 萬用字元目標、不受限的選擇器、無限代幣授權、批次交易或 delegatecall,都可能讓「有限」金鑰獲得接近擁有者的權限。應使用明確白名單並禁止管理操作。
  • 金鑰被竊: 瀏覽器儲存、日誌、備份、擴充功能、惡意軟體和共用裝置都可能暴露會話金鑰。在支援時優先使用硬體保護或隔離儲存,並設定較短期限和較低累計上限。
  • 執行限制有缺陷: 帳戶、驗證器、執行器或掛鉤可能錯誤解碼呼叫,或未涵蓋另一條執行路徑。應採用已驗證部署、經過審查的程式碼、稽核和繞過情境測試。
  • 重放與上下文混淆: nonce 處理薄弱,或未綁定到預期鏈、帳戶、模組或策略,都可能使授權在其他上下文中被重複使用。核對確切的簽名域和鏈上重放保護。
  • 對到期機制的誤判: validUntil 可能只限制一筆 ERC-4337 操作,並不會自動移除已登記金鑰、代幣額度或另一項委派。到期後應檢查每項權限的實際狀態。
  • 撤銷失敗: 刪除本機資料只會移除祕密的一份副本。應透過帳戶文件規定的路徑撤銷並核對鏈上結果,同時保留足夠 Gas 和由擁有者控制的備用路徑。
  • 可升級或惡意模組: 模組可能擁有強大的執行權限,升級也可能改變策略行為。應檢查擁有者、升級延遲、暫停權限、實作地址和模組移除流程。
  • Gas 與贊助濫用: 會話可能消耗帳戶資金支付 Gas,或在 paymaster 拒絕時無法使用。盡可能限制費用行為,並保留獨立提交路徑。

如果會話金鑰可能已經洩露,應停止使用受影響應用程式,保留會話識別碼和相關交易雜湊,並從乾淨、由擁有者控制的裝置撤銷或停用金鑰。隨後檢查所有受支援鏈上的待處理與近期操作、代幣授權、已安裝模組、帳戶升級和餘額。只有當帳戶或模組設計使撤銷不可靠時才轉移剩餘資產;倉促進入未經驗證的「復原」網站可能擴大損失。

常見誤區

  • 「會話金鑰不能移動資產。」 它可以執行策略實際允許的任何操作,其中可能包括轉帳、兌換、授權或簽名。
  • 「ERC-4337 定義了會話金鑰權限。」 ERC-4337 提供帳戶驗證和執行框架;會話策略仍由錢包或模組具體決定。
  • 「較短到期時間可以限制最大損失。」 損失還取決於單次限額、累計限額、呼叫頻率、Gas、授權、價格以及每條可達執行路徑。
  • 「登出就是撤銷金鑰。」 登出可能刪除本機副本,但不能證明鏈上登記或簽名委派已失效。
  • 「模擬成功代表操作安全。」 模擬可以表明目前驗證會接受操作;它不能證明使用者意圖、未來收錄、執行成功、最終確定性,也不能證明模組沒有漏洞。

相關主題

來源

導覽

搜尋知識庫...