Origen
El spam y los contenidos robados son un problema cada vez mayor en la web. Para evitar el spam en los comentarios en blogs, foros, etc, hay dos fórmulas populares:
- Pedir al usuario que se registre, con lo cual una gran mayoría de usuarios reales desisten y nuestro sitio web se queda sin valiosas contribuciones
- Pedir al usuario que escriba una secuencia de letras y/o números distorsionados tal que así:
El nombre técnico de eso es “captcha“
Esta segunda estrategia es la más usada, porque no ahuyenda a los usuarios reales pero sí a los robots, que son incapaces de resolver el captcha.
¿Los robots son incapaces de resolver el captcha?
Pues depende del tipo de captcha. El que hay ahí arriba es relativamente sencillo de resolver con un poco de procesado de señal: eliminamos el ruído, eliminamos las líneas de cículos y al final nos queda una imagen limpia con el 3163.
Hay, sin embargo, un tipo de captcha que por definición es imposible de resolver: el ReCaptcha.
Cómo funciona ReCaptcha
Recaptcha pone 2 palabras:
- Una de ellas ya la tiene el sistema resuelta (bien porque sí se puede resolver vía OCR, bien porque se saca de una base de datos de correspondencia “garabato – palabra”)
- La otra es una palabra que ningún OCR ha sido capaz de reconocer
El orden de las palabras es aleatorio: unas veces la que se puede reconocer está a la derecha, otras a la izquierda.
La idea es que un humano es mejor que un OCR, así que será capaz de reconocer ambas palabras.
El sistema recaptcha sabe cuál es la que ya está resuelta y esa se usa de palabra de control:
- Si me resuelves bien la que yo conozco, entonces es que eres un humano y tomaré en consideración la otra
- Si la palabra de control la fallas, no te hago ni caso
Es decir, el sistema Recaptcha da por resuelto el captcha simplemente con acertar una de las dos palabras (con resolver la palabra de control ya es suficiente). El problema es que no puedes saber cuál es la palabra de control.
Vamos, que por definición es imposible resolverlo mediante reconocimiento de caracteres (OCR).
Cómo romper ReCaptcha
La única manera de romper un recaptcha sería:
- Aprovecharse de que resolviendo la palabra de control el captcha se da por resuelto
- Tener una base de datos de imagen – palabra de control
- Tener infinito tiempo, porque vas a tener que comparar todas las imágenes una a una (por supuesto, se puede optimizar, pero tampoco demasiado).
Nótese lo de “infinito tiempo”. ¿Entiendes ahora porque todos los sitios que usan recaptcha hacen que caduque a los 20, 30 ó 60 segundos?
Otros usos de ReCaptcha
Lo mejor de todo, que no había dicho ahí arriba, es que las palabras del recaptcha están sacadas de fallos en el OCR al escanear libros, documentos, etc de bibliotecas, periódicos, etc
P. ej. Google Books se pone a escanear un libro y luego Google usa todos los fallos de reconocimiento como captchas en Blogger y así puede terminar el escaneo de todos los libros a coste cero. De hecho, están haciendo esto.