Blogs Teoriza
Acceder · Crear usuario
Anunciarse
Canal Personal   GONZO · Mia

Animal Captcha 1.4

DEBILIDAD A FUERZA BRUTA

animal captcha 14 fuerza brutaHace un par de semanas (erlang y compañía) me ayudaron a comprender que las versiones de Animal Captcha hasta la 1.3 son débiles frente a un ataque de fuerza bruta.

Es decir, a diferencia de los captchas alfanuméricos, Animal Captcha por su naturaleza tiene un numero reducido de respuestas posibles. Tantas como animales. Hasta el momento 30 animales.

Esto significa que creando un bot de fuerza bruta que haciendo peticiones de forma automática, de cada 30 peticiones acertará una de media. Esto es una debilidad que en algunos casos merecerá la pena explotar (no en todos).


LA SOLUCIÓN

Tras un momento de desconcierto, se pudo pensar que se había tumbado el concepto de Animal Captcha. Pero he desarrollado una batería de soluciones que mitigan el problema hasta su mínima expresión.

El problema de la fuerza bruta se ha resuelto con los siguientes cambios:

  1. En cada intento se elimina la variable de sesión. Esto significa que para hacer un intento válido hay que hacer 2 peticiones (obligatoriamente): una a la imagen del animal (el captcha) y otro al script comprobador.
  2. Se permite configurar el numero de animales mostrados. Por defecto 2. Es flexible, cambiando un parámetro se puede cambiar a 1 animal o a 8, dependiendo del industrial strength que se necesite. Por ejemplo en Blogs Teoriza he configurado 1 solo animal, hasta que surja algún problema, si Google lo implementase en Gmail, aconsejo 3 animales o incluso 4, con un repertorio inédito y no publico (hipotéticamente hablando).

¿Qué hemos conseguido? Pues multiplicar exponencialmente el número de respuestas posibles, mitigando drásticamente la eficacia de un ataque por fuerza bruta (el único ataque con eficacia demostrada hasta ahora).

Cálculos teniendo en cuenta que hay un repertorio de 30 animales (estoy preparando la próxima versión 2.0 que se ampliará a objetos).

  • Versión antigua (hasta 1.3)
    30 respuestas posibles = 30 peticiones por acierto.
  • Animal Captcha 1.4
    Mostrando 2 animales: (30^2)*2 = 1.800 peticiones por acierto.
    Mostrando 3: (30^3)*2 = 54.000 peticiones por acierto.
    Mostrando 4: (30^4)*2 = 1.620.000 peticiones por acierto.

Como se puede ver, se ha aumentado drásticamente el numero de peticiones con el mismo numero de imágenes. El numero de imágenes será elevado al menos a 60, incluyendo objetos y animales, en la próxima versión 2.0.

  • Animal Captcha 2.0 (versión futura incluyendo objetos)
    Mostrando 2: (60^2)*2 = 7.200 peticiones por acierto.
    Mostrando 3: (60^3)*2 = 432.000 peticiones por acierto.
    Mostrando 4: (60^4)*2 = 25.920.000 peticiones por acierto.

Con esto intento mostrar que el aumento de la seguridad frente a fuerza bruta es exponencial.


CONCLUSIÓN

Con esta versión 1.4 doy por resuelto el ataque de fuerza bruta simple (salvo que me corrijan, claro). Y por lo tanto en mi opinión es "invulnerable" hasta que se demuestre lo contrario.

Me temo que ahora el caballo de batalla de Animal Captcha es el ataque por identificación de animales analizando patrones del repertorio de im´genes (que es publico y abierto, aunque cada webmaster puede hacerse el suyo particular).

En esta linea veo extremadamente difícil encontrar una vulnerabilidad, ya que desde la versión 1.2 se fusiona una imagen de fondo aleatoria, con transparencia aleatoria y orientación aleatoria. Todos los bytes, pixeles, histogramas y colores estadísticos cambian aleatoriamente en cada imagen, siendo todas únicas.

Además continua activa la opción de añadir polígonos aleatorios (desactivada por defecto ya que sobra seguridad en este aspecto).


CONCLUSIÓN BREVE

Animal Captcha 1.4 es invulnerable y más seguro que cualquier captcha alfanumérico, hasta que se demuestre lo contrario (como de costumbre agradecerá que se ponga a prueba este sistema).


 

Español | Inglés

Animal Captcha

animal captcha 14
DEMO ONLINE

[Español e Inglés]


Introducción:

Animal Captcha es un pequeño programa en lenguaje PHP, orientado para su uso en páginas web, que permite adjuntar a un formulario una imagen aleatoria de un animal que cualquier humano conoce, y sin embargo un robot es incapaz de identificar.


Ventajas:

  1. Seguridad: esta es la razón principal, en Internet hay desarrollos que consiguen resolver algunos captchas de códigos alfanuméricos, con creciente éxito. Sin embargo, ojalá pudiese una máquina identificar a un animal! Es imposible teóricamente.
  2. Belleza: es más agradable ver una foto de un animal que un código alfanumérico.
  3. Rapidez: los usuarios ahorran tiempo, ya que se tarda menos en identificar y escribir un animal que introducir un código aleatorio.
  4. Efectividad: los usuarios aciertan con más probabilidad en comparación con los últimos captchas seguros.


Descargar:

Publicado bajo licencia Creative Commons, siendo esta página la fuente original. Cedo al interés común todos los derechos de utilización y modificación, como mejor se considere. El único derecho que quiero preservar es el de autoría y citación.


Versiones y cambios:
  (changelog):

  • 2.0 - Futura versión...
    Ampliaré las imágenes tambien a objetos. Aumentando el repertorio al menos a 60 entre animales y objetos.
  • 1.4 - 2009/11 - Invulnerable
    Caduca la sesion en cada intento obligando a pedir el captcha. Configuracion opcional del numero de animales por prueba, esto aumenta exponencialmente el numero de respuestas posibles migitando drásticamente la eficacia del ataque por fuerza bruta.
  • 1.3 - 2009/10 - Débil a fuerza bruta por erlang
    Permite añadir varias imágenes para un mismo animal añadiendo _2.jpg en la imagen. La imagen de fondo se orienta incorrectamente para mitigar la confusión con la imagen principal que es la corecta. Desactivado por defecto los polígonos y giros aleatorios ya que no hace falta tanta seguridad. Mejorada la calidad de la imagen. Refresca otro animal al hacer clic en la imagen.
  • 1.2 - 2008/12 - Débil a fuerza bruta por erlang
    Avance importante en la aleatorización de imágenes mediante una tecnica de fusión de dos imagenes transparentes aleatorias. Corrección de pequeños bugs. Optimización mejorada, genera imágenes más rápido.
  • 1.1 - 2008/06 - Vulnerado por movzx
    Avance en la aleatorización para dificultar la obtención de patrones que identifiquen la foto original del animal. Invulnerable al test de bits y test de histograma.
  • 1.0 - 2008/04 - Vulnerado por NachE
    Versión inicial. Vulnerable a los test de bits y test de histogramas.

(Invulnerable quiere decir que es seguro y hasta el momento nadie ha logrado crackeado, ánimo hackers!)

 


Implementación:

Animal Captcha está compuesto de 2 archivos PHP y 1 carpeta con imágenes de animales.

  • animal-captcha.php - Devuelve una imagen aleatoria de un animal, y guarda en una sesión PHP el nombre del animal para comprobarlo posteriormente.
  • animal-captcha-check.php - Define esta función PHP animal_captcha_check() que devuelve true si se ha acertado y false si es errónea, respecto a la sesión previamente creada al imprimir la imagen captcha.
  • Imágenes: las fotos deben estar en formato .jpg, medir 120px y representar un animal común, fácil de identificar (de nivel de preescolar). El nombre está formado por una serie de palabras sin espacios, una palabra por intento, separadas por guiones "-". Todas las estas palabras son las respuestas correctas. Ejemplo, cerdo-gorrino-pig.jpg Admite las respuestas: cerdo, gorrino o pig. Cada imagen ocupa 4kb tan solo. Está optimizado su consumo al mínimo, listo para usarse en sitios web con alto tráfico.

De esta forma se puede internacionalizar fácilmente o se pueden solventar animales que pueden ser nombrados de varias formas.

Cada imagen es difuminada aleatoriamente, de forma que cada imagen presentada es única.


Problemas conocidos:

  • Si el lector no conoce alguno de los idiomas del captcha, no podrá resolverlo.

0 GONZO 20-11-2009
+2 Proyectos Internet 
Artículo escrito por GONZO para Blogs Teoriza.
Animal Captcha 1.4 - GONZO, Blogs Teoriza | inifica.
Blogs Teoriza
Ocio Tecnología Cuidarse Informática Contactos Cultura Vacaciones Interesante Místico Personal
Ocio Alarmas Intimidades Hosting Chat Poesías Hoteles CompraVenta Tarot GONZO
Juegos Tecnología Salud Adsl Messenger Mundo Viajes Videos Videncia Mia
CineTV Inventos Internet Música EnCrucero Polémicas
Deportes Virtual Seguridad ComoHacer Turismo Legalidad
Motor Ubuntu Actualidad
Hardware
Enlaces: MovilZona

Creative Commons License
Blogs Teoriza™ · Red de Blogs · · Aviso Legal · 2003-2010