Wenn zwei Computer eine HTTPS-Verbindung herstellen, müssen sie entscheiden, welcher Schlüssel verwendet werden soll, richtig?
Dazu muss der Schlüssel irgendwann unverschlüsselt von einem Computer zum anderen übertragen werden, oder? Ist es dann nicht möglich, dass ein Man-in-the-Middle den Schlüssel abhört und erhält, um dann die verschlüsselten Pakete damit lesen/schreiben zu können?
Wie vermeidet das HTTPS-Protokoll dies?
Antwort1
SSL verwendet zwei Schlüssel, einen privaten und einen öffentlichen. Nur der öffentliche Schlüssel wird gesendet und dieser hat keinen Wert, wenn Sie den privaten Schlüssel nicht kennen.
Jede Partei verschlüsselt die Daten, die sie sendet, mit dem öffentlichen Schlüssel der anderen Partei (das ist etwas komplexer, aber Sie verstehen, was ich meine). Nur der Empfänger kann den Datenverkehr (einfach) entschlüsseln.
Das bedeutet, dass das Schnüffeln des Datenverkehrs kein so großes Problem darstellt, obwohl Brute-Force-Angriffe je nach Schlüsselgröße und verwendetem Algorithmus natürlich ein Problem darstellen würden.
Man-in-the-Middle-Angriffe, die auf dem Abfangen von Datenverkehr und dem Ersetzen von Servern basieren, sind ein höheres Risiko, werden aber normalerweise durch die Verwendung vertrauenswürdiger Zertifizierungsstellen verhindert. Sie können jedoch verhindert werden, wenn Sie die Warnungen ignorieren, die Ihr Browser anzeigt, wenn ein Serverzertifikat nicht mit dem Site-Namen übereinstimmt oder nicht von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde (z. B. selbst signiertes Zertifikat).
Antwort2
Das HTTPS/SSL-Protokoll verwendet private/öffentliche Schlüssel, um eine sichere Verbindung zu gewährleisten. http://en.wikipedia.org/wiki/Transport_Layer_Security