Hallo zusammen,
also es sieht insgesamt so aus:
1. Client baut die Verbindung auf.
2. Server akzeptiert diese zunächst und generiert ein Private/Public-Key-Paar.
Beispiel: 1234 Pub, 5678 Priv.
3. Server sendet dieses Paar unverschlüsselt an den Client.
4. Client generiert ebenfalls ein Schlüsselpaar.
Beispiel: 9012 Pub, 3456 Priv.
5. Der Client verschlüsselt seinen Public Key mit Hilfe des Public Keys vom Server
Beispiel-Ergebnis: abc#*1$
6. Der Client sendet die verschlüsselte Nachricht an den Server.
Folglich: Ein Mithörer ist also ohne den privaten Schlüssel des Servers nicht mehr in der Lage, den Öffentlichen Schlüssel des Clients zu missbrauchen um Nachrichten vom Server an den Client zu Faken. Denn dafür, benötigt er den Öffentlichen Schlüssel des Clients, mit dem der Server normalerweise seine Nachrichten an den Client verschlüsselt.
7. Damit die Client-Nachrichten nicht verfälscht werden, folgt nun eine weitere Prozedur.
8. Da der Server nun den Public-Key des Clients hat, generiert der Server ein neues Schlüssel-Paar.
Beispiel: 9876 Pub, 4321 Priv.
9. Der Public-Key des Servers wird nun mit dem Public-Key des Clients verschlüsselt.
Beispiel: $$%#ab
10. Das Ergebnis wird nun an den Client gesendet.
11. Nun haben beide Partner die entsprechenden Schlüssel für die folgende Kommunikation, ohne dass jemand weiß, mit welchen Daten verschlüsselt wird.
Folglich benötigt ein Mithörer mehrere Schlüssel um den Verkehr abzuhören!
//edit: Anbei halte ich mich an das Schema der typischen asymmetrischen Verschlüsselung:
LG
Marco