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 la determinazione dei parametri di funzionamento della GPU nel browser web. Il metodo, chiamato "Drawn Apart", si basa sull'uso di WebGL per ottenere un profilo delle prestazioni della GPU, consentendo di aumentare significativamente la precisione dei metodi di tracciamento passivi che operano senza l'uso di cookie e senza salvare identificatori nel sistema dell'utente.
I metodi che considerano le peculiarità di rendering, GPU, stack grafico e driver sono stati utilizzati in precedenza, ma erano limitati nella possibilità di distinguere i dispositivi solo a livello di diverse modelli di schede grafiche e GPU, quindi potevano essere utilizzati solo come fattore aggiuntivo per aumentare la probabilità di identificazione. La caratteristica distintiva del nuovo metodo "Drawn Apart" è che non si limita a separare diversi modelli di GPU, ma cerca di individuare le differenze tra GPU identiche dello stesso modello, causate dall'eterogeneità del processo di produzione dei chip progettati per enormi calcoli paralleli. Si osserva che le variazioni che si verificano durante la produzione consentono di formare impronte uniche per gli stessi modelli di dispositivi.

È emerso che queste differenze possono essere scoperte contando il numero di blocchi di esecuzione e analizzando le loro prestazioni nella GPU. Sono stati utilizzati controlli basati su un insieme di funzioni trigonometriche, operazioni logiche e calcoli in virgola mobile come primitive per distinguere diversi modelli di GPU. Per identificare le differenze nelle GPU identiche, è stato valutato il numero di thread eseguiti simultaneamente durante l'esecuzione dei vertex shader. Si ipotizza che l'effetto osservato sia causato dalle differenze nelle condizioni termiche e nel consumo energetico di diversi esemplari di chip (in precedenza, un effetto simile era stato dimostrato per le CPU: processori identici che eseguivano 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 della loro esecuzione. Pertanto, sono stati proposti tre trucchi per la misurazione del tempo:
- onscreen — il rendering della scena in un canvas HTML con la misurazione del tempo di attivazione della 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 la misurazione del tempo di esecuzione del comando convertToBlob.
- GPU — rendering in un oggetto OffscreenCanvas, ma utilizzando per la misurazione del tempo il timer fornito in WebGL, che tiene conto della durata dell'esecuzione di un insieme di comandi sul lato GPU.
Durante la creazione dell'identificatore su ogni dispositivo vengono effettuati 50 controlli, ognuno dei quali copre 176 misurazioni di 16 diverse caratteristiche. L'esperimento, durante il quale sono state raccolte informazioni su 2500 dispositivi con 1605 GPU diverse, ha mostrato un aumento dell'efficacia dei metodi di identificazione combinati del 67% con l'aggiunta del supporto a Drawn Apart. In particolare, il metodo combinato FP-STALKER ha fornito in media un'identificazione in 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 nell'offscreen è stata del 36,3%.
- Per 10 sistemi Intel i5-10500 (GEN 10 Comet Lake) con scheda video NVIDIA GTX1650, l'accuratezza è stata del 70% e del 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 di visualizzazione, l'accuratezza dell'identificazione è stata del 92,7%, mentre per gli smartphone Samsung Galaxy S9/S9+ con Mali-G72 MP18 — 54,3%.

È stato osservato che la temperatura della GPU influenzava l'accuratezza, e per alcuni dispositivi il riavvio del sistema portava a distorsioni dell'identificatore. Combinando il metodo con altri metodi di identificazione indiretta, l'accuratezza può essere notevolmente aumentata. Si prevede anche di migliorare l'accuratezza utilizzando 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 resi noti solo ora. In particolare, i ricercatori hanno pubblicato esempi funzionanti scritti in JavaScript e GLSL, che possono funzionare sia con che senza output visivo. Sono stati inoltre pubblicati set di dati per la classificazione delle informazioni estratte nei sistemi di apprendimento automatico per i sistemi basati su GPU Intel GEN 3/4/8/10.
Fonte: opennet.ru
