¿Qué es un protocolo de enlace TLS?
TLS es un protocolo de encriptación y autenticación diseñado para proteger las comunicaciones en Internet. Un protocolo de enlace TLS es el proceso que inicia una sesión de comunicación que utiliza TLS. Durante un protocolo de enlace TLS, las dos partes que se comunican intercambian mensajes para reconocerse y verificarse entre sí, establecer los algoritmos de criptografía que utilizarán y acordar las claves de sesión. Los protocolos de enlace TLS son una parte fundamental del funcionamiento de HTTPS.
Protocolos de enlace TLS en comparación con SSL
SSL, o Secure Sockets Layer, fue el protocolo de seguridad original desarrollado para HTTP. Fue sustituido por TLS, o Transport Layer Security, hace algún tiempo. Los protocolos de enlace SSL ahora se denominan protocolos de enlace TLS, aunque el nombre "SSL" sigue siendo muy utilizado.
Documento técnico
Optimiza la eficiencia de los certificados TLS
Guía
La guía Zero Trust para proteger el acceso a las aplicaciones
¿Cuándo se produce el protocolo de enlace TLS?
Un protocolo de enlace TLS tiene lugar cada vez que un usuario navega a un sitio web a través de HTTPS y el navegador comienza a consultar el servidor de origen del sitio web. También se produce siempre que cualquier otra comunicación utilice HTTPS, incluidas las llamadas a la API y las consultas al DNS sobre HTTPS.
Los protocolos de enlace TLS se producen después de que se haya abierto una conexión TCP mediante un protocolo de enlace TCP.
SSL seguro
Se incluye un SSL gratis en todos los planes de Cloudflare
¿Qué sucede durante un protocolo de enlace TLS?
Durante un protocolo de enlace TLS, el cliente y el servidor juntos realizarán las siguientes acciones:
- Especificar que versión de TLS (TLS 1.0, 1.2, 1.3, etc.) van a utilizar.
- Decidir qué conjuntos de cifrado (ver más abajo) van a utilizar.
- Autenticar la identidad del servidor mediante la clave pública del servidor y la firma digital de la autoridad del certificado SSL.
- Generar claves de sesión para utilizar la encriptación simétrica una vez finalizado el protocolo de enlace.
¿Cuáles son los pasos de los protocolos de enlace TLS?
Los protocolos de enlace TLS son una serie de datagramas o mensajes, intercambiados por un cliente y un servidor. Un protocolo de enlace TLS implica varios pasos, ya que el cliente y el servidor intercambian la información necesaria para completar el protocolo de enlace y permitir una conversación posterior.
Los pasos exactos de un protocolo de enlace TLS variarán según el tipo de algoritmo de intercambio de claves utilizado y de los conjuntos de cifrado compatibles con ambas partes. El algoritmo de intercambio de claves RSA, aunque ahora se considera que no es seguro, se utilizaba en las versiones de TLS anteriores a la 1.3. A grandes rasgos es de la siguiente manera:
- El mensaje de "hola del cliente": el cliente inicia el protocolo de enlace enviando un mensaje de "hola" al servidor. El mensaje incluirá qué versión de TLS es compatible con la del el cliente, los conjuntos de cifrado compatibles y una cadena de bytes aleatorios conocida como "cadena aleatoria del cliente".
- El mensaje "hola del servidor": en respuesta al mensaje "hola" del cliente, el servidor envía un mensaje que contiene el certificado SSL del servidor, el conjunto de cifrado elegido por el servidor y la cadena "aleatoria del servidor", otra cadena de bytes aleatoria generada por el servidor.
- Autenticación: el cliente verifica el certificado SSL del servidor con la autoridad certificadora que lo emitió. De este modo, se confirma que el servidor es quien dice ser, y que el cliente está interactuando con el propietario real del dominio.
- El secreto premaster: el cliente envía una cadena más de bytes aleatorios, el "secreto premaster". El secreto premaster se cifra con la clave pública y solo lo puede descifrar el servidor con la clave privada. (El cliente obtiene la clave pública del certificado SSL del servidor).
- Uso de la clave privada: el servidor descifra el secreto premaster.
- Creación de claves de sesión: tanto el cliente como el servidor generan claves de sesión a partir de la cadena aleatoria del cliente, la del servidor y el secreto premaster. Deberían llegar a los mismos resultados.
- El cliente está listo: envía un mensaje de "finalizado" que está cifrado con una clave de sesión.
- El servidor está listo: envía un mensaje de "finalizado" cifrado con una clave de sesión.
- Se consigue una encriptación simétrica segura: se completa el protocolo de enlace, y la comunicación continúa utilizando las claves de sesión.
Todos los protocolos de enlace TLS utilizan la criptografía asimétrica (la clave pública y la privada), pero no todos utilizan la clave privada en el proceso de generación de claves de sesión. Por ejemplo, un protocolo de enlace Diffie-Hellman efímero procede de la siguiente forma:
- Hola del cliente: el cliente envía un mensaje de hola con la versión del protocolo, la cadena aleatoria del cliente y una lista de conjuntos de cifrado.
- Hola del servidor: el servidor responde con su certificado SSL, su conjunto de cifrado seleccionado y la cadena aleatoria del servidor. A diferencia del protocolo de enlace RSA descrito anteriormente, en este mensaje el servidor también incluye lo siguiente (paso 3):
- Firma digital del servidor: el servidor calcula una firma digital de todos los mensajes hasta ese momento.
- Firma digital confirmada: el cliente verifica la firma digital del servidor, confirmando que el servidor es quien dice ser.
- Parámetro DH del cliente: el cliente envía su parámetro DH al servidor.
- El cliente y el servidor calculan el secreto premaster: en lugar de que el cliente genere el secreto premaster y lo envíe al servidor, como en un protocolo de enlace RSA, el cliente y el servidor utilizan los parámetros DH que intercambiaron para calcular un secreto premaster coincidente por separado.
- Creación de las claves de sesión: ahora, el cliente y el servidor calculan las claves de sesión a partir del secreto premaster, la cadena aleatoria del cliente y la del servidor, al igual que en un protocolo de enlace RSA.
- El cliente está listo: igual que con un protocolo de enlace RSA.
- El servidor está listo.
- Se consigue una encriptación simétrica segura.
*Parámetro DH: DH son las iniciales de Diffie-Hellman. El algoritmo Diffie-Hellman utiliza cálculos exponenciales para llegar al mismo secreto premaster. El servidor y el cliente proporcionan cada uno un parámetro para el cálculo, y cuando se combinan dan lugar a un cálculo diferente en cada lado, con resultados que son iguales.
Para obtener más información sobre la diferencia entre los protocolos de enlace Diffie-Hellman efímeros y otros tipos de protocolos de enlace, y cómo logran la confidencialidad directa, consulta ¿Qué es el SSL sin clave?
¿Qué tiene de diferente un protocolo de enlace en TLS 1.3?
TLS 1.3 no es compatible con RSA, ni otros paquetes de encriptación ni parámetros vulnerables a los ataques. También acorta el protocolo de enlace TLS, lo que hace que un protocolo de enlace TLS 1.3 sea más rápido y más seguro.
Los pasos básicos de un protocolo de enlace TLS 1.3 son los siguientes:
- Hola del cliente: el cliente envía un mensaje de hola con la versión del protocolo, la cadena aleatoria del cliente y una lista de conjuntos de cifrado. Ya que se ha eliminado la compatibilidad con conjuntos de cifrado inseguros en TLS 1.3, se ha reducido mucho el número de conjuntos de cifrado posibles. El hola del cliente también incluye los parámetros que se utilizarán para calcular el secreto premaster. En esencia, el cliente asume que conoce el método de intercambio de claves preferido por el servidor (lo cual, debido a la lista simplificada de conjuntos de cifrado, probablemente sea así). Esto reduce la longitud total del protocolo de enlace, una de las diferencias importantes entre los protocolos de enlace TLS 1.3 y los protocolos de enlace TLS 1.0, 1.1 y 1.2.
- El servidor genera el secreto maestro: en este punto, el servidor ha recibido el cliente aleatorio y los parámetros y conjuntos de cifrado del cliente. Ya tiene el servidor aleatorio, ya que puede generarlo por sí mismo. Por lo tanto, el servidor puede crear el secreto maestro.
- Hola del servidor y "Terminado": el hola del servidor incluye el certificado del servidor, la firma digital, el servidor aleatorio y el conjunto de cifrado elegido. Como ya tiene el secreto maestro, también envía un mensaje de "Finalizado".
- Pasos finales y "Finalizado" del cliente: el cliente verifica la firma y el certificado, genera el secreto maestro y envía el mensaje de "Finalizado".
- Se consigue una encriptación simétrica segura.
Modo 0-RTT para la reanudación de la sesión
TLS 1.3 también es compatible con una versión todavía más rápida del protocolo de enlace TLS, que no necesita recorridos de ida y vuelta, ni comunicación de ida y vuelta entre el cliente y el servidor. Si el cliente y el servidor se han conectado antes (por ejemplo, si el usuario ha visitado antes el sitio web), cada uno de ellos puede derivar otro secreto compartido de la primera sesión, conocido como "secreto principal de reanudación ". El servidor también envía al cliente algo que se conoce como ticket de sesión durante esta primera sesión. El cliente puede utilizar este secreto compartido para enviar datos encriptados al servidor en su primer mensaje de la siguiente sesión, junto con ese ticket de sesión. Y el TLS entre el cliente y el servidor se reanuda.
¿Qué es un conjunto de cifrado?
Un conjunto de cifrado es un grupo de algoritmos que se utilizan para establecer una conexión de comunicaciones segura. Hay una serie de conjuntos de cifrado de amplio uso, y una parte esencial del protocolo de enlace TLS es acordar qué conjunto de cifrado se utilizará para este protocolo de enlace.
Para obtener más información sobre TLS/SSL, consulta ¿Cómo funciona SSL?