Eso muestra el mecanismo de la conexión.
¿Cuántas teclas se están utilizando en esta conexión? ¿Qué son? ¿Quién los conoce? ¿Cuál es el propósito de cada clave?
Hay al menos tres claves:
La clave de sesión se puede reemplazar sin problemas durante la sesión en ciertas configuraciones. Esto se puede usar para proporcionar PFS (secreto hacia delante perfecto) en las suites de cifrado que lo admiten.
No hay un límite inherente en el número de claves de sesión que se pueden usar para una sola conexión.
En algunas configuraciones, una o más claves públicas intermedias de la CA X.509 (cadena) también están en la cadena de firmas de la clave pública del servidor. Estos son conocidos por todas las partes que se conectan a cualquier servidor firmado por la misma cadena y al servidor. El servidor debe proporcionar estas claves durante el protocolo de enlace TLS. En todas las configuraciones de una conexión TLS validada por una CA, la cadena será firmada en la raíz por una CA raíz en la que el software de su cliente está configurado para confiar de forma inherente.
Si está incluyendo certificados CA, hay al menos cuatro claves y posiblemente más si se utilizan certificados CA intermedios.
Todos juntos deben haber dieciséis (16) teclas que entran a jugar:
(a) Clave de firma de GeoTrust Global CA, utilizada para autofirmar el certificado de GeoTrust y para firmar el certificado de Google Internet Authority G2. Solo Geo Trust lo sabe.
(b) Clave de verificación de GeoTrust Global CA, utilizada para verificar las firmas en el certificado de GeoTrust y el certificado de Google Internet Authority G2. Todo el mundo lo sabe.
(c) La clave de firma de Google Internet Authority G2, utilizada para firmar el certificado de Google.ca. Solo Google Internet Authority G2 lo sabe.
(d) La clave de verificación de Google Internet Authority G2, utilizada para verificar la firma en el certificado de google.ca. Todo el mundo lo sabe.
(e) Clave de firma de Google.ca, utilizada para firmar la clave pública efímera de curva elíptica (ECDHE) de Google.ca. Solo google.ca lo sabe.
(f) La clave de verificación de Google.ca, utilizada para verificar la firma en la clave pública ECDHE de google.ca. Todo el mundo lo sabe.
(g) la clave pública ECDHE de Google.ca, enviada al cliente para un acuerdo clave. Todo el mundo lo sabe.
(h) La clave privada ECDHE de Google.ca, utilizada para generar la clave pública correspondiente, y para aplicarla a la clave pública del cliente para formar un secreto compartido. Solo Google.ca lo sabe.
(i) La clave pública ECDHE del cliente, enviada a google.ca para un acuerdo clave. Todo el mundo lo sabe.
(j) La clave privada ECDHE del cliente, utilizada para generar la clave pública correspondiente, y para aplicarla a la clave pública de google.ca para formar un secreto compartido. Solo el cliente lo sabe.
(k) Secreto compartido. Es el resultado del intercambio de claves ECDHE, también llamado el secreto pre-maestro. Solo el cliente y el servidor lo saben.
(l) Maestro secreto. Derivado de valores pre-master secret y cliente / servidor aleatorios, y se utiliza para derivar la siguiente clave simétrica. Solo el cliente y el servidor lo saben.
(m) Clave de cifrado simétrica de escritura de cliente. Solo el cliente y el servidor lo saben.
(n) Clave de cifrado simétrico de escritura del servidor. Solo el cliente y el servidor lo saben.
(o) Tecla MAC de escritura del cliente. Solo el cliente y el servidor lo saben.
(p) Tecla MAC de escritura del servidor. Solo el cliente y el servidor lo saben.
Consulte Los primeros milisegundos de una conexión HTTPS , generando Mucha sección de llaves.
Tienes:
- cient_write_MAC_secret [SecurityParameters.hash_size]
- server_write_MAC_secret [SecurityParameters.hash_size]
- client_write_key [SecurityParameters.key_material_length]
- server_write_key [SecurityParameters.key_material_length]
- client_write_IV [SecurityParameters.IV_size]
- server_write_IV [SecurityParameters.IV_size]
Aunque si llamas las claves del IV o no es otra cuestión (y tampoco pueden usarse, por ejemplo, en el modo de cifrado de flujo AES).
También tendrá las claves privadas y públicas en el certificado.
Ambas partes conocen todas las claves anteriores, a excepción de la clave privada que solo el servidor conoce. Los MAC se utilizan para autenticar cada mensaje y las teclas de escritura se utilizan para cifrarlos. Tenga en cuenta que el cliente y el servidor utilizan diferentes claves para cifrar los mensajes.
El par de claves pública y privada se utilizan para autenticar el servidor, es decir, el cliente sabe que está hablando con el servidor correcto y que la conexión no se ha interceptado. Esto se debe a que el cliente cifra un secreto que solo puede ser descifrado por el servidor con su conocimiento de la clave privada, o porque el servidor envía números aleatorios (en el caso de Diffie-Hellman) que están firmados por la clave privada. El cliente puede usar la clave pública para verificar la firma.
Lea otras preguntas en las etiquetas tls key-exchange