Heutzutage sind mehr Menschen online als je zuvor – und von immer mehr Orten aus.
Wir sind mit unseren Laptops, Smartphones und Tablets und wahrscheinlich schon bald mit privaten Geräten und Zubehör verbunden. Wir greifen über nicht vertrauenswürdige und manchmal sogar schädliche Netzwerke auf das Internet zu. Da ein Großteil unseres Lebens ins Internet verlagert wird, müssen wir Maßnahmen zum Schutz unserer Daten und der Daten unserer Nutzer ergreifen.
Vor allem als Entwickler müssen wir die Notwendigkeit und Zweckmäßigkeit von SSL verstehen.
Was ist SSL? Es steht für Secure Sockets Layer und ist ein kryptografisches Protokoll, das für die Sicherheit der Kommunikation über das Internet entwickelt wurde. Der Schutz deiner Daten wird durch Verschlüsselung und Integrität sichergestellt, um Spionage oder Manipulation deiner Internetverbindung zu verhindern. SSL hat zwar seine Schwächen, aber es ist die führende – und wirklich einzige –, um die Sicherheit jeglicher Datenkommunikation im Internet zu gewährleisten.
Laut SSL Pulse setzten wir vor einem Jahr rund 15% der SSL-Nutzung um. Mittlerweile sind es bereits über 50 %.
Zwei Abkürzungen:
TLS: Entspricht für die meisten Intents und Zwecke der SSL-Verschlüsselung. Um genau zu sein, wurde SSL 3.1 in TLS umbenannt und TLS ist der IETF-Standardname. Aber sie sind austauschbar!
HTTPS: HTTP zu SSL, das lediglich die Sicherheitsfunktionen von SSL und Standard-HTTP erfüllt. Zuerst der Client-Server-Handshake, bei dem mit Public/Private-Key-Kryptografie ein freigegebener Schlüssel erstellt wird, der vom zweiten Teil des SSL-Protokolls zur Verschlüsselung der Kommunikation verwendet wird.
Networking im Internet kann sich sicher, unmittelbar und schnell anfühlen. Es fühlt sich an, als würden wir direkt mit der Website sprechen. Aber in Wirklichkeit ist es keine direkte Verbindung. Die Kommunikation erfolgt über einen WLAN-Router, einen Internetanbieter und möglicherweise andere Zwischen-Proxys zwischen deinem Gerät und der Website. Ohne HTTPS erfolgen unsere gesamte Kommunikation im Nur-Text-Format.
Das Problem ist, dass Nutzer selten eine vollständige URL mit HTTPS eingeben – oder sie klicken mit HTTP auf einen Link. Schlimmer noch, es ist möglich, einen (Wo)-Man-in-the-Middle-Angriff durchzuführen und HTTPS durch HTTP zu ersetzen. Genau das ermöglicht das 2009 eingeführte Tool SSLstrip. Firesheep aus dem Jahr 2010 hörte gerade offene WLANs nach Cookies, die im Klartext gesendet wurden. Das bedeutete, dass man sich beim Chatten mithören oder sich im Facebook-Konto eines Nutzers anmelden konnte.
SSL ist jedoch relativ günstig, schnell und einfach zu implementieren. Weitere Informationen finden Sie unter ssllabs.com und in dem Buch „High Performance Browser Networking“ von Ilya Grigorik. Für die nicht kommerzielle Nutzung gibt es sogar kostenlose Zertifikate auf startssl.com. Public-Key-Pinning soll Website-Betreibern die Möglichkeit geben, einzuschränken, welche Zertifizierungsstellen tatsächlich Zertifikate für ihre Websites ausstellen können.
„Im Januar dieses Jahres (2010) verwendet Gmail standardmäßig HTTPS für alles. Dafür mussten wir keine zusätzlichen Maschinen und keine spezielle Hardware bereitstellen. Auf unseren Front-End-Maschinen in der Produktion macht SSL weniger als 1% der CPU-Last, weniger als 10 KB Arbeitsspeicher pro Verbindung und weniger als 2% des Netzwerk-Overheads aus.
Wenn Sie jetzt aufhören zu lesen, müssen Sie sich nur eines merken: SSL ist nicht mehr rechenintensiv.“
– Overclocking SSL, Adam Langley (Google)
Zu guter Letzt gibt es noch einige Programmfehler, die wir am häufigsten beobachten:
- Gemischte Inhalte:Websites, die sowohl HTTP als auch HTTPS verwenden. Die Nutzenden werden genervt, weil sie zum Laden von Inhalten auf eine Berechtigungsschaltfläche klicken müssen. In Chrome und Firefox werden gemischte Inhalte aus iFrames blockiert. Achte darauf, dass alle Ressourcen auf einer HTTPS-Seite über HTTPS geladen werden. Verwende dazu relative oder schemarelative URLs wie
<style src="//foo.com/style.css">
. - Unsichere Cookies: werden im Klartext über eine HTTP-Verbindung gesendet. Dies lässt sich vermeiden, indem Sie das Attribut „secure“ in Cookie-Headern festlegen. Sie können auch einen neuen Header „Strict Transport Security“ verwenden, um SSL Transport Security (HSTS) anzufordern.
Takeaways
- Wenn Ihnen der Datenschutz und die Integrität der Daten Ihrer Nutzer wichtig sind, müssen Sie SSL verwenden. Das ist schneller, einfacher und kostengünstiger als je zuvor.
- Vermeiden Sie häufig auftretende Fehler bei der Implementierung, z. B. Fehler bei gemischten Inhalten oder falsche HTTP-Header-Bits.
- Verwenden Sie relative oder Schema-relative URLs.
- Entdecke tolle neue Sachen, z. B. HSTS und „Certificate Pinning“
Google Präsentationen:Sie verwenden SSL?