Ich weiß, dass es keine eindeutige Antwort gibt, aber gibt es eine generische Näherungsschätzung für die Größenordnung des Verschlüsselungsaufwands von SSL im Vergleich zur unverschlüsselten Socket-Kommunikation? Ich spreche nur über die Kommunikationsverarbeitung und die Verkabelungszeit, ohne die Verarbeitung auf Anwendungsebene.
Aktualisieren
Es gibt eine Frage zu HTTPS im Vergleich zu HTTP , aber ich bin daran interessiert, im Stapel tiefer zu schauen.
(I ersetzt den Begriff „Größenordnung“ Um Verwirrung zu vermeiden, ich war es , als informeller Jargon und nicht im formalen Sinn CompSci Natürlich , wenn ich. Hatte es formal gemeint, als ein echter Geek würde ich denken binär gewesen , anstatt Dezimal! ;-)
Aktualisieren
Angenommen, es handelt sich bei einer Anfrage im Kommentar um Nachrichten mit guter Größe (Bereich von 1 bis 10 KB) über dauerhafte Verbindungen. Der Verbindungsaufbau und der Paket-Overhead sind also keine wesentlichen Probleme.
quelle
Antworten:
Größenordnung: Null.
Mit anderen Worten, wenn Sie TLS hinzufügen, wird Ihr Durchsatz nicht halbiert oder ähnliches. Die Antworten auf die Frage "Duplizieren" konzentrieren sich stark auf die Anwendungsleistung und den Vergleich zum SSL-Overhead. Diese Frage schließt die Anwendungsverarbeitung ausdrücklich aus und versucht, nur Nicht-SSL mit SSL zu vergleichen. Während es sinnvoll ist, bei der Optimierung eine globale Sicht auf die Leistung zu haben, ist dies nicht das, was diese Frage stellt.
Der Hauptaufwand von SSL ist der Handshake. Hier findet die teure asymmetrische Kryptographie statt. Nach der Verhandlung werden relativ effiziente symmetrische Chiffren verwendet. Aus diesem Grund kann es sehr hilfreich sein, SSL-Sitzungen für Ihren HTTPS-Dienst zu aktivieren, bei dem viele Verbindungen hergestellt werden. Für eine langlebige Verbindung ist dieser "Endeffekt" nicht so bedeutend und Sitzungen sind nicht so nützlich.
Hier ist eine interessante Anekdote. Als Google Google Mail auf HTTPS umstellte, waren keine zusätzlichen Ressourcen erforderlich. Keine Netzwerkhardware, keine neuen Hosts. Die CPU-Auslastung wurde nur um ca. 1% erhöht.
quelle
Ich zweite @erickson: Die reine Datenübertragungsgeschwindigkeitsstrafe ist vernachlässigbar. Moderne CPUs erreichen einen Krypto / AES-Durchsatz von mehreren hundert MBit / s. Wenn Sie sich also nicht auf einem System mit eingeschränkten Ressourcen (Mobiltelefon) befinden, ist TLS / SSL schnell genug, um Daten herumzuschleudern.
Beachten Sie jedoch, dass die Verschlüsselung das Caching und den Lastausgleich erheblich erschwert. Dies kann zu einem enormen Leistungsverlust führen.
Aber der Verbindungsaufbau ist für viele Anwendungen wirklich ein Show-Stopper. Bei Verbindungen mit geringer Bandbreite, hohem Paketverlust und hoher Latenz (mobiles Gerät auf dem Land) können die von TLS benötigten zusätzlichen Hin- und Rückflüge etwas Langsames zu etwas Unbrauchbarem machen.
Zum Beispiel mussten wir die Verschlüsselungsanforderungen für den Zugriff auf einige unserer internen Web-Apps fallen lassen - sie waren fast unbrauchbar, wenn sie aus China verwendet wurden.
quelle
Angenommen, Sie zählen den Verbindungsaufbau nicht (wie in Ihrem Update angegeben), hängt dies stark von der gewählten Verschlüsselung ab. Der Netzwerk-Overhead (in Bezug auf die Bandbreite) ist vernachlässigbar. Der CPU-Overhead wird von der Kryptografie dominiert. Auf meinem mobilen Core i5 kann ich mit RC4 auf einem einzelnen Core etwa 250 MB pro Sekunde verschlüsseln.
(RC4 ist das, was Sie für maximale Leistung wählen sollten.)AES ist langsamer und bietet "nur" etwa 50 MB / s. Wenn Sie also die richtigen Chiffren auswählen, wird es Ihnen nicht gelingen, einen einzelnen aktuellen Kern mit dem Krypto-Overhead zu beschäftigen, selbst wenn Sie eine voll ausgelastete 1-Gbit-Leitung haben. [ Bearbeiten : RC4 sollte nicht verwendet werden, da es nicht mehr sicher ist. Die Unterstützung von AES-Hardware ist mittlerweile in vielen CPUs vorhanden, wodurch die AES-Verschlüsselung auf solchen Plattformen sehr schnell ist.]Der Verbindungsaufbau ist jedoch anders. Abhängig von der Implementierung (z. B. Unterstützung für TLS-Fehlstart) werden Roundtrips hinzugefügt, die zu spürbaren Verzögerungen führen können. Darüber hinaus findet beim ersten Verbindungsaufbau eine teure Krypto statt (die oben erwähnte CPU konnte nur 14 Verbindungen pro Kern und Sekunde akzeptieren, wenn Sie törichterweise 4096-Bit-Schlüssel und 100, wenn Sie 2048-Bit-Schlüssel verwenden). Bei nachfolgenden Verbindungen werden frühere Sitzungen häufig wiederverwendet, wodurch die teure Krypto vermieden wird.
Um es zusammenzufassen:
Übertragung bei hergestellter Verbindung:
Erster Verbindungsaufbau:
Nachfolgende Verbindungsaufbauten:
quelle