it-swarm.com.de

Wird die Verschlüsselung in HTTPS vom Browser oder vom System durchgeführt?

Dies mag eine Frage des gesunden Menschenverstandes sein, aber ich kann keine Dokumentation dazu finden, nachdem ich lange bei Google gesucht habe

Wenn der Browser eine HTTP-Anfrage stellt, verschlüsselt er dann und dort die Daten, und jeder Proxy (auch auf demselben System) empfängt die Daten in verschlüsselter Form? Können diese Daten erfolgreich über einen Proxy manipuliert werden (auf demselben System, nicht im Netzwerk)?

Wenn der Browser die Ver-/Entschlüsselung vornimmt, lassen Sie mich bitte wissen, ob es eine Dokumentation gibt, die dies besagt. Oder ob die Verschlüsselung/Entschlüsselung durch das zugrunde liegende SSL-Protokoll nur auf Transportebene (wenn sich die Anforderung im Netzwerk befindet) sichergestellt wird.

30
gurvinder372

Das 'S' in HTTPS steht für 'sicher' (Hypertext Transfer Protocol Secure). Es ist ein Kommunikationsprotokoll für die sichere Kommunikation, das die Transportschicht-Sicherheit verwendet ( TLS) und sein Vorgänger, Secure Sockets Layer (SSL).

TLS/SSL wird auf Schicht 5 ( Sitzungsschicht ) initialisiert und arbeitet dann auf Schicht 6 ( Präsentationsschicht ). Die meisten Anwendungen wie Webbrowser, E-Mail-Clients oder Instant Messaging enthalten Funktionen der OSI-Ebenen 5, 6 und 7.

Wenn auf HTTPS verwiesen wird, handelt es sich um eine Implementierung von SSL/TLS im Kontext des HTTP-Protokolls. SSL/TLS wird dann in Browser (und Webserver) implementiert, um Vertraulichkeit und Integrität für den HTTPS-Verkehr (tatsächliche Verschlüsselung der Daten) bereitzustellen.

Chromium und Firefox verwenden eine API namens NSS , um SSL/TLS in ihrem jeweiligen Browser zu implementieren.

Microsoft Windows verfügt beispielsweise über ein Sicherheitspaket mit dem Namen SChannel (Secure Channel), das SSL/TLS implementiert, um die Authentifizierung zwischen Clients und Servern bereitzustellen. Schannel wird beispielsweise von Microsoft Windows-Clients/-Servern in einer Active Directory-Umgebung verwendet.

Der Proxy und die Manipulation der Daten hängen vom Protokoll ab, mit dem Sie arbeiten. Ein gutes Beispiel, um sich in einem HTTP (S) -Kontext vertraut zu machen, ist Burp Proxy .

26
Moustache

Es gibt hier viele gute Antworten darauf, wie HTTPS vom Browser behandelt wird, aber ich bin nicht sicher, ob Ihre echte Frage beantwortet wurde.

Können diese Daten erfolgreich über einen Proxy manipuliert werden (auf demselben System, nicht im Netzwerk)?

Hier lautet die Antwort yes . Dies kann auf zwei Arten geschehen:

  • Der Browser selbst wird durch ein böswilliges Plugin, eine Erweiterung oder ein Update gefährdet.
  • Das System ist mit Malware kompromittiert, die die vom Browser verwendeten vertrauenswürdigen Stammzertifikate geändert hat (die möglicherweise mit denen des Betriebssystems identisch sind oder nicht).
14
Iszi

Die Antwort lautet ... möglicherweise.

Wenn Sie https://, dann übernimmt der Browser die Verantwortung für die Verschlüsselung. Einige Browser verwenden vom Betriebssystem bereitgestellte APIs (siehe IE hier)), während andere (z. B. Firefox) ihre eigene Krypto verwenden und die vom Betriebssystem bereitgestellte Krypto vollständig ignorieren.

Die Manipulationssicherheit wird von der PKI garantiert. Wenn also der vertrauenswürdige Zertifikatspeicher Ihres Systems beschädigt wird, sind alle Wetten ungültig. Einige Unternehmen installieren beispielsweise ein eigenes CA-Zertifikat für die interne Signatur, mit dem sie gesicherte Browsersitzungen in der Mitte des Proxys verwalten können, ohne dass der Browser Alarme auslöst. Auch hier werden unter Windows die CAs-Zertifikate vom Betriebssystem verwaltet, wenn Sie IE oder Chrome) verwenden, während Firefox über eine eigene eindeutige und separate Liste vertrauenswürdiger CAs verfügt.

Wenn Ihr System jedoch kompromittiert ist, stoßen Sie an. Es kann keine Sicherheit garantiert werden, nicht einmal SSL. Dies liegt daran, dass sich böswillige Agenten überall in der Kette einbetten können. Vielleicht auf Netzwerkebene, aber vielleicht auch im Browser oder im Bildschirmtreiber oder beim Abhören von Tastenanschlägen ... nichts ist sicher. Es gibt eine heute beliebte Klasse von Malware , die sich in den Browser einfügt, um verschlüsselte Daten zu lesen und zu ändern vorher sie wird verschlüsselt und nachher es wird entschlüsselt. Ein Ziel ist es beispielsweise, Ihre Erfahrung auf einer Online-Banking-Website geringfügig zu ändern, um Bankkonten zu belasten und Ihr gesamtes Geld an den Angreifer zu überweisen.

11
tylerl

Der Browser verschlüsselt die Daten, sofern er dem SSL-Zertifikat/öffentlichen Schlüssel vertraut, den er von dem Server erhalten hat, auf den er zugreift. Dieser wird dann an den Server übergeben und entschlüsselt, um eine verschlüsselte "Sitzung" zwischen den beiden Entitäten zu starten.

Hervorragende, leicht verständliche Erklärung hier .

  1. Der Browser stellt eine Verbindung zu einem mit SSL (https) gesicherten Webserver (Website) her. Der Browser fordert den Server auf, sich selbst zu identifizieren.
  2. Der Server sendet eine Kopie seines SSL-Zertifikats, einschließlich des öffentlichen Schlüssels des Servers.
  3. Der Browser überprüft das Zertifikatstammverzeichnis anhand einer Liste vertrauenswürdiger Zertifizierungsstellen und stellt fest, dass das Zertifikat nicht abgelaufen und nicht widerrufen wurde und dass sein allgemeiner Name für die Website gültig ist, zu der eine Verbindung hergestellt wird. Wenn der Browser dem Zertifikat vertraut, erstellt, verschlüsselt und sendet er einen symmetrischen Sitzungsschlüssel mit dem öffentlichen Schlüssel des Servers zurück.
  4. Der Server entschlüsselt den symmetrischen Sitzungsschlüssel mit seinem privaten Schlüssel und sendet eine mit dem Sitzungsschlüssel verschlüsselte Bestätigung zurück, um die verschlüsselte Sitzung zu starten.
  5. Server und Browser verschlüsseln jetzt alle übertragenen Daten mit dem Sitzungsschlüssel.

Einige wertvolle Informationen zu Zertifizierungsstellen (Zertifizierungsstellen): https://en.wikipedia.org/wiki/Certificate_authority

7
Justice Cassel

Die SSL-Verschlüsselung wird vom Browser (oder einer Anwendung, die SSL verwendet) eingerichtet, auch wenn sich ein lokaler Proxy auf dem System befindet. Ein Beispiel ist beispielsweise, dass Sie bei einem Pentest einen lokalen Proxy einrichten müssen, um über ein eigenes Zertifikat zu verfügen, mit dem der Datenverkehr zwischen dem Browser und dem Endpunkt entschlüsselt werden kann.

4
Lucas Kauffman

Der Browser behandelt die Entschlüsselung normal. Es gibt jedoch einige Ausnahmen. Proxys können SSL entfernen (in diesem Fall wird das Schlosssymbol nicht normal angezeigt) oder sie können etwas intelligenter sein und das SSL mit einem Zertifikat zurücktreten, dem der Client vertraut, sodass die Sperre weiterhin angezeigt wird, jedoch die Informationen zum Zertifikat ist geändert. Wirklich fortgeschrittene Setups können die SSL-Verbindung tatsächlich überwachen, wenn sie Zugriff auf den privaten Schlüssel des Servers haben, ohne etwas zu ändern, obwohl sie serverseitig und nicht clientseitig verwendet werden (aufgrund der Art und Weise, wie der Schlüssel für eine SSL-Sitzung abgeleitet wird).

4
AJ Henderson

Die SSL/TLS-Spezifikationen schreiben das Over-the-Wire-Protokoll vor, sagen jedoch nichts darüber aus, wie ein Client implementiert wird. Normalerweise bietet der Betriebssystemkern einen einfachen unverschlüsselten TCP Socket). Um die SSL-Schicht zu implementieren, ruft der Browser Funktionen in einer kryptografischen Bibliothek auf (z. B. - OpenSSL , SSLeay, GNUtls oder NSS ). Daher erfolgt die SSL-Unterstützung normalerweise in userspace Im selben Prozess wie der Rest des Browsers.

Ob Sie der Meinung sind, dass die SSL-Unterstützung vom "System" bereitgestellt wird, hängt davon ab. Der Browser kann statisch oder dynamisch eine Verknüpfung zur kryptografischen Bibliothek herstellen. Eine dynamische Bibliothek (oder DLL) kann mit dem Betriebssystem verteilt werden, oder der Browserhersteller kann eine eigene Kopie der Bibliothek versenden.

Auf der Serverseite ist die Situation häufig ähnlich, wenn ein Webservermodul SSL-Unterstützung bietet (im Benutzerbereich im selben Prozess wie der Rest des Webservers). Es sind jedoch auch alternative Setups üblich. Kryptografische Unterstützung kann Hardware beschleunigt sein. Ein Reverse Proxy, z. B. ein Load Balancer, kann sich vor dem realen Webserver befinden und zwischen HTTP und HTTPS übersetzen. In diesem Fall werden die Daten möglicherweise unverschlüsselt im Netzwerk des Inhaltsanbieters übertragen.

Um das Problem des Abfangens und Manipulierens von Daten anzugehen: Jeder, der Zugriff auf den privaten Schlüssel des Servers hat, kann die Übertragung leicht entschlüsseln. Folglich kann jeder Server, der ein Zertifikat vorlegt, das von einer von Ihrem Browser vertrauenswürdigen Zertifizierungsstelle signiert ist, die Website spoof, solange der Hostname auf dem Zertifikat mit dem Hostnamen in der URL übereinstimmt. (Beispiel: Opera betreibt einen Proxy für sein Opera Mini Produkt. Der Opera Mini-Browser leitet den gesamten Datenverkehr über den Opera-Proxy und vertraut voll und ganz dem vom Proxy vorgelegten Zertifikat. Obwohl der Datenverkehr zwischen dem Browser und dem Proxy möglicherweise verschlüsselt ist und der Datenverkehr zwischen dem Proxy und dem Inhaltswebserver möglicherweise verschlüsselt ist, verfügt Opera über die technischen Daten) Möglichkeit, alle Daten zu lesen, die über den Proxy übertragen werden.) Schließlich kann jeder, der die Möglichkeit hat, den Browser (durch eine Erweiterung oder einen Plugin-Mechanismus) oder den dynamischen Linker (mithilfe von LD_PRELOAD) oder die Liste der vertrauenswürdigen Zertifikate des Browsers zu manipulieren Fangen Sie auch die Daten ab, obwohl zu diesem Zeitpunkt die Integrität des Clients so beeinträchtigt wurde, dass keine Hoffnung auf eine sinnvolle Sicherheit besteht.

4
200_success

Ein auf dem Clientcomputer installierter Proxy kann tatsächlich einen entschlüsselten HTTPS-Verkehr abfangen.

Zu diesem Zweck muss jedoch ein eigenes Zertifikat im vertrauenswürdigen Stammzertifikatsspeicher abgelegt werden. Dabei wird der Benutzer mit mehreren Sicherheitsherausforderungen konfrontiert, die nicht einfach umgangen werden können. Es ist daher unwahrscheinlich, dass diese Technik von Malware verwendet wird, es sei denn, der Benutzer war dumm genug, dies zuzulassen.

Ein gutes Beispiel für Software, die diese Technik für nicht schändliche Zwecke verwendet, ist Fiddler - ein HTTP/HTTPS-Debugging-Tool für Webentwickler.

  • Informationen zum Aktivieren der HTTPS-Entschlüsselung finden Sie in Fiddler hier .
  • Sie können Screenshots der Dialoge sehen, die der Benutzer akzeptieren muss hier .
2

Was meinst du mit "System"? Die Verschlüsselung sollte in einigen Bibliotheken erfolgen. Dies kann in gewisser Weise als Teil des Systems und in anderer Hinsicht als Teil des Browsers angesehen werden. (Sogar der Browser selbst ist Teil des Systems, in dem Sinne, dass er für alle Benutzer installiert ist, die die ausführbare Datei gemeinsam nutzen.)

Die Sicherheitsgranularität besteht darin, dass sich der gesamte Browser und seine Komponenten im selben Sicherheitskontext befinden (z. B. Betriebssystemprozess mit eigenem Adressraum). Die Krypto findet dabei statt.

Um die Klartextdaten abzufangen, müsste die Software einen Weg finden, den Sicherheitskontext des Browsers zu verletzen. Dies ist normalerweise in Betriebssystemen möglich, die nur grobkörnige Sicherheitsrichtlinien für Code haben, der irgendwie Superuser-Berechtigungen erworben hat.

Z.B. In Unix-ähnlichen Betriebssystemen können wir den Systemaufruf ptrace verwenden, um eine Verbindung zu einem Prozess herzustellen, und verschiedene Dinge ausführen, z. B. die Ausführung anhalten und fortsetzen, Systemaufrufe überwachen oder seinen Speicher untersuchen/ändern.

In den Browser eingehende Daten, wie z. B. Tastenanschläge, die Sie in Formulare eingeben, stammen aus einem anderen Sicherheitskontext, nämlich demjenigen, der den Tastaturtreiber im Betriebssystemkern enthält. Dies kann auch von privilegierten Programmen angegriffen werden, die Zugriff auf Daten erhalten, die über Treiber übertragen werden.

Ein HTTP/HTTPS-Proxy (im Gegensatz zu einem böswilligen Superuser-Programm, das in Prozesse hineinschaut), der auf demselben Computer ausgeführt wird, hat jedoch keinen Zugriff auf Klartextverkehr. Was durch einen Proxy geht, ist das verschlüsselte HTTPS-Protokoll.

0
Kaz