Cómo funciona el Handshake de SSL/TLS

Cómo funciona el Handshake de SSL/TLS

30.11.2022
Autor: HostZealot Team
2 min.
1657

Handshake SSL/TLS - un "handshake" entre el servidor y el cliente. En pocas palabras, se trata de identificarse. Se produce durante una conexión HTTPS dentro de un túnel cifrado SSL/TLS, que garantiza la seguridad tanto del servidor como del cliente. Una vez identificada con éxito, se genera una clave de sesión secreta que garantiza la seguridad de la comunicación: sirve tanto para cifrar como para descifrar los datos que se transmiten.

Codificación de datos

El proceso de handshake va necesariamente acompañado de un intercambio de información sobre las tecnologías criptográficas soportadas - esto es necesario para que el servidor y el cliente se pongan de acuerdo sobre el mejor conjunto de cifrado para ambas partes. El servidor transfiere su certificado SSL al cliente una vez acordado.

El cifrado simétrico impide que terceros lean los datos. Además, aunque los paquetes sean interceptados, no pueden ser alterados porque cada mensaje contiene un código MAC, que comprueba la integridad de los datos.

Cómo funciona el handshaking de SSL/TLS

Si piensa en el handshaking de SSL como un diálogo entre un servidor y un cliente, el proceso sería el siguiente:

  1. El cliente solicita al servidor que establezca una conexión segura y ofrece un conjunto de cifrado que "entiende", así como una versión compatible de SSL/TLS.
  2. El servidor comprueba el conjunto de cifrado enviado, lo compara con el suyo propio y envía una respuesta al cliente con un archivo de certificado y una clave pública.
  3. El cliente comprueba el certificado y, si está bien, se ofrece a verificar la clave privada. Para ello, la genera y cifra la clave secreta compartida con la clave pública del servidor enviada previamente.
  4. El servidor acepta la clave y la verifica con su clave privada. A continuación, crea un secreto maestro, que se utilizará para cifrar la información que se intercambia.

A continuación, el cliente envía un mensaje de prueba al servidor, cifrado mediante un método previamente pensado, y el servidor lo descifra y analiza. Esto completa el Handshake SSL/TLS, y el cliente y el servidor pueden continuar intercambiando información.

Si la sesión finaliza y el cliente vuelve a ponerse en contacto con el servidor algún tiempo después, no es necesario repetir el procedimiento de "apretón de manos": todos los datos generados anteriormente y el secreto principal seguirán siendo válidos. Todo el proceso es cuestión de segundos y es completamente imperceptible para el usuario.

cómo funciona el handshake de ssl/tls

Algoritmo Diffie-Hellman en TLS Handshake 1.2

La versión 1.2 del protocolo TLS apareció en 2008 como una importante actualización del protocolo 1.1 con un mecanismo mejorado para que las partes se pongan de acuerdo sobre las listas de métodos de cifrado admitidos. Tiene el siguiente aspecto:

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

Donde:

  • TLS - protocolo de transferencia de datos;
  • ECDHE - una clave temporal (efímera);
  • ECDSA - algoritmo de autenticación;
  • AES 128 GCM - algoritmo de cifrado simétrico;
  • SHA256 - algoritmo de hash de datos.

Se trata del algoritmo Diffie-Hellman, pero ahora se considera obsoleto y apenas se utiliza en ningún sitio.

Kits de cifrado TLS 1.3

Esta versión del protocolo vio la luz en 2018 y ha sufrido una serie de mejoras significativas:

  • los procesos de negociación de claves, los procesos de autenticación y los conjuntos de cifrado se han separado;
  • se ha añadido una norma que establece la obligatoriedad de la firma digital;
  • implementación de la función de recuperación de claves HKDF;
  • los procesos de conexión se han acelerado;
  • se ha prohibido la compresión de datos, los cifrados de mensajería no autentificados y la renegociación, que proporcionaba cierta vulnerabilidad a la versión anterior del protocolo;
  • se ha añadido el cifrado de flujo ChaCha20 con código MAC Poly1305, los eficientes algoritmos de firma digital Ed25519 y Ed448, y los correspondientes protocolos de intercambio de claves Curve25519 y Curve448.

El kit de cifrado del apretón de manos TLS 1.3 tiene el siguiente aspecto:

TLS_AES_256_GCM_SHA384

Por lo tanto, aquí:

  • TLS - un protocolo;
  • AES-256 en modo GCM - algoritmo de cifrado y autenticación con datos adicionales (AEAD);
  • SHA384 - algoritmo de la función de generación de claves hash (HKFD).

El protocolo TLS 1.3 ha experimentado un gran número de cambios y mejoras que han tenido un impacto positivo en la seguridad y el rendimiento de los procesos de Handshake, y la autenticación en sí misma tarda mucho menos. La velocidad del Handshake casi se ha duplicado, y el protocolo ha perdido varias vulnerabilidades que antes asolaban a los administradores de sistemas.

Resumen

La opción más segura es el protocolo criptográfico TLS 1.3, pero tiene una compatibilidad específica hacia atrás. Cuando se establece una conexión, el cliente y el servidor intercambian versiones del protocolo y se selecciona aquella con la que ambas partes pueden trabajar. En la práctica, sin embargo, se descubrió que varios servidores que ejecutaban el antiguo protocolo TLS 1.2 abandonaban instantáneamente la conexión si el proceso de "handshake" se realizaba a través del protocolo TLS 1.3. Este fenómeno se denominó osificación, y causó problemas en los primeros años con la implementación del nuevo protocolo. Hoy en día, este problema es casi inexistente y los propios servidores han migrado en gran medida a TLS 1.3, por lo que recomendamos su uso.

Artículos Relacionados