EIP-3074の導入後、誤った署名はイーサリアム口座の残高を枯渇させる可能性があります。実際、この懸念は現実のものとなっています。事態が手に負えなくなる前に、この懸念に一時的に対処しておきましょう。
まず、固定されていないデータへの署名をサポートしているウォレットを現在知りません。つまり、EIP-3074をサポートしているウォレットは現在ありません。ダッシュボードをいくら閲覧しても、高度な機能を有効にしても、EIP-3074のメッセージに署名することは現在のところ不可能です。
dappsにログインするために署名するメッセージは、EIP-3074とは全く異なる規格であるEIP-191に基づいています。この規格では、署名されたメッセージに以下のデータが追加されます:
0x19 <0x45 (E)>;
このため、ダップへのログイン中に誰かを騙して有効なイーサリアム取引に署名させることは不可能である。トランザクションは以下のバイト値をプレフィックスとして使用する:
0x01 - 2930 tx 0x02 - 1559 tx 0x03 - 4844 tx
詳細はこちらを参照:イーサリアム実行仕様
EIP-3074は接頭辞0x04を使用する予定である。これにより、イーサリアムの他のすべてのタイプの署名可能なデータとの曖昧さがなくなります。ウォレットは、ユーザーがこれらのメッセージに積極的に署名できるようにすることを選択する必要があります。
ウォレットがEIP-3074をどのように統合するかによって、ユーザが悪用されやすくなる可能性がある。これを理解するためには、EIP-3074シグネチャの仕組みを確実に理解する必要がある。
署名を構築するための認証メッセージには、発呼側アドレスが含まれる。重要なのは、AUTHが署名を有効とみなす唯一のアドレスである。
残高が枯渇する口座については、以下の2つの条件を同時に満たさなければならない:
- ウォレットは、ユーザが任意のインボーカアドレスに署名できるようにしなければならない。
- ユーザーは、呼び出し元が信頼できるかどうかを検証してはならない。これは、ユーザが以下のいずれかのアクションを実行しても問題がないことを意味する。
つまり、どちらかを実行しても、それだけで問題が発生することはない。
私たちはウォレットソフトウェアが、EIP-3074の呼び出し元はコントラクトというよりもむしろウォレットソフトウェアコードの拡張のようなものであることを理解してくれることを願っています。ウォレットはユーザーが自由に任意のコードを実行し、秘密鍵(pk)にアクセスすることを許しません。同様に、ウォレットはユーザーがイーサリアムアカウントを任意に委譲することを許すべきではないのです。
したがって、ウォレットソフトウェアがEIP-3074を安全でなく統合し、ユー ザーが対話する発信者を検証しない場合、悪意のある発信者に委任する可能性がある。しかし、EOAから1つのトランザクションを送信し、進行中のAUTH署名を取り消すことで、これを取り消すことは可能である。
最低でも、ウォレットソフトウェアはEIP-3074メッセージに署名することを、秘密鍵をエクスポートするのと同じくらい重要なことにする必要があります。ウォレットが3074を安全に統合していると仮定しても、アカウントはまだ漏洩する可能性がある。これはバッチ・トランザクションの基本的な性質です。これは、複数の操作を簡単に送ることができるのと同じように、攻撃者があなたを騙して、コントロールされているアドレスに資産のバッチを送ることを可能にします。
ウォレットソフトウェアは、署名する各操作を明確に表示しなければならない。このようにすれば、「1つの取引のつもりが、この署名要求によって複数の取引になってしまった」ということに簡単に気づくことができる。
そう、EIP-3074はウォレットに大きな信頼を置いている。しかし、私たちはすでに秘密鍵でウォレットを安全に信頼している。
EIP-3074は安全に統合して使用することができます。どのような財布がどのようにこれを実装するかについての質問がある場合は、お気軽にお問い合わせください。EIP-3074の作者として、私たちは現在、この規格の次の開発段階をどのように支援するのが最善かを検討しています。
過去数年間、私たちはその使い方や悪用法に関するシナリオの開発にかなりの時間を費やしてきた。私たちは、これらのアイデアが本番で実装され始めていることに興奮している。しかし、これが最も困難な部分であることも認識している。
まとめると、EIP-3074以降、1つの誤った署名がイーサリアム口座の残高を枯渇させる可能性があります:
- 現在のウォレットは、EIP-3074で要求されている署名タイプをサポートしていません。
- EIP-3074署名の発信者フィールドは極めて重要です。悪質な発信者は、あなたの資金を盗む可能性があります。
- ウォレットは、発信者アドレスが信頼できるものであることを保証する必要がある。これは、ウォレットが現在どのように任意のコードの実行を防いでいるかに似ている。
- EIP-3074のバッチ・トランザクションは、悪意のある行為者があなたを騙して資産を移転するためのトランザクションに署名させる可能性がある世界をまだ開いている。ウォレットはEIP-3074メッセージに署名する際に何が起こるかを明確に表示する必要がある。
- そう、私たちはウォレットに高い信頼を寄せているが、ユーザーはすでに最高レベルの信頼である秘密鍵をウォレットに託しているのだ。
EIP-3074およびEIP-4337: EIP-3074は、アカウント・アブストラクション・プロバイダーにとって非常に有益である。
ERC-4337は、新規ユーザーを暗号空間に導入する最良の方法である。EIP-3074は、既存のユーザーをスマート口座に導入する最良の方法です。