Un'Analisi Tecnica dei Segnali Hardware, Comportamentali e Inerenti del Browser che Non Possono Essere Falsificati a Livello di Rete
Ricerca Obscura: Luglio 2026
Abstract
Gli strumenti di privacy a livello di rete come Obscura possono falsificare efficacemente header HTTP, fingerprint TLS, query DNS e proprietà del browser accessibili tramite JavaScript. Tuttavia, una classe significativa di vettori di fingerprinting opera sotto, sopra o al di fuori della portata del proxy. Questi vettori derivano da caratteristiche fisiche dell'hardware, dettagli implementativi del browser, modelli di comportamento dell'utente e l'asimmetria intrinseca della corsa agli armamenti del rilevamento.
Questo documento cataloga questi vettori incontrollabili, analizza i loro punti di forza e debolezza dal punto di vista di un attaccante, e propone strategie di mitigazione, sia nell'ambito di Obscura che attraverso strumenti complementari.
1. Introduzione
1.1 Il Gap del Proxy
Obscura opera ai livelli OSI 3-7 (dalla rete all'applicazione). Segnali che originano a:
- Livello 0-2 (hardware fisico, GPU, chip audio, CPU)
- Livello 7+ (motore di rendering del browser, comportamento utente)
- Incoerenze tra livelli (mancate corrispondenze tra segnali falsificati e non falsificabili)
...sono al di fuori del controllo diretto del proxy.
1.2 Classificazione
| Categoria | Vettori | Causa Radice | Leva del Proxy |
|---|---|---|---|
| GPU/Hardware | Canvas, WebGL, WebGPU rendering | Pipeline di rendering fisica | Nessuna |
| Audio Hardware | AudioContext, latenza | Audio DSP, driver | Nessuna |
| CPU/Piattaforma | Precisione matematica, funzionalità Wasm, SIMD | Microarchitettura | Nessuna |
| Inerente al Browser | Supporto funzionalità, CSS media, bug, stranezze | Implementazione motore | Nessuna (solo blocco DNS) |
| Comportamentale | Mouse, tastiera, scroll, temporizzazione | Utente | Nessuna |
| Rete Residuo | TCP/IP, clock skew, RTT | Stack OS/container | Parziale |
| Tra Livelli | Incoerenza profilo, euristiche di rilevamento | Logica | Indiretta |
1.3 Il Problema dell'Asimmetria
L'asimmetria fondamentale: il servizio di fingerprinting ha bisogno di un solo vettore riuscito per identificare o correlare un utente. Il difensore deve bloccare tutti i vettori.
Questo documento non pretende di risolvere questa asimmetria. Documenta il rischio residuo.
2. Fingerprinting GPU e Pipeline di Rendering
Documento completo: gpu-rendering.md
2.1 Perché Funziona
La pipeline di rendering GPU è fisicamente deterministica: lo stesso input produce sempre lo stesso output sullo stesso hardware. Le differenze derivano da:
- Microarchitettura GPU (conteggio ALU, unità rasterizer, TMU, ROP)
- Versione del driver e ottimizzazioni del compilatore
- Differenze di precisione in virgola mobile negli shader
- Algoritmi di anti-aliasing
- Ordine di rendering subpixel (RGB vs BGR)
- Matrici di conversione spazio colore
2.2 Vettori
| Vettore | Entropia | Rilevabile se Bloccato |
|---|---|---|
Hash toDataURL() Canvas |
~5-7 bit | Sì |
WEBGL_debug_renderer_info.UNMASKED_RENDERER |
~20 bit (modello GPU esatto) | Sì |
| Hash rendering scena WebGL | ~10-15 bit | Sì |
WebGPU adapterInfo (vendor, arch, device, driver) |
~25+ bit | Sì |
| Limiti WebGPU (50+ capacità numeriche) | ~30+ bit | Sì |
| Elenco estensioni WebGL | ~8-12 bit | Sì |
2.3 Vantaggi dell'Attaccante
- Nessuna dipendenza dalla rete: Il rendering è locale, nessuna richiesta necessaria
- Ancorato all'hardware: Non può essere cambiato senza hardware diverso
- Cross-browser: La stessa GPU produce fingerprint simili su Chrome/Firefox/Safari
- Passivo: L'utente non può sapere di essere fingerprintato
2.4 Debolezze (dal punto di vista dell'attaccante)
- Il blocco è facile per l'utente: I flag di Firefox
privacy.resistFingerprintingeCanvasBlockerfunzionano - Tor Browser lo sconfigge: Il rendering software (SwiftShader) normalizza tutto l'output
- Gli aggiornamenti del driver cambiano il fingerprint: Instabilità periodica
- L'iniezione di rumore funziona: L'iniezione di pixel casuali di CanvasBlocker rompe la ripetibilità
- Il rilevamento statistico della manipolazione è imperfetto: Gli attaccanti possono solo indovinare se il rumore è stato iniettato
2.5 Mitigazioni Proposte
| Mitigazione | Efficacia | Impatto | Implementazione |
|---|---|---|---|
| Blocca WebGL/WebGPU completamente | Alta | Rompe contenuti 3D | Iniezione JS |
| Iniezione rumore Canvas | Medio-Alta | Rilevabile | Iniezione JS (algoritmo CanvasBlocker) |
| Rumore coerente casuale per sessione | Media | Correlazione sessione possibile | Iniezione JS |
Blocca WEBGL_debug_renderer_info |
Media | Blocca perdita modello GPU | Iniezione JS |
| Rendering GPU software (SwiftShader) | Molto Alta | Impatto prestazionale massiccio | Solo lato client (Tor Browser) |
| Arrotonda dimensioni canvas a griglia | Bassa | Riduce entropia | Iniezione JS |
Il meglio che Obscura può fare: Blocca + iniezione rumore tramite JS. Non può eguagliare il rendering software di Tor Browser.
3. Fingerprinting Hardware Audio
Documento completo: audio-hardware.md
3.1 Perché Funziona
L'elaborazione audio coinvolge:
- Implementazione del driver audio (ALSA, PulseAudio, PipeWire, CoreAudio, WASAPI)
- Caratteristiche DAC/ADC hardware
- Algoritmi di conversione frequenza di campionamento
- Comportamento della compressione dinamica
- Gestione del buffer audio
Questi producono differenze consistenti e misurabili nell'output dell'oscillatore e nel comportamento del compressore.
3.2 Vettori
| Vettore | Entropia | Note |
|---|---|---|
AudioContext getChannelData su output DynamicsCompressor |
~8-12 bit | Più comune |
| Latenza base AudioContext | ~4-6 bit | Dipendente dall'hardware |
| Supporto frequenza di campionamento | ~2-3 bit | Varia per hardware |
| Conteggio massimo canali | ~1-2 bit | Stereo vs surround |
3.3 Vantaggi dell'Attaccante
- Coerente tra sessioni: Stesso hardware = stesso fingerprint audio
- Difficile da rilevare manipolazione: Il sito può confrontare letture multiple
- Funziona in background: Nessuna interazione utente necessaria
3.4 Debolezze
- Il comportamento DynamicsCompressor cambia tra versioni del browser
- Può essere bloccato completamente (Firefox resistFingerprinting blocca AudioContext)
- Appiattire l'output è rilevabile ma non può essere distinto da hardware reale con comportamento identico
3.5 Mitigazioni Proposte
| Mitigazione | Efficacia | Impatto |
|---|---|---|
| Blocca AudioContext completamente | Alta | Rompe app dipendenti da audio |
| Appiattisci output compressore (restituisci tutto a -100dB) | Media | Pattern rilevabile |
| Inietta rumore periodico nel buffer di output | Medio-Alta | Complesso, rilevabile |
| Sovrascrivi frequenza di campionamento a valore fisso | Bassa | Solo un segnale |
Il meglio che Obscura può fare: Blocca AudioContext tramite iniezione JS.
4. Fingerprinting CPU e Piattaforma
Documento completo: cpu-platform.md
4.1 Perché Funziona
La CPU è il componente di sistema più fondamentale. Il suo comportamento è deterministico e misurabile da JavaScript:
- Precisione aritmetica in virgola mobile (la conformità IEEE 754 varia leggermente)
- Risoluzione
performance.now()(dipende dal timer hardware, SO) - Rilevamento funzionalità basato su Wasm (SIMD, AES-NI, AVX, BMI1/BMI2, POPCNT)
- Canali laterali di temporizzazione cache (anche se mitigati nei browser)
- Velocità di esecuzione WebAssembly (benchmark prestazionale relativo)
4.2 Vettori
| Vettore | Entropia | Note |
|---|---|---|
| Fingerprint matematico (precisione FPU) | ~4-6 bit | Sottile, sorprendentemente identificativo |
| Rilevamento funzionalità Wasm | ~8-12 bit | Capacità CPU |
Risoluzione performance.now() |
~2-3 bit | Dipendente da SO/CPU |
navigator.hardwareConcurrency |
~3-4 bit | Conteggio core (Falsificabile tramite JS) |
4.3 Vantaggi dell'Attaccante
- Ancorato all'hardware: Le funzionalità CPU non cambiano
- Wasm è veloce: Rilevamento binario in <1ms
- Non può essere falsificato a livello di proxy: Wasm viene eseguito localmente
4.4 Debolezze
- Precisione
performance.now()ridotta nei browser (altalena 1ms → 100s → 5s) - Il rilevamento funzionalità Wasm dipende dal browser che lo espone
hardwareConcurrencyè falsificabile tramite JS: già elencato come controllabile- Il fingerprint matematico ha entropia molto bassa: utile solo in combinazione
4.5 Mitigazioni Proposte
| Mitigazione | Efficacia | Impatto |
|---|---|---|
Riduci precisione performance.now() tramite JS |
Bassa | Gli attaccanti usano temporizzazione Wasm |
| Blocca Wasm completamente | Alta | Rompe molti siti |
Sovrascrivi hardwareConcurrency |
Alta | Banale tramite iniezione JS |
| Accetta fingerprint matematico FPU | Nessuna | Entropia troppo bassa da sola |
Il meglio che Obscura può fare: Accettare o bloccare Wasm (drasticamente).
5. Funzionalità Inerenti del Browser e Stranezze Implementative
Documento completo: browser-features-quirks.md
5.1 Perché Funziona
Ogni motore del browser (Blink, Gecko, WebKit) ha un insieme unico di:
- API Web supportate (100+ funzionalità binarie)
- Supporto proprietà CSS
- Bug e stranezze implementative
- Impostazioni predefinite (dimensione font, larghezza scrollbar, stile moduli)
- Comportamento rendering Unicode
- Versione supporto emoji
5.2 Vettori
| Vettore | Entropia | Note |
|---|---|---|
| Vettore supporto funzionalità (~100 funzionalità) | ~10-15 bit | Altamente correlato |
| Stranezze rendering CSS | ~5-8 bit | Specifiche del motore |
| Rendering Unicode/emoji | ~3-5 bit | Dipendente da SO+browser |
| Larghezza scrollbar | ~2-3 bit | Dipendente dal SO |
| Metriche font predefinite | ~4-6 bit | Dipendente da SO+browser |
5.3 Vantaggi dell'Attaccante
- Non può essere cambiato: Sono inerenti al browser/SO
- Nessun permesso necessario: Nessun consenso utente richiesto
- Difficile da bloccare: Bloccare le funzionalità cambia il vettore delle funzionalità stesso
5.4 Debolezze
- Identifica principalmente famiglia browser + versione, non singoli utenti
- Bassa entropia all'interno della stessa versione del browser (tutti gli utenti Chrome 120 appaiono simili)
- Gli script di rilevamento funzionalità possono essere bloccati via DNS prima che vengano caricati
5.5 Mitigazioni Proposte
| Mitigazione | Efficacia | Impatto |
|---|---|---|
| Blocca DNS dei domini degli script di fingerprinting | Alta | Ferma l'enumerazione delle funzionalità completamente |
| Accetta: bassa entropia individuale | Passivo | Può ancora correlarsi con altri segnali |
| Patch del browser (non a livello di proxy) | Molto Alta | Richiede build browser personalizzata |
Il meglio che Obscura può fare: Blocco DNS dei domini di fingerprinting noti.
6. Biometria Comportamentale
Documento completo: behavioral-biometrics.md
6.1 Perché Funziona
I modelli di comportamento dell'utente sono altamente individuali:
- Traiettorie del movimento del mouse (velocità, accelerazione, jitter)
- Dinamiche di battitura (tempo di pressione tasto, intervalli tra tasti, pattern di errore)
- Pattern di scroll (velocità, accelerazione, comportamento di pausa)
- Gesture touch (su mobile: angolo di swipe, pressione, velocità)
- Pattern di lettura (ritmo scroll-poi-pausa)
- Temporizzazione e preferenze di posizione del click/tap
6.2 Vettori
| Vettore | Entropia | Note |
|---|---|---|
| Dinamiche di battitura | ~15-25 bit | Altamente individuali |
| Movimento del mouse | ~10-20 bit | Meno stabile nel tempo |
| Comportamento scroll | ~8-12 bit | Dipendente dal contenuto |
| Gesture touch | ~12-18 bit | Specifiche per mobile |
6.3 Vantaggi dell'Attaccante
- Autenticazione continua: Non un'istantanea, ma continuativa
- Difficile da falsificare: Imitare il comportamento di un altro utente è estremamente difficile
- Nessuna restrizione API JS: Tutto leggibile dagli event listener JS
6.4 Debolezze
- Richiede interazione utente significativa: Non può fingerprintare passivamente
- Alta varianza: Il comportamento cambia con umore, stanchezza, contesto
- Tempo di raccolta lungo: Necessita di minuti di interazione
- Apprendimento automatico richiesto: L'hashing semplice non funziona
- Facilmente interrotto: Qualsiasi script che interferisce con la temporizzazione lo rompe
6.5 Mitigazioni Proposte
| Mitigazione | Efficacia | Impatto |
|---|---|---|
| Blocca gli event listener mouse/touch tramite override JS | Media | Rompe siti interattivi |
| Inietta rumore di temporizzazione sintetico | Bassa | Può essere filtrato |
| Usa Tor Browser per sessioni ad alta sensibilità | Molto Alta | Soluzione più pratica |
| Accetta: il comportamento è di contesto ristretto | Passivo | Funziona solo su sessioni autenticate |
Il meglio che Obscura può fare: Molto limitato. Tor Browser è la soluzione pratica.
7. Fingerprint Residui a Livello di Rete
Documento completo: residual-network.md
7.1 Perché Funziona
Anche con spoofing TLS e HTTP, i segnali di rete residui rimangono:
- Parametri stack TCP/IP (ereditati dal SO del container)
- Tempo di andata e ritorno di rete (RTT) e la sua varianza
- Scoperta percorso MTU
- TTL del pacchetto (rivela conteggio hop approssimativo)
- Clock skew tra client e server
- Parametri di trasporto HTTP/3 QUIC (se non bloccato)
7.2 Vettori
| Vettore | Entropia | Note |
|---|---|---|
| Dimensione finestra TCP | ~2-4 bit | Specifico del SO del container |
| TTL iniziale | ~1-2 bit | 64 vs 128 |
| RTT + varianza | ~5-8 bit | Dipendente dal percorso di rete |
| Clock skew | ~4-8 bit | Deriva orologio hardware |
| HTTP/2 SETTINGS (se non falsificato) | ~6-10 bit | Specifico della libreria proxy |
7.3 Vantaggi dell'Attaccante
- Sempre presente: I segnali di rete sono inevitabili
- Possono essere combinati: Incrociare più segnali deboli aumenta l'entropia
- Stabili: Il percorso di rete cambia raramente
7.4 Debolezze
- Bassa entropia individuale: TCP/IP da solo raramente identifica
- Ambiente container condiviso: Più utenti dietro lo stesso container appaiono simili
- Lo spoofing TLS elimina il segnale più identificativo
7.5 Mitigazioni Proposte
| Mitigazione | Efficacia | Impatto |
|---|---|---|
| Spoofing fingerprint TLS (JA3/JA4 tramite utls) | Molto Alta | Critico per Obscura |
| Mirroring HTTP/2 SETTINGS | Alta | Implementazione complessa |
| Normalizza parametri TCP | Nessuna | Il container eredita l'host |
| Instrada attraverso VPN/Tor upstream | Alta | Cambia le caratteristiche di rete |
Il meglio che Obscura può fare: Spoofing TLS + HTTP/2. Il TCP/IP è accettato.
8. Rilevamento di Proxy e Incoerenze di Spoofing
Documento completo: proxy-detection.md
8.1 Perché Funziona
L'atto dello spoofing crea pattern rilevabili:
- Incoerenza del profilo: User-Agent Chrome + stack TLS Go + piattaforma Win32 + font non Windows
- Segnali mancanti: API bloccate (WebGL restituisce null) creano un fingerprint "bloccato" unico
- Anomalie di temporizzazione: Il MITM aggiunge latenza misurabile
- Fingerprint dei certificati: I certificati CA auto-firmati sono rilevabili
- Normalizzazione header: Header eccessivamente puliti/coerenti (i browser reali hanno variazione)
- Rilevamento override JavaScript:
Object.getOwnPropertyDescriptor()può rilevare override diObject.defineProperty
8.2 Tecniche di Rilevamento
| Tecnica | Cosa Rileva | Affidabilità |
|---|---|---|
| Mismatch fingerprint TLS | Software proxy vs browser dichiarato | Molto Alta |
| Blocco funzionalità | Uso di strumenti privacy | Alta |
| Rilevamento override JS | Script iniettati | Media |
| Ispezione certificato | Proxy MITM | Alta |
| Analisi temporizzazione | Latenza proxy | Media |
| Correlazione incrociata segnali | Incoerenza profilo | Molto Alta |
8.3 Vantaggi dell'Attaccante
- Lo spoofing aumenta la superficie rilevabile: Più cambi, più c'è da rilevare
- Analisi statistica: Il confronto con grandi dataset rivela anomalie
- Apprendimento automatico: Può trovare pattern che gli umani non vedono
8.4 Debolezze
- Il rilevamento è probabilistico, non deterministico
- Falsi positivi: Aggiornamenti legittimi del browser sembrano spoofing
- Gli strumenti privacy sono usati da milioni di persone: Essere rilevati come "utente privacy" non è unico
- Gatto e topo: Il rilevamento degli override può essere contrastato da override più profondi
8.5 Mitigazioni Proposte
| Mitigazione | Efficacia | Impatto |
|---|---|---|
| Coerenza perfetta del profilo | Molto Alta | Richiede aggiornamenti continui del profilo |
| Perdere alcuni segnali reali | Controintuitivo | Rende il profilo più naturale |
| Usa certificato CA reale | Media | Evita rilevamento CA auto-firmato |
| Arrotonda temporizzazione invece di rimuovere | Media | Meno sospetto di latenza zero |
| Non bloccare: falsifica invece | Alta | Più difficile da rilevare del blocco |
Il meglio che Obscura può fare: Test rigorosi di coerenza del profilo e aggiornamenti continui.
9. Il Problema dell'Agregazione
9.1 Entropia Individuale vs Combinata
Un'intuizione cruciale: i singoli vettori incontrollabili hanno bassa entropia da soli, ma combinati diventano identificativi.
Dove è l'entropia individuale e tiene conto delle dipendenze tra vettori.
Per i soli vettori incontrollabili (GPU + Audio + CPU + Funzionalità + Rete + Comportamentale):
Questo è sufficiente per identificare univocamente un utente tra ~.
9.2 Implicazioni
- Anche lo spoofing perfetto dei vettori controllabili da parte del proxy è insufficiente se quelli incontrollabili rimangono
- Il blocco DNS è critico: Impedisce alla libreria di fingerprinting di vedere i vettori incontrollabili
- Difesa in profondità: Ogni vettore bloccato riduce l'entropia aggregata
10. Direzioni di Ricerca Proposte
10.1 A Breve Termine (Obscura v1)
- Coerenza perfetta del profilo: Strumenti di validazione automatica
- Manutenzione blocklist DNS: Feed dei domini di fingerprinting
- Iniezione rumore Canvas: Algoritmo da CanvasBlocker
- Blocco informazioni debug WebGL/WebGPU: Iniezione JS
- Blocco AudioContext: Iniezione JS
10.2 A Medio Termine
- Apprendimento automatico per rilevamento anomalie: Rilevare quando le modifiche di Obscura creano pattern rilevabili
- Selezione adattiva del profilo: Scegliere il profilo che meglio corrisponde all'hardware reale dell'utente (non dichiarare Safari su Windows)
- Degradazione graduale: Tornare a uno spoofing meno aggressivo se il rischio di rilevamento è alto
10.3 A Lungo Termine / Fuori Ambito
- Modifica del browser: Build browser personalizzata che normalizza i fingerprint (approccio Tor Browser)
- Normalizzazione GPU a livello hardware: Intercettazione rendering a livello di driver
- Offuscamento comportamentale: Pattern di mouse/tastiera generati da AI
- Fingerprinting resistente ai quantistici: Prepararsi per il futuro contro nuove tecniche
11. Conclusione
I vettori incontrollabili documentati qui rappresentano il limite fondamentale dell'anti-fingerprinting a livello di rete. Nessun proxy può eliminarli completamente perché derivano da:
- Fisica: Rendering GPU, elaborazione audio, deriva dell'orologio
- Biologia: Modelli di comportamento dell'utente
- Ingegneria: Scelte implementative del browser
L'approccio di Obscura è pragmatico:
- Controlla ciò che può essere controllato (header, TLS, DNS, API JS) ~55% della superficie
- Blocca ciò che non può essere falsificato (canvas, audio, WebGL) impedisce l'osservazione
- Accetta il rischio residuo: documenta e monitora
L'alternativa, la protezione perfetta, richiede Tor Browser, che la raggiunge normalizzando ogni segnale al costo di funzionalità, prestazioni e convenienza. Entrambi gli approcci hanno il loro posto.
Riferimenti
- Acar, G. et al. (2014). "The Web Never Forgets: Persistent Tracking Mechanisms in the Wild." CCS 2014.
- Mowery, K. & Shacham, H. (2012). "Pixel Perfect: Fingerprinting Canvas in HTML5." WOOT 2012.
- Eckersley, P. (2010). "How Unique Is Your Web Browser?" PETS 2010.
- Englehardt, S. & Narayanan, A. (2016). "Online Tracking: A 1-million-site Measurement and Analysis." CCS 2016.
- Tor Browser Design Document (2024). "The Design and Implementation of the Tor Browser."
- FingerprintJS (2026). "Browser Fingerprinting Techniques." fingerprintjs.com.
- FoxIO (2024). "JA4: TLS Client Fingerprinting." GitHub.
- Laperdrix, P. et al. (2020). "Browser Fingerprinting: A Survey." ACM TOIT.