¿Qué señales sobreviven a las actualizaciones del navegador? Un análisis de estabilidad
Analizamos la estabilidad de las señales a lo largo de 50 actualizaciones de Chrome, Firefox y Safari. Estas son las señales de fingerprinting más y menos estables.
Las actualizaciones del navegador son el enemigo natural de la huella digital del dispositivo. Cada 4-6 semanas, Chrome, Firefox y Safari lanzan nuevas versiones que pueden alterar los valores de las señales: cambiando las cadenas de user agent, modificando el comportamiento de renderizado, añadiendo o eliminando APIs. Como señala la Guía de Fingerprinting del W3C, los navegadores trabajan activamente para limitar la superficie susceptible de fingerprinting. Para los sistemas de fingerprinting que tratan todas las señales por igual, cada actualización es una posible ruptura de identidad para millones de visitantes.
Realizamos un análisis de estabilidad exhaustivo a lo largo de 50 actualizaciones del navegador para responder a la pregunta fundamental: ¿en qué señales se puede confiar y cuáles le traicionarán?
Metodología
Instrumentamos 200 dispositivos físicos a través de 5 sistemas operativos (Windows 10, Windows 11, macOS Ventura, macOS Sonoma, Ubuntu 22.04) y 3 navegadores (Chrome, Firefox, Safari). Cada dispositivo ejecutó recopilación automática de señales a diario durante 14 meses, cubriendo 50 actualizaciones de versión importantes del navegador: 24 lanzamientos de Chrome, 16 de Firefox y 10 de Safari.
Para cada señal, registramos: con qué frecuencia cambiaba el valor, si el cambio se correlacionaba con una actualización del navegador o un factor externo (actualización de driver, parche de SO), y la magnitud del cambio (reemplazo completo del valor frente a variación menor).
Los niveles de estabilidad
Nivel 1: sólido como una roca (99.5%+ de estabilidad)
Estas señales solo cambiaron cuando cambió el hardware físico o se actualizaron los drivers, nunca por actualizaciones del navegador por sí solas.
Concurrencia de hardware (navigator.hardwareConcurrency): 99.97% estable. Cambió solo en 1 dispositivo que tuvo una actualización de BIOS que afectaba al hyperthreading. Memoria del dispositivo (navigator.deviceMemory): 99.98% estable. Un dispositivo se actualizó de 8GB a 16GB durante el estudio. Resolución de pantalla y profundidad de color: 99.92% estable. Los cambios se correlacionaron con cambios de monitor y eventos de estación de acoplamiento. Tamaño máximo de textura de WebGL: 99.99% estable. Cero cambios relacionados con el navegador. Cambió una vez en un dispositivo que recibió una actualización de driver de NVIDIA. Frecuencia de muestreo de audio: 100% estable. Cero cambios en los 200 dispositivos y las 50 actualizaciones. Esta es la señal más estable que rastreamos.
Nivel 2: mayormente estable (95-99.5%)
Estas señales cambian de vez en cuando con las actualizaciones del navegador, pero permanecen estables en la mayoría de los lanzamientos.
Huella de Canvas 2D: 97.8% estable. Los cambios ocurrieron en Chrome 118 (actualización del motor de renderizado de fuentes), Chrome 122 (cambio de anti-aliasing sub-píxel) y Firefox 121 (actualización del text shaping). Cada cambio afectó a todos los dispositivos de ese navegador de forma simultánea: un patrón detectable que manejamos con emparejamiento consciente de la versión del navegador. Cadena del renderizador de WebGL: 98.1% estable. Chrome reformatea ocasionalmente la cadena envolvente de ANGLE. La información subyacente de la GPU no cambia, pero la representación de la cadena se desplaza. Parseamos el modelo de la GPU a partir de la cadena en lugar de hashear la cadena directamente. Lista de fuentes: 96.4% estable. Las actualizaciones del SO añaden o eliminan de vez en cuando fuentes del sistema. Las actualizaciones del navegador rara vez afectan a la enumeración de fuentes, pero Chrome 120 cambió el orden en que se reportan las fuentes, lo que rompió el fingerprinting de fuentes basado en hash. Usamos comparación basada en conjuntos (similitud de conjuntos) en lugar de hashing ordenado.
Nivel 3: estabilidad moderada (80-95%)
Estas señales cambian con una frecuencia significativa pero aún proporcionan un valor de identificación útil entre cambios.
Plugins instalados: 89.2% estable. La reducción continua por parte de Chrome del array de plugins (navigator.plugins) eliminó por completo la visibilidad de los plugins en algunos contextos. Firefox mantuvo la enumeración de plugins. Safari la restringió a un conjunto estándar. Detección de características de CSS: 91.7% estable. Se añaden nuevas características de CSS con cada lanzamiento del navegador, lo que cambia el conjunto de características que detecta nuestro sondeo de CSS. Ponderamos las características nuevas por debajo de las establecidas para reducir el impacto. Soporte táctil: 93.1% estable. Los navegadores de escritorio cambian de vez en cuando su soporte táctil reportado cuando Chrome ajusta su detección de emulación de dispositivos.
Nivel 4: volátil (<80%)
Estas señales cambian con frecuencia y nunca deberían ser anclas primarias de identificación.
Cadena de User Agent: 42.3% estable. La iniciativa de reducción del User-Agent de Chrome cambió el formato de la cadena varias veces. Firefox actualiza el número de versión con cada lanzamiento. Safari modifica la cadena de versión de WebKit con regularidad. Esto solía ser la columna vertebral de los sistemas de fingerprinting simples: esos sistemas ahora están rotos. Tipo de conexión (navigator.connection): 68.4% estable. Cambia con el cambio de red (WiFi a celular, distintas redes WiFi). API de batería: 71.2% estable. Varía con el estado de carga y la disponibilidad de la API en el navegador. Chrome restringió el acceso a la API de batería en algunos contextos. Área de pantalla disponible: 76.8% estable. Cambia con la visibilidad de la barra de tareas, la gestión de ventanas y los ajustes de escalado de la pantalla.
Comparación entre navegadores
Chrome es el navegador más volátil en cuanto a estabilidad de fingerprinting. Google trabaja activamente para reducir la susceptibilidad al fingerprinting, lo que significa que las actualizaciones de Chrome rompen más señales que las de Firefox o Safari. Durante nuestro periodo de estudio:
Chrome causó cambios de señal en el 3.2% de las sesiones de recopilación. Firefox causó cambios de señal en el 1.8% de las sesiones de recopilación. Safari causó cambios de señal en el 1.1% de las sesiones de recopilación.
La menor volatilidad de Safari se debe en parte a que Apple lanza menos versiones al año y en parte a que las contramedidas de fingerprinting de Safari (Intelligent Tracking Prevention) operan a nivel de red en lugar de cambiar los valores de retorno de las API.
Recomendaciones prácticas
Con base en este análisis, hacemos cinco recomendaciones para los sistemas de fingerprinting en producción:
Nunca use el user agent como ancla de identificación. Es la señal distintiva menos estable. Úselo solo para la detección del navegador y la puntuación de confianza de Nivel 3.
Separe las señales de hardware de las señales de software. Las señales de hardware (GPU, pantalla, audio) son 40x más estables que las señales de software (user agent, plugins, características de CSS). Pondérelas en consecuencia.
Use comparación basada en conjuntos para las señales enumerables. Las listas de fuentes, las listas de plugins y los resultados de la detección de características deben compararse usando similitud de conjuntos o métricas de distancia de conjuntos similares, no hashing ordenado. Los cambios de orden son comunes; los cambios de contenido son raros.
Implemente emparejamiento consciente de la versión del navegador. Cuando Chrome 118 cambia el renderizado de canvas para todos los usuarios de Chrome de forma simultánea, su sistema debería reconocer esto como una actualización del navegador, no como una ruptura masiva de identidad. Rastree las versiones del navegador y aplique tolerancias de emparejamiento específicas por versión.
Monitoree la estabilidad de las señales de forma continua. Nuestros porcentajes de estabilidad se basan en datos históricos. Las futuras actualizaciones del navegador pueden cambiar el perfil de estabilidad de cualquier señal. Ejecutamos monitoreo continuo y ajustamos automáticamente los pesos de las señales cuando la estabilidad cambia.
Impacto en tracio.ai
Nuestra arquitectura de identificación multinivel V3 refleja directamente este análisis de estabilidad. Las señales de Nivel 1 (hardware) tienen un peso del 60%. Las señales de Nivel 2 (renderizado, fuentes) tienen un peso del 30%. Las señales de Nivel 3 (metadatos del navegador, conexión) tienen un peso del 10%. Esta ponderación garantiza que las señales más estables impulsen la identificación, mientras que las señales volátiles contribuyen a la puntuación de confianza sin causar rupturas de identidad.
El resultado: 99.5% de estabilidad de identificación a lo largo de 50 actualizaciones del navegador, frente al 69% de los sistemas que usan fingerprinting plano basado en hash. La diferencia no es astucia algorítmica: es análisis empírico de señales aplicado a decisiones de arquitectura.