1. Что такое AudioContext в фингерпринтинге браузеров

AudioContext — часть Web Audio API, предоставляющая граф обработки сигналов для управления аудиоисточниками, фильтрами и получателями внутри браузера. Хотя он не так заметен, как Canvas или WebGL, он может быть скрытым, но мощным идентификатором на уровне ПО.

Системы фингерпринтинга используют аудиопайплайны, например:

  • Количество каналов и возможности аудиовыхода
  • Расхождения в частоте дискретизации и точности воспроизведения
  • Задержки обработки аудио
  • Поддержка ScriptProcessorNode или AudioWorklet
  • Отладочные свойства: audioContext.listener, currentTime, baseLatency

Для создания AudioContext-фингерпринта не требуется взаимодействие с пользователем или запрос разрешений, что делает его популярной целью в пассивных системах распознавания устройств.


2. Как платформы обнаруживают AudioContext-фингерпринты

Современные платформы (особенно те, что занимаются аудиоводяными знаками, свёрткой аудио или анализом DSP) используют AudioContext для измерения различий в браузерах и аудиодвижках.

Пример кода для детекции:

const audioCtx = new AudioContext();
const oscillator = audioCtx.createOscillator();
const listener = audioCtx.listener;
const dest = audioCtx.destination;

console.log(listener.forwardX.value, listener.forwardY.value, listener.forwardZ.value);
console.log({
  sampleRate: audioCtx.sampleRate,
  baseLatency: audioCtx.baseLatency,
  state: audioCtx.state,
  outputChannelCount: dest.maxChannelCount,
});

Что можно использовать для фингерпринтинга:

АудиосвойствоИспользование в трекинге
Частота дискретизацииОпределение ОС (macOS/Windows)
Поддержка каналовОпределение возможностей устройства
Пространство слушателяСкрытые стерео/3D-паттерны
Сигнатуры DSP-ядраОсобенно в свёрточных сетях
Планирование аудиоСобытия oncomplete + задержки

Некоторые платформы генерируют синтетические волны, вычисляют БПФ (FFT) или анализируют артефакты (например, клиппинг), чтобы отличить реальные браузеры от эмулированных.


3. Как FlashID маскирует AudioContext-фингерпринты

Чтобы предотвратить фингерпринтинг через звук, FlashID полностью виртуализирует и подменяет поведение Web Audio API:

  1. Виртуализация AudioContext Listener
  • Подменяет 3D-параметры (forwardX, positionX, velocity) для PannerNode и AudioListener.
  1. Маскировка SampleRate и количества каналов
  • Заменяет audioContext.sampleRate на типичные значения (44100, 48000 и др.).
  • Подменяет destination.maxChannelCount независимо от реальных возможностей устройства.
  1. Эмуляция DSP-путей
  • Генерирует искусственные буферы вместо реальной обработки сигналов.
  • Блокирует использование ScriptNode/Worklet для выявления уникальности.
  1. Контроль состояния и задержек
  • Фиксирует audioContext.state (running/closed/suspended).
  • Маскирует baseLatency под стандартное поведение для ПК или мобильных устройств.
  1. Согласованность между сессиями
  • Audio-фингерпринты привязываются к профилю.
  • Исключает расхождения между сессиями, сохраняя одни и те же значения после сброса движка.

FlashID использует внутренний AudioBus-прокси, создающий поддельные узлы и цепочки, которые выглядят правдоподобно для Web Audio API, но не раскрывают реальные DSP-характеристики устройства.

Это делает невозможным использование AudioContext (изолированно или с Canvas/WebGL) для идентификации уникальности устройства или определения фейковых окружений — при сохранении ожидаемого интерфейса для вашего кода.


Рекомендуемое Чтение

Защита безопасности нескольких аккаунтов, начиная с FlashID

С помощью нашей технологии отпечатков пальцев оставайтесь незаметными.

Защита безопасности нескольких аккаунтов, начиная с FlashID