O que é Áudio Fingerprinting? Como o AudioContext Rastreia Seu Navegador
Navegador & Dispositivo

O que é Áudio Fingerprinting? Como o AudioContext Rastreia Seu Navegador

O áudio fingerprinting usa a Web Audio API para processar um sinal de teste através do stack de áudio do seu dispositivo, produzindo um hash único baseado em diferenças de hardware e software.

7 min de leitura·

O áudio fingerprinting é uma técnica de rastreamento do navegador que usa a Web Audio API para renderizar um sinal silencioso na memória e medir as minúsculas diferenças de ponto flutuante na saída — diferenças que são únicas para o seu hardware e pilha de software. Nenhum som é reproduzido, nenhum microfone é acessado e nenhuma permissão é solicitada. Você pode verificar sua impressão digital do navegador, incluindo sinais de áudio, agora mesmo no whatsmy.fyi.

Resumo

O áudio fingerprinting cria uma pequena tarefa de renderização de áudio inteiramente dentro da memória do seu navegador e depois lê o resultado numérico. Como cada combinação de CPU, pilha de áudio do sistema operacional e motor do navegador processa a matemática de ponto flutuante de forma ligeiramente diferente, o resultado é um número estável que identifica exclusivamente seu dispositivo — sobrevivendo ao modo incógnito, limpeza de cookies e até troca de navegador em navegadores baseados em Chromium.

O que é Áudio Fingerprinting?

O áudio fingerprinting explora o OfflineAudioContext — uma API do navegador originalmente projetada para renderizar áudio mais rápido que em tempo real para processamento, mixagem e exportação. Os scripts de fingerprinting o reutilizam para renderizar uma forma de onda matematicamente definida sem dispositivo de saída, depois medem como a aritmética de ponto flutuante da plataforma tratou o cálculo. O resultado é um único número — algo como 124.0434488 em uma máquina ou 79.59 em outra — que atua como identificador do dispositivo.

Ao contrário do canvas fingerprinting, que sonda o pipeline de renderização 2D da GPU, o áudio fingerprinting sonda o pipeline de processamento de sinal digital (DSP) da CPU. Os dois capturam camadas completamente diferentes da pilha de hardware, tornando-os sinais complementares quando implantados juntos. Plataformas comerciais de fingerprinting como a Fingerprint.com combinam rotineiramente ambos os sinais ao lado de mais de 100 outros.

O áudio fingerprinting é um dos componentes mais difíceis de detectar do ecossistema mais amplo de browser fingerprinting. Como não requer armazenamento, cookies, requisições de rede ou interação do usuário, é completamente invisível no painel Rede do DevTools.

Como Funciona o Áudio Fingerprinting?

O processo é executado em uma thread em segundo plano em menos de 50 milissegundos e segue quatro etapas claras.

Etapa 1 — Criar um OfflineAudioContext

O script instancia um OfflineAudioContext com uma contagem fixa de canais, contagem de amostras e taxa de amostragem — tipicamente um canal, 5.000 amostras a 44.100 Hz. "Offline" significa que renderiza inteiramente na memória: nenhum hardware de áudio está envolvido, nenhum dispositivo de saída é necessário e nenhum som é produzido.

Etapa 2 — Gerar uma Forma de Onda

Um OscillatorNode é configurado para produzir uma onda triangular a 10.000 Hz. Esta é uma forma de onda matematicamente precisa e repetitiva — não há aleatoriedade na entrada. Qualquer diferença na saída, portanto, vem inteiramente da cadeia de processamento da plataforma.

Etapa 3 — Aplicar DynamicsCompressor

O sinal do oscilador é roteado através de um DynamicsCompressorNode definido com limiar, joelho, razão, ataque e liberação específicos. O compressor aplica uma curva de ganho não linear — o que significa que a matemática envolve divisão e exponenciação, não apenas adição. Operações não lineares amplificam erros de arredondamento de ponto flutuante entre plataformas, que é precisamente por que o compressor é usado: amplifica as minúsculas diferenças entre arquiteturas de CPU e implementações de pilha de áudio em um valor estável e mensurável.

Etapa 4 — Ler e Fazer Hash da Saída

Após a conclusão da renderização, buffer.getChannelData(0) retorna um Float32Array de 5.000 valores. O script tipicamente soma os valores absolutos das amostras 4.500–5.000 para produzir um único float. Esse float — ou um hash do array completo — torna-se a impressão digital de áudio.

// 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);
}

Por que Cada Dispositivo Soa Diferente?

A variação está enraizada em como cada plataforma implementa a aritmética de ponto flutuante IEEE 754 para processamento de áudio. Três camadas contribuem:

  • Arquitetura da CPU e instruções SIMD: Processadores x86 usam instruções vetoriais SSE2 ou AVX2; processadores ARM usam NEON. A mesma multiplicação produz um bit menos significativo diferente dependendo de qual conjunto de instruções é usado.
  • Pilha de áudio do SO e versão do driver: O Chrome usa uma implementação FFT interna diferente no macOS versus Windows e Linux. Android 9 e Android 10 produzem valores mensuravelmente diferentes no mesmo dispositivo físico porque uma atualização do SO alterou o pipeline de processamento de áudio.
  • Divergência do motor do navegador: Blink, WebKit e Gecko compartilham raízes na base de código WebKit de 2011 do Google, mas acumularam mais de uma década de modificações independentes no código de processamento de áudio.

Uma propriedade notável distingue o áudio fingerprinting do canvas: em navegadores baseados em Blink (Chrome, Edge, Opera, Brave), o mesmo dispositivo retorna a mesma impressão digital de áudio independentemente de qual navegador Blink é usado. Isso significa que um rastreador pode seguir você entre navegadores — não apenas entre abas — na mesma máquina, algo que o canvas fingerprinting não consegue fazer de forma confiável.

Quão Única é uma Impressão Digital de Áudio?

DescobertaValorFonte
Entropia da impressão digital de áudio (isolamento)~4,8 bitsarXiv 2107.14201 (2021)
Entropia da impressão digital canvas (para comparação)~5,7 bitsEFF Cover Your Tracks
Sites entre o Alexa Top 100k usando scripts de fingerprinting~10%Estudo de medição acadêmico, 2021
Precisão combinada da impressão digital (100+ sinais incluindo áudio)até 99,6%Fingerprint.com

O Áudio Fingerprinting é Legal?

Sob o GDPR, uma impressão digital de áudio que pode identificar um indivíduo constitui dados pessoais sob o Artigo 4. A Diretiva ePrivacy Artigo 5(3), conforme esclarecido pelas diretrizes de 2024 do EDPB, agora cobre explicitamente o device fingerprinting. Na França, a CNIL declarou em 2020 que o canvas fingerprinting é "equivalente a um cookie". No Brasil, a LGPD (Lei Geral de Proteção de Dados) igualmente exige base legal adequada para o tratamento de dados pessoais obtidos por fingerprinting, inclusive para fins publicitários.

Como se Proteger do Áudio Fingerprinting

  • Tor Browser (mais forte): O Tor desabilita completamente a Web Audio API (dom.webaudio.enabled = false).
  • Brave Browser — Farbling (melhor equilíbrio para uso diário): O Farbling do Brave multiplica os valores do buffer de áudio por um pequeno fator aleatório derivado de uma semente por sessão e por site.
  • Firefox privacy.resistFingerprinting: Faz o Firefox retornar valores de áudio uniformes compartilhados por todos os usuários com a mesma flag.
  • Safari 17+ Navegação Privada: O Safari injeta pequeno ruído nos valores do buffer de áudio — a proteção mais fraca.
  • uBlock Origin com listas de filtros estritas: Bloqueia muitos scripts de fingerprinting no nível da rede antes que possam ser executados.

Perguntas Frequentes

O áudio fingerprinting usa meu microfone?

Não. O áudio fingerprinting usa a API OfflineAudioContext, que renderiza áudio inteiramente na memória sem acessar nenhum dispositivo de entrada.

Funciona no modo incógnito ou navegação privada?

Sim, completamente. O modo incógnito impede que o navegador salve dados no disco — mas a impressão digital de áudio é computada a partir de características de hardware e software, não de dados armazenados.

Como o áudio fingerprinting difere do canvas fingerprinting?

O canvas fingerprinting sonda o pipeline de renderização 2D da GPU. O áudio fingerprinting sonda o pipeline DSP da CPU. Eles visam camadas de hardware completamente diferentes e quase sempre são usados juntos. O áudio fingerprinting é mais estável entre navegadores no mesmo dispositivo. Veja o guia de canvas fingerprinting para um olhar mais aprofundado no equivalente do lado da GPU.

Artigos Relacionados

Verifique seu endereço IP, localização e pontuação de privacidade — instantaneamente.

Zero logs. Zero rastreamento. Zero APIs externas.

Executar a verificação agora →

Artigos relacionados

O que é Áudio Fingerprinting? Como o AudioContext Rastreia Seu Navegador | whatsmy.fyi