WebGL Pixel Hash: la GPU renderiza tu huella digital única
Navegador y Dispositivo

WebGL Pixel Hash: la GPU renderiza tu huella digital única

El WebGL pixel hash renderiza una escena 3D y extrae valores de píxeles con gl.readPixels(). Las micro-diferencias de punto flotante entre GPUs crean un hash único.

8 min de lectura·

El WebGL pixel hash renderiza una escena 3D invisible en tu GPU y lee los valores exactos de los píxeles resultantes. Las micro-diferencias de punto flotante entre GPUs generan un hash único que identifica tu hardware gráfico sin cookies. Comprueba tu huella en whatsmy.fyi.

¿Cómo funciona el WebGL pixel hash?

El proceso se desarrolla en varios pasos técnicos:

  1. El script crea un contexto WebGL sobre un elemento <canvas> oculto.
  2. Compila un GLSL shader —un programa que corre directamente en la GPU— que dibuja formas geométricas específicas: triángulos, gradientes, efectos de luz.
  3. Ejecuta el renderizado en el framebuffer de la GPU.
  4. Lee los valores RGBA de los píxeles resultantes con gl.readPixels(), extrayendo los datos del framebuffer como un array de enteros.
  5. Calcula un hash criptográfico (generalmente CRC32 o SHA-1) de ese array de bytes.

El hash resultante es la huella digital de tu GPU. Diferentes GPUs producen diferentes valores porque cada chip aplica sus propios algoritmos de interpolación y precisión de punto flotante a las operaciones de renderizado.

¿Por qué distintas GPUs producen resultados diferentes?

La aritmética de punto flotante en hardware no es determinista entre implementaciones. Cuando una GPU calcula la posición exacta de un vértice o el color de un fragmento, aplica operaciones de multiplicación y suma de números de punto flotante de 32 bits. El estándar IEEE 754 permite ciertos grados de imprecisión en estas operaciones, y cada fabricante de GPU (NVIDIA, AMD, Apple, Qualcomm, Intel) implementa estas operaciones con diferentes estrategias de redondeo y optimización.

El resultado es que un triángulo renderizado en una RTX 4090 tiene valores de píxel ligeramente diferentes a los de una Radeon RX 7900 XTX o un chip Apple M3, incluso cuando el shader GLSL es idéntico.

Estabilidad del WebGL pixel hash

El hash de píxeles WebGL es extremadamente estable porque depende del hardware físico, no del software:

  • No cambia al actualizar el navegador (salvo cambios mayores en la capa ANGLE)
  • No cambia al borrar cookies, caché o historial
  • No cambia en modo de navegación privada
  • No cambia al reiniciar el sistema
  • No cambia al usar una VPN (porque la VPN no modifica el hardware gráfico)

Sí puede cambiar si actualizas los controladores de la GPU o cambias la tarjeta gráfica.

Diferencia con el WebGL vendor fingerprinting

El WebGL vendor fingerprinting lee cadenas de texto que identifican el fabricante y modelo de la GPU (UNMASKED_VENDOR_WEBGL y UNMASKED_RENDERER_WEBGL). El WebGL pixel hash va más allá: mide el comportamiento real de renderizado, no solo la información declarada. Esto significa que incluso si un navegador oculta las cadenas del vendor (como hace Brave), el pixel hash puede seguir diferenciando entre GPUs.

Defensa contra el WebGL pixel hash

  • Brave Browser: añade ruido aleatorio a los valores de los píxeles leídos por gl.readPixels(), alterando el hash en cada sesión. Este ruido es lo suficientemente pequeño como para no ser visible, pero suficiente para cambiar el hash.
  • Firefox (privacy.resistFingerprinting): modifica los valores del framebuffer antes de devolverlos al script.
  • Tor Browser (nivel de seguridad más alto): desactiva WebGL por completo, eliminando este vector de rastreo.

Uso en sistemas de identificación real

El WebGL pixel hash es utilizado por FingerprintJS Pro y otras bibliotecas de huella digital profesionales. También aparece en sistemas de prevención de fraude bancario y en plataformas de videojuegos online para detectar cuentas múltiples (multiaccounting) del mismo hardware.

WebGL pixel hash y el canvas fingerprinting

Ambas técnicas renderizan contenido gráfico y extraen un hash de los píxeles resultantes. La diferencia es el pipeline de renderizado: el canvas fingerprinting usa la API 2D Canvas (que puede ir por software o GPU dependiendo del navegador), mientras que el WebGL pixel hash usa la GPU explícitamente a través del pipeline 3D de OpenGL. Esto los hace complementarios: aportan entropía de los mismos subsistemas de renderizado pero a través de rutas de código diferentes.

Explora más sobre la huella digital del navegador

Consulta nuestra guía completa sobre la huella digital del navegador y descubre el audio fingerprinting y el font fingerprinting como técnicas complementarias.

Consulta tu dirección IP, ubicación y puntuación de privacidad — al instante.

Cero registros. Cero rastreo. Cero APIs externas.

Hacer la consulta ahora →

Artículos relacionados

WebGL Pixel Hash: la GPU renderiza tu huella digital única | whatsmy.fyi