PowerScan
IT

Canvas fingerprinting spiegato: perché due browser identici disegnano pixel diversi

Fingerprint del browser · 6 min di lettura · di PowerScan

Foto: Unsplash

Il canvas fingerprinting è la tecnica di cui più persone hanno sentito parlare e che meno persone sanno spiegare. L'idea è semplice: chiedere al browser di disegnare qualcosa, rileggere i pixel e calcolarne l'hash. La parte interessante è perché i pixel differiscano da una macchina all'altra.

Il disegno

Uno script di fingerprinting crea un <canvas> fuori schermo, ottiene un contesto 2D e disegna una breve sequenza: un rettangolo pieno, del testo in un font nominato, magari un gradiente, una curva, un'emoji. Poi chiama toDataURL() o getImageData() per leggere il risultato e fa passare i byte attraverso un hash. L'output è una breve stringa come 71ae464e. Quella stringa è l'«hash del canvas».

Nulla del disegno è segreto, e nulla viene inviato alla GPU che la pagina non potrebbe già descrivere. L'informazione sta nel rendering, non nelle istruzioni.

Perché i pixel differiscono

Il testo è la principale fonte di variazione. Il rendering di un glifo dipende dal file del font effettivamente scelto (i fallback differiscono per sistema operativo), dalla strategia di hinting e anti-aliasing (a scala di grigi o sub-pixel, e con quale ordine dei sub-pixel), dal rasterizzatore (FreeType, DirectWrite, CoreText o uno proprio del browser) e dal fatto che la composizione l'abbia fatta la GPU o la CPU. Ognuno di questi fattori produce pixel di bordo leggermente diversi. Un singolo pixel grigio chiaro sul bordo di una «e» basta a cambiare completamente l'hash.

Gradienti e curve ne aggiungono altri: driver grafici e percorsi di anti-aliasing diversi arrotondano diversamente i valori intermedi. Il risultato è che due macchine con la stessa versione del browser ma GPU, driver o sistemi operativi diversi produrranno di solito hash diversi, mentre la stessa macchina produce ogni volta lo stesso hash. Stabile e diversificato, proprio ciò che un tracker desidera.

Cosa dice un hash a un sito

Di per sé, nulla su chi sei. Dice al sito che questo browser renderizza questo disegno in questo modo, il che vale per un certo gruppo di macchine. Ciò che conta è la dimensione di quel gruppo. Un portatile comune con grafica integrata e font predefiniti condivide il proprio hash con molti altri. Una configurazione insolita può essere quasi unica. Combinato con dimensioni dello schermo, elenco delle lingue e stringa del renderer, anche un hash comune diventa parte di una combinazione rara.

Cosa fanno i browser a riguardo

Firefox, con resist-fingerprinting attivo, restituisce un canvas vuoto o casuale e può chiedere il permesso di accedere al canvas. Brave aggiunge piccole perturbazioni casuali alle letture del canvas, così l'hash cambia tra siti e sessioni. Safari limita quali font sono visibili e vincola alcune letture. Chromium di per sé non rende casuale il canvas; i browser basati su di esso che puntano a controllare i fingerprint lo fanno con patch proprie, e la qualità di tali patch varia.

Il rumore non è gratuito. Un hash del canvas che cambia a ogni visita è già di per sé un segnale, perché i browser reali non lo fanno. La strategia migliore per un profilo di browser isolato è un hash plausibile e coerente, così sembra una sola macchina normale e non una macchina diversa ogni ora.

Cosa mostra una diagnostica

PowerScan disegna una propria piccola immagine e ti mostra l'hash. Non lo carica mai: il valore esiste solo nella tua scheda. Ricarica e l'hash dovrebbe essere identico. Se non lo è, qualcosa nel browser sta iniettando rumore, e conviene saperlo prima di fare affidamento su quel profilo.

Tutti gli articoli · Avvia la scansione