Tengo una pregunta con respecto al apretón de manos TLS. A partir de mi lectura, llegué a saber que master_secret
se derivará de pre_master_secret
compartido por el cliente de la siguiente manera:
master_secret = PRF(pre_master_secret, "master secret", lientHello.random + ServerHello.random)
-
De este
master_secret
se derivan las claves de sesión siguientes. -
En el lado del cliente:
client_write_MAC_secret[SecurityParameters.hash_size] client_write_key[SecurityParameters.key_material_length] client_write_IV[SecurityParameters.IV_size]
-
En el lado del servidor:
server_write_MAC_secret[SecurityParameters.hash_size] server_write_key[SecurityParameters.key_material_length] server_write_IV[SecurityParameters.IV_size]
Cuando estas claves de sesión se generan por separado en el cliente y el servidor y nunca se intercambian y se transmiten entre ellas, ¿cómo descifra el servidor el mensaje cifrado del cliente y viceversa?
O las 6 claves de sesión se crean individualmente tanto en el cliente como en el servidor y esperamos que sean similares. Si esto es cierto, tanto el cliente como el servidor pueden descifrar los otros mensajes cifrados.