PowerScan
JA

マイクを使わないオーディオフィンガープリンティング

ブラウザフィンガープリント · 読了目安 5 分 · PowerScan 著

写真: Unsplash

「オーディオフィンガープリント」と聞くと、マイクで録音するものを思い浮かべるかもしれません。そうではありません。それは、再生されることも、キャプチャされることも、タブの外に出ることもない合成音を、あなたのマシンがどう処理するかから導かれる数値です。

どのように作られるか

スクリプトはOfflineAudioContextを作成します。これはスピーカーではなく、メモリ上のバッファにオーディオをレンダリングするものです。オシレーター(通常は固定周波数の三角波)をダイナミクスコンプレッサー経由でデスティネーションに接続し、レンダリングを開始します。バッファの準備ができたら、サンプルの一部(多くは数百個の値)を読み取ってハッシュ化します。結果はd4f50eb9のような短い文字列です。

この処理全体は数十ミリ秒で済み、何もキャプチャしないため、許可も不要です。OfflineAudioContextは、スクリプトの処理が終わると閉じられます。

マシンごとに異なる理由

コンプレッサーとオシレーターは、ブラウザのオーディオエンジン内で浮動小数点演算として実装されており、正確な出力はエンジンのバージョン、オペレーティングシステムの数学ライブラリ、CPUの浮動小数点の挙動、そして構成によってはオーディオハードウェアのサンプルレートに依存します。違いはごくわずかで、小数点以下の末尾の数ビットですが、ハッシュ化するとわずかな違いが全く異なる文字列に増幅されます。canvasハッシュと同様に、同じマシンでは安定し、マシンが違えば変わります。

多様性はcanvasより低く、同じブラウザビルドとオペレーティングシステムを持つ多くのマシンが同じオーディオハッシュを生み出します。主に、確認用のシグナルとして、また出力をランダム化するブラウザを検出する手段として役立ちます。

ブラウザの対応

Braveは、canvasと同じように、オーディオの読み出しにノイズを加えます。resist-fingerprintingを有効にしたFirefoxは、Web Audio APIの一部を無効にするか、一定の値を返します。Chromiumは出力を変更しません。ハッシュをランダム化するブラウザは、リロードのたびに異なる値を生みます。診断ではリロードして比べるだけで、それが見えるようになります。

プライバシーを正確に言えば

音は録音されません。マイクは開かれません。バッファは計算のあいだだけメモリ上に存在し、その後破棄されます。タブから出ていく可能性があるのはハッシュだけで、それもページが送信することを選んだ場合に限られます。ハッシュをローカルで計算してあなたに見せる診断は、トラッカーが読むものとまったく同じものを読み取り、そのあとは何もしません。

値の読み方

確認する価値のあることが二つあります。第一に、ハッシュが存在すること。「利用不可」はAPIがブロックされていることを意味し、サイトによってはそれ自体を一つのシグナルとして扱います。第二に、安定していること。リロードしても値が変わらないはずです。読み込みのたびにハッシュが変わるなら、ブラウザがノイズを注入していることを示します。これはサイトをまたぐトラッキングから守ってくれますが、同時にそのブラウザがそうしていることも示してしまいます。

すべての記事 · スキャンを実行