Apretón de manos TLS: Bajo el Capó

Server-ServerKeyExchange

Este mensaje lleva los parámetros del algoritmo de intercambio de claves que el cliente necesita del servidor para derivar secretos intermedios que se utilizarán al construir las claves de sesión finales para el cifrado simétrico por ambas partes. Es opcional, ya que algunos algoritmos de intercambio de claves, como el intercambio de claves RSA, no requieren estos parámetros, ya que el certificado del servidor en sí será suficiente para que el cliente construya y comunique de forma segura el secreto pre-maestro con el servidor.

p. ej. si el método de intercambio de claves elegido por el servidor en un paso anterior es Diffie–Hellman (DH), el servidor incluye este mensaje después del certificado, que incluirá los componentes públicos necesarios para generar el secreto maestro.

Server-CertificateRequest

Este mensaje se enviará si la autenticación de cliente SSL está habilitada en el servidor. Esto normalmente no se requiere en la mayoría de los servidores web, pero para requisitos de alta seguridad, el servidor puede requerir el certificado del cliente para la autenticación. Junto con la solicitud de certificado, el servidor envía los tipos de cliente que son aceptables y también indica una lista de Nombres Distinguidos de Entidades de certificación en las que el servidor confía. Esta lista incluye las autoridades de CA disponibles en el almacén de confianza del servidor.

Server-ServerHelloDone

Finalmente, el servidor envía el mensaje ServerHelloDone indicando al cliente que el servidor ha terminado de pasar los parámetros de seguridad. Este mensaje finaliza la parte del servidor de la negociación del apretón de manos. Este mensaje no llevará ninguna otra información.

Certificado de cliente

El cliente responde con un certificado de cliente si el servidor solicita el mensaje de autenticación de cliente con Solicitud de certificado. Sin embargo, antes de enviar el certificado, el cliente verificará el DN del emisor del certificado del cliente que se puede encontrar en la lista de Nombres Distinguidos de CA de confianza enviadas por el servidor. Si no se encontró el DN del emisor, el cliente no enviará su certificado al servidor. En el lado del servidor, si la autenticación de certificados de cliente es obligatoria, el protocolo de enlace TLS fallará aquí. De lo contrario, el cliente enviará su certificado y los certificados intermedios necesarios que se encadenen al DN coincidente que aparece en el mensaje de solicitud de certificado.

Client-ClientKeyExchange

El mensaje ClientKeyExchange contiene el secreto pre-maestro, que es generado por el cliente. Esto se lleva a cabo de acuerdo con el conjunto de cifrado agreed por ambas partes en un paso anterior. Tanto el cliente como el servidor utilizarán esto para generar un secreto maestro del que ambos derivarán las claves criptográficas finales necesarias para establecer el canal codificado. El cliente encripta el secreto pre-maestro con la clave pública del servidor, de modo que si un espía intercepta este bit de datos, no podrá descifrarlo ya que no tiene acceso a la clave privada del servidor. La clave maestra proporciona al servidor los datos necesarios para generar las claves para el cifrado simétrico. Sin embargo, si el conjunto de cifrado elegido para esta sesión fue DH, entonces el ClientKeyExchange contiene los parámetros públicos de DH del cliente en lugar de un secreto pre-maestro.

Client-CertificateVerify

Este mensaje es utilizado por el cliente para demostrar al servidor que posee la clave privada correspondiente a su certificado de clave pública. El mensaje contiene información con hash (hash de todos los mensajes intercambiados hasta ahora durante el proceso de apretón de manos) que está firmada digitalmente por el cliente. Se requiere si el servidor emitió una solicitud de certificado al cliente, de modo que el cliente ha enviado un certificado en respuesta que debe verificarse en el lado del servidor.

Client-ChangeCipherSpec

El mensaje ChangeCipherSpec es solo un mensaje del cliente para informar al servidor de que todos los datos que el cliente envíe de aquí en adelante se cifrarán utilizando los parámetros de seguridad acordados. En este punto, tanto el cliente como el servidor tienen todos los componentes necesarios para generar el secreto maestro y luego derivar claves de sesión criptográficas.Ambas partes verifican que el apretón de manos se ha llevado a cabo según lo planeado y que ambos han generado claves idénticas enviando un mensaje final cifrado que indica que el cifrado está activado.

Cliente terminado

Primero, el cliente envía un mensaje cifrado Terminado al servidor. Este mensaje es un hash criptográfico (resumen de mensaje), de todos los mensajes de apretón de manos anteriores combinados, seguido de un número especial que identifica el rol del cliente, el secreto maestro y el relleno. Se cifra con la clave de sesión recién generada y se envía al servidor.

Server-ChangeCipherSpec

Ahora el servidor envía un mensaje ChangeCipherSpec al cliente para decirle que todos los datos después de este mensaje se cifrarán.

Terminado en el servidor

El mensaje ChangeCipherSpec va seguido de un mensaje cifrado terminado del servidor al cliente. Este es un hash criptográfico generado por el servidor, de todos los componentes utilizados durante el proceso de hanshake junto con un número especial que identifica el rol del servidor.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.