SSLはどのくらいのオーバーヘッドを課しますか?


168

確かな答えはありませんが、SSLの暗号化オーバーヘッドと暗号化されていないソケット通信の一般的な大まかな見積もりはありますか?アプリケーションレベルの処理は考慮せず、通信処理と通信時間のみについて話しています。

更新

HTTPSとHTTPについての質問がありますが、スタックの下位を見ることに興味があります。

(私は避けるの混乱に句「桁違い」を交換し、私はむしろ正式なCompSciの意味でのより非公式な専門用語としてそれを使用していた。もちろん、私があれば。いた正式にそれを意味し、私は思考のバイナリではなくなっているだろう真のオタクとして10進数!;-)

更新

コメントのリクエストごとに、永続的な接続を介した適切なサイズのメッセージ(1k〜10kの範囲)について話していると想定します。したがって、接続のセットアップとパケットのオーバーヘッドは重要な問題ではありません。


あなたはこの同様の質問を見てみましょう。
Darin Dimitrov、

1
アプリケーションをもう少し特徴付けられますか?たとえば、短期間の接続を多数確立しますか?接続中、個々のメッセージはどのくらいの大きさになる傾向がありますか?(たとえば、SSLトンネルを介してTelnetでキーを押すたびにフラッシュするか、1 TBのログファイルをコピーしている可能性があります。)
エリクソン

回答:


178

大きさのオーダー:ゼロ。

つまり、TLSを追加しても、スループットが半分になることはありません。「重複」の質問に対する回答は、アプリケーションのパフォーマンスに重点を置いており、SSLのオーバーヘッドと比較してどうですか。この質問は、アプリケーションの処理を明確に除外し、非SSLとSSLのみを比較しようとしています。最適化の際にパフォーマンスをグローバルに把握することは理にかなっていますが、それはこの質問が求めていることではありません。

SSLの主なオーバーヘッドはハンドシェイクです。ここで、高価な非対称暗号化が行われます。ネゴシエーション後、比較的効率的な対称暗号が使用されます。そのため、多くの接続が行われるHTTPSサービスでSSLセッションを有効にすると非常に役立ちます。長時間の接続の場合、この「最終的な影響」はそれほど重要ではなく、セッションはそれほど役に立ちません。


ここに興味深い逸話があります。GoogleがHTTPSを使用するようにGmailを切り替えたとき、追加のリソースは必要ありませんでした。ネットワークハードウェアなし、新しいホストなし。CPU負荷が約1%増加しただけです。


6
「HTTPSサービスでSSLセッションを有効にする」方法を教えてください。これについて学ぶための良いリソースは何ですか?
ジャスティンビンセント

1
SSLセッションの有効化はサーバー固有です。サーバーのマニュアルを読んでください。
エリクソン、

7
@Bart van Heukelom-キープアライブは、ソケット(およびSSL接続)を長時間開いたままにしておくのに役立ちます。ただし、SSLセッションにより、ネゴシエートされた暗号化パラメーターがソケット間で「記憶」されます。したがって、HTTPキープアライブは、参照されたコンテンツを含む単一のWebページをロードするのに役立ちますが、数秒後にその接続は閉じます。3分後、たとえば、別のページがフェッチされると、SSLセッションにより、完全なハンドシェイクを繰り返さずにSSL接続を再確立できます。特に、公開鍵暗号との遅い鍵交換はスキップできます。
エリクソン

2
@Tony TLSが数パーセント以上のオーバーヘッドを追加する実際の例はありますか?私の答えは質問と同じくらい一般的です。別のテイクがある場合は、共有してください。
エリクソン2013

3
@Tony一度に1バイトを書き込むとき、プレーンソケットがSSLソケットよりもスペースの点で42倍優れていることを確認しました。これは最悪のケースです。250xを見たことがない。バッファリングとフラッシュよりも洗練されていないプログラミングを使用して、プレーンテキストソケットの速度がSSLの3倍以下であるという一般的な結果が得られた1700データポイントを使用して、インターネットで大規模な実験を行いました。JSSE、おそらく実験の日付を与えられたJava 5。
ローン侯爵2014

39

@ericksonの2番目:純粋なデータ転送速度のペナルティはごくわずかです。最近のCPUは数百MBit / sの暗号化/ AESスループットに達しています。したがって、リソースに制約のあるシステム(携帯電話)を使用している場合を除き、TLS / SSLはデータを大量に送信するのに十分な速度です。

ただし、暗号化を行うと、キャッシングとロードバランシングがはるかに困難になることに注意してください。これにより、パフォーマンスが大幅に低下する可能性があります。

しかし、接続のセットアップは、実際には多くのアプリケーションのショーストッパーです。低帯域幅、高パケット損失、高遅延接続(田舎のモバイルデバイス)では、TLSが必要とする追加のラウンドトリップにより、何かが遅くなり、使用できないものになる可能性があります。

たとえば、一部の社内Webアプリにアクセスするための暗号化要件を削除する必要がありました。これらは、中国から使用した場合、次に使用できません。


20
4年後のことですが、中国もすべてのSSL / TLSトラフィックを故意に台無しにした可能性があります。
2013

3
中国がインターネットを検閲し、すべての人のトラフィックを傍受しようとすることは、正確にはニュースではありません。4年後のことですが、あなたはそれがあなたのサイトに行く途中のNSA MITMingだったと思います。
Eugene Beresovsky

接続が不安定な場合の鍵は、暗号化を一度設定してから、本当に必要な場合を除いて再交渉を避け、瞬きすることなく両側がいつでもIPアドレスを変更できるようにすることです。(OpenVPNはこれをサポートしています。)MTUは非常に信頼性が低く、実に不正である可能性があるため、ITは断片化を可能にするのに役立ちます。
Evi1M4chine 2016

12

(更新で示したように)接続設定をカウントしないと仮定すると、選択した暗号に強く依存します。ネットワークのオーバーヘッド(帯域幅の観点から)はごくわずかです。CPUオーバーヘッドは暗号化によって支配されます。モバイルCore i5では、シングルコアのRC4で毎秒約250 MBを暗号化できます。(RC4は最大のパフォーマンスを得るために選択すべきものです。) AESはより遅く、約50 MB /秒の "のみ"を提供します。そのため、正しい暗号を選択すると、1ギガビットの回線を完全に利用している場合でも、暗号化のオーバーヘッドによって現在の単一コアをビジー状態に保つことができなくなります。[ 編集:RC4は安全でなくなったため、使用しないでください。ただし、AESハードウェアサポートは現在多くのCPUに存在しており、そのようなプラットフォームではAES暗号化が本当に高速になります。]

ただし、接続の確立は異なります。実装に応じて(TLS偽スタートのサポートなど)、往復が追加され、顕著な遅延が発生する可能性があります。さらに、最初の接続の確立時に高価な暗号化が行われます(上記のCPUは、4096ビットキーを愚かに使用した場合、1秒あたりコアあたり14接続のみを受け入れ、2048ビットキーを使用した場合は100接続できます)。後続の接続では、以前のセッションが再利用されることが多く、高価な暗号化を回避できます。

要約すると、

確立された接続での転送:

  • 遅延:ほとんどなし
  • CPU:無視できる
  • 帯域幅:無視できる

最初の接続の確立:

  • 遅延:追加の往復
  • 帯域幅:数キロバイト(証明書)
  • クライアントのCPU:中
  • サーバーのCPU:高

後続の接続確立:

  • 遅延:追加の往復(1つまたは複数であるかどうかは不明、実装に依存する場合があります)
  • 帯域幅:無視できる
  • CPU:ほぼなし

重要な注意:RC4を二度と使用するべきではありません。プロトコルは壊れていると見なすことができ、スパイ組織からの安全のためには、RC4送信と暗号化されていない送信は、少なくとも暗号化されていない送信と同等と見なす必要があります。現在、このような組織から独立しているため、バルク暗号化にはchacha20-poly1305のようなものが強く推奨されます。
Evi1M4chine 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.