PowerScan
IT

Fingerprinting audio senza microfono

Fingerprint del browser · 5 min di lettura · di PowerScan

Foto: Unsplash

"Fingerprint audio" suona come qualcosa registrato tramite un microfono. Non lo è. È un numero derivato da come la tua macchina elabora un suono sintetico che non viene mai riprodotto, mai catturato e non lascia mai la scheda.

Come viene creato

Lo script crea un OfflineAudioContext, che renderizza l'audio in un buffer in memoria anziché sugli altoparlanti. Collega un oscillatore, di solito un'onda triangolare a frequenza fissa, attraverso un compressore dinamico alla destinazione, e avvia il rendering. Quando il buffer è pronto, legge una porzione dei campioni, spesso alcune centinaia di valori, e ne calcola l'hash. Il risultato è una breve stringa come d4f50eb9.

L'intera operazione richiede poche decine di millisecondi e non necessita di alcuna autorizzazione, perché nulla viene catturato. L'OfflineAudioContext viene chiuso quando lo script ha finito.

Perché differisce tra le macchine

Il compressore e l'oscillatore sono implementati in aritmetica in virgola mobile all'interno del motore audio del browser, e l'output esatto dipende dalla versione del motore, dalla libreria matematica del sistema operativo, dal comportamento in virgola mobile della CPU e, in alcune configurazioni, dalla frequenza di campionamento dell'hardware audio. Le differenze sono minime, pochi bit nelle ultime cifre decimali, ma l'hash amplifica differenze minime in stringhe del tutto diverse. Come l'hash del canvas, è stabile su una macchina e varia da una macchina all'altra.

La sua diversità è inferiore a quella del canvas: molte macchine con la stessa build del browser e lo stesso sistema operativo producono lo stesso hash audio. È utile soprattutto come segnale di conferma e come modo per individuare i browser che rendono casuale il proprio output.

Che cosa fanno i browser

Brave aggiunge rumore alle letture audio nello stesso modo in cui lo fa per il canvas. Firefox con resist-fingerprinting disabilita parti della Web Audio API o restituisce valori costanti. Chromium non altera l'output. Un browser che rende casuale l'hash produce un valore diverso a ogni ricaricamento, cosa che una diagnostica rende visibile semplicemente lasciandoti ricaricare e confrontare.

La privacy, con precisione

Nessun suono viene registrato. Nessun microfono viene aperto. Il buffer esiste in memoria per la durata del calcolo e poi viene scartato. L'unica cosa che potrebbe lasciare la scheda è l'hash, e solo se la pagina sceglie di inviarlo. Una diagnostica che calcola l'hash in locale e te lo mostra sta leggendo esattamente ciò che leggerebbe un tracker, e poi non ne fa nulla.

Leggere il valore

Vale la pena controllare due cose. Primo, che l'hash esista: "Non disponibile" significa che l'API è bloccata, cosa che alcuni siti trattano come un segnale a sé. Secondo, che sia stabile: ricarica e il valore non dovrebbe cambiare. Un hash che cambia tra un caricamento e l'altro ti dice che il browser sta iniettando rumore, il che protegge dal tracciamento tra siti ma contrassegna anche il browser come uno che lo fa.

Tutti gli articoli · Avvia la scansione