Sind HTTPS-Header verschlüsselt?

599

Beim Senden von Daten über HTTPS weiß ich, dass der Inhalt verschlüsselt ist. Ich höre jedoch gemischte Antworten darüber, ob die Header verschlüsselt sind oder wie viel des Headers verschlüsselt ist.

Wie viele HTTPS-Header sind verschlüsselt?

Einschließlich GET / POST-Anforderungs-URLs, Cookies usw.

Dan Herbert
quelle
9
HTTP-Header über HTTPS sind verschlüsselt und auch nicht HTTP-komprimiert (auch wenn der Body dies ist). Dies macht sie weniger anfällig für kompressionsbedingte Angriffe wie BEAST
Neil McGuigan

Antworten:

551

Das ganze Los ist verschlüsselt - alle Header. Aus diesem Grund funktioniert SSL auf vhosts nicht so gut. Sie benötigen eine dedizierte IP-Adresse, da der Host-Header verschlüsselt ist.

Der SNI-Standard (Server Name Identification) bedeutet, dass der Hostname möglicherweise nicht verschlüsselt wird, wenn Sie TLS verwenden. Unabhängig davon, ob Sie SNI verwenden oder nicht, werden die TCP- und IP-Header niemals verschlüsselt. (Wenn dies der Fall wäre, wären Ihre Pakete nicht routingfähig.)

Greg
quelle
3
@ Greg, Da das vhost-Gateway autorisiert ist, konnte das Gateway sie nicht entschlüsseln, den Host-Header beobachten und dann bestimmen, an welchen Host die Pakete gesendet werden sollen?
Pacerier
2
Die Afaik-URL selbst ist nicht verschlüsselt.
Teddy
4
@ Teddu, was meinst du mit "URL selbst ist nicht verschlüsselt." Es ist verschlüsselt, da es Teil des Headers ist.
Dmitry Polushkin
1
Wenn Fiddler zum Erfassen der https-Kommunikation verwendet wird, werden immer noch einige Header angezeigt. Warum? Insbesondere wenn die Internetverbindung über einen Proxy erfolgt, für den eine Authentifizierung erforderlich ist, wird der Proxy-Autorisierungs-Header angezeigt, wenn die Anforderung erneut gesendet wird, nachdem sie beim ersten Senden 407 erhalten hat.
Bochen Lin
1
@Bochen genauso wie Pegasus. Wenn Sie sich an einem Ende des HTTPS-Tunnels befinden, können Sie alles sehen. Genauso kann ich alles in Browser-Devtools sehen.
Nux
97

Die Header sind vollständig verschlüsselt. Die einzigen Informationen, die über das Netzwerk "im Klartext" gesendet werden, beziehen sich auf das SSL-Setup und den D / H-Schlüsselaustausch. Dieser Austausch wurde sorgfältig entwickelt, um Lauschern keine nützlichen Informationen zu liefern. Sobald er stattgefunden hat, werden alle Daten verschlüsselt.

mdb
quelle
4
Nicht alle SSL-Setups beinhalten DH
Dori
30
Um ein wenig pedantisch zu sein: Die IP-Adresse des Clients und des Servers, der Hostname des Servers und Signale zu ihren SSL-Implementierungen sind für Lauscher nützlich und sichtbar.
Poolie
66

Neue Antwort auf alte Frage, sorry. Ich dachte, ich würde meine $ .02 hinzufügen

Das OP fragte, ob die Header verschlüsselt seien.

Sie sind: unterwegs.

Sie sind NICHT: wenn nicht unterwegs.

So kann die URL Ihres Browsers (und in einigen Fällen der Titel) den Querystring (der normalerweise die vertraulichsten Details enthält) und einige Details in der Kopfzeile anzeigen. Der Browser kennt einige Header-Informationen (Inhaltstyp, Unicode usw.). Der Browserverlauf, die Kennwortverwaltung, Favoriten / Lesezeichen und zwischengespeicherte Seiten enthalten alle den Querystring. Serverprotokolle auf der Remote-Seite können auch Querystring sowie einige Inhaltsdetails enthalten.

Außerdem ist die URL nicht immer sicher: Domäne, Protokoll und Port sind sichtbar. Andernfalls wissen Router nicht, wohin sie Ihre Anforderungen senden sollen.

Wenn Sie einen HTTP-Proxy haben, kennt der Proxyserver die Adresse. Normalerweise kennt er nicht den vollständigen Querystring.

Wenn sich die Daten also bewegen, sind sie im Allgemeinen geschützt. Wenn es nicht unterwegs ist, ist es nicht verschlüsselt.

Nicht zu wählen, aber Daten am Ende werden ebenfalls entschlüsselt und können nach Belieben analysiert, gelesen, gespeichert, weitergeleitet oder verworfen werden. Und Malware an beiden Enden kann Schnappschüsse von Daten erstellen, die in das SSL-Protokoll eingegeben (oder beendet) werden - beispielsweise (schlechtes) Javascript auf einer Seite in HTTPS, das heimlich http- (oder https-) Aufrufe an Protokollierungswebsites tätigen kann (seit dem Zugriff auf die lokale Festplatte) ist oft eingeschränkt und nicht nützlich).

Außerdem werden Cookies auch nicht unter dem HTTPS-Protokoll verschlüsselt. Entwickler, die vertrauliche Daten in Cookies (oder anderswo) speichern möchten, müssen ihren eigenen Verschlüsselungsmechanismus verwenden.

In Bezug auf den Cache werden die meisten modernen Browser keine HTTPS-Seiten zwischenspeichern. Diese Tatsache wird jedoch nicht durch das HTTPS-Protokoll definiert. Es hängt vollständig vom Entwickler eines Browsers ab, um sicherzustellen, dass keine über HTTPS empfangenen Seiten zwischengespeichert werden.

Wenn Sie sich also Sorgen um das Schnüffeln von Paketen machen, sind Sie wahrscheinlich in Ordnung. Wenn Sie sich jedoch Sorgen über Malware oder jemanden machen, der Ihren Verlauf, Ihre Lesezeichen, Cookies oder Ihren Cache durchsucht, sind Sie noch nicht aus dem Wasser.

Andrew Jennings
quelle
20
Ich weiß, dass die guten Antworten oben sind, aber dies fügt erneut fehlerhafte Informationen ein. Domain ist nicht sichtbar, es sei denn, SNI wird verwendet. Andere Protokolle als IP und TCP sind nicht sichtbar. Sie können nicht feststellen, ob ich HTTP 1.1, SPDY oder HTTP2 verwende. Was auf den beiden Endpunkten sichtbar ist, spielt keine Rolle, da das Ziel der Verschlüsselung nicht darin besteht, Dinge unsichtbar zu machen, sondern sie nur für vertrauenswürdige Parteien sichtbar zu machen . Die Endpunkte sind also in der Frage enthalten und ungefähr 2/3 Ihrer Antwort können entfernt werden. Die Proxy-Informationen sollten lauten: Wenn Sie einen HTTPS-Proxy verwenden, hat dieser Zugriff auf alles .
Melvyn
6
Ihr Link besagt ausdrücklich, dass Cookies verschlüsselt sind: "Die Verbindung des Besuchers ist verschlüsselt, wodurch URLs, Cookies und andere vertrauliche Metadaten verdeckt werden."
DylanYoung
1
Ja, das ist richtig. Cookies werden während der Übertragung verschlüsselt, aber sobald sie den Browser erreichen, werden sie nicht mehr durch das SSL-Protokoll verschlüsselt. Es ist für einen Entwickler möglich, die Cookie-Daten zu verschlüsseln, dies ist jedoch für SSL nicht möglich.
Andrew Jennings
4
@ DylanYoung SSL = sichere Socket- Schicht; TLS = Transport Layer Security. Die Verschlüsselung erfolgt auf Socket- (Verbindungs-) Ebene oder anders ausgedrückt auf Transportebene, nicht während sie im Browser pro Domänendatenbank gespeichert ist.
Neugieriger
@ Wigwam Sicherheitsempfindliche HTTP-Cookies sind fast immer undurchsichtige Verweise (normalerweise eine kryptografisch starke Zufallszahl) auf einen Datensatz in der Serverdatenbank authentifizierter Sitzungen. Als solches würde die Verschlüsselung dieser bedeutungslosen Kennung meist zusätzliche Komplexität bringen.
Neugieriger
53

In HTTP Version 1.1 wurde die spezielle HTTP-Methode CONNECT hinzugefügt, mit der der SSL-Tunnel erstellt werden soll, einschließlich des erforderlichen Protokoll-Handshakes und der kryptografischen Einrichtung.
Die regulären Anforderungen danach werden alle im SSL-Tunnel, in den Headern und im Body einschließlich eingeschlossen.

AviD
quelle
Wann wird CONNECT zum Erstellen des SSL-Tunnels verwendet?
Neugieriger
47

Bei SSL befindet sich die Verschlüsselung auf Transportebene, sodass sie erfolgt, bevor eine Anforderung gesendet wird.

Also ist alles in der Anfrage verschlüsselt.

Blasrohrpfeil
quelle
Da SSL in der Transportschicht stattfindet und die Zuweisung der Zieladresse in Paketen (im Header) in der Netzwerkschicht (unterhalb des Transports) erfolgt, wie werden dann die Header verschlüsselt?
Prateek Joshi
@PrateekJoshi Da HTTP-Header auf der Anwendungsschicht gespeichert sind und daher standardmäßig verschlüsselt werden, weil eine niedrigere / Vorgängerschicht verschlüsselt wird.
Aquarelle
40

HTTPS (HTTP über SSL) sendet alle HTTP-Inhalte über einen SSL-Tunnel, sodass auch HTTP-Inhalte und -Header verschlüsselt werden.

CMS
quelle
21

Ja, Header sind verschlüsselt. Es ist hier geschrieben .

Alles in der HTTPS-Nachricht wird verschlüsselt, einschließlich der Header und der Anforderungs- / Antwortlast.

Tastendruck
quelle
37
Wikipedia ist nicht die Spezifikation, die Sie zitieren sollten.
Aran Mulholland
8

Die URL ist auch verschlüsselt, Sie haben wirklich nur die IP, den Port und bei SNI den Hostnamen, die unverschlüsselt sind.

xxiao
quelle
Selbst wenn SNI nicht unterstützt wird, kann ein Vermittler, der HTTP-Verbindungen abfangen kann, häufig auch DNS-Fragen überwachen (der größte Teil des Abfangens erfolgt in der Nähe des Clients, wie bei einem Raubkopier-Router). So können sie die DNS-Namen sehen.
Neugieriger