Líder en confianza digital para la era de la inteligencia artificial y la computación cuántica.   Descubra cómo Keyfactor lo Keyfactor posible.

Desmitificando el handshake TLS: Qué es y cómo funciona

Certificados SSL/TLS

La seguridad de la capa de transporte (TLS) está diseñada para añadir seguridad a las comunicaciones de red. Es la diferencia entre HTTP y HTTPS cuando se navega por Internet.

El uso de TLS crea trabajo adicional para el cliente y el servidor, pero tiene sus ventajas, entre ellas:

  • Confidencialidad: TLS Envuelve el tráfico en un túnel cifrado. Esto hace imposible que un fisgón lea o modifique el tráfico en su camino hacia el destino.
  • Autenticación: TLS Demuestra la identidad del servidor al cliente. Esto es útil para protegerse de los sitios de phishing.
  • Integridad: TLS Incluye protecciones que ayudan a identificar si los datos han sido modificados o corrompidos en tránsito.

Todas ellas son características valiosas a la hora de navegar por la web. Por eso TLS es tan popular y por eso la mayoría de las visitas a un sitio web empiezan con un apretón de manos TLS .

¿Qué es el TLS Handshake?

Como un apretón de manos en la vida real, el TLS handshake es una introducción. Establece que dos ordenadores quieren hablar entre sí de forma segura.

Un apretón de manos TLS también define algunas de las reglas de esta conversación. Tanto el cliente como el servidor están de acuerdo en que quieren beneficiarse de TLS, pero tienen que ponerse de acuerdo en los detalles. Un apretón de manos TLS les lleva desde un "Hola" inicial hasta el punto en que pueden empezar a hablar en privado.

Antes de entrar en detalles sobre el apretón de manos de TLS , es importante entender algunas palabras clave. TLS es un protocolo centrado en la seguridad, lo que significa que utiliza mucha criptografía. Algunos términos importantes que hay que conocer cuando se habla de TLS son:

  • Cifrado asimétrico:La criptografía asimétrica o de "clave pública " utiliza dos claves relacionadas: una pública y otra privada. Cualquier cosa cifrada con una clave pública puede descifrarse con la clave privada correspondiente. Del mismo modo, una firma digital generada con una clave privada puede validarse con la clave pública asociada.
  • Cifrado simétrico: El cifrado simétrico utiliza la misma clave tanto para cifrar como para descifrar. Esto es útil porque es más eficiente que el cifrado con criptografía asimétrica. El protocolo TLS está diseñado para establecer una clave de cifrado simétrica compartida.
  • Suites de cifrado: Un conjunto de cifrado es una combinación de algoritmos criptográficos utilizados en el protocolo TLS . Incluye un algoritmo de cifrado asimétrico para el apretón de manos, un algoritmo de cifrado simétrico para cifrar los datos enviados a través de la conexión, un algoritmo de firma digital y una función hash utilizada para verificar que los datos no se han corrompido en tránsito.
  • Certificado digital: Un certificado digital demuestra la propiedad de una clave pública. Los servidores presentan un certificado digital durante el apretón de manos TLS para que el cliente sepa que se está comunicando con la persona adecuada.

Dentro del Handshake de TLS

El objetivo del handshake de TLS es que el cliente y el servidor acuerden una clave de cifrado simétrico compartida de forma segura. Para ello, utilizan cifrado asimétrico, lo que permite enviar mensajes cifrados utilizando únicamente una clave pública.

Los detalles del handshake de TLS dependen del algoritmo de cifrado asimétrico utilizado. Un cliente y un servidor que emplean RSA siguen los siguientes pasos:

ilustración del apretón de manos TLS SSL
  1. Client Hello: El cliente inicia el handshake de TLS enviando información de configuración al servidor. Esto incluye datos como la(s) versión(es) de TLS compatible(s) con el cliente, los conjuntos de cifrado que puede utilizar y algunos datos aleatorios denominados “client random”.
  2. Server Hello: El servidor responde con un mensaje que incluye sus elecciones de versión de TLS y conjunto de cifrado, su certificado digital y el “server random”.
  3. Premaster Secret: El certificado digital proporcionado por el servidor contiene su clave pública, que puede utilizarse para cifrar mensajes enviados al servidor. Tras verificar la validez del certificado, el cliente genera otro valor aleatorio denominado premaster secret. Utilizando la clave pública del servidor, el cliente cifra este valor y lo envía al servidor.
  4. Session Keys: El servidor utiliza su clave privada para descifrar el premaster secret. En este punto, tanto el cliente como el servidor disponen del client random, server random y el premaster secret. A partir de estos, calculan una clave de sesión compartida. Dado que el premaster secret es un valor secreto —solo se envió de forma cifrada a través de la red—, la clave de sesión también es secreta.
  5. Client Finished: Para completar el handshake de TLS, el cliente envía un mensaje al servidor cifrado con la clave de sesión. El servidor descifra este mensaje y verifica su corrección. Si coincide, el servidor sabe que el cliente calculó correctamente la clave de sesión.
  6. Server Finished: El servidor también envía un mensaje cifrado con la clave de sesión compartida. Descifrar y verificar este mensaje demuestra al cliente que el servidor calculó correctamente la clave de sesión.

 

En este punto, el cliente y el servidor disponen de una clave de cifrado compartida conocida solo por ellos. Durante el resto de la sesión de TLS, todos los mensajes se cifrarán utilizando esta clave de sesión.

Una estructura alternativa

Como se mencionó anteriormente, el uso de diferentes algoritmos de cifrado asimétrico puede provocar pequeños cambios en los pasos. Por ejemplo, si el cliente y el servidor optan por utilizar Diffie-Hellman en lugar de RSA, el contenido de los mensajes enviados en los pasos 2 y 3 se modifica ligeramente:

  • En el paso 2, el servidor enviará un paquete firmado digitalmente que contiene el client random, el server random y su parámetro Diffie-Hellman.
  • Tras validar la firma digital, el cliente responde con un mensaje que contiene su parámetro Diffie-Hellman en lugar de un premaster secret.

 

Utilizando estos parámetros Diffie-Hellman y los client y server randoms, es posible que el cliente y el servidor calculen una clave privada secreta compartida. Al final, Diffie-Hellman y RSA producen el mismo resultado de formas ligeramente diferentes.

Más allá del handshake básico

El proceso aquí descrito es el handshake básico de TLS, que se utiliza en la mayoría de las sesiones de TLS. Sin embargo, es posible añadir pasos adicionales que proporcionan ciertos beneficios.

Por ejemplo, el handshake básico de TLS utiliza un certificado digital para autenticar el servidor ante el cliente, pero no autentica el cliente ante el servidor. Una versión modificada del handshake de TLS puede enviar también el certificado digital de un cliente al servidor, logrando así la autenticación mutua.