TechFlow Logo
ログイン/ 登録
ETHガス
Gwei
恐怖
gas
EIP-3074以降、悪意のある署名によってイーサリアムアカウントの資金が使い果たされる可能性はありますか?

EIP-3074以降、悪意のある署名によってイーサリアムアカウントの資金が使い果たされる可能性はありますか?

2024.04.15
共有先
EIP-3074の署名における呼び出し元フィールドは非常に重要であり、悪意のある呼び出し元が資金を盗む可能性がある。

執筆:lightclients

翻訳:MetaCat

EIP-3074 導入後、誤った署名によってイーサリアムアカウントの残高が完全に失われる可能性がある。

はい、これは本当です。

EIP-3074共同著者がここにいます!事態がさらに混乱する前に、この懸念を一時的に鎮めましょう。

まず第一に:現時点でEIP-3074に対応した署名機能を持つウォレットはないと聞いています。つまり、現在どのウォレットもEIP-3074をサポートしていません。ダッシュボードをいくつ見たり、どれだけ高度な機能を開いたとしても、現時点ではEIP-3074のメッセージを署名することは不可能です。

dappへの「ログイン」時に署名するメッセージは、EIP-3074とはまったく異なるEIP-191に基づく標準を使用しています。これにより、以下のデータが署名対象のメッセージに追加されます:

0x19 <0x45 (E)> <thereum Signed Message:\n" + len(message)> <data to sign

 

これが、dappのログイン要求に署名することで実際のイーサリアム取引を有効化されてしまうことを防いでいる理由です。

取引は単一バイト値で始まるプレフィックスを持ちます:

0x01 - 2930 tx
0x02 - 1559 tx
0x03 - 4844 tx

 

詳細はこちら:https://github.com/ethereum/execution-specs/tree/master/lists/signature-types

EIP-3074はプレフィックス0x04を使用する予定です。これにより、イーサリアム内で他のすべての種類の署名可能なデータとの曖昧さが解消されます。ウォレットはユーザーがこれらのメッセージに署名できるように明示的に選択しなければなりません。

ウォレットがEIP-3074をどのように統合するかによっては、ユーザーが悪用されやすくなる可能性があります。これを理解するには、まずEIP-3074の署名方式の仕組みを正しく理解する必要があります。

署名される認証メッセージには以下のフィールドがあります。特に重要なのは、「呼び出し元アドレス(invoker address)」が含まれている点です。これはAUTHが署名を有効と判断する唯一のアドレスです。

アカウントの残高を完全に失うためには、以下の両方の条件が満たされる必要があります:

1) ウォレットがユーザーが任意の呼び出し元アドレス(invoker address)に対して署名することを許可していること、

2) ユーザーが呼び出し元(invoker)が信頼できるかどうかを確認していないこと。

つまり、ユーザーが上記のどちらか一方でも実行しなければ問題ありません。

我々はウォレットソフトウェアに対して次のように考えてほしいのです:EIP-3074の呼び出し元(invoker)は、むしろウォレットのコード拡張のようなものであり、単なるコントラクトではない。ウォレットはユーザーが任意のコードを自由に実行して秘密鍵(pk)にアクセスすることを許可しません。同様に、ユーザーが自分のイーサリアムアカウントを無制限に委任することも許可すべきではありません。

したがって、ウォレットソフトウェアがEIP-3074を安全でない方法で統合し、かつユーザーが自分がやり取りしている呼び出し元を検証しない場合、悪意ある呼び出し元にアカウントを委任してしまう可能性があります。しかし、EOAから単一のトランザクションを送ることでいつでもこれを撤回できます。これにより、すべての「進行中の」AUTH署名が無効化されます。

少なくとも、ウォレットソフトウェアはEIP-3074のメッセージ署名を、秘密鍵のエクスポートレベルの重大事項として扱うべきです。

仮にウォレットが3074を安全に統合したとしても、アカウントが盗まれる可能性は依然として存在します。これはバッチ取引の基本的性質によるものです。あなたが複数の操作を簡単にまとめて送信できることは、攻撃者があなたの資産をまとめて彼らが制御するアドレスへ送るように騙すことも可能にするということです。

ウォレットソフトウェアは、あなたが署名しようとしている各操作を明確に表示しなければなりません。これにより、「私は1回の取引しか予定していなかったのに、この署名リクエストでは十数回の取引も行われる」ということに容易に気づけます。ブラインド署名(blind signing)でバッチ処理を行う場合、これを検出することはできません。

はい、EIP-3074はウォレットに対して非常に高い信頼を置きます。しかし、私たちはすでに秘密鍵の安全性に関してウォレットを信頼しています!それ以上の信頼関係はありません。

EIP-3074は安全に統合・使用することが可能です。もしウォレット側でどう実装すべきか疑問があれば、いつでも私たちに連絡してください。EIP-3074の著者として、我々は現在、この標準の次の段階の発展を最適に支援する方法について検討しています。

過去数年間、我々はそれがどのように使用され、悪用され得るかという想定シナリオの開発に多くの時間を費やしてきました。こうした考えが実際に本番環境で使われ始めていることにわくわくしています。同時に、これが最も困難な部分であることも認識しています。

EIP-3074導入後に、単一の誤署名でイーサリアムアカウントの残高が失われるという懸念をまとめると:

  • 現時点では、新しいフォーマットに従ったEIP-3074タイプの署名をサポートするウォレットは存在しない。

  • EIP-3074署名内の呼び出し元(invoker)フィールドは極めて重要。不正な呼び出し元が資金を盗む可能性がある。

  • ウォレットは呼び出し元アドレスが信頼できるかを保証する必要がある。これは、現在のウォレットが任意コードの実行を防ぐ仕組みと同様である。

  • EIP-3074におけるバッチ取引は、悪意ある行為者が資産移転の取引に署名させるようだます世界を生み出す。EIP-3074メッセージ署名時に何が起こるかをウォレットは明確に表示しなければならない。

  • はい、ウォレットに対する信頼は高いですが、ユーザーはすでに最高レベルの信頼として秘密鍵を預けています。

EIP-3074 と EIP-4337

EIP-3074はアカウント抽象(Account Abstraction)プロバイダーにとって非常に有益なことであり、顧客にとって大きな利点となります。

  • ERC-4337は新規ユーザーを暗号世界に導入する最良の方法です。

  • EIP-3074は既存ユーザーをスマートアカウントに導入する最良の方法です。

TechFlow公式コミュニティへようこそ

Telegram購読グループ:https://t.me/TechFlowDaily

Twitter公式アカウント:https://x.com/TechFlowPost

Twitter英語アカウント:https://x.com/BlockFlow_News

お気に入りに追加
SNSで共有