Impressão digital de canvas
O canvas fingerprinting é uma forma de identificar um computador por como ele desenha. Um site pede ao navegador para desenhar uma imagem invisível com texto e formas, pega o resultado e calcula a partir dele uma soma de verificação.
A imagem é a mesma, mas a soma difere entre máquinas: quem desenha é a placa de vídeo, e diferenças mínimas nela, no driver, no conjunto de fontes e no antialiasing produzem pixels diferentes na saída. Um humano não vê a diferença — um número vê.
O mesmo truque funciona com WebGL (gráficos 3D, mais o nome da placa de vídeo em texto puro) e com AudioContext (processamento de áudio em vez de uma imagem).
Por que é uma pista forte
Uma soma de canvas não fica guardada em nenhum arquivo — não pode ser apagada como um cookie. Ela é calculada de novo a cada visita e permanece igual até que você troque de computador, placa de vídeo ou driver.
Por isso duas contas abertas na mesma máquina parecem uma só pessoa pelo canvas, mesmo que tudo o mais seja diferente.
O que torna perigosa uma falsificação descuidada
A falsificação normalmente é feita com ruído: desvios quase imperceptíveis são adicionados ao resultado para que a soma mude. Aqui é fácil piorar as coisas, e há três formas de fazer isso:
- O ruído muda a cada leitura. Uma máquina real dá a mesma resposta para a mesma solicitação. Se a soma pula de uma chamada para outra, isso não é «um computador único» — é uma falsificação óbvia, e se verifica com duas solicitações seguidas.
- O ruído é grande demais. O valor desliza para uma faixa onde dispositivos reais nunca caem.
- O canvas é falsificado, mas a placa de vídeo do WebGL continuou real. Dois valores que deveriam estar ligados começam a se contradizer.
A regra é a mesma de toda a impressão digital: consistência importa mais do que exclusividade. Uma impressão digital estável e comum é melhor do que uma irrepetível.
Como verificar
A verificação de impressão digital mostra a sua soma de canvas e faz duas leituras seguidas — para que dê para ver se o valor se mantém ou pula.
