PowerScan
ES

Huella digital de canvas: por qué dos navegadores idénticos dibujan píxeles distintos

Huellas digitales del navegador · 6 min de lectura · por PowerScan

Foto: Unsplash

La huella digital de canvas es la técnica de la que más gente ha oído hablar y que menos gente sabe explicar. La idea es sencilla: pedir al navegador que dibuje algo, leer los píxeles y calcular su hash. Lo interesante es por qué los píxeles difieren entre equipos.

El dibujo

Un script de huella digital crea un <canvas> fuera de pantalla, obtiene un contexto 2D y dibuja una secuencia corta: un rectángulo relleno, algo de texto en una fuente concreta, quizá un degradado, una curva, un emoji. Después llama a toDataURL() o getImageData() para leer el resultado y pasa los bytes por una función hash. La salida es una cadena corta como 71ae464e. Esa cadena es el «hash de canvas».

Nada del dibujo es secreto, y no se envía nada a la GPU que la página no pudiera ya describir. La información está en el renderizado, no en las instrucciones.

Por qué difieren los píxeles

El texto es la principal fuente de variación. Renderizar un glifo implica el archivo de fuente que se eligió realmente (las fuentes de reserva difieren según el sistema operativo), la estrategia de hinting y de suavizado de bordes (en escala de grises o por subpíxeles, y con qué orden de subpíxeles), el rasterizador (FreeType, DirectWrite, CoreText o uno propio del navegador) y si la composición la hizo la GPU o la CPU. Cada uno de estos factores produce píxeles de borde ligeramente distintos. Un solo píxel gris claro en el borde de una «e» basta para cambiar el hash por completo.

Los degradados y las curvas añaden más: distintos controladores gráficos y distintas rutas de suavizado redondean los valores intermedios de forma diferente. El resultado es que dos equipos con la misma versión del navegador pero distinta GPU, controladores o sistema operativo suelen producir hashes distintos, mientras que un mismo equipo produce siempre el mismo hash. Estable y diverso, que es exactamente lo que quiere un rastreador.

Qué le dice un hash a un sitio

Por sí solo, nada sobre quién eres. Le dice al sitio que este navegador renderiza este dibujo de esta manera, lo cual es cierto para algún grupo de equipos. Lo que importa es el tamaño de ese grupo. Un portátil común con gráficos integrados y fuentes por defecto comparte su hash con muchos otros. Una configuración inusual puede ser casi única. Combinado con un tamaño de pantalla, una lista de idiomas y una cadena de renderizador, incluso un hash común pasa a formar parte de una combinación rara.

Qué hacen los navegadores al respecto

Firefox, con resist-fingerprinting activado, devuelve un canvas en blanco o aleatorizado y puede pedir permiso para acceder al canvas. Brave añade pequeñas perturbaciones aleatorias a las lecturas de canvas para que el hash cambie entre sitios y sesiones. Safari limita qué fuentes son visibles y restringe algunas lecturas. Chromium en sí no aleatoriza el canvas; los navegadores basados en él que pretenden controlar las huellas digitales lo hacen con sus propios parches, y la calidad de esos parches varía.

El ruido no sale gratis. Un hash de canvas que cambia en cada visita es en sí una señal, porque los navegadores reales no hacen eso. La mejor estrategia para un perfil de navegador aislado es un hash plausible y coherente, de modo que parezca una máquina corriente y no una máquina distinta cada hora.

Qué muestra un diagnóstico

PowerScan dibuja su propia imagen pequeña y te muestra el hash. Nunca lo sube; el valor existe solo en tu pestaña. Recarga y el hash debería ser idéntico. Si no lo es, algo en el navegador está inyectando ruido, lo cual conviene saber antes de fiarte de ese perfil.

Todos los artículos · Ejecutar el análisis