Cuándo usar la tecla Session o Premaster Key

3

Siento que me estoy confundiendo un poco acerca de cómo funciona la primera mitad de TLS. Desde mi entendimiento, es así:

  1. El cliente envía la solicitud al servidor (con las preferencias de la suite de cifrado)
  2. El servidor reconoce las solicitudes, decide el conjunto de cifrado y envía su certificado al cliente

Ahora aquí es donde me confundo. Este enlace , como muchos otros que he visto, sugiere que la clave de sesión está cifrada con el certificado de servidores y se envía directamente a través de la red Sin embargo, luego veo artículos como este eso sugiere que se genera un secreto premaster en el cliente y se cifra mediante el certificado del servidor. Esto significa que la clave nunca se envía a través de la red.

Entonces, ¿cuál es?

    
pregunta james b 04.12.2016 - 22:43
fuente

2 respuestas

0

El secreto principal siempre se usa para obtener más material clave para una sesión TLS (y puede verse efectivamente como clave de sesión) en TLS 1.2 y versiones anteriores. El secreto de premaster es el resultado de un intercambio de claves, de esta clave se deriva el secreto maestro.

Se definen dos métodos de intercambio de claves:

  • intercambio de claves RSA ( RFC 5246, Sección 8.1.1 ). Aquí, el cliente genera un valor aleatorio (premaster secret, Sección 7.4.7.1 ) y cifrado utilizando la clave pública del certificado del servidor. El resultado se envía a través del cable en un mensaje de intercambio de clave de cliente.
  • Intercambio de claves Diffie-Hellman (DH) ( RFC 5246, Sección 8.1.2 ) . Aquí, tanto el servidor como el cliente envían sus valores públicos (¡no desde el Certificado!) Usando los mensajes de Intercambio de claves del cliente y del servidor (Sección 7.4.7.2 ). Usando sus respectivos componentes privados, pueden calcular un secreto compartido que se transforma en un secreto premaster.

El secreto maestro es directamente calculado a partir del secreto premaster (junto con dos valores aleatorios del Cliente y mensajes de saludo del servidor):

For all key exchange methods, the same algorithm is used to convert
the pre_master_secret into the master_secret.  The pre_master_secret
should be deleted from memory once the master_secret has been
computed.

  master_secret = PRF(pre_master_secret, "master secret",
                      ClientHello.random + ServerHello.random)
                      [0..47];

Como puede ver, el secreto del maestro de la memoria es esencial para el cálculo inicial, pero se puede desechar después de que se calcule el secreto maestro. Cuando la reanudación de la sesión está en uso, normalmente el secreto maestro (y no el secreto del maestro de maestro) se almacena directamente en la caché de sesión TLS.

Como nota final, tenga en cuenta que el secreto de premaster para el intercambio de claves RSA puede encontrarse descifrando el (1) secreto de premaster cifrado (que se envió a través de la red) usando la clave RSA privada (2) que está vinculada a certificado y reutilizado para todos los intercambios de claves RSA).

Con el intercambio de claves DH, el secreto del premaster se calcula a partir de (1) un valor público (que se envió a través de la red) y (2) un valor privado (que normalmente es diferente cada vez). El valor privado se descarta (en lugar de reutilizarse, como en el caso RSA). Esto proporciona la propiedad Perfect Forward Secrecy (cuando se hace correctamente sin tomar atajos ).

    
respondido por el Lekensteyn 05.12.2016 - 10:50
fuente
1

La clave pre-maestra y las claves de sesión son dos cosas diferentes.

La clave pre-maestra se usa para proporcionar una mayor coherencia entre las suites de cifrado que pertenecen al cliente & el servidor. Todas sus claves subsiguientes se derivan usando la clave pre-maestra.
Lea este enlace para obtener más detalles: ¿Cuál es el punto de la pre- ¿llave maestra?

La clave de sesión, por otro lado, es la clave simétrica que se comunicará más a fondo. La clave de sesión se deriva utilizando la clave pre-maestra.

    
respondido por el Limit 05.12.2016 - 01:23
fuente

Lea otras preguntas en las etiquetas