Fingerprinting del dispositivo senza cookie: come funziona
I cookie stanno morendo. Ecco come il fingerprinting del dispositivo fornisce un'identificazione persistente senza alcuna memorizzazione lato client.
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 — nessun cookie, nessun localStorage, nessuna memorizzazione lato client di alcun tipo.
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 130+ 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, raccoglie i segnali in meno di 50ms e li invia alla nostra API. La risposta del server include l'ID visitatore, il punteggio di confidenza e tutti i 24 Smart Signals.