プラグインをインストールしなくても、Webブラウザー内でIFRAMEや類似のテクノロジーで機能する暗号化ウォレットがたくさんあります。
しかし、それらはフィッシングDapp攻撃から保護されていますか?DappがあなたをだましてETH送信の実際の量やその他の方法を隠したい場合は、Webブラウザー内でウォレットUIを変更しますか?
プラグインをインストールしなくても、Webブラウザー内でIFRAMEや類似のテクノロジーで機能する暗号化ウォレットがたくさんあります。
しかし、それらはフィッシングDapp攻撃から保護されていますか?DappがあなたをだましてETH送信の実際の量やその他の方法を隠したい場合は、Webブラウザー内でウォレットUIを変更しますか?
回答:
ストレージの分離
拡張:
MetaMaskなどのブラウザー拡張機能ベースのウォレットは、拡張機能のみがアクセスできる分離されたローカルストレージを使用し、Webサイトはアクセスできません。拡張機能はWebサイトにデータをプッシュするか、Webサイトはメッセージパッシング要求を実行してデータを要求できます。秘密鍵はサンドボックス化されたローカルストレージに保存され、メッセージに署名するためにWebサイトから拡張機能にリクエストが送信されます。拡張機能は、署名されたメッセージをWebサイトに返します。
ウェブベース:
などのブラウザベースの暗号財布Authereum、ポーティス、トーラス、およびFortmatic、サンドボックス化されたローカルストレージをiframe経由で使用します。Cookieとは異なり、ローカルストレージはドメインによって厳しく制限されています。つまり、Webサイトがローカルストレージに値を設定した場合、そのWebサイトだけが値を読み取ることができます。そのため、alice.comはbob.comのローカルストレージを読み取ることができません。ローカルストレージの機密値をサンドボックス化するために、他のWebサイトはローカルストレージを読み取ることができないため、x.wallet.comなどの制御されたサブドメインの下に設定されます。このサブドメインにはUIが含まれておらず、iframed通信専用です。これらのウォレットのweb3プロバイダーは、Webサイトに非表示のiframeをロードします。これは、サンドボックス化されたストレージを含むサブドメインとの通信に使用されます。たとえば、Authereumを使用したdapp.comのAliceの場合、Authereum sdkはiframeを使用してx.authereum.orgに接続し、postMessageを送信しますメッセージに署名するためのWebサイトからのiframeへの要求。これにより、ウェブサイトが秘密鍵などの機密データを読み取ることが制限され、ウェブサイトがウォレット拡張機能と同様に署名リクエストを送信することのみが許可されます。
すべてのWebベースのウォレットにサンドボックス化されたローカルストレージがあるわけではないため、どのWebサイトも保存された機密データを読み取ることができるが、ここで述べたウォレットはその点で安全であるため、それらの使用は避けてください。
フィッシング攻撃からの保護
フィッシング攻撃は、ユーザーがだまされて既知のWebサイトを使用しているのに、正規のWebサイトに似た悪意のあるWebサイトを使用しているときに発生します。Authereum、Portis、およびTorusは、ユーザー名とパスワードに基づくログインソリューションであるため、新しいポップアップまたはリダイレクトでログイン認証ウィンドウを開きます。これにより、ユーザーはWebサイトのドメインが正当かどうかを確認できます。Google authもこのパターンを実行します。ログイン時にユーザーが確認できる新しいウィンドウを開くだけでなく、一部のWebベースのウォレットプロバイダーは、メッセージとトランザクションに署名してリクエストを確認するときに新しいウィンドウを開きます。
クリックジャッキングは、Webサイトがiframeを介して読み込まれ、そのWebサイトがiframeされたWebサイトの上に別のUIをオーバーレイし、pointer-eventsをnoneに設定して、ユーザーに情報を入力させるか、オーバーレイされたUIのボタンをクリックさせると発生します。しかし、彼らは実際にiframed Webサイトのボタンをクリックしています。iframed Webサイトでのアクションは、攻撃者の財布に資金を送るようなものになる可能性があるため、これは危険です。
ウォレットサイトがiframeに読み込まれないようにするために、ウォレットサイトで実行する必要があるのは、HTTPヘッダーを設定することだけですX-Frame-Options: DENY
。これは、AuthereumとPortisがこれらの攻撃から保護するために行っていることです。
コンテンツスクリプトの信頼
ソースビューアープラグインを使用してブラウザー拡張機能のソースコードを確認するのは簡単ですが、悪意のあるコードで拡張機能が自動更新されないようにするために、ユーザーは拡張機能を手動でインストールして、githubからソースコードを取得することで、バージョンにロックできますオープンソースまたはソーススクリプトのダウンロードから。
Webベースのウォレットではウォレットサイトの所有者がコンテンツスクリプトを制御するため、ウォレットサイトの所有者またはウォレットサイトにアクセスした攻撃者がアクセスできるため、機密キーデータを管理するコンテンツスクリプトが悪意のないものであると信頼する必要があります。いつでもウェブサイトのソースコードを不正なコードで更新します。
コンテンツスクリプトを信頼するために、ウォレットサイトはIPFSでホストできます。これは、Webアドレスがコンテンツハッシュであるため、変更されないことを信頼できるためです。Authereumは、authereum.ethにアクセスするかcontenthash
、ENS名のプロパティを解決することで、これをすでに提供している1つの財布です。
便利さ
Webベースのウォレットは、どのOS、ブラウザ、デスクトップ、モバイルでも同じウォレットを使用できるため、ポータブルですが、ブラウザ拡張機能を使用すると、拡張機能を使用している環境に行き詰まります。拡張機能は非常に不便ですが、より多くのストレージ分離が保証されます。ただし、契約ベースのアカウントでは、ウォレット側でより多くのセキュリティ機能を提供できます。
契約ベースのアカウント
MetaMask、Portis、Torus、およびFortmaticはすべて外部所有のアカウントベース(EOA)です。つまり、資金は単一のキーで保存および管理されます。攻撃者が署名鍵にアクセスできる場合、その鍵に保存されている資金にもアクセスできます。
Authereumなどの契約ベースのアカウント(CBA)は、各アカウント契約がそれを管理するための複数のキーを持つことができ、各キーが実行できるアクションに対して制限された権限を持っている可能性があるため、より多くのセキュリティ保証を提供します。
契約ベースのアカウントの利点:
免責事項:私は、質問に記載されているウォレットの1つであるAuthereumの共同設立者です。
元の質問に答えるために、はい、多くのWebベースの暗号ウォレットは安全です。おっしゃったように、一部のウォレットは、悪意のあるアプリケーションからユーザーを保護するためにiframeを使用しています。このアーキテクチャでは、ユーザーの秘密鍵がプレーンテキストのdappに公開されることはありません。
悪意のあるdappがユーザーに悪意のあるデータに署名させようとする可能性があることは事実です。Webベースの暗号化ウォレットで実行できる追加の対策があります。
@ tom-temanが述べたように、ユーザーは新しいウィンドウのURLを確認することで、ログインの正当性を確認できます。
Authereumには、ユーザーの安全を維持するために追加の保護機能があります。これらのいくつかは、ユーザーのウォレットのコントラクトベースのアーキテクチャにより可能です。以下は、Authereumのセキュリティ機能の完全ではないリストです。
注:オーセリアムは完全に非カストダイアルであり、検閲に耐性があります。上記の機能はAuthereumシステムの一部ですが、必須ではなく、検閲されていると感じた場合はAuthereumユーザーがバイパスできます。
これらのウェブベースの暗号ウォレットの違いのいくつかをここで確認できます。