Después de leer esta asombrosa explicación de cómo funciona SSL , ahora tengo una confusión.
La respuesta indica que los primeros mensajes de SSL son ClientHello y ServerHello (en respuesta a ClientHello). Ambos de los cuales no están encriptados, corríjame si estoy equivocado. Además, el cliente no comienza a enviar cifrado hasta que se emita ChangeCipherSpec .
Por lo tanto, tanto ClientHello como ServerHello contienen el "cliente aleatorio" y "servidor aleatorio" y también el identificador de sesión. Ahora AFAIK los datos se cifran utilizando una clave de cifrado simétrica, es decir, el cliente y el servidor tienen una copia de la misma clave y el cifrado / descifrado se realiza a través de esa clave única para esa sesión SSL.
Y no es que la se suponga que la clave se computa utilizando el "cliente aleatorio" y "servidor aleatorio" ?
Entonces, si ClientHello y ServerHello son texto sin formato, ¿no puede el atacante usar el mismo algoritmo que el cliente y generar su propia clave simétrica y conversar con el servidor? ¿Hacerse pasar por el cliente?
¿Cómo es esto imposible? ¿Qué me estoy perdiendo aquí?
ACTUALIZACIÓN: Las fases de ServerKeyExchange y ClientKeyExchange también ocurren antes de ChangeCipherSpec , por lo que también se supone que no están encriptadas.