カラーデプスフィンガープリンティングとは何か — screen.colorDepthによる追跡
ブラウザ・デバイス

カラーデプスフィンガープリンティングとは何か — screen.colorDepthによる追跡

screen.colorDepthはディスプレイの色深度を報告します。Firefox/Safariは常に24を返しますが、Chromeは実際のハードウェア値を公開します。単体で約0.87ビットのエントロピーを追加します。

7分で読める·

カラーデプスフィンガープリンティングは、screen.colorDepth screen.pixelDepth — ディスプレイが使用するピクセルあたりのビット数を示す 2つのブラウザプロパティ — を読み取り、その値をあなたの固有のブラウザプロファイルに 組み込みます。JavaScriptのコード1行で済み、パーミッションも不要で、2015年以降の すべてのブラウザで動作します。あなたのブラウザが何を公開しているか、今すぐ whatsmy.fyiで確認できます。

要約(TL;DR)

screen.colorDepthは整数値(ほぼ常に24または32)を返し、 ディスプレイが各ピクセルの色を表現するために使用するビット数を示します。 単体では中程度のエントロピー(約0.87ビット)しかありませんが、画面解像度、 デバイスピクセル比、ハードウェアコア数、タイムゾーン、GPUデータと組み合わせると、 数百万のプロファイルの中から個別のデバイスを99%以上の精度で識別するフィンガープリントに 貢献します。クッキーとは異なり、削除できず、クッキーバナーでブロックできず、 ブラウザ履歴をクリアしても消えません。

カラーデプスフィンガープリンティングとは何か

カラーデプスフィンガープリンティングは、 ブラウザフィンガープリンティングという広い概念の中の一技術です。デバイス上に何も保存することなく、ブラウザとハードウェアの 属性を収集してデバイスを識別します。すべてのブラウザは Screen インターフェースで2つの密接に関連するプロパティを公開しています。

  • screen.colorDepth — 出力デバイスのカラーバッファ(ディスプレイパネル自体) で単一の色値を表すために使用されるビット数。
  • screen.pixelDepth — 画面のビット深度。現代のすべてのブラウザでは、 これはcolorDepthと同じ値を返し、実質的に同一です。

どちらのプロパティも CSSOM View モジュール仕様の一部で、2015年7月から利用可能です。読み取り専用で、ユーザーの操作やパーミッション プロンプトを必要とせず、すべてのページ読み込みでアクセス可能です。キャンバスフィンガー プリンティングやWebGLフィンガープリンティングとは異なり、カラーデプスの読み取りは 瞬時に完了し、常に成功します。

カラーデプスフィンガープリンティングの仕組み

フィンガープリンティングスクリプトは1行でこの値を読み取り、他の数十の属性と組み合わせて デバイスの複合プロファイルを構築します。

// カラーデプスの読み取り — 1行、パーミッション不要、常に成功
const colorDepth = screen.colorDepth;   // 例: 24 または 32
const pixelDepth = screen.pixelDepth;   // 現代のブラウザでは同一

// 実際のデバイスで返される一般的な値
// 24 — 標準的なトゥルーカラー (1677万色)
// 30 — ディープカラー / HDRパネル (10億色)
// 32 — トゥルーカラー + 8ビットアルファチャンネル (Windowsで一般的)

// フィンガープリンターが他の画面シグナルと組み合わせる方法
const screenProfile = {
  colorDepth: screen.colorDepth,
  pixelDepth: screen.pixelDepth,
  width: screen.width,
  height: screen.height,
  availWidth: screen.availWidth,
  availHeight: screen.availHeight,
  devicePixelRatio: window.devicePixelRatio,
};
// この7つの値のオブジェクトは、実際のデバイス集団で
// 数百万の固有の組み合わせを生成します。

この値自体は、物理ディスプレイのハードウェアとオペレーティングシステムの設定によって 完全に決まります。標準的な1080pモニターは24を報告し、32ビットのディスプレイドライバを 持つWindowsマシンは32を報告し、HDR対応パネルは30を報告する場合があります。 これらの値はハードウェアに由来するため、同じデバイス上のすべてのブラウザセッション、 すべてのネットワーク、すべてのプライベートウィンドウで一定です。

colorDepthとpixelDepthがほぼ常に同一な理由

歴史的に、colorDepthはカラーコンポーネントのみ(赤、緑、青チャンネル)を 指し、pixelDepthはアルファチャンネルなどの追加ビットを含んでいました。 実際には、すべての主要なブラウザ実装が両方に同じ整数を返すように収束しています。 CSSOM仕様は技術的には符号なし長整数の値を許可していますが、実際の実装では デスクトップディスプレイの大多数で24または32を返し、モバイルデバイスでは24を返します。

ブラウザ標準化の特異性

FirefoxとSafariは、30ビットのディープカラーに対応したディスプレイであっても、 実際のハードウェアの深度に関係なく24を返します。Chromeは真の ハードウェア値を報告します。つまり、32ビットWindowsディスプレイを使用している Chromeユーザーと、同じハードウェアを使用しているFirefoxユーザーは異なる値を 報告します — フィンガープリンティングシステムがブラウザのユーザーエージェント文字列と 並んで記録する微妙な識別の違いです。

カラーデプスシグナルの統計とエントロピー

カラーデプスは個別には「弱い」フィンガープリンティングシグナルです — 取りうる値の 範囲が狭く、ほとんどのユーザーが同じ値を共有しています。その力は組み合わせから 生まれます。

シグナル / 調査結果出典
screen.colorDepthの個別エントロピー約0.87ビットFingerprint.com Research
現代のデバイスで最も一般的な値24ビット(トゥルーカラー)CSSOM / ブラウザ互換性データ、2025年
複合フィンガープリントの一意性(カラーデプスを含む33以上のシグナル)99%超Fingerprint.com Research
固有フィンガープリントを持つブラウザ(EFFデータセット、100万以上のサンプル)83.6%EFF Cover Your Tracks
Firefox / Safariの報告値(ハードウェアに関係なく)常に24MDN Browser Compatibility Data、2025年
32ビットディスプレイドライバのWindows上でのChrome報告値32BrowserLeaks

個別エントロピーが低いため、フィンガープリンティングスクリプトはカラーデプス単体には 頼りません。代わりに、Fingerprint.comなどのプラットフォームは、画面解像度、 デバイスピクセル比、ハードウェアコア数(CPUコア数)、デバイスメモリ、タイムゾーンオフセット、 言語リスト、インストールされているフォント、キャンバスハッシュ、WebGL GPUデータと 組み合わせて、数千万のデバイス集団で実質的に固有の複合識別子を生成します。

現実世界でのカラーデプスデータの利用者

商業フィンガープリンティングプラットフォーム

Fingerprint.com(旧FingerprintJS)は最も広く展開されている商業フィンガープリンティング プラットフォームです。彼らの 公開ドキュメントは、すべてのフィンガープリントで収集される33以上のシグナルの1つとしてscreen.colorDepthを明示的に列挙しています。 不正検出、アカウント乗っ取り防止、ボット検出、決済セキュリティのために 数千のECサイトや銀行サイトで使用されています。

プライバシー調査ツール

EFFのCover Your Tracksは、測定するフィンガープリンティングの次元の1つとして画面解像度とカラーデプスを 含んでいます。100万以上のブラウザのテスト後、EFFはブラウザの83.6%が完全に 固有のフィンガープリントを持つと結論付けました。この数字は部分的にデータセット全体の カラーデプスのバリエーションに依存しています。 BrowserLeaksも同様に、40以上のシグナルを使った包括的なフィンガープリントテストにカラーデプスを 含めています。

アドテクとクロスサイトトラッキング

広告ネットワークは、クッキー削除後、プライベートブラウジングセッションをまたいで、 また同じデバイス上の異なるブラウザをまたいでユーザーを再識別するために、 カラーデプスを含む複数シグナルのフィンガープリントを使用します。この技術は、 主要なブラウザがサードパーティクッキーを廃止するにつれてより価値が高まりました。 カラーデプス、画面解像度、GPUデータを含むフィンガープリントはクッキーリセット後も 持続できます。

ペイウォールと従量制アクセスの執行

記事数の制限を設けているメディアサイトは、クッキーをクリアして記事カウンターを リセットするユーザーを検出するためにフィンガープリンティングを使用します。 カラーデプスは画面サイズやハードウェアコア数と組み合わせて、クッキー削除後も 持続する安定したデバイス署名の一部を形成します。カラーデプスはハードウェアに 由来するため、セッション間で変化しません。

カラーデプスと関連する画面シグナルの比較

カラーデプスは単独で存在するわけではありません — フィンガープリンターはそれを 関連する画面シグナルのクラスターと共に収集します。各シグナルがなぜエントロピーに 貢献するかを理解するために、違いを明確にします。

  • screen.colorDepth / screen.pixelDepth物理ディスプレイのピクセルあたりのビット数。ハードウェア由来で安定しており、 ほぼ常に24または32。
  • screen.width / screen.heightディスプレイの物理ピクセル寸法。カラーデプスと組み合わせることで、 より狭いデバイスカテゴリを作成します。 画面フィンガープリンティングガイドをご覧ください。
  • window.devicePixelRatioCSSピクセルと物理ピクセルの比率。高DPI(Retina)ディスプレイは2または3を返し、 別の識別次元を追加します。
  • キャンバスレンダリング:ディスプレイのカラーデプスはキャンバス要素のグラデーションやシャドウのレンダリングに 影響するため、カラーデプスのバリエーションがキャンバスフィンガープリントのバリエーションに 寄与する可能性があります。 キャンバスフィンガープリンティングをご覧ください。

カラーデプスフィンガープリンティングから身を守る方法

カラーデプスはブラウザAPIを通じて直接読み取られるハードウェアプロパティであるため、 保護にはAPIレスポンスのスプーフィングまたはすべてのユーザーで標準化が必要です。 これらのオプションは最も効果的なものから実用的なものの順に列挙しています。

  • Firefoxのprivacy.resistFingerprinting(最強):about:configでこのフラグをtrueに設定すると、 Firefoxは実際のハードウェアに関係なく、colorDepthpixelDepthの両方に対して常に24を報告します。 これにより、同じ設定を持つすべてのFirefoxユーザーと区別できなくなります — 「群衆に紛れ込む」という目標です。ディスプレイ固有のレンダリングに依存する 一部のサイトは予期しない動作をする可能性があります。
  • Torブラウザ(最大限の匿名性):TorブラウザはFirefoxのフィンガープリント耐性を基盤として構築されており、 カラーデプスを含むすべての画面値を標準化するため、すべてのTorユーザーが 同一に見えます。これは利用できる最強の保護ですが、Torネットワークによる 速度のトレードオフがあります。
  • Braveブラウザ(日常使用に推奨):BraveのFarblingシステムはカラーデプス(低エントロピーの整数)をランダム化しませんが、 キャンバスやWebGL出力などのより高いエントロピーのシグナルを積極的にランダム化し、 カラーデプスが正確なままであっても、全体的なフィンガープリントの精度を大幅に低下させます。
  • プライバシー重視のブラウザ拡張機能:CanvasBlockerなどの拡張機能はScreen API呼び出しを傍受してスプーフされた値を 返すように設定できますが、これは検出可能な不整合を生む可能性があります — たとえば、キャンバス出力が32ビットのカラー情報をエンコードしているディスプレイで 24ビットのカラーデプスを報告するなど。
  • 部分的な対策の限界を理解する:カラーデプスだけをマスクしても、値が低エントロピーで多くのユーザーに共有されているため、 プライバシーへの影響は最小限です。効果的な保護には、個々のプロパティだけでなく、 フィンガープリンティングシグナルのフルセットを同時にカバーする必要があります。 現在のブラウザの識別しやすさを whatsmy.fyiで確認してみてください。

よくある質問

screen.colorDepthが返す値とはどういう意味ですか?

実際のデバイスで見られる値は24(トゥルーカラー — 1990年代後半から の普遍的な標準で、1677万色をサポート)、32(トゥルーカラーに 8ビットのアルファチャンネルを加えたもの、特定のディスプレイドライバを持つWindowsで 一般的)、そして時々30(ディープカラー / 10億7000万色をサポートする HDRパネル)です。8ビットや16ビットの値は現代のハードウェアでは事実上廃止されています。

HDRディスプレイを使用するとより追跡されやすくなりますか?

理論的には、はい。HDR対応ディスプレイ(特に30ビットまたはそれ以上の色深度を 報告するもの)を持つユーザーは少数派です。これにより、カラーデプスシグナルの エントロピーが上昇します。ただし、フィンガープリンティングは多くのシグナルを 組み合わせるものです。一つの非標準値だけでは大きなリスクにはなりません。

カラーデプスを変更して隠すことはできますか?

通常の使用では、screen.colorDepthを変更することはできません。 これは物理的なディスプレイハードウェアを反映したものです。OSの表示設定でカラーデプスを 変更することが技術的に可能な場合もありますが、これはVPN同様フィンガープリンティングには 影響せず、表示が悪化するだけです。

colorDepthとpixelDepthの違いは何ですか?

技術的には、colorDepthはカラー出力チャンネルの深度を、pixelDepthはアルファなどの追加ビットを含みます。しかし、今日の すべての実際のブラウザ実装では、両方とも同じ整数を返します。この区別はW3C仕様に のみ存在し、実際には同一であるため、フィンガープリンティングスクリプトは通常、 一貫性を確認するために両方を読み取ります。

プライバシースコアに影響しますか?

間接的に影響します。カラーデプスは全体的なフィンガープリントの精度に寄与します。 大多数のユーザーと同じ値(24)を持つことは、カラーデプスの観点からは「群衆の中に 隠れる」ことを意味します。しかし、プライバシースコアは主に高エントロピーシグナルを 反映します — カラーデプスは低エントロピーシグナルです。

シークレットモードでは異なるカラーデプスが報告されますか?

いいえ。プライベートブラウジングはクッキー、履歴、フォームデータのディスクへの 保存を防ぎますが、ディスプレイのハードウェアやScreen APIプロパティが返す値は 変更しません。screen.colorDepthはシークレットモードでも通常の ブラウザウィンドウでも同一です。アクティブなフィンガープリント標準化(Firefoxのprivacy.resistFingerprinting、Torブラウザ)を持つブラウザのみが 異なる値を報告します。

ユーザーの90%が24を報告するなら、重要性はありますか?

はい。カラーデプスは単体では弱いシグナルですが、フィンガープリンティングシステムは 33以上のシグナルを組み合わせ、各追加の弱いシグナルが識別空間を狭めます。 カラーデプスは、同じ解像度、タイムゾーン、GPUを持ちながらディスプレイ設定が 異なるデバイス間で最も有用な識別シグナルです。

関連記事

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

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

今すぐ確認する →

関連記事

カラーデプスフィンガープリンティングとは何か — screen.colorDepthによる追跡 | whatsmy.fyi