籤名:區塊鏈錢包安全的新挑战
與傳統的中心化服務不同,區塊鏈錢包並不直接持有用戶的資產,只管理與區塊鏈交互的關鍵憑證——私鑰。當用戶進行一筆交易時,需要使用私鑰進行交易籤名,一旦私鑰泄露或丟失,資產將面臨損失的風險。
籤名的現狀
區塊鏈的早期,籤名相對簡單且風險較低,錢包主要的安全問題在於如何安全地存儲私鑰。隨着 DeFi 和 NFT 等應用場景的興起,鏈上交互變得越來越復雜。由於每一個 DApp 項目都有獨特的籤名交互方式,再加上多鏈多網絡的維度,對於大多數人來說,理解各種復雜的籤名交互背後的信息變得困難。
這也導致了錢包安全的新挑战,本身籤名的規範多,解析困難,把面向开發者的結構化數據解析為普通用戶可以理解的信息的挑战更大,還存在因為籤名展示的不清晰導致的各種潛在攻擊手段,如盲籤名和籤名釣魚等。就在最近,Web3 反詐騙平臺 Scam Sniffer 監測到有用戶通過因為 Perimit 授權被釣魚攻擊,導致被盜 10 萬 USDC。
在探索籤名挑战的解決方案之前,理解各種籤名方式至關重要。
籤名的方式
為了使各應用能與區塊鏈無縫交互,如讀取區塊數據或發送交易,必須有一個統一的連接標准。拿以太坊舉例,以太坊的每個客戶端都採納了統一的 JSON-RPC 規範。
在這個規範中,與籤名相關的接口有:eth_sendTransaction、eth_sign 等。從技術的視角,籤名可分為兩大類:鏈下籤名和鏈上籤名。根據具體籤名應用場景,它們又可細分為籤名登錄 、籤名授權、籤名轉账及籤名合約互動等。
如何避免籤名風險
不同的籤名場景潛藏着不同的風險,特別是當籤名過程復雜或不明確時,盲目籤名可能導致資產損失。對錢包而言,「所見即所籤」是解決盲籤問題的關鍵原則,用戶籤署的內容應與他們所看到和預期的完全相符。為了實施這一原則,錢包要確保的是准確展示每一筆籤名包含的可讀信息,而不是向用戶展示 16 進制的 RLP 編碼,只有這樣用戶才能理解籤名信息和風險。
此外,在非常規的操作中,智能的風險警示機制也至關重要。接下來,我們將分別針對這些場景,探討潛在風險及其應對策略。
籤名登錄場景
1. eth_sign
以太坊最早的離线籤名方式,目前已經不推薦使用。因為無法解析籤名信息,非常容易被風險網站利用,僞造風險交易,而導致資產被盜。最簡單方式,遇到無法解析展示的盲籤名信息,直接拒絕籤名,因為 eth_sign 籤名無法做到所見即所籤,所以社區衍生出 eth_personal_sign 和 EIP-712 等標准,讓籤名可視化。
2. eth_personal_sign
eth_personal_sign 是可讀的離线籤名方式,通常用於網站驗證用戶身份,籤名登錄網站,錢包需要清晰的展示籤名的信息和來源網站的詳情。為了展示更多的登錄網站的信息,目前 ERC-4361「Sign In With Ethereum 」登錄網絡的標准支持範圍也非常廣,進一步提升了 eth_personal_sign 的安全性。
3. eth_signTypedData
遵循 EIP-712 標准,對於結構化數據進行 Hash 或籤名,推薦離线籤名的方式。慢霧有提到signTypedData_v4 也存在潛在的安全問題,雖然籤名信息展示很清晰,但可能是釣魚網站發起的一模一樣的籤名請求,後續會被濫用。
所以,對於錢包來說,不僅要支持解析 signTypedData 結構化數據,還需要顯示籤名來源的應用名稱和 URL、交互的歷史記錄。對於非標准的 EIP-712 錢包,應該也有智能的風險提示。
籤名轉账場景
轉账是錢包最大的用例,這中間涉及到以太坊原生代幣 ETH 的轉账,以及 ERC-20、ERC-721 標准的代幣轉账,像是慢霧开發的 MistTrack 等其他安全工具有提供相關的風險地址標籤,需要錢包智能地幫助用戶攔截或展示相關風險提示,避免更多人受騙。
除此之外,轉账還存在一些非常規的場景,比如說轉账到合約地址:正常錢包轉账都是給 EOA 普通账戶,如果收款地址為合約地址,需要特別注意,往往存在風險,當然也可能為合約錢包地址。對於錢包來說,如果可以智能的識別地址是普通地址還是合約地址,並針對合約地址增加特別的標籤提示,可以幫助用戶提高安全意識。
籤名授權場景
1. Approve 授權
Approve 操作代表授權代幣轉账權限給目標合約以便自動完成交易,常用於 DEX 交易授權,對於錢包來說,需要支持展示授權詳情,並且支持修改授權額度和時間,避免因為無限授權額度,導致資金風險敞口變大,建議每次只授權需要交易的數量。
針對 Approve 授權是給一個 EOA 個人地址的場景,需要注意此操作存在極高的釣魚詐騙行為,Approve 更多是授權給智能合約地址,授權給個人地址屬於非常規的行為,需要錢包能夠智能識別這種場景並提供相關的風險提示。
2. Permit 授權
Permit 是在 EIP-2612 中提出的一個優化方案,用於改進 ERC-20 標准代幣的交互方式。使用ERC-20 標准下進行 Approve 代幣授權,需要支付 ETH 作為 Gas 費用。而通過 Permit 的方法,用戶可以在鏈下私鑰授權生成一個籤名,擁有這個籤名的人(如智能合約)可以直接調用 Permit 功能,從而進行代幣轉移,無需用戶再支付 Approve 授權的 Gas 費用。
然而,EIP-2612 是 ERC-20 的擴展,所以 Permit 功能僅適用於新代幣,現有的 ERC-20 代幣無法從中受益。為了解決這個問題,Uniswap 提出了 Permit2 的標准,思路調用 ERC-20 Approve 來授權 Permit2 合約的操作權限。
慢霧提到,Permit 比 Approve 授權釣魚更加危險,畢竟只要竊取到了籤名就獲得了授權。例如 DEX 裏的掛單功能,只需要用戶對某個消息進行籤名,用戶就可以在不支付Gas 的情況下將資產委托給 DEX 處理,但如果這個 DEX 是個釣魚網站,僞造了惡意消息讓用戶籤名,用戶的資產就有可能丟失。Permit 籤名作為鏈下行為,用戶也很難注意到自己的籤名是否已經泄露。
對於錢包來說,不僅需要可以解析 Permit 籤名信息,為了避免釣魚網站,也需要清晰展示來源網站,通過 Logo 和 URL,幫助用戶判斷其是否經過社區認證,是不是存在未知風險。
籤名合約交互的場景
像是 Uniswap、Sushi、Tokenlon、OpenSea 和跨鏈橋等常見 DApp ,錢包也需要支持所見即所籤,可以展示交易完成後預計的代幣數量增加和減少的變化情況,幫助用戶判斷該筆交互是否符合預期,也可以從根源避免出現零元購的風險。
最後
我們探討了各種籤名應用場景的潛在風險和應對策略,但值得注意的是,這只是冰山一角,實際上還有許多其他的風險尚未提及。
在區塊鏈世界中,新的技術和應用不斷湧現,帶來了新的挑战和風險。無論是作為錢包开發者還是用戶,都需要保持關注,理解並應對這些風險,以便更好地利用區塊鏈技術帶來的便利。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC
7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...
悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤
一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...