Eu li muita documentação relacionada a esse problema, mas ainda não consigo juntar todas as peças, então gostaria de fazer algumas perguntas.
Em primeiro lugar, descreverei brevemente o procedimento de autenticação como o entendo, pois posso estar enganado a esse respeito: Um cliente inicia uma conexão, à qual um servidor responde com uma combinação de chave pública, alguns metadados e assinatura digital de um autoridade confiável. Então o cliente toma a decisão se confia no servidor, criptografa alguma chave de sessão aleatória com a chave pública e a envia de volta. Esta chave de sessão pode ser descriptografada apenas com a chave privada armazenada no servidor. O servidor faz isso e a sessão HTTPS é iniciada.
Então, se eu estiver correto acima, a questão é como o ataque man-in-the-middle pode ocorrer em tal cenário? Quero dizer, mesmo se alguém interceptar a resposta do servidor (por exemplo, www.server.com) com a chave pública e tiver algum meio de me fazer pensar que ele é www.server.com, ele ainda não será capaz de descriptografar minha chave de sessão sem a chave privada.
Falando sobre autenticação mútua, é tudo sobre a confiança do servidor sobre a identidade do cliente? Quer dizer, o cliente já pode ter certeza de que está se comunicando com o servidor certo, mas agora o servidor quer saber quem é o cliente, certo?
E a última pergunta é sobre a alternativa à autenticação mútua. Se eu atuar como cliente na situação descrita, e se eu enviar um login / senha no cabeçalho HTTP após o estabelecimento da sessão SSL? A meu ver, essas informações não podem ser interceptadas porque a conexão já está segura e o servidor pode confiar nela para minha identificação. Estou errado? Quais são as desvantagens de tal abordagem em comparação com a autenticação mútua (apenas questões de segurança são importantes, não a complexidade da implementação)?