⌘K でツールを切替
PRIVACY

ブラウザフィンガープリントテスト

ブラウザの固有フィンガープリント情報を表示します。

local
browser-fingerprint

These attributes are read locally to show what your browser reveals. Nothing is sent or stored.

§01 このツールについて

概要

Cookie による追跡は端末に何かを保存する必要があり、だからこそ見ることも、拒否 することも、消すこともできます。フィンガープリントは何も保存しません。サイトは ブラウザが設計上公開している属性を読み、それらを組み合わせ、その組み合わせを 識別子として使います。

このページはその属性のうち 11 個を表示します。どれもごく普通のブラウザ API で 読めるもので、許可を求めるダイアログは出ず、Cookie バナーの対象にもなりません。

使い方

ページを開くと読み込み時に値が入ります。同じ端末の別のブラウザ、あるいは同じ ブラウザの別の端末と比べると、どの部分が端末を識別しどの部分がブラウザを識別 しているかが分かります。

各属性が何を絞り込むか

属性絞り込むもの
User-Agentブラウザ・メジャーバージョン・OS の系統。各ブラウザが意図的に情報量を削っている
Language優先言語と地域。一般的でないロケールでは強く識別的
PlatformOS の系統。現行ブラウザでは固定化または削除が進行中
Timezone地域。言語と組み合わせると、しばしば 1 か国に絞られる
Screen解像度とデバイスピクセル比。珍しい解像度は極めて識別的
Color depthほぼ常に 24-bit。ほとんど情報量を持たない
CPU coresハードウェアの階層。よく使われる値は少数
Device memoryハードウェアの階層。ブラウザ側で粗く丸められている
Touch pointsタッチ端末とデスクトップを区別する
Cookies enabled1 ビット。しかも答えはほぼ常に「はい」
Canvas signatureGPU・ドライバ・フォント・ラスタライズ。この中で単独では最も識別的

気づくべき傾向があります。素朴に読み取れる属性ほど寄与が小さく、実際に何かを 描画しないと得られない属性の寄与が最も大きい。商用のフィンガープリント事業者が 実際に頼っているのが Canvas・WebGL・音声である理由がこれです。

属性から個人が特定される仕組み

各属性は母集団を分割します。訪問者の半数が Windows なら、プラットフォームが 分かった時点で候補は半分になります。情報量にして 1 ビットです。色深度はほとんど 誰も分割しないので、ほぼ 0 ビットしか運びません。Canvas 署名は母集団を数千の グループに分割し得るので、多くのビットを運びます。

ビットは加算されます。約 33 ビットあれば約 86 億人の中から 1 人を区別でき、 ブラウザは合計で 33 ビットをかなり上回る量を公開しています。フィンガープリントが そもそも成立する理由であり、単一の属性を隠しても効果が小さい理由でもあります。

ここから直観に反する帰結が出ます。ブラウザを珍しい状態にすると、識別は容易に なります。稀な User-Agent、一般的でない解像度、あり得ない組み合わせを報告する 偽装拡張は、いずれもビットを減らすのではなく増やします。目立つより、紛れ込む方が 有効です。

実際に効く対策

効果の順に、正直に並べます。

  1. Tor Browser — 最も漏れる値を正規化します。ウィンドウサイズは量子化され、 Canvas の読み取りはブロックまたは確認を要し、タイムゾーンは UTC に固定されます。 利用者どうしが意図的に同一になるよう設計されています。
  2. 保護を有効にした Safari と Firefox — どちらも Canvas と音声の読み取りを ランダム化またはブロックし、Safari は情報量を削った User-Agent を返します。 表面積をなくすわけではありませんが、価値の高いビットを取り除きます。
  3. それ以外はあまり効きません。 Cookie のブロック、プライベートブラウジング、 履歴の消去はいずれもストレージを対象にしていて、ここに挙げた値は保存されません。

偽装拡張は、しばしば逆効果になるので個別に触れておく価値があります。Canvas の 出力が macOS に見える端末から Windows の User-Agent を報告すれば、その矛盾自体が 特徴的な目印になります。

使用例

  • Cookie バナーが話の全部ではないと納得してもらう — Cookie をブロックした 状態でこのページを見せます。
  • 一部の利用者だけで起きる不具合を理解するScreenLanguageTimezone は、「自分の端末だけで起きる」種類のレイアウト崩れや日付書式の報告の背後にある 変数です。
  • 自分のプライバシー設定が実際に何を変えているか確認する — 拡張機能と設定の 有無で値を比べ、動かない項目がどれだけ多いかを見ます。
  • BAN が追いかけてきた理由を説明する — IP が変わりプロファイルを消した後でも サイトが再訪問者を認識できるのは、フィンガープリントによってです。

注意事項

ブラウザが値を出さない項目は、推測せず と表示します。deviceMemory は Firefox と Safari では設計上取得できず、platform は各ブラウザで固定化または 削除が進行中です。ここでのダッシュは失敗ではなく、ブラウザが守ってくれている印です。

Canvas 署名は、符号化された画像データの末尾 16 文字であって、暗号ハッシュでは ありません。同じ端末では安定し、端末をまたぐと変わります。正規の識別子ではなく 手法の例示として表示しています。Canvas の読み取りをランダム化するブラウザでは 訪問ごとに違う値が出ますが、それはまさに防御が働いている状態です。

ここに挙げた属性のうち、Canvas signature だけは読み取り方が違います。実際に 描画する必要があるため、Canvas をブロックまたはランダム化するブラウザでは値が 変わります。それ以外はプロパティを読むだけで、正当な用途を壊さずに割り込むことが できません。ブラウザ側の防御が画面サイズを隠そうとするのではなく Canvas・音声・ WebGL を対象にしているのは、この非対称性のためです。

これらの属性の読み取りは、正当な目的にとっても避けられません。レスポンシブな 描画には画面サイズが必要で、日付の整形にはタイムゾーンが必要です。問題は API が 存在することではなく、識別のために読むことと描画のために読むことを区別できない ことにあります。

同じ問いのネットワーク側については IP アドレス確認 を参照して ください。アドレスとフィンガープリントは補完的で、両方を持つサイトはどちらか一方が 安定していることを必要としません。日付整形の裏側にある Unix 時刻そのものを扱う 場合は Unix タイムスタンプ変換 が使えます。

FAQ
フィンガープリントはどこかへ送信・保存されますか?
いいえ。すべての値はページ内でブラウザ API から読み取り、画面に描くだけです。ネットワークリクエストは発生せず、ストレージにも何も書きません。このページの目的は、サイトが収集し得るものを見せることであって、収集することではありません。
これらの値で個人が特定されますか?
個々の値では特定されません。色深度はほぼ全員が同じです。特定するのは組み合わせです。属性が 1 つ増えるごとに候補となる母集団が狭まり、十分な数が揃えば、あなただけ、あるいはごく少数だけが持つ値になります。
Cookie をブロックすれば防げますか?
防げません。そして、それがフィンガープリントという手法が存在する理由です。これらの属性はどれも端末に保存されないため、消すものも拒否するものもありません。サイトは訪問ごとに新しく読み取り、その組み合わせで再認識します。
Canvas 署名とは何ですか?
画面外の canvas に文字と絵文字を描き、生成された画像データの末尾を取ったものです。実際のピクセルは GPU・グラフィックドライバ・インストール済みフォント・ラスタライズ設定に依存するため、他の点では同一に見える端末どうしでも値が変わります。
プライベートブラウジングは効きますか?
消えるのはストレージで、特性は消えません。プライベートウィンドウの画面サイズ・タイムゾーン・CPU コア数・Canvas 出力は、通常のウィンドウと同一です。Cookie による追跡は無効化しますが、フィンガープリントに対してはほとんど何もしません。