El protocolo TLS (históricamente conocido como "SSL") utiliza tanto criptografía asimétrica/de clave pública como simétrica, y hay que generar nuevas claves para la encriptación simétrica en cada sesión de comunicación. Estas claves se denominan "claves de sesión".
Después de leer este artículo podrás:
Contenido relacionado
Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.
Copiar el enlace del artículo
Una clave de sesión es cualquier clave criptográfica simétrica utilizada para encriptar una sola sesión de comunicación. En otras palabras, es una clave temporal que solo se utiliza una vez, durante un tramo de tiempo, para encriptar y descifrar datos enviados entre dos partes; las futuras conversaciones entre ambos se encriptarían con claves de sesión diferentes. Una clave de sesión es como una contraseña que alguien restablece cada vez que se conecta.
En TLS (históricamente conocido como "SSL" ), las dos partes que se comunican (el cliente y el servidor) generan claves de sesión al inicio de cualquier sesión de comunicación, durante el protocolo de enlace TLS. La RFC para TLS oficial no llama realmente a estas claves "claves de sesión", pero funcionalmente es exactamente lo que son.
Una sesión es básicamente una conversación entre dos partes. Una sesión tiene lugar en una red, y empieza cuando dos dispositivos se reconocen mutuamente y abren una conexión virtual. Termina cuando los dos dispositivos han obtenido la información que necesitan el uno del otro y envían los mensajes de "cerrar_notificar", finalizando la conexión, como si dos personas se estuvieran enviando mensajes de texto y cerraran la conversación diciendo: "Hablamos más tarde." La conexión también puede terminar debido a la inactividad, como si dos personas estuvieran enviando mensajes de texto y simplemente dejaran de responderse.
Una sesión puede ser un periodo de tiempo determinado, o puede durar tanto como el tiempo en el que las dos partes se estén comunicando. Si es lo primero, la sesión caducará después de un tiempo determinado; en el contexto de la encriptación TLS, los dos dispositivos tendrían entonces que intercambiar información y generar nuevas claves de sesión para reabrir la conexión.
En criptografía, es habitual hablar de claves (normalmente una pieza de datos corta) para referirse a las entradas especiales de un algoritmo criptográfico. Las claves más habituales son las que se utilizan para la encriptación de datos; sin embargo, existen otros tipos de claves para diferentes objetivos.
Un algoritmo de encriptación de datos usa una clave (secreta) para convertir un mensaje en un texto cifrado, es decir, una versión codificada e ilegible del mensaje. Se puede recuperar el mensaje original a partir del texto cifrado mediante el uso una clave de desencriptación.
En un algoritmo de encriptación simétrica, tanto la clave de encriptación como la de desencriptación son iguales. Por ello, cualquiera que tenga la clave secreta puede encriptar y desencriptar datos, y por ese motivo se suele utilizar el término de claves simétricas.
Por el contrario, en un algoritmo de encriptación asimétrica, también conocido como encriptación de clave pública, hay dos claves: una es pública y solo puede utilizarse para encriptar datos, mientras que la otra permanece privada y solo se usa para desencriptar textos cifrados.
HTTPS, que es HTTP en combinación con el protocolo TLS, utiliza ambos tipos de criptografía. Todas las comunicaciones sobre TLS comienzan con un protocolo de enlace TLS. La criptografía asimétrica es fundamental para que funcione el protocolo de enlace TLS.
Durante el transcurso de un protocolo de enlace TLS, los dos dispositivos que se comunican establecerán las claves de sesión, y estas se utilizarán para la encriptación simétrica durante el resto de la sesión (a menos que los dispositivos decidan actualizar sus claves durante la sesión). Lo normal es que los dos dispositivos que se comunican sean un cliente, o un dispositivo de usuario como un portátil o un teléfono inteligente, y un servidor, que es cualquier servidor web que aloja un sitio web. (Para más información, consulta ¿Qué es el modelo cliente-servidor?)
En el protocolo de enlace TLS, el cliente y el servidor también:
El secreto maestro es el resultado de combinar una cadena de datos aleatorios enviada por el cliente, datos aleatorios enviados por el servidor y otra cadena de datos conocida como "secreto premaestro" mediante un algoritmo. El cliente y el servidor cuentan cada uno con esos tres mensajes, por lo que deberían llegar al mismo resultado para el secreto maestro.
A continuación, el cliente y el servidor utilizan el secreto maestro para calcular varias claves de sesión que solo se utilizarán en esa sesión. Deberían terminar con las mismas claves de sesión.
Más información sobre cómo funciona TLS: ¿Qué ocurre en un protocolo de enlace TLS?