Hypertext Transfer Protocol Secure

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 6. September 2016 um 23:25 Uhr durch Horst Gräbner (Diskussion | Beiträge) (→‎Verschlüsselung: Komma). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen
HTTPS (Hypertext Transfer Protocol Secure)
Familie: Internetprotokollfamilie
Einsatzgebiet: verschlüsselte Datenübertragung
Port: 443/TCP
HTTPS im TCP/IP-Protokollstapel:
Anwendung HTTP
Transport SSL/TLS
TCP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI
Standards: RFC 2818 (HTTP Over TLS, 2000)

HyperText Transfer Protocol Secure (HTTPS, englisch für sicheres Hypertext-Übertragungsprotokoll) ist ein Kommunikationsprotokoll im World Wide Web, um Daten abhörsicher zu übertragen. Es stellt eine Transportverschlüsselung dar.

Technisch definiert es als URI-Schema eine zusätzliche Schicht zwischen HTTP und TCP. HTTPS wurde von Netscape entwickelt und zusammen mit SSL 1.0 erstmals 1994 mit deren Browser veröffentlicht.

Nutzen

HTTPS wird zur Herstellung von Vertraulichkeit und Integrität in der Kommunikation zwischen Webserver und Webbrowser (Client) im World Wide Web verwendet. Dies wird u. a. durch Verschlüsselung und Authentifizierung erreicht.

Ohne Verschlüsselung sind Daten, die über das Internet übertragen werden, für jeden, der Zugang zum entsprechenden Netz hat, als Klartext lesbar. Mit der zunehmenden Verbreitung von offenen (d. h. unverschlüsselten) WLANs nimmt die Bedeutung von HTTPS zu, da damit die Inhalte unabhängig vom Netz verschlüsselt werden können.

Die Authentifizierung dient dazu, dass beide Seiten der Verbindung beim Aufbau der Kommunikation die Identität des Verbindungspartners überprüfen können. Dadurch sollen Man-in-the-Middle-Angriffe und teilweise auch Phishing verhindert werden.

Technik

Syntaktisch ist HTTPS identisch mit dem Schema für HTTP, die zusätzliche Verschlüsselung der Daten geschieht mittels SSL/TLS: Unter Verwendung des SSL-Handshake-Protokolls findet zunächst eine geschützte Identifikation und Authentifizierung der Kommunikationspartner statt. Anschließend wird mit Hilfe asymmetrischer Verschlüsselung oder des Diffie-Hellman-Schlüsselaustauschs ein gemeinsamer symmetrischer Sitzungsschlüssel ausgetauscht. Dieser wird schließlich zur Verschlüsselung der Nutzdaten verwendet.

Der Standard-Port für HTTPS-Verbindungen ist 443.

Neben den Server-Zertifikaten können auch signierte Client-Zertifikate nach X.509.3 erstellt werden. Das ermöglicht eine Authentifizierung der Clients gegenüber dem Server, wird jedoch selten eingesetzt.

Eine ältere Protokollvariante von HTTPS war S-HTTP.

Client-Verarbeitung

Mit der Entwicklung von HTTPS durch Netscape wurde das Protokoll und die anwenderseitige Client-Software schon früh in Webbrowser integriert. Damit ist meist keine weitere Installation gesonderter Software notwendig.

Eine HTTPS-Verbindung wird durch eine https-URL angewählt und durch das SSL-Logo angezeigt – beim Internet Explorer 6 ein Schloss-Icon in der Statusleiste, bei Mozilla zusätzlich in der Adresszeile, die bei Firefox, aktuellen Opera- und Internet-Explorer-7-Browsern zusätzlich gelb hinterlegt wird, bei Apple Safari 3.0 durch ein kleines Schloss-Symbol in der obersten rechten Ecke des Browserfensters.

Varianten der HTTPS-Anwahl

Die Entscheidung, ob eine sichere HTTPS- statt einer HTTP-Verbindung genutzt wird, kann unterschiedlich erfolgen:

  • Serverseitig wird ausschließlich HTTPS zugelassen, wie meist bei Online-Banking; teils wird dabei eine angewählte http-Adresse automatisch auf https weitergeleitet.
  • Der Login wird über HTTPS erzwungen, dann wird ein HTTP-Cookie im Browser gesetzt und, um Rechenzeit zu sparen, der weitere Dienst unverschlüsselt abgewickelt; z. B. bei eBay.
  • Clientseitig durch HSTS: Wenn der Server nur HTTPS zulässt (wie oben beschrieben), kann der Browser dies speichern und stellt zukünftig immer eine Verbindung über HTTPS her. Steht der Server zusätzlich auf der HSTS Preload Liste, stellt der Browser auch beim ersten Besuch schon direkt eine HTTPS-Verbindung her.[1]
  • Clientseitige Eingabe der httpS-Variante oder Browser-Plug-in (z. B. für Firefox und ChromeHTTPS Everywhere“), welches http-Anfragen durch https-Anfragen ersetzt, bei Diensten, die beide Varianten unterstützen.

Nach Anwahl der HTTPS-Adresse soll der Client-Browser dem Anwender zuerst das Zertifikat anzeigen, sofern es nicht automatisch über bereits akzeptierte Zertifikate überprüft werden kann. Dieser entscheidet nun, gegebenenfalls nach Prüfung über die angegebenen Links, ob er dem Zertifikat für diese Sitzung vertraut, ggf. es auch permanent speichert. Andernfalls wird die HTTPS-Verbindung nicht hergestellt („Diese Seite verlassen“ bei Firefox bzw. „Klicken Sie hier um diese Seite zu verlassen.“ beim Internet Explorer).

Vorinstallierte Zertifikate

Um diese für Unkundige eventuell irritierende Abfrage zu vermeiden, wurde mit der Zeit eine Reihe von Root-Zertifikaten von den Browserherstellern akzeptiert, die schon bei der Installation eingetragen werden. Webseiten, die entsprechende Zertifikate haben, werden dann, ebenso wie davon abgeleitete Unter-Zertifikate, bei Aufruf ohne Nachfrage akzeptiert. Ob ein Root-Zertifikat dem Browser bekannt ist, hängt von der Browser-Version ab; zudem wird die Liste der Zertifikate teils auch online im Rahmen der Systemaktualisierung auf den neuesten Stand gebracht, so bei Microsoft Windows.

Mit dem Internet Explorer 7 hat Microsoft, kurz danach auch Mozilla mit dem Firefox 3, die Warnung bei nicht eingetragenen Zertifikaten verschärft: Erschien vorher nur ein Pop-up „Sicherheitshinweis“, das nach Name, Quelle und Laufzeit des Zertifikats differenzierte, so wird nun der Inhalt der Webseite ausgeblendet und eine Warnung angezeigt, mit der Empfehlung, die Seite nicht zu benutzen. Um diese sehen zu können, muss der Anwender dann explizit eine „Ausnahme hinzufügen“. Ein nicht im Browser eingetragenes Zertifikat wird damit für Massenanwendungen zunehmend untauglich.

Die Frage, welche Zertifikate in die Browser aufgenommen werden, hat in der Open-Source-Community fallweise zu längeren Diskussionen geführt, so zwischen CAcert, einem Anbieter kostenloser Zertifikate, und der Mozilla Foundation, siehe CAcert (Vertrauenswürdigkeit).

Server-Voraussetzungen

Als Software zum Betrieb eines HTTPS-fähigen Webservers wird eine SSL-Bibliothek wie OpenSSL benötigt. Diese wird häufig bereits mitgeliefert oder kann als Modul installiert werden. Der HTTPS-Service wird üblicherweise auf Port 443 bereitgestellt.

Zertifikat

Weiterhin ist ein digitales Zertifikat für SSL notwendig: Ein Binärdokument, das im Allgemeinen von einer – selbst wiederum zertifizierten – Zertifizierungsstelle (CA von englisch certificate authority) ausgestellt wird, das den Server und die Domain eindeutig identifiziert. Bei der Beantragung werden dazu etwa die Adressdaten und die Firmierung des Antragstellers geprüft.

In den registrierten Root-Chains eingetragene Zertifikate werden typischerweise zu Preisen zwischen 39 und 1200 US-$ pro Jahr angeboten, wobei fallweise weitere Dienste, Siegel oder Versicherungen enthalten sind. Eine Reihe von Zertifizierungsstellen gibt kostenlos Zertifikate aus. Die etwa von StartCom[2] oder Let's Encrypt ausgestellten Zertifikate werden dabei von fast allen modernen Browsern ohne Fehlermeldung akzeptiert. Ebenfalls kostenlose Zertifikate erstellt CAcert, wo es bisher jedoch nicht gelang, in die Liste der vom Browser automatisch akzeptierten Zertifikate aufgenommen zu werden; siehe oben. Ein solches Zertifikat muss daher bei der Client-Verarbeitung vom Anwender manuell importiert werden; dieses Verhalten kann aber auch erwünscht sein.

Auch ist es möglich, selbst-signierte Zertifikate (engl. self-signed certificate) zu verwenden, die ohne Beteiligung einer gesonderten Instanz erstellt wurden und ebenfalls manuell bestätigt werden müssen. Ein so erstelltes Zertifikat ist aber nur dann sicher, wenn es vor der Erstverwendung dem Anwender auf einem sicheren Weg zugestellt und von ihm in seine Client-Anwendung importiert wurde. Wurde der beschriebene sichere Erstzustellungsprozess nicht durchgeführt, sind Verbindungen mit dem betroffenen Zertifikat verwundbar durch einen Man-in-the-middle-Angriff.

Um veraltete oder unsicher gewordene Zertifikate für ungültig zu erklären, sind Zertifikatsperrlisten (engl. certificate revocation list, CRL) vorgesehen. Die Konzeption sieht vor, dass diese Listen regelmäßig etwa von Browsern geprüft und darin gesperrte Zertifikate ab sofort abgewiesen werden. Das Verfahren ist jedoch nicht durchgängig organisiert und wird praktisch nur wenig genutzt.

Zu Angriffen auf das Zertifikatsystem, siehe unten.

Extended-Validation-Zertifikat

Vor dem Hintergrund zunehmender Phishing-Angriffe auf HTTPS-gesicherte Webanwendungen hat sich 2007 in den USA das CA/Browser Forum[3] gebildet, das aus Vertretern von Zertifizierungsorganisationen und den Browser-Herstellern Google, KDE, Microsoft, Mozilla und Opera besteht. Im Juni 2007 wurde daraufhin eine erste gemeinsame Richtlinie verabschiedet, das Extended-Validation-Zertifikat, kurz EV-SSL in Version 1.0, im April 2008 dann Version 1.1.

Ein Domain-Betreiber muss für dieses Zertifikat weitere Prüfungen akzeptieren: Während bisher nur die Erreichbarkeit des Admins (per Telefon und E-Mail) zu prüfen war, wird nun die Postadresse des Antragstellers überprüft und bei Firmen die Prüfung auf zeichnungsberechtigte Personen vorgenommen. Damit sind auch deutlich höhere Kosten verbunden.

Für den Anwender macht sich das EV-Zertifikat durch eine zusätzliche weiß auf grün unterlegte Firma in der Adresszeile des neueren Browsers (ab 2007, also etwa Firefox 3 und IE7), rechts vom Site-Logo, bemerkbar. Durch das Ausbleiben der (für diese Site) gewohnten grünen Farbe soll der Anwender dann gefälschte HTTPS-Sites schnell und ggf. auch intuitiv – also ohne spezielle Schulung – erkennen können.

IP-Adresse

Zum Betrieb eines HTTPS-Webservers war lange Zeit eine eigene IP-Adresse pro Hostname notwendig.

Bei unverschlüsseltem HTTP ist das nicht erforderlich: Seitdem Browser den Hostnamen im HTTP-Header mitsenden, können mehrere virtuelle Webserver mit je eigenem Hostnamen auf einer IP-Adresse bedient werden, zum Beispiel bei Apache über den NameVirtualHost-Mechanismus. Dieses Verfahren wird inzwischen bei der weit überwiegenden Zahl der Domains benutzt, da hier der Domain-Eigner selbst keinen Server betreibt.

Da bei HTTPS jedoch der Webserver für jeden Hostnamen ein eigenes Zertifikat ausliefern muss, der Hostname aber erst nach erfolgtem SSL-Handshake in der höheren HTTP-Schicht übertragen wird, ist das Deklarieren des Hostnamens im HTTP-Header hier nicht anwendbar. Die Information muss daher bereits beim SSL-Handshake übermittelt werden, was seit TLS 1.2 mithilfe von Server Name Indication (SNI) realisiert wird. Zuvor war eine Unterscheidung nur anhand der IP/Port-Kombination möglich; ein anderer Port als 443 wird wiederum von vielen Proxys nicht akzeptiert.

Zuvor nutzten einige Provider einen Workaround um ihren Kunden auch HTTPS ohne eigene IP-Adresse zu ermöglichen, der gelegentlich als „shared SSL“ bezeichnet wird. Einige Provider nutzten hierfür wildcard Zertifikate, die für alle Subdomains einer Domain gültig sind, in Verbindung mit kundenspezifischen Subdomains. Andere Provider nutzten einen „SSL Proxy“, der die Anfragen über eine von mehren Kunden genutzte Domain leitete. Durch die Verbreitung von SNI sind diese Techniken bedeutungslos geworden.

Einbindung

Die Einbindung von HTTPS in eine Website oder -anwendung erfolgt analog zu den oben genannten Varianten der HTTPS-Anwahl:

  • Wenn ausschließlich HTTPS zulässig ist, kann das umgesetzt werden durch:
    • Weiterleitung (HTML-refresh) oder auch ein rewrite der URL
    • Konfiguration von HTML-Seiten oder Skripten als Muss-SSL, bei Apache etwa durch die Anweisung SSLRequireSSL in der .htaccess. Wird eine solche Seite per http aufgerufen, erzeugt der Server einen '403 - Forbidden' HTTP-Fehlercode.
  • Der Anwender wird auf die Möglichkeit der SSL-Nutzung durch einen entsprechenden Link hingewiesen. Auf diese Weise wird die Serverlast gering gehalten, während sicherheitsbewusste Nutzer nicht abgewiesen werden.
    • Teilweise wird - insbesondere während der Einführung von HTTPS - auch eine prominente Bewerbung in Form eines Links verzichtet und der Anwender kann nur manuell auf eine HTTPS-Verbindung umschalten, indem er in der URL selbstständig ein „s“ hinter „http“ eintippt.
  • Skriptgesteuerte Erzeugung von HTTPS-Links, um den Anwender bei bestimmten Arbeitsschritten oder Ausgaben auf eine HTTPS-Seite zu lenken. Anschließend kann im Skript geprüft werden, ob dieses per HTTPS aufgerufen wurde, bei PHP etwa durch die Bedingung: $_SERVER['HTTPS']=='on'

Leistung

2010 verursachte die Verschlüsselung bei Gmail weniger als 1 % der CPUs-Last, weniger als 1 KB Arbeitsspeicherbedarf pro Verbindung und weniger als 2 % des Netzwerk-Datenverkehrs.[4] 10 Jahre vorher belastete der Rechenaufwand der Verschlüsselung die Server noch stark.[4]

Die Liste der vom Server unterstützten Verschlüsselungsalgorithmen wird serverseitig konfiguriert. Der Client wählt dann den ersten von ihm unterstützten Algorithmus aus dieser Liste aus. Um Rechenzeit zu sparen, werden auf Servern mit hohem Datenverkehr bevorzugt Strom-Chiffren eingesetzt, da diese weniger rechenintensiv sind als Block-Chiffren wie AES oder Camellia. Viele der dabei lange Zeit genutzten Verfahren wie RC4 gelten als unsicher und werden daher ab 2016 von den großen Webbrowsern nicht mehr unterstützt.[5]

Zur Entlastung der Server-CPU werden auch Hardware-SSL-Beschleuniger (SSL accelerators) angeboten: PCI-Steckkarten mit speziellen, optimierten Prozessoren, die aus der SSL-Bibliothek angesprochen werden. Daneben gibt es auch eigenständige Geräte, meist in Rack-Bauweise, die Teile des HTTP-Datenstroms automatisch verschlüsseln. Weiterhin werden Server mit programmierbaren Recheneinheiten angeboten, die mit entsprechenden SSL-Bibliotheken höhere Leistung als vergleichbar aufwendige Universal-CPUs erreichen, so die MAU (Modular Arithmetic Unit) von Sun. Diese spezielle Hardware steht aber im engen Wettbewerb mit der stetigen Entwicklung der Multiprozessor- und Multi-Core-Systeme der großen CPU-Hersteller Intel und AMD.[6]

Angriffe und Schwachstellen

Mit den allgemein zunehmenden Kenntnissen über die HTTPS-Technik haben sich auch die Angriffe auf SSL-gesicherte Verbindungen gehäuft. Daneben sind durch Recherche und Forschungen Lücken in der Umsetzung bekannt geworden. Dabei ist grundsätzlich zu unterscheiden zwischen Schwachstellen bei der Verschlüsselung selbst und im Zertifikatsystem.

Am 5. September 2013 wurde im Zusammenhang mit der globalen Überwachungs- und Spionageaffäre bekannt, dass die NSA sich über beide Angriffskanäle Zugang durch ein Programmsystem namens Bullrun verschafft hat.

Verschlüsselung

Die bei SSL eingesetzten Verschlüsselungsverfahren werden unabhängig von ihrem Einsatzzweck regelmäßig überprüft und gelten als mathematisch sicher, d. h., sie lassen sich theoretisch mit den heute bekannten Techniken nicht brechen. Die Zuverlässigkeit der Algorithmen wird regelmäßig etwa durch Wettbewerbe unter Kryptologen überprüft. Regelmäßig werden in den Spezifikationen und den Implementierungen die Unterstützung veralteter Verschlüsselungsverfahren, die nach dem aktuellen Stand der Technik als nicht mehr sicher gelten, gestrichen und neue Verfahren aufgenommen.[7]

Probleme entstanden in der Vergangenheit mehrfach durch fehlerhafte Implementierung der Kryptologie. Insbesondere Schwachstellen in der weit verbreiten OpenSSL-Bibliothek wie Heartbleed haben dabei große öffentliche Aufmerksamkeit erfahren.

Da in der Regel Benutzer nicht explizit eine verschlüsselte Verbindung durch Spezifizierung des HTTPS-Protokolls (https://) beim Aufruf einer Webseite anfordern, kann ein Angreifer eine Verschlüsselung der Verbindung bereits vor Initialisierung unterbinden und einen Man-in-the-Middle-Angriff ausführen.[8] Als Schutz vor solchen Angriffen wurde der Standard HTTP Strict Transport Security (HSTS) entwickelt.

Zertifikatsystem

SSL-Verbindungen sind grundsätzlich gefährdet durch Man-in-the-middle-Angriffe, bei denen der Angreifer den Datenverkehr zwischen Client und Server abfängt, indem dieser sich beispielsweise als Zwischenstelle ausgibt. Eine Reihe von Angriffsverfahren setzen voraus, dass sich der Angreifer im Netzwerk des Opfers befindet. Beim DNS-Spoofing wiederum bestehen diese Voraussetzungen nicht.

Um sich als (anderer) Server auszugeben, muss der Angreifer auch ein Zertifikat vorweisen. Das ist ihm beispielsweise dann möglich, wenn es ihm gelingt, in das System einer Zertifizierungsstelle einzudringen, oder er anderweitig in den Besitz eines Zertifikats kommt, mit dem sich beliebige andere Zertifikate ausstellen lassen. Insbesondere bei einflussreichen Angreifern, wie etwa Regierungsbehörden, können solche Möglichkeiten bestehen, da mitunter auch staatliche Zertifizierungsstellen existieren.[9] HTTP Public Key Pinning soll solche Angriffe erschweren.

Phishing und HTTPS

Ein Nachteil der automatischen Bestätigung der Zertifikate besteht darin, dass der Anwender eine HTTPS-Verbindung nicht mehr bewusst wahrnimmt. Das wurde in jüngerer Zeit bei Phishing-Angriffen ausgenutzt, die etwa Online-Banking-Anwendungen simulieren und dem Anwender eine sichere Verbindung vortäuschen, um eingegebene PIN/TAN-Codes „abzufischen“. Als Reaktion wiesen betroffene Unternehmen ihre Kunden darauf hin, keine Links aus E-Mails anzuklicken und https-URLs nur manuell oder per Lesezeichen einzugeben.

Wegen der teils oberflächlichen Prüfungen bei der Vergabe von Zertifikaten wurde von den Browserherstellern das extended-validation-Cert eingeführt, siehe oben.

Gemischte Inhalte

Das Nachladen unverschlüsselter Ressourcen ermöglicht einem Angreifer mittels eines Man-in-the-Middle-Angriffs Schadcode in die ursprünglich verschlüsselt übertragene Webseite einzuschleusen. Daher blockieren aktuelle Versionen gängiger Webbrowser das Nachladen unverschlüsselter Ressourcen standardmäßig. Ebenso besteht bei einem sowohl für verschlüsselte als auch unverschlüsselte Verbindungen genutzten HTTP-Cookie das Risiko eines Session Hijacking, auch wenn die Authentifizierung über eine verschlüsselte Verbindung erfolgte.

Angriffe auf das Zertifikatsystem

Im Rahmen des 25. Chaos Communication Congress in Berlin wurde im Dezember 2008 ein erfolgreicher Angriff auf das SSL-Zertifikatsystem veröffentlicht. In internationaler Zusammenarbeit von Kryptologen und mit Einsatz speziell programmierter Hardware – einem Cluster aus 200 Playstation-3-Spielkonsolen – war es gelungen, im MD5-Algorithmus eine Kollision zu erzeugen, auf deren Basis ein Angreifer sich selbst beliebige Zertifikate ausstellen könnte.[10] Von der Verwendung des MD5-Algorithmus wurde in Fachkreisen vorher schon abgeraten, bei EV-Zertifikaten kann er ohnehin nicht verwendet werden. Die meisten Webbrowser akzeptieren schon seit 2011 keine MD5-Zertifikate mehr.[11] Um ähnliche Probleme zu vermeiden, kündigten die Browser-Hersteller bereits an, Zertifikate die SHA1 nutzen nur noch eine beschränkte Zeit zu unterstützen.[12]

Spezifikationen

Weblinks

  • Wie funktioniert HTTPS?
  • SSLlabs prüft Verbindungen auf Verschlüsselungsmethoden, Protokolle, Zertifikatsketten und bekannte Schwachstellen mit einer abschließenden, ausführlichen Auswertung

Einzelnachweise

  1. Preloading HSTS
  2. Mozilla vertraut kostenlosen StartCom Zertifikaten. Heise-Online, 3. Juni 2006, abgerufen am 4. März 2010.
    Vgl. dazu auch Comparison of SSL certificates for web servers in der englischsprachigen Wikipedia.
  3. cabforum.org.
  4. a b Adam Langley, Nagendra Modadugu, Wan-Teh Chang: Overclocking SSL. In: ImperialViolet. Adam Langley’s Weblog. 25. Juni 2010, abgerufen am 23. Oktober 2014 (englisch).
  5. Emil Protalinski: Google, Microsoft, and Mozilla will drop RC4 encryption in Chrome, Edge, IE, and Firefox next year, VentureBeat, 1. September 2015
  6. Quad Core Intel Xeon SSL Performance auf anandtech.com, 27. Dezember 2006.
  7. Beispielhaft: Daniel Berger: Firefox 39 entfernt SSLv3 und RC4 – heise online. In: Heise. 3. Juli 2015, abgerufen am 22. Oktober 2015.; Daniel Berger: Firefox 27 verschlüsselt mit TLS 1.2 – heise online. In: Heise. 4. Februar 2014, abgerufen am 22. Oktober 2015.
  8. Daniel Bachfeld: Black Hat: Neue Angriffsmethoden auf SSL vorgestellt. In: Heise Security. 19. Februar 2009, abgerufen am 25. Oktober 2015.
  9. EFF zweifelt an Abhörsicherheit von SSL auf heise security, abgerufen am 28. Juni 2013
  10. 25C3: Erfolgreicher Angriff auf das SSL-Zertifikatsystem. Auf heise.de, 30. Dezember 2008, abgerufen am 3. Januar 2013.
  11. Apple IOS5, Firefox 16, Microsoft Internet Explorer
  12. Ivan Ristic: SHA1 Deprecation: What You Need to Know.