| Artículos | 01 DIC 2010

Técnicas antiautomatización

Tags: Histórico
A la caza de robots en Internet
Gonzalo Alvarez.
El famoso protohistoriador griego Heródoto (485-425 AC) nos cuenta en sus Historias las intrigas de Histiaeo, quien deseaba instar a sus amigos a una revolución contra medos y persas. Afeitó la cabeza de su esclavo de mayor confianza, tatuó el mensaje sobre el cuero cabelludo y, tras esperar a que le volviera a crecer el pelo, lo envió a sus amigos. El mensajero llegó a su destino en Persia, se le rapó de nuevo la cabeza y la revuelta triunfó. Evidentemente, las cosas transcurrían a un ritmo más despacio en aquella época.
En la película de culto Blade Runner del director Ridley Scott, el protagonista Rick Deckard interpretado por Harrison Ford debe localizar y eliminar a los replicantes, seres “más humanos que los humanos”, creados artificialmente para realizar trabajos pesados en las colonias espaciales. Estos replicantes son físicamente indistinguibles de los seres humanos, por lo que para determinar si el sujeto es un humano o un replicante se utiliza la prueba Voight-Kampff, basada en un interrogatorio capaz de detectar sutiles diferencias psicológicas entre ambos seres, como por ejemplo la implantación artificial de recuerdos en los segundos.
Internet confronta diariamente a los servidores web con un problema de identificación similar: resulta muy difícil saber quién se encuentra al otro lado. ¿Cómo averiguar si el visitante de un sitio web es un programa o un humano? Los mecanismos de autenticación tradicionales como las contraseñas resultan a todas luces insuficientes, ya que cualquier robot puede utilizarlas. En los últimos años, la mayoría de los sitios web están implantando medidas de seguridad orientadas a detectar si el visitante es humano o máquina. En este artículo se repasan los últimos adelantos en las técnicas para combatir esta automatización.

La amenaza de los robots
¿Por qué es tan importante distinguir a los humanos de los robots en Internet? Por motivos económicos. Existen multitud de tareas pensadas para ser realizadas por un humano, pero que podrían automatizarse fácilmente con gran perjuicio para los sitios web afectados. Entre las tareas que potencialmente mayores pérdidas puedan causar a los servidores web si son llevadas a cabo por programas informáticos pueden incluirse las siguientes: el registro de nuevas cuentas de correo electrónico, que podrían ser utilizadas para el envío masivo de mensajes de spam, phishing, timos…; la votación en encuestas de opinión o para la elección de mejores productos, mejores webs, o similares, ya que un robot podría sesgar completamente los resultados; el inicio de sesión en un sitio web que solicita credenciales de acceso, ya que podrían realizarse ataques de fuerza bruta en los que un programa va probando secuencialmente todas las posibles combinaciones de letras para formar contraseñas; la introducción de comentarios en foros, blogs, tiendas de productos y sitios similares, ya que podrían utilizarse estos campos de comentarios para colocar mensajes de spam con anuncios y propaganda indeseables; ciertas operaciones en redes sociales, como añadir contactos o amigos, que podrían ser abusadas por un robot para aumentar desproporcionadamente su círculo social; extraer información de forma masiva, ya sea en la consulta del censo, entradas a eventos, resultados de exámenes o bases de datos similares o en la descarga de artículos, fotografías o cualquier otro producto digital pensados para ser adquiridos de unidad en unidad; participar en multitud de juegos multijugador, de azar o de arcade, en los que otros jugadores podrían estar en franca desventaja si compitieran con jugadores artificiales; y un largo etcétera.
En definitiva, existen multitud de situaciones como las descritas y otras muchas que pueden presentarse en sistemas concretos, en las que se busca parar los pies a los robots. La cuestión es: ¿cómo puede un servidor web distinguir de forma automatizada sin supervisión a un humano de un programa? ¿Cómo puede un programa reconocer a otro programa?

El test de Turing
Al igual que la famosa prueba Voight-Kampff de la película Blade Runner servía para distinguir humanos de replicantes, los servidores web necesitan plantear una prueba que permita discernir si el visitante es un humano o un programa. En el contexto de la inteligencia artificial (IA) se utiliza el test de Turing, llamado así en honor de su creador, el matemático y criptólogo británico Alan Turing, para probar si una máquina es inteligente. Este test parte de la hipótesis de que si una máquina se comporta de forma inteligente, entonces debe ser inteligente. Básicamente la prueba consiste en un interrogatorio en el cual un sujeto hace preguntas vía chat a un hombre y a una máquina sin el conocimiento a priori de quién es quién. Si transcurrido un tiempo razonable, el sujeto es incapaz de determinar cuál de las otras partes de la comunicación es humana o máquina, entonces se considera que la máquina ha superado el test de Turing y, por consiguiente, es inteligente.
Ahora bien, ¿cómo puede aplicarse en la práctica un test como el de Turing al caso de discernir el tipo de visitantes a un sitio web? Se trata de plantear un reto que requiera para su resolución una inteligencia fuera del alcance de los programas actuales. En definitiva, se trata de desafiar a los últimos avances en IA.
Ya sólo faltaría encontrar tareas sencillas de resolver para un humano pero imposibles para un programa informático. Las soluciones exploradas consisten en desafíos como reconocer figuras, sonidos o interpretar correctamente determinadas preguntas. La manera genérica como se ha dado en llamar a estas pruebas es CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart): Prueba de Turing pública y automática para diferenciar máquinas y humanos, en referencia al proyecto CAPTCHA de la Universidad Carnegie Mellon (CMU), pionera en este campo.

Características deseables en un buen CAPTCHA
Los profesores M. Blum, L. A. von Ahn y J. Langford de la Universidad Carnegie Mellon (CMU) describieron algunas de las propiedades deseables en los CAPTCHA:

1) tanto la generación de los retos como la evaluación de la calidad de las respuestas deben poder automatizarse.
2) los usuarios humanos deben poder resolver el reto muy rápidamente.
3) la prueba aceptará a prácticamente todos los usuarios humanos con elevada fiabilidad.
4) la prueba rechazará a un número muy bajo de usuarios humanos, lo que se conoce como baja tasa de falsos negativos o “insultos”.
5) la prueba rechazará a un número muy elevado de robots, lo que se conoce como baja tasa de falsos positivos o “fraudes”.
6) la prueba resistirá ataques automáticos por muchos años, a pesar de los avances de la tecnología. Además, resulta siempre muy recomendable que los detalles de los CAPTCHA sean públicos para facilitar su escrutinio y obtener así mayores garantías sobre su seguridad. Aquí, como en la criptografía, debe huirse de la seguridad a través de la obscuridad.

Siguiendo estas especificaciones, los investigadores de la CMU desarrollaron un CAPTCHA consistente en varias palabras en inglés elegidas al azar y mostradas como imágenes muy distorsionadas. Los usuarios debían reconocer e introducir un número mínimo de esas palabras correctamente. A continuación se

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información