Ich habe unzählige Dokumentationen zu diesem Problem gelesen, kann aber immer noch nicht alle Teile zusammenfügen, daher möchte ich ein paar Fragen stellen.
Zunächst beschreibe ich kurz das Authentifizierungsverfahren, wie ich es verstehe, da ich mich in dieser Hinsicht möglicherweise irre: Ein Client stellt eine Verbindung her, auf die ein Server mit einer Kombination aus öffentlichem Schlüssel, einigen Metadaten und digitaler Signatur von a antwortet vertrauenswürdige Autorität. Dann trifft der Client die Entscheidung, ob er dem Server vertraut, verschlüsselt einen zufälligen Sitzungsschlüssel mit dem öffentlichen Schlüssel und sendet ihn zurück. Dieser Sitzungsschlüssel kann nur mit einem auf dem Server gespeicherten privaten Schlüssel entschlüsselt werden. Der Server führt dies aus und dann beginnt die HTTPS-Sitzung.
Wenn ich oben richtig bin, ist die Frage, wie der Man-in-the-Middle-Angriff in einem solchen Szenario stattfinden kann. Ich meine, selbst wenn jemand die Antwort des Servers (z. B. www.server.com) mit einem öffentlichen Schlüssel abfängt und einige Mittel hat, um mich glauben zu lassen, dass er www.server.com ist, kann er meinen Sitzungsschlüssel immer noch nicht entschlüsseln ohne den privaten Schlüssel.
Geht es bei der gegenseitigen Authentifizierung nur um das Vertrauen des Servers in die Clientidentität? Ich meine, der Client kann bereits sicher sein, dass er mit dem richtigen Server kommuniziert, aber jetzt möchte der Server herausfinden, wer der Client ist, oder?
Und die letzte Frage betrifft die Alternative zur gegenseitigen Authentifizierung. Wenn ich in der beschriebenen Situation als Client fungiere, was ist, wenn ich nach dem Einrichten der SSL-Sitzung ein Login / Passwort im HTTP-Header sende? Aus meiner Sicht können diese Informationen nicht abgefangen werden, da die Verbindung bereits gesichert ist und der Server sich bei meiner Identifizierung darauf verlassen kann. Liege ich falsch? Was sind die Nachteile eines solchen Ansatzes im Vergleich zur gegenseitigen Authentifizierung (nur Sicherheitsprobleme sind wichtig, nicht die Komplexität der Implementierung)?