簽名:區塊鏈錢包安全的新挑戰

與傳統的中心化服務不同,區塊鏈錢包並不直接持有用戶的資產,只管理與區塊鏈交互的關鍵憑證——私鑰。當用戶進行一筆交易時,需要使用私鑰進行交易簽名,一旦私鑰洩露或丟失,資產將面臨損失的風險。

簽名的現狀

區塊鏈的早期,簽名相對簡單且風險較低,錢包主要的安全問題在於如何安全地存儲私鑰。隨著DeFi 和NFT 等應用場景的興起,鏈上交互變得越來越複雜。由於每一個DApp 項目都有獨特的簽名交互方式,再加上多鏈多網絡的維度,對於大多數人來說,理解各種複雜的簽名交互背後的信息變得困難。

這也導致了錢包安全的新挑戰,本身簽名的規範多,解析困難,把麵向開發者的結構化數據解析為普通用戶可以理解的信息的挑戰更大,還存在因為簽名展示的不清晰導致的各種潛在攻擊手段,如盲簽名和簽名釣魚等。就在最近,Web3 反詐騙平台Scam Sniffer 監測到有用戶通過因為Perimit 授權被釣魚攻擊,導致被盜10 萬USDC。

在探索簽名挑戰的解決方案之前,理解各種簽名方式至關重要。

簽名的方式

為了使各應用能與區塊鏈無縫交互,如讀取區塊數據或發送交易,必須有一個統一的連接標準。拿以太坊舉例,以太坊的每個客戶端都採納了統一的JSON-RPC 規範。

在這個規範中,與簽名相關的接口有:eth_sendTransaction、eth_sign 等。從技術的視角,簽名可分為兩大類:鏈下簽名和鏈上簽名。根據具體簽名應用場景,它們又可細分為簽名登錄、簽名授權、簽名轉賬及簽名合約互動等。

CQxBh4asu0BQMRIa2D7K_d5oj6q60sOjwzju8AZmAJJoZEC1cfIqXlGMjEPxpmTWOfr_VCAetis46pu3A28bzfdLxQQ4bB4KanZn1YCAi99ML2QiXAskPf_frMpuNAUBlyqB_RA6o56Htj7DxdpYv_0

如何避免簽名風險

不同的簽名場景潛藏著不同的風險,特別是當簽名過程複雜或不明確時,盲目簽名可能導致資產損失。對錢包而言,「所見即所簽」是解決盲簽問題的關鍵原則,用戶簽署的內容應與他們所看到和預期的完全相符。為了實施這一原則,錢包要確保的是準確展示每一筆簽名包含的可讀信息,而不是向用戶展示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 的安全性。

WSJF9A5LmhL1lIB816PRgs42daTqyTZYrfTMsAyCrnQqa-h44VM2PIw50d7Jl4mlBz_Pi8B7dDCMO38Zdwt_QjV_T59YU7X_PIheSwL2vzXuKh8JJqA_sigEd0QDVC3MLtG6eAh1lhnNXGxBTA14_ME

3. eth_signTypedData

遵循EIP-712 標準,對於結構化數據進行Hash 或簽名,推薦離線簽名的方式。慢霧有提到signTypedData_v4 也存在潛在的安全問題,雖然簽名信息展示很清晰,但可能是釣魚網站發起的一模一樣的簽名請求,後續會被濫用。

所以,對於錢包來說,不僅要支持解析signTypedData 結構化數據,還需要顯示簽名來源的應用名稱和URL、交互的歷史記錄。對於非標準的EIP-712 錢包,應該也有智能的風險提示。

簽名轉賬場景

Wk-YK5zm04_yNABHoC_LVhEYJ16lkQHoMQTMSwsduFnWVe5Wk4OfPffFuMntbC0ioqxkKQYevtI25g1C_Znwc8uLBtWrFdZhmyAjPMZgtKBCz9anTAdmF4lrzB19ZWaKiz71KqqeXsLir8ViUjuAAJg

轉賬是錢包最大的用例,這中間涉及到以太坊原生代幣ETH 的轉賬,以及ERC-20、ERC-721 標準的代幣轉賬,像是慢霧開發的MistTrack 等其他安全工具有提供相關的風險地址標籤,需要錢包智能地幫助用戶攔截或展示相關風險提示,避免更多人受騙。

gllXGl9xNSncNxBcckwGpZzFRzvoyJxn9-IQagxoUutrtSC56XKZnv0YmElzQk35CIPDcI4kpsbHcgDCdCzrhsFWeDpmHsBcGb8Z3ROX_iHBH_Fr-B8F5Cs8aA6lLlXFVrR6-Gn1ipBjsyYX93IfaL8

除此之外,轉賬還存在一些非常規的場景,比如說轉賬到合約地址:正常錢包轉賬都是給EOA 普通賬戶,如果收款地址為合約地址,需要特別注意,往往存在風險,當然也可能為合約錢包地址。對於錢包來說,如果可以智能的識別地址是普通地址還是合約地址,並針對合約地址增加特別的標籤提示,可以幫助用戶提高安全意識。

簽名授權場景

1. Approve 授權

LfGmJbdx3qgNiMazPv7SFsJaGIEcBFLZKeBYExjYUV-ZAXwNZrRUcNIj41R5_0ce9hrhRCIdsC9xY3s-lhnJTReSWxOAjY9FuZKAPRet19g4aGSD8rIMLfc_1RMc5YBlfq34qG1Hn4vMw1Imx7UbLSM

Approve 操作代表授權代幣轉賬權限給目標合約以便自動完成交易,常用於DEX 交易授權,對於錢包來說,需要支持展示授權詳情,並且支持修改授權額度和時間,避免因為無限授權額度,導致資金風險敞口變大,建議每次只授權需要交易的數量。

LLkMKxLal6jcSPdAW2ih449CZKJZbJqOxGUI6B8wXh0n9DUj-PVVd9MQKhlzD9DiENrhifQaFzv8WMv9l8F2k_J43erVfTFi-aVdWPTjFuIWDXfgRc9249P7iW5pbdLjKYk45_Kmyc227pgHJSyr0p0

針對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 簽名作為鏈下行為,用戶也很難注意到自己的簽名是否已經洩露。

VrIXRflJvFwck_G3B4PumgNNtbUAXW8eV5Ubf0dnkFrBidev7OOkrCHrlHFPssSF2HQKii6DDRq9fWzhIZKYsZtwoefAz4DG6kKZWN4GrLe1m2p2Lk-KSKvX2Pgnv8G7C1R33Wyxn9GQlMBXKtLkFc4

對於錢包來說,不僅需要可以解析Permit 簽名信息,為了避免釣魚網站,也需要清晰展示來源網站,通過Logo 和URL,幫助用戶判斷其是否經過社區認證,是不是存在未知風險。

簽名合約交互的場景

DhHnbsYFdp7ZAtQ3xhbKn1k_0kAVDasgf96G1MJ-nbYfO21P-qubuqdMQ6IFj52AAwsGkqQcWVHTyTS4XFJAUHt0g3cvMqVtLuDt_tHozBcdNT7555VMQHYZRMwMwbj8KIixieC2Ln1OmFPG5S2Ls2M

像是Uniswap、Sushi、Tokenlon、OpenSea 和跨鏈橋等常見DApp ,錢包也需要支持所見即所簽,可以展示交易完成後預計的代幣數量增加和減少的變化情況,幫助用戶判斷該筆交互是否符合預期,也可以從根源避免出現零元購的風險。

最後

我們探討了各種簽名應用場景的潛在風險和應對策略,但值得注意的是,這只是冰山一角,實際上還有許多其他的風險尚未提及。

在區塊鏈世界中,新的技術和應用不斷湧現,帶來了新的挑戰和風險。無論是作為錢包開發者還是用戶,都需要保持關注,理解並應對這些風險,以便更好地利用區塊鏈技術帶來的便利。

Total
0
Shares
Related Posts