Un par de artículos en The Guardian citan un trabajo de unos investigadores del Inria Privatics en Francia y el KU Leuven / iMinds de Bélgica titulado The leaking battery: A privacy analysis of the HTML5 Battery Status API [PDF].
Resumido en pocas palabras y sin entrar en muchos tecnicismos esto funcionaría así: existe una forma en la que una página web de cualquier servidor puede consultar al navegador web del usuario el estado de la batería del equipo sobre el que está funcionando. Esto comenzó a plantearse en 2012 como una forma de ahorrar energía a los usuarios móviles: si la página detectaba que quedaba poca batería podría eliminar ciertas «características de alto consumo» (como animaciones, vídeo, etcétera) mejorando así la experiencia en general. Ya en 2015 esto estaba implementado tanto en Firefox como Chrome y Opera.
Resulta que entre los datos que puede obtener la página está el «nivel de batería» como un número de coma flotante con dos decimales de precisión aunque originalmente es más preciso (hasta 16 decimales). Utilizando diversas fórmulas se puede calcular el porcentaje a mostrar (ej. 98%) pero también en ocasiones (ejemplo: Firefox para Linux) la capacidad total de la batería. Un valor más o menos estándar entre aparatos iguales pero que también varía de uno a otro con el uso (las baterías más viejas se pueden recargar menos). Obteniendo varias lecturas se pueden llegar a calcular los diversos valores, derivando de ellos el tiempo en segundos que tardará en descargarse totalmente, etcétera.
Haciendo algunas cabriolas con todos esos valores (especialmente si se tiene acceso al de mayor precisión) se puede obtener un número de identificación único entre 14 millones, más o menos. Hace años sucedió algo similar con las técnicas de fingerprinting (extraer una «huella dactilar única») de los navegadores, algo que se puede hacer revisando la combinación de datos: sistema operativo, tamaño de pantalla, navegador, plug-ins, tipografías instaladas… El resumen es que básicamente es muy difícil «no ser» un navegador único en el mundo para tener mantener cierto anonimato.
Como esos valores de la batería solo se actualizan una vez cada 30 segundos eso permite «rastrear» al usuario desde una web a otra si se tiene acceso a ese identificador. Una forma típica es utilizar redes publicitarias: un poco puñado de empresas atesoran muchas de esas redes y pueden conseguir ese conocido efecto de «¡esa publicidad me está persiguiendo!» llamado en el argot retargeting.
En otras palabras: si el usuario visita un contenido con el «modo privacidad» activado, o a través de una red privada virtual, pero en los siguientes 30 segundos llega a otra página con el modo privacidad desactivado, se podría usar ese identificador único para concluir que es la misma persona. Adiós privacidad.
La solución al problema no es complicada y puede pasar por obligar dar permiso al navegador para leer la batería o –más fácil todavía– hacer que los navegadores proporcionen los valores de carga con menor precisión.
Más info en The Guardian:
- Your battery status is being used to track you online
- How your smartphone's battery life can be used to invade your privacy
{Imagen (cc0) michaljamro @ Pixabay}