原作者: lightclients
出典: ツイッター
編集者: MetaCat
EIP-3074 以降、不正な署名によりイーサリアム アカウントの残高が枯渇する可能性があります。
はい、それは本当だ。
EIP-3074 の共著者がここにいます!事態がさらに制御不能になる前に、この懸念を少し休ませてください。
まず第一に、プレフィックスのないデータへの署名をサポートしているウォレットは現在聞いたことがありません。これは、現在 EIP-3074 をサポートしているウォレットがないことを意味します。閲覧するコントロール パネルの数や、有効にした高度な機能の数は関係ありません。現時点では、EIP-3074 のメッセージに署名できません。
dapp に「ログイン」するために署名するメッセージは、EIP-191 に基づく、EIP-3074 とはまったく異なる標準を使用しています。これにより、署名されたメッセージに次のデータが追加されます。
0x19 <0x45 (E)> <thereum 署名済みメッセージ:\n" + len(message)> <署名するデータ
このため、dapp にログインしたユーザーを騙して、有効な Ethereum トランザクションに実際に署名させることは不可能です。
トランザクションには、1 バイトの値がプレフィックスとして付けられます。
0x01 - 2930 トランザクション0x02 - 1559 トランザクション0x03 - 4844 トランザクション
詳細については、https://github.com/ethereum/execution-specs/tree/master/lists/signature-types を参照してください。
EIP-3074 ではプレフィックス 0x04 を使用する予定です。これにより、Ethereum 内の他のすべての種類の署名可能なデータとの区別が明確になります。ウォレットは、ユーザーがこれらのメッセージに署名できるようにすることを積極的に選択する必要があります。
ウォレットが EIP-3074 を統合する具体的な方法によっては、ユーザーがより悪用されやすい状況が発生する可能性があります。これを理解するには、EIP-3074 署名がどのように機能するかを理解する必要があります。
構築された署名付き認証メッセージには次のフィールドがあります。重要なのは、発信者の住所が含まれていることです。これは、AUTH が署名を有効と見なす唯一のアドレスです。

アカウントの残高が減るには、次の両方の条件が満たされている必要があります。
1) ウォレットはユーザーが任意の呼び出し元アドレスに署名できるようにする必要がある。
2) ユーザーは呼び出し元が信頼できるかどうか検証してはなりません。
つまり、ユーザーがいずれかを実行しても問題は発生しません。
EIP-3074 呼び出し側は契約というよりもウォレット ソフトウェア コードの拡張のようなものだということをウォレット ソフトウェアに理解してもらいたいと考えています。ウォレットは、ユーザーが任意のコードを自由に実行したり、pk (秘密鍵) にアクセスしたりすることを許可してはなりません。同様に、ユーザーが自分の Ethereum アカウントを恣意的に委任することを許可すべきではありません。
したがって、ウォレット ソフトウェアが EIP-3074 を安全に統合しておらず、ユーザーがやり取りしている発信者を検証しない場合、悪意のある発信者に委任される可能性があります。ただし、EOA から単一の tx を送信することで元に戻すことができます。これにより、進行中のすべての AUTH 署名が取り消されます。
少なくとも、ウォレット ソフトウェアは、秘密鍵のエクスポートが重要なのと同じように、EIP-3074 メッセージの署名を重要なものとして扱う必要があります。
ウォレットが 3074 と安全に統合されているとしても、アカウントが侵害される可能性は依然としてあります。これはバッチトランザクションの基本的な特性です。攻撃者がユーザーを騙して、自分が管理するアドレスに資産のバッチを送信できるようにすることと同様に、複数の操作を簡単に送信できます。
ウォレット ソフトウェアは、署名するすべてのアクションを明確に表示する必要があります。こうすることで、「1 件の取引だけを行うつもりだったのに、この署名要求のせいでさらに 12 件の取引が行われてしまった」ということに簡単に気づくことができます。バッチ処理がブラインド署名によって実行された場合、これを検出することはできません。
はい、EIP-3074 はウォレットに大きな信頼を置いています。しかし、私たちは安全に秘密鍵を彼らに託しました!これ以上の信頼レベルはありません。
EIP-3074は安全に統合して使用できます。ウォレットに関してご質問がある場合は、お気軽にお問い合わせください。 EIP-3074 の作成者として、私たちは現在、標準の開発の次のフェーズにどのように貢献できるかを検討しています。
私たちは過去数年間、それがどのように使用され、悪用される可能性があるかについての「もしも」のシナリオを開発することに多くの時間を費やしてきました。私たちは、これらのアイデアが生産に移り始めるのを楽しみにしています。しかし、これが最も難しい部分であることも私たちは認識しています。
EIP-3074 以降、1 つの不正な署名によって Ethereum アカウントの残高が枯渇するという懸念をまとめると、次のようになります。
- 現在、ウォレットは新しい形式に従う EIP-3074 タイプの署名をサポートしていません。
- EIP-3074 署名の発信者フィールドは非常に重要です。悪意のある発信者があなたの資金を盗む可能性があります。
- ウォレットは発信者のアドレスが本物であることを確認する必要があります。これは、現在ウォレットが任意のコードの実行を防ぐ方法と似ています。
- EIP-3074 でトランザクションをバッチ処理すると、悪意のある人物がユーザーを騙して資産を転送するトランザクションに署名させる可能性が依然として残ります。ウォレットは、EIP-3074 メッセージに署名するときに何が起こるかを明確に表示する必要があります。
- はい、ウォレットに対する信頼度は高いですが、ユーザーはウォレットに秘密鍵を託しており、それが最高レベルの信頼なのです。

EIP-3074 および EIP-4337
EIP-3074 は、顧客にとって非常に有益であるため、アカウント抽象化プロバイダーにとって非常に良いものです。
- ERC-4337 は、新しいユーザーに暗号通貨の分野を紹介する最良の方法です。
- EIP-3074 は、既存のユーザーをスマート アカウントにオンボードする最適な方法です。
