Fingerprinting del dispositivo senza cookie: come funziona
I cookie stanno morendo. Ecco come il fingerprinting del dispositivo fornisce un'identificazione persistente che sopravvive alla cancellazione dei cookie, alla modalità incognito e agli aggiornamenti del browser.
Il cookie sta morendo. L'Intelligent Tracking Prevention (ITP) di Safari limita la durata dei cookie a 7 giorni. L'Enhanced Tracking Protection di Firefox blocca completamente i cookie di terze parti. Il Privacy Sandbox di Chrome sta deprecando i cookie di terze parti. I requisiti di consenso del GDPR fanno sì che gli utenti rifiutino sempre più spesso i banner dei cookie.
Per la prevenzione delle frodi, questo è un problema. Se non può identificare i dispositivi in modo persistente, non può tracciare i recidivi, rilevare il multi-account o collegare tra loro le sessioni sospette. Il fingerprinting del dispositivo risolve questo problema identificando i dispositivi tramite le loro caratteristiche tecniche anziché tramite qualcosa che al browser viene chiesto di ricordare.
Per essere precisi su cosa questo significhi nel nostro caso: Tracio non imposta cookie di terze parti e non memorizza nulla che funzioni tra siti diversi. Imposta invece un solo cookie di prima parte, _vid_t, con scadenza a 365 giorni, e una copia dello stesso identificatore opaco in localStorage. Quel cookie è una corsia preferenziale, non il meccanismo — quando è presente la corrispondenza è immediata e certa, e quando il visitatore lo cancella, naviga in modalità incognito o blocca del tutto la memorizzazione, l'identificatore viene ricostruito dai segnali del dispositivo stessi con una confidenza leggermente inferiore. La distinzione conta: un sistema che dipende dalla memorizzazione perde il visitatore quando la memorizzazione viene cancellata, questo no.
Le categorie di segnali
Fingerprinting passivo (nessun JavaScript richiesto)
Prima ancora che la sua pagina si carichi, il browser rivela informazioni attraverso segnali a livello di rete:
Fingerprinting TLS (JA4). Il messaggio TLS Client Hello contiene cipher suite, estensioni, curve ellittiche e algoritmi di firma. Usiamo l'hashing JA4 — un rimpiazzo moderno di JA3 con una granularità migliore.
Analisi dello stack TCP/IP. La dimensione della finestra TCP, i valori TTL e le impostazioni MSS variano tra i sistemi operativi. Linux, Windows e macOS hanno ciascuno configurazioni caratteristiche dello stack TCP.
Analisi degli header HTTP. L'ordinamento degli header, i valori Accept-Language e le preferenze di connessione differiscono tra i browser.
Fingerprinting attivo (JavaScript lato client)
Fingerprinting del canvas. Disegniamo una scena progettata con cura — testo specifico, forme geometriche e gradienti. GPU diverse la renderizzano con sottili differenze a livello di pixel dovute all'anti-aliasing, al rendering sub-pixel e alle variazioni di miscelazione dei colori. Sottoponiamo a hash i dati dei pixel.
Fingerprinting WebGL. WebGL espone le stringhe di vendor/renderer della GPU, le dimensioni massime delle texture, le estensioni supportate e le capacità degli shader. Questi dati identificano fortemente il modello di GPU e la versione del driver.
Fingerprinting di AudioContext. Generiamo un segnale di test e analizziamo come viene elaborato. Hardware audio diverso produce un output misurabilmente diverso a causa delle differenze di precisione in virgola mobile.
Enumerazione dei font. I font di sistema disponibili variano per sistema operativo, pacchetto lingua e software installato. Testiamo circa 300 font diagnostici usando tecniche di misurazione via canvas.
Proprietà di navigator. Core della CPU, memoria del dispositivo, platform, lingua, fuso orario, risoluzione dello schermo, profondità del colore, capacità di puntamento e touch.
Analisi dell'entropia
Non tutti i segnali hanno lo stesso peso. Misuriamo l'entropia di ciascun segnale:
| Categoria di segnale | Entropia approssimativa |
|---|---|
| Canvas + WebGL combinati | ~18 bit |
| Elenco dei font | ~8 bit |
| AudioContext | ~5 bit |
| Proprietà di navigator | ~7 bit |
| Fingerprint TLS | ~6 bit |
| Schermo + display | ~4 bit |
| Fuso orario + lingua | ~3 bit |
Combinati, i nostri 300+ segnali forniscono all'incirca 50+ bit di entropia — sufficienti a identificare univocamente oltre 1 quadrilione di dispositivi distinti.
Dai segnali a un hash stabile
La raccolta grezza dei segnali è solo metà del problema. Gli aggiornamenti del browser cambiano le stringhe dello user agent. Gli aggiornamenti dei driver alterano i parametri WebGL. Le installazioni di font cambiano l'elenco dei font.
Fuzzy matching
Anziché richiedere corrispondenze esatte, usiamo un algoritmo di fuzzy matching che pesa i segnali per stabilità ed entropia. I segnali stabili (canvas, modello di GPU) hanno più peso dei segnali volatili (user agent, risoluzione dello schermo).
La generazione dei candidati usa il locality-sensitive hashing (LSH) sui segnali più stabili per identificare potenziali corrispondenze. Lo scoring di similarità calcola un punteggio ponderato su tutte le categorie di segnali, calibrato in modo che i normali cambiamenti del dispositivo non cambino l'ID visitatore mentre i cambiamenti effettivi del dispositivo lo fanno.
Questo raggiunge un'accuratezza del 99,5% — identificando correttamente i visitatori di ritorno attraverso aggiornamenti del browser, cancellazioni dei cookie, modalità incognito e cambi di browser.
Architettura a tutela della privacy
Elaborazione lato server. Tutto il calcolo del fingerprint avviene sui nostri server. L'agent lato client raccoglie i segnali grezzi ma non calcola né memorizza l'hash del fingerprint.
Nessuna memorizzazione di PII. Memorizziamo gli hash dei fingerprint, non i segnali grezzi. L'hash è una funzione a senso unico.
Residenza dei dati. I dati dei clienti UE vengono elaborati e memorizzati in data center UE. L'Articolo 6(1)(f) del GDPR copre la prevenzione delle frodi come legittimo interesse.
Identificazione cross-browser
La sfida più difficile è identificare lo stesso dispositivo attraverso browser diversi. Ci basiamo su segnali indipendenti dal browser: hardware GPU, caratteristiche dello schermo, fuso orario, impostazioni di lingua, font installati (a livello di OS) e caratteristiche dello stack TCP/IP.
L'accuratezza del collegamento cross-browser è di circa il 94% — inferiore all'identificazione con lo stesso browser ma sufficiente a rilevare il multi-account tra browser sullo stesso dispositivo.
Integrazione
Aggiungere il fingerprinting del dispositivo richiede tre righe di codice. L'agent si carica in modo asincrono e invia i segnali raccolti alla nostra API; il browser riceve l'ID visitatore e il verdetto sui bot. L'intero arricchimento lato server — 35+ Smart Signals — viene consegnato al suo backend tramite il payload del webhook e la Data API, così il quadro dettagliato del rischio non passa mai dal client, dove potrebbe essere letto o manomesso.