Qué es y cómo funciona el Device Fingerprinting

El reto de identificar a un usuario en el contexto online es indudablemente cada vez más complejo. Las iniciativas para proteger nuestra privacidad como usuarios han ido creciendo en los últimos años a través de diversas medidas como los importantes cambios en las políticas de privacidad y protección de datos (GDPR), así como las decisiones de algunos actores clave como Apple y su Internet Tracking Prevention (ITP), del que hablaré en un futuro post y que representa una iniciativa a la que se han sumando otros actores con una menor presencia en el mercado como Firefox por ejemplo.

Las cookies han sido durante muchos años el método fundamental que hemos venido utilizando para intentar identificar a un usuario cuando visita un sitio web así como a lo largo de las distintas visitas a nuestro sitio siempre que la cookie siguiera vigente, algo que hasta el ITP dependía principalmente de la configuración de la propia cookie cuando se instaló en el sistema del usuario.

Aunque el ecosistema publicitario aún confía principalmente en las cookies como mecanismo de identificación no podemos negar que cada vez son un mecánico más pobre y menos digno de confianza para identificar a un usuario. Es por esto que durante los últimos años han surgido otras iniciativas que proponen soluciones alternativas.

Qué es Device Fingerprinting

Peter Eckersley

Peter Eckersley

En enero de 2010 Peter Eckersley publicaba «How Unique is Your Web Browser?», es este estudio Eckersley introducía una nueva técnica, el browser fingerprinting, como una solución alternativa para identificar a los usuarios cuando navegan por Internet.

Básicamente el device fingerprinting es una metodología de identificación que utiliza aspectos técnicos y de configuración, tanto del dispositivo como del navegador del usuario, para crear un perfil que permita identificar al par dispositivo/navegador como único.

A diferencia de las cookies que se almacenan en cliente (en el navegador del usuario) el device fingerprinting normalmente se guardará en un Data Lake en la nube.

Qué Datos se usan para el Device Fingerprinting

Lo primero que debemos saber es que para capturar esta información cuando un usuario visita un sitio web deberemos tener instalado algún sistema de tracking, habitualmente usaremos una pieza de código JavaScript, sin ese elemento no será posible usar esta técnica. Este JavaScript será el encargado de leer los datos que necesita y enviarlos al Data Lake.

El device fingerprinting aporta algunas ventajas respecto de las cookies como, por ejemplo, que no se ve afectado por si el usuario navega en modo privado en su navegador o si borra las cookies periódicamente. Tampoco se ve afectado por las crecientes limitaciones al uso de de las cookies de tercera parte para hacer un seguimiento a través de distintos sites (cross-site tracking).

El perfil del usuario/dispositivo se creará a partir de la combinación de diversos data points, en un navegador web en un ordenador algunos ejemplos serían:

  • La dirección IP a través de la que nos conectamos a internet
  • Las cabeceras (headers) del HTTP Request al servidor
  • El User Agent, una cadena de texto creada por cada navegador (distintos navegadores usan distintos formatos) en la que viajan varios datos sobre la versión y el tipo de navegador desde el que se lanza la petición HTTP (HTTP Request).
  • La configuración de plugins o add-ons que tiene instalado el usuario
  • Datos de la versión de Flash, si es que tenemos el plugin de flash
  • Datos del plugin de Silverlight de Microsoft, es que lo tenemos instalado.
  • Información de la resolución de pantalla, el tamaño del view port, el lenguaje de configuración y el sistema operativo.
  • El listado de las diferentes fuentes tipográficas que tenemos instaladas
  • El timestampuna variable en la que se recoge el momento de la petición HTTP
  • Un listado de los mime-types: son la manera standard de mandar contenido a través de la red. Los tipos MIME especifican tipos de datos, como por ejemplo texto, imagen, audio, etc. que los archivos contienen. MIME adjunta a cada archivo un archivo de cabecera donde se indica el tipo y el subtipo del contenido de los datos del archivo. Gracias a esta información tanto el servidor como el navegador pueden manejar y presentar los archivos correctamente
  • Nivel de batería del dispositivo
  • Información sobre la GPU (Graphics Processing Unit) que proporciona datos sobre la tarjeta gráfica y el procesador de gráficos del ordenador
  • Información del Canvas fingerprint del dispositivo  (más sobre esto un poco más abajo)
  • La zona horaria de configuración (GMT +1 por ejemplo)
  • DNS: Tanto en versión Geo como ISP
  • Etc.

Pero no tenemos que pensar que esta técnica es única para su aplicación a la navegación a través de un browser, también la podemos usar desde un dispositivo móvil. A continuación muestro algunos data points que se pueden usar desde un SDK en iOS como ejemplo:

  • Unique device hash / identifier, un identificador único del dispositivo que tiene un estándar diferente para cada sistema operativo
  • Información de Accesorios
  • Información sobre el Audio
  • CPU information
  • Advertising Identifier (ADID)
  • Device name
  • Device orientation
  • Unique Device Identifier (UDID)
  • iCloud ubiquity token
  • iOS version data
  • Jailbreak status
  • Etc

Puedes acceder a un listado bastante exhaustivo de estos factores en la web de Seon.io

Una manera sencilla de comprobar tu device fingerprint es usar alguno de los servicios que nos proporcionan este servicio como AmIUnique.org. A continuación os muestro un pantallazo de los elementos del fingerprint de mi iMac

 

Si observáis la segunda columna, Similarity Ratio, se trata un porcentaje que representa para cada atributo el % de fingerprints de su base de datos que comparten ese valor en común, es decir, es una métrica de la diversidad del atributo (más sobre esto en el siguiente apartado)

Cómo Funciona el Fingerprinting

Una vez que tenemos información de todos los data points en el data lake necesitamos una manera de relacionar los distintos perfiles de dispositivo/navegador (fingerprints) para intentar construir un perfil único, es decir, ser capaces de establecer que distintas combinaciones de datos recogidas en distintos momentos somos capaces de relacionar con un mismo usuario.

Las combinaciones de data points recogidas en cada fingerprint de un dispositivo cuando visita nuestro sitio web recogerá, como hemos visto, multitud de datos del dispositivo. Pero a la hora de establecer la unicidad de esa combinación no todos los factores aportan la misma cantidad de información. Aquellos factores que generen mayor diversidad, es decir, que presenten mayor número de combinaciones distintas entre los distintos perfiles recogidos, serán mas discriminantes que otros. De hecho el señor Eckersley en su estudio original demostraba que el 86% de los navegadores podían ser identificados por una combinación de tan sólo 8 atributos.

Según panopticlick.eff.org, otra de las fuentes que a las que podéis recurrir para ver datos de vuestro fingerprint, esta es la tabla de algunos de las caracteristicas que recoge desde mi navegador Safari

 

Es muy interesante el estudio que han publicado el año pasado Antoine Vastel y otros investigadores, en el que contemplaron 98.598 fingerprints tomados de 1.905 navegadores distintos tomados de AmIUnique.com como punto de partida para su estudio.

Según este estudio la unicidad de los fingerprints está entre el 80-90%, lo que es un nivel de confianza muy elevando. Sin embargo, uno de los retos del device fingerprinting como metodología de identificación está en la estabilidad del fingerprint a lo largo del tiempo o, dicho de otro modo, cada cuanto tiempo se modifica la configuración de los data points para que ésta pueda ser usada de manera solvente y consistente a lo largo del tiempo.

La estabilidad del atributo será diferente según el atributo y según el comportamiento del usuario. Por ejemplo, supongamos que tenemos un usuario que navega desde su portátil, dispositivo que usa tanto en el trabajo como en su hogar. En el trabajo suele conectar el portátil a una pantalla externa y en su casa ocasionalmente también. Ya tenemos a un mismo dispositivo que en tres contextos distintos (movilidad: en la oficina y en casa) puede devolver 3 resoluciones de pantalla diferentes. Sin embargo, el 50% de los casos del estudio no cambiaron de resolución de pantalla en su fingerprint mostrando que, a pesar de estos factores de variabilidad, la resolución de pantalla resulta ser un factor relativamente estable para la mayoría de los usuarios.

Otro dato, el user agent, es mucho más volátil. A medida que actualizamos nuestra versión del navegador, por ejemplo, el user agent se modificará. Aún así la evolución de la versión de un navegador seguirá un proceso evolutivo del que aún se podría realizar cierta trazabilidad. De hecho, en el modelo desarrollado por Antoine Vastel y sus colaboradores, se buscaba una coincidencia de aproximadamente un 75% en el User Agent para conectar fingerprints con un mismo identificador.

A la hora de comparar dos fingerprints y poder analizar sus diferencias básicamente la metodología que propone es comparar las cadenas de texto (formato principal de la mayoría de los data points) y vectorizar la diferencias. Por ejemplo, en el primer caso de la siguiente imagen podemos ver que para el atributo Encoding hay una coincidencia del 87% en la comparativa de los dos momentos (new vs database)

Adicionalmente se contabilizan el número de cambios que se han identificado en la comparativa en conjunto, en nuestro ejemplo hay 4 cambios entre el fingerprint nuevo y el que había en la base de datos.

El modelo propuesto utiliza una combinación de un sistema de reglas para filtrar y dejar fuera aquellos fingerprints que excedan un cierto nivel de diferenciación. Esta diferenciación toma en consideración tanto el número de cambios como el vector del cambio en campos como el User Agent. Sobre el subconjunto de datos resultante del filtrado se usa Random Forest, una técnica de Machine Learning, para crear las conexiones entre fingerprints e identificadores. El modelo se construye con un conjunto de verificación en el que se tienen datos deterministas de la conexión conocida entre los fingerprints contra el que se contrasta el algoritmo usado para construir las conexiones.

Atributos Relevantes para el Fingerprinting

En los primeros modelos de fingerprinting había dos factores que tenían un peso importante: el uso del plugin de Adobe Flash y otros add-ons instalados en el navegador. Como todos sabemos el uso de Flash ha caído radicalmente en los últimos años. En cuanto a los add-ons la mayoría de los navegadores principales, entre ellos Chrome, Safari y Firefox, han dejado de dar soporte a la arquitectura NPAPI la que usaban plugins como Flash, Silverlight, Java o Unity.

Es importante destacar que, como hemos dicho, los atributos que se pueden capturar en el entorno desktop y en el móvil son distintos, es decir, no podemos usar los mismos atributos en ambos entornos para establecer un identificador. Por ejemplo el número de fuentes instaladas en un móvil no está accesible y el navegador del móvil no admite plugins, dos factores que son muy relevantes en el desktop. Los investigadores descubrieron que habían recogido información de más de 2.400 plugins diferentes en su base de datos y más de 220.000 fuentes distintas.

El mismo estudio revelaba que el User Agent era el factor que más discriminaba a la hora del fingerprinting desde el teléfono móvil. Uno de los motivos está, entre otros factores, en que en el User Agent del móvil somos capaces de acceder a la versión de firmware, lo que nos proporciona mucha mayor diversidad de data points. Según los autores del estudio uno de cada cuatro dispositivos móviles es identificable usando solamente este data point.

Hay un factor que es igual de importante para todos los tipos de dispositivos, el Canvas Fingerprinting, una técnica que fue introducida en 2012 y que fue presentada por primera vez por Keaton Mowery y Hovav Shacham . En esencia la técnica consiste en aprovechar la capacidad del sistema para generar una combinación de texto con algún carácter especial (un emoji) así como un gráfico sencillo a través del WebGL (Web Graphics Library) en un lienzo Canvas. Un lienzo canvas es un elemento HTML incorporado en HTML5 que permite la generación de gráficos mediante código.

Este gif animado muestra una secuencia de 35 casos diferentes en el que se puede ver las sutiles diferencias de la aplicación de este lienzo canvas a los distintos usuarios

 

El Canvas Fingerprinting creará una misma combinación de texto con caracteres especiales, como un emoji por ejemplo, con algún gráfico sencillo para generar una combinación de estos mismos elementos para cada dispositivo. La comparación pixel a pixel de este elemento será una de las huellas que mayor valor aporte a nuestra identificación del usuarios

 

En esta imagen podemos comprobar como los diferentes versiones de un emoji se muestran de manera muy diferente en distintos dispositivos y aplicaciones

Algunas Reflexiones Finales

Es indudable que el mundo online ha pasado de una hegemonía de sistemas operativos y navegadores a la multiplicidad de dispositivos, sistemas operativos y navegadores. Algunos de los principales players del mercado como Apple están ocupando posiciones claras sobre su papel en el control de la privacidad de los usuarios pero es evidente que los intereses de cada una de las partes son muy diferentes. Algunos como Google y Facebook tienen una gran parte de sus ingresos comprometidos en la venta de productos en el ámbito de la publicidad, mientras que otros como Apple lo tienen en la creación de un ecosistema cerrado de soluciones y contenidos donde la publicidad no está presente o al menos no lo está de manera relevante.

El mundo de la publicidad ha tenido una dependencia importante de las cookies de tercera parte como mecanismo para la para la medición a través de distintos dominios (cross-site). En los últimos años el uso de las cookies de tercera parte se ido limitando cada vez más lo que hace que muchos vuelvan la mirada hacia la combinación de metodologías para conseguir mantener la visión del usuario los más única posible. Por ejemplo, Seon.io, propone la utilización del Device Fingerprint como un mecanismo para la reducción del fraude publicitarios.

No obstante los grandes navegadores del mercado han empezado a moverse y tanto chrome anunciaba en mayo medidas (sin concretar) contra el device fingerprinting en futura versiones, Firefox lo hacia previamente asi como el propio Microsoft anunciaba mayores medidas para el control de la privacidad en su Microsoft Edge basado en Chromium. Tendremos que esperar para ver como evoluciona todo este convulso mundo de la medición, la privacidad y los navegadores para ver en que queda esta batalla entre las necesidades del sector del marketing online y la defensa de los intereses de los usuarios.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.