Saltar al contenido principal
it/blog/obscura/research/uncontrollable/index/

obscura/research/uncontrollable/index

16 min di lettura

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
WEBGL_debug_renderer_info.UNMASKED_RENDERER ~20 bit (modello GPU esatto)
Hash rendering scena WebGL ~10-15 bit
WebGPU adapterInfo (vendor, arch, device, driver) ~25+ bit
Limiti WebGPU (50+ capacità numeriche) ~30+ bit
Elenco estensioni WebGL ~8-12 bit

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.resistFingerprinting e CanvasBlocker funzionano
  • 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 di Object.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.

Htotale=i=1nHiHcorrelazioneH_{totale} = \sum_{i=1}^{n} H_i - H_{correlazione}

Dove HiH_i è l'entropia individuale e HcorrelazioneH_{correlazione} tiene conto delle dipendenze tra vettori.

Per i soli vettori incontrollabili (GPU + Audio + CPU + Funzionalità + Rete + Comportamentale):

Hincontrollabile5+8+4+12+6+1550 bitH_{incontrollabile} \approx 5 + 8 + 4 + 12 + 6 + 15 \approx 50 \text{ bit}

Questo è sufficiente per identificare univocamente un utente tra ~101510^{15}.

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)

  1. Coerenza perfetta del profilo: Strumenti di validazione automatica
  2. Manutenzione blocklist DNS: Feed dei domini di fingerprinting
  3. Iniezione rumore Canvas: Algoritmo da CanvasBlocker
  4. Blocco informazioni debug WebGL/WebGPU: Iniezione JS
  5. Blocco AudioContext: Iniezione JS

10.2 A Medio Termine

  1. Apprendimento automatico per rilevamento anomalie: Rilevare quando le modifiche di Obscura creano pattern rilevabili
  2. Selezione adattiva del profilo: Scegliere il profilo che meglio corrisponde all'hardware reale dell'utente (non dichiarare Safari su Windows)
  3. Degradazione graduale: Tornare a uno spoofing meno aggressivo se il rischio di rilevamento è alto

10.3 A Lungo Termine / Fuori Ambito

  1. Modifica del browser: Build browser personalizzata che normalizza i fingerprint (approccio Tor Browser)
  2. Normalizzazione GPU a livello hardware: Intercettazione rendering a livello di driver
  3. Offuscamento comportamentale: Pattern di mouse/tastiera generati da AI
  4. 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:

  1. Controlla ciò che può essere controllato (header, TLS, DNS, API JS) ~55% della superficie
  2. Blocca ciò che non può essere falsificato (canvas, audio, WebGL) impedisce l'osservazione
  3. 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

  1. Acar, G. et al. (2014). "The Web Never Forgets: Persistent Tracking Mechanisms in the Wild." CCS 2014.
  2. Mowery, K. & Shacham, H. (2012). "Pixel Perfect: Fingerprinting Canvas in HTML5." WOOT 2012.
  3. Eckersley, P. (2010). "How Unique Is Your Web Browser?" PETS 2010.
  4. Englehardt, S. & Narayanan, A. (2016). "Online Tracking: A 1-million-site Measurement and Analysis." CCS 2016.
  5. Tor Browser Design Document (2024). "The Design and Implementation of the Tor Browser."
  6. FingerprintJS (2026). "Browser Fingerprinting Techniques." fingerprintjs.com.
  7. FoxIO (2024). "JA4: TLS Client Fingerprinting." GitHub.
  8. Laperdrix, P. et al. (2020). "Browser Fingerprinting: A Survey." ACM TOIT.