ブラウザ・トラッキング

Canvas フィンガープリント

約 3 分で読めます

Canvas フィンガープリントとは

Canvas フィンガープリントとは、HTML5 の Canvas API を利用して、ブラウザに特定の図形やテキストを描画させ、その結果の微細な差異からユーザーを識別するブラウザフィンガープリント技術の一種です。

同じ描画命令を実行しても、GPU の種類、グラフィックドライバーのバージョン、OS のフォントレンダリングエンジン、アンチエイリアシングの実装などの違いにより、ピクセルレベルで異なる結果が生成されます。この差異をハッシュ値に変換することで、端末を識別する「指紋」として利用します。

技術的な仕組み

Canvas フィンガープリントの生成は、以下のステップで行われます。

  1. JavaScript で非表示の Canvas 要素を作成する
  2. 特定のテキスト (複数のフォント、サイズ、色を使用)、図形 (グラデーション、曲線、影など)、画像処理 (ブレンドモード) を描画する
  3. canvas.toDataURL() でピクセルデータを取得する
  4. 取得したデータのハッシュ値を計算し、フィンガープリントとする

この処理はユーザーに気づかれることなく、数ミリ秒で完了します。Cookie のようにブラウザにデータを保存しないため、ユーザーが削除・ブロックすることが困難です。

研究によると、Canvas フィンガープリント単体での一意性は約 50% 程度ですが、WebGL 情報、AudioContext フィンガープリント、フォント一覧などと組み合わせることで、90% 以上の識別精度に達します。

実際の利用場面

  • 広告トラッキング: トラッキングピクセルや Cookie と組み合わせ、Cookie を削除したユーザーの再識別に使用されます。
  • 不正検知: 銀行やオンラインサービスが、ログイン時の端末が普段と異なるかを判定するために利用します。正当な用途の 1 つです。
  • ボット検出: 自動化ツールやヘッドレスブラウザは Canvas の描画結果が実際のブラウザと異なるため、ボットの識別に活用されます。

プライバシーの観点では問題がありますが、不正検知やセキュリティ目的での利用は、ユーザーを保護する側面もあります。

対策方法

  • Tor Browser: Canvas API の呼び出し時にユーザーに確認を求め、許可しない限り空白のデータを返します。すべてのユーザーが同一のフィンガープリントを持つよう設計されています。
  • Firefox の resistFingerprinting: about:configprivacy.resistFingerprinting を有効にすると、Canvas の描画結果にノイズが追加され、一意性が低下します。
  • Canvas Blocker 拡張機能: Canvas API の呼び出しをブロックするか、ランダムなノイズを注入してフィンガープリントを毎回変化させます。
  • ブラウザ分離: リモートブラウザ分離環境では、Canvas の描画はクラウド上の仮想ブラウザで行われるため、ユーザーの実際の端末情報は漏洩しません。

ただし、Canvas をブロックすること自体がフィンガープリントの一要素になる (ブロックしているユーザーは少数派のため目立つ) という逆説的な問題もあります。Tor Browser のように「全員が同じ」になるアプローチが最も効果的です。

対策の実践とブラウザ別設定

Canvas フィンガープリントへの対策は、使用するブラウザによって設定方法と効果が大きく異なります。ブラウザごとの具体的な設定手順を把握しておきましょう。

Firefox: about:config を開き、privacy.resistFingerprintingtrue に設定します。この設定を有効にすると、Canvas の描画結果が標準化され、タイムゾーンの報告が UTC に統一されるなど、フィンガープリントの一意性を下げる複数の保護が同時に有効になります。ただし、一部の Web サイトで表示が崩れる副作用があるため、問題が発生したサイトでは個別に例外設定が必要です。

Brave: デフォルトで Canvas フィンガープリント対策が有効です。Brave は Canvas API の呼び出しごとにランダムなノイズを注入する方式を採用しており、同一サイトでもアクセスのたびに異なるフィンガープリントが生成されます。brave://settings/shields の「フィンガープリントのブロック」で強度を調整できます。

Tor Browser: 最も強力な対策を提供します。Canvas の描画結果をすべてのユーザーで完全に同一にする「均一レンダリング」方式を採用しています。Canvas API の呼び出し時に確認ダイアログを表示し、ユーザーが明示的に許可しない限り空白データを返します。全ユーザーが同じフィンガープリントを持つため、個体識別が不可能になります。

CanvasBlocker 拡張機能: Firefox 向けのアドオンで、Canvas API の動作を細かく制御できます。「偽の値を返す」「API をブロックする」「許可を求める」など複数のモードを選択可能です。サイトごとにホワイトリスト設定ができるため、Canvas を正当に使用するサイト (地図サービスやオンラインゲームなど) では許可し、それ以外ではブロックするという柔軟な運用が可能です。

よくある誤解

Canvas フィンガープリントだけで個人を完全に特定できる
Canvas フィンガープリント単体の一意性は約 50% 程度です。同じ GPU とドライバーを使う端末は同じ結果を返します。他のフィンガープリント手法と組み合わせることで識別精度が高まります。
Canvas フィンガープリントは Cookie を削除すれば防げる
Canvas フィンガープリントはブラウザに何も保存しません。端末のハードウェアとソフトウェアの特性から生成されるため、Cookie の削除やシークレットモードでは防げません。

関連用語

関連記事