Investigadores de la Universidad Ben Gurion (Israel), la Universidad de Lille (Francia) y la Universidad de Adelaida (Australia) han desarrollado una nueva técnica para identificar dispositivos de usuario mediante la determinación de los parámetros de funcionamiento de la GPU en el navegador web. El método se ha denominado «Drawn Apart» y se basa en el uso de WebGL para obtener un perfil de rendimiento de la GPU, que permite aumentar significativamente la precisión de métodos pasivos de seguimiento que operan sin el uso de cookies y sin guardar un identificador en el sistema del usuario.
Los métodos que consideran las características de renderizado, la GPU, la pila gráfica y los controladores ya se habían utilizado anteriormente, pero estaban limitados a la capacidad de distinguir dispositivos solo a nivel de diferentes modelos de tarjetas gráficas y GPU, es decir, solo podían aplicarse como un factor auxiliar para aumentar la probabilidad de identificación. Una característica clave del nuevo método «Drawn Apart» es que no se limita a separar diferentes modelos de GPU, sino que intenta identificar diferencias entre GPUs idénticas de un mismo modelo, derivadas de la heterogeneidad en el proceso de fabricación de chips diseñados para cálculos masivos en paralelo. Se observa que las variaciones que surgen durante el proceso de fabricación permiten formar moldes únicos para los mismos modelos de dispositivos.

Se ha descubierto que estas diferencias se pueden identificar mediante el conteo de bloques de ejecución y el análisis de su rendimiento en la GPU. Se utilizaron pruebas basadas en un conjunto de funciones trigonométricas, operaciones lógicas y cálculos de punto flotante como primitivas para identificar diferentes modelos de GPU. Para identificar diferencias en GPUs idénticas, se evaluó el número de hilos que se ejecutan simultáneamente al realizar sombreadores de vértices. Se sugiere que el efecto identificado es causado por diferencias en los regímenes térmicos y el consumo de energía de diferentes instancias de chips (previamente, un efecto similar se demostró para CPU: procesadores idénticos que ejecutan el mismo código mostraron diferentes consumos de energía).
Dado que las operaciones a través de WebGL se realizan de manera asíncrona, no se puede utilizar directamente el API de JavaScript performance.now() para medir el tiempo de su ejecución, por lo que se propusieron tres trucos para medir el tiempo:
- onscreen: renderizar la escena en un canvas HTML midiendo el tiempo de activación de la función callback establecida mediante el API Window.requestAnimationFrame, que se llama después de completar la renderización.
- offscreen: utilizar un worker y renderizar la escena en un objeto OffscreenCanvas, midiendo el tiempo de ejecución del comando convertToBlob.
- GPU: renderizar en un objeto OffscreenCanvas, pero utilizando para medir el tiempo el temporizador proporcionado en WebGL que tiene en cuenta la duración de la ejecución de un conjunto de comandos en la GPU.
En el proceso de creación del identificador en cada dispositivo, se realizan 50 verificaciones, cada una abarcando 176 medidas de 16 características diferentes. El experimento, en el cual se recopiló información sobre 2500 dispositivos con 1605 GPU diferentes, mostró un aumento de la eficiencia de los métodos de identificación combinados del 67% al añadir soporte para Drawn Apart. En particular, el método combinado FP-STALKER proporcionó un promedio de identificación de 17.5 días, mientras que con Drawn Apart, la duración de la identificación aumentó a 28 días.

- La precisión de separación de 10 sistemas con chips Intel i5-3470 (GEN 3 Ivy Bridge) y GPU Intel HD Graphics 2500 en la prueba onscreen fue del 93%, mientras que en offscreen fue del 36.3%.
- Para 10 sistemas Intel i5-10500 (GEN 10 Comet Lake) con tarjeta gráfica NVIDIA GTX1650, la precisión fue del 70% y 95.8%.
- Para 15 sistemas Intel i5-8500 (GEN 8 Coffee Lake) con GPU Intel UHD Graphics 630, la precisión fue del 42% y 55%.
- Para 23 sistemas Intel i5-4590 (GEN 4 Haswell) con GPU Intel HD Graphics 4600, la precisión fue del 32.7% y 63.7%.
- Para seis smartphones Samsung Galaxy S20/S20 Ultra con GPU Mali-G77 MP11, la precisión de identificación en la prueba onscreen fue del 92.7%, mientras que para los smartphones Samsung Galaxy S9/S9+ con Mali-G72 MP18 fue del 54.3%.

Se observa que la precisión se vio afectada por la temperatura de la GPU, y para algunos dispositivos, reiniciar el sistema provocaba distorsiones en el identificador. Al combinar este método con otros métodos de identificación indirecta, la precisión puede aumentar significativamente. También se planea mejorar la precisión mediante el uso de shaders computacionales tras la estabilización del nuevo API WebGPU.
Las empresas Intel, ARM, Google, Khronos, Mozilla y Brave fueron notificadas sobre el problema ya en 2020, pero los detalles del método se revelaron solo ahora. Los investigadores también publicaron ejemplos funcionales escritos en JavaScript y GLSL que pueden trabajar tanto con salida como sin salida de información en pantalla. Además, se han publicado conjuntos de datos para la clasificación de información extraída en sistemas de aprendizaje automático para sistemas basados en GPU Intel GEN 3/4/8/10.
Fuente: opennet.ru
