- Offizieller Beitrag
Ähm Verschlüsselung und was zum Geier ist SPDY?
In der Wochennews vom 16.11 wurde erwähnt, dass wir ab sofort alles verschlüsseln. Doch warum und was sind die Hintergründe? Lest hier dazu mehr!
Seit ein paar Tagen wird unsere Internetseite komplett verschlüsselt übertragen, ihr erkennt das am (grünen) Schlosssymbol in der Adresszeile. Zum einem ist dies ein stiller Protest gegen die Abhörmaßnahmen der Geheimdienste: Wäre das komplette Internet verschlüsselt würden die nämlich doof aus der Wäsche gucken, dann ist nämlich Essig mit Datenverkehr ausspionieren. Klar wir sind nur eine kleine Gildenhomepage, aber irgendwer muss ja mal anfangen. Der zweite Grund ist etwas pragmatischer: Es geht um eure Sicherheit. So werden eure Daten nicht nur auf unserem Server verschlüsselt gespeichert sondern bereits verschlüsselt Übertragen. Und der dritte Grund ist technischer Art: Wir nutzen neuerdings SPDY als Übertragungsprotokoll und SPDY setzt dabei zwingend eine verschlüsselte Verbindung voraus.
Also ganz von vorne: Damit eine Internetseite auf deinem Computer ankommt wird ein Übertragungsprotokoll benötigt, dieses Protokoll hat die Aufgabe dem Browser genau zu erklären wann welche Daten ankommen und was das für Daten sind, wie zum Beispiel ein Bild*. HTTP ist dabei so konzipiert, das man pro Anfrage eine neue Verbindung herstellen muss. Und wenn eine Internetseite viele Bilder enthält, dann sind das auch entsprechend viele Verbindungen, deren Anzahl aber unter Umständen limitiert ist.
Alle diese Übertragungen geschehen im Klartext, also auch was man an den Server sendet wie zum Beispiel Emailadresse und Passwort. Über ein Man-in-the-Middle Angriff, kann man sich unbemerkt dazwischen hängen und alles mitlesen, denn wie du vielleicht schon mal gehört hast, wird die Verbindung nicht direkt hergestellt sondern über einige Zwischenstellen und Knotenpunkte weitergeleitet. Geheimdienste machen dies im großem Stil, aber diese Verfahren sind auch für Hacker sehr interessant.
Daher gibt es verschlüsselte Verbindungen, die nach einheitlichen Verfahren abgesichert sind. Dabei muss sich der Server vorher identifizieren indem er ein gültiges Zertifikat übermittelt. Diese Zertifikate unterliegen strengen Restriktionen und werden nur von speziellen Zertifizierungsdiensten angeboten. Hat also der Server seine Identität nachgewiesen, wird die Verschlüsselung ausgehandelt, nicht jeder Browser unterstützt alle Verfahren. Ist alles in Ordnung wird das Protokoll von HTTP zu HTTPS gewechselt**. Das S steht übrigens für "Secure" also "Sicher". ja nach Browser wird dann noch ein eventuell farbiges Schlosssymbol angezeigt.
Normalerweise werden verschlüsselte Verbindungen aufgrund des zusätzlichen Aufwandes nur für Datenschutzkritische Internetseiten benutzt. Aber in Zeiten indem Geheimdienste der Meinung sind beliebig unsere Rechte zu brechen, ist es nicht verkehrt zu reagieren. Wir haben zwar nur eine kleine Gildenhompage und eigentlich wirken unsere Bemühungen lächerlich, aber sollte in Zukunft alles verschlüsselt werden, dann hat die Datenspionage bald ein jähes Ende. Und sind wir ehrlich: Nur meckern und jammern nutzt doch nichts, wenn sich etwas ändern wollen müssen wir selbst etwas tun! Auch wenn das nur im kleinem Rahmen passiert, irgendwo muss ein Anfang gemacht werden.
Erinnerst du dich noch das HTTP jede Anfrage einzeln abhandelt? Das kann man getrost als völlig ineffizient betrachten. Daher hat man einen möglichen Nachfolger ersonnen: SPDY. Auch wenn das ganze kein eigentlicher Standard ist, wird SPDY von allen wichtigen Browsern unterstützt. SPDY arbeitet etwas anders als HTTP: SPDY baut einen Tunnel und lässt diesen Tunnel auch die ganze Zeit geöffnet, so lange bis man die Internetseite verlässt. Durch diesen Tunnel werden alle Anfragen geleitet und das parallel. Dabei kann dieser Tunnel ziemlich viele Spuren haben und so wird jede Menge Zeit gespart.
Die Entwickler von SPDY haben dabei scheinbar eine positive Einstellung zum Datenschutz: Wenn man SPDY benutzen will, dann muss man die Verbindung verschlüsseln. Und damit war für uns klar, dass wir hier zwei Fliegen mit einer Klappe schlagen: Eine spürbar gesteigerte Übertragungsgeschwindigkeit und einen hohen Datenschutzstandard.
Es gibt allerdings auch eine Kehrseite der Medaille: Gute Browser erlauben keine Mischinhalte zwischen zertifizierten Servern deren Daten verschlüsselt sind und unsicheren Internetservern. Das führt zum Beispiel dazu, dass wir die WoWProgress Informationsgrafik oder die Bilder aus unserem Gildenfeed zwischenspeichern müssen damit sie fehlerfrei angezeigt werden können. Auch müssen Youtube-Videos anders eingebettet werden, die Facebook-Verknüpfungen wurden entfernt und und und.
Wenn ihr übrigens irgendwo einen Fehler entdeckt meldet ihn ruhig.
So und nun die technischen Details: Alle Anfragen landen bei einem nginx SSL-Reverse-Proxy. Alle statischen Inhalte werden von dem Proxy mithilfe von memcached im Arbeitsspeicher behalten und können so schneller ausgeliefert werden. Alle dynamischen Anfragen werden an einen nginx Webserver weitergeleitet. Der Webserver läuft mit php-fpm als socket Daemon und aktivierter apc Optimierung. Im Hintergrund werkeln MongoDB und MySQL. Ach, und unser TS-Server läuft noch darauf.
Dafür das wir nur einen Gurken-V-Server haben, ist der Last-Test von Blitz.io auf die Startseite (Einige Datenbankabfragen, PHP Template Rendering) ganz schön ordentlich:
Die Ausbrüche nach oben sind dem Umstand geschuldet das der Hostserver wohl alle 60 Sekunden irgendeine CPU-intensive Operation durchführt und in der Zeit die php-fpm Performance massiv einbricht.
*ja ich weiß die IT-Cracks unter Euch schlagen jetzt die Hände über dem Kopf zusammen. Aber versucht mal "HTTP" in einem Satz zu erklären.
**ja auch hier weiß ich das dies technisch nicht ganz korrekt ist. Eigentlich wird erst gewechselt und dann verhandelt.