← ブログに戻る

Canvasフィンガープリントとは?サイトがブラウザの描画でデバイスを識別する仕組み

結論:Canvasフィンガープリントは実際の描画処理から生まれ、結果はGPU・OS・フォント・ブラウザエンジンの組み合わせで決まります。単体では本人特定までいきませんが、パラメータのクロスチェックでは環境の実態をさらけ出します。管理のポイントは2つ、各環境の読み取り値を安定させること、環境どうしの差をしっかり開けることです。以下、仕組み、影響する要素、識別の限界、検出、MostMateの2モード設定の順に説明します。

同じWebサイトを2台のデバイスで開くと、ページ内の同じ絵なのにピクセルが一致しません。表示バグではなく、デバイスが描画の段階でそれぞれの特徴を残しているからです。サイトはこの特徴を取得して1つの値にまとめ、それがCanvasフィンガープリント、つまりブラウザフィンガープリントの中でも識別力が高い部類のパラメータになります。MostMateはアンチディテクトブラウザで、Canvasは指紋設定の基本パラメータの1つです。この記事では、生成から設定までの流れを解説します。

サイトはCanvasでどう「署名画像」を描かせるのか

Canvasフィンガープリントは実際の描画処理から生まれます。サイトがブラウザに指定の内容を描かせ、その結果を読み取って特徴値に変換する仕組みです。描画にはブラウザが備えるCanvas描画APIを使い、Webゲームやグラフ、画像編集が共通で使っているのがこの2Dキャンバス機能です。APIの詳細はMDNのCanvas APIドキュメントを参照してください。処理はユーザーには見えません。中身は次の3ステップです。

  1. 描画:ページのスクリプトがキャンバスに固定の内容を描きます。よくあるのは、数行のテキストに図形やグラデーションを加えたものです。
  2. 読み取り:スクリプトがtoDataURL()やgetImageData()などのAPIでキャンバスを文字列やピクセル配列として書き出します。
  3. 照合:書き出した結果をハッシュ値に変換し、この環境の過去の記録や他のシグナルの予想値と突き合わせます。
Canvasフィンガープリント生成の3ステップ図解

なぜ2台のデバイスで同じ絵にならないのか

描画結果はレンダリング経路全体で決まり、どこか1か所でも違えばピクセルに差が出ます。同じ命令を2台のデバイスに送っても、OSがまずフォントと文字の縁の描き方を決め、ブラウザエンジンが描画を実行し、最後にGPUとドライバーが出力します。4つの段階に分けて見ていきます。

  • GPUとドライバー。同じ描画命令でも、グラフィックボードとドライバーのバージョンが違うと計算結果のピクセルに微妙な差が出ます。結果の違いの主な原因はここです。
  • OSと文字レンダリング。Windows、macOS、Linuxでは描画方式やアンチエイリアスの方針が違うため、同じ文字列を描いても縁のなめらかさが変わります。
  • フォント環境。キャンバス上の文字はローカルのフォントで描かれるため、どのフォントがどのバージョンで入っているかまで結果に影響します。フォントリストの検出ロジックはフォントフィンガープリントの検出方法の記事で解説しました。どちらも同じ情報源を共有しています。
  • ブラウザエンジンとバージョン。Chromium、Firefox、WebKitでは描画の実装に差があり、メジャーアップデートでも細部が変わることがあります。
同じ描画命令でもデバイスごとにハッシュが変わる様子

4つの要素が合わさってCanvasの識別力が決まります。単体の差はごく小さくても、ハッシュに圧縮すると別のデバイスと一致しない確率はかなり高くなります。小さな1枚の画像の裏には、デバイス全体のレンダリング経路が同時に映っているのです。

Canvasフィンガープリントはどこまで識別できるのか

Canvasフィンガープリントは識別力の高いデバイス特徴の一種ですが、単体で本人を特定できるわけではありません。その限界は3つあります。順に確認しましょう。

第一に、ハッシュ値が同じでも同じデバイスとは限りません:レンダリング経路がたまたま一致した2台は同じ値になり得ますし、市場の主流構成はもともと大量に重複しています。

第二に、サイトはこれだけで判断しません:Canvasの読み取り値はUA、画面、フォント、言語などと一緒にクロスチェックされ、この仲間では「自己申告できず、その場で測るしかない」硬い証拠として扱われます。

第三に、Cookieとは仕組みが別物です:Cookieはローカルに保存され消去や拒否ができますが、Canvasはアクセス時にその場で計算されるため、Cookieを消しても影響しません。

3つの限界をまとめるとこうなります。Canvasがアカウントの運命を決めるわけではありませんが、同じ環境群のハッシュが完全に一致していると、クロスチェックの時点で自分から名乗りを挙げるのと同じです。

3ステップで自分の環境のCanvasフィンガープリントを確認する

Canvasの検出に特別なツールは不要で、検出ページと2回の再テストがあれば足ります。次の順に進めてください。

  1. 現在の値を記録する。環境内でBrowserLeaksのCanvas検出ページを開くと、現在のハッシュ値と画像プレビューが表示されるので、控えておきます。
  2. 同じ環境で再テスト。ページを閉じて開き直すか、1、2日置いてもう一度測ります。同じ環境ならハッシュ値は変わらないはずで、2回の結果が違えば何らかの処理が読み取り値に介入しています。
  3. 環境をまたいで比較。もう1つの環境で同じ検出を実行します。2つのハッシュには見て分かる差があるはずで、差が大きいほど環境の分離がうまくいっています。

読み取り値で見るのは「安定しているか、差があるか」で、具体的な数値を追う必要はありません。検出サイトが違えばハッシュ値も一致しないことがあります。描く図形も書き出し方式もハッシュ計算も各社で違うためで、サイトをまたいだ比較に意味はなく、同じツール内での前後比較が有用です。

BrowserLeaksのCanvas検出ページ

MostMateでCanvasの2モードを選ぶには

MostMateの指紋設定では、CanvasはRealとNoiseの2モードにまとめられており、デフォルトはRealです。製品の全体像はMostMateとはをご覧ください。公式サイトの手動指紋設定リストでは、CanvasもオーディオやWebGLなどのパラメータと並んで掲載されており、環境作成時に同じ指紋設定エリアで構成できます。まず2モードの違いを表で見てみましょう。

観点RealNoise
値の出どころホストマシンの実描画。手動で開くのと同じ実描画の結果にノイズを上乗せ
検出での見え方ホストマシン本来の描画経路をそのまま反映ホストから切り離され、環境ごとに固有の値に
向く場面ペルソナとホストOSの地域が一致する環境環境を量産するとき、環境間の差を出したいとき
注意点同一マシンの複数環境はデフォルトで同値ノイズの強さは適正範囲に収める

Realモードが向くのは、ホストマシンの「素性がきれい」なケースです。本体が英語版Windowsで、作るのがまさに米国環境なら、実描画を使うことで読み取り値が手動で開いた場合と一致し、組み立ての痕跡も残りません。制約もはっきりしています。同じマシンの複数環境をすべてRealにすると、Canvasの値はどれも同じになり、環境間に差が生まれません。

Noiseモードはまさにこの穴を埋めるものです。環境のCanvasの値にノイズを重ね、ホストマシンの実描画から切り離すことで、量産した環境どうしが互いに異なります。ただしノイズは制御されていることが前提です。ノイズ加入後の値も実在デバイスの正常な範囲に収まっている必要があり、そうでないと「違う」こと自体が目立つ異常になります。同じ環境で2回の値が違うのも異常なサインです。このリスクについては指紋のランダム化がむしろ危険な理由の記事で詳しく論じています。

Canvasは同系統のパラメータとも一緒に確認が必要です。キャンバスの描画にはOS、フォント、GPUが不可分で、これらのパラメータは同じデバイス像を指していなければなりません:macOSのプロファイルを選んだら、オーディオやWebGL画像など同グループのパラメータもmacOSとして妥当な範囲で揃えます。Canvasだけ見ていると、グループ内の食い違いを見落としかねません。オーディオのモードの考え方はAudioContextフィンガープリントの設定方法の記事で解説したので、同じ発想を流用できます。

設定が完了したら一度検証しましょう。指紋設定でCanvasのモードを確認すると、右側の指紋プレビューパネルのCanvas欄にはNoise[3LR450]のようなコードが表示されます。これはこのノイズ設定を示す識別子で、環境ごとに1つずつ割り当てられ、検出ページで計算されるハッシュ値とは別物です。コードをハッシュと照合しないでください。実際の値は環境を開いて検出ページにアクセスして確認し、想定と合うか突き合わせます。その後もプロキシを替えたり指紋設定を調整したりするたびに、再テストしてから使うようにしてください。

MostMateの環境作成フォームにある指紋設定エリア

よくある質問

Canvasフィンガープリントとブラウザフィンガープリントは同じものですか?

違います。ブラウザフィンガープリントは数十のパラメータから成る全体像で、Canvasはその中の描画系の特徴の1つにすぎません。WebGLやフォントリストと同じ仲間です。全体は各項目の合算の結果であり、Canvas単体の識別力が高くても、指紋全体が珍しいわけではありません。

Canvasを無効化すれば識別を防げますか?

おすすめしません。Canvasは多くのWeb機能が依存しているため、無効化は正常な利用に支障を出します。しかも普通のブラウザはほぼすべてCanvasに対応しており、「非対応」のほうがむしろ珍しい特徴として目立ちます。現実的なのは、値の出どころと一貫性を管理することで、APIを閉ざすことではありません。

Canvasフィンガープリントはブラウザの更新で変わりますか?

変わります。ただしペースはランダム化とはまったく別です。ブラウザのメジャーアップデートによる描画の変化は全ユーザーが一斉に変わるため、プラットフォームもこのペースは見慣れています。実環境のCanvas値が年に数回変わるのは正常で、頻繁かつ不規則な変化のほうが異常です。

アンチディテクトブラウザなら環境ごとにCanvasを変えられますか?

変えられます。Noiseモードがまさにその役割を担い、Canvasの値にノイズを重ねることで、量産環境の値を互いに引き離します。ただしノイズの強さが適正であることが前提で、値は対応するOSの正常範囲内に収まっている必要があります。

まとめ

Canvasフィンガープリントの正体は、デバイスのレンダリング経路が1枚のキャンバスに集中して映るもので、単体では本人特定までできず、それでいて自己申告が最も難しい、その場で測るしかない項目です。管理では2点を押さえます。各環境の値が再テストに耐えること、環境間のハッシュ差がしっかり開いていること、そして同系統パラメータが同じデバイス像を指していることです。環境をゼロから構築したい方はMostMateをダウンロードし、環境作成後に各環境のCanvasの値を検証してから運用に移してください。

MOSTMATE

安全な複数アカウント管理を、もっと簡単に

最初のアカウントから、MostMate でより安全でスマート、効率的な複数アカウント運用を始めましょう。

  • 独立したプロファイル。一貫した識別情報。
  • AI 自動化 · アカウント健全性 · チーム運用
MostMate をダウンロード