Cancelli i cookie. Cambi IP. Apri una finestra in incognito. Aggiorni perfino Chrome. Il sito ti saluta lo stesso, come un vecchio amico: stessi consigli, stesso stato di fraud-flag, stessa fascia di prezzo. Quasi tutto quel lavoro di riconoscimento lo fanno tre piccoli hash, e nessuno vive in uno storage che tu possa svuotare.
Si tratta del fingerprint Canvas, del fingerprint WebGL e del fingerprint AudioContext. Ognuno nasce dall'hardware e dallo stack di driver sotto al browser, non da qualcosa che la pagina abbia scritto sul tuo dispositivo. Insieme formano una firma di device statica che resiste a riavvii, reset del profilo, reinstallazioni da zero e alla maggior parte delle estensioni di privacy. È il livello sotto i cookie, ed è lì che vive davvero il tracking moderno. Aggiornato al 2026.
Un fingerprint statico del device è un hash che nasce da come il tuo hardware e i tuoi driver rispondono a un carico di lavoro (un canvas disegnato, una scena 3D renderizzata, un'onda sinusoidale processata). Non viene salvato sul tuo dispositivo, quindi non c'è nulla da cancellare. Due macchine dello stesso lotto di fabbrica possono comunque produrre hash diversi per la varianza del silicio della GPU e per il numero di build dei driver. Il quadro generale lo abbiamo già fatto in Browser Fingerprinting: come i siti ti tracciano. Qui entriamo nei tre vettori che fanno la maggior parte del lavoro.
Perché proprio questi tre
Uno script di fingerprinting moderno sonda circa 40 vettori su una pagina tipica: User-Agent, dimensione dello schermo, header di lingua, elenco dei font, plugin installati, offset del fuso orario, precisione del puntatore, hardware concurrency. Quasi tutti questi valori sono interi o stringhe brevi e in pratica ognuno vale fra uno e cinque bit di entropia. Servono da collante, non da identificatori.
Canvas, WebGL e AudioContext giocano un altro campionato. Ognuno fa passare un carico deterministico attraverso il dispositivo e ne calcola l'hash. L'hash dipende dal silicio della GPU, dalla versione del driver, dal rasterizzatore dei font del sistema operativo, dalla strategia di anti-aliasing e dall'implementazione in virgola mobile del sottosistema audio. Per questo un'installazione nuova di Chrome sulla stessa macchina restituisce il giorno dopo quasi gli stessi tre hash, mentre la stessa macchina con un driver GPU diverso li cambia in modo visibile.
I numeri del dataset Cover Your Tracks dell'EFF e del corpus AmIUnique di Inria collocano l'hash canvas attorno ai dieci bit di entropia, le informazioni del renderer WebGL fra sei e otto bit, AudioContext a quattro o cinque. Una sessione che espone tutti e tre supera comodamente i diciotto bit, di che tirarti fuori da un bacino di un quarto di milione di utenti. Più che abbondante per ad targeting, fraud scoring e quasi tutte le pipeline di analytics.
Il fingerprinting Canvas nel dettaglio

Un fingerprint canvas è l'hash di un'immagine che il tuo browser ha disegnato senza mai mostrartela. Lo script crea un <canvas> fuori schermo, ci mette qualche forma e una stringa in due o tre font, chiama toDataURL() e calcola l'hash dei byte del PNG. Tu non vedi niente, e tutto si esaurisce in pochi millisecondi.
Su una data macchina l'hash rimane stabile perché il percorso di rendering è deterministico. Stessa GPU, stesso driver, stesso rasterizzatore dei font, stessa modalità di anti-aliasing: stesso PNG, byte per byte. Cambia una sola di queste variabili e l'hash salta. È anche il motivo per cui un feature update di Windows può far sembrare nuovo, agli occhi di un tracker, un utente fino a quel momento stabile, e per cui le macchine aziendali con driver bloccati si assomigliano quasi tutte.
L'ossatura dell'attacco è questa:
const c = document.createElement("canvas");
const ctx = c.getContext("2d");
ctx.textBaseline = "alphabetic";
ctx.font = "14px 'Arial'";
ctx.fillStyle = "#069";
ctx.fillText("Cwm fjordbank glyphs vext quiz, ", 2, 15);
ctx.fillStyle = "rgba(102,204,0,0.7)";
ctx.fillText("Cwm fjordbank glyphs vext quiz, ", 4, 17);
const png = c.toDataURL();
// hash(png) diventa il tuo fingerprint canvasNon c'è nulla di esotico. È in sostanza la routine che FingerprintJS, ThreatMetrix e Cloudflare Bot Management eseguono al primo contatto, con piccole varianti. Brave e uBlock Origin si difendono iniettando un rumore di sessione prima della lettura, così l'hash cambia ogni volta. Contro aggregatori ingenui funziona, però la protezione stessa è rilevabile: un hash che non si ripete mai è di per sé un segnale, e i tracker ti etichettano come «utente con randomizzazione canvas».
Il fingerprinting WebGL nel dettaglio

WebGL dà alla pagina accesso diretto alla tua GPU attraverso un wrapper JavaScript dell'API OpenGL ES. Saltano subito all'occhio due cose. Primo, una piccola estensione chiamata WEBGL_debug_renderer_info espone alla lettera il vendor della GPU e la stringa del renderer. Sulla maggior parte dei desktop si legge qualcosa come ANGLE (NVIDIA, GeForce RTX 4070, OpenGL 4.5.0) o di altrettanto specifico. Quella sola stringa può portare più di dieci bit di entropia, perché include il ramo del driver e a volte persino un hash di build.
Secondo, anche con l'estensione mascherata o disabilitata, il risultato del rendering di una scena 3D moderatamente complessa (un toro texturizzato, una sfera sfumata, qualche triangolo ruotato) resta comunque hashable. Compilatori di shader, impostazioni di precisione e implementazioni di blending diversi spostano i pixel di quantità piccole ma costanti. Lo script rilegge il framebuffer con readPixels(), lo hashea e salva il risultato.
Disabilitare del tutto WebGL è la difesa più pulita e la più costosa. Google Maps, la maggior parte dei giochi nel browser, metà degli strumenti SaaS moderni che disegnano grafici sulla GPU e un numero sorprendente di viewer 3D di e-commerce smettono di funzionare. Firefox espone la preferenza webgl.disabled per chi accetta il compromesso. Tor Browser tiene WebGL attivo ma normalizza la stringa del renderer su un unico valore per tutte le installazioni Tor di una stessa piattaforma, ed è il motivo per cui due utenti Tor su hardware completamente diverso restituiscono alla pagina la stessa firma WebGL.
Il fingerprinting AudioContext nel dettaglio

Il fingerprinting AudioContext è il più silenzioso dei tre, in tutti i sensi. Lo script istanzia un OfflineAudioContext, genera un'onda triangolare o sinusoidale a frequenza fissa, la fa passare in un compressore dinamico con parametri fissi e rilegge i campioni come Float32Array. Agli altoparlanti non arriva nessun suono. Il dispositivo non deve essere riattivato, le cuffie non c'entrano. Quello che conta è la matematica in virgola mobile con cui lo stack audio ha generato quei campioni.
All'orecchio umano l'uscita audio sembra identica (e anche a qualsiasi analizzatore di spettro che guardi solo al contenuto udibile), ma i valori float32 sottostanti cambiano da un'implementazione all'altra del compressore. Build di browser, motori audio del sistema operativo e perfino certe revisioni del microcodice della CPU spostano i bit meno significativi secondo pattern stabili. Calcolare l'hash del buffer o sommarlo produce un numero che sopravvive a riavvii, reset del profilo e quasi tutte le estensioni.
AudioContext porta meno entropia del canvas (tipicamente quattro o cinque bit), quindi da solo non identifica nessuno. Il suo valore reale per un tracker è che quasi nessuno lo difende. Canvas e WebGL si prendono l'attenzione rumorosa degli strumenti di privacy, l'audio resta sotto. Uno script che trova hash canvas e audio uguali su due sessioni ha sul match una confidenza ben più alta di quanto il solo canvas giustificherebbe, perché il numero audio difficilmente coincide per caso.
I tre a confronto
Messi uno accanto all'altro, i tre vettori hanno punti di forza diversi. La tabella che segue riassume cosa ciascuno porta a un tracker, quanto ti costa difenderti e quanto la difesa stessa salta all'occhio.
| Vettore | Entropia media | Persistenza | Difese | Difesa rilevabile | Usato da |
|---|---|---|---|---|---|
| Canvas | ~10 bit | Fino a cambio di GPU, driver o font | Randomizzazione Brave, CanvasBlocker, immagine uniforme Tor | Sì (il rumore è esso stesso segnale) | FingerprintJS, ThreatMetrix, Cloudflare Bot Management |
| WebGL | ~6-8 bit (stringa renderer fino a 10) | Fino al cambio di GPU o driver | Mascherare il renderer, disabilitare WebGL, uniformazione Tor | Sì (UA contro renderer evidenzia divergenze) | FingerprintJS, SDK ad-tech, piattaforme antifrode |
| AudioContext | ~4-5 bit | Sopravvive a riavvii e reinstallazioni | Rara. Estensioni di rumore audio, Tor parziale | Bassa (la difesa è poco comune) | FingerprintJS, fornitori anti-bot, suite di analytics |
Il pattern non cambia. Ogni vettore preso da solo è duro da battere, e le difese che funzionano si vedono. Un tracker che legge canvas normale, WebGL normale e una flag AudioContext mancante sta guardando una fetta minoritaria della popolazione, e anche questo basta a identificare.
Perché Tor ne lascia trapelare uno
Tor Browser è la difesa consumer più aggressiva contro il fingerprinting statico. Di default, le letture sul canvas restituiscono un'immagine bianca uniforme (all'utente viene chiesto il consenso prima di rilasciare dati veri). WebGL resta attivo, ma la stringa del renderer viene normalizzata su un solo valore in tutte le installazioni Tor della stessa piattaforma, e il rendering finale viene arrotondato per smussare la varianza dei driver. Due dei tre vettori dentro Tor sono praticamente morti.
AudioContext è il filo che resta fuori. Il modello di minaccia del Tor Project lo prevede (il ticket tor-browser#13017 e i report di bug Mozilla collegati risalgono a parecchi anni fa), ma l'uscita in virgola mobile di un OfflineAudioContext dipende ancora dalla catena di build. Un Tor Browser su Linux x86_64 contro un Tor Browser su macOS arm64 produce hash audio misurabili e diversi, anche quando entrambi dichiarano la stessa stringa di piattaforma. Sono stati pubblicati più volte distinguisher AudioContext funzionanti per Tor, dal lavoro originario di AmIUnique fino a follow-up accademici più recenti.
Sistemare la cosa è complicato, perché l'alternativa sarebbe disabilitare del tutto OfflineAudioContext, e questo manderebbe in tilt qualsiasi webapp che decodifica audio in background (player di podcast, videoconferenze, giochi da browser, strumenti di accessibilità). Il Tor Project, su quel cambio, è rimasto prudente. Risultato: perfino il browser consumer più rinforzato continua a esporre uno dei tre vettori.
Cosa funziona davvero contro questi hash
I tre vettori condividono una proprietà: derivano tutti dal comportamento dell'hardware fisico. Le difese solo software aiutano, ma le uniche risposte complete cambiano ciò che la pagina vede della tua macchina, non ciò che la macchina è davvero.
Usare hardware fisico diverso
Una GPU diversa, un'altra microarchitettura CPU e un altro chip audio producono hash diversi su tutti e tre i vettori in una volta sola. È la difesa più forte e anche la più scomoda. Pochi si comprano un secondo portatile per la navigazione sensibile.
Avviare un'altra installazione di SO
Anche sullo stesso hardware, un'immagine di sistema nuova con driver, set di font e stack audio diversi sposta ogni hash. Una chiavetta USB avviabile con Tails è l'esempio tipico. Il prezzo è vivere in un ambiente separato, con stato separato: bene per un uso saltuario, faticoso come setup quotidiano.
Usare un browser remoto containerizzato
La versione più pratica è togliere il browser per intero dalla tua macchina. Un browser remoto containerizzato presenta alla pagina la GPU del container, lo stack audio del container e il set di font del container. Il tuo hardware locale al rendering non partecipa proprio. Ogni sessione nuova parte da un container nuovo, e quindi un nuovo hash canvas, una nuova firma WebGL e un nuovo valore AudioContext, nessuno dei quali collegato alla tua macchina vera. È il modello usato da Browser.lol.
Installare un'estensione di rumore, con riserve
CanvasBlocker, Trace e simili iniettano casualità nella rilettura del canvas e a volte in WebGL. Gli hash cambiano a ogni sessione e questo manda fuori strada i tracker ingenui. Il prezzo è che «utente con randomizzazione canvas» è di per sé una categoria, quindi un tracker più sofisticato riesce comunque a metterti in un bucket, solo più piccolo e probabilmente più interessante. Considera le estensioni come difesa parziale, non come soluzione.
FAQ
Posso disabilitare canvas in Chrome?
Non in modo pulito. Chrome non offre un'impostazione per spegnere il canvas, e un'estensione che blocchi toDataURL() manda in tilt la maggior parte dei client webmail, degli strumenti di mappe e dei pad per la firma. Su Chrome restano davvero solo un'estensione di rumore tipo CanvasBlocker (con il compromesso visto sopra) o far passare la navigazione sensibile attraverso un ambiente isolato.
Una VPN cambia il mio fingerprint?
No. Una VPN cambia l'IP e la geolocalizzazione apparente, due segnali utili a un tracker, ma non tocca canvas, WebGL o AudioContext. L'hash prodotto dalla tua GPU resta lo stesso sia che i byte escano dalla tua linea di casa sia che passino da un exit node di Mullvad.
Perché il mio fingerprint cambia dopo un update di Windows?
Gli update cumulativi di Windows aggiornano spesso il driver GPU, il rasterizzatore di font DirectWrite o il motore audio. Basta uno di questi spostamenti per far saltare almeno uno dei tre hash. I tracker se lo aspettano e tappano il buco con la correlazione di altri segnali (range IP, cookie di login, pattern di comportamento). Hai solo una breve finestra in cui sembri nuovo, non un reset permanente.
Questi fingerprint sono unici presi da soli?
Nessuno da solo basta. Canvas preso isolatamente collide per migliaia di utenti con la stessa combinazione di GPU, driver e SO. Il rischio è nell'incrocio: canvas più WebGL più AudioContext, insieme alla dimensione dello schermo e al fuso orario, restringono la popolazione a una manciata di persone.
L'incognito serve a qualcosa contro questi?
No. L'incognito ripulisce cookie e cronologia a fine sessione, ma hardware e driver sotto al browser restano uguali. Ogni finestra in incognito su una data macchina produce gli stessi valori canvas, WebGL e AudioContext di una finestra normale sulla stessa macchina.
Il quadro finale
Canvas, WebGL e AudioContext, messi insieme, superano i diciotto bit di entropia in una sessione tipica. Tanto basta a isolare un utente in un bacino di oltre 250 000, e tutti gli strumenti pensati per l'era cookie (incognito, VPN, gran parte delle estensioni di privacy) li lasciano intatti tutti e tre. Gli hash arrivano dalla tua GPU, dai tuoi driver, dai tuoi font e dal tuo stack audio: è esattamente lo strato che quegli strumenti non raggiungono mai.
Difendere un vettore alla volta si vede. Randomizzazione del canvas, mascheramento di WebGL e rumore audio producono anomalie rilevabili, e i tracker raccolgono così gli utenti «difesi» in un gruppo più piccolo e probabilmente più interessante. Tor chiude due dei tre in modo convincente e continua a lasciar trapelare la firma audio. L'unico fix che chiude tutti e tre cambia l'hardware e lo stack software che la pagina ha il diritto di vedere. In pratica significa un'altra macchina fisica, un'altra installazione di sistema operativo o un browser remoto containerizzato come Browser.lol.
Vuoi un vero desktop su qualunque dispositivo?
Prova Browser.lol gratis: la potenza di un PC, anche dal telefono.
Avvia il tuo desktop nel browserNiente download • Funziona ovunque



