Últimamente no paramos de escuchar y leer noticias relacionadas con vulnerabilidades del protocolo SSL (Secure Socket Layer), seguro que os suenan los famosos Heartbleed, Poodle, etc…
La idea de este post es repasar a modo de resumen el uso de los protocolos SSL/TLS y aportar varios enlaces en los que se puede comprobar como de correcta es nuestra configuración ssl o la del sitio web que nos queramos conectar para confiar o no nuestra comunicación.
Uso de SSL/TLS
Dos de los protocolos más importantes de comunicación web seguros son SSL (Secure Socket Layer, Capa de socket seguro) y TLS (Transport Layer Security, Seguridad de la capa de transporte). Ambos protocolos son muy utilizados para proporcionar canales seguros para la comunicación TCP/IP confidencial. Tanto SSL como TLS garantizan la autenticidad del contenido web, a la que realizan una verificación fiable de la identidad de los usuarios que acceden a sitios web restringidos.
SSL funciona por encima de TCP/IP y por debajo de otros protocolos de capa superior como HTTP, y utiliza TCP/IP en nombre de esos protocolos de capa superior. TLS es un protocolo que permite la autenticación y la encriptación de datos sobre redes inseguras. Se implementa como una capa adicional entre TCP/IP y otros protocolos de red de nivel superior, como HTTP y SMTP. TLS es una versión actualizada del protocolo SSL v3. Ambos están íntimamente relacionados aunue no pueden operar entre ellos directamente.
Funcionamiento de una sesión SSL/TLS
Como vemos en la imagen el cliente y el servidor intentan ponerse de acuerdo en una serie cifrada, un grupo de algoritmos criptográficos que utilizarán para la autenticación y la encriptación de la sesión. El servidor escoge el método criptográfico más estricto que esté disponible tanto en él como en el cliente. Una vez negociada la serie cifrada, pueden autenticarse uno con otro y que el navegador web genere una clave de sesión. El navegador encripta esta clave de sesión con la clave pública del servidor y la envía al servidor web. Usando su propia clave privada, el servidor descifra la clave de sesión y establece un canal seguro. A partir de ese momento, el servidor web y el navegador utilizan la clave de sesión para encriptar y desencriptar todo el tráfico de datos enviado entre ambos.
¿Como evaluar mi configuración SSL?
Como comentábamos al principio han sido muchas las vulnerabilidades que se han descubierto en este sistema y muchas las versiones que han ido saliendo para solventar dichas vulnerabilidades. Es difícil llegar a una configuración segura al 100% pero tenemos herramientas que nos pueden ayudar al menos a hacernos una idea de cual es la calidad de nuestra configuración SSL:
https://www.ssllabs.com/ssltest/
También podemos comprobar si una página web es actualmente vulnerable al ataque de Heartbleed:
https://filippo.io/Heartbleed/