錢包安全

硬體錢包簽名前,螢幕上要確認哪五件事?看懂盲簽與 Clear Signing

硬體錢包螢幕只跳出一串 hash 時,你其實不知道自己同意了什麼。本文說明盲簽的風險、Clear Signing 與 ERC-7730 改變了什麼、簽下去前必須核對的五個欄位,以及訊息簽名為什麼常比交易更危險。

硬體錢包簽名前,螢幕上要確認哪五件事?看懂盲簽與 Clear Signing

在 DApp 按下「Confirm」之後,硬體錢包螢幕上只跳出一長串 hex,底下是 Reject 和 Hold to sign。如果螢幕沒有寫清楚你正在同意什麼,這就是盲簽(blind signing)。買了硬體錢包不等於這一步安全——裝置真正的防護力,來自你有沒有把螢幕上的內容讀完、對完。

盲簽到底在簽什麼?

當錢包無法解碼一筆交易時,使用者看到的是一整頁無法閱讀的 calldata,沒有任何方式確認自己授權了什麼。釣魚網站與惡意合約就是在這個縫隙裡得手:使用者分不出一筆正常轉帳和一筆敵意操作有什麼差別。Ledger 的開發者文件把這個問題講得很直白。

關鍵在於,同一個 hash 畫面可能代表兩件完全不同的事——它可能是一次普通的 NFT 領取,也可能是一張把你錢包裡所有代幣搬走的授權。光看 hash,沒有人能分辨。

Ledger 開發者文件中的盲簽說明畫面:硬體錢包螢幕只顯示一串 Message hash,下方文字指出它可能是正常操作,也可能是把資產全部轉走的授權

Clear Signing 改變了什麼?

Clear Signing 是把交易內容以人看得懂的語句顯示在簽署裝置螢幕上:這筆操作在做什麼、誰收到什麼、數量多少。在 EVM 環境裡,它被定義成一個開放標準 ERC-7730:協議開發者發布一份 metadata,把合約函式對應到可閱讀的欄位;支援的錢包在簽署時用這份 metadata 把交易翻成清楚的句子。

Clear Signing 不會改變交易本身,它只是多加一層顯示,而這層顯示是在簽署裝置上驗證的。意思是你的安全依據,從「相信瀏覽器畫面」移到「相信裝置螢幕」。就算瀏覽器被惡意程式接管,裝置螢幕仍然獨立運作。

這項標準最早由 Ledger 在 2023 年以開源專案推動,後來標準化為 ERC-7730,descriptor registry 目前由 Ethereum Foundation 接手維運,Trezor、MetaMask、WalletConnect 等都有參與。換句話說,它不是單一廠商的獨家功能。

Ledger 文件中的 Clear Signing 範例:裝置螢幕分頁顯示 Token 編號 12345、Beneficiary vitalik.eth、到期時間,以及合約擁有者 Proof of Attendance Protocol 與合約地址

簽下去之前,螢幕上要核對的五件事

當裝置螢幕能清楚顯示資訊時,請逐項讀過下面五項。只要有一項對不上,就按 Reject。

  1. 合約地址——不要只比對開頭四碼和結尾四碼,那正是地址偽造最愛鑽的漏洞。把整串分段讀過,和你使用的 DApp 官方文件上的地址比對。
  2. 操作類型——這是 Transfer、Approve、Permit,還是 NFT operator 授權?以為自己在轉帳、實際上給出授權,是最常見的一種失誤。
  3. 金額或授權額度——螢幕顯示的是具體數字,還是無限額?做一次 swap 並不需要無限額授權。
  4. 收款方或受益人——資產或權限最後落到誰身上?是你自己的地址、合約地址,還是一個你沒看過的地址?
  5. 鏈別——螢幕上顯示的鏈,和你以為的那條鏈是同一條嗎?選錯鏈之後的處理方式,可以參考USDT 選錯網路轉出去了還能拿回來嗎這篇的分情況說明。

如果對方要你簽的不是交易,而是一則訊息

很多時候,訊息簽名比交易更危險。它不用 gas、不會上鏈,所以使用者按得特別快。但那個簽名可能就是一份允許某個合約取走你代幣的授權。

這就是 EIP-712 的用意:它是一套針對型別化結構資料做雜湊與簽署的規範,而不是把一串 bytestring 丟給你簽。正確實作之後,錢包才能把「誰是 spender、額度多少、什麼時候到期」當成欄位顯示給你看。

Ethereum Improvement Proposals 網站上的 EIP-712 頁面,標題為 Typed structured data hashing and signing,狀態標示 Final

遇到訊息簽名請求時,問自己三個問題:spender 是誰?額度上限多少?什麼時候到期?只要螢幕上找不到其中任何一個答案,就先不要簽。授權如何在你毫無動作的情況下把資產搬走,錢包授權後,資產為什麼可能被自動轉走裡有完整拆解。

裝置上的盲簽開關要怎麼用?

部分硬體錢包把「允許簽署無法解碼的合約資料」做成一個要你自己打開的設定。那個麻煩是故意設計的——它要你每次都意識到:我正在同意一件自己讀不懂的事。

實務上的作法是:只為了當下那一件非做不可的事打開它,做完立刻關掉。如果長期開著,下次釣魚網站推同樣一個畫面給你時,你不會收到任何提示。設定的名稱和位置會依型號不同,請以你手上裝置的官方說明為準。

螢幕上真的只有 hash 時怎麼辦?

一筆請求無法解碼,不必然代表它是詐騙——比較新或比較冷門的協議可能還沒進 registry。但風險確實比較高,這時候:

  • 先想一次:這個 DApp 非得現在用嗎?不急的話,過幾天再說。
  • 真的得做,就換一個沒有放主要資產的獨立錢包,只用小額操作。
  • 做完立刻檢查那個錢包的授權清單,把不需要的額度撤掉。
  • 任何以「驗證」「安全檢查」為名要你輸入助記詞的畫面,一律是詐騙。硬體錢包在任何情況下都不會要你把助記詞打進電腦。

至於裝置本身到手後該做哪些確認,硬體錢包到貨後怎麼驗真另外整理了開箱到首次啟用的檢查順序。

已經簽了一串 hash,現在該做什麼?

第一步不是慌張地到處輸入助記詞,而是去看那個錢包上目前有哪些授權,然後撤掉它們。如果資產已經被移動,撤銷授權就不夠了,必須把剩下的資產遷到全新的錢包。

前三十分鐘的處理順序,錢包或帳戶疑似被盜:第一個 30 分鐘怎麼處理有逐步說明。

只要記住一條

裝置螢幕上你讀不懂的東西,就不要同意。按 Reject 的代價是幾分鐘;沒讀就簽的代價,是那個錢包裡的全部。

官方資料

  • Ledger Developer Portal, "Clear Signing — Overview"(盲簽與 ERC-7730 說明):https://developers.ledger.com/docs/clear-signing/overview
  • ClearSigning.org(ERC-7730 descriptor registry):https://clearsigning.org
  • EIP-712: Typed structured data hashing and signing:https://eips.ethereum.org/EIPS/eip-712

KAAPPUX 不提供投資建議,本文僅為安全操作的教育性說明。