Volver al blog

Huella de Canvas y mitigación: la coherencia supera a la aleatorización

La huella de Canvas convierte en identificador las diferencias de renderizado que produce una misma instrucción de dibujo en distintos equipos y configuraciones, y rara vez se usa por sí sola. Una respuesta sensata no consiste en cambiarla cada vez, sino en mantener coherentes entre sí las características del entorno.

El principio de la huella de Canvas no es complicado, pero muchas de las medidas que suelen recomendarse para evitarla hacen justo lo contrario de lo conveniente.

Las mismas instrucciones producen resultados distintos en equipos distintos

Canvas es un componente de dibujo de HTML5 que permite a una página web dibujar formas y texto mediante scripts. Las mismas instrucciones de dibujo pueden generar pequeñas diferencias de renderizado en dispositivos distintos debido a factores de bajo nivel como el sistema operativo, la versión del navegador, la biblioteca de fuentes y el controlador gráfico. A simple vista apenas se notan, pero cuando el contenido del lienzo se exporta como datos, esas diferencias se convierten en valores comparables.

El proceso, a grandes rasgos, es este: la página dibuja primero gráficos y texto y después usa toDataURL() para exportar el resultado como una cadena Base64. Esa cadena puede emplearse como identificador. Distintos dispositivos producen resultados distintos, por lo que en muchos casos el valor es único. Borrar las cookies no lo afecta, ni tampoco vaciar la caché.

Rara vez se utiliza de forma aislada

Un valor de Canvas por sí solo tiene una utilidad limitada y puede variar cuando se actualiza el navegador o cambia el controlador gráfico. En la práctica, Canvas suele agruparse con otras características para comprobarlas entre sí:

  • Datos gráficos como WebGL, lista de fuentes y modelo de tarjeta gráfica
  • Datos del entorno como UA, zona horaria, idioma y resolución de pantalla
  • Datos de sesión como cookies, almacenamiento local y salida de red

El motivo de agruparlas es comprobar la coherencia. Cada dato por separado puede estar dentro de un rango normal, pero las contradicciones destacan al combinarlos: la zona horaria está configurada en Estados Unidos, la lista de idiomas contiene solo chino y el valor de Canvas corresponde a gráficos integrados mientras la UA declara un dispositivo nuevo de gama alta. La plataforma no necesita demostrar quién eres. Solo necesita detectar que ese conjunto de características no parece pertenecer a una máquina real.

Desactivarlo hace que destaques

La primera reacción de muchas personas es desactivar Canvas, pero el resultado puede ser justo el contrario.

Casi todos los navegadores de usuarios normales admiten Canvas. Un entorno que claramente no lo admite es una minoría estadística y, en la práctica, revela que está recibiendo un tratamiento especial. Además, hay un problema más práctico: muchos sitios dependen de Canvas para recortar imágenes, mostrar gráficos y renderizar CAPTCHAs. Al desactivarlo, algunas funciones pueden fallar y aparece otra anomalía más.

Otra estrategia es cambiar a un conjunto de valores aleatorios en cada visita. El problema es similar: las huellas de los dispositivos reales son estables. Un entorno que cambia cada vez se comporta de forma distinta a un usuario normal y puede ser más fácil de aislar y marcar. La propia aleatorización puede ser una señal reconocible.

La dirección razonable es la coherencia interna

Es más realista buscar que las características del entorno sean coherentes entre sí y que el conjunto no resulte anómalo, en lugar de intentar que todo sea diferente en cada visita.

En la práctica, las señales deben respaldarse unas a otras: la zona horaria, el idioma y la ubicación geográfica de la IP de salida deberían encajar. El dispositivo declarado por la UA y la capacidad gráfica que muestran Canvas y WebGL deberían estar en un nivel comparable. El entorno de una misma cuenta debería permanecer estable a largo plazo, sin cambios evidentes en visitas repetidas. No conviene depender de extensiones que se limitan a desactivar una función, porque suelen crear rasgos aún más llamativos. Siempre que sea posible, reducir los scripts de terceros también disminuye la superficie disponible para la recopilación.

Si varios entornos necesitan diferenciarse entre sí, esa es una cuestión de aislamiento de entornos. Herramientas como PurpleMark, al aislar entornos para varias cuentas, suelen asignar a cada cuenta un entorno fijo en vez de hacer que los parámetros cambien al azar, porque lo que realmente importa a las plataformas es que el conjunto de características sea estable y tenga sentido en conjunto.

Resumen

Canvas permite rastrear porque convierte pequeñas diferencias de hardware y software en una cadena estable y comparable. Una respuesta eficaz no consiste en desactivarlo ni en hacer que cambie sin control, sino en lograr que cuente la misma historia que las demás características del mismo entorno. Parecer normal es más seguro que parecer excepcional.