ブラインド署名(Blind Signing):仮想通貨で最も危険な承認行為
ブラインド署名とは、ウォレットがスマートコントラクトのデータを解読できない状態で暗号的な承認を行うことで、デバイス画面にはトークン名・金額・送金先の代わりにハッシュ値や「Data Present」という汎用メッセージが表示される。ユーザーは実質的にサイン白紙の小切手を切ることになり、ウェブサイトの表示を盲信せざるを得ない。DeFiやNFTの複雑なインタラクションで広く発生し、無制限トークン承認などの悪意あるコントラクト呼び出しに悪用されるため、セルフカストディにおける最重要攻撃面の一つとされる。承認は即座かつ不可逆であり、一度署名した内容は取り消せない。
ブラインド署名(Blind Signing)とは、ウォレットがスマートコントラクトのデータを人間が読める形式に変換できない状態で、暗号的な承認を行うことを指す。通常の送金であれば「0.5 ETHを0xABCへ送る」と画面に表示されるが、ブラインド署名では64文字のハッシュ値か「Data Present(データあり)」という汎用メッセージしか表示されない。ユーザーはサイトの表示を信じるしかなく、自分のデバイスの安全な画面では内容を確認できない。DeFiやNFTの複雑なインタラクションでは避けられないケースが多く、一度の誤った承認が即座かつ不可逆的な資産喪失につながるため、セルフカストディにおける最重要リスクの一つとされている。
ブラインド署名が生まれた背景
ハードウェアウォレットが最初に設計された当時、扱う取引はシンプルな送金だけだった。Bitcoinを送る、Ethereumを送る——これらは標準化されたフォーマットで記述され、小さな画面でも容易に解析・表示できた。しかしdAppの急速な普及が状況を一変させた。現代のDeFiプロトコルは「swap」「mint」「stake」「setApprovalForAll」など多彩な関数を呼び出し、それぞれが固有のコントラクトインターフェース(ABI)を持つ。ハードウェアウォレットの安全チップはこれらすべてを解析できるわけではなく、解析不能な場合は「Data Present」という汎用表示にフォールバックする。
この状況が生む本質的な問題は、2つの画面の間に存在する情報格差だ。PCやスマートフォンの画面には、ウェブサイトが意図的に表示した内容が映し出される。一方、ハードウェアウォレットの信頼できる画面には、安全チップが実際に解析できた内容だけが映る。コントラクトが複雑すぎると安全チップが降参し、攻撃者はこの格差の中に潜む。
ブラインド署名 vs. クリア署名:比較表
ブラインド署名の対義語として業界が推進しているのがクリア署名(Clear Signing)だ。これはウォレットがすべての重要フィールド——トークン、金額、送金先、呼び出す関数名——を自身の信頼できる画面に表示する方式で、「WYSIWYS(What You See Is What You Sign:見たものが署名したもの)」という原則に基づく。
| 比較項目 | ブラインド署名 | クリア署名 |
|---|---|---|
| デバイス画面の表示 | ハッシュ値 / 「Data Present」 | 「Router契約で500 USDCを承認」など |
| 信頼の根拠 | ウェブサイトの表示 | ウォレット自身の安全な画面 |
| コントラクト内容の解析 | 不可 | 可(トークン・金額・アドレス・関数名) |
| リスクレベル | 高 | 低 |
| 利用可能範囲 | 全チェーン(フォールバック) | 対応中だが未対応チェーンも多数 |
エコシステムの断片化——膨大な数のチェーン、ABI、トークン規格——によって、クリア署名が完全普及するまでブラインド署名は「必要悪」として残り続ける。
攻撃者はどのようにブラインド署名を悪用するか
手口は単純かつ壊滅的だ。フロントエンドは完全に正規に見えるが、バックエンドの呼び出しは悪意あるものになっている。代表的な攻撃パターンは以下の通り。
- 無制限トークン承認ドレイナー:ERC-20トークンに対して`max uint256`(事実上無制限)の承認を、攻撃者のコントラクトに付与するよう誘導する。以降、攻撃者はいつでもそのトークンをウォレットから引き出せる。
- 偽NFTミント・エアドロップ:「ミント」ボタンの裏側で`setApprovalForAll`が呼ばれ、NFTコレクション全体の権限が渡る。
- 「セキュリティ確認」フィッシング:「ウォレットが危険にさらされています」と緊急DM・メールを送り付け、「確認」ボタンで送金や承認を実行させる。
数字で見る:1回のブラインドクリックのコスト
具体的な被害シナリオで考えてみよう。あなたが8,000 USDCを保有するウォレットで、5,000 USDCのエアドロップを受け取ろうとしているとする。人気マーケットプレイスに見せかけたフィッシングサイトが「10 USDCを承認」と表示するが、デバイスに送られたコントラクトはドレイナーアドレスへの無制限承認を要求している。
| 項目 | 内容 |
|---|---|
| PC画面の表示 | 「10 USDCを承認」 |
| ハードウェアウォレットの表示 | 「Data Present」+ 64文字ハッシュ |
| 実際に承認した数量 | `115,792,089,237,316,195...` USDC(max uint256) |
| ドレイナーが引き出した金額 | 13,000 USDC(承認確定から数秒以内) |
| 取り戻せる金額 | 0 USDC(ブロックチェーン取引は不可逆) |
画面に表示された「10 USDC」という数字は、安全チップには一切送られていなかった。詐欺はまるごと情報格差の中に存在していた。
ハードウェアウォレット vs. ソフトウェアウォレット
コールドウォレット(ハードウェアウォレット)は秘密鍵をセキュアエレメントチップ内に隔離するため、PCが完全に侵害されても鍵は直接盗めない。信頼できる画面でスクリーンスプーフィングマルウェアもブロックできる。しかしブラインド署名の問題はこれで解決しない——コントラクトが解析不能であれば「Data Present」は変わらず表示される。ソフトウェア(ホット)ウォレットはさらにリスクが高い。鍵がインターネット接続されたOSに存在するため、マルウェアに取引を傍受・改ざんされる可能性がある。結論:ハードウェアウォレットは格段に安全だが、資産の分離と承認の管理はどのデバイスでも必須だ。
見落としやすいリスクと落とし穴
- 有効期限のない無制限承認:`max uint256`の承認は、ユーザーが明示的に取り消すまで永続的に有効だ。DeFiを利用するたびに古い承認が積み重なっていく。
- 見た目を信じて中身を信じない:「承認」ボタンの裏に`setApprovalForAll`やドレイナー呼び出しが隠れていることがある。
- ブラインド署名を常時オンにする:設定を常時有効にしておくと、事前署名済みの悪意ある取引を使った攻撃の窓口が開いたままになる。
- URLの1文字違い:`opensae.io`と`opensea.io`の違いは1文字だけ。文字ごとに確認する習慣が必要。
- 緊急性と未承諾連絡:突然のエアドロップ、「期間限定」ミント、「今すぐ確認」メールはほぼ例外なく詐欺のシグナルだ。
- 回復手段がない:分散型台帳では署名済み取引は確定。カスタマーサポートも返金も存在しない。
自分を守るための6ステップ防御プラン
- 資産を分離する:保有資産の90〜95%は、dAppに接続しない「金庫」ウォレットに保管する。dAppとのやり取りには残高を最小限に抑えた「バーナー」ウォレットを使う。承認はウォレット単位なので、バーナーが侵害されても金庫の資産は守られる。
- 接続前に検証する:URLを1文字ずつ確認し、公式ソースでコントラクトアドレスを確認する。セキュリティ監査の有無やコミュニティの警告情報もチェックする。少しでも不審を感じたら署名しない。
- 使う瞬間だけブラインド署名を有効にする:取引直前にトグルをオンにし、承認確定後すぐオフにする。常時有効は論外だ。
- クリア署名を推進するウォレットを選ぶ:自分がよく使うチェーンでWYSIWYSに対応したデバイスを選び、どの種類の取引をクリア署名できるかを把握しておく。
- 承認を定期的に確認・取り消す:Revoke.cashなどの承認確認ツールを使い、DeFiヘビーユーザーは月1回、それ以外は四半期に1回ペースで不要な承認を削除する。
- 緊急対応手順を知っておく:悪意ある署名の疑いがあれば、即座に該当トークンの承認をすべて取り消し、残り資産を新しいアドレスに移動させる。
ハードウェアウォレットのセキュリティについてより詳しくは、ハードウェアウォレットの仕組みとハードウェアウォレットのよくある失敗のガイドを参照してほしい。ソーシャルエンジニアリングの手口を理解するには仮想通貨詐欺の避け方も役立つ。
ブラインド署名が「許容できる」ケース
ブラインド署名が常に危険信号というわけではない。十分に監査された実績あるプロトコル(大手DEX、主要レンディングプラットフォーム)では、信頼の対象は「取引の表示」ではなく「プロトコルのコード」に移る——ただしバーナーウォレットの使用と残高最小化は前提条件だ。
またBitcoinのライトニングネットワークのような仕組みでは、ペイメントチャネルの更新が自動的かつ高速に行われるため、手動での都度確認は設計上現実的でない。信頼は監査済みプロトコル自体に置かれており、ランダムなコントラクト呼び出しとは性質が異なる。
COINOTAGの視点
ブラインド署名は、ウォレットの欠陥ではなくエコシステムが安全基準を追い越す速さで拡張した際の一時的な症状と捉えるべきだ。クリア署名の普及、リッチなデバイス画面、標準化されたdApp-ウォレット間メッセージング、そしてAIによる取引内容の自動説明——長期的な解決策はすでに動き出している。しかしWYSIWYSが普遍化するまで、現実的なアプローチは技術的ではなく行動的だ:資産を分離し、「Data Present」という表示を仮想通貨世界で最もリスクの高いアクションと捉え、承認をカレンダーで管理する。セルフカストディにおいて、规律あるOPSECは無頓着に使われる高価なハードウェアを常に上回る。