作者:lightclients

翻譯:MetaCat

EIP-3074 後,惡意的簽章會導致以太坊帳戶資金被耗盡嗎?

在EIP-3074 之後,一個錯誤的簽名將能夠耗盡你以太坊帳戶上的餘額。

是的,這是真實的。

EIP-3074 聯合作者在這裡!在事情變得更加失控之前,讓我先暫時平息這個擔憂。

首先:我沒有聽說目前有任何錢包,支持簽署無前綴數據。這意味著目前沒有錢包支援EIP-3074。無論你瀏覽多少個控制面板或開啟多少個高級功能。現在無法簽署EIP-3074 的訊息。

你簽署「登入」dapp 的訊息使用的是基於EIP-191 的完全不同於EIP-3074 的標準。這會將以下資料加入你簽署的訊息:

0x19 <0x45 (E)>

這就是為什麼不可能欺騙登入dapp 的人來實際簽署有效的以太坊交易。

交易以單字節值作為前綴:

0x01 - 2930 tx0x02 - 1559 tx0x03 - 4844 tx

更多資訊請見:https://github.com/ethereum/execution-specs/tree/master/lists/signature-types

EIP-3074 計劃使用前綴0x04。這將消除它與以太坊中所有其他類型的可簽署資料的歧義。錢包必須主動選擇允許用戶簽署這些訊息。

基於錢包整合EIP-3074 的具體方式,可能會造成用戶更容易被利用的情況。要理解這一點,我們需要確保自己理解EIP-3074 簽名的工作原理。

建置簽名的身份驗證訊息具有以下欄位。重要的是,它包括一個呼叫者地址。這是AUTH 認為簽名有效的唯一地址。

EIP-3074 後,惡意的簽章會導致以太坊帳戶資金被耗盡嗎?

對於要耗盡餘額的帳戶,必須同時滿足以下兩點:

1) 錢包需要允許使用者簽署到任何呼叫者位址(invoker address),

2) 使用者必須沒有驗證呼叫者(invoker)是否可信。

這意味著,用戶執行了其中任何一條都不會有問題。

我們希望錢包軟體明白: EIP-3074 呼叫者(invoker)更類似於錢包軟體程式碼的擴展而不是合約。錢包不允許用戶自由地運行任意程式碼並存取其pk(私鑰);同樣,他們不應該允許用戶任意委託(delegate)他們的以太坊帳戶。

因此,如果錢包軟體不安全地整合EIP-3074,且使用者不驗證他們正在互動的呼叫者,則可能會委託給惡意呼叫者。但是,依然可以透過從EOA 發送單一tx 來撤銷。這將撤銷所有「正在進行的」AUTH 簽名。

至少,錢包軟體應該讓簽署EIP-3074 訊息成為一件大事,就像匯出你的私鑰等級的大事一樣。

假設錢包安全地整合了3074,帳戶仍然有可能被盜。這是批量交易的基本屬性。它允許你輕鬆發送多個操作,就像它允許攻擊者誘騙你將一批資產發送到他們控制的地址一樣。

錢包軟體必須清楚顯示你正在簽署的每個操作。這樣,很容易注意到「我只打算進行一筆交易,但這個簽名請求讓我還進行了十幾次交易」。如果透過盲簽(blind signing)進行批次處理,則無法偵測到這一點。

是的,EIP-3074 非常信任錢包。但是,我們已經用我們的私鑰安全地信任他們了!沒有更高層次的信任。

可以安全地整合和使用EIP-3074。如果任何錢包對如何執行此操作有疑問,請隨時與我們聯繫。作為EIP-3074 的作者,我們目前正在考慮如何才能最好地幫助該標準的下一階段發展。

在過去的幾年裡,我們花了很多時間來發展關於如何使用和濫用它的假設場景。我們很高興這些想法開始投入生產。但我們也認識到這是最困難的部分。

總結一下EIP-3074 之後,單一錯誤簽章會耗盡你的以太坊帳戶餘額的擔憂:

  • 目前錢包不支援EIP-3074 類型的簽名,該簽名遵循新的格式。
  • EIP-3074 簽章中的呼叫者欄位非常重要。一個不良的呼叫者可能會竊取你的資金。
  • 錢包需要確保呼叫者位址是可信的。這類似於錢包目前如何防止執行任意程式碼。
  • EIP-3074 中的大量交易仍然會開啟一個世界,惡意行為者可以欺騙你簽署轉移資產的交易。錢包需要清楚顯示當簽署EIP-3074 訊息時會發生什麼。
  • 是的,我們對錢包有很高的信任,但用戶已經將私鑰託付給它們,這是最高等級的信任。

EIP-3074 後,惡意的簽章會導致以太坊帳戶資金被耗盡嗎?

EIP-3074 與EIP-4337

EIP-3074 對帳戶抽象(Account Abstraction)提供者來說是一件非常好的事情,因為它對我們的客戶非常有益。

  • ERC-4337 是將新用戶引入加密領域的最佳方式。
  • EIP-3074 是將現有用戶引入智慧帳戶的最佳方式。