Explicando el Handshake TLS

¿Qué ocurre durante este intrincado proceso de handshake TLS?

DIVULGACIÓNSEGURIDADPROTOCOLOS

JLJuarez

11/12/20245 min read

¿Os habéis preguntado alguna vez, qué ocurre durante este intrincado proceso de apretón de manos(handshake) y qué papel desempeñan las claves de sesión, los algoritmos criptográficos y la versión de TLS?

Pues vamos con un pequeño resumen para comprender los puntos clave del proceso de handshake.

¿Qué es?

Se trata de un protocolo para iniciar y establecer una conexión segura entre un cliente y un servidor, garantizando que los datos intercambiados entre ellos sigan siendo confidenciales y a prueba de manipulaciones.

Tiene sus raíces en el protocolo Secure Sockets Layer (SSL), que fue su predecesor. Tal y como comentamos en un articulo anterior, a medida que SSL evolucionó, dio lugar a TLS, para solucionar las vulnerabilidades y mejorar la seguridad, de forma que actualmente es el protocolo estándar para proteger el tráfico web y otras comunicaciones.

Tanto el cliente como el servidor desempeñan papeles vitales a la hora de establecer el cifrado, donde el cliente envía sus capacidades, incluyendo las versiones TLS y suites de cifrado soportadas, a lo que el servidor responde seleccionando entre estas opciones las mas adecuadas.

¿Cómo funciona?

Mientras navegamos por la Web, nuestro navegador entra en un complejo proceso de negociación y verificación para establecer una conexión segura con los sitios web que carga.

Vamos a repasar los pasos implicados al realizar un handshake TLS, cuándo ocurre, qué ocurre durante el mismo y los posibles fallos de handshake SSL/TLS con los que nos podemos encontrar.

¿Cuándo ocurre?

El handshake tiene lugar durante la configuración inicial de cada conexión, cuando el cliente (nuestro navegador) envía un mensaje al servidor indicando que quiere establecer una conexión segura.

El objetivo de este proceso es crear una clave de sesión simétrica, para de esta forma disponer de un secreto compartido entre cliente y servidor, consiguiendo una comunicación cifrada.

Conclusión

Sin entrar en demasiados detalles técnicos, hemos dado un repaso condensado sobre en que consiste el handshake TLS en nuestro día a día, en una próxima entrada haré una pequeña comparativa entre diferentes versiones del protocolo TLS, para que veáis las evoluciones que este ha tenido y lo importante de procurar utilizar siempre la versión mas avanzada.

Como siempre, espero que este pequeño articulo os haya resultado por lo menos entretenido, gracias por leerme.

¿Qué ocurre?

Puede variar en muchos pasos, ya sea según el algoritmo de intercambio de claves, de las suites de cifrado soportadas por ambas partes implicadas, etc. Como no os quiero aburrir con un párrafo kilométrico explicando todos el procesos, os diré que en términos generales el proceso es el siguiente:

1. Saludo Inicial (Fase 1): El cliente (nuestro navegador) dice "hola" al servidor y le dice qué versiones de seguridad puede usar (básicamente la versión TLS y las capacidades criptográficas de que dispone)

2. Verificación de Identidad (Fase 2): El servidor muestra su "identificación" (certificado digital)

3. Creación de Clave Secreta (Fase 3): El cliente verifica que la identificación del servidor sea válida y en caso afirmativo, genera una "clave secreta", la cifra con la clave publica del certificado del servidor y se la envía a este, de forma que los dos compartan la misma.

4. Inicio de Comunicación Segura (Fase 4): Una vez que los dos ya tienen un código secreto común y pueden comenzar a enviarse mensajes seguros.

Como podéis observar todo el proceso se puede dividir en tres bloque bien diferenciados:

  • TCP: Apoyándose en este protocolo de comunicación, se inicia la conversación entre el cliente y el servidor.

  • TLS: Es donde se establecen las reglas y condiciones de la comunicación segura.

  • Data: Aquí se establece la comunicación cifrada en base a lo establecido en la capa anterior.

Posibles fallos

Habiendo explorado los pasos de un handshake tenemos una visión mas clara del proceso, ahora veamos en que puntos puede fallar este proceso.

  • El primer punto de fallo puede producirse si el cliente no puede validar el certificado del servidor, lo que lleva a un apretón de manos abortado. Esto podría deberse a un certificado caducado o a incongruencia entre el nombre de dominio del certificado y el del servidor.

  • Otro problema habitual es la aplicación incorrecta del algoritmo criptográfico o la insuficiencia de las medidas de seguridad, lo que provoca fallos en la integridad de los datos.

  • Finalmente, si el servidor no admite el conjunto de cifrado propuesto por el cliente, el protocolo de enlace fallara.

Sobra decir que entre otros, estos son los principales puntos de entrada para que los malos accedan a nuestra comunicaciones, por lo que es de vital importancia que tanto nuestro S.O., como nuestro navegador, estén actualizados y correctamente configurados.

Otros puntos a tener en cuenta

Aunque el TLS es una tecnología potente, no es perfecto. De hecho tiene algunas limitaciones, que debemos tener en cuenta en según en que casos:

  • Sobrecarga de rendimiento: El Handshake TLS puede introducir latencia, especialmente en conexiones de corta duración. El proceso de apretón de manos inicial es pesado y puede afectar al rendimiento.

  • Complejidad de la configuración: La configuración de TLS y la gestión de certificados pueden ser complejas de configurar correctamente. Los errores de configuración pueden dar lugar a vulnerabilidades.

  • Compatibilidad de versiones y conjuntos de cifrado: No todos los clientes y servidores soportan las últimas versiones de TLS o suites de cifrado. Los problemas de compatibilidad pueden provocar fallos en el proceso de handshake.

  • Caducidad de los certificados: Los certificados tienen una vida útil limitada y deben renovarse periódicamente. Si no se renueva, pueden producirse errores de conexión y esto significa que nuestra comunicación estará al descubierto.

  • Vulnerabilidad a determinados ataques: Aunque TLS mitiga muchos riesgos de seguridad, también es susceptible a ataques man-in-the-middle o downgrade.

Ventajas

Pero no todo van a ser malas noticias:

Al implementar correctamente el handshake TLS en las comunicaciones de las soluciones que implementemos, este protocolo permite disponer de un alto nivel de seguridad al establecer una conexión cifrada entre el cliente y el servidor que difícilmente sera vulnerada.

Por otro lado TLS admite una amplia gama de algoritmos criptográficos, lo que le permite ajustar el equilibrio entre seguridad y rendimiento según sus necesidades. Así podemos utilizar algoritmos de cifrado robustos para transmitir datos sensibles y algoritmos más rápidos y menos exigentes para la información menos crítica.

Otra ventaja significativa de TLS y a la que por desgracia no le damos el protagonismo debido, es la capacidad para autenticar mutuamente a las partes que intervienen en la comunicación. El certificado digital del servidor, verificado por una autoridad de certificación de confianza, garantiza al cliente que no es un impostor y por su parte, los certificados del lado del cliente pueden utilizarse para la autenticación de este por el servicio consumido, completando el circulo de seguridad en la comunicación.