12 abril 2011

Geolocalizando con precisión de cirujano!

Actualmente, y mayormente gracias a los GPSs incorporados en los dispositivos móviles, la geolocalización se encuentra de lo más extendido y natural. Incluso hay redes sociales como Foursquare o el "Yo estuve aquí" de Facebook, que reconozco haber utilizado aprovechando el GPS de mi teléfono móvil, permiten compartir todo el mundo dónde te encuentras en un momento determinado.

A nivel IP, muchas veces hemos hablado sobre las diferentes formas de explotar la rica variedad de funcionalidades y usos que nos puede dar el conocer la localización geográfica de una IP determinada. Desde poder obtener estadísticas en las que aparece una banderita con el país origen o destino; ser capaces de ofrecer un contenido en el idioma adecuado, o proveer publicidad específica para una determinada ciudad o código postal (al menos en USA). Incluso Yago desarrolló su GeoIPS para algo que me parece más que interesante desde el punto de vista de la seguridad: "Si yo vendo flores en España,  ¿en qué me puede beneficiar las visitas desde China?" Evidentemente desde el punto de vista del SEO, puede ser interesante tener enlaces desde muchos sitios y visitas desde diferentes orígenes, pero si lo que me interesa es evitar un gran porcentaje de ataques automatizados, ¿para qué permitir visitas no deseadas?

Existe varias bases de datos (como por ejemplo la de Maxmind) y servicios mejor o peor actualizados, que permiten mediante una API, consultar una IP determinada, dónde se encontraba en el momento que se registró. Aquí se cuentan direcciones IP de utilización dinámica, que muchas veces van cambiando de ciudad en ciudad, no siendo tan tan eficaz, pero que para un uso normal es más que suficiente.

Sin embargo, cuando ya parecía que estaba todo inventado al respecto, me llamó muchísimo la atención un artículo que leí en Newscientist.com en el que se explicaba magnífico trabajo realizado por Yong Wang, un ingeniero informático chino y su equipo de la Universidad de Evanston en Illinois.

La novedad es que ha diseñado un mecanismo para geolocalizar, con un error bastante bajo dentro de márgenes más que aceptables, dónde se encuentra una IP concreta.

Fundamentalmente, Wang se basa en que conoce previamente las coordenadas GPS y dirección física de más de 76000 entidades, entre Universidades y empresas, que cuentan con al menos una dirección IP fija . Así pues, crearon una base de datos con toda esta información (en el artículo denominan a cada entrada en esta base de datos "landmarks" o referencias/marcas terrestres).

Para saber a qué distancia está una IP, se suele acotar en tres fases diferentes:
  1. Se envía una serie de paquetes hacia la IP, y en base a lo que tarda en contestar se transforma en una distancia (más o menos esto vale para acotar a unos 200 kms)
  2. Después se envían paquetes a los servidores referencias de los puntos conocidos de Google Maps (imagino que sólo será a los "más cercanos" a la IP acotada anteriormente) para saber por qué routers pasan. Cuando una IP conocida y la que se pretende geolocalizar atraviesan el mismo router, se compara cuánto tardan en llegar los paquetes desde cada máquina a ese router. Así se va acotando la distancia, hasta poder acercarse a saber dónde está realmente la IP.
  3. Se repite el paso anterior pero sobre un área mucho más pequeña hasta determinar cuál de todos los servidores conocidos está más cerca del destino. Se han llegado a geolocalizar direcciones IP con una precisión de 690 metros!
Ante la evidencia científica yo expongo ciertas dudas:
  • Aunque lo dicen en el artículo, utilizando un proxy puedes evadir el sistema explicado, de manera que si sales a través de un proxy que está en otro país, engañaríamos a la mayoría de los sistemas de geolocalización. Al menos el de Google falla cuando voy a Francia y con el mismo PC en español, salgo a Internet a través de la red de mi empresa o atravesando una VPN hasta mi casa. Qué poco me gusta que Google.com me redirija a Google.fr pudiéndome llevar a Google.es a través de la VPN. Wang indica que son capaces de detectar si una máquina es un proxy o no, y mostrar un resultado nulo en vez de un falso positivo. En mi caso concreto, estoy seguro que daría un falso positivo, esté en mi oficina de París o en el salón de mi casa, puesto que el mecanismo de salida es siempre a través del mismo Squid y a través de una VPN con OpenVPN hasta la misma máquina, ya sea por red cableada en Francia como por red wireless en el salón.
  • Sigo sin tener claro, a no ser por el rigor de la prueba científica claro está, cómo es posible identificar una dirección IP con tanta precisión, en base al tiempo que demoran ciertos paquetes en llegar a un destino, siendo que la latencia dependerá del tráfico de la red, la carga de servidores, routers y balanceadores intermedios, que no siempre es la misma, máxime cuando se está hablando de direcciones IP en cualquier lugar del Mundo. De esta manera, cierto es que aunque una dirección IP sea dinámica, puede geolocalizarse igualmente sin tener que buscar en una base de datos que puede estar desactualizada, sino que la búsqueda se efectúa dinámicamente
  • Si este mecanismo de geolocalización se empezara a utilizar de forma masiva a nivel mundial, los dispositivos con IP fija que se utilizan como referencia, registrarían un incremento de tráfico de red para el que incluso puede que no estén preparados y el mecanismo, precisamente por los cambios en los tiempos de respuesta, dejarían de ser válidos.
  • Estoy completamente de acuerdo con el post de David Rubia de ALT1040 en el que se concluía que la geolocalización es algo que ha llegado a nuestras vidas para quedarse y que no es algo que simplemente pasará de moda llegado unos años dada la utilidad potencial que esto tiene.
  • Si pudiera hacerle una sugerencia al equipo de Wang, añadiría a su algoritmo de búsqueda un paso previo, que es geolocalizarlo según lo registrado en una base de datos, para hacer hincapié en servidores referencia de la zona "cercana" a lo que diga la base de datos. Dado el número de direcciones IP existentes y dado que nadie suele apagar el router en los tiempos que se corre, la probabilidad de que una dirección IP no haya cambiado de usuario, es bastante alta y puede valer como un elemento más a tener en cuenta en la ecuación para la geolocalización  

3 comments :

The VaxMAN dijo...

En hacktimes hablamos también hace unos días de los riesgos y peligros de la geolocalización basándonos en las redes sociales, twitter, facebook, etc.

http://www.hacktimes.com/geolocalizaci_n_descontrolada/

HF DX dijo...

Añadiendo otras dudas, creo que influirá mucho la tecnología de la ultima milla. No sera lo mismo un acceso de cable donde las latencias son bajas (pudiéndose observar mejor las variaciones) y los nodos docsis se suelen corresponden con zonas geográficas pequeñas como barrios de una ciudad, mientras que en ADSL con un proveedor distinto a telefónica/movistar pero usando su bucle seguramente sera mas difícil. Si nos vamos a cosas como 3G o satélite por DVB-RCS se me antoja imposible.

Anonimo33 dijo...

Segun e escuchado en Wolframalpha estan haciendo uso similar de un algoritmo simil al de Wang,personalmente creo que la geolocalizacion es quizas uno de los temores que mas nos acecha a los investigadores y personas que queremos estar anonimos,aunque si es de recalcar que quizas los gobiernos en realidad tienen la capacidad tecnologica (Usa,Canada,Alemania...) para trasear ...puedo estar navegando desde egypto pero estar en Colombia,Argentina y nadie podria garantizarme que ese proxy es de confianza en fin me parece interesante el algoritmo Que desarrolla ! ahora

Pd:Ahora ya tendriamos que tener otra preocupacion mas