Des chercheurs de l'Université Ben-Gourion (Israël), de l'Université de Lille (France) et de l'Université d'Adélaïde (Australie) ont développé une nouvelle technique pour identifier les appareils utilisateurs en analysant les paramètres de fonctionnement du GPU dans le navigateur web. La méthode, baptisée « Drawn Apart », repose sur l'utilisation de WebGL pour obtenir un profil de performance du GPU, permettant de significativement améliorer la précision des méthodes de suivi passif qui fonctionnent sans l'utilisation de cookies et sans conserver un identifiant sur le système de l'utilisateur.
Des méthodes tenant compte des caractéristiques de rendu, du GPU, de la pile graphique et des pilotes ont déjà été utilisées, mais elles se limitaient à la possibilité de distinguer les appareils uniquement au niveau des différents modèles de cartes graphiques et de GPU, c'est-à-dire qu'elles ne pouvaient être utilisées que comme un facteur supplémentaire pour améliorer les probabilités d'identification. La caractéristique clé de la nouvelle méthode « Drawn Apart » est qu'elle ne se limite pas à la distinction entre différents modèles de GPU, mais cherche à mettre en évidence les différences entre des GPU identiques d'un même modèle, dues à l'hétérogénéité du processus de fabrication des puces conçues pour des calculs parallèles massifs. Il est noté que les variations qui se produisent au cours de la fabrication permettent de créer des empreintes uniques pour les mêmes modèles d'appareils.

Il s'avère que ces différences peuvent être détectées en comptant le nombre de blocs d'exécution et en analysant leurs performances dans le GPU. Des primitives basées sur un ensemble de fonctions trigonométriques, d'opérations logiques et de calculs à virgule flottante ont été utilisées pour distinguer les différents modèles de GPU. Pour identifier les différences entre des GPU identiques, le nombre de threads exécutés simultanément lors de l'exécution des shaders de sommet a été évalué. Il est supposé que l'effet observé est causé par les différences de température et de consommation d'énergie entre différents exemplaires de puces (un effet similaire a déjà été démontré pour les CPU — des processeurs identiques exécutant du code identique ont montré une consommation d'énergie différente).
Étant donné que les opérations via WebGL s'exécutent de manière asynchrone, il n'est pas possible d'utiliser directement l'API JavaScript performance.now() pour mesurer le temps d'exécution, c'est pourquoi trois astuces ont été proposées pour la mesure du temps :
- onscreen — le rendu de la scène dans le canvas HTML avec mesure du temps de déclenchement de la fonction callback, définie via l'API Window.requestAnimationFrame et appelée après la fin du rendu.
- offscreen — utilisation d'un worker et rendu de la scène dans un objet OffscreenCanvas avec mesure du temps d'exécution de la commande convertToBlob.
- GPU — rendu dans un objet OffscreenCanvas, mais utilisation du minuteur fourni par WebGL pour mesurer le temps, tenant compte de la durée d'exécution d'un ensemble de commandes côté GPU.
Lors de la création de l'identifiant sur chaque appareil, 50 vérifications sont effectuées, chacune couvrant 176 mesures de 16 caractéristiques différentes. L'expérience, au cours de laquelle des informations ont été collectées sur 2500 appareils avec 1605 GPU différents, a montré une augmentation de l'efficacité des méthodes d'identification combinées de 67 % avec l'ajout du support Drawn Apart. En particulier, la méthode combinée FP-STALKER a en moyenne assuré une identification pendant 17,5 jours, tandis qu'avec Drawn Apart, la durée d'identification a augmenté à 28 jours.

- La précision de la séparation de 10 systèmes avec des puces Intel i5-3470 (GEN 3 Ivy Bridge) et un GPU Intel HD Graphics 2500 dans le test onscreen était de 93 %, tandis qu'en offscreen, elle était de 36,3 %.
- Pour 10 systèmes Intel i5-10500 (GEN 10 Comet Lake) avec une carte graphique NVIDIA GTX1650, la précision était de 70 % et 95,8 %.
- Pour 15 systèmes Intel i5-8500 (GEN 8 Coffee Lake) avec un GPU Intel UHD Graphics 630 — 42 % et 55 %.
- Pour 23 systèmes Intel i5-4590 (GEN 4 Haswell) avec GPU Intel HD Graphics 4600 — 32,7 % et 63,7 %.
- Pour six smartphones Samsung Galaxy S20/S20 Ultra avec GPU Mali-G77 MP11, la précision d'identification dans le test onscreen était de 92,7 %, tandis que pour les smartphones Samsung Galaxy S9/S9+ avec Mali-G72 MP18, elle était de 54,3 %.

Il est à noter que la précision était influencée par la température du GPU, et que pour certains appareils, le redémarrage du système entraînait une distorsion de l'identifiant. Lors de l'utilisation de cette méthode en combinaison avec d'autres méthodes d'identification indirecte, la précision peut être considérablement augmentée. La précision devrait également être améliorée grâce à l'utilisation de shaders de calcul après la stabilisation de la nouvelle API WebGPU.
Les entreprises Intel, ARM, Google, Khronos, Mozilla et Brave ont été informées du problème en 2020, mais les détails de la méthode n'ont été révélés que maintenant. Les chercheurs ont également publié des exemples fonctionnels écrits en JavaScript et GLSL, qui peuvent fonctionner avec ou sans affichage d'informations à l'écran. De plus, pour les systèmes basés sur GPU Intel GEN 3/4/8/10, des ensembles de données pour la classification des informations extraites dans les systèmes d'apprentissage automatique ont été publiés.
Source : opennet.ru
