TLS-SRP

Transport Layer Security Secure Remote Password (TLS-SRP) ciphersuites are a set of cryptographic protocols that provide secure communication based on passwords, using an SRP password-authenticated key exchange.

There are two classes of TLS-SRP ciphersuites: The first class of cipher suites uses only SRP authentication. The second class uses SRP authentication and public key certificates together for added security.

Usually, TLS uses only public key certificates for authentication. TLS-SRP uses a value derived from a password (the SRP verifier) and a salt, shared in advance among the communicating parties, to establish a TLS connection. There are several possible reasons one may choose to use TLS-SRP:


 * Using password-based authentication does not require reliance on certificate authorities.
 * The end user does not need to check the URL being certified. If the server does not know data derived from the password then the connection simply cannot be made.  This prevents Phishing.
 * Password authentication is less prone than certificate authentication to certain types of configuration mistakes, such as expired certificates or mismatched common name fields.
 * TLS-SRP provides mutual authentication (the client and server both authenticate each other), while TLS with server certificates only authenticates the server to the client. Client certificates can authenticate the client to the server, but it may be easier for a user to remember a password than to install a certificate.

Implementations
TLS-SRP is implemented in GnuTLS, OpenSSL as of release 1.0.1, Apache mod_gnutls and mod_ssl, cURL, TLS Lite SecureBlackbox and wolfSSL.

Standards

 * RFC 2945: “The SRP Authentication and Key Exchange System”.
 * RFC 5054: “Using the Secure Remote Password (SRP) Protocol for TLS Authentication”.