Quali segnali sopravvivono agli aggiornamenti del browser? Un'analisi di stabilità
Abbiamo analizzato la stabilità dei segnali attraverso 50 aggiornamenti di Chrome, Firefox e Safari. Ecco i segnali di fingerprinting più e meno stabili.
Gli aggiornamenti del browser sono il nemico naturale del fingerprinting del dispositivo. Ogni 4-6 settimane, Chrome, Firefox e Safari rilasciano nuove versioni che possono alterare i valori dei segnali — cambiando le stringhe user-agent, modificando il comportamento di rendering, aggiungendo o rimuovendo API. Come osservato nella W3C Fingerprinting Guidance, i browser lavorano attivamente per limitare la superficie soggetta a fingerprinting. Per i sistemi di fingerprinting che trattano tutti i segnali allo stesso modo, ogni aggiornamento è una potenziale rottura di identità per milioni di visitatori.
Abbiamo condotto un'analisi di stabilità approfondita su 50 aggiornamenti del browser per rispondere alla domanda fondamentale: su quali segnali ci si può affidare e quali invece tradiranno?
Metodologia
Abbiamo strumentato 200 dispositivi fisici su 5 sistemi operativi (Windows 10, Windows 11, macOS Ventura, macOS Sonoma, Ubuntu 22.04) e 3 browser (Chrome, Firefox, Safari). Ogni dispositivo ha eseguito la raccolta automatizzata dei segnali quotidianamente per 14 mesi, coprendo 50 aggiornamenti importanti di versione del browser: 24 release di Chrome, 16 di Firefox e 10 di Safari.
Per ogni segnale abbiamo tracciato: quanto spesso il valore cambiava, se il cambiamento fosse correlato a un aggiornamento del browser o a un fattore esterno (aggiornamento di driver, patch del sistema operativo) e l'entità del cambiamento (sostituzione completa del valore rispetto a variazione minore).
I tier di stabilità
Tier 1: solidissimi (99,5%+ di stabilità)
Questi segnali cambiavano solo quando cambiava l'hardware fisico o quando i driver venivano aggiornati — mai a causa dei soli aggiornamenti del browser.
Hardware Concurrency (navigator.hardwareConcurrency): 99,97% stabile. Cambiato solo su 1 dispositivo con un aggiornamento del BIOS che influiva sull'hyperthreading. Device Memory (navigator.deviceMemory): 99,98% stabile. Un dispositivo è stato aggiornato da 8GB a 16GB durante lo studio. Risoluzione dello schermo e profondità di colore: 99,92% stabile. I cambiamenti erano correlati alla sostituzione dei monitor e a eventi di docking station. WebGL Max Texture Size: 99,99% stabile. Zero cambiamenti legati al browser. Cambiato una volta su un dispositivo che ha ricevuto un aggiornamento del driver NVIDIA. Frequenza di campionamento audio: 100% stabile. Zero cambiamenti su tutti i 200 dispositivi e i 50 aggiornamenti. Questo è il singolo segnale più stabile che tracciamo.
Tier 2: perlopiù stabili (95-99,5%)
Questi segnali cambiano occasionalmente con gli aggiornamenti del browser ma restano stabili nella maggior parte delle release.
Fingerprint Canvas 2D: 97,8% stabile. I cambiamenti si sono verificati in Chrome 118 (aggiornamento del motore di rendering dei font), Chrome 122 (modifica dell'anti-aliasing sub-pixel) e Firefox 121 (aggiornamento del text shaping). Ogni cambiamento ha influito simultaneamente su tutti i dispositivi con quel browser — uno schema rilevabile che gestiamo con matching consapevole della versione del browser. WebGL Renderer String: 98,1% stabile. Chrome occasionalmente riformatta la stringa del wrapper ANGLE. Le informazioni sottostanti della GPU restano invariate, ma la rappresentazione della stringa cambia. Estraiamo il modello della GPU dalla stringa anziché farne direttamente l'hash. Elenco dei font: 96,4% stabile. Gli aggiornamenti del sistema operativo aggiungono o rimuovono occasionalmente font di sistema. Gli aggiornamenti del browser raramente influiscono sull'enumerazione dei font, ma Chrome 120 ha cambiato l'ordine in cui i font vengono riportati, rompendo il fingerprinting dei font basato su hash. Usiamo il confronto basato su insiemi (similarità tra insiemi) anziché l'hashing ordinato.
Tier 3: stabilità moderata (80-95%)
Questi segnali cambiano con una frequenza significativa ma forniscono comunque un valore di identificazione utile tra un cambiamento e l'altro.
Plugin installati: 89,2% stabile. La continua riduzione da parte di Chrome dell'array dei plugin (navigator.plugins) ha eliminato del tutto la visibilità dei plugin in alcuni contesti. Firefox ha mantenuto l'enumerazione dei plugin. Safari l'ha ristretta a un set standard. Rilevamento delle feature CSS: 91,7% stabile. Nuove feature CSS vengono aggiunte a ogni release del browser, il che cambia l'insieme di feature rilevate dal nostro probing CSS. Diamo alle nuove feature un peso inferiore rispetto a quelle consolidate per ridurne l'impatto. Supporto touch: 93,1% stabile. I browser desktop cambiano occasionalmente il supporto touch riportato quando Chrome regola il proprio rilevamento dell'emulazione del dispositivo.
Tier 4: volatili (<80%)
Questi segnali cambiano di frequente e non dovrebbero mai essere àncore primarie di identificazione.
Stringa User Agent: 42,3% stabile. L'iniziativa di riduzione dello User-Agent di Chrome ha cambiato il formato della stringa più volte. Firefox aggiorna il numero di versione a ogni release. Safari modifica regolarmente la stringa della versione di WebKit. Questa era la spina dorsale dei semplici sistemi di fingerprinting — quei sistemi ora sono rotti. Tipo di connessione (navigator.connection): 68,4% stabile. Cambia con il passaggio di rete (dal WiFi al cellulare, tra reti WiFi diverse). Battery API: 71,2% stabile. Varia con lo stato di carica e la disponibilità dell'API del browser. Chrome ha ristretto l'accesso alla Battery API in alcuni contesti. Area schermo disponibile: 76,8% stabile. Cambia con la visibilità della barra delle applicazioni, la gestione delle finestre e le regolazioni di scalatura del display.
Confronto tra browser
Chrome è il browser più volatile per la stabilità del fingerprinting. Google lavora attivamente per ridurre la fingerprintabilità, il che significa che gli aggiornamenti di Chrome rompono più segnali degli aggiornamenti di Firefox o Safari. Nel nostro periodo di studio:
Chrome ha causato cambiamenti di segnale nel 3,2% delle sessioni di raccolta. Firefox ha causato cambiamenti di segnale nell'1,8% delle sessioni di raccolta. Safari ha causato cambiamenti di segnale nell'1,1% delle sessioni di raccolta.
La minore volatilità di Safari è dovuta in parte al fatto che Apple rilascia meno versioni all'anno e in parte al fatto che le contromisure anti-fingerprinting di Safari (Intelligent Tracking Prevention) operano a livello di rete anziché cambiare i valori restituiti dalle API.
Raccomandazioni pratiche
Sulla base di questa analisi, formuliamo cinque raccomandazioni per i sistemi di fingerprinting in produzione:
Non usare mai lo user-agent come àncora di identificazione. È il segnale distintivo meno stabile. Usarlo solo per il rilevamento del browser e il confidence scoring di Tier 3.
Separare i segnali hardware dai segnali software. I segnali hardware (GPU, schermo, audio) sono 40 volte più stabili dei segnali software (user agent, plugin, feature CSS). Pesarli di conseguenza.
Usare il confronto basato su insiemi per i segnali enumerabili. Elenchi di font, elenchi di plugin e risultati del rilevamento delle feature dovrebbero essere confrontati usando la similarità tra insiemi o metriche di distanza tra insiemi analoghe, non l'hashing ordinato. I cambiamenti di ordine sono comuni; i cambiamenti di contenuto sono rari.
Implementare un matching consapevole della versione del browser. Quando Chrome 118 cambia il rendering del canvas per tutti gli utenti Chrome simultaneamente, il sistema dovrebbe riconoscerlo come un aggiornamento del browser, non come una rottura di identità di massa. Tracciare le versioni del browser e applicare tolleranze di matching specifiche per versione.
Monitorare continuamente la stabilità dei segnali. Le nostre percentuali di stabilità si basano su dati storici. Futuri aggiornamenti del browser potrebbero cambiare il profilo di stabilità di qualsiasi segnale. Eseguiamo un monitoraggio continuo e regoliamo automaticamente i pesi dei segnali quando la stabilità cambia.
Impatto su tracio.ai
La nostra architettura di identificazione multi-tier V3 riflette direttamente questa analisi di stabilità. I segnali di Tier 1 (hardware) portano il 60% del peso. I segnali di Tier 2 (rendering, font) portano il 30% del peso. I segnali di Tier 3 (metadati del browser, connessione) portano il 10% del peso. Questa ponderazione garantisce che i segnali più stabili guidino l'identificazione, mentre i segnali volatili contribuiscono al confidence scoring senza causare rotture di identità.
Il risultato: 99.5% di stabilità dell'identificazione su 50 aggiornamenti del browser, contro il 69% dei sistemi che usano il fingerprinting piatto basato su hash. La differenza non è l'ingegnosità algoritmica — è l'analisi empirica dei segnali applicata alle decisioni architetturali.