El Protocolo SRP (Secure Remote Password) es un protocolo de autenticación de contraseña segura y de intercambio de claves que opera sobre una conexión insegura. A diferencia de los métodos tradicionales que envían la contraseña o un hash de la misma, SRP permite que tanto el cliente como el servidor verifiquen la autenticidad del otro sin que la contraseña real (o un secreto equivalente que permita su recuperación) sea transmitida o almacenada en el servidor de forma que pueda ser comprometida. Se basa en la aritmética de grupos finitos y en el intercambio de claves Diffie-Hellman, incorporando un 'salt' para proteger contra ataques de diccionario offline y precomputación de tablas arcoíris. El resultado es un secreto compartido que puede usarse para derivar claves de sesión para cifrado simétrico.

En el mundo real, el Protocolo SRP ha sido adoptado por una variedad de sistemas que requieren autenticación robusta sin comprometer las contraseñas de los usuarios. Ejemplos notables incluyen OpenSSL (a través de la extensión TLS-SRP), que permite la autenticación SRP en conexiones TLS/SSL, y el cliente de correo electrónico Thunderbird para la autenticación IMAP. También se ha utilizado en sistemas de autenticación para videojuegos, VPNs y otros servicios donde la seguridad de la contraseña es crítica y el entorno de red puede ser hostil. Su diseño lo hace particularmente adecuado para escenarios donde el servidor no puede ser completamente confiable para almacenar hashes de contraseñas de forma segura.

Para un arquitecto de sistemas, SRP es una herramienta valiosa para diseñar sistemas de autenticación con un perfil de seguridad elevado. Su principal ventaja es la mitigación del riesgo de compromiso de contraseñas en el servidor: incluso si la base de datos de usuarios es robada, los atacantes no obtendrán las contraseñas ni sus hashes que permitan ataques de diccionario offline directos. Esto reduce significativamente la superficie de ataque. Sin embargo, su implementación es más compleja que la de los esquemas de autenticación basados en hash tradicionales, requiriendo una comprensión profunda de la criptografía de grupos finitos. Los trade-offs incluyen la complejidad de la implementación y la necesidad de una gestión de 'salt' adecuada, pero el beneficio en términos de seguridad de la contraseña del usuario y resiliencia ante brechas de datos a menudo justifica la inversión para sistemas de alta seguridad.