フォントフィンガープリンティングとは何か
ブラウザ・デバイス

フォントフィンガープリンティングとは何か

インストール済みフォントをJavaScriptで静かに検出し、Cookieなしでデバイスを追跡します。300〜700のフォントを100ms以内にプロービングし10〜15ビットのエントロピーを生成します。

7分で読める·

フォントフィンガープリンティングは、JavaScriptを使用してデバイスにインストールされた フォントのリストを静かに読み取るブラウザ追跡技術です。Cookieも、保存データも、 削除できるものも何も必要ありません。インストールされたフォントの組み合わせは驚くほど 固有で、ウェブサイトはこれを使用してセッションをまたいで、そして異なるウェブサイト間で あなたを識別します。ブラウザが公開しているシグナルは今すぐ whatsmy.fyiで確認できます。

TL;DR

フォントフィンガープリンティングは、ブラウザが数百種類の異なるフォントでテキストをどのように レンダリングするかを測定することで機能します。フォントがインストールされていれば、テキストは 特定の幅でレンダリングされます。インストールされていなければ、ブラウザは異なる寸法の デフォルトフォントにフォールバックします。300〜700のフォント名をミリ秒でプロービングすることで、 スクリプトはインストールされたフォントの詳細なマップを組み立てられます。この組み合わせは 非常に独特で、フィンガープリントに10〜15ビットのエントロピーを追加でき、数万人の他のユーザーと あなたを区別するのに十分です。

フォントフィンガープリンティングとは何か

フォントフィンガープリンティングは、すべてのデバイスが異なるフォントの選択と共に 出荷されるという事実を悪用します。インストールされているフォントは、オペレーティング システム、インストールされたアプリケーション、カスタムフォントを手動で追加したかどうか、 システム言語によって異なります。新しいmacOSインストールにはApple固有の書体が付属しています。 Windowsマシンには独自のセットが付属しています。デザインスイートを実行しているLinuxユーザーは Adobe、Google、その他のソースから追加でロードされた数百のフォントを持つ場合があります。 各組み合わせは実質的にフィンガープリントです。

Cookieとは異なり、フォントフィンガープリンティングはデバイスに何も残しません。ローカル ストレージへの書き込み、トラッカーの設定、パーミッションの要求は行いません。ブラウザの 標準的なフォントレンダリングAPIを通じてすでに公開されているデータを読み取るだけです。 Electronic Frontier FoundationのCover Your Tracks ツールは、フォント列挙を全体的なブラウザフィンガープリントエントロピーへの意味のある 貢献者として一貫して識別しています。

フォントフィンガープリンティングは、より広範な ブラウザフィンガープリンティング 技術ファミリーの一つのシグナルです。高い信頼性を持つクロスセッション識別子を構築するために、 キャンバス、WebGL、オーディオフィンガープリンティングと組み合わせて展開されることが多いです。

フォントフィンガープリンティングの仕組み

実際には2つの異なる技術的方法が使用されています。どちらも同じ目標を達成します。どのフォントが 存在するかを検出することです。ただし、異なるブラウザAPIを通じて行います。

方法1 — CSSテキスト測定(measureText)

最も一般的なアプローチは、Canvas APIのmeasureText()メソッドまたはCSSレンダリングを 使用して、特定のフォントでレンダリングされた文字列のピクセル幅を測定します。スクリプトは 同じ文字列を3回レンダリングします。既知のフォールバックフォント(monospaceなど)で 一度、serifで一度、テスト中のフォントを要求して一度です。要求されたフォントの幅が フォールバックと完全に一致する場合、フォントはインストールされていません。幅が異なる場合、 フォントが存在してレンダリングに使用されています。

この比較はプローブリスト内のすべてのフォントに対して実行されます。通常は300〜700のフォント名です。 スキャン全体は100ミリ秒未満で完了し、ページへの視覚的な影響なしにJavaScriptで完全に実行されます。

方法2 — キャンバスピクセルレンダリング

より精密なバリアントは、非表示のキャンバス要素にターゲットフォントでテキストを描画し、canvas.toDataURL()で結果のピクセルデータを抽出し、既知のフォールバックで 生成されたピクセル出力と比較します。ピクセル配列が異なる場合、要求されたフォントが 使用されました。つまりインストールされています。この方法は単純にテキストの幅を測定するのではなく 微妙なレンダリングの違いを捉えるため、なりすましが難しくなっています。

// Simplified font fingerprinting via measureText
function detectInstalledFonts(fontList) {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  const testString = 'mmmmmmmmmmlli'; // letters sensitive to width variation
  const baseFonts = ['monospace', 'sans-serif', 'serif'];
  const testSize = '72px';

  // Measure each base font width (the fallback widths)
  const baseWidths = {};
  for (const base of baseFonts) {
    ctx.font = `${testSize} ${base}`;
    baseWidths[base] = ctx.measureText(testString).width;
  }

  const detected = [];
  for (const font of fontList) {
    for (const base of baseFonts) {
      // If the measured width differs from the fallback, the font is installed
      ctx.font = `${testSize} '${font}', ${base}`;
      const width = ctx.measureText(testString).width;
      if (width !== baseWidths[base]) {
        detected.push(font);
        break;
      }
    }
  }
  return detected; // Array of installed font names
}

フォントフィンガープリントはどれほど固有か

フォント列挙はブラウザフィンガープリントに実質的なエントロピーをもたらします。 以下の表は主要な研究結果をまとめています。

調査結果出典
フォントリスト単体で追加されるエントロピー10〜15ビットEFF Panopticlick研究
デスクトップデバイスにインストールされた平均フォント数50〜200BrowserLeaks / フィールド研究
典型的なフィンガープリンティングスクリプトがプロービングするフォント数300〜700BrowserLeaksフォントテスト
完全なフォントプローブの完了時間100ms未満BrowserScan / フィールド測定
上位1万サイトでフォント検出を使用しているウェブサイト約38%ブラウザフィンガープリンティング調査(arXiv)
フォント+4つの他のシグナルで一意に識別されるユーザー99%超商業的フィンガープリンティングプラットフォーム

フォント単体で提供される10〜15ビットのエントロピーは、フォントリストが約1,000〜32,000人の 他のユーザーとあなたを区別することを意味します。キャンバス出力、WebGLレンダラーデータ、 画面寸法、タイムゾーンと組み合わせると、複合フィンガープリントはデバイスに何も保存せずに Cookieの固有性に近づきます。

実世界でのフォントフィンガープリンティングの利用者

広告ネットワークとクロスサイト追跡

広告テックプラットフォームはサードパーティの広告タグと追跡ピクセルの中にフォント検出 スクリプトを埋め込んでいます。Chrome、Safari、Firefoxでサードパーティのクッキーが 段階的に廃止されるにつれて、フォントフィンガープリンティングは安定したクロスセッション 識別子として重要性が増しています。Cookieとは異なり、クリアもCookie通知でのブロックも 有効期限もありません。主要なデータブローカーはフォントリストを他の数十のシグナルと 組み合わせて、ウェブ全体でユーザーを追跡する永続的なプロファイルを構築しています。

不正検出とリスクスコアリング

セキュリティプラットフォームはアカウント乗っ取りとクレデンシャルスタッフィングを検出するために フォントフィンガープリントを使用しています。再訪問ユーザーのフォントリストが保存された プロファイルとは大きく異なる場合(例えば、攻撃者が最小限のフォントを持つ新しいバーチャル マシンを使用している場合)、リスクシグナルが発生します。セッションをまたいだフォントの 一貫性は、正当なデバイス検証のための価値ある受動的シグナルです。

ペイウォールとアンチボットの施行

パブリッシャーとサブスクリプションサービスは、Cookieをリセットすることで従量制アクセスを リセットするユーザーへの記事制限を施行するためにフォントフィンガープリンティングを使用しています。 フォントプロファイルはブラウジング状態ではなく、基になるオペレーティングシステムと インストールされたアプリケーションを反映するため、Cookieの削除、プライベートモード、 一部のVPN設定を通じても持続します。

デザインとクリエイティブツール

少数の正当なウェブアプリケーション(オンラインデザインエディターなど)は、壊れたプレビューを 避けるために、ユーザーが実際にインストールしているフォントのみを表示するためにフォント検出を 使用しています。このユースケースは通常開示されており、ユーザーに直接メリットをもたらします。 これは例外であり、一般的なケースではありません。

フォントフィンガープリンティングは合法か

GDPRの下では、生成された識別子が個人にリンクできる場合、フォントフィンガープリンティングは 個人データの処理を構成します。フランスのデータ保護機関(CNIL)は、フォント列挙を含む ブラウザフィンガープリンティングを、不正防止などの狭い正当な利益の免除が適用されない限り、 インフォームドコンセントを必要とするものとして明示的に分類しています。米国のCCPAとCPRAの下では、 フォントフィンガープリントデータはオプトアウト権の対象となる個人情報として扱われます。

W3Cフィンガープリンティングガイダンス はフォント列挙を「高エントロピーの受動的フィンガープリンティングサーフェス」として 特定し、ブラウザベンダーにローカルにインストールされたフォントへのアクセスを制限するよう 助言しています。グローバルでの施行は依然として一貫していません。

フォントフィンガープリンティングから身を守る方法

これらのオプションは最も強力な保護から日常使用に最も実用的なものの順に並べています。

  • Torブラウザ(最強の保護):Torブラウザはページをブラウザ自体に 付属した固定フォントセットに制限します。ローカルにインストールされたフォントはウェブサイトから 完全に見えず、すべてのTorユーザーが同一のフォントリストを提示するため、フォントベースの 識別は不可能です。トレードオフはTorネットワークによる閲覧速度の低下です。
  • Braveブラウザ(日常使用に推奨):バージョン1.39から Braveはフォントリストをランダム化します。ウェブページに実際にインストールされたフォントを公開するのではなく、サイトごと、 セッションごとに変化するシャッフルされてトリムされたサブセットを返します。これにより ブラウザを完全に機能させながらクロスサイト追跡を防ぎます。
  • Firefoxとprivacy.resistFingerprintingこのフラグがabout:configで有効になっている場合、 Firefoxはフォントアクセスを制限します オペレーティングシステムに付属の標準フォントセットのみに。カスタムまたは アプリケーションでインストールされたフォントは非表示になります。ローカルにインストールされた フォントに依存するレンダリングのページは予期しない動作をする場合があります。
  • 珍しいフォントのインストールを避ける:非標準フォントを追加するたびに フォントフィンガープリントの固有性が高まります。大規模なプロフェッショナルフォントライブラリを インストールするデザイナーやタイポグラファーは、システムデフォルトのフォントを使用する ユーザーよりもはるかに識別しやすくなります。プライバシーが優先事項であれば、 余分なフォントのインストールを最小限にしてください。
  • VPNを使用する(ただし限界を理解した上で):VPNはIPアドレスを マスクしますが、ブラウザが公開するフォントリストには絶対に影響しません。追跡の一つの 層を排除しますが、フィンガープリンティングには対処しません。VPNが正しく機能しているかは whatsmy.fyi で確認できます。
  • ブラウザ拡張機能(限定的な効果):CanvasBlocker(Firefox)などの 拡張機能はmeasureText()とキャンバスの呼び出しをインターセプトしてスプーフィングされた 値を返せます。ただし、フォントスプーフィングは活発な軍拡競争です。一部のフィンガープリンティング スクリプトはもっともらしくない結果を検出して他の方法にフォールバックします。拡張機能は 主要な防御策ではなく補足的な手段です。

よくある質問

フォントフィンガープリンティングはシークレット/プライベートモードでも機能しますか?

はい。プライベートブラウジングはブラウザが履歴、Cookie、セッションデータを保存するのを 防ぎますが、システムにインストールされているフォントを変更しません。フォントフィンガープリントは プライベートウィンドウでも通常のウィンドウと同一です。BraveやTorブラウザなどのアクティブな フォント保護を持つブラウザのみが、プライベートモードで異なるフォントプロファイルを提示します。

VPNはフォントフィンガープリンティングを止められますか?

いいえ。VPNはトラフィックを暗号化してIPアドレスを変更しますが、ブラウザのレンダリング エンジンにはアクセスできません。フォントフィンガープリンティングはオペレーティングシステムの フォントレジストリからブラウザのJavaScript APIを通じてデータを読み取ります。これはネットワーク 設定には完全に影響を受けないレイヤーです。フォントフィンガープリンティングから保護するには、 Brave、privacy.resistFingerprintingを有効にしたFirefox、またはTorブラウザを 使用してください。

フィンガープリンティングスクリプトは実際に何個のフォントをチェックしますか?

典型的な本番スクリプトは300〜700のフォント名をプロービングします。プローブリストには 一般的なシステムフォント(Arial、Times New Roman、Georgia)、OS固有フォント(macOSの San Francisco、WindowsのSegoe UI)、Adobe Creative Cloud、Microsoft Office、Google Drive によってインストールされたアプリケーションフォント、中国語、アラビア語、ヘブライ語などの 言語固有フォントが含まれます。フルスキャンは100ミリ秒未満で完了し、ユーザーには 完全に見えません。

フォントフィンガープリンティングはキャンバスフィンガープリンティングと違いますか?

関連していますが異なります。キャンバスフィンガープリンティングはGPU、グラフィックスドライバー、 OSテキストレンダラーによって引き起こされるピクセルレベルのレンダリングの違いを読み取ります。 フォントフィンガープリンティングは、テキストの寸法を測定するかフォントごとにキャンバスピクセル 出力を比較することによって、どのフォントがインストールされているかを特定的に検出します。 補完的なので、しばしば一緒に展開されます。キャンバスはハードウェアレベルのバリエーションを 捉え、フォント列挙はインストールされたアプリケーションからのソフトウェアレベルのバリエーションを 捉えます。詳細な比較については キャンバスフィンガープリンティングガイド をご覧ください。

デザイナーや開発者のマシンはフォントによってより追跡しやすいですか?

はい、かなりそうです。Adobe Creative Cloudを実行しているデザイナーは、システムデフォルト以外に 500以上の追加フォントがロードされている場合があります。JetBrains Mono、Fira Code、Cascadia Codeなどのプログラミングフォントをインストールした開発者は追加の固有シグナルを追加します。 非標準フォントが増えるほど、同じフォントプロファイルを共有するユーザーのプールが狭まり、 個人識別がずっと簡単になります。プライバシーを重視するヘビーフォントユーザーはBraveの フォントランダム化またはTorブラウザを使用すべきです。

Cookieをクリアしたりブラウザをリセットしたりするとフォントフィンガープリントは消えますか?

いいえ。フォントフィンガープリンティングはブラウザに保存されたデータからではなく、 オペレーティングシステムのフォントレジストリから識別子を導出します。Cookieのクリア、 ローカルストレージの削除、ブラウザ設定のリセット、さらにはブラウザの再インストールでさえ、 システムが公開するフォントリストには影響しません。フォントをインストールまたは削除するか、 フォント列挙を積極的に制限するブラウザに切り替えた場合にのみフィンガープリントが変化します。

フォントフィンガープリンティングとブラウザ言語フィンガープリンティングの違いは何ですか?

両者はユーザーアクションなしにシステムに関する情報を明らかにする受動的なフィンガープリンティング シグナルです。フォントフィンガープリンティングはインストールされた書体を列挙します。 アプリケーションと言語設定によって影響を受けるソフトウェアレベルのシグナルです。 ブラウザ言語フィンガープリンティングはAccept-Language HTTPヘッダーとnavigator.languages APIを読み取り、優先言語を検出します。設定レベルのシグナルです。 両者は同じ複合フィンガープリントに貢献します。詳細については ブラウザ言語フィンガープリンティングガイド をご覧ください。

関連記事

IPアドレス・位置情報・プライバシースコアを今すぐ確認。

ゼロログ・ゼロトラッキング・外部API不使用。

今すぐ確認する →

関連記事

フォントフィンガープリンティングとは何か | whatsmy.fyi