TRACIO の識別システムは、130+のブラウザシグナルから安定した訪問者識別子を生成します。この識別子は、セッションをまたいでも、シークレットモードでも、VPN の変更やCookieの削除があっても保持されます。このページでは、識別パイプライン全体を説明します。
クライアントは10のカテゴリにわたって130+の異なるブラウザシグナルを収集します。各シグナルは、ハードウェアの特性からレンダリング挙動まで、ブラウザとデバイスの異なる側面を調査します。
| グループ | シグナル数 | 安定性 | 例 |
|---|---|---|---|
| ハードウェア | 12 | 非常に高い | 画面解像度、デバイスメモリ、ハードウェア並列度、タッチ対応 |
| レンダリング | 9 | 高い | Canvasフィンガープリント(テキスト+ジオメトリ)、WebGLレンダラー、オーディオ処理 |
| フォント | 5 | 高い | 利用可能なシステムフォント(69ファミリーをテスト)、フォント設定、MathMLレンダリング |
| プラットフォーム | 25 | 中 | User-Agent、navigatorプロパティ、タイムゾーン、言語、vendor |
| CSSエンジン | 10 | 中 | メディアクエリの応答(カラースキーム、HDR、モーション低減、強制カラー) |
| ストレージ | 10 | 中 | Cookie対応、localStorage、sessionStorage、ストレージクォータ |
| WebGL | 9 | 高い | GPUベンダー、レンダラー(unmasked)、シェーダー精度、拡張機能の対応 |
| ネットワーク | 3 | 低い | 接続RTT、TURNプローブ、アプリバージョン |
| ボット指標 | 15 | N/A | webdriverフラグ、自動化フレームワーク、eval length、ヘッドレスマーカー |
| カスタム | 14 | 変動 | 数学フィンガープリント、WASM機能、アーキテクチャ検出 |
すべてのシグナルが識別に等しく有用なわけではありません。シグナルは安定性によって分類されます。
Tier 1(凍結): ほとんど変化しないハードウェアおよびレンダリングのシグナル。Canvasフィンガープリント、WebGLレンダラー、オーディオフィンガープリント、GPUパラメータ、フォント列挙、数学演算、アーキテクチャバイト。
Tier 2(準安定): ブラウザの更新や構成変更に伴って変化するシグナル。User-Agent、Client Hints、プラグイン、CSSメディアクエリ、ストレージ機能。
Tier 3(揮発性): 頻繁に変化するシグナル。画面解像度(モニターの変更)、タイムゾーン(移動)、言語設定、接続プロパティ。
訪問者IDは、安定性と拡張性を両立する3階層のハッシュシステムを用いて計算されます。
Visitor ID = [Tier1Hash][Tier2Hash][Tier3Hash] 20 chars 10 chars 10 chars ──────── ──────── ──────── base62 base62 base62Tier 1 は、ハードウェアとレンダリングエンジンに固有の凍結シグナルのみを使用します。これらのシグナルは、ユーザーが別の物理デバイスに切り替えるか、大幅なハードウェア変更を行った場合にのみ変化します。
含まれるシグナル: Canvasフィンガープリントハッシュ、WebGLレンダラー(unmasked)、WebGLベンダー(unmasked)、オーディオフィンガープリント、フォント列挙ハッシュ、WebGLパラメータハッシュ、数学演算ハッシュ、アーキテクチャバイト(ARM対x86)。
アルゴリズム:
key1=value1|key2=value2|...(キーはアルファベット順にソート)Tier 1 は意図的に凍結されています。Tier 1 に新しいシグナルが追加されることは決してなく、これによってアイデンティティコアがサーバー更新をまたいでも安定して保たれることが保証されます。
Tier 2 は、ブラウザとOSの環境を捉えます。これらのシグナルは、ユーザーがブラウザを更新したり、拡張機能をインストールしたり、システム設定を変更したりすると変化します。
含まれるシグナル: User-Agent データ、Client Hints(brands、プラットフォーム、アーキテクチャ)、navigatorプロパティ(vendor、プラットフォーム、languages)、プラグイン一覧、画面の色深度、デバイスメモリ、ハードウェア並列度。
Tier 3 は、セッション間で変化する可能性のある揮発性シグナルを捉えます。これらは信頼度スコアリングとファジーマッチングに使用されますが、コアアイデンティティには影響しません。
含まれるシグナル: 画面解像度、タイムゾーン、言語、DOMブロッカー、ストレージ機能、CSSメディアクエリの応答、接続プロパティ。
各階層は MurmurHash3-x64-128 を用いてハッシュ化されます。これは128ビットの出力を生成する高速な非暗号学的ハッシュ関数です。アルゴリズムは次のとおりです。
MurmurHash3 は優れた分布性(入力の各ビットが出力の各ビットに影響する)を提供し、リアルタイム計算に十分な速さを持ちます。暗号学的に安全ではありませんが、フィンガープリントのハッシュ化にはそれは不要です。
Input: "canvas=abc123|webgl_renderer=ANGLE|audio=0.04852" ↓ MurmurHash3-x64-128Output: 0x7f4a8c2d1e3b5f6a 0x9d8c7b6a5e4f3d2c ↓ base62 encodeResult: "X7fh2Hg9LkMn3pQr5tBv"信頼度スコア(0.0〜1.0)は、訪問者の識別についてシステムがどれだけ確信しているかを表します。
_vid_t Cookieが既知の訪問者と一致した場合、信頼度は1.0に設定されます。Cookieには訪問者のUIDが保持されており、サーバーがそれを自身のレコードと照合します。これは最も高速で信頼性の高い識別経路です。
過去のレコードがない新規訪問者は、0.90の信頼度スコアを受け取ります。比較対象となる既存のレコードが存在しないため、誤一致のリスクはありません。
Cookie一致のない再訪問者については、システムは次の要素から信頼度を計算します。
シグナル頻度の重み付け(IDF): グローバルな母集団の中でより一意なシグナルほど高い重みを受け取ります。まれなWebGLレンダラーは、一般的な画面解像度よりも識別力が高くなります。
ファジーマッチング: システムは、ビットレベルのハミング距離を用いて現在のフィンガープリントを保存済みのフィンガープリントと比較します。シグナルは階層ごとにグループ化され、各階層の一致スコアは独立して重み付けされます。
履歴の一貫性: 訪問者のシグナルが複数回の訪問にわたって安定していれば、信頼度は上昇します。シグナルが頻繁に変動すれば、信頼度は低下します。
| シナリオ | 一般的なスコア | 説明 |
|---|---|---|
| Cookie一致 | 1.000 | _vid_t CookieのUIDをサーバー側で検証済み |
| 初回訪問 | 0.900 | 比較対象となる過去のレコードなし |
| 強いフィンガープリント一致 | 0.990〜0.999 | Tier 1 のシグナルがすべて一致、Tier 2 の大半が一致 |
| 部分一致(ブラウザ更新) | 0.950〜0.989 | Tier 1 が一致、Tier 2 が変化(新しいUA) |
| 弱い一致(大幅な変更) | 0.850〜0.949 | 一部の Tier 1 シグナルが変化 |
| 曖昧 | 0.500〜0.849 | データベース内に複数の一致候補あり |
TRACIO は、セッションをまたいで訪問者のアイデンティティを維持するためにファーストパーティCookie(_vid_t)を使用します。
_vid_tSameSite=Lax、HTTPS上では Secure(HttpOnly ではありません — エージェントがクライアント側で読み取ります)Cookieはサーバー側(Set-Cookie レスポンスヘッダー経由)とクライアント側(エージェントによる)の両方で発行され、UIDはCookieがブロックされている場合のフォールバックとして localStorage にもミラーリングされます。
サーバーは、段階的に広いドメインスコープでCookieの設定を試みます。
app.example.com → example.com → comCookieの設定に成功した最も広いドメインが使用されます。これにより、Cookieがサブドメインをまたいで保持されることが保証されます。
TRACIO は、Tier 1 のシグナルが一致するハッシュを生成する場合、同一デバイス上の異なるブラウザをまたいで同じ人物を識別できます。Tier 1 はハードウェアとレンダリングの特性(canvas、WebGL、オーディオ、フォント)に依存するため、これらのシグナルは同じマシン上のChromiumベースのブラウザ間ではしばしば同一となり、エンジンをまたぐ(Chromium対Firefox対Safari)と精度が低下します。デスクトップの訪問者とモバイルの訪問者を一致させることは想定されていません。ハードウェアとレンダリングの表面が異なるためです。
ブラウザ横断の一致は本質的に信頼度の低い操作であり、スコアリングでもそのように扱われます。