HTTPS: SSL/TLS Handshake
Los parámetros criptográficos sobre el estado de sesión son producidos por el protocolo TLS Handshake, el cual opera sobre la capa de registro TLS. Cuando un cliente y un servidor TLS comienzan a comunicarse por primera vez, acuerdan una versión de protocolo, seleccionan algoritmos criptográficos, opcionalmente se autentican entre sí, y utilizan técnicas para encriptación de clave pública, con el propósito de generar secretos compartidos.
A continuación se detallan el proceso TLS Handshake:
Mensaje "Client Hello": El cliente inicia el handshake enviando un mensaje "hello" hacia el servidor. El mensaje incluirá cual versión de TLS admite el cliente, la suites de encriptación soportados, y una cadena de bytes aleatorios conocida como "client random “.
Mensaje 'Server Hello': En respuesta al mensaje “Client Hello”, el servidor envía un mensaje conteniendo el certificado SSL del servidor, la suite de encriptación seleccionada por el servidor, y el "server random", otra cadena aleatoria de bytes generada por el servidor.
Autenticación: El cliente verifica el certificado SSL del servidor con la autoridad certificadora quien lo emitió. Esto confirma el servidor es quien dice ser, y el cliente está interactuando con el propietario real del dominio.
“premaster secret”: El cliente envía una cadena aleatoria más de bytes, el "premaster secret". Este se cifra con la llave pública, y solo el servidor puede desencriptarlo con la llave privada. (El cliente obtiene la llave pública desde el certificado SSL del servidor).
Llave privada utilizada: El servidor desencripta el “premaster secret”.
Llaves de sesión creadas: Tanto el cliente cuanto el servidor generan llaves de sesión a partir del “client random”, el “server random”, y el “premaster secret” estro. Deberían llegar a los mismos resultados.
El cliente está listo: El cliente envía un mensaje "finished", el cual está encriptado con una llave de sesión.
El servidor está listo: El servidor envía un mensaje "finished" encriptado con una llave de sesión. Se logra un encriptado simétrico seguro: Se completa el handshake, y la comunicación continúa utilizando las llaves de sesión.
Anotar el flujo y el proceso exactos del handshake dependen de la versión de SSL/TLS, como de l suite de encriptación seleccionada. El flujo descrito corresponde a la versión TLS 1.2, y utiliza una negociación de llaves basada en RSA en lugar de Diffie-Helman.
Fuentes:
Sobre el Autor
Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
WhatsApp: https://wa.me/51949304030
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
Youtube: https://www.youtube.com/c/AlonsoCaballero
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/