He leído toneladas de documentación relacionada con este problema, pero todavía no puedo unir todas las piezas, así que me gustaría hacer un par de preguntas.
En primer lugar, describiré brevemente el procedimiento de autenticación tal como lo entiendo, ya que puedo estar equivocado al respecto: un cliente inicia una conexión, a la que un servidor responde con una combinación de clave pública, algunos metadatos y firma digital de un autoridad de confianza. Luego, el cliente toma la decisión si confía en el servidor, cifra alguna clave de sesión aleatoria con la clave pública y la envía de vuelta. Esta clave de sesión solo se puede descifrar con la clave privada almacenada en el servidor. El servidor hace esto y luego comienza la sesión HTTPS.
Entonces, si estoy en lo correcto arriba, la pregunta es ¿cómo puede ocurrir el ataque de intermediario en tal escenario? Quiero decir, incluso si alguien intercepta la respuesta del servidor (por ejemplo, www.server.com) con una clave pública y tiene algún medio para hacerme pensar que él es www.server.com, todavía no podría descifrar mi clave de sesión. sin la clave privada.
Hablando de la autenticación mutua, ¿se trata de la confianza del servidor sobre la identidad del cliente? Quiero decir, el cliente ya puede estar seguro de que se está comunicando con el servidor correcto, pero ahora el servidor quiere saber quién es el cliente, ¿verdad?
Y la última pregunta es sobre la alternativa a la autenticación mutua. Si actúo como cliente en la situación descrita, ¿qué sucede si envío un nombre de usuario / contraseña en el encabezado HTTP después de que se establece la sesión SSL? Como yo lo veo, esta información no puede ser interceptada porque la conexión ya está asegurada y el servidor puede confiar en ella para mi identificación. ¿Me equivoco? ¿Cuáles son las desventajas de este enfoque en comparación con la autenticación mutua (solo son importantes las cuestiones de seguridad, no la complejidad de la implementación)?