it-swarm-eu.dev

Warum ist es möglich, eine HTTPS / SSL-Anfrage zu schnüffeln?

Ich bin neu im Bereich HTTP-Anfragen und -Sicherheit und all dem guten Zeug, aber nach dem, was ich gelesen habe, wenn Sie möchten, dass Ihre Anfragen und Antworten verschlüsselt werden, verwenden Sie HTTPS und SSL, und Sie werden gut sein. Jemand in einem vorherige Frage hat einen Link zu dieser App gepostet http://www.charlesproxy.com/ , der zeigt, dass es tatsächlich möglich ist, HTTPS-Anfragen zu schnüffeln und die zu sehen Anfrage und Antwort in PLAIN Text.

Ich habe dies mit dem facebook.com-Login versucht und konnte meinen Benutzernamen und mein Passwort im Klartext sehen. Es war auch einfach. Was ist los? Ich dachte, das wäre der springende Punkt bei HTTPS - Anfragen und Antworten zu verschlüsseln?

48
bitmoe

Dies wird auf ihrer Seite über SSL-Proxy erklärt, möglicherweise nicht mit genügend Erklärungen.

Ein Proxy ist per Definition ein man-in-the-middle : Der Client stellt eine Verbindung zum Proxy her und der Proxy stellt eine Verbindung zum Server her.

SSL macht zwei Dinge:

  • Es gewährleistet die Vertraulichkeit und Integrität der hergestellten Verbindung.
  • Es wird überprüft, mit wem Sie eine Verbindung herstellen.

Es ist der zweite Teil, der hier wichtig und scheinbar kaputt ist: Sie sitzen an Ihrem Browser und sind überrascht, dass Ihr Browser eine Verbindung zum Proxy herstellt, während Sie erwartet haben, dass er eine Verbindung zu Facebook herstellt. Technisch gesehen schnüffelt der Proxy den HTTPS-Verkehr nicht, sondern leitet ihn weiter.

Ihr Browser weiß, dass er mit Facebook verbunden ist, da die Site ein Zertifikat hat, das besagt, dass ich wirklich www.facebook.com Bin. Kryptographie mit öffentlichem Schlüssel stellt sicher, dass nur der Inhaber des privaten Schlüssels eine gültige Verbindung mit diesem Zertifikat herstellen kann. Das ist nur die halbe Miete: Sie haben nur die Behauptung des Servers, dass es wirklich www.facebook.com Und nicht randomhijacker.com Ist. Ihr Browser überprüft außerdem, ob das Zertifikat von einem Zertifizierungsstelle validiert wurde. Ihr Browser oder Betriebssystem enthält eine Liste der Zertifizierungsstellen, denen er vertraut. Auch hier stellt die Kryptografie mit öffentlichem Schlüssel sicher, dass nur die Zertifizierungsstelle Zertifikate ausstellen kann, die Ihr Browser akzeptiert.

Wenn Sie eine Verbindung zum Proxy herstellen, erhält Ihr Browser ein Zertifikat mit der Aufschrift "Ich bin wirklich www.facebook.com". Dieses Zertifikat ist jedoch nicht von einer Zertifizierungsstelle signiert, der Ihr Browser standardmäßig vertraut. Damit:

In beiden Fällen haben Sie Ihren Browser angewiesen, dem Proxy zu vertrauen. So ist es auch. Eine SSL-Verbindung ist nicht sicher, wenn Sie zufälligen Fremden vertrauen.

Empfohlene Lektüre für weitere Informationen:

Sie können https nicht unterbrechen, es sei denn, Sie haben Zugriff auf die Sitzung symmetrischer Schlüssel . Kurz gesagt, https Sitzungen funktionieren folgendermaßen:

  1. Client und Server tauschen erste Informationen aus
  2. Mithilfe dieser Informationen kann der Client den Server authentifizieren , um sicherzustellen, dass das Vertrauen wert ist
  3. Der Client verwendet den öffentlichen Schlüssel des Servers, um ihm ein verschlüsseltes Geheimnis zu senden
  4. Der Server entschlüsselt dieses Geheimnis mit seinem privaten Schlüssel (das kann nur der authentifizierte Server!)
  5. Sowohl der Client als auch der Server verwenden das Geheimnis, um den sitzungssymmetrischen Schlüssel lokal zu generieren
  6. Jetzt können sie sicher miteinander sprechen, da niemand sonst ihren sitzungssymmetrischen Schlüssel kennt

Wenn ein Dritter unterwegs auf das gemeinsame Geheimnis zugreifen kann, kann er auch den sitzungssymmetrischen Schlüssel generieren und die Kommunikation entschlüsseln.