Captcha

smwm
Prueba CAPTCHA para la secuencia «smwm» que dificulta el reconocimiento OCR por parte de los bots, distorsionando las letras y añadiendo un degradado de fondo

Un CAPTCHA (siglas en inglés de Completely Automated Public Turing test to Tell Computers and Humans Apart, en español: «prueba de Turing completamente automática y pública para diferenciar ordenadores de humanos») es un sistema de desafío-respuesta utilizado en informática para determinar si el usuario es una persona o un bot (programa automático).

Estos sistemas se implementan automáticamente en servidores o aplicaciones web sin necesidad de intervención humana directa en cada prueba. Su funcionamiento se basa en tareas que resultan sencillas para los humanos pero difíciles de resolver para los algoritmos informáticos, como identificar letras distorsionadas, seleccionar imágenes específicas o resolver pequeños problemas lógicos.

Es similar a un test de Turing con la diferencia de que son jueces humanos. Por ello, a los captchas a veces se les llama Test de Turing inverso o prueba de Turing inversa;esta denominación es un tanto ambigua, ya que eventualmente puede significar que los participantes o usuarios tratan de convencer a alguien (humano o autómata) de que ellos no son humanos.

Lo ideal es que el algoritmo utilizado sea público. De esta forma la ruptura de un captcha requiere la solución a un problema difícil, en lugar de solo el descubrimiento del algoritmo (secreto) que podría obtenerse mediante ingeniería inversa u otros medios.

Motivación

En Internet se ofrecen varios servicios de forma gratuita con la esperanza de que los ingresos publicitarios o la venta de los datos de los usuarios generen ganancias.

La suposición clave detrás de los modelos de negocio empleados por estos sitios es que los ojos humanos están viendo esos anuncios. Sin embargo estos servicios los pueden usar programas automáticos para obtener dinero. Por ejemplo, las cuentas de correo electrónico se pueden usar para enviar correo no deseado o se pueden usar servicios de redes sociales o servicios que permiten publicar contenidos para servidores de comando y control para una botnet.

Los CAPTCHA se desarrollaron como un medio para limitar la capacidad de los atacantes de escalar sus actividades utilizando medios automáticos.

Historia

El término se empezó a utilizar en el año 2000 por el guatemalteco Luis von Ahn, así como por Manuel Blum y Nicholas J. Hopper de la Universidad Carnegie Mellon, junto a John Langford de IBM.

Inicialmente los captcha consistían en que el usuario introducía correctamente 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.

Poco a poco, los programas han ido aprendiendo a resolver este tipo de problemas. Esto ha obligado al CAPTCHA a evolucionar dando lugar a distintos tipos de CAPTCHAs.

Tipos

Las propiedades principales que tiene que cumplir un CAPTCHA son:

Se han desarrollado varias técnicas diferentes para generar CAPTCHA, cada una de las cuales satisface las propiedades descritas anteriormente e diferentes grados. Los más habituales son:

Aplicaciones

Los captchas son utilizados para intentar evitar que programas automatizados, puedan utilizar ciertos servicios. Por ejemplo, para que no puedan participar en encuestas o foros de discusión, registrarse para usar cuentas de correo electrónico o enviar correo basura (para enviar un correo se obligaal usuario a pasael test hum).

Servicios de resolución de CAPTCHA

Para paliar la funcionalidad de los CAPCHAs se han creado servicios de resolución de CAPTCHA de pago. Dichos servicios son de dos tipos: Los basados en soluciones automatizadas y los basados en el trabajo humano.

El coste asociado a cada servicio determina el grado de utilización del mismo. Ya que para que sea utilizado un servicio es necesario que el valor de los activos asociados (por ejemplo, una cuenta de correo electrónico) valga más que el costo de resolver el CAPTCHA.

Basados en soluciones automatizadas

Con este enfoque se desarrolla una competición técnica entre aquellos que desarrollan algoritmos de resolución y aquellos que desarrollan desafíos cada vez más confusos en respuesta. Sin embargo, hay que considerar que la estructura de costos subyacente favorece al defensor constructor de los desafíos. Las técnicas usadas para resolver este tipo de problemas son de la inteligencia artificial. Por ejemplo el aprendizaje automático y las redes neuronales.

La investigación en el sector de la inteligencia artificial avanza a paso seguro y la habilidad de los programas especializados para interpretar los CAPTCHAs mejora a una velocidad de vértigo. Numerosos proveedores de captchas intentan compensar los avances con métodos cada vez más complejos de verificación, llegando a rozar a menudo la frontera de lo factible. Ya en 2010 los investigadores de la Universidad de Stanford) señalaron que en muchos casos los captchas constituyen un gran desafío incluso para los internautas.

Basados en el trabajo humano

El uso de mano de obra humana para resolver CAPTCHA efectivamente esquiva su punto de diseño. Además, la combinación de acceso a Internet barato y la naturaleza de los productos básicos de los CAPTCHA de hoy en día ha globalizado el mercado de solución; de hecho, el costo mayorista ha disminuido rápidamente a medida que los proveedores han reclutado trabajadores de los mercados laborales de menor costo. Hoy en día, hay muchos proveedores de servicios que pueden resolver grandes cantidades de CAPTCHA a través de servicios a pedido con precios tan bajos como 1 dólar por mil.

Controversias

Accesibilidad para personas con discapacidad

Cualquier problema de difícil solución del campo de la inteligencia artificial puede ser utilizado como, por ejemplo, reconocimiento de caracteres/imágenes (OCR) 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, algunos 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. Existe un proyecto en desarrollo llamado Captcha Accesible que trata de crear un captcha orientado a lectores de pantalla para personas invidentes.

Debilidades del sistema

Hay algunas aproximaciones a cómo se puede romper CAPTCHA: usando humanos como mano de obra barata o involuntaria para reconocerlos, explotando bugs en la implementación que permitan a un atacante saltarse el reconocimiento, y finalmente mejorando el software de reconocimiento óptico de caracteres. Proyectos como reCAPTCHA han intentado en los últimos tiempos mejorar la eficacia del sistema CAPTCHA para evitar completamente el reconocimiento por parte de programas OCR.

Actualmente hacer un captcha seguro requiere métodos complicados de implementar que únicamente poseen las grandes empresas. Pero hay métodos para dificultar a los programas OCR. Uno de estos métodos es el «método del tachado». Este método consiste en tachar las letras del captcha de manera que un humano sepa identificarlas pero un software OCR no pueda separar las unas de las otras. Para este método es importante utilizar un mismo color de letra (realmente modificar el color de poco sirve ya que para reconocerlas convierten la imagen a color negro) y tachar con el mismo color que las letras, a ser posible, una línea que no sea recta y de más de un píxel de grosor.

Es posible resolver 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. Una técnica de crackeo usada con el sistema consiste 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:

Reconocimiento de caracteres por ordenador

Aunque los CAPTCHA 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 CAPTCHA con programas que han sido específicamente diseñados para un tipo determinado de CAPTCHA. Para CAPTCHA con letras distorsionadas, la aproximación típica es seguir los siguientes pasos:

  1. Eliminación del ruido de fondo, por ejemplo con filtros de color y detecciones de líneas finas.
  2. Segmentación, por ejemplo partiendo la imagen en segmentos que contienen una sola letra.
  3. Identificar la letra de cada segmento, y así utilizar la información extraída de la imagen.

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 donde 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.

Véase también

Referencias

  1. 1 2 3 Grossman, Lev (5 de junio de 2008). «Computer Literacy Tests: Are You Human?» (en inglés). Time. Archivado desde el original el 30 de abril de 2009. Consultado el 12 de junio de 2008. «The Carnegie Mellon team came back with the CAPTCHA. (It stands for "completely automated public Turing test to tell computers and humans apart"; no, the acronym doesn't really fit.) The point of the CAPTCHA is that reading those swirly letters is something that computers aren't very good at.»
  2. ↑ Charles Naut, David Chung, Maurizeio Calo, Reverse Turing Test, espacio digital 'SlideShare', 1 de julio de 2010.
  3. 1 2 3 4 5 6 7 Understanding CAPTCHA-Solving Services in an Economic Context. Marti Motoyama et ali. 2010
  4. ↑ El inventor del código Captcha ¡es guatemalteco! Archivado el 6 de octubre de 2014 en Wayback Machine., sitio digital 'Yahoo! Noticias en español', 23 de septiembre de 2014.
  5. ↑ Nicholas J. Hopper : Research interests; Education; Publications; Academics honors and Awards; Teaching experience; Academics and Professional Service; Conference and Workshop Presentations; Other Professional Experience; Abstracts of accepted and submitted papers, sitio digital 'Computer Science Department / Carnegie Mellon University'.
  6. ↑ «CAPTCHA: Telling Humans and Computers Apart Automatically». Universidad Carnegie Mellon. Archivado desde el original el 4 de abril de 2012. Consultado el 16 de agosto de 2012.
  7. ↑ Sergio Luján Mora (2011). ¿Qué es un CAPTCHA? Origen y uso. España: Universidad de Alicante. Escena en 4:01. Consultado el 16 de agosto de 2012.
  8. 1 2 3 4 5 6 7 8 9 Captcha: cómo diferenciar a los humanos de los robots. Digital Guide Ionos. 22 de agosto de 2018
  9. 1 2 La inteligencia artificial aprende a engañar a los ‘captcha’. Francesco Rodella. elpais.es. 14 de diciembre de 2018
  10. ↑ Las CAPTCHAs basados en textos ya no son fiables. Francisco R. Villatoro. La ciencia de la mula Francis. 8 de diciembre de 2017
  11. ↑ CAPTCHAS. DEBILIDADES Y FORTALEZAS. Patricia Román Escabias. Trabajo Fin de Grado en Ingeniería Informática. Universidad Carlos III de Madrid. 24 de junio de 2013.
  12. 1 2 3 4 5 6 Qué es un Captcha, todo lo que necesitas saber. Raul Garcia Calvache. Desafío Hosting. 28 de octubre de 2019
  13. ↑ «Applications of CAPTCHAs». Carnegie Mellon University. Archivado desde el original el 4 de abril de 2012. Consultado el 16 de agosto de 2012.
  14. ↑ Reconocimiento de CAPTCHAs con redes neuronales. Alejandro León Fernández. Trabajo de Fin de Grado. Escuela Superior de Ingeniería y Tecnología. Universidad de la Laguna. 10 de junio de 2019
  15. ↑ Sergio Luján-Mora. «¿Qué es un CAPTCHA? Problemas de accesibilidad». Consultado el 19 de mayo de 2013.
  16. ↑ «Inaccesibility of CAPTCHA» (en inglés). W3C. 23 de noviembre de 2005. Consultado el 16 de agosto de 2012.

Enlaces externos