オーディオフィンガープリンティングは、 Web Audio API を使用してメモリ内でサイレントシグナルをレンダリングし、出力の微細な浮動小数点の 差異を測定するブラウザ追跡技術です。その差異はハードウェアとソフトウェアスタックに 固有のものです。音は再生されず、マイクにはアクセスせず、パーミッションは一切要求されません。 オーディオシグナルを含むブラウザのフィンガープリントは、今すぐ whatsmy.fyiで確認できます。
TL;DR
オーディオフィンガープリンティングは、ブラウザのメモリ内で小さなオーディオレンダリングタスク を作成し、数値的な結果を読み取ります。CPU、オペレーティングシステムのオーディオスタック、 ブラウザエンジンのすべての組み合わせが浮動小数点演算をわずかに異なる方法で処理するため、 結果はデバイスを一意に識別する安定した数値となります。シークレットモード、Cookieのクリア、 Chromiumベースのブラウザ間でのブラウザ切り替えでも生き残ります。
オーディオフィンガープリンティングとは何か
オーディオフィンガープリンティングは OfflineAudioContext を悪用します。これはもともと処理、ミキシング、エクスポートのためにリアルタイムより 速くオーディオをレンダリングするために設計されたブラウザAPIです。フィンガープリンティング スクリプトはこれを、出力デバイスなしで数学的に定義された波形をレンダリングし、プラット フォームの浮動小数点演算がどのように計算を処理したかを測定するために転用します。 結果はデバイス識別子として機能する単一の数値です。例えば、あるマシンでは124.0434488、別のマシンでは79.59のような値です。
GPUの2Dレンダリングパイプラインを調べる キャンバスフィンガープリンティングとは異なり、オーディオフィンガープリンティングはCPUのデジタル信号処理(DSP)パイプラインを 調べます。両者はハードウェアスタックのまったく異なるレイヤーを捉えるため、一緒に展開 された場合に補完的なシグナルとなります。 Fingerprint.com などの商業的なフィンガープリンティングプラットフォームは、両シグナルを100以上のその他の シグナルと組み合わせて定常的に使用しています。
オーディオフィンガープリンティングは、より広範な ブラウザフィンガープリンティング エコシステムの中で検出が難しいコンポーネントの一つです。保存もCookieもネットワーク リクエストもユーザーインタラクションも必要としないため、DevToolsのNetworkパネルでは 完全に見えず、いかなる警告やパーミッションプロンプトも生成しません。
オーディオフィンガープリンティングの仕組み
このプロセスはバックグラウンドスレッドで50ミリ秒未満で実行され、4つの明確なステップに 従います。
ステップ1 — OfflineAudioContextの作成
スクリプトは固定されたチャンネル数、サンプル数、サンプルレートでOfflineAudioContextをインスタンス化します。通常は1チャンネル、44,100 Hzで5,000サンプルです。「オフライン」とは メモリ内で完全にレンダリングすることを意味します。オーディオハードウェアは関与せず、 出力デバイスは不要で、音は生成されません。
ステップ2 — 波形の生成
OscillatorNodeが10,000 Hzの三角波を生成するように設定されます。 これは数学的に正確な繰り返し波形です。入力にランダム性はありません。したがって、 出力の違いはすべて信号自体からではなく、プラットフォームの処理チェーンから生じます。
ステップ3 — DynamicsCompressorの適用
オシレータシグナルは特定のスレッショルド、ニー、レシオ、アタック、リリースに設定されたDynamicsCompressorNodeを通じてルーティングされます。コンプレッサーは非線形な ゲインカーブを適用します。つまり、単純な加算ではなく除算と指数演算が含まれます。非線形 演算はプラットフォーム間で浮動小数点の丸め誤差を複合させます。これがコンプレッサーが 使用される正確な理由です。CPUアーキテクチャとオーディオスタックの実装間のわずかな違いを 測定可能な安定した値に増幅します。
ステップ4 — 出力の読み取りとハッシュ化
レンダリング完了後、buffer.getChannelData(0)が5,000値のFloat32Arrayを返します。スクリプトは通常、サンプル4,500〜5,000の絶対値の合計を計算して単一のフロートを 生成します。そのフロート、または完全な配列のハッシュがオーディオフィンガープリントになります。
// AudioContext fingerprinting — minimal working example
async function getAudioFingerprint() {
const AudioCtx =
window.OfflineAudioContext || window.webkitOfflineAudioContext;
// 1. Create in-memory context — no hardware, no permissions
const ctx = new AudioCtx(1, 5000, 44100);
// 2. Oscillator — triangle wave at 10 kHz (deterministic input)
const osc = ctx.createOscillator();
osc.type = 'triangle';
osc.frequency.setValueAtTime(10000, ctx.currentTime);
// 3. DynamicsCompressor — non-linear math amplifies platform differences
const comp = ctx.createDynamicsCompressor();
comp.threshold.setValueAtTime(-50, ctx.currentTime);
comp.knee.setValueAtTime(40, ctx.currentTime);
comp.ratio.setValueAtTime(12, ctx.currentTime);
comp.attack.setValueAtTime(0, ctx.currentTime);
comp.release.setValueAtTime(0.25, ctx.currentTime);
osc.connect(comp);
comp.connect(ctx.destination);
osc.start(0);
// 4. Render and read — runs off the main thread
const buffer = await ctx.startRendering();
const data = buffer.getChannelData(0);
// Sum last 500 samples — result differs per device/OS/browser
// Chrome macOS: ~101.46 | Safari: ~79.59 | Firefox: ~80.95
return data.slice(4500).reduce((acc, v) => acc + Math.abs(v), 0);
}なぜすべてのデバイスで異なる音がするのか
バリエーションはオーディオ処理のためのIEEE 754浮動小数点演算を各プラットフォームが どのように実装するかに根ざしています。3つのレイヤーが寄与します。
- CPUアーキテクチャとSIMD命令:x86プロセッサはSSE2またはAVX2ベクター 命令を使用します。ARMプロセッサはNEONを使用します。同じ乗算でも、使用する命令セットに よって最下位ビットが異なる結果になります。5,000サンプルのレンダリングにわたる数千の そのような演算が測定可能に異なる合計を生成します。
- OSオーディオスタックとドライバーバージョン:ChromeはmacOS、Windows、 Linuxで異なる内部FFT実装を使用します。Android 9とAndroid 10は同じ物理デバイスで 測定可能に異なる値を生成します。OSアップデートによりオーディオ処理パイプラインが 変更されたためです。
- ブラウザエンジンの divergence:Blink、WebKit、Geckoはすべて GoogleのWebKit 2011コードベースに起源を持ちますが、10年以上のオーディオ処理コードへの 独立した変更が蓄積されています。Firefoxは同じmacOSハードウェア上でChromeとは異なる 値を返します。
オーディオフィンガープリンティングをキャンバスと区別する注目すべき特性があります。 Blinkベースのブラウザ(Chrome、Edge、Opera、Brave)では、同じデバイスがどのBlinkブラウザ を使用しても同じオーディオフィンガープリントを返します。つまり、追跡者はタブをまたぐだけ でなく、同じマシン上のブラウザをまたいであなたを追跡できます。これはキャンバス フィンガープリンティングが確実にできないことです。
オーディオフィンガープリントはどれほど固有か
オーディオフィンガープリンティングは単独では最も高エントロピーのシグナルではありませんが、 安定性に優れています。そしてその安定性こそが、マルチシグナルフィンガープリンティング システムで価値を持つ理由です。
| 調査結果 | 値 | 出典 |
|---|---|---|
| オーディオフィンガープリントエントロピー(単体) | 約4.8ビット | arXiv 2107.14201 (2021) |
| キャンバスフィンガープリントエントロピー(比較用) | 約5.7ビット | EFF Cover Your Tracks |
| フィンガープリンティングスクリプトを使用するAlexa上位10万サイト | 約10% | 学術測定研究、2021年 |
| DynamicsCompressor方式 vs. FFT方式の安定性 | DC方式がより安定 | arXiv 2107.14201 (2021) |
| 複合フィンガープリントの精度(オーディオを含む100以上のシグナル) | 最大99.6% | Fingerprint.com |
| Safari 17のノイズ注入保護がサンプル平均化でバイパスされる | 40,000サンプル | Fingerprint.comバイパス研究、2023年 |
オーディオフィンガープリンティングの真の強みはエントロピーではなく持続性です。 OS、ブラウザエンジン、またはハードウェアをアップグレードした場合にのみ変化します。 キャンバスとWebGLフィンガープリントはGPUドライバーのアップデートで変化する可能性が ありますが、オーディオフィンガープリントはスタックのより深く、変化が遅いレイヤーに 固定されています。商業的なプラットフォームは、より高エントロピーのシグナルが時間とともに ずれても、デバイスのアイデンティティを一貫して保つ安定化「アンカーシグナル」として これを使用しています。
実世界でのオーディオフィンガープリンティングの利用者
不正検出プラットフォーム
不正防止が主要な正当なユースケースです。Fingerprint.com、DataDome、ThreatMetrix、Siftなどの プラットフォームは、アカウント乗っ取り、クレデンシャルスタッフィング、ボットトラフィックを 検出するための多くのシグナルの一つとしてオーディオフィンガープリンティングを使用しています。 ステルスパッチなしでPuppeteer、Playwright、Seleniumを実行するボットは、多くの場合、 ゼロまたは異常な値を返す仮想化されたオーディオスタックを使用するため、オーディオ出力は 信頼性の高いボット検出シグナルとなります。正当なユーザーのデバイスのオーディオフィン ガープリントがファイルのものと突然一致しなくなると、システムはレビューのためのリスクイベント としてフラグを立てます。
クロスサイト広告ネットワーク
主要なブラウザでサードパーティCookieが廃止されるにつれて、広告テック企業はアイデンティティ 解決のためのフィンガープリンティングへの投資を加速しました。オーディオフィンガープリンティング は、デバイスへの保存を必要としないため魅力的です。つまり、技術的にはePrivacy指令の元の 第5条3項のCookie文言の範囲外に収まりますが、EU規制当局は現在、いずれにしても同意が 必要であると明示的に分類しています。2025年2月、Googleは広告のためのデバイス フィンガープリンティングに対する独自の内部禁止を覆しました。この動きを英国情報コミッショナー 事務所は公式に「無責任」と呼びました。
ペイウォールの施行
パブリッシャーは記事制限を回避するためにCookieをクリアするユーザーを識別するために オーディオフィンガープリンティングを使用しています。フィンガープリントは保存データでは なくハードウェアから計算されるため、Cookieの削除とプライベートブラウジング セッションを通じて持続します。
オーディオフィンガープリンティングは合法か
法的状況は2020年以降大幅に厳しくなっています。GDPRの下では、個人を特定できるオーディオ フィンガープリントは名前が付いているかどうかに関わらず、第4条の下で個人データを構成します。 EDPBの2024年ガイドラインで明確にされたePrivacy指令第5条3項は、従来のCookieだけでなく デバイスフィンガープリンティングを明示的に対象としています。
フランスのCNILは2020年にキャンバスフィンガープリンティングを「Cookieと同等」と裁定し、 同意なしに使用した企業に罰金を科しました。ベルギーとオランダのDPAも同等の裁定を下しました。 EU全域での広告利用には同意が必要です。不正検出は第6条1項fの正当な利益に 基づく場合がありますが、厳密に必要な場合に限り、プライバシーポリシーで開示され、 二次的なマーケティング目的に使用されない場合に限ります。
米国のCCPAとCPRAの下では、オーディオフィンガープリントデータは開示とオプトアウト権の 対象となる「個人情報」です。 W3Cフィンガープリンティングガイダンス はオーディオをフィンガープリンティングベクターとして認識し、API設計者にウェブ仕様での 浮動小数点出力の精度を制限するよう助言しています。法域を超えた施行は依然として一貫していませんが、 規制の方向性は明確です。同意がますます必要とされています。
オーディオフィンガープリンティングから身を守る方法
最も完全なものから日常使用に最も実用的なものの順に保護方法を並べています。
- Torブラウザ(最強):TorはWeb Audio APIを完全に無効にします (
dom.webaudio.enabled = false)。フィンガープリントされるものは何もありません。 トレードオフは、音楽アプリ、インタラクティブメディア、ゲームなどWeb Audioを正当に使用 するサイトが機能しなくなることです。 - Braveブラウザ — Farbling(最良の日常使用バランス): BraveのFarbling はセッションごと、サイトごとのシードから派生した小さなランダムファクターでオーディオ バッファ値を乗算します。セッション内で一貫しているため通常のオーディオ再生は機能しますが、 セッション間およびサイト間で変化するため、クロスサイトとクロスセッションの追跡が信頼 できなくなります。Braveの厳格モードはさらに進んで、波形を擬似ランダムなノイズに置き換えます。
- Firefoxの
privacy.resistFingerprinting:about:configでこのフラグを有効にすると、Firefoxが同じフラグを持つすべての ユーザー間で共有された均一なオーディオ値を返すようになり、ランダム化よりも均一性を目指します。 デフォルトでは有効になっておらず、ウェブサイトの互換性の問題を引き起こす可能性があります。 - Safari 17以降のプライベートブラウジング:Safariはオーディオバッファ値に 小さなノイズ(0.001の大きさ)を注入します。これは最も弱い保護です。Fingerprint.comは 40,000サンプルを平均化することでバイパスを実証しました。これによりノイズが相殺され、 真のフィンガープリント値が回復されます。
- 厳格なフィルターリストを持つuBlock Origin:多くのフィンガープリンティング スクリプトが実行される前にネットワークレベルでブロックします。API自体は変更されません。 既知のスクリプトURLに対してのみ有効です。
- 標準のプライベート/シークレットモード — 保護なし:Chrome、Firefox、 Edgeのシークレットモードはノーマルモードとまったく同じオーディオフィンガープリントを 返します。シークレットは保存を防ぎますが、計算は防ぎません。 whatsmy.fyi で公開されている他のシグナルを確認してください。
よくある質問
オーディオフィンガープリンティングはマイクを使用しますか?
いいえ。オーディオフィンガープリンティングはOfflineAudioContext APIを使用し、 入力デバイスにアクセスすることなくメモリ内で完全にオーディオをレンダリングします。 パーミッションは不要で、音は生成されず、ブラウザのパーミッションプロンプトや インジケーターには表示されません。Web Audio APIはマイクアクセスを制御する Media Capture API(getUserMedia)とは別の仕様です。
シークレット/プライベートブラウジングモードでも機能しますか?
はい、完全に機能します。シークレットモードはブラウザが閲覧履歴、Cookie、ローカルデータを ディスクに保存するのを防ぎますが、オーディオフィンガープリントは保存データではなく ハードウェアとソフトウェアの特性から計算されます。CPUとOSのオーディオスタックは シークレットモードでも同一の動作をします。BraveやTorブラウザなどのアクティブな オーディオAPIランダム化を持つブラウザのみが異なる動作をします。
オーディオフィンガープリンティングとキャンバスフィンガープリンティングの違いは何ですか?
キャンバスフィンガープリンティングはGPUの2Dレンダリングパイプラインを調べます。 グラフィックスカード、ドライバー、フォントレンダラーの違いが固有のピクセルハッシュを 生成します。オーディオフィンガープリンティングはCPUのDSPパイプラインを調べます。 CPUアーキテクチャとオーディオスタック間の浮動小数点演算の違いが固有のフロートを生成します。 まったく異なるハードウェアレイヤーをターゲットにしており、ほぼ常に一緒に使用されます。 重要なことに、オーディオフィンガープリンティングは同じデバイスでよりクロスブラウザ安定しています。 同じマシン上のChromeとEdgeは同じオーディオフィンガープリントを返しますが、 異なるキャンバスフィンガープリントを返す可能性があります。GPU側の同等のものについては キャンバスフィンガープリンティングガイド をご覧ください。
VPNはオーディオフィンガープリンティングから保護できますか?
いいえ。VPNはIPアドレスを変更してトラフィックを暗号化しますが、ブラウザが浮動小数点 オーディオ演算を処理する方法には影響しません。オーディオフィンガープリントは完全に ローカルのハードウェアとソフトウェアから派生します。リクエストがどのサーバーを通過するかに 関係なく同じです。オーディオフィンガープリント保護にはBraveブラウザまたはprivacy.resistFingerprintingを有効にしたFirefoxを使用してください。 VPNが実際にIPをマスクしているかどうかは whatsmy.fyi で確認できます。
オーディオフィンガープリンティングとWebGLフィンガープリンティングはどちらが精度が高いですか?
WebGLフィンガープリンティングはより高いエントロピーを生成します。正確なGPUモデル、 ドライバーバージョン、サポートされている拡張機能リストを公開でき、同一のハードウェア 設定の2台のマシンでさえ区別できます。オーディオフィンガープリンティングはより低い エントロピー(WebGLのより高い値と比較して約4.8ビット)ですが、ブラウザのアップデートを 通じて安定性に優れています。実際には、商業的なシステムは両者を組み合わせます。 最初の高解像度識別にはWebGL、フィンガープリントが時間とともに劣化するのを防ぐ安定した アンカーにはオーディオを使用します。GPU側の仕組みについては WebGLフィンガープリンティングガイド をお読みください。
DynamicsCompressorはなぜオーディオフィンガープリンティングをより効果的にするのですか?
DynamicsCompressorNodeは非線形なゲインカーブを適用します。単純な加算ではなく 指数演算と除算が含まれます。非線形演算は線形演算よりもはるかに多く、数千のサンプルにわたって 浮動小数点の丸め誤差を複合させます。一つの中間乗算におけるプラットフォーム固有のわずかな 違いが、コンプレッサーの処理チェーン全体に連鎖して、測定可能な安定した識別力のある最終値に なります。コンプレッサーがなければ、単純なオシレータ出力はプラットフォームのバリエーションが はるかに少なく、フィンガープリントとしての識別力が低くなります。
ウェブサイトは通知なしにオーディオフィンガープリンティングを使用できますか?
技術的には可能です。APIはパーミッションプロンプトを必要とせず、Networkタブに痕跡を残さず、 バックグラウンドスレッドで静かに実行されます。法的には、EUのGDPRとePrivacy指令の下では、 事前の同意なしに広告目的でオーディオフィンガープリンティングを使用することは違法です。 不正検出には、プライバシーポリシーで開示された正当な利益の根拠が適用される場合があります。 実際には施行は一貫しておらず、多くのサイトが明示的な同意通知なしにフィンガープリンティングを 展開しています。 EFFのCover Your Tracks はサイトがあなたをフィンガープリンティングしているかテストできます。
関連記事
- ブラウザフィンガープリンティングとは?Cookieなしでサイトがあなたを追跡する方法 — 一つのデバイスアイデンティティに組み合わされたすべてのフィンガープリンティングシグナルの完全ガイド
- キャンバスフィンガープリンティングとは?ウェブサイトがCookieなしであなたを追跡する方法 — GPUレンダリングの違いがピクセル出力から固有識別子を生成する方法
- WebGLフィンガープリンティングとは?GPUがブラウザを識別する方法 — 3DグラフィックスAPIがGPUベンダー、モデル、ドライバーバージョンを公開する方法
- フォントフィンガープリンティングとは?インストール済みフォントがあなたを追跡する方法 — インストールされたフォントリストが全体的なブラウザフィンガープリントに貢献する方法



