Drawn Apart, un método de identificación de usuario basado en la GPU
Hace pocos dias se dio a conocer la noticia de que investigadores de la Universidad Ben-Gurion (Israel), la Universidad de Lille (Francia) y la Universidad de Adelaide (Australia) han desarrollado una nueva técnica para identificar los dispositivos de los usuarios mediante la detección de parámetros GPU en un navegador web.
El método se llama «Drawn Apart» y se basa en el uso de WebGL para obtener un perfil de rendimiento de GPU, lo que puede mejorar significativamente la precisión de los métodos de seguimiento pasivo que funcionan sin usar cookies y sin almacenar un identificador en el sistema del usuario.
Los métodos que tienen en cuenta las características de representación, GPU, pila de gráficos y controladores al identificarlos se usaron anteriormente, pero estaban limitados a la posibilidad de separar dispositivos solo al nivel de diferentes modelos de tarjetas de video y GPU, es decir solo podría usarse como un factor adicional para aumentar la probabilidad de identificación.
La característica clave del nuevo método «Drawn Apart» es que no se limita a separar diferentes modelos de GPU, sino que trata de identificar las diferencias entre GPU idénticas del mismo modelo, debido a la heterogeneidad del proceso de producción de chips diseñados.
Tambien se menciona que se observan que las variaciones que ocurren durante el proceso de producción hacen posible formar moldes no repetitivos para los mismos modelos de dispositivos.
Resultó que estas diferencias se pueden identificar contando el número de unidades de ejecución y analizando su rendimiento en la GPU. Como primitivas para identificar diferentes modelos de GPU, se utilizaron comprobaciones basadas en un conjunto de funciones trigonométricas, operaciones lógicas y cálculos de punto flotante. Para identificar las diferencias en la misma GPU, se estimó la cantidad de subprocesos que se ejecutan simultáneamente al ejecutar sombreadores de vértices.
Se supone que el efecto revelado es causado por las diferencias en los regímenes de temperatura y el consumo de energía de diferentes instancias de chip (anteriormente se demostró un efecto similar para la CPU: los mismos procesadores demostraron un consumo de energía diferente al ejecutar el mismo código).
Dado que las operaciones a través de WebGL son asíncronas, no se puede utilizar directamente la API de JavaScript performance.now() para medir su tiempo de ejecución, por lo que se propusieron tres trucos para medir el tiempo:
- En pantalla: representación de la escena en el lienzo HTML con la medición del tiempo de respuesta de la función de devolución de llamada expuesta a través de la API Window.requestAnimationFrame y llamada después de que se complete la representación.
- Fuera de pantalla: usar un trabajador y representar la escena en un objeto OffscreenCanvas midiendo el tiempo de ejecución del comando convertToBlob.
- GPU: representación en un objeto OffscreenCanvas, pero con un temporizador proporcionado por WebGL para medir el tiempo, teniendo en cuenta la duración de la ejecución de un conjunto de comandos en el lado de la GPU.
En el proceso de creación de un identificador se realizan 50 comprobaciones en cada dispositivo, cada una de las cuales cubre 176 medidas de 16 características diferentes. El experimento, durante el cual se recopiló información en 2500 dispositivos con 1605 GPU diferentes, mostró un aumento del 67% en la eficiencia de los métodos de identificación combinados al agregarles soporte Drawn Apart.
En particular, el método combinado FP-STALKER, en promedio, proporcionó identificación dentro de los 17,5 días, y en combinación con Drawn Apart, la duración de la identificación aumentó a 28 días.
Se observa que la precisión se vio afectada por la temperatura de la GPU y, para algunos dispositivos, reiniciar el sistema provocó una distorsión del identificador. Cuando se usa el método en combinación con otros métodos de identificación indirecta, la precisión puede incrementarse significativamente. También se planea aumentar la precisión mediante el uso de sombreadores de cómputo después de la estabilización de la nueva API WebGPU .
Intel, ARM, Google, Khronos, Mozilla y Brave fueron notificados del problema ya en 2020, pero los detalles del método acaban de ser revelados.
Entre otras cosas, los investigadores publicaron ejemplos de trabajo escritos en JavaScript y GLSL que pueden funcionar con y sin mostrar información en la pantalla. También para sistemas basados en GPU Intel GEN 3/4/8/10, se han publicado conjuntos de datos para clasificar la información extraída en sistemas de aprendizaje automático.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.