- ブラウザフィンガープリンティング (browser fingerprinting) は、クッキーやVPNでも防ぎにくい深刻な追跡技術であり、ユーザーの環境情報を組み合わせて一意の識別子を生成する
- OS、ブラウザのバージョン、言語、タイムゾーン、フォント、拡張機能、キャンバスのレンダリング結果など、さまざまな要素が組み合わさることで個人識別の可能性が高まる
- JavaScriptの無効化、ブラウザの偽装、キャンバスの改変といった単純な防御策は、かえって識別の手がかりを残したり、Webサイトの機能を壊したりする副作用を生む
- Brave、Mullvad、Librewolf など一部のブラウザはフィンガープリント耐性機能を内蔵しているが、完全な防御は不可能であり、使い勝手の低下や CAPTCHA の増加といった不便を招く
- GDPR など既存の法律では規制の根拠が不明確で、新たな立法対応の必要性が提起されている
ブラウザフィンガープリンティングが登場した背景
- 以前はサードパーティCookieが主要なプライバシー脅威だった
- Cookie は本来、ブラウザとサーバー間で継続的にやり取りするための仕組みだったが、広告ネットワークがこれを利用して複数サイト間のユーザー情報を結びつけた
- ヨーロッパではこれに対する法的な通知義務が導入された
- ブラウザが Cookie の分離機能を改善するにつれて Cookie 追跡のリスクは減ったが、フィンガープリンティング (fingerprinting) が新たな脅威として浮上した
ブラウザフィンガープリンティングの仕組み
- Cookie なしでも動作し、VPN を使っていてもある程度識別可能性を維持する
- ブラウザがサーバーに提供する基本情報(ブラウザのバージョン、OS、言語、タイムゾーンなど)を組み合わせて一意の数値識別子を生成する
- JavaScript によってフォント、拡張機能、ハードウェア情報などを追加収集できる
- キャンバスフィンガープリント (canvas fingerprint) は、ブラウザがテキストを描画するときのピクセル差を利用して、システムごとの微細な違いを識別する
- およそ 1,000 個のブラウザのうち 1 つしか同じキャンバスフィンガープリントを持たないほど、一意性が高い
- ウィンドウサイズ、テーマ、解像度といった些細な設定も追加の識別手がかりとして利用できる
防御の試みの限界
- JavaScript の無効化はキャンバスフィンガープリントを防ぐが、逆に「JavaScript が無効になっている」という珍しい特徴が新たなフィンガープリント要素になる
- ブラウザが自分を別のプラットフォームに偽装 (spoofing) しても、サーバーは別のシグナルから実際の環境を推定できる
- キャンバス改変などの高度な偽装技術は、Webサイトの誤動作を引き起こしたり、追加の痕跡を残したりする
- 結果としてフィンガープリンティングは遮断が非常に難しい技術であり、追跡企業は継続的にその精度を高めている
部分的な対策と現実的な限界
- amiunique.org などのテストサイトは、実際の追跡より単純な環境で動作するため、現実の反映度が低い
- フィンガープリントが「一意 (unique)」であっても、時間の経過とともに変化しうるため、完全な追跡指標ではない
- Brave、Mullvad、Librewolf など一部のブラウザは内蔵のフィンガープリント耐性機能を提供している
- Librewolf は Firefox の耐性機能をデフォルトで有効化している
- Brave と Mullvad はそれぞれ異なる方法で対処している
- しかし、フィンガープリンティングを行う側も技術を高度化しているため、完全な防御は不可能である
ユーザーが取れる対策
- 長期Cookieの削除とVPN の利用は基本前提
- VPN は IP の露出を防ぐが、VPN を使っている事実自体がフィンガープリント要素として作用しうる
- ブラウザをデフォルト状態に保ち、拡張機能・フォント・テーマの変更を最小限にする
- 一般的な環境 (Windows 11 + Chrome など) を使うほど識別される確率は下がる
- Mullvad、Librewolf、Firefox (フィンガープリント耐性を有効化) などの内蔵保護機能を活用する
- すべての対策を講じても、追跡される確率はおよそ 99% → 50% 程度にしか下がらない
フィンガープリント耐性の副作用
- Firefox や Librewolf でフィンガープリント耐性を有効にすると、ウィンドウサイズの固定、テーマ変更不可、UI 制約が生じる
- サーバーがブラウザを認識できず、CAPTCHA の頻度が増加する
- 一部の Web サイトで色の不具合、テキスト位置の問題など視覚的な誤動作が発生する
法的不確実性と規制の必要性
- GDPR には Cookie に関する条項はあるが、フィンガープリンティングに対する明確な規定はない
- 英国の ICO (Information Commissioner’s Office) はフィンガープリンティングを否定的に評価している
- 合法性は不明確であり、セキュリティ目的での合理的な利用を主張する余地もある
- 現時点では新たな法律の制定が必要だという結論になる
- フィンガープリンティングはユーザーが認識できず、収集データは短期的・統計的な性格を持つが、
広告業界の過剰な追跡行為を支える主要な手段として指摘されている
結論
- ブラウザフィンガープリンティングは、技術的に検知しにくく、法的にもグレーゾーンにあるプライバシー脅威である
- 現在の技術水準では完全な防御は不可能であり、立法による規制とブラウザレベルでの対策強化が必要である
- 広告業界の追跡慣行が続く限り、インターネット環境にはプライバシー侵害のリスクが常に存在する
1件のコメント
Hacker Newsの意見
以前、Chromeで「この言語は翻訳しない」を押すたびに、その言語が Accept-Language ヘッダー に自動追加されることに気づいた
手動で設定していないのに、Chromeがその選択をすべてのリクエストに継続的に含めていた
この組み合わせが自分だけの固有な言語順になっていて、フィンガープリンティング に非常に有用なシグナルになり得ると感じた
関連提案もあったが採用されなかった → reduce-accept-language 提案書
関連記事: HN discussion
Firefox + Arkenfox user.js の組み合わせが、プライバシー面では最も強力だと思う
Cookie自動削除、canvas フィンガープリント偽装、タイムゾーンのUTC固定など、Torブラウザ級の保護を提供する
DNSレベルで広告・トラッキングドメインを遮断し、uBlock Origin や uMatrix で 3rd-party コンテンツ をデフォルトで遮断する
Torのように多くの人が同一設定を使ってこそ意味がある
自分だけがこうしたマスキングを使うと、むしろより目立ってしまう
しかも多くのフィンガープリント用スクリプトは 1st-party ドメイン から読み込まれるため、完全な遮断は難しい
参考: Orion privacy guide
privacy.resistFingerprintingフラグより強力なのか気になる。説明されている機能はすでにそのフラグで有効になるようにも見えるフィンガープリンティングは 識別特性 と トラッキング を混同しがちだ
タイムゾーンをUTCに変えたからといって追跡できなくなるわけではない
IP、GeoIP など、より強力なシグナルが存在する
家族が同じIPを使い、それぞれ異なるブラウザ設定にしていると、むしろ追跡しやすくなる
本当に追跡を避けたいなら、VPNのローテーション と リクエストヘッダーのランダム化 を併用すべきだ
単に匿名性が欲しいなら、Torブラウザを使うのが最も効果的だ
ブラウザフィンガープリンティングの仕組みをもっと知りたいなら、私が書いた記事を参照できる
Browser Fingerprinting Explained
記事では触れられていなかったが、初期のフィンガープリント診断ツールとして Cover Your Tracks (EFF) がある
記事の要点には同意する。フィンガープリント追跡は個人の自由に対する大きな脅威 だ
同時に、コンテンツ制作者が正当な報酬を受けるべきだとも思う
広告ベースのモデルは効率的だが、プライバシーを代償にしている
ほとんどのブロガーは大きな収益を得られず、儲かっているのは広告会社だけだ
昔のような無料コンテンツ中心のインターネットの方が健全だったと思う
私を追跡したからといって広告効率が上がるわけでもない
むしろ不要な製品広告ばかり繰り返される
オフライン店舗で顔認識により個別最適化広告を出されるような ぞっとする体験 だ
広告費が製品価格に含まれなくなれば、全体としてもっと安くなるかもしれない
ページビューごとに1セント支払い、サーバー負荷に応じて価格が上がる仕組みを想像している
データ分類の授業でやったゲームを思い出した
「この部屋にいる全員を識別するには、いくつのはい/いいえ質問が必要か?」
こうした形で ブラウザフィンガープリント も、いくつかのシグナルだけで人を絞り込んでいく
例えば「Linux + Firefox + 左側のモニター」という組み合わせだけでも、すでに数万人規模まで絞り込まれる
例えば「髪が長い?」と「女性?」は似た情報を含んでいて、追加のビットはほとんどない
一方で「メタル好き?」のような質問は、まれに「はい」が出ると多くの情報を与える
問題の核心は、私たちが JavaScriptが別のJavaScriptを呼び出して実行する構造 をデフォルトにしてしまったことだ
Stallmanは正しかった
ブラウザがどんな情報を露出しているか確認するなら Am I Unique? が役に立つ
フィンガープリントが有用であるには、固有性だけでなく持続性(persistence) も必要だ
毎回フォントをランダムにインストール・削除すれば、今日の自分と明日の自分を結び付けられなくなるのではないか?
参考: EFF研究 PDF, Mullvadの説明
Chromeの
queryLocalFontsAPI には権限ポップアップが必要だ関連漫画: xkcd 1105
最近ではページ読み込み中 5ms以内 に、ユーザーがどのペルソナに属するかが決定される
ただし、ほとんどのデータプラットフォームはGDPR準拠を維持するため、90日後にデータを自動削除している