Frage

Ich weiß, es gibt keine einzige hieb- und stich schnelle Antwort, aber gibt es eine generische Order-of-Größenordnung Schätzung Näherung für die Verschlüsselung von SSL-Overhead im Vergleich zu unverschlüsselten Socket-Kommunikation? Ich bin nur über die comm Verarbeitung und Draht Zeit im Gespräch, nicht auf Anwendungsebene Verarbeitung zu zählen.

Aktualisieren

Es wird href="https://stackoverflow.com/questions/149274/http-vs-https-performance"> , aber ich bin interessiert an der Suche unteren in dem Stapel.

(I ersetzt den Begriff „Größenordnung“ um Verwirrung zu vermeiden, ich war es, als informeller Jargon und nicht im formalen Sinne CompSci Natürlich, wenn ich had es bedeuten, formal, als ein. echter Geek ich binäre gedacht haben als Dezimalzahl eher würde; -)

Aktualisieren

Per Anfrage in Kommentar, übernehmen wir reden über eine gute Größe Nachrichten (Bereich von 1k-10k) über persistente Verbindungen. So Verbindungsaufbau und Paket-Overhead sind nicht wichtige Fragen.

War es hilfreich?

Lösung

Grössenordnung:. Null

Mit anderen Worten, werden Sie nicht Ihren Durchsatz halbiert sehen, oder etwas Vergleichbares, wenn Sie TLS hinzufügen. Antworten auf den „Duplikat“ Frage stark auf der Anwendungsleistung konzentrieren, und wie diese im Vergleich zu SSL-Overhead . Diese Frage ausdrücklich ausschließt Anwendungsverarbeitung und sucht nicht-SSL zum Vergleich nur auf SSL. Während es sinnvoll ist, eine globale Sicht auf Leistung zu ergreifen, wenn die Optimierung, das ist nicht das, was diese Frage zu stellen.

Der Hauptaufwand für SSL ist der Händedruck. Das ist, wo die teure asymmetrische Kryptographie passiert. Nach Verhandlungen sind relativ effiziente symmetrische Chiffren verwendet. Aus diesem Grunde kann es sehr hilfreich sein, um SSL-Sitzungen für die HTTPS-Dienst zu aktivieren, in dem viele Verbindungen hergestellt werden. Für eine langlebige Verbindung dieses „end-Effekt“ ist nicht so wichtig, und Sitzungen sind nicht so nützlich.


Hier ist eine interessante Anekdote. Wenn Google Gmail geschaltet HTTPS verwenden, sind keine zusätzlichen Ressourcen erforderlich waren; keine Netzwerk-Hardware, keine neuen Hosts. Es erhöht nur die CPU-Auslastung um etwa 1%.

Andere Tipps

I zweiter @erickson: Die reine Daten-Übertragungsgeschwindigkeit Strafe ist zu vernachlässigen. Moderne CPUs erreichen einen Krypto / AES-Durchsatz von mehreren hundert MBit / s. Also, wenn Sie auf ressourcenbeschränkten System sind (Mobiltelefon) TLS / SSL ist schnell genug für Daten um Anschlagen.

Aber bedenken Sie, dass die Verschlüsselung macht Caching und Lastausgleich viel schwieriger. Dies könnte in einem großen Leistungseinbußen zur Folge haben.

Aber Verbindungsaufbau ist wirklich eine Show-Stopper für viele Anwendungs. Auf niedriger Bandbreite und hohen Paketverlust, Verbindungen mit hohen Latenz (mobilem Gerät auf dem Land) die zusätzlichen Rundreisen durch TLS erforderlich unbrauchbar etwas langsam in etwas machen könnte.

Zum Beispiel mussten wir die Verschlüsselungsanforderung für einige unserer internen Web-Anwendungen Zugang fallen -. Sie, wo neben unbrauchbar verwendet, wenn aus China

Angenommen, Sie zählen nicht Verbindungsaufbau (wie Sie in Ihrem Update angezeigt wird), es hängt stark von der gewählten Chiffre. Netzwerk-Overhead (in Bezug auf die Bandbreite) vernachlässigbar. CPU-Overhead wird durch Kryptographie dominiert werden. Auf meinem mobilen Core i5, kann ich etwa 250 MB pro Sekunde mit RC4 auf einem einzigen Kern verschlüsselt. (RC4 ist, was Sie für eine maximale Leistung wählen sollte.) AES ist langsamer und bietet "nur" rund 50 MB / s. Also, wenn Sie richtig Chiffren wählen, werden Sie nicht gelingen, einen einzigen Strom Kern beschäftigt dich mit dem Krypto-Overhead zu halten, selbst wenn Sie eine voll ausgenutzt 1 Gbit Linie haben. [ Bearbeiten : RC4 sollte nicht verwendet werden, weil es nicht mehr sicher ist. Allerdings ist die Unterstützung AES Hardware jetzt in vielen CPUs ist, die wirklich schnell AES-Verschlüsselung macht auf solchen Plattformen.]

Der Verbindungsaufbau ist jedoch anders. Je nach Implementierung (zum Beispiel Unterstützung für TLS Fehlstart), wird es Umläufe hinzufügen, die noticable Verzögerungen führen kann. Zusätzlich teure Krypto am ersten Verbindungsaufbau erfolgt (oben genannte CPU kann nur akzeptieren 14 Verbindungen pro Kern pro Sekunde, wenn Sie dummerweise 4096-Bit-Schlüssel verwendet, und 100, wenn Sie 2048-Bit-Schlüssel verwenden). Bei nachfolgenden Verbindungen werden frühere Sitzungen oft wiederverwendet, die teure Krypto vermieden werden.

Also, zusammenfassen:

Transfer auf bestehende Verbindung:

  • Verzögerung: fast keine
  • CPU: vernachlässigbar
  • Bandbreite: vernachlässigbar

Erster Verbindungsaufbau:

  • Delay: zusätzliche Umläufe
  • Bandbreite: mehrere Kilobyte (Zertifikate)
  • CPU auf den Client: mittel
  • CPU auf dem Server: hohe

Im Anschluss Verbindungsaufbauten:

  • Delay: zusätzliche Hin- und Rückfahrt
  • (nicht, wenn ein oder mehr sicher, kann die Durchführung abhängig sein)
  • Bandbreite: vernachlässigbar
  • CPU: fast keine
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top