Brave Wallet:Sign-In With Ethereum と CoW Swapで、より安全な署名体験を実現

今回の投稿は、Principal EngineerのAnthony TsengとStaff EngineerのAnirudha Boseによる機能改善を紹介します。また、開発時のコードレビューに協力してくれたCoW SwapチームのAnxo Rodriguezに感謝の意を捧げます。

Anirudha Bose寄稿

要約

Braveブラウザバージョン1.60のリリースにおいて、Brave Walletに2つの強力な機能を導入することになりました。

Sign-In With Ethereum (SIWE) では、ERC-4361メッセージの解析のためのファーストクラスのサポートと、新しいUXによって、大規模な改修を行いました。また、Brave Swapのために再設計された署名体験をCoW Swapのオーダーにも拡張しました。これらの機能により、Brave Walletでメッセージ署名におけるセキュリティとUXの改善を実現しました。

Sign-In With Ethereum

Sign-In With Ethereumとは何か?

Sign-In With Ethereum(SIWE)は、従来のログイン認証情報をウォレットベースのサインイン機能に置き換えるものです。あなたのEthereumウォレットに、消すことのできないインクでスタンプを押して、ログインをするような世界を想像してみてください。この機能は、ログイン認証の管理を中央集権的なID管理会社から切り離し、各個人へとその管理を移行させます。

Sign-In With Ethereumプロトコルは、ERC-4361で定義されている標準メッセージフォーマットに署名することで、Ethereumアカウントが外部サービスにサインインできる方法を定義しています。 このように取り決めが定義されているおかげで、実装の異なる様々なウォレットにおいて、セルフ・カストディアルな(自分自身でアカウントを管理するような)ID管理を行うことができるのです。

Sign in with Ethereumオプションoptionが旧来的なサインインオプションの隣に表示されている

SIWEのネクストレベル

Brave Walletは常にSIWEをサポートしてきました。SIWEが使用しているERC-191(Signed Data Standard)に基づき、私たちはSIWEのプロンプトを人間が読める平文メッセージとして表示していましたが、そこにはウォレットによる検証はありませんでした。

この最新のアップデートでは、ERC-4361準拠メッセージ用のABNF parserを実装し、Sign-In With Ethereumのサポートに大幅な改善を行いました。これにより、私たちはSIWEメッセージを見やすくするとともに、サードパーティのアプリやサービスへの署名の安全性が向上されました。しかし、SIWEメッセージがこれらの仕様に準拠していない場合もあるため、相互運用性を最大化するためにレガシーのERC-191署名にフォールバックします。

Brave Walletでサインイン プロンプトが表示されている

安全性向上機能

SIWEメッセージが正常に解析されると、ドメイン、アカウント、およびチェーンIDフィールドのバインディングについてメッセージを検証し、不一致がある場合はエラーメッセージを表示します。この措置は、悪意のある者が正規のサードパーティ・サービスの有効な認証を使用するタイプのフィッシング攻撃を防止するために設計されています。サインインの動作は基本的にメッセージの署名を生成するものであり、攻撃者によるなりすましの影響を受けやすいため、このような検証はSIWEにとって特に重要なのです。

セキュリティリスク検知プロンプトが表示されている

CoW Swap

CoW Swapとは?

Coincidence of Wants (CoW)は経済学の概念で、特に物々交換システムに関連するものです。これは、二人の当事者がそれぞれ、もう一方が欲しがっている品物を持っていて、これらの品物を直接取引することに合意する状況を表しています。

CoW Swapは、このアイデアをオンチェーン資産の取引に活用します。CoWプロトコルは価格を検出するメカニズムとしてバッチオークションを活用する完全にパーミッションレスな取引プロトコルです。CoWプロトコルは、必要なときにいつでも利用可能なすべてのオンチェーン流動性を利用することに加えて、CoWを介して流動性を最大化するバッチオークションを可能にします。ユーザーはCoWスワップ・インターフェースを用いて、署名されたEIP-712タイプメッセージでオフチェーンで取引意思(インテント)を表明します。CoWプロトコルはこれらのインテントをバッチオークションに集め、最適なCoWを見つけるための競争に勝ち残ったソルバーによって決済されます。勝利したソルバーは、すべてのインテントを単一のオンチェーン取引で実行し、取引余剰を最大化し、ネットワーク手数料を節約します。

Cow決済例のトランザクション詳細のスクリーンショット

CoW決済トランザクション

オフチェーン・メッセージの危険性

CoW注文のようなオフチェーン・メッセージに署名することは、残念ながらどのウォレットもフレンドリーなUXではありません。オフチェーン・メッセージはガスレス(手数料のかからない)エクスペリエンスを通じてデータを交換する方法を提供することでユーザビリティを大幅に向上させる一方で、そのようなメッセージはユーザーにとって大部分が不透明で理解できません。これはトランザクションのコールデータのブラインド署名(以前のブログ記事で詳しく説明しています)とよく似ています。オフチェーン・メッセージへの署名にはガス代がかからないため、ユーザーは詳細を確認することなく署名リクエストを何もわからないままに承認してしまう可能性が非常に高いのです。悪意を持って作成されたメッセージは、その冗長さゆえに疑いを持たれることなく、ユーザーのウォレットから資産を流出させることが可能なのです。

2022年12月、あるスキャマーが1ヶ月間にわたる巧妙なソーシャルエンジニアリングスキャムによって、当時852ETH(107万米ドル)以上の価値があった14個のBAYC(NFT)を盗みました。被害者は騙されて、手数料のないSeaportメッセージに署名しましたが、実際には0.00000001ETHで詐欺師に自分のBAYCすべてをリストアップしたプライベートバンドルを作成していたのです。このような攻撃は、NFTマーケットプレイスやDEXなどでオフチェーンメッセージが大量に採用されているため、ますます増加しています。

スキャマーが$1.07M USD相当の14のNFTを盗んだ事件に関連したトランザクションの	スクリーンショット

画像提供:@serpent on X

EIP-712 によるレスキュー

EIP-712は、バイト列とは対照的に、型付けされた構造化データに署名するための標準を提案したものです。型付けのメッセージは機械にとっては読みやすいのですが、多くの人々にとって理解が難しいものです。ユーザーがCoW注文の署名要求を問題がないことを確認した上で承認できるようにするためには、フォーマットされた金額、トークンのシンボル、ロゴなどの注文の詳細がすべてはっきりと見える必要があります。

ベルリンで開催されたDappCon 2023で、CoW Swapのエンジニアリング・チームと出会い、この問題を解決するアイデアを思いつきました。一緒にブレーンストーミングをした後、私たちはCoWオーダー用のメッセージ・パーサーを実装し、関連するパラメーターを抽出して、理解しやすい方法でレンダリングするソリューションに辿り着きました。パーサーは、CoW Swapで使用される特定のオーダー構造体のタイプハッシュに関連付けられ、パーサーがCoW以外のメッセージで使用されるのを防ぎます。また、ユーザーがネイティブアセット(ETHやXDAIなど)をスワップする場合など、スワップがオンチェーントランザクションを含む場合のために、calldataパーサーも実装しました。最終的には以下のようなイメージになりました。

A screenshot of an enhanced signature-request prompt, enabled by a novel message parser for CoW orders

終わりに

Braveブラウザの1.60リリースでは、Brave Walletを使用したEthereumのサインイン体験を完全に刷新しました。従来のログイン認証情報を使ってWebサイトにサインインするのと同等のSIWEエクスペリエンスを実現する安全機能とUXの改善を達成しました。 https://login.xyz で実際に新しいBrave Walletでのサインインを試すことができます。また、こちらのWebサイトにはSIWEをサポートするための開発者向けドキュメントもございます。

私たちは同様の改良をCoW Swapの注文の署名にも拡張し、チェーン外の読めないメッセージをユーザーが簡単に確認できるものに変えました。EthereumとGnosis Chainの https://swap.cow.fi で試すことができます。

私たちは、悪意のあるメッセージやトランザクションに不用意に署名することからユーザーを守るため、 Brave Walletの署名体験にも同様の改善をもたらすつもりです。 Brave Walletで間も無く対応予定のこれらの改善にご期待ください。

まだBrave Walletをお使いではありませんか?今すぐBraveをダウンロードして、ツールバーのWallet iconをクリックしてすぐに使用することができます。

Related articles

Braveで新しいWebを体験する準備はできましたか?

Braveはプライバシーとパフォーマンスを重視するWebのパイオニアからなるチームによって開発されています。Braveを利用しWebの再構築に協力していただけませんか?

close

もう少しです...

最高のオンラインプライバシーを60秒で入手

ダウンロードが自動で開始しない場合は、 .

  1. Brave をダウンロード

    ポップアップウィンドウで「保存」をクリックし、ダウンロードが完了するのを待ちます。

    ダウンロード完了までしばらくお待ちください(場合によってはポップアップウインドウの “保存” をクリックする必要があります)。

  2. インストーラーを実行

    画面右上にあるダウンロード済みファイルをクリックし、指示に従ってBraveをインストールしてください。

    ダウンロードしたファイルをクリックし、指示に従ってBraveをインストールしてください。

  3. インポート設定

    設定中に、古いブラウザからブックマーク、拡張機能、パスワードをインポートします。

ヘルプが必要ですか?

どこでも、より良いプライバシーを

Braveアプリをダウンロードして、出先でもモバイルのプライバシーを確保しましょう。

Download QR code
このファイルをクリックしてBraveをインストール Brave logo
このファイルをクリックしてBraveをインストール Brave logo
このファイルをクリックしてBraveをインストール Brave logo