I ricercatori dell'Università Ben-Gurion (Israele), dell'Università di Lille (Francia) e dell'Università di Adelaide (Australia) hanno sviluppato una nuova tecnica per identificare i dispositivi degli utenti attraverso l'analisi delle prestazioni della GPU nel web browser. Il metodo, chiamato "Drawn Apart", si basa sull'uso di WebGL per ottenere un profilo delle prestazioni della GPU, consentendo di aumentare significativamente l'accuratezza dei metodi di tracciamento passivi che operano senza fare uso di cookie e senza memorizzare identificativi nel sistema dell'utente.
I metodi che considerano le caratteristiche di rendering, la GPU, il grafico stack e i driver sono stati utilizzati in passato, ma erano limitati alla separazione dei dispositivi solo a livello di diverse modelli di schede grafiche e GPU, cioè potevano essere applicati solo come fattore aggiuntivo per aumentare la probabilità di identificazione. La caratteristica principale del nuovo metodo "Drawn Apart" è che non si limita a separare i diversi modelli di GPU, ma cerca di identificare le differenze tra GPU identiche dello stesso modello, causate dall'eterogeneità del processo di produzione dei chip progettati per il calcolo parallelo massivo. Si osserva che le variazioni che si verificano durante il processo di produzione consentono di formare impronte uniche per gli stessi modelli di dispositivi.

È stato scoperto che queste differenze possono essere identificate attraverso il conteggio dei blocchi di esecuzione e l'analisi delle loro prestazioni nella GPU. Sono stati utilizzati come primitivi per identificare diversi modelli di GPU controlli basati su un insieme di funzioni trigonometriche, operazioni logiche e calcoli in virgola mobile. Per rilevare le differenze tra GPU identiche, è stato valutato il numero di thread eseguiti simultaneamente durante l'esecuzione degli shader di vertice. Si ipotizza che l'effetto riscontrato sia dovuto alle differenze nelle modalità di temperatura e nel consumo energetico delle diverse istanze dei chip (in precedenza, un effetto simile era stato dimostrato per le CPU: processori identici, eseguendo lo stesso codice, mostravano un diverso consumo energetico).
Poiché le operazioni tramite WebGL vengono eseguite in modo asincrono, non è possibile utilizzare direttamente l'API JavaScript performance.now() per misurare il tempo di esecuzione, quindi sono stati proposti tre trucchi per la misura del tempo:
- onscreen — rendering della scena in un HTML canvas con misurazione del tempo di attivazione della funzione callback, impostata tramite l'API Window.requestAnimationFrame e chiamata dopo il completamento del rendering.
- offscreen — utilizzo di un worker e rendering della scena in un oggetto OffscreenCanvas con misurazione del tempo di esecuzione del comando convertToBlob.
- GPU — rendering in un oggetto OffscreenCanvas, ma uso per misurare il tempo fornito nel timer WebGL, considerando la durata di esecuzione di un insieme di comandi sul lato GPU.
Durante la creazione dell'identificatore su ogni dispositivo vengono eseguiti 50 controlli, ciascuno dei quali copre 176 misurazioni di 16 diverse caratteristiche. Un esperimento, in cui sono state raccolte informazioni su 2500 dispositivi con 1605 GPU diverse, ha mostrato un aumento dell'efficacia dei metodi di identificazione combinati del 67% aggiungendo il supporto di Drawn Apart. In particolare, il metodo combinato FP-STALKER ha in media fornito identificazione per 17.5 giorni, mentre in combinazione con Drawn Apart la durata dell'identificazione è aumentata a 28 giorni.

- L'accuratezza della separazione di 10 sistemi con chip Intel i5-3470 (GEN 3 Ivy Bridge) e GPU Intel HD Graphics 2500 nel test onscreen è stata del 93%, mentre in offscreen è stata del 36.3%.
- Per 10 sistemi Intel i5-10500 (GEN 10 Comet Lake) con scheda grafica NVIDIA GTX1650, l'accuratezza è stata del 70% e 95.8%.
- Per 15 sistemi Intel i5-8500 (GEN 8 Coffee Lake) con GPU Intel UHD Graphics 630 — 42% e 55%.
- Per 23 sistemi Intel i5-4590 (GEN 4 Haswell) con GPU Intel HD Graphics 4600 — 32,7% e 63,7%.
- Per sei smartphone Samsung Galaxy S20/S20 Ultra con GPU Mali-G77 MP11 nel test con output video, la precisione di identificazione è stata del 92,7%, mentre per gli smartphone Samsung Galaxy S9/S9+ con Mali-G72 MP18 è stata del 54,3%.

Si osserva che la precisione è stata influenzata dalla temperatura della GPU e, per alcuni dispositivi, il riavvio del sistema ha portato a una distorsione dell'identificatore. Utilizzando il metodo insieme ad altri metodi di identificazione indiretta, la precisione può essere notevolmente aumentata. Si prevede di aumentare la precisione anche attraverso l'uso di shader computazionali dopo la stabilizzazione del nuovo API WebGPU.
Le aziende Intel, ARM, Google, Khronos, Mozilla e Brave sono state informate del problema già nel 2020, ma i dettagli del metodo sono stati rivelati solo ora. I ricercatori hanno pubblicato anche esempi funzionanti scritti in JavaScript e GLSL, che possono funzionare con e senza output video. Inoltre, per i sistemi basati su GPU Intel GEN 3/4/8/10 sono stati pubblicati dataset per la classificazione delle informazioni estratte nei sistemi di apprendimento automatico.
Fonte: opennet.ru
