El problema fundamental de la autenticación mediante contraseñas
Examine por qué la autenticación tradicional mediante contraseñas crea superficies de ataque en el servidor y qué protocolos lo solucionan.
El problema fundamental de la autenticación mediante contraseñas es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.
El modelo tradicional de contraseñas
En la autenticación tradicional mediante contraseña, el cliente envía la contraseña (o un hash de esta) al servidor, que la compara con un valor almacenado. Este modelo es sencillo, pero concentra un riesgo enorme en el servidor: una filtración de la base de datos expone simultáneamente las credenciales de todos los usuarios.
Compromiso del servidor y descifrado de hashes
Cuando un atacante vulnera un servidor y roba la base de datos de contraseñas, puede realizar un ataque de diccionario sin conexión a la velocidad máxima de una GPU y sin limitación de intentos. Las GPU modernas pueden probar miles de millones de contraseñas por segundo contra hashes bcrypt o SHA-256, lo que permite recuperar de forma trivial las contraseñas débiles o comunes.
La reutilización de contraseñas amplifica las filtraciones
Los estudios muestran sistemáticamente que la mayoría de los usuarios reutiliza sus contraseñas en varios sitios. Por tanto, un único compromiso del servidor filtra credenciales que funcionan en otros servicios. Los ataques de credential stuffing automatizan la comprobación de pares de nombres de usuario y contraseñas filtrados contra sitios web populares, convirtiendo una filtración en muchas.
El phishing elude las protecciones del lado del servidor
El fortalecimiento de contraseñas del lado del servidor (hashing robusto, uso de sal y limitación de la tasa de solicitudes) no ofrece ninguna protección contra el phishing. Cuando un usuario introduce su contraseña en un sitio falso, el atacante obtiene directamente la contraseña en texto sin formato, independientemente de lo bien que la almacene el servidor legítimo. Actualmente, el phishing es el principal vector de robo de credenciales.
Credential Stuffing a gran escala
En la dark web están disponibles públicamente bases de datos con miles de millones de pares de nombres de usuario y contraseñas filtrados en brechas históricas. Los atacantes utilizan herramientas automatizadas para probar estas credenciales contra instituciones financieras, sitios de comercio electrónico y proveedores de correo electrónico a escala industrial, y tienen éxito cuando los usuarios han reutilizado una contraseña comprometida anteriormente.
El servidor conoce su contraseña
En la autenticación tradicional mediante contraseña, el servidor necesariamente conoce la contraseña del usuario en texto sin formato durante el proceso de inicio de sesión (aunque solo sea brevemente, antes de aplicar el hashing). Esto significa que se debe confiar plenamente en que cada operador del servidor no hará un uso indebido de las credenciales, no las registrará ni las expondrá accidentalmente, algo que rara vez se puede garantizar en la práctica.
Lo que realmente necesitamos
Un protocolo de autenticación ideal permitiría a un usuario demostrar que conoce su contraseña sin revelársela jamás al servidor. El servidor también demostraría que es el servidor legítimo (autenticación mutua), lo que evitaría el phishing. Una base de datos de servidor comprometida no revelaría nada útil a un atacante.
Prueba de conocimiento cero aplicada a la autenticación
Las pruebas de conocimiento cero proporcionan un marco teórico para esto: un probador puede convencer a un verificador de que un secreto es válido sin revelar el secreto en sí. Los protocolos de autenticación mediante contraseña, como SRP y OPAQUE, aplican estos principios para lograr la autenticación sin transmitir directamente la contraseña ni almacenarla en el servidor.
Resistencia a los ataques de diccionario
Los protocolos sólidos de autenticación mediante contraseña deberían resistir los ataques de diccionario sin conexión incluso si los datos almacenados en el servidor se ven comprometidos por completo. Esto significa que el verificador almacenado no debe poder utilizarse directamente para suplantar al usuario ni permitir adivinar contraseñas sin conexión de forma eficiente y sin la cooperación del servidor.
El problema de la confianza a escala
Con cientos de servicios que requieren autenticación, el modelo tradicional exige confiar a cada operador de servicio un secreto que podría reutilizarse en otros lugares. La solución consiste en eliminar por completo la transmisión de contraseñas, almacenar únicamente verificadores no reutilizables y vincular la autenticación a la identidad del servidor específico para evitar el phishing.
El camino a seguir
Entre las soluciones modernas se incluyen SRP (Secure Remote Password), OPAQUE y FIDO2/passkeys. Cada una aborda distintos aspectos del problema fundamental. SRP y OPAQUE eliminan el conocimiento de la contraseña por parte del servidor. FIDO2/passkeys eliminan por completo las contraseñas mediante criptografía de clave pública vinculada al origen específico.
Comprobación de las debilidades de la autenticación mediante contraseña
¿Qué ataque NO evita un hashing robusto de contraseñas del lado del servidor (por ejemplo, bcrypt)?
Resumen de la lección: el problema de las contraseñas
La autenticación tradicional mediante contraseña obliga a los servidores a verificar secretos que conocen, permite descifrarlos sin conexión después de una brecha y es vulnerable al phishing. La reutilización de contraseñas convierte las brechas individuales en fallos sistémicos. El sistema ideal proporciona autenticación mutua sin transmitir secretos, almacena únicamente verificadores que no se puedan descifrar y vincula la autenticación a la identidad del servidor.
Preguntas frecuentes
¿La lección «El problema fundamental de la autenticación mediante contraseñas» es gratis?
Sí — el texto completo de «El problema fundamental de la autenticación mediante contraseñas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.
¿Qué aprenderé en «El problema fundamental de la autenticación mediante contraseñas»?
Examine por qué la autenticación tradicional mediante contraseñas crea superficies de ataque en el servidor y qué protocolos lo solucionan. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cryptology Academy?
No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «El problema fundamental de la autenticación mediante contraseñas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?
Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- El problema fundamental de la autenticación mediante contraseñas
- SRP: protocolo de contraseña remota segura
- Protocolos PAKE y sus propiedades
- Autenticación sin contraseña: WebAuthn y FIDO2