デバイスメモリフィンガープリントとは — navigator.deviceMemoryによる追跡
ブラウザ・デバイス

デバイスメモリフィンガープリントとは — navigator.deviceMemoryによる追跡

navigator.deviceMemoryはRAMティアを公開します。FirefoxとSafariが実装を拒否した理由とプライバシーリスクを解説。

7分で読める·

デバイスメモリフィンガープリンティングは、navigator.deviceMemory JavaScriptプロパティを使用して、デバイスのおおよそのRAMティアを読み取り、ブラウザの ユニークなフィンガープリントに含めます——クッキーも許可も警告も不要です。ブラウザが 現在何を公開しているかは whatsmy.fyiでご確認いただけます。

TL;DR

navigator.deviceMemory は、最も近い2の累乗——0.25・0.5・1・2・4・8 GB——に 丸められたデバイスのRAMをギガバイト単位で返します。この粗いバケット値は、ブラウザの フィンガープリントに約2〜3ビットのエントロピーを提供します。単独では個人を特定できませんが、 CPUコア数・スクリーン解像度・GPUの詳細・その他30以上のシグナルと組み合わせることで、 商業フィンガープリンティングサービスがデバイスを特定するのに役立ちます。FirefoxとSafariは このAPIの実装を意図的に拒否しています。Chromiumベースのブラウザのみが公開しています。

デバイスメモリフィンガープリンティングとは?

デバイスメモリフィンガープリンティングは、2017年12月のChrome 63で導入された読み取り専用 属性である Navigator.deviceMemory プロパティを読み取って、デバイスのRAM容量を確認するブラウザトラッキング技術です。 値は意図的に不正確です:6GBのRAMを持つデバイスは 8 を、3GBのデバイスは4 を報告します——仕様が最も近い2の累乗への丸めを要求しているためです。 この量子化はフィンガープリンティングリスクを制限するために設計されましたが、ブラウジング セッション・シークレットモード・VPN接続をまたいで持続する安定した一貫したシグナルを 生み出します。

このAPIは、navigator.hardwareConcurrency(CPUコア数)やnavigator.platform とともに、ブラウザにおけるハードウェア公開プロパティの より広いファミリーの一部です。それぞれ単独では精度が限られますが、合わせると W3Cフィンガープリンティングガイダンス がフィンガープリンティングベクターとして明示的に分類するハードウェアプロファイルを 構築します。

クッキーベースのトラッキングとは異なり、デバイスメモリフィンガープリンティングは ブラウザデータのクリアによってブロックできません。これは、トラッキング企業がウェブ全体で あなたを識別するために使用する、より広い ブラウザフィンガープリンティング ツールキットの一コンポーネントです。

navigator.deviceMemoryの仕組み

W3Cデバイスメモリ仕様は、ブラウザが報告する値を導出するための正確なアルゴリズムを 定義しています。これを理解すると、仕様の作成者がなぜ安全だと考えたか、そして フィンガープリンティング研究者がなぜ同意しないかの両方が明らかになります。

ステップ1 — 物理メモリの読み取り

ブラウザはオペレーティングシステムからデバイスの物理RAMをバイト単位で読み取ります。approximated_device_memory.cc でのChromeの実装はメガバイト単位で値を読み取り、 ビットシフト演算を使用して最も近い2の累乗に丸めます。6,144 MB(6 GB)を報告するデバイスは 8,192 MB(8 GB)にシフトされます。

ステップ2 — ギガバイトへの変換とクランプ

丸められたメガバイト値は1,024で割られてギガバイト数が生成されます。8を超える結果は8.0 にクランプされます。非Androidプラットフォームの新しいChromeバージョンでは 上限が32に拡張されており、64 GBのRAMを持つワークステーションは 8 ではなく32 を報告するようになっています。

ステップ3 — HTTPSコンテキストへの制限

仕様は navigator.deviceMemory がセキュアコンテキスト(HTTPS)でのみ 利用可能であることを要求しています。HTTPページでは、プロパティは undefinedを返します。これにより平文接続でのパッシブスニッフィングは防止されますが、圧倒的多数の HTTPSサイトでのフィンガープリンティングを制限するものは何もありません。

ステップ4 — 許可なしにスクリプトが利用可能

ページ上で実行されるすべてのJavaScriptは、ユーザープロンプト・許可リクエスト・ブラウザ 通知なしに navigator.deviceMemory を読み取ることができます。数百万の ウェブサイトに埋め込まれたサードパーティの分析・広告スクリプトは、毎回のページ読み込みで サイレントにこれを読み取っています。

// Reading navigator.deviceMemory
// Returns: 0.25 | 0.5 | 1 | 2 | 4 | 8 (or undefined in Firefox/Safari)

const ram = navigator.deviceMemory;
console.log(ram); // e.g. 8 (on a 16 GB MacBook Pro)

// The absence of the value is itself a fingerprinting signal:
// undefined → browser is Firefox, Safari, or Tor Browser (not Chromium)
if (ram === undefined) {
  console.log('Non-Chromium browser detected');
}

// Fingerprinting services combine it with CPU core count
const hardwareProfile = {
  deviceMemory: navigator.deviceMemory,
  cpuCores: navigator.hardwareConcurrency, // e.g. 10
  platform: navigator.platform,            // e.g. "MacIntel"
};

// Bot detection: flag out-of-spec values
const VALID_VALUES = [0.25, 0.5, 1, 2, 4, 8, 16, 32];
const isOutOfSpec = ram !== undefined && !VALID_VALUES.includes(ram);
// Out-of-spec values (e.g. 3, 6, 12) → high-confidence spoof or headless browser

デバイスメモリはフィンガープリンティングにどれほど貢献するか?

量子化された戻り値は、navigator.deviceMemory が単独では限られたエントロピーを 提供することを意味します——しかし提供するシグナルは安定しており機械可読です。

シグナル値 / 調査結果出典
シャノンエントロピー(単独)〜2〜3ビットW3Cデバイスメモリ仕様
標準バケット値の数6(0.25・0.5・1・2・4・8 GB)W3Cデバイスメモリ仕様
グローバルブラウザサポート率76.37%(すべてChromiumベース)Can I Use、2025年
Firefox / Safariのサポート0% — 意図的に未実装MDN Web Docs
7日間のトラフィックサンプルにおける仕様外の値16,000以上のイベントがスプーフィングとしてフラグCastle.io、2025年
deviceMemoryの矛盾に関連する不正イベント単一の悪意ある行為者から約3,500件Castle.io、2025年
FingerprintJSオープンソースの名前付きシグナルソースdeviceMemoryを含む約40シグナルFingerprintJS GitHub

navigator.deviceMemory の実際のフィンガープリンティング能力は、他の ハードウェアシグナルとの組み合わせから生まれます。ブラウザが deviceMemory: 8hardwareConcurrency: 10platform: "MacIntel"・特定の WebGLレンダラー文字列を報告する場合、複合プロファイルはフィールドをかなり絞り込めるほど 具体的で、セッションをまたいで持続するほど安定しています。

実際にデバイスメモリフィンガープリンティングを使用している事業者

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

数百万のウェブサイトで使用されるオープンソースライブラリのFingerprintJSは、収集レイヤーでhardwareConcurrencyosCpucpuClassarchitecture とともに、deviceMemory を名前付きシグナルソース (getDeviceMemory)として明示的に挙げています。商業製品のFingerprint.comは 100以上のブラウザとデバイスシグナルを集約し、デバイスメモリはハードウェアプロファイル ティアの一コンポーネントとなっています。

ボット検出と不正防止

セキュリティプラットフォームは navigator.deviceMemory を主にトラッキング シグナルとしてではなく、整合性チェックとして使用します。アンチ検出ブラウザとヘッドレス 自動化フレームワークは、この属性を頻繁に誤設定します——2の累乗ではない値(3・6・ 12 GBなど)や標準の最大値を超える値を設定します。Castle.ioは7日間のトラフィックウィンドウで 16,000以上の仕様外の deviceMemory イベントを観察し、そのうち約3,500件は 偽のアカウント作成キャンペーンを実行していた単一の悪意ある行為者に追跡できました。 検出ロジックは deviceMemoryplatformuserAgenthardwareConcurrency と相互検証します:コンシューマーラップトップと主張しながら 32のCPUコアを持つブラウザはありえません;deviceMemory が定義されている Firefoxと主張するブラウザも不可能です。

行動ターゲティング広告ネットワーク

サードパーティクッキーが主要ブラウザ全体で廃止されるにつれて、広告ネットワークは デバイスメモリティアを含むデバイスレベルのシグナルを確率的アイデンティティグラフに ますます組み込んでいます。メモリバケット(エントリーレベルvsミッドレンジvsプレミアムデバイス) はデモグラフィック的価値も持ちます:0.25 GBを報告するデバイスは超低価格スマートフォンであり、 8 GBを報告するデバイスはプレミアムラップトップまたはフラッグシップスマートフォンです。

値の不在もシグナルになる

navigator.deviceMemoryundefined を返す場合、 フィンガープリンティングスクリプトはすぐにブラウザがChromiumベースではないことを認識します—— Firefox・Safari・Torブラウザを確認します。このバイナリな存在/不在の区別自体が識別価値を 持ち、フィンガープリンティングライブラリによってネガティブシグナルとして収集されます。

デバイスメモリフィンガープリンティングは合法か?

GDPRの下では、ブラウザフィンガープリンティングは永続的なユニーク識別子を作成するため、 個人データの処理に当たります。CNIL(フランスのデータ保護機関)は、フィンガープリンティング ベースのトラッキングにはクッキーベースのトラッキングと同様の十分な情報に基づく同意が 必要だと明示的に述べています。英国ICOは2025年1月、フィンガープリンティングがクッキーと 同じPECR要件の対象となることを確認しました。カリフォルニア州のCCPAとCPRAの下では、 ブラウザフィンガープリントはオプトアウト権の対象となるユニーク個人識別子として扱われます。

唯一の重要な法的例外は不正検出とボット防止です。navigator.deviceMemory を 専らスプーフィングされた矛盾したシグナルの検出に使用するプラットフォーム——サイト間で 個人を追跡するためではなく——は、通常、明示的な同意を必要とせずにGDPRの正当な利益の 根拠を満たします。

W3C自身の フィンガープリンティングガイダンス 文書は、デバイスメモリAPIが出荷された後に書かれ、メモリなどのデバイス特性をフィンガープリンティング ベクターとして分類し、将来のAPI設計者がブール値やより粗い列挙値を優先するよう推奨しました—— 量子化された数値でさえ予想以上の識別情報を持つことを認めています。

デバイスメモリフィンガープリンティングからの保護方法

保護オプションは、ウェブ互換性のトレードオフを伴うほぼ完全なものから、サイトを壊さずに トラッキングサーフェスを削減する軽量な緩和策まで様々です。

  • Torブラウザ(最強の保護): Firefoxベースのため、navigator.deviceMemory はAPIが実装されておらず、ネイティブにundefined を返します。レターボクシング・ユーザーエージェントの正規化・ Tor匿名ネットワーク経由のネットワークルーティングと組み合わせることで、Torブラウザは デバイスレベルのフィンガープリンティングに対して利用可能な最強の実世界での保護を 提供します。トレードオフは、ブラウジング速度の低下とCAPTCHAの摩擦が時折あることです。
  • Firefox(日常使いに推奨): Firefoxはnavigator.deviceMemory を全く実装していません。about:configprivacy.resistFingerprinting を有効にすると、スクリーンサイズ・タイムゾーン・ ロケール・フォントメトリクスも追加で正規化されます。この組み合わせは、Torのネットワーク オーバーヘッドなしに強力なハードウェアフィンガープリント耐性を提供します。
  • Braveブラウザ(Chromiumベースの保護): BraveはAPIを実装して いますが(Chromiumコードベース)、セッションごと・サイトごとのランダム化——ファービングと 呼ばれる技術——を適用します。報告される deviceMemory の値はサイト間・ セッション間で異なり、クロスサイトリンキングを防止します。特定の条件下では統計分析が ランダム化を打ち破れるため、この特定のシグナルに対してはFirefoxほど堅牢ではないことに 注意してください。
  • Safari: Firefoxと同様に、SafariはAPIの実装を拒否しています。navigator.deviceMemory は2025年を通じてすべてのバージョンのSafariでundefined を返します。これは意図的なものです——AppleのWebKitチームは 歴史的にウェブAPIを通じてハードウェアの詳細を公開することに慎重でした。
  • 拡張機能を使ったChrome: JShelterやCanvasBlockerなどの拡張機能はnavigator.deviceMemory をオーバーライドして固定またはランダム化された値を 返すことができます。Chromiumブラウザで undefined に上書きすると独自の 異常シグナルが生成されることに注意してください——フィンガープリンティングスクリプトは Chromeでこのプロパティが存在することを期待しているため、ChromeユーザーエージェントでのAPIの 不在は疑わしいです。
  • VPNの限界を理解する: VPNはIPアドレスを変更して暗号化されたトンネルを 通じてトラフィックをルーティングしますが、navigator.deviceMemory には 全く影響しません。値はブラウザで実行されるJavaScriptによってローカルハードウェアから読み取られ、 ネットワークへの関与は一切ありません。IPが適切にマスクされているかどうかは whatsmy.fyiで確認し、デバイスメモリトラッキングに対処するにはフィンガープリント耐性のあるブラウザを 使用してください。

よくある質問

navigator.deviceMemoryはシークレットモードやプライベートモードでも機能しますか?

はい。プライベートブラウジングは、ブラウザが履歴とクッキーをディスクに書き込むことを 防ぎますが、RAMやChromeがそれを報告する方法は変えません。navigator.deviceMemoryは、シークレットウィンドウでも通常のウィンドウでも同じ値を返します。異なる動作をするのは、 APIを実装していないブラウザ(Firefox・Safari)やアクティブにAPIを変更するブラウザ(Brave) のみです。

FirefoxとSafariはなぜnavigator.deviceMemoryの実装を拒否したのですか?

両チームは、フィンガープリンティングのコストが開発者の利便性の恩恵を上回ると結論づけました。 W3CデバイスメモリリポジトリのGitHub issueでは、「RAMの量はフィンガープリンティングベクターだ」 と主張し、ブラウザメーカーに対して「このプロポーザルを実装する前に10回考えるよう」 求めました。FirefoxとSafariはその立場を取りましたが、ChromeとEdgeはそうしませんでした。 その結果、グローバルブラウザトラフィックの76%がこの値を公開し、FirefoxとSafariのユーザー (約24%)は公開していません。

navigator.deviceMemoryは個人ユーザーを特定するのに使用できますか?

単独では使用できません。標準バケット値が6つしかなく、現代のハードウェア分布を反映して 4および8 GBに大きく偏っているため、navigator.deviceMemory 単独では 約2〜3ビットのエントロピーを提供するに過ぎません——個人識別の閾値をはるかに下回っています。 ただし、CPUコア数・GPUレンダラー文字列・スクリーン解像度・タイムゾーン・インストール済み フォントと組み合わせると、複合ハードウェアフィンガープリントは大規模なデータセット全体で クッキーに相当する識別精度に達することができます。

Device-Memory HTTPクライアントヒントとは何ですか?

JavaScript APIに加え、デバイスメモリ仕様は Sec-CH-Device-Memory HTTP リクエストヘッダーを定義しています。サーバーが Accept-CH: Device-Memory を 送信すると、Chromeは後続のリクエストにデバイスメモリバケットをヘッダーとして添付します—— JavaScriptが実行される前に。これはサーバーが、1行のJavaScriptも実行せずに、すべての HTTPリクエストからRAMティアを読み取れることを意味します。このヘッダーはChrome 61で デフォルトで有効化されました——JavaScriptのAPIがChrome 63で出荷される2バージョン前です。

ボット検出システムはnavigator.deviceMemoryをどのように使用しますか?

ボット検出プラットフォームはこの値を主にトラッキングトークンとしてではなく、整合性シグナルとして 使用します。navigator.deviceMemory を報告されたユーザーエージェント・プラットフォーム 文字列・CPUコア数と相互検証します。アンチ検出ブラウザとヘッドレス自動化フレームワークは、 無効な値——期待される範囲外の2の累乗、または3や6 GBのような2の累乗でない値——を頻繁に 設定し、スプーフィングとして簡単にフラグされます。MacBook ProのChrome 120の本物のブラウザは 常に有効で妥当な組み合わせを報告しますが、設定を誤ったヘッドレスブラウザはそうでないことが 多いです。

デバイスメモリフィンガープリンティングはハードウェアフィンガープリンティングと同じですか?

デバイスメモリフィンガープリンティングはハードウェアフィンガープリンティングの一サブセットです。 より広いハードウェアフィンガープリンティングカテゴリには、CPUコア数 (navigator.hardwareConcurrency)・ WebGLフィンガープリンティングによるGPUアイデンティティ・スクリーン解像度とピクセル密度・ オーディオフィンガープリンティングで読み取られるオーディオハードウェア特性も含まれます。これらのシグナルを合わせると、 プライベートブラウジングやクッキーの削除のようなソフトウェアレベルのプライバシー対策に 対してほぼ免疫を持つハードウェアプロファイルが構築されます。

プライバシー重視のDNSや広告ブロッカーを使用することは役立ちますか?

DNSレベルのブロッカーと広告ブロッカーは、フィンガープリントをトラッキングサーバーに 送信するネットワークリクエストを防ぐことができます。サードパーティのフィンガープリンティング スクリプトが読み込みをブロックされた場合、実行されず navigator.deviceMemoryを読み取ることができません。ただし、サイト自身のコードに直接埋め込まれたファーストパーティの スクリプトは、典型的な広告ブロッカーではブロックされません——サイト自体の一部として 扱われます。サードパーティクッキーが消えるにつれてますます一般的になっているファーストパーティの フィンガープリンティングは、広告ブロッカーの保護を完全に回避します。

関連記事

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

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

今すぐ確認する →

関連記事

デバイスメモリフィンガープリントとは — navigator.deviceMemoryによる追跡 | whatsmy.fyi