TLS 1.3の性能 その1 – セッション再開

TLS 1.3はSSL / TLS仕様の最新バージョンです。今回メッセージとメッセージフローには重大な変更があります。安全性と性能のための変更です。このブログシリーズでは、wolfSSLTLS 1.2TLS 1.3での性能の違いと、その利点をアプリケーションに最大限に取り入れる方法について説明します。
最初の性能の違いは、速度の低下です。 TLS 1.2では、セッション再開のハンドシェイクの実行は非常に迅速です。しかしこれにはセキュリティの犠牲があります。クライアントがセッションを再開するたびに同じセッションIDが使用され、同じマスターシークレットが使用されます。そのため、マスターシークレットが破られると、再開されたセッションがすべて侵害されてしまいます。また、TLS 1.2のセッション再開はステートフルであり、マルチサーバーアーキテクチャでは性能の問題が発生する可能性があります。
TLS 1.3はセッションチケットのみを使用してセッションを再開します。このメカニズムでは、サーバーはセッション再開に必要なすべての情報を暗号化してクライアントに送り、セッション再開時にクライアントは内容を気にせずにそのままセッションチケットとしてサーバーに送り返します。
同じマスターシークレット がハンドシェークで使用されますが、デフォルトの動作では鍵交換を実行します。鍵と初期ベクトルを計算するときに、ユニークな共有暗号鍵が生成され、マスターシークレットと組み合わされます。このメカニズムで前方秘匿性が確保できます。
ここでの性能の代償は、セッションチケットを使用するには、セッションチケットの復号化が必要だということです。またTLS 1.3は、とにかくハンドシェイクでより多くの暗号化/復号化とハッシング操作を実行します。したがって、同じコンピュータ上のようにレイテンシーが非常に小さな通信経路でクライアントとサーバーを実行する場合、TLS 1.3ハンドシェイクは20%以上遅くなります。レイテンシの大きいのネットワークでは、対称暗号とダイジェストアルゴリズムのほうがネットワークより速いため、遅れは顕在化しないかもしれません。
しかし、鍵交換をするデフォルトの動作も検討してみてください。DHキーと秘密鍵の生成は、最も処理量を必要とする操作とハンドシェイクでもあります。さきほどの同じコンピュータ上でクライアントとサーバーの両方を実行するケースでは、2048ビットDHパラメータを使用すると、TLS 1.2にくらべセッション再開に13倍の時間かかることがあります。代わりにECDHを使用することもでき、高度に最適化された実装では、2倍程度の速度低下ですみます。
TLS 1.3では、このような性能低下を回避する方法はなく、セッション再開は最も速いハンドシェイクです。最適化されたECDHを使用することで、最善の性能とさらなる安全性が得られます。場合によっては、セッション再開の性能を向上する方法もあるのですが、それは次回以降のブログでご紹介していきます。
次回は 、サーバーのみの認証を実行するフルハンドシェイクの性能向上について書きます。
さらに詳しい情報は弊社問い合わせ窓口info@wolfssl.jpまでお問い合わせください。
原文: https://www.wolfssl.com/tls-1-3-performance-resumption/
wolfSSLホーム:www.wolfssl.jp (English:www.wolfssl.com)