Cerno es un CAPTCHA de código abierto que detecta comportamiento de bots de IA analizando 12 métricas de control motor extraídas de los eventos del puntero del mouse (7 públicas + 5 secretas server-only). A diferencia de reCAPTCHA tradicional, que verifica humanidad biológica, Cerno se enfoca en si quien interactúa tiene control motor natural sobre el navegador. Los LLMs no pueden falsificar estas métricas porque no tienen acceso a hardware físico para generar movimientos suave, naturales y consistentes.
En 30 segundos
- Cerno es un CAPTCHA open-source que detecta LLMs midiendo comportamiento de motor-control (movimiento natural del mouse), no humanidad biológica
- Usa tres capas: Proof of Work adaptativo (SHA-256), generación procedural de laberintos, y extracción de 12 métricas conductuales que los LLMs no pueden falsificar
- Las métricas incluyen desviación estándar de velocidad tangencial, eficiencia de trayectoria, intervalos de pausa, jerk (tercera derivada), entropía de velocidad angular y validación ECDSA
- SDK TypeScript disponible para frontend (@cernosh/react) y backend Node.js (@cernosh/server); validación server-side genera el laberinto desde una semilla para garantizar confianza sin servidor centralizado
- Resuelve el problema del “arms race” de CAPTCHAs: ChatGPT pasa reCAPTCHA Enterprise, pero Cerno apunta específicamente a lo que los LLMs son débiles (ejecución motora, no razonamiento)
El problema: ReCAPTCHA ya no detiene a los LLMs
Ponele que sos ingeniero de seguridad y llegá la orden: “bloqueá los bots de IA que están raspando nuestra API”. Levantás reCAPTCHA Enterprise, lo ponés en el formulario de registro, y al día siguiente el cliente te avisa que alguien está usando ChatGPT para resolver tus CAPTCHAs sin problema. Pasá clics, pasá imágenes, pasá todo.
No es paranoia. El paper “OpenCaptchaWorld” que salió en NeurIPS 2025 evaluó agentes MLLM (multimodal LLM) contra varios CAPTCHAs estándar. Click CAPTCHA, text OCR, image recognition — los LLMs resuelven la mayoría. El framework Oedipus logra 63,5% de éxito en CAPTCHAs que se suponía eran humanidad-only.
El problema conceptual es evidente: los CAPTCHAs tradicionales verifican razonamiento. (Y eso, aparentemente, los LLMs sí saben hacer.) Un CAPTCHA de imágenes te pide que identifiques semáforos o autobuses. ChatGPT mira la imagen y dice “veo 3 semáforos”. Checkmate.
Entonces llegá la pregunta obvia: ¿qué hacemos si los LLMs son mejores que los humanos resolviendo CAPTCHAs lógicos? Fácil. Dejás de verificar lógica y empezás a verificar movimiento.
Qué es Cerno: CAPTCHA de análisis de control motor
Cerno es un CAPTCHA de código abierto que detecta bots midiendo si quien interactúa con el navegador tiene control motor natural sobre el movimiento del mouse. No verifica si sos humano biológicamente (eso es imposible). Verifica si tu comportamiento al resolver un laberinto se parece al de un humano interactuando con hardware, no al de un bot generando clicks.
Viene de PlawIO y está disponible en GitHub como TypeScript open-source. El SDK es modular: @cernosh/react para el frontend (el laberinto que ve el usuario) y @cernosh/server para Node.js (la validación server-side). Integración bastante sencilla si ya trabajaste con middleware de autenticación.
La idea central es genial porque apunta a la asimetría correcta. Los LLMs destruyen tareas que requieren razonamiento, semántica, visión — cosas que entrenan. Pero no tienen ratón, no tienen GPU controlando hardware, no tienen latencia humana natural. Eso es lo que Cerno mide. Complementá con medidas de seguridad modernas.
Cómo funciona: Las tres capas de defensa
Capa 1: Proof of Work adaptativo
Al iniciar el desafío, el servidor genera una semilla PRNG (pseudo-random number generator) y produce un SHA-256 con dificultad adaptativa. Típicamente 14-24 bits de complejidad, pero se ajusta según señales del cliente. La idea es hacer que farm attacks sean caras: si querés resolver 1000 Cernos con bots, cada uno te cuesta ciclos de CPU verificando PoW.
Esto no es nuevo (Bitcoin lo hace desde 2009). Pero acá viene el twist: la dificultad no es fija. Si el cliente se ve sospechoso (interacciones demasiado rápidas, demasiado perfectas, patrón geométrico exacto), Cerno sube la dificultad.
Capa 2: Generación procedural del laberinto
El laberinto no es una imagen estática. Se genera server-side con una semilla y se renderiza en el navegador del usuario. Esto tiene dos beneficios: (1) cada usuario ve un laberinto diferente, imposible de memorizar o cache-ar, y (2) el servidor puede regenerar exactamente el mismo laberinto desde la semilla para validar que el usuario lo resolvió correctamente, sin guardar el laberinto original en caché.
Pensalo así: el servidor dice “resolvé el laberinto con semilla X”, el usuario interactúa, el servidor regenera laberinto con semilla X y verifica que el path que le mandó tiene sentido para ese laberinto específico. Nadie en el medio ve el laberinto, nadie puede interceparlo.
Capa 3: Motor-control analysis
Este es el corazón. Mientras el usuario navega el laberinto con el mouse, el navegador registra raw pointer events a máxima resolución temporal (60Hz resampling). De eso, Cerno extrae 12 métricas conductuales y las compara contra baselines generados por ese laberinto específico.
Siete de esas métricas son públicas (sabés cuáles son), cinco son secretas server-only. La asimetría es crucial: alguien que intenta construir un bot falso puede intentar replicar las siete públicas, pero las cinco secretas están en el servidor y nunca ve el cliente. Así que aunque logres falsificar 7/12, fallan 5/12.
Las 12 métricas de comportamiento que analiza Cerno
Acá está el detalle técnico. Estas métricas se extraen de los raw pointer events y se puntúan contra baselines per-laberinto: Sobre eso hablamos en qué puede hacer ChatGPT.
- Tangential Velocity SD: desviación estándar de la velocidad tangencial en la trayectoria. Humanos tienen variación natural; bots tienden a velocidad constante.
- Path Efficiency: distancia Euclidiana desde entrada a salida dividido por la longitud actual del path. Humanos se pierden, dan vueltas; bots van recto.
- Pause Intervals: intervalos donde la velocidad cae por debajo de 0,0005 unidades por 100ms+. Humanos paran a pensar; bots no.
- Reaction Time: tiempo desde el primer evento hasta el primer movimiento significativo. Humanos tienen latencia; bots responden instant.
- Jerk (tercera derivada): variabilidad del cambio de aceleración. Humanos tienen jerk natural; bots tienen transiciones suaves geométricas.
- Angular Velocity Entropy: entropía de Shannon de cambios de dirección (16 bins angulares). Humanos exploran; bots siguen patrón.
- Inter-event Interval Variation: coeficiente de variación de intervalos brutos entre eventos. Pre-resampling, esto captura la irregularidad natural del hardware humano.
- Color-Word Interference Timing: timing derivado del stream de eventos en puntos de decisión del laberinto. Correlaciona con carga cognitiva humana (Stroop effect). Bots no tienen carga cognitiva.
- ECDSA Ephemeral Keypair: par de claves P-256 generadas al inicio del desafío, vinculadas al navegador. Se valida en la respuesta. Previene replay attacks.
- Behavioral Consistency Across Sessions: EMA (exponential moving average) de trust scores basados en identificador de dispositivo estable. Si resolvés 100 Cernos desde el mismo navegador, hay consistencia; si es un bot que simula 100 humanos, la consistencia se rompe.
- Device Fingerprinting: identificador estable del dispositivo (no es cookies, no es localStorage — es hardware fingerprinting). Previene que 100 bots diferentes simulen 100 humanos.
- Maze Profile Baseline: cada laberinto tiene su propio baseline de comportamiento esperado. Un laberinto complicado permite más pausa, otro simple no. Se ajusta per-maze.
Las métricas 1-7 y 9-11 son relativamente públicas (el código está en GitHub). Las métricas 8, 5 (jerk), y componentes de 10 (behavioral consistency) son secretas server-only. Entonces: un atacante puede ver 7, no ve 5. Probabilidad de pasar cayendo al piso.
Por qué los LLMs no pueden falsificar esto
ChatGPT puede leer un laberinto ASCII y decirte el path correcto. Eso es razonamiento espacial. Pero aquí no pedimos razonamiento.
Cerno mide hardware behavior. Un LLM no tiene ratón. No tiene latencia natural entre eventos. No tiene variabilidad física. Cuando ChatGPT resuelve un CAPTCHA de imágenes, genera una imagen, la “mira” con visión, y responde — todo en el mismo proceso de computación. Pero aquí el cliente tiene que ejecutar movimiento de mouse natural.
Eso significa que si intentás hacer un bot que resuelve Cerno:
1. Tenés que emular 12 métricas. 2. Siete son públicas, cinco no las ves. 3. La latencia de red entre tu bot y el navegador del usuario se nota. 4. El device fingerprint cambia cada vez que usás un navegador novo. 5. La consistencia cross-sessions revienta porque cada bot es nominalmente un “usuario” diferente.
¿Y qué pasa si logras falsificar las siete públicas? El servidor valida las cinco secretas. ¿Y si las adivinás todas? Ahí entra en juego la arquitectura cryptográfica: el ECDSA ephemeral keypair está vinculado al desafío específico, y el servidor lo valida antes de pasar.
En síntesis: Cerno no pone toda la defensa en una métrica. Usa defensa en profundidad, y le apunta a lo que los bots realmente son débiles: comportamiento físico no elegible de generar sin hardware real.
Integración técnica: SDK y validación server-side
Implementar Cerno es directo si andás acostumbrado a middleware de autenticación. Frontend TypeScript (@cernosh/react), backend Node.js (@cernosh/server). Te puede servir nuestra cobertura de los modelos GPT explicados.
El flujo básico:
- Cliente pide un desafío de Cerno al servidor.
- Servidor genera semilla PRNG, computa SHA-256 con dificultad adaptativa, genera laberinto procedural, devuelve todo al cliente.
- Cliente renderiza el laberinto en una canvas, registra los pointer events mientras el usuario lo resuelve (60Hz), acumula las 12 métricas.
- Cliente devuelve al servidor: path resuelto, las métricas públicas, la respuesta del PoW, el timestamp ECDSA.
- Servidor regenera el laberinto desde la semilla, valida que el path sea válido para ese laberinto, verifica las métricas contra baselines, valida el PoW, verifica la firma ECDSA.
- Si todo pasa, el usuario está “humano” según Cerno. Si no, lo rechaza.
No necesitás servidor centralizado de Cerno. Toda la validación ocurre en tu backend. Eso es importante para privacidad: el usuario nunca manda datos a un tercero, todo es entre el usuario y tu servidor.
Cerno versus reCAPTCHA versus otros CAPTCHAs modernos
| CAPTCHA | Target principal | Privacidad | Overhead | UX | Costo | Debilidad conocida |
|---|---|---|---|---|---|---|
| Cerno | Bots de IA, no humanidad biológica | Server-side, sin terceros | Bajo-medio (PoW adaptativo) | Excelente, intuitivo (laberinto) | Gratis (open-source) | Requiere JavaScript, no accesible para screen-readers |
| reCAPTCHA v3 | Bots genéricos, comportamiento sospechoso | Bajo, Google recolecta datos | Muy bajo (invisible) | Sin interacción | Gratis (bajo volumen), pago (scale) | Resuelto por LLMs a 63,5% (Oedipus) |
| hCaptcha | Humanidad, datos de entrenamiento | Mejor que Google, pero tercero | Medio | Click/image selection | Gratis (labeling), pago (scale) | Image CAPTCHA resoluble por visión LLM |
| Cloudflare Turnstile | Bots genéricos | Bajo (Cloudflare recolecta datos) | Bajo-medio | Invisible o click mínimo | Gratis (bajo volumen) | No specificado, pero basado en comportamiento |
| MoonCaptcha (motor-control) | Motor-control, similar a Cerno | Server-side posible | Medio | Buen UX | SaaS propietario | No tan documentado como Cerno |

El diferencial de Cerno es claro: es el único open-source que apunta específicamente a motor-control, tiene arquitectura cryptográfica clara, y no depende de un tercero recolectando datos. Para empresas que no quieren mandarle tracking a Google, es una opción seria.
Casos de uso reales donde Cerno encaja
APIs públicas que reciben tráfico de bots IA: Si tenés una API abierta (weather, datos públicos, scraper blocker), Cerno antes de la request evita que ChatGPT automatice consultas. El costo de falsificar Cerno hace que el ataque no valga.
Sistemas de comentarios o UGC: Reddit enfrenta spam de bots generados con LLMs. Cerno bloquea bots al momento de escribir el comentario, no después.
Plataformas que venden contenido o datos: Si tu modelo de negocio depende de “los usuarios pagan por acceso”, Cerno evita que alguien use un bot para pixonear el paywall.
Competencias o juegos: Esports, hackathons, juegos que premian habilidad de humanos. Cerno verifica que quien juega sea un humano, no un agente IA.
Formularios críticos: Registro de cuentas, cambio de contraseña, 2FA backup codes. Un atacante usa bot para crear 1000 cuentas fake; Cerno hace eso exponencialmente más caro. Ya lo cubrimos antes en características de Gemini.
Errores comunes al considerar Cerno
Error 1: “Cerno verifica humanidad biológica”
No. Verifica control motor natural. Es posible que mañana alguien construya un robot físico con sensores y hardware que resuelva Cerno. Cerno verificaría “esto se parece a control motor natural” y pasaría. Si ese es tu threat model, Cerno no es suficiente. Pero si lo que te preocupa es “scripts que resuelven automáticamente sin hardware”, Cerno es efectivo.
Error 2: “Es open-source así que alguien va a crackear fácil”
El código abierto significa que ves exactamente cómo funciona, lo cual es bueno para auditar seguridad. Pero la defensa está en la arquitectura: 5 métricas son secretas server-only, el PoW adaptativo es costoso, el ECDSA ephemeral previene replay. Ver el código no equivale a crackear.
Error 3: “Pongo Cerno y listo, estoy protegido contra LLMs”
Cerno bloquea un vector específico: bots que intentan resolver el CAPTCHA automáticamente. Pero si tu API tiene otros problemas (rate limiting débil, lógica de negocio con holes), Cerno solo es defensa en una capa. Como todo CAPTCHA, es herramienta en la cadena, no la panacea.
Preguntas Frecuentes
¿Qué es Cerno exactamente?
Cerno es un CAPTCHA open-source que detecta bots de IA midiendo control motor natural. Genera un laberinto procedural, el usuario lo resuelve con el mouse, y Cerno analiza 12 métricas de movimiento (velocidad, aceleración, jerk, pausas) contra baselines. Si el movimiento se parece a humano, pasa. Si se parece a bot (velocidad constante, sin variación), falla.
¿Por qué reCAPTCHA falla contra LLMs?
reCAPTCHA verifica razonamiento (identificar imágenes, resolver lógica). Los LLMs resuelven razonamiento. El paper OpenCaptchaWorld de 2025 muestra que agentes MLLM pasan CAPTCHAs tradicionales a 63.5% de éxito. reCAPTCHA no fue diseñado para un mundo donde los LLMs pueden ver y razonar mejor que humanos.
¿Cómo integro Cerno en mi sitio?
Instalás @cernosh/react en el frontend (renderiza el laberinto) y @cernosh/server en Node.js (valida la respuesta). En el formulario donde querés protección, envolvés con <CernoChallenge>, recibes el token de validación, y en el backend verificas que sea legítimo antes de procesar la request.
¿Cerno es privado?
Sí. Toda la validación ocurre en tu servidor. El usuario nunca manda datos a terceros. Comparado con reCAPTCHA (que manda datos a Google), Cerno no recolecta tracking. Eso sí: necesitás HTTPS y un servidor Node.js capaz. No hay opción SaaS manejado por tercero.
¿Qué pasa si el usuario no tiene JavaScript o usa screen-reader?
Cerno requiere JavaScript para renderizar el laberinto en canvas. No hay fallback accesible built-in. Si tu aplicación debe ser WCAG-compliant, Cerno no pasa sola. Necesitarías agregar un fallback alternativo (fallback a otro CAPTCHA, email verification, phone verification). Eso es una limitación real.
Conclusión
Cerno es interesante porque enfoca el problema correctamente. Renuncia a verificar humanidad biológica (imposible de verificar online) y se enfoca en lo que realmente separa a humanos de bots: control motor sobre hardware, latencia natural, variabilidad física. Los LLMs son increíbles para razonamiento, pero no tienen ratón.
Para empresas que necesitan bloquear bots de IA sin sacrificar privacidad ni depender de Google, Cerno es una opción seria. El código abierto, la arquitectura clara, y las métricas de motor-control lo hacen defensible. No es mágica — un atacante con recursos puede intentar crackear — pero sube el costo exponencialmente comparado con reCAPTCHA tradicional.
Si tenés una API pública, un sistema de comentarios, o un formulario crítico donde “un bot de IA resolviendo automáticamente” es tu threat model, Cerno vale la pena evaluarlo. Si tu principal preocupación es spam genérico o fuerza bruta, reCAPTCHA o Cloudflare Turnstile probablemente sufren. Pero si es específicamente “agentes LLM automatizando interacciones”, Cerno es la respuesta más clara que existe hoy.
