lunes, 27 de diciembre de 2010

Perfilar usuarios web y romper su anonimato

La creación de Internet mejoró el anonimato que se puede tener en la vida diaria, como muy bien ilustró una clásica viñeta de Peter Steiner:


Pero la tecnología avanza, y por un lado los autores de las páginas web y las autoridades investigan maneras de encontrar los rastros de la navegación y por otro lado se han creado herramientas anonimizadoras como Tor, JAP (mencionada porque sus autores vienen al congreso al ser alemanes) y otras que yo no conocía como PHProxy o Glype (que sirven para filtrar el javascript de las páginas que se cargan para evitar que deje huellas).

En la charla de Dominik Herrman y lexi sobre "Usar anominmizadores y ser pillado de todos modos", analizan varios aspectos de cómo estas herramientas de anonimización no protegen totalemente a los usuarios:
  • Por un lado, los anonimizadores de Javascript tienen múltiples limitaciones que todavía podrían permitir identificar al usuario: el usuario sigue enviando múltiples cabeceras al servidor web e incluso permite el acceso del javascript a ciertas características del ordenador y el navegador que conjuntamente pueden identificar únicamente al usuario (el tamaño de su pantalla, el navegador, el reloj y su comportamiento de desviación, etc.). Pero no sólo: desde Javascript se pueden cargar applets de Java y al revés, las applets Java pueden ejecutar código Javascript localmente.
  • En otro estudio han mostrado cómo aunque un bot que se baja páginas cambie su atributo "User Agent" para intentar parecer un usuario normal, el conjunto del resto de las cabeceras siguen permitiendo diferenciarlo de un usuario normal.
  • Por otro lado, únicamente utilizando los hostnames (tal y como se podrían obtener los datos de Google DNS u Open DNS), se hizo un experimento con 28 usuarios voluntarios, en el que se entrenó a un reconocedor en los patrones de navegación (qué sitios se visitan y en qué orden y durante cuánto tiempo), y luego se aplicó durante 57 días de datos de navegación. ¿Resultado? En el 77% de los casos se podía identificar de qué usuario era una determinada sesión correctamente. Y esto se mantiene incluso si las sesiones son de corta duración (como los 10 minutos que tarda Tor en cambiar de dirección).
  • Una de las partes que más me ha hecho pensar es cuando han empezado a analizar el tráfico cifrado de varias herramientas de anonimización (Tor, JAP y otros proxy de un sólo salto), que es capturado en la red local del usuario (como por ejemplo seguro que estará ocurriendo con mi tráfico aquí en el BCC). Pues resulta que si se dan un par de condiciones (se conoce el SO y el navegador del usuario), y el usuario sólo está descargando una página por vez, resulta que se puede identificar qué sitios web está visitando el usuario. ¿Cómo se hace? Se navega con un ordenador conocido a los 775 sitios de internet más populares, se miden los tamaños de los paquetes en 20 descargas cada uno y se pasan por un par de herramientas de inferencia (llamadas Bayes ingenuo multinomial y Máquinas vectoriales de soporte... no, no han llegado a explicar en detalle). ¿Resultado? Todos los proxys de un nivel se identifican con una probabilidad del 95%, JAP del 20% y Tor sólo un 3%. ¿Podríamos pensar que estamos seguros? Pues no del todo, porque otro investigador, mejoró el procedimiento y ya conseguía un 50% de aciertos en Tor y un 60% de aciertos en JAP
  • Por último, aplicaron el mismo algoritmo a un problema similar pero diferente: dado un conjunto reducido de servidores (con contenidos prohibidos por algunas religiones, por ejemplo, y no estamos hablando precisamente de jamón), intentar identificar si un usuario los está visitando. ¿Resultado? Pues para poder identificar con una tasa de falsos positivos inferior al 1% es necesario únicamente obtener muestras de sólo unos dos mil sitios extra. Claro que todavía la tasa de identificación positiva es relativamente baja (un 67%).
Pero se despiden dándonos un consejo para evitar todos estos algoritmos: hacer dos cosas a la vez. Si en estos algoritmos mezclamos dos tráficos diferentes por la misma conexión, los algoritmos siguen sin poder hacer nada... Basta con un reproductor de radio por Internet, por ejemplo.

No hay comentarios:

Publicar un comentario