Cookie を消すと、保存された識別子の一つがなくなります。しかし、それだけでは サイトがブラウザに画像を描かせたり、描画機能を調べたり、音声信号を処理させたり することは防げません。結果の値は訪問を結び付ける手掛かりになり得ますが、 万人に通用する識別番号ではなく、特定の個人を認識した証拠でもありません。
Canvas、WebGL、Web Audio は、ブラウザから情報を得る三つの手段です。 画像や音声の出力には、ソフトウェア、フォント、設定、ドライバ、ハードウェアが 影響します。再起動後も似た値が続くことも、更新やプライバシー機能で変わることも あります。追跡する側はアカウントや IP アドレスなど、別の情報も組み合わせられます。 三つの技術を説明し、どの結果も身元や匿名性を証明しない理由を見ていきます。
ブラウザの指紋は、単一のファイルから読み出すのではなく、 観測できる特性から計算します。スクリプトは描画結果やオフラインの音声処理結果を ハッシュ化し、後の訪問と比べることがあります。同じ値でも同一人物とは限らず、 値が違っても別人とは限りません。全体の仕組みは ブラウザの指紋についての入門記事をご覧ください。ここでは三つのブラウザ API を詳しく取り上げます。
この三つを取り上げる理由
指紋には通信のヘッダー、画面サイズ、言語、タイムゾーン、ブラウザの機能など、 多くの情報が含まれ得ます。スクリプトが集められる範囲は許可、設定、保護機能で 変わります。情報の有用性は比較する集団にも左右されます。項目数や各項目の 情報量を固定の数字で表すと、実際の根拠以上に正確な印象を与えてしまいます。
Canvas と WebGL は指定された内容を描き、オフラインの音声処理機能は指定された 音声信号を再生せずに処理できます。スクリプトは結果を直接比べたり、ハッシュ化したり します。フォントの描画、ブラウザの実装、画像処理、ソフトウェアの版、ハードウェアが 値に影響します。同じ端末でも更新や設定で変わり、別の端末でも同じ値になることが あります。こうした情報の限界はW3C の指針でも扱われています。
研究から、画像や音声の情報がブラウザを見分ける手掛かりになることは分かっています。 ただし情報量は調査対象、ブラウザの版、防御機能で変わります。三つの情報には関連も あるため、各項目の情報量を単純に足すことはできません。Tor Project の研究解説は、技術と防御の難しさを説明しています。テストの点数は、その方法と参加者に対する もので、一般的な認識確率ではありません。
Canvas から得られる情報

スクリプトは画面に見えない <canvas> に図形や文字を描き、 画素を読み取るか toDataURL() を呼んで、結果を比較または ハッシュ化できます。ページに画像を表示する必要はありません。フォント、ブラウザの 描画処理、画像設定、防御機能が結果に影響します。ハッシュは比較しやすくするための 値で、端末に割り当てられた識別番号ではありません。
条件を変えずに同じ内容を描けば、同じ画素が得られる場合があります。ただし、 ブラウザの版、プライベートモード、更新、サイトをまたいだ安定性は保証されません。 結果が変われば単純な照合は失敗し得ますが、一致する値を多くの訪問者が共有する こともあります。指紋採取では、このため一つのハッシュだけでなく他の情報も 組み合わせることがあります。
読み取りの簡単な例です。
const c = document.createElement("canvas");
const ctx = c.getContext("2d");
ctx.textBaseline = "alphabetic";
ctx.font = "14px 'Arial'";
ctx.fillStyle = "#069";
ctx.fillText("Cwm fjordbank glyphs vext quiz, ", 2, 15);
ctx.fillStyle = "rgba(102,204,0,0.7)";
ctx.fillText("Cwm fjordbank glyphs vext quiz, ", 4, 17);
const png = c.toDataURL();
// サイトは png を比較・ハッシュ化できるが、万能な識別番号ではないこの例は API の使い方を示すもので、特定の事業者の実装を示すものではありません。 ブラウザは読み取りから得られる情報を減らせます。Brave は一部の Canvas と音声の 出力をサイトとセッションごとに変える仕組みを説明しており、WebKit もプライベートブラウジングで加える揺らぎを説明しています。設定やスクリプトのブロックが先に働くこともあります。 独自の防御は観測される動作自体を変え得るため、実際の設定と利用するサイトで確かめてください。
WebGL から得られる情報

WebGL ではブラウザを通じて描画処理を要求できますが、ページが GPU に 無制限に直接アクセスできるわけではありません。WEBGL_debug_renderer_info 拡張が使える場合は、 描画装置の製造元や処理系を示す文字列を得られます。ANGLE と GPU の型番が 表示される実装もあります。ただしMDN の資料が示すように、プライバシー設定で制限される場合があります。文字列の詳しさや 識別の役立ち方はブラウザと端末によって異なります。
拡張が使えなくても、スクリプトは指定した 3D 画像を描き、readPixels() で画素を読み取る場合があります。 描画処理、精度、画像処理ソフトウェア、ハードウェアは画像に影響します。 結果をハッシュ化できますが、ブラウザの防御で読み取りが変わったり止まったりし、 異なる端末で同じ画像になる場合もあります。描画装置の文字列と画素は別の情報で、 GPU や人物を一意に示す証拠ではありません。
描画装置の詳細や画素の読み取りを制限すれば、WebGL 自体を無効にせずに 情報を減らせます。全面的な無効化は、3D 描画などを使うサイトとの互換性に 影響します。Firefox には webgl.disabled の設定があり、指紋採取 への抵抗機能では描画装置のデバッグ用拡張を無効にします。Brave もGPU と描画装置の情報を守る新しい対策を説明しています。利用できる機能と動作は、実際のブラウザの版と保護モードで 確認してください。
Web Audio から得られる情報

スクリプトは OfflineAudioContext を作り、指定した信号を 音声処理の経路に通して、結果のデータを調べることができます。発振器や圧縮処理を 組み込む場合もあります。オフライン処理はスピーカーに音を出す代わりにデータを 作ります。サイトが比べるのは人の耳に聞こえる音ではなく、数値です。OfflineAudioContext の資料も参照してください。
同じ処理でも実装や設定によって結果の数値が変わることがあります。スクリプトは 一部の数値を比較したり、全体をハッシュ化したりできます。ただし必ず差が出るわけでは なく、別の環境で同じ値になる場合もあります。ブラウザのプライバシー機能が結果を 変えることもあります。恒久的なハードウェアの製造番号ではなく、比較に使い得る 情報の一つです。
音声情報は比較の手掛かりを増やすことがありますが、いつでも同じ情報量を持つ わけではありません。ブラウザや OS の特徴は Canvas や WebGL にも表れるため、 情報は互いに関連します。防御機能もあり、Brave は Web Audio の出力を変える方法、 WebKit はプライベートブラウジングで数値に揺らぎを加える方法を説明しています。 画像と音声の結果が一致しても、特定の集団で照合の手掛かりになるだけで、 同じ人物による二つの訪問だとは証明できません。
三つの比較
それぞれの API から得られる情報は異なります。サイトが読める範囲と値の安定性は、ブラウザと設定によって変わります。
| 情報の種類 | 観測され得る内容 | 値を変える要因 | 利用できる対策 | 対策の影響 | ブラウザで確かめること |
|---|---|---|---|---|---|
| Canvas | 指定した文字や図形の画素 | フォント、描画処理、ブラウザの版、プライベートモード | スクリプト遮断、読み取り制限、出力の揺らぎ | 全面的な遮断は描画機能に影響し得る | 通常モードとプライベートモードを比較 |
| WebGL | 描画装置の情報や指定した 3D 画像の画素 | 画像処理の経路、ドライバ、ブラウザの設定、更新 | 装置情報や画素読み取りの制限、API の無効化 | 無効化すると画像機能が使えない場合がある | 装置情報と画素の読み取りを両方確認 |
| AudioContext | オフライン音声処理で得た数値 | ブラウザの処理系、音声設定、保護機能 | 出力への揺らぎ、API 制限、スクリプト遮断 | 広い制限は音声機能に影響し得る | 実際の版とセキュリティレベルで確認 |
防御機能が観測値を変え、珍しい組み合わせとして目立つ場合はあります。 そうなるかどうかは利用者の集団やブラウザのほかの情報次第です。同じ環境から 得た複数の値は独立した証拠ではないため、推定した情報量を足すのは不適切です。 公開される情報全体と、利用するサイトとの相性を確認しましょう。
Tor Browser の対策
Tor Browser は利用者を見分けにくくすることを目指していますが、保護機能は バージョン、OS、セキュリティレベルによって変わります。これまでに Canvas の 読み取り前の確認や WebGL の制限などを採用してきました。古い版の動作を 現在のすべての環境に当てはめることはできません。Tor Project の解説も設計を説明しつつ、すべての利用者の指紋が必ず同じになるとは保証していません。
音声への対策も変わってきました。過去の Tor Browser は指紋採取のリスクを理由に Web Audio を無効にしていましたが、Tor Browser 14 では Web Audio の API が再び有効になりました。この更新情報だけで、現行版から固有の音声情報が漏れるとは言えません。 判断には版、OS、セキュリティレベル、測定した音声処理を明示した検証が必要です。
Tor のセキュリティレベルは、ページで使える機能も制御します。最も厳しい 「Safest」では JavaScript が初期設定で無効なため、通常の Canvas、WebGL、 音声の調査スクリプトは実行されない場合があります。その分、サイトの機能にも 影響し得ます。現行のセキュリティ設定ガイドを確認し、一つの API に関する断定ではなく、実際の設定で試してください。
各対策で変わること
これらの出力にはハードウェアだけでなく、ソフトウェアや設定も影響します。対策ごとに守る範囲が異なり、単独で匿名性を保証するものはありません。
物理的に別のハードウェアを使う
別の端末では画像や音声の結果が変わる場合があります。ただし値が一致することもあり、 サイトはアカウントや入力した情報で活動を結び付けられます。端末を物理的に分ける ことは用途によって役立ちますが、機器を買い替えるだけで Web 上の追跡が解決する わけではありません。
別の OS を起動する
別の OS はフォント、ドライバ、ブラウザの状態を変えられますが、測定値が すべて変わるとは限りません。Tails は独自の通信とブラウザ設定を持つ環境の一例です。 三つのハッシュだけでなく、全体として評価する必要があります。OS を切り替えるには 作業の手間がかかり、使えるサイトや機能にも違いが出ます。
リモートブラウザを使う
Browser.lol では、ページのコードは手元の ブラウザではなくリモートセッションで動きます。そのため、サイトに見えるブラウザ、 画像、フォント、音声の情報が手元の端末と異なる場合があります。リモートセッションは 同じブラウザ環境や基盤を共有することがあり、保存済みプロファイルにはブラウザの 状態が残り得ます。新しいセッションでも三つの API の値がすべて新しくなる保証は ありません。アカウント、ネットワーク、ほかの情報から訪問を結び付けられる 可能性もあります。実際のセッションと通信の出口を確認してください。
拡張機能を使う際の注意
拡張機能には Canvas や WebGL の読み取り結果を変えるもの、スクリプトを遮断するもの、 API を制限するものがあります。効果は版と設定次第で、独自の組み合わせ自体が 観測されることもあります。Brave の値を変える仕組みや、Safari のプライベート ブラウジングで加える揺らぎなど、ブラウザ内蔵の方法もあります。必要なサイトが 動くか確かめ、各対策をプライバシー設定の一部として考えてください。
FAQ
Chrome で Canvas を無効にできますか?
通常のページの動作を保ちながら Canvas の全機能を無効にする、簡単な設定は ありません。拡張機能で toDataURL() を遮断したり結果を 変えたりできますが、描画ツールなどに影響する場合があります。ブラウザの保護機能、 スクリプト遮断、別のブラウザ環境にはそれぞれ得失があります。必要なサイトで 確かめてください。
VPN でブラウザの指紋は変わりますか?
手元の端末で使う VPN は通信経路を変え、通常は手元のブラウザで訪れたサイトに 見える IP アドレスも変えます。それだけで Canvas、WebGL、音声の実装が 変わるわけではありません。ほかの設定は別に変わり得ます。リモートブラウザを 使う場合、手元の VPN が変えるのはサービスまでの経路で、リモートブラウザから サイトへ出る経路ではありません。
Windows の更新後に指紋が変わるのはなぜですか?
更新でブラウザ、画像処理のドライバ、フォント、描画処理が変われば、テスト結果も 変わる場合があります。変わらない値もあります。どちらの結果でも、サイトが 訪問を結び付けられるかは判断できません。アカウント、Cookie、IP アドレスなど、 別の手掛かりもあるためです。特定の設定を調べるなら、更新前後に同じテストを 比較してください。
これらの指紋は一つだけで固有ですか?
必ずしも固有ではありません。多くのブラウザが同じ値を示す場合も、測定の間に 値が変わる場合もあります。複数の情報を組み合わせるとある集団では見分けやすく なりますが、共通の原因に左右される値は互いに独立していません。見出しの ビット数を足して識別力を決めることはできません。結果は調査方法と対象集団に 対するもので、万人に通用する身元の証明ではありません。
プライベートブラウジングは役立ちますか?
ウィンドウを閉じた後に残る履歴や端末内のデータを制限します。ブラウザによっては 指紋採取への防御も加えるため、通常のウィンドウと API の出力が異なる場合があります。 ただし、あらゆる情報を隠したり、アカウントを通じた訪問の結び付きを防いだり する保証はありません。使うブラウザの現行の保護機能を確認してください。
実際にどう対処するか
Canvas、WebGL、Web Audio は、Cookie を置かずに取得できる情報を 提供します。結果にはソフトウェア、設定、フォント、ドライバ、ハードウェアが 影響します。訪問を結び付ける役立ち方は利用者の集団で異なり、ブラウザに防御機能が 加われば変化します。プライベートブラウジング、ブラウザの保護機能、スクリプトの 遮断、ネットワークの道具はそれぞれ異なる問題に対応します。
まずブラウザを更新し、公式に説明されている保護機能を使いましょう。ページの コードを手元の端末から離して動かしたいなら、リモートブラウザでその境界を 変えられます。ただしプロファイル、ネットワーク、サービスへの信頼も考える必要が あります。セキュリティレベルや保存された状態を含め、実際に使う設定を比べてください。 ハッシュの違いは訪問を結び付けられない証明にならず、一致しても同一人物の証明には なりません。



