lunes, 9 de junio de 2008

CAPTCHAS

... según Wikipedia, la enciclopedia libre.


Prueba de Turing

Se llama Prueba o Test de Turing al procedimiento desarrollado por Alan Turing para corroborar la existencia de inteligencia en una máquina. Fue expuesto en 1950 en un artículo (Computing machinery and intelligence) para la revista Mind, y sigue siendo uno de los mejores métodos para los defensores de la Inteligencia Artificial. Se fundamenta en la hipótesis positivista de que, si una máquina se comporta en todos los aspectos como inteligente, entonces debe ser inteligente.

La prueba consiste en un desafío. Se supone un juez situado en una habitación, y una máquina y un ser humano en otras. El juez debe descubrir cuál es el ser humano y cuál es la máquina, estándoles a los dos permitidos mentir al contestar por escrito las preguntas que el juez les hiciera. La tesis de Turing es que si ambos jugadores eran suficientemente hábiles, el juez no podría distinguir quién era el ser humano y quién la máquina. El límite temporal que Turing puso para que una máquina consiga superar el test engañando durante bastante tiempo a un buen interrogador, y no dejándole aclarar si se está dirigiendo a un ser humano o a una máquina. Todavía ninguna máquina puede pasar este examen en una experiencia con método científico.

El Premio Loebner es una competición de carácter anual que concede premios a un programa de ordenador que esté considerado por el jurado que lo compone, como el más inteligente de los que se han presentado. El formato de la competición sigue el estándar establecido en el test de Turing. Un juez humano se enfrenta a dos pantallas de ordenador, una de ellas que se encuentra bajo el control de un ordenador, y la otra bajo el control de un humano. El juez plantea preguntas a las dos pantallas y recibe respuestas. En base a las respuestas, el juez debe decidir qué pantalla es la controlada por el ser humano y cual es la controlada por el programa de ordenador.

En 1990 se inició un concurso, el Premio Loebner, una competición de carácter anual entre programas de ordenador que sigue el estándar establecido en la prueba de Turing. Un juez humano se enfrenta a dos pantallas de ordenador, una de ellas que se encuentra bajo el control de un ordenador, y la otra bajo el control de un humano. El juez plantea preguntas a las dos pantallas y recibe respuestas. El premio está dotado con 100,000 dólares USA para el programa que pase el test, y un premio de consolación para el mejor programa anual. Todavía no ha sido otorgado el premio principal.

Una de las aplicaciones de la prueba de Turing es el control de spam. Dado el gran volumen de correos electrónicos enviados, el spam es, por lo general, enviado automáticamente por una máquina. Así la prueba de Turing puede usarse para distinguir si el correo electrónico era enviado por un remitente humano o por una máquina (por ejemplo por la prueba Captcha).


Captcha

Captcha es el acrónimo de Completely Automated Public Turing test to tell Computers and Humans Apart (Prueba de Turing pública y automática para diferenciar a máquinas y humanos).
Este es un típico test para la secuencia "smwm" que dificulta el reconocimiento de la máquina rotando las letras y añadiendo un gradiente de fondoSe trata de una prueba desafío-respuesta utilizada en computación para determinar cuándo el usuario es o no humano. El término se empezó a utilizar en el año 2000 por Luis von Ahn, Manuel Blum y Nicholas J. Hopper de la Carnegie Mellon University, y John Langford de IBM.

La típica prueba consiste en que el usuario introduzca un conjunto de caracteres que se muestran en una imagen distorsionada que aparece en pantalla. Se supone que una máquina no es capaz de comprender e introducir la secuencia de forma correcta por lo que solamente el humano podría hacerlo.

Como el test es controlado por una máquina en lugar de un humano como en la Prueba de Turing, también se denomina Prueba de Turing Inversa.


Aplicaciones

Los Captchas son utilizados para evitar que robots, también llamados spambots, puedan utilizar ciertos servicios. Por ejemplo, para que no puedan participar en encuestas, registrarse para usar cuentas de correo electrónico (o su uso para envío de correo basura) o, más recientemente, para evitar que correo basura pueda ser enviado por un robot (el remitente debe pasar el test antes de que se entregue al destinatario).


Características

El sistema captcha tiene las siguientes características por definición:

Son completamente automatizados, es decir, no es necesario ningún tipo de mantenimiento / intervención humana para su realización. Esto supone grandes beneficios en cuanto a fiabilidad y coste.
El algoritmo utilizado es público. De esta forma la ruptura de un captcha pasa a ser un problema de inteligencia artificial y no la ruptura de un algoritmo secreto.


Problemática


Accesibilidad para discapacitados

Cualquier problema de difícil solución del campo de la inteligencia artificial puede ser utilizado como, por ejemplo, reconocimiento de caracteres/imágenes o reconocimiento de voz. Sin embargo, estas soluciones impiden a personas con deficiencias visuales o auditivas acceder a los recursos protegidos. Además, debido a su naturaleza y misión, los asistentes para discapacitados (como los lectores de pantalla) no pueden interpretarlos, quedando bloqueado el acceso al recurso.

En algunos sitios se permite elegir entre la validación visual o sonora. En la actualidad, el desarrollo de captchas basados en sonidos está muy por detrás de los visuales y no son tan eficientes.

Un artículo del W3C (Inaccessibility of Visually-Oriented Anti-Robot Tests, en inglés) describe algunos de los problemas de accesibilidad que introducen los captchas.


Debilidades

Hay algunas aproximaciones a cómo se puede romper CAPTCHA: usando humanos como mano de obra barata o involuntaria para reconocerlos, explotando bugs o error de software en la implementación que permitan a un atacante saltarse el reconocimiento, y finalmente mejorando el software de reconocimiento de caracteres. Como por ejemplo: ingresar a la maquina que contiene base de datos del problema (captcha) y enviarlos para poder posteriormente ingresarlo.

Humanos como mano de obra barata o involuntaria

Es posible subvertir los CAPTCHAs usando humanos explotados como mano de obra barata para decodificar CAPTCHAs. Un documento de la organización W3C afirma que un operador "puede fácilmente verificar cientos de ellos cada hora". Por otro lado, hay quien afirma que esto no es económicamente viable.

Otra técnica usada consite en usar un script que muestre un CAPTCHA de un sitio atacado como un CAPTCHA en un sitio que pertenezca al atacante, en el que humanos desprevenidos visitan y correctamente resuelven estos CAPTCHAs.


Implementaciones inseguras

Howard Yeend ha identificado algunos problemas de implementación con CAPTCHAs pobremente diseñados:

Algunos sistemas de protección CAPTCHA pueden sortearse sin usar un sistema de reconocimiento óptico de caracteres (OCR) simplemente reutilizando el ID de sesión de una imagen conocida.

Los CAPTCHAs que están alojados en servidores compartidos también presentan un problema: una incidencia de seguridad en otro alojamiento virtual, podría dejar el sistema CAPTCHA vulnerable.

Algunas veces, si parte del software de generación del CAPTCHA se realiza en el lado del cliente (la validación se hace en el servidor, pero el texto que el usuario tiene que identificar es renderizado en el lado del cliente), los usuarios pueden modificar el cliente para que muestre el texto sin renderizar. Algunos sistemas usan hashes MD5 almacenados en el lado del servidor, que a menudo pueden ser crackeados.


Reconocimiento de caracteres por ordenador

Aunque los CAPTCHAs han sido originalmente diseñados para impedir que el software OCR reconozca los caracteres de las imágenes generadas, existen proyectos de investigación que han probado que es posible saltarse muchos CAPTCHAs con programas que han sido específicamente diseñados para un tipo determinado de CAPTCHA. Para CAPTCHAs con letras distorsionadas, la aproximación típica es seguir los siguientes pasos:

Eliminación del ruido de fondo, por ejemplo con filtros de color y detecciones de líneas finas.

Segmentación, por ejemplo partiendo la imagen en segmentos que contienen una sola letra.

Identificar la letra de cada segmento, y así utilizar la información extraída de la imágen.

El paso 1 es típicamente muy fácil de automatizar. En 2005, se mostró que un algoritmo de una red neuronal tiene un menor margen de error que los humanos resolviendo el paso 3.

La única parte dónde los humanos superan a las máquinas es en el paso 2. Si el ruido de fondo consiste en formas similares a letras, y las letras están unidas a este ruido, la segmentación se hace casi imposible con el software actual. Por lo tanto, un CAPTCHA efectivo debería enfocarse en el paso 2, la segmentación.

No hay comentarios.: