jueves, 7 de febrero de 2008

Direcciones IP, usuarios únicos y pucherazos

Hace unos días una de las encuestas que poníamos en la web de Público proporcionó unos resultados un tanto sorprendentes. Como mi compañero Electoblogger comentaba en su entrada, teníamos la sospecha de que la encuesta estaba falseada.

Obviamente partimos del supuesto de que este tipo de "encuestas web" sólo tienen un valor estimativo y que no son representativas ni válidas desde un punto de vista estadístico.
Personalmente, no fue el resultado de la encuesta lo que me resultó más sospechoso, sino el número de votos: teníamos casi el doble de votos que en otras encuestas, y eso que se publicó en fin de semana, que siempre hay menos lectores.

Como este "blog" está dedicado a cosas técnicas, dejaremos el análisis sociológico y político de estos presuntamente resultados falseados y nos meteremos en lo que nos gusta: la informática.

Cuando se hacen encuestas en una página web se trata de limitar las votaciones repetidas siempre de alguna forma, cumpliéndose la siguiente proporcionalidad en la mayor parte de los casos: a mayor fiabilidad del método de control, mayor incomodidad para el usuario.
En nuestras encuestas lo que más hemos primado ha sido la comodidad para participar, con lo que el control era relativamente fácil de ser eludido.

Direcciones IP


¿Cómo averiguamos que nos estaban haciendo una votación masiva?
Cuando un dispositivo (no sólo un ordenador) se conecta a Internet se le asigna un identificador único (ahora mismo matizo esto) o dirección IP (del inglés Internet Protocol).

Estas direcciones consisten en un número hexadecimal (en base 16) de 32 cifras bits, que se suele representar en notación decimal (base 10) de la forma aaa.bbb.ccc.ddd, donde los distintos números toman un valor de 0 a 254.

Hay algunos conjuntos de direcciones de red que se han establecido para uso interno, esto es, para redes que utilizan el protocolo de Internet pero que no están conectadas a Internet. No debería encontrarse nunca en Internet un equipo con la dirección, por ejemplo, 192.168.1.2 (dirección típica de red interna).

No voy a entrar en más detalles de cómo se asignan estas direcciones ni cómo se reparten, sólo quiero destacar un hecho: las direcciones IP disponibles son limitadas y se están acabando. Para solucionar este problema o al menos mitigarlo se han inventado varias técnicas:

  • Direcciones IP dinámicas:
    Si usted se conecta desde su casa, cada vez que establece una conexión su proveedor de Internet le asigna una dirección IP. Cuando termina la conexión, la dirección IP vuelve a estar libre y puede ser asignada a otro usuario.
    Con este sistema un proveedor de acceso puede reservar, por decir un número, 10.000 direcciones y dar servicio a, por ejemplo, 50.000 usuarios (siempre y cuando no se conecten más de 10.000 usuarios simultáneamente).
    Si usted quiere una dirección IP fija, tiene que encontrar un proveedor que se la "venda" y pagarla, por supuesto.

  • Servidores "proxy":
    Supongamos una oficina en la que todos los equipos están interconectados en una red interna. Si se quiere proporcionar acceso a Internet (páginas web, generalmente) a los equipos de esta red interna se puede añadir un equipo adicional (servidor proxy) que por un lado está conectado a Internet (con una dirección IP) y por el otro está conectado a la red interna (con una dirección IP de las "privadas"). Además tiene instalado un programa que le permite recuperar páginas web y servirlas a otros equipos.
    El resto de equipos solicitarán las páginas web al "proxy" y éste será el que las recupere de Internet.
    Desde Internet, todos los equipos de esta oficina están "saliendo" con la misma dirección IP, la del proxy.

  • NAT (del inglés Network Address Translation o Traducción de Direcciones de Red):
    Es una técnica bastante diferente a la del proxy desde el punto de vista técnico, pero con un resultado "desde el exterior" similar: varios equipos "salen" a Internet con la misma dirección IP.


La consecuencia de todo esto es la siguiente (generalizando mucho): los usuarios finales en Internet tenemos dos perfiles. O somos usuarios "domésticos" con direcciones IP variables (hoy "salgo" con una, mañana con otra) o somos usuarios "corporativos" que compartimos la misma dirección con el resto de equipos de la oficina.

Registro de direcciones


Los servidores web guardan en un registro mucha información, la más típica es qué página nos piden, a qué hora y qué día, el resultado de la petición y la dirección IP que nos solicitó esa página o recurso.
En el caso de nuestra encuesta presuntamente falseada teníamos una dirección IP desde la que se había votado miles de veces lo mismo.
O era la dirección IP de una oficina, empresa, institución o similar con muchísimos usuarios que nos visitaban y votaban lo mismo o era la dirección de un particular que estaba "jugueteando" un rato con nuestra encuesta.

¿Cómo saberlo? Existen herramientas para saber a qué entidad u organización pertenece una determinada dirección IP. En el caso de nuestro "sospechoso" la dirección pertenecía al proveedor de acceso mayoritario en España (Telefónica), y el nombre del equipo era el típico que utilizan los proveedores de Internet para sus clientes "domésticos" con direcciones IP dinámicas.

Por supuesto, esta dirección en otro momento puede pertenecer a cualquier otro cliente, pero los proveedores de acceso están obligados por ley a guardar un registro de qué dirección asignan a cada abonado y en qué intervalo de tiempo el abonado tiene esta dirección. Esta información es confidencial y sólo puede ser accedida por orden judicial.

No es el caso, nuestro "supervotante" no ha cometido delito alguno, sólo ha utilizado muchas veces (miles de veces) un servicio que ofrecíamos saltándose algunas restricciones.

El caso es que a la poca fiabilidad que pueda tener una encuesta de este tipo se le ha unido la incertidumbre de que algún usuario ha votado masivamente. Estamos pensando qué hacer para aumentar la fiabilidad de nuestras encuestas sin complicar mucho el sistema para que siga siendo fácil participar. A ver qué se nos ocurre ...

Conclusión


¿Cree usted que utilizar Internet es un acto anónimo? Ni de lejos.

16 comentarios:

  1. Una tabla con las ip''s que han votado en la correspondiente encuesta y no dejar votar más de una vez a la misma. Opción comunicarle que ya ha votado anteriormente. Opción dejarle que vote pero no tenerlo en cuenta. Por aquello de que las ip''s pueden ser dinámicas y darse la casualidad, concretamos que esa ip no puede votar más de una vez al día. Por ejemplo.

    ResponderEliminar
  2. David Asorey Álvarez7 de febrero de 2008, 15:19

    Juan:No nos vale: si bloqueásemos por IP correríamos el riesgo de bloquear a todos los usuarios de una oficina, por ejemplo, ya que ''salen'' a Intenet con la misma IP.Soluciones tenemos muchas, lo que queremos es que sean lo más cómodas posibles para los lectores.

    ResponderEliminar
  3. Yo lo que te recomiendo es que sólo puedan votar los usuarios registrados, también serían los usuarios registrados los que podrían participar en foros, etc...Lo de las ip´s que plantea Juan evidentemente presenta el problema de que podrías bloquear a cientos de personas con una sola IP que no tienen culpa de nada.

    ResponderEliminar
  4. ¿qué tal no poder repetir IP en, digamos, media hora? Con un mensaje tipo ''vuelva a probar en 23 minutos'', el que tenga interés volverá, no es muy molesto. Y el que quiera falsear la encuesta, sólo puede votar 48 veces al día, que no es tanto.

    ResponderEliminar
  5. Dejad de hacer encuestas (que tampoco son fiables), que la gente entra más para informarse que para jugar, no? Como siempre estamos ahí con el ''a ver quien gana''... Las encuestas kutres para el portal web de MSN...

    ResponderEliminar
  6. Con cookies.Aunque no es perfecto, claro.Cada vez que un visitante vote, guardad una cookie (con unos parametros adecuados, como fecha de caducidad, qué encuesta ha hecho, cosas así).Cada vez que un visitante entre en vuestra web, comprobad si existe la cookie. Si existe no le contáis el voto y listo. Completamente transparente para el usuario.Tiene el problema que hay algunos usuarios que bloquean las cookies. Otros usuarios saben de este sistema, y borran las cookies habitualmente, asi que no es un sistema perfecto.Lo de guardar una tabla de IP no sirve, pq una vez un usuario ha votado y ocurra que libere esa IP, el nuevo usuario que reciba esa IP no podrá votar.

    ResponderEliminar
  7. Y publicar al lado las estadísticas??? Me explico: que al hacer click en una barra de resultados salga la distribución de votos por IP diferente (no las IPs!!! pero si el numero de 1 voto desde una única IP, el número de 2 votos desde una única IP, el num. de 3 votos desde una única IP... etc...).La gente que le interesa el tema de las encuestas ''kutres'' (no es mi caso) estará acostumbrada a un tipo de perfil de distribución y si un día ven algo raro, no le haran mucho caso a la encuesta...Y si ya cada usuario pudiera ver los resultados de la encuesta eliminando los votos de la parte de la distribución que no le interesa, mejor que mejor (quiero decir que cada uno ponga el límite donde quiera para recontar los votos: si yo soy muy desconfiado y no kiero contar los votos a partir de las IPs que hayan votado más de 50 veces que pueda hacerlo, y si otro cree que el límite esta a partir de 100, pues que pueda seleccionar para SU gráfico sólo los votos de las IPs que no hayan votado más d mil veces).No sé si me he explicado con la propuesta, pero ahi la dejo. No creo que consiga aumentar el escaso interes que esas encuestas tienen en si mismas, pero alomejor, la propuesta, si que tiene un lado ''estadísitico'' interesante a ser explotado...Salut!!!POLIKEThttp://2008eleccionesgenerales.blogspot.com/

    ResponderEliminar
  8. ...en ''a partir de 100'', me olvidé un cero ;-)

    ResponderEliminar
  9. David Asorey Álvarez7 de febrero de 2008, 20:07

    Miguel:Actualmente utilizamos las cookies. El problema es que se pueden automatizar las peticiones http y falsear/alterar/borrar las cookies a voluntad del ''supervotante''.De hecho, eso es lo que nos ha pasado ;-)

    ResponderEliminar
  10. Cuando tuve que buscar solución para este mismo problema desarrollé un sistema completamente transparente para el usuario, si te interesa quizás podamos llegar a un acuerdo. Por cierto, las IP''s son de 32 bits (binario), 4 grupos de 8.

    ResponderEliminar
  11. David Asorey Álvarez8 de febrero de 2008, 12:28

    Juan:Gracias por la corrección.

    ResponderEliminar
  12. Las cookies para en control de medición es muy buena, de hecho, es el sistema universal para vender publicidad, o las tablas de Urchin con algunos script cerrados; para el ocultamiento se puede utilizar servicios de Hide IP y estos son efectivos, de hecho, son los que usan los servicios de seguridad, si entrais en astalavista, teneis muy buenos manuales. Verisign es tambien muy efectivo con un servicio previo de seguridad firewall.

    ResponderEliminar
  13. Indicad junto a los resultados de la votación un porcentaje único de media de repetición de la IP, cuanto más alto sea este indicador más posibilidades habrá de votos repetidos y de inexactitud. Siempre habrá IPs repetidas, tanto fijas como dinámicas, pero este valor debería mantenerse en unos límites razonables que se irían ajustando cuantas más encuestas fuerais haciendo.

    ResponderEliminar
  14. Mi comentario lo he escrito sin haber leído antes los comentarios de los demás, así que Poliket ha descrito mi misma idea antes y con mayor detalle y desarrollo.Al César lo que es del César.

    ResponderEliminar
  15. bloquear por mac, unica en cada host (pc). Esa sí és la única solución.Ademas las encuestas que nos dicen??

    ResponderEliminar
  16. Miguel, el truco de borrar las cookies lo enseñaron marca.com y as.com cuando las votaciones del all-star de la NBA, que había que votar a Pau, y parece que la gente se quedó con el cante

    ResponderEliminar