0Pricing
Cryptology Academy · Lección

SRP: protocolo de contraseña remota segura

Comprenda cómo SRP permite que cliente y servidor se autentiquen mutuamente sin que el servidor almacene contraseñas.

SRP: protocolo de contraseña remota segura es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 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.

Descripción general e historia de SRP

El protocolo Secure Remote Password (SRP) fue desarrollado por Tom Wu en Stanford y publicado como RFC 2945 en 2000; posteriormente se definió una versión mejorada, SRP-6a. SRP permite la autenticación mutua basada en una contraseña compartida sin transmitir jamás la contraseña, ni siquiera de forma cifrada.

El servidor almacena un verificador, no una contraseña

Durante el registro de SRP, el cliente calcula un verificador de contraseña v = g^x mod N, donde x = H(salt || password) y N es un primo seguro grande. El servidor almacena únicamente la sal y el verificador v. Aunque la base de datos del servidor se vea comprometida, el verificador almacenado no revela directamente la contraseña.

Generación de la clave de sesión de SRP

Durante el inicio de sesión mediante SRP, el cliente y el servidor realizan un intercambio similar a Diffie-Hellman que genera una clave de sesión compartida. El cálculo de cada lado incorpora el valor derivado de la contraseña, por lo que la clave de sesión resultante solo puede calcularla correctamente quien conoce la contraseña y quien posee el verificador, respectivamente.

Autenticación mutua en SRP

SRP proporciona autenticación mutua: el cliente demuestra que conoce la contraseña y el servidor demuestra que posee el verificador legítimo. Esto evita los ataques de phishing en los que un servidor falso intenta recopilar información de la contraseña, porque un servidor falso no puede completar correctamente el intercambio de SRP sin el verificador verdadero.

Cálculo del verificador

El verificador se calcula como v = g^x mod N, donde x = H(salt || password), g es un generador y N es un primo seguro de 2048 bits o más. El problema del logaritmo discreto hace que recuperar x a partir de v sea computacionalmente inviable. La contraseña solo se puede verificar completando correctamente todo el intercambio de SRP.

Mejoras de SRP-6a

SRP-6a aborda las debilidades de los diseños originales SRP-3 y SRP-6 mediante la introducción de un parámetro multiplicador k = H(N, g) y la modificación del orden de los cálculos del cliente y del servidor. Estos cambios evitan ciertos ataques de adivinación con ventaja de dos por uno y garantizan que la contribución del servidor quede vinculada desde una fase temprana del protocolo.

SRP en sistemas de producción

SRP se ha implementado de forma significativa en sistemas reales. Apple utiliza SRP en la sincronización de iCloud Keychain para permitir que los dispositivos recuperen los datos del llavero sin revelar la contraseña de la cuenta a los servidores de Apple. 1Password ha utilizado SRP en su modelo de autenticación para evitar la exposición de credenciales en el servidor.

SRP evita el phishing

Como SRP genera una clave de sesión que vincula tanto la contraseña como el verificador del servidor, un servidor de phishing no puede completar correctamente el handshake de SRP. Un usuario que se conecte a un sitio de phishing mediante SRP no podrá autenticarse, lo que proporciona una propiedad antiphishing integrada que no existe en el envío tradicional de contraseñas.

Limitaciones de SRP

SRP requiere muchos recursos computacionales, ya que implica realizar exponenciaciones modulares con enteros grandes (de más de 2048 bits). Es complejo implementarlo correctamente, debido a numerosos problemas sutiles en la validación de parámetros que han provocado vulnerabilidades en algunas implementaciones. El protocolo también requiere un canal seguro (TLS) para evitar la interceptación pasiva del propio intercambio.

Suites de cifrado TLS-SRP

RFC 5054 define suites de cifrado TLS-SRP que integran la autenticación mutua de SRP directamente en el handshake de TLS. Esto elimina la necesidad de certificados del servidor y, al mismo tiempo, proporciona autenticación mutua cifrada. Sin embargo, TLS-SRP ha tenido una adopción limitada en la práctica, ya que FIDO2 y OPAQUE han surgido como alternativas más modernas.

SRP frente a alternativas modernas

Aunque SRP fue revolucionario, las alternativas modernas como OPAQUE proporcionan garantías de seguridad más sólidas (resistencia a la precomputación) y FIDO2/passkeys eliminan por completo las contraseñas. Para los sistemas nuevos se prefieren OPAQUE o FIDO2, pero SRP sigue siendo una opción válida para los sistemas que requieren autenticación mutua basada en contraseña sin vulnerabilidad al phishing.

Comprobación del verificador de SRP

En SRP, ¿qué almacena el servidor en lugar de la contraseña del usuario?

Resumen de la lección: autenticación mediante SRP

SRP almacena un verificador de contraseña, no la contraseña; genera una clave de sesión compartida mediante un intercambio similar a DH y proporciona autenticación mutua resistente al phishing. SRP-6a mejora el diseño original al resistir los ataques de adivinación. iCloud Keychain de Apple y 1Password utilizan SRP en producción. OPAQUE y FIDO2 son sucesores modernos para los sistemas nuevos.

Preguntas frecuentes

¿La lección «SRP: protocolo de contraseña remota segura» es gratis?

Sí — el texto completo de «SRP: protocolo de contraseña remota segura» 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 «SRP: protocolo de contraseña remota segura»?

Comprenda cómo SRP permite que cliente y servidor se autentiquen mutuamente sin que el servidor almacene contraseñas. 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 2 de 4.

¿Cuánto tiempo toma la lección «SRP: protocolo de contraseña remota segura»?

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

  1. El problema fundamental de la autenticación mediante contraseñas
  2. SRP: protocolo de contraseña remota segura
  3. Protocolos PAKE y sus propiedades
  4. Autenticación sin contraseña: WebAuthn y FIDO2
← Volver a Cryptology Academy