プライバシーテストがデータを一切残さない仕組み
プライバシーテストとは、ウェブサイトがあなたのブラウザについて何を知り得るかを示すツールです。CanvasやGPUの信号、フォント、画面、タイムゾーン、言語、ネットワークの手がかり、そして再訪問時にサイトがあなたを認識できる静かな識別子まで。そのことが信頼性の問題を生みます。監視技術を実演するツールは、そのツール自体のデータの扱いによっても判断されるため、それは後付けのポリシーページでは済まされません。当社のブラウザ指紋テストの背後にある設計ルールは一文で言えます:ブラウザが読めるものは、サーバーは決して見ない。本記事では、そのルールのコスト、どこで曲がり、どこで止まるかを説明します。まず信号の一覧が見たい場合はウェブサイトがあなたについて知っていることから始めてください。本記事は信号そのものではなく、テストの下にある配管についてです。
クライアント側が先
ブラウザ自体が提供するすべての信号は、あなたのマシン上で、タブ内のページコードによってローカルに読み取られ、描画されます。Canvasレンダリング、WebGLレンダラ文字列、オーディオコンテキストのプロパティ、インストール済みフォントのプローブ、画面とウィンドウの形状、色深度、タッチ対応、ストレージ推定、コントラストとモーションに関するメディアクエリ。これらはすべて発見された場所で計算され、あなたが見られるページに描かれます。ページコードだけが全体像を保持する唯一のものです。パネルをペイロードに集めるスクリプトはなく、ビーコンがそれを持ち帰ることもなく、分析イベントが要約することもありません。完全な指紋がブラウザを離れた瞬間、テストは自らが警告するものになってしまうからです。
その順序、つまりローカルが先、サーバーは最後、そしてサーバーはブラウザが本当に単独ではできない少数の仕事のためだけ、という順序はアーキテクチャの特徴ではありません。それこそがアーキテクチャです。ほとんどのプライバシーツールは逆に構築されています。すべてを中央で収集し、その後で削除する、匿名化する、短期間だけ保持すると約束します。その約束は守られるかもしれませんが、それは約束であり、読者が削除を監査する方法はありません。データをそもそも送信しない設計は、約束をコードパスに関する事実に置き換えます。そしてコードパスに関する事実はネットワークタブで確認できます。それこそがプライバシーツールが招くべき基準です。
コストは実在し、設計として受け入れられています。デバイスをまたぐものは何もありません。あなたについてくるアカウントはなく、同期する履歴はなく、別のノートパソコン上の指紋との比較もありません。それらはすべて、サーバーが個人ごとに何かを保持することを必要とするからです。比較は、あなたのブラウザ自体がローカルに覚えているものと、後述する匿名の日次カウンターに限られます。機能の要望がサーバー上の完全な指紋を必要とする場合、答えはより慎重な保持ポリシーではなく「ノー」です。その制約こそが製品なのです。
小さな3つのエンドポイント、3つの異なる仕事
ページ内では本当にできない仕事が3つあり、それぞれに狭い仕事を持つ小さなエンドポイントが割り当てられます。1つ目は /api/check/whoami で、ページを取得したリクエストでどのサーバーもすでに見ているものだけを返します。到着したままのネットワークアドレス、それと一緒にブラウザが送ったヘッダー、そのアドレスに付随する大まかな地理情報です。これらの値をあなたに見せることは新たな露出を増やしません。あなたが訪れるすべてのサーバーは、表示するかどうかに関わらずそれらを受け取るからです。このエンドポイントは一方的な開示を見える開示に変えるだけで、レスポンスを超えて何も保持しません。
2つ目は /api/check/etag で、次節で説明するキャッシュベースの認識を実演するためだけに存在します。ランダムなキャッシュ識別子を配布し、何も保持しません。発行した値の表も、誰が尋ねたかの記録もありません。3つ目はカウンターエンドポイントです。完了した実行から少数の粗い値を受け取り、累計を返します。これにより、誰もあなたの訪問を保存することなく、ページはあなたの構成がどれほど一般的かを伝えることができます。各エンドポイントはサイトの他のチェッカーと同様にレート制限されています。小さくて正直であることは無制限であることと同じではなく、叩き続けられるデモ用エンドポイントは善意をまとった悪用の表面だからです。
ページは、ブラウザから直接連絡する外部サービスについても明示しています。それらのサービスもあなたのアドレスを見るため、それらについて正直であることが設計の一部だからです。テストはCloudflareのトレースエンドポイントを読み、どのリゾルバがあなたの代わりに応答するかを示すためにDNSエコーサービスに問い合わせ、WebRTC方式の検索が何を知り得るかを示すために2つの公開STUNサーバーに接続します。それぞれがページ自体に、その結果の隣に名前が挙げられています。これはVPN漏えいと偽装チェックで私たちが適用しているのと同じ開示の規律です。密かに第三者に電話をかけるプライバシーテストは、自らの教訓に不合格となります。
ETagのトリック、正直な説明
ETagはHTTPキャッシングの通常の一部です。サーバーはレスポンスにバリデータを付け、ブラウザはそれをキャッシュされたコピーと一緒に保存し、次回の訪問時にブラウザはバリデータを送り返します。サーバーは「変更なし」と答えて転送を節約できます。トリックは、バリデータが内容を記述する必要がないことです。サーバーは訪問者ごとに固有のバリデータを発行でき、ブラウザは再検証のたびにその固有の値を忠実に返します。その時点でサーバーは、Cookieを一切設定することなく、Cookieとまったく同じ信頼性でブラウザを認識します。キャッシュ検証が識別子として兼用されるのは、ブラウザが正しく仕事をしているからです。
だからCookieを消しても消えません。Cookieとキャッシュは別々のストレージであり、別々のコントロールで、別々のスケジュールで空にされます。プライベートウィンドウやシークレットウィンドウがこのトリックを破るのもそのためです。プライベートウィンドウは独自の別キャッシュで動作し、ウィンドウを閉じると破棄されるため、バリデータはセッションとともに消えます。当社のエンドポイントは往復を実演し、何も保存しません。認識は304レスポンス自体によって、サーバーが自分自身のランダム値が戻ってくるのを見ることによって証明され、訪問の間に保持される記録によるものではありません。実演はページが閉じた瞬間に終わります。それこそが、この技術を使う現実のトラッカーが提供しない特性です。
正直に名指しすべき小さな皺が1つあります。エッジキャッシュです。レスポンスが共有CDNキャッシュを通過すると、最初の訪問者の識別子が全員に配信され、実演は各ブラウザが独自のものを持つ代わりに、群衆が1つのIDを共有する様子を示すことになります。そこでこのエンドポイントはエッジキャッシングから完全に離脱しています。すべてのリクエストがオリジンに到達し、すべての訪問者が新しいランダム値を受け取り、共有キャッシュがそれを保持することは決してありません。小さな設定の1行ですが、仕組みを証明する実演と、誤って逆を証明する実演との違いです。
ログではなくカウンター
サーバーが本当に必要な質問が1つあります。「私はどれほど珍しいのか?」あなたのGPUは今日M回の実行のうちN回現れましたと言えるページは、信号を並べるだけのページよりはるかに教訓的です。希少性こそが指紋を識別可能にするものだからです。しかし明白な方法、つまりすべての訪問を記録してから数える方法で答えると、ツールが警告するまさにそのデータベースが構築されます。そこでテストはログではなくカウンターを保持します。値ごとに1日1つの数字です。オペレーティングシステム、ブラウザファミリ、GPU文字列、タイムゾーン、第一言語、画面サイズのクラス、指紋識別子の最初の8文字、個々のチェックの結果、実行時間のバケット。それぞれが日次合計に1つ刻み、それ以外は何も保持されません。
仕組みよりも境界の方が重要です。完全な指紋は送信されることは決してなく、保存されることはなおさらありません。あなたのアドレスはカウンターには一切送信されません。カウンターを逆方向に問い合わせて個人にたどり着くことはできません。見つけるべき訪問者ごとの行が存在しないからです。集計は数える瞬間に行われ、保存された記録に対する後日のレポート手順として行われるのではありません。合計が日ごとにリセットされるのも同じ理由です。永遠に蓄積し、十分に細かく切り分けたカウンターは、蓄積によって静かに指紋データベースになってしまいます。設計はその漂流を事後に謝るのではなく、事前に拒否します。
さらに2つの選択が、本記事を決して読まない人々を守ります。Global Privacy Control信号を送信するブラウザは一切カウントされません。その信号は「私を追跡しないで」を意味し、最も敬意ある解釈は、それらを慎重に数えるのではなく、それらの実行を完全に除外することです。その他のすべての人には、ページ上に目に見えるオプトアウトがあり、カウントが行われる前に尊重されます。そして45秒以内に終わらない実行は「スタック」として、そのバケットで1回カウントされます。遅さと故障は、単一の集計数字として、私たち運営者には見える状態が保たれますが、失敗した実行を通して個々の訪問者を追うことはありません。
私たちが作らないと決めたもの
設計の中で最も教訓的な部分は、除外されたもののリストです。接続レベルのプローブはありません。TLSフィンガープリンティングも、ハンドシェイクのJA3方式の読み取りもありません。正直な理由はアーキテクチャにあります。このサイトのTLSは、その前面にあるCDNで終端されるため、オリジンで取得したハンドシェイクの読み取りは、あなたのブラウザよりもCDNのネゴシエーションと設定をはるかに多く記述することになります。それを「あなたのTLS指紋」として公開することは演劇でしょう。他人の名前が付いた、もっともらしく見える値です。自信に満ちた誤った読み取りを1つ印刷するプライバシーツールは、そのユーザーに他のあらゆる場所で自信に満ちた誤った読み取りを信頼するよう教えてしまいます。それは空のパネルよりも悪いことです。
同じ規律が残りの省略を形作りました。カウンターが粗いのは、細かいカウンターは蓄積によって、一度に1つの無邪気な次元ずつ、指紋データベースになるからです。前回の訪問の記憶、つまり「前回の実行以来、これらの値が変わりました」は、あなたのブラウザ自体のストレージの中、あなたのマシン上にだけ存在し、送信されることは決してありません。同期した瞬間、それは履歴となり、履歴は記録です。本当に役に立ったであろう機能が切り捨てられた理由は、エンドポイントが小さく保たれた理由と同じです。データのコストがツールの全目的である場合、便利さは弁護にはなりません。
最後に、残された正直さの注記です。設計に関する記事は自らの賛辞で終わるべきではありません。この設計はデータを最小化します。読み取り自体をそれほど識別可能でなくすることはできません。あなたのGPU、フォント、画面、タイムゾーンは、誰がそれを保存しようとしまいと、ほぼ固有のものへと組み合わさります。それがこのツールがあなたに示すために存在する発見です。データを保持しないことは、私たちからあなたを守ります。技術そのものからは守りません。そうでないふりをすることこそ、私たちが提供し得る唯一の本当に不誠実な機能でしょう。