Cercetătorii de la Universitatea Ben-Gurion (Israel), Universitatea Lille (Franța) și Universitatea Adelaide (Australia) au dezvoltat o nouă tehnică de identificare a dispozitivelor utilizatorului prin determinarea parametrilor de funcționare a GPU-ului în browserul web. Metoda, denumită „Drawn Apart”, se bazează pe utilizarea WebGL pentru a obține un profil de performanță a GPU-ului, ceea ce permite o creștere semnificativă a preciziei metodelor pasive de urmărire, care funcționează fără cookie-uri și fără a salva un identificator pe sistemul utilizatorului.
Metodele care iau în considerare aspectele de redare, GPU-ul, stiva grafică și driverele au fost utilizate și anterior, dar acestea erau limitate la capacitatea de a distinge dispozitivele doar la nivelul diferitelor modele de plăci grafice și GPU-uri, adică puteau fi utilizate doar ca un factor suplimentar pentru a crește probabilitatea identificării. Caracteristica cheie a noului metod „Drawn Apart” este că nu se limitează la separarea diferitelor modele de GPU-uri, ci încearcă să determine diferențele dintre GPU-urile identice ale aceleași modele, cauzate de neuniformitatea procesului de fabricație a chip-urilor, destinate calculului paralel masiv. Se observă că variațiile apărute în procesul de fabricație permit formarea de amprente unice pentru aceleași modele de dispozitive.

S-a constatat că aceste diferențe pot fi identificate prin numărarea blocurilor de execuție și analiza performanței acestora în GPU. Ca primitive pentru identificarea diferitelor modele de GPU-uri, au fost utilizate verificări bazate pe un set de funcții trigonometrice, operații logice și calcule cu virgulă mobilă. Pentru a determina diferențele între GPU-uri identice, s-a evaluat numărul de fire de execuție care rulează simultan în timpul execuției shader-ului de vârf. Se presupune că efectul identificat este cauzat de diferențele în regimurile de temperatură și consumul de energie al diferitelor instanțe ale chip-urilor (anterior, un efect similar a fost demonstrat pentru CPU-uri — procesoare identice care rulează același cod au avut un consum de energie diferit).
Deoarece operațiunile prin WebGL se desfășoară asincron, nu este posibil să se utilizeze direct API-ul JavaScript performance.now() pentru a măsura timpul de execuție, așa că au fost propuse trei trucuri pentru a realiza această măsurare:
- onscreen — redarea scenei în HTML canvas cu măsurarea timpului activării funcției callback, stabilită prin API-ul Window.requestAnimationFrame, care este apelată după finalizarea redării.
- offscreen — utilizarea unui worker și redarea scenei într-un obiect OffscreenCanvas cu măsurarea timpului de execuție a comenzii convertToBlob.
- GPU — redarea într-un obiect OffscreenCanvas, dar folosind timerul furnizat în WebGL pentru a măsura timpul, care ia în considerare durata de execuție a setului de comenzi pe partea GPU.
În procesul de creare a identificatorului pe fiecare dispozitiv, se fac 50 de verificări, fiecare acoperind 176 de măsurători ale a 16 caracteristici diferite. Experimentul, în cadrul căruia a fost colectată informația despre 2500 de dispozitive cu 1605 GPU-uri diferite, a arătat o creștere a eficienței metodelor de identificare combinate cu 67% prin adăugarea suportului pentru Drawn Apart. În special, metoda combinată FP-STALKER a oferit în medie o identificare în 17,5 zile, iar în combinație cu Drawn Apart, durata identificării a crescut la 28 de zile.

- Precizia separării a 10 sisteme cu procesoare Intel i5-3470 (GEN 3 Ivy Bridge) și GPU Intel HD Graphics 2500 în testul onscreen a fost de 93%, iar în testul offscreen — de 36,3%.
- Pentru 10 sisteme Intel i5-10500 (GEN 10 Comet Lake) cu placa grafică NVIDIA GTX1650, precizia a fost de 70% și 95,8%.
- Pentru 15 sisteme Intel i5-8500 (GEN 8 Coffee Lake) cu GPU Intel UHD Graphics 630 — 42% și 55%.
- Pentru 23 de sisteme Intel i5-4590 (GEN 4 Haswell) cu GPU Intel HD Graphics 4600 — 32,7% și 63,7%.
- Pentru șase smartphone-uri Samsung Galaxy S20/S20 Ultra cu GPU Mali-G77 MP11 în testul cu redare pe ecran, precizia identificării a fost de 92,7%, iar pentru smartphone-urile Samsung Galaxy S9/S9+ cu Mali-G72 MP18 — 54,3%.

Se observă că temperatura GPU-ului a influențat precizia, iar pentru unele dispozitive, repornirea sistemului a dus la distorsiunea identificatorului. Prin utilizarea metodei în combinație cu alte metode de identificare indirectă, precizia poate fi semnificativ crescută. De asemenea, se plănuiește creșterea preciziei prin utilizarea shaderelor compute după stabilizarea noului API WebGPU.
Companiile Intel, ARM, Google, Khronos, Mozilla și Brave au fost informate despre problemă încă din 2020, dar detaliile metodei au fost dezvăluite abia acum. Printre altele, cercetătorii au publicat exemple funcționale scrise în JavaScript și GLSL, care pot lucra cu sau fără afișarea informațiilor pe ecran. De asemenea, pentru sistemele bazate pe GPU Intel GEN 3/4/8/10, au fost publicate seturi de date pentru clasificarea informațiilor extrase în sistemele de învățare automată.
Sursa: opennet.ro
