CPUフィンガープリントとは — hardwareConcurrencyによるプロセッサ識別
ブラウザ・デバイス

CPUフィンガープリントとは — hardwareConcurrencyによるプロセッサ識別

navigator.hardwareConcurrencyが論理コア数を公開し、Cookieなしでデバイスを追跡できる理由を解説します。

7分で読める·

CPUフィンガープリンティングは、navigator.hardwareConcurrency——デバイスが ブラウザに公開する論理プロセッサコアの数を明らかにする単一のJavaScriptプロパティ——を 読み取るブラウザトラッキング技術です。他のハードウェアシグナルと組み合わせることで、 CPUコア数はトラッカーがクッキーの削除・プライベートブラウジング・VPNの切り替えをまたいで 持続する永続的なデバイス識別子を構築するのに役立ちます。ブラウザが現在何を公開しているかは whatsmy.fyiでご確認いただけます。

TL;DR

navigator.hardwareConcurrency は、ブラウザが使用を許可された論理CPU コアの数を返す標準的なWeb APIです。フィンガープリンティングスクリプトは、キャンバス出力・ WebGLレンダラーデータ・スクリーン解像度・タイムゾーンとともにこの値を収集し、クッキー なしで安定したデバイスフィンガープリントを構築します。単独では、CPUコア数は低〜中程度の エントロピーを提供するに過ぎませんが、他のシグナルと組み合わせることで意味のある 独自性を追加します。最も効果的な防御策はBraveブラウザ(値をランダム化する)とprivacy.resistFingerprinting を有効にしたFirefox(値を2に固定する)です。

CPUフィンガープリンティングとは?

CPUフィンガープリンティングは、ブラウザAPIによって公開されるプロセッサ関連データを 使用して、ユニークなデバイス識別子に貢献する技術です。主要なシグナルは navigator.hardwareConcurrencyです。これはHTML Living Standardで定義された読み取り専用プロパティで、ブラウザが 利用できる論理プロセッサの数を返します。計算集約型タスク向けに並列で起動する Webワーカー の最適数をWeb開発者が決定できるよう設計されたものです。フィンガープリンティングスクリプトは これをハードウェア記述子として転用します。

CPUフィンガープリンティングは、より広い ブラウザフィンガープリンティング 技術の一層です。この技術は、何十ものブラウザとハードウェアシグナルを単一の識別子に 組み立てます。クッキーとは異なり、CPUフィンガープリンティングはデバイスに何も保存しません—— サイトを訪問するたびにハードウェアの観測可能な特性から識別子を再構築します。

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

基本的な攻撃は単一のJavaScriptプロパティ読み取りです——1ミリ秒未満で実行される1行の コードです。より高度な攻撃はさらに進み、タイミングサイドチャネルを使用して、ブラウザが 値をスプーフィングしていても実際のCPUマイクロアーキテクチャを推定します。

ステップ1 — hardwareConcurrencyの読み取り

CPUフィンガープリンティングの最も単純な形式は、NavigatorオブジェクトからCPUの論理コア数を 直接読み取ります。この値は許可プロンプトなしで、ユーザーの操作なしに利用可能であり、 通常のブラウジングセッションとシークレットブラウジングセッションの両方で同一です。

// Reads logical CPU cores exposed by the browser
const logicalCores = navigator.hardwareConcurrency;
// → 8 on a MacBook Pro M3 Pro
// → 4 on a mid-range Android phone
// → 2 on Firefox with resistFingerprinting enabled
// → a random value between 2 and 8 on Brave Browser

ステップ2 — 他のハードウェアシグナルとの組み合わせ

生のコア数(例:8)は単独ではユニークではありません——何百万ものデバイスが同じ数を 共有しています。フィンガープリンティングスクリプトは、補完的なシグナルと組み合わせます: WebGLからのGPUベンダーとレンダラー・キャンバスピクセルハッシュ・スクリーン解像度と ピクセル密度・タイムゾーン・言語・オーディオスタックの特性。これらのシグナルを合わせると、 単一の値単独よりもはるかに高いエントロピーを持つフィンガープリントが作成されます。

ステップ3 — タイミングベースのCPU識別(高度な技術)

CISPA Helmholtz Center for Information SecurityのCISPAの学術研究により、JavaScriptが タイミングサイドチャネルを使用してコア数だけでなくCPUのマイクロアーキテクチャを フィンガープリントできることが実証されました。特別に設計された並列計算を実行して実行遅延を 測定することで、スクリプトはプロセッサがIntel Core・AMD Ryzen・Apple Mシリーズ・ Qualcomm Snapdragonチップかどうかを推定できます。この技術は、報告されたAPI値ではなく 実際のハードウェアの動作を観察するため、hardwareConcurrency の単純な スプーフィングを完全に回避します。

// Minimal CPU fingerprint collector
function getCpuFingerprint() {
  return {
    logicalCores: navigator.hardwareConcurrency,  // e.g. 8
    deviceMemory: navigator.deviceMemory ?? 'unknown', // e.g. 8 (GB, rounded)
    platform: navigator.platform,                 // e.g. "MacIntel"
    maxTouchPoints: navigator.maxTouchPoints,     // 0 = desktop, >0 = touch
    // Combined with canvas, WebGL, and screen signals
    // this becomes a high-entropy device identifier
  };
}

hardwareConcurrencyはフィンガープリントの独自性にどれほど貢献するか?

単独では、navigator.hardwareConcurrency は控えめなエントロピーを提供します—— コア数の分布は大きく偏っており、ほとんどのデバイスは4または8の論理コア前後に集中しています。 その真の価値は他のシグナルとの組み合わせにあります。以下の表は、公開された研究と ブラウザドキュメントからの主要な統計をまとめたものです。

調査結果出典
hardwareConcurrencyのグローバルブラウザサポート95.51%Can I Use
JSタイミングによるCPUベンダー識別精度97.5%CISPA Research、2022年
JSタイミングによるCPUモデル/マイクロアーキテクチャ識別>60%CISPA Research、2022年
Firefox resistFingerprintingが報告するコア数常に2Firefoxソース
BraveのhardwareConcurrencyランダム化範囲2 – min(実際値, 8)Fingerprint.com
CISPA CPUフィンガープリンティング研究の参加者834名(297のCPUモデル)CISPA Research、2022年

CISPAの調査結果は特に重要です:ブラウザが hardwareConcurrency を 固定値の2にスプーフィングしていても、高度なフィンガープリンティングスクリプトは 特定の並列ワークロードの完了にかかる時間を測定することで、97.5%の精度でCPUベンダーを 特定できます。API値のスプーフィングだけでは、タイミングベースの攻撃に対する防御として 不十分です。

実際にCPUフィンガープリンティングを使用している事業者

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

Fingerprint.com・ThreatMetrix・Siftなどのサービスは、デバイスフィンガープリントに 組み立てられる30以上のシグナルの一つとして navigator.hardwareConcurrencyを収集します。これらのプラットフォームは不正検出と広告の両方のユースケースに対応しています。 コア数は安定性シグナルとして特に有用です——セッション間で変わらず、クッキーの削除による 影響を受けず、VPNとIPの変更をまたいで一定です。

不正検出とボット防止

不正対策システムはCPUシグナルを使用して、人間のユーザーとボットを区別し、矛盾を フラグします。モバイルデバイスと主張しながら16の論理コアを報告するブラウザや、 異常なコア数を公開するヘッドレスChromium環境で動作するブラウザは、疑わしいとして フラグが立てられることがあります。CPUフィンガープリンティングは、ログインページ・ チェックアウトフロー・APIエンドポイントを自動化された悪用から保護するデバイス整合性 チェックの一コンポーネントです。

広告アトリビューション

サードパーティクッキーが主要ブラウザ全体で廃止されるにつれて、広告ネットワークは クロスサイトアトリビューションのためにフィンガープリンティングへの依存を高めています。 CPUコア数は、ユーザーがクッキーを削除したり・ネットワークを切り替えたり・プライベート ブラウジングを有効にしたりしても変わらない安定したハードウェアシグナルです—— そうでなければ不安定なフィンガープリントにおける永続性のアンカーとして有用です。EFFのCover Your Tracks ツールは、分析でテストするフィンガープリンティングベクターの一つとして hardwareConcurrencyを明示的に挙げています。

デバイス整合性の検証

セキュリティ重視のアプリケーション——銀行アプリ・政府ポータル・エンタープライズSSOシステム ——はハードウェアシグナルを使用して、戻ってきたセッションが同じ物理デバイスから発信されて いることを確認します。この文脈では、CPUフィンガープリンティングは防御ツールです: 現在のデバイスフィンガープリントをログイン時に登録されたものと比較することで、 セッションハイジャックとアカウント乗っ取りの試みを検出します。

CPUフィンガープリンティングは合法か?

GDPRの下では、永続的なデバイス識別子を構築するためにハードウェア特性を読み取ることは、 その識別子が個人に結びつけられる場合、個人データの処理に当たります。フランスの監督当局 (CNIL)は、広告目的のブラウザフィンガープリンティングには十分な情報に基づく同意が 必要だと裁定しています。米国のCCPAとCPRAの下では、デバイスフィンガープリントはオプト アウト権の対象となる個人情報として扱われます。正当な利益の免除が狭い不正検出のユース ケースに適用される可能性はありますが、トラッキングに重点を置いた展開は、すべての主要な 法域で規制当局の監視が強まっています。

CPUフィンガープリンティングからの保護方法

CPUフィンガープリンティングに対する防御策は、ユーザーにとって透明なブラウザレベルの 保護から、サイトの機能を壊す可能性のある、より破壊的な対策まで様々です。最も強力な 保護から日常使いに最も実用的なものまで順に挙げます。

  • Torブラウザ(最強の保護): Torブラウザはすべてのユーザーにわたってnavigator.hardwareConcurrency を正規化し、CPUコア数による個別識別を 不可能にする統一された値を返します。TorのIP匿名化と組み合わせることで、利用可能な 最強のフィンガープリント保護を提供します。トレードオフはTorネットワークの遅延による ブラウジング速度の低下です。
  • Braveブラウザ(日常使いに推奨): Braveはサイトごと・セッションごとにhardwareConcurrency をランダム化し、2からMath.min(actualCores, 8) までの値を返します。これにより、Workerスレッド数を 最適化するためにAPIを正当に使用するサイトを壊すことなく、CPUコア数によるクロスサイト トラッキングを信頼性の低いものにします。Braveはキャンバスとウェブグラフィックスにも同様の ランダム化を適用します——詳細は キャンバスフィンガープリンティングガイド をご覧ください。
  • Firefox の privacy.resistFingerprinting Firefoxのabout:config でこのフラグを true に設定すると、実際のコア数に 関わらず、すべてのデバイスでブラウザが hardwareConcurrency を2として 報告します。これにより値が最小公分母に固定され、独自性への貢献が減少します。このフラグは 同時に他の何十ものフィンガープリンティングサーフェスにも影響し、広範な保護を提供することに 注意してください。
  • Mullvadブラウザ: TorブラウザのフィンガープリンティングプロテクションをTor ネットワークなしで使用できるよう設計されたMullvadブラウザは、hardwareConcurrencyを含むハードウェアAPIを完全に削除または正規化し、ブラウザのすべてのユーザーで一貫した ベースライン値を返します。
  • アンチフィンガープリンティング拡張機能: Canvas Fingerprint Defender・ Trace・Chameleonなどの拡張機能は navigator.hardwareConcurrency へのAPI 呼び出しを傍受してスプーフィングされた値を返すことができます。効果は様々です—— 単純な値のスプーフィングはタイミングベースのCPU識別攻撃から保護しませんが、 パッシブフィンガープリント収集者の障壁を高めます。
  • VPNの限界を理解する: VPNは表示されるIPアドレスを変更しますが、 ブラウザのJavaScript環境が報告するものには影響しません。navigator.hardwareConcurrency はブラウザから直接読み取られ、 VPNサーバー経由でトラフィックをルーティングしても全く影響を受けません。 VPNが正しく機能しているかどうかは whatsmy.fyiでご確認いただけます。

よくある質問

navigator.hardwareConcurrencyは実際に何を返しますか?

物理コアではなく、ブラウザが利用できる論理プロセッサコアの数を返します。4つの物理コアと ハイパースレッディングが有効なCPUは8つの論理コアを報告します。ブラウザはWorkerスケジューリング の精度向上やプライバシー上の理由から、実際のコア数よりも低い値を報告することもあります。 このプロパティは読み取り専用で、ユーザーの許可なしに利用できます。

プライベートモードやシークレットモードでもCPUコア数は隠れますか?

いいえ。プライベートブラウジングは、ブラウザが履歴・クッキー・フォームデータをディスクに 書き込むことを防ぎますが、ブラウザがJavaScriptに公開するハードウェア値は変えません。 シークレットウィンドウでも通常のウィンドウでも、navigator.hardwareConcurrencyは同じ値を返します。異なる動作をするのは、Braveや Torブラウザのようにアクティブな フィンガープリントランダム化を持つブラウザのみです。

hardwareConcurrencyのスプーフィングで完全に保護されますか?

いいえ。API値のスプーフィングはパッシブフィンガープリント収集の障壁を高めますが、 タイミングベースのCPU識別からは保護しません。学術研究により、JavaScriptが慎重に設計された 並列計算の遅延を測定することで、ブラウザが hardwareConcurrency に何を報告しても 関係なく、97.5%の精度でCPUベンダーを推定できることが示されています。効果的な保護には、 単に数値を置き換えるだけでなく、高解像度タイミングAPI(performance.now() など) を制限し、スケジューリング測定の精度を下げるブラウザが必要です。

hardwareConcurrencyとdeviceMemoryはどう違いますか?

navigator.hardwareConcurrency は論理CPUコアを報告します;HTML Living Standard の一部であり、すべての主要ブラウザでサポートされています。navigator.deviceMemory は最も近い2の累乗(0.25・0.5・1・2・4・8)に 丸められたデバイスのRAMをギガバイト単位で報告します——ChromeとEdgeのみでサポートされています。 どちらもフィンガープリンティングスクリプトで補完的なハードウェアシグナルとして使用されます。 合わせて、予算デバイス(2コア、2GB RAM)とプレミアムワークステーション(16コア、64GB RAM) を区別するのに役立ちます。

CPUフィンガープリンティングはモバイルとデスクトップではどちらが効果的ですか?

クラスタリングが強いため、生のコア数はモバイルではあまりユニークではありません—— Androidデバイスの非常に多くが8つの論理コアを報告します(オクタコアSoCはミドルレンジと プレミアムセグメントで支配的です)。デスクトップフィンガープリントはより多様です—— ワークステーションのCPUは4から128以上の論理コアまで範囲があります。ただし、モバイル フィンガープリントはデスクトップ構成よりもハードウェアの更新頻度が低いため、時間の経過と ともにより安定している傾向があります。

ウェブサイトはCPUコア数のスプーフィングを検出できますか?

高度なフィンガープリンティングスクリプトは、報告されたコア数をタイミングベンチマークと 相互参照することで、単純なスプーフィングを検出できます。ブラウザが2コアを報告しながらも、 並列JavaScriptタスクが8コアプロセッサーに期待される速度で完了する場合、その矛盾自体が フィンガープリンティングシグナルになります——しかも、どちらの値単独よりも強力なシグナルに なり得ます。このため、ブラウザレベルの保護(Brave・Firefox)は、単に数値を置き換えるのでは なく、タイミング制限と値のスプーフィングを組み合わせて適用します。

CPUフィンガープリンティングはwhatsmy.fyiのプライバシースコアに影響しますか?

はい。whatsmy.fyiのプライバシースコアは、ブラウザが公開するフィンガープリンティングリスク シグナルの組み合わせを評価します。これには、ハードウェアの並列処理能力・WebRTCリーク状態・ TLSバージョン・接続プロトコルが含まれます。追加の独自性シグナルなしに一般的なコア数 (4または8)を報告するブラウザは、異常な値を持つブラウザよりもフィンガープリントエントロピーへの 貢献が少なくなります。BraveまたはresistFingerprintingを有効にしたFirefoxを使用すると、 スコアにプラスの影響を与えます。

関連記事

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

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

今すぐ確認する →

関連記事

CPUフィンガープリントとは — hardwareConcurrencyによるプロセッサ識別 | whatsmy.fyi