全12本中9本目4分で読めます

ブラウザウォレットなしで dApp を使う

Web サイトは、ブラウザの中にウォレットがあることを前提にしています。そしてブラウザは、パソコンの中で最も攻撃にさらされたプログラムです。AirNox はこれを、ページからはウォレットに見えて、中には何も持たない拡張機能で解決します。

ブラウザで開いたスワップページ。隅に鍵を持たない拡張機能のバッジがあり、デスクトップウォレットへのローカル接続、エアギャップ(air gap)、スマホへと続く
拡張機能は転送する。デスクトップが判断する。スマホが署名する。
目次

ウォレットではない拡張機能

AirNox のブラウザ拡張機能(browser extension)は、分散型アプリケーションが探す標準インターフェースを注入します。EVM ネットワーク向けの EIP-1193 と EIP-6963、TON Connect、そして Solana と Sui のウォレット標準です。ページから見れば、これはウォレットです。「どのアカウント?」「どのチェーン?」「これに署名して」といった問い合わせに、いつもどおりの形で応答します。

中身は、ただの中継役です。鍵を持たず、シード(seed)を保存せず、何にも署名できません。ページからのリクエストはすべて、ローカル限定のチャネルでデスクトップの AirNox Wallet に転送され、応答も同じ経路で戻ってきます。仮に明日、この拡張機能が悪意のあるコピーにすり替えられたとしても、盗むものも、署名に使えるものも何もありません。

従来型の拡張機能ウォレットの何が問題か

従来型の Web3 ウォレットは、鍵も含めて丸ごとブラウザの中にあります。つまり鍵が、パソコンの中で最も攻撃にさらされたプログラムの中に置かれます。ページに注入されたコードは、拡張機能のインターフェースに手が届きます。保存された秘密情報を守っているのは、最新の GPU なら大規模に総当たり(brute force)できる暗号化です。トラッカーや広告を同梱しているものも多くあります。受取アドレスのすり替えに対策しているものは、ほとんどありません。そしてそれと引き換えに、一日中メモリとプロセッサ時間を消費します。AirNox は、ブラウザ側の役割を中継役だけにとどめ、重要なものはすべてブラウザの外、つまりネイティブのデスクトッププログラムへ、AirGap モードではさらに一度もオンラインにならないスマホへと移します。

ローカル限定

拡張機能とデスクトップの間のチャネルは、あなたのパソコンの外に出ません。リレーサーバーも、クラウドセッションも、アカウントもありません。両端は互いを認証するので、ウォレットになりすましたプログラムは何も得られず、拡張機能になりすましたページも何も得られません。

権限はデスクトップが持つ

権限はブラウザではなく、AirNox Wallet の中にあります。権限はオリジンごと、チェーンごとに1つずつ付与され、暗黙の許可はありません。Ethereum のアカウントを見ることを許可されたサイトでも、Polygon のアカウントを見ることは許可されていません。あるウォレットで許可されたサイトでも、別のウォレットでは許可されていません。

オリジンとチェーンのグリッドに許可・未許可の印。ウォレットのロック中を示す行では、すべてが拒否される
オリジンごと、チェーンごと、フェイルクローズ。

オリジンは、ページが添えて送ってきた文字列ではなく、ブラウザが証明したものです。ページが別のサイトを名乗ることはできません。そして、システム全体がフェイルクローズです。明示的に許可されていないものはすべて拒否され、ウォレットが理解できないリクエストも拒否されます。

ロック中は「ノー」

ウォレットがロックされている間、拡張機能は、リクエストがどんな言い回しでも何も応答しません。ページがウォレットを起こすことも、アカウントを列挙することも、ロック解除後に実行される署名を予約しておくこともできません。ロックは、あなた自身がウォレットの中で解除します。ブラウザに応答が返るのは、そのあとだけです。

署名

トランザクションも、メッセージも、型付きデータも、すべて同じ経路をたどります。まずデスクトップがリクエストをデコードしてチェックし、標準操作を認識し、そっくりなもの、無制限承認(unlimited allowance)、不明なスペンダー(unknown spender)を警告します。AirGap モードでは、次に未署名のリクエストがスマホへ渡り、そこでバイト列からもう一度デコードされ、あなたに表示され、Accept(承諾)を押したあとでのみ署名されます。署名が戻ってくると、デスクトップがそれをブロードキャストし、ページはトランザクションハッシュを受け取ります。チェーンの切り替えも同じように扱われ、切り替えを認めるかどうかはウォレットが決めます。

シードがデスクトップにあるウォレットの場合は、同じチェックを経たうえで、スマホではなくウォレットの画面でデスクトップが署名します。

侵害されたページにできること、できないこと

侵害されたページや、ブラウザ内の汚染されたスクリプトは、あなたに嘘をつけます。あるトランザクションを見せて、別のものを要求できます。報酬の受け取り(クレーム)を、ウォレットの認証のように見せかけることもできます。できないのは署名です。判断は鍵のある場所で、スマホがデコードしたリクエストをあなたが読んだあとに下されます。ブラウザのポップアップならすんなり通ってしまうドレイナー(drainer)の承認も、スマホにはありのままの姿で届きます。このスペンダーに、この金額を許す承認として。それが無制限なら、スマホがそう伝えます。

これが、私たちの目指したトレードオフです。ページにとってはブラウザウォレットの便利さを、あなたにはそのリスクを一切負わせずに。

シリーズ記事一覧

  1. パソコンは侵害されていると想定する
  2. Mass Adoption Security:署名するのは、すでに持っているスマホ
  3. ギャップを越える3つの方法:QR コード、Bluetooth LE、NFC
  4. 電波上で姿を見せない:スキャンしても見つからない署名端末
  5. 通信経路は決して信頼しない
  6. スマホが見せるもの:署名端末上でのトランザクション解析
  7. スマホは自分の記録を残す
  8. デスクトップの金庫:Argon2id と、推測に強いプロファイル
  9. ブラウザウォレットなしで dApp を使う
  10. ルールのある MCP サーバー:上限の範囲で動く AI エージェント
  11. すべてを、1つの守られたウォレットで
  12. 小さく、ネイティブに:C++、JavaScript ランタイムなし、ワークステーションから Raspberry Pi まで

事前登録

メールアドレスを登録すると、リリースのお知らせをお送りします。それ以外のメールは送りません。