Tomar la dirección IP de un
cliente para tratar de
individualizarlo es un método muy usado por la
mayoría de los programas de Internet. Este método (que
funcionó muy bien durante varios años), en el escenario
actual de Internet ya no funciona, dando lugar a grandes
confusiones. Este arículo describe detalladamente las
razones de este cambio de escenario, y
presenta las soluciones que pueden adoptar
los programadores y webmasters para recobrar la exactitud
perdida.
Uno de los fundamentos técnicos de Internet
consiste en que cada dispositivo u ordenador que se conecta a la
red de redes debe poseer una única
dirección IP (Internet Protocol) que lo
identifique.
Basados en esta afirmación, muchos programas en la
web intentan identificar a sus
visitantes usando la IP que éstos muestran en sus cabeceras
de petición HTTP (lo que el explorador
envía al servidor para indicarle: "quiero
ver tal página"):
Muchos sistemas de encuestas (polls) no dejan
votar más de una vez al día a una determinada IP, para
evitar que un usuario pueda manipular los resultados votando
muchas veces.
Muchos sistemas de estadísticas se basan en
la IP del usuario para determinar si las visitas que recibe un
sitio provienen de diferentes clientes, y cuántas visitas
repetidas nos generan algunos clientes en particular.
Muchos sistemas de estadísticas usan nuestra propia
IP para evitar contabilizar nuestros propios accesos a nuestro
sitio web, y de esta forma mostrarnos sólo la actividad de
los clientes reales.
Muchos sistemas de intercambio de tráfico (tops,
CJs, ad-Servers y rotadores de banners) leen la IP del cliente
para determinar si una visita es "unica" o "raw": es decir, si se
trata de un cliente que nos visita por primera vez en el
día, o si es un "click" repetido, ya sea de alguien que
está entrando de nuevo a un link que ya visitó, o
está recargando la página, o retrocediendo en el
historial del navegador.
Todos estos "controles" basados en la IP del cliente
están asumiendo ingenuamente que cada PC conectada a
Internet tiene una IP única que lo identifica, tal como
decían los libros hace unos pocos
años.
Pero esto ya no es así, desde que Internet
comenzó su expansión masiva y las direcciones IP
comenzaron a escasear. Hoy nos encontramos con un escenario algo
cambiado: es posible encontrar cientos, e incluso miles de PCs
que comparten una misma IP.
Pero el software que no se ha adaptado a estos
cambios seguirá considerando que todo ese enorme conjunto de
máquinas es un solo
cliente, aunque en realidad se trate de todo un pueblo o una
pequeña ciudad…
Entonces el mecanismo de encuestas dejará votar a
una sola persona de esa ciudad (al primero
que se levante a votar ese día). Los demás vecinos no
podrán votar en el sistema de encuesta, que les dará el
mensaje: "usted ya ha votado hoy".
Los sistemas de estadísticas nos estarán
marcando que tenemos una menor cantidad de visitantes
individuales, pero a su vez nos indicará que los mismos
mantienen una intensa actividad dentro de nuestro sitio
web.
Si compartimos nuestra IP con otros vecinos, y
configuramos nuestro sistema de estadísticas para que no
registre nuestra propia actividad, entonces tampoco estará
registrando las visitas provenientes de los demás usuarios
con que compartimos nuestra IP. Y éstos pueden ser decenas,
cientos, o miles.
Los sistemas de intercambio de tráfico estarán
considerando que las visitas de un número creciente de
personas son "raw", o repetidas. Y en algunos casos puede
penalizarse un intercambio (y bajar su posición en el top o
en las listas de enlaces) si se reciben muchas visitas desde las
mismas ciudades o pueblos (o al menos desde clientes que se
conecten mediante un mismo proveedor de Internet).
Cómo y por qué se
comparten las IP
Cuando hace 10 años yo era consultor de una empresa que contrató un
enlace permanente a Internet de 64 Kbps, el proveedor de Internet
nos asignó un bloque de 32 direcciones IP. "Una
dirección IP por cada 2 Kbps" era la norma
prácticamente en todo el mundo. En esa empresa había unos 25
puestos de trabajo para conectarse a
Internet. De forma que asigné una IP para cada
máquina.
El año pasado asesoré a otra empresa para
conectar sus sistemas a Internet. Se contrató una línea
de 2 Mbps, y el proveedor nos asignó 2 direcciones IP (una
IP por cada 1 Mbps) 500 veces menos que hace 10 años! (en
aquel entonces nos hubiesen asignado 1024 direcciones IP). Esto
es porque los anchos de banda (las velocidades de
transmisión de datos) han aumentado, pero el
número de posibles direcciones IP sigue siendo exactamente
el mismo desde que se inventó Internet.
Los investigadores han diseñado un nuevo protocolo llamado IPv6 (IP
versión 6, a diferencia del que está actualmente en uso
que es IP versión 4). Pero el IPv6 aún está lejos
de ser usado mundialmente, a pesar de que los sistemas operativos avanzados
(como Linux) ya lo traen desde hace
tiempo. Cuando el IPv6
esté en uso mundialmente, ya no existirán las
situaciones problemáticas a que hago referencia en este
artículo.
Pero por el momento, los proveedores de acceso a la red
están usando soluciones que posibilitan el acceso a mucha
más gente al Intenet, pero por otro lado complican al
webmaster y al administrador de servidores en la tarea de
identificar a los clientes que acceden a los sitios
web.
NAT: la técnica más
usada para compartir una IP
El NAT (Network Address Translation) permite que muchos
clientes usen una misma IP, y funciona de la siguiente forma: La
red de clientes tiene en cada una de las computadoras una IP interna
que no es válida en Internet (a estas IP se les llama
direcciones de red privada, y son 192.168.x.x para la clase C; 172.16.x.x para la
clase B, y 10.x.x.x para la clase A). Todas las máquinas de
la red privada están configuradas para usar como puerta de
enlace (o gateway) a una máquina o router que sí tiene su
propia IP real.
Este dispositivo de enlace tiene entonces 2 direcciones
IP: una interna, que es la que ven el resto de las máquinas
cliente (y que a la vez la usan como puerta de enlace), y una IP
externa real, que es la que se ve desde Internet. Cuando una
máquina de la red interna quiere acceder a un sitio en
Internet, entonces hace la solicitud a su puerta de enlace. Y la
puerta de enlace (el router NAT) repite la solicitud desde su
conexión a Internet, como si la estuviese generando él
mismo. Cuando el NAT recibe la respuesta desde el sitio de
Internet, la copia a la red interna, enviándola a la
máquina que generó la petición inicialmente. Es
entonces un "intermediario" para toda la actividad de sus
clientes. Un router NAT, visto desde Internet, parece ser una
máquina normal, pero con una actividad muy
intensa.
El NAT no es la única técnica de acceso a
Internet que invalida el viejo concepto de "1 cliente
<–> 1 IP" que muchos programas pretenden usar como
mecanismo de control. También existen
proxys anónimos, IPs dinámicas, etc. Pero a efectos de
este artículo, trataremos el NAT como principal problema,
sabiendo que las soluciones son las mismas para los diferentes
escenarios técnicos.
La reivindicación de las cookies: las cookies son
parte del protocolo HTTP. Son un pequeño puñado de
datos que el servidor es capaz de almacenar en la PC del cliente:
un número de usuario o de sesión, preferencias de
idioma, etc. Su uso es muy seguro tanto para el cliente como
para el servidor. Pero el problema es que el usuario tiene la
posibilidad de borrar las cookies de su PC (o directamente puede
configurar su navegador para que no las acepte). Pero en más
de un 95% de los clientes, las cookies harán su trabajo
maravillosamente bien.
La "huella" de la PC: es el método más nuevo y
el menos conocido y usado, pero también el más exacto.
Consiste en obtener un sumario de las características de la
máquina del cliente que establece una conexión. A su IP
se suma el tamaño de su pantalla, la profundidad de color de su tarjeta de video, la versión
del sistema operativo, el modelo y versión del
explorador, si tiene instalado flash, quicktime, shockwave, Real
Player, etc, etc. Leyendo la "huella" de los usuarios, aunque los
veamos conectarse desde una misma IP, sabremos por sus
características que se trata de máquinas diferentes, y
es posible identificarlas con gran precisión.
Aún si todas las máquinas fueran iguales
(dentro de una empresa, por ejemplo), pronto los usuarios les
instalan plugins de software que modifican la huella de cada
máquina. El sólo hecho de modificar el tamaño de
pantalla modifica la huella también: de modo que en pocas
horas, en un parque de máquinas exactamente iguales y que
comparten una IP, se estaría en condiciones de
individualizar la actividad que provenga de cada
máquina.
En el estado actual de la
tecnología, la
combinación de cookies y "huella" del computador nos da una
visión razonablemente precisa sobre la actividad de nuestros
visitantes en los sitios web. Y la identificación de
usuarios por su IP ya debería ser descartada por su
inexactitud (que va en aumento).
Ing. Eduardo González González
(*)
(*) Consultor en Sistemas de Seguridad