DHE脆弱性(CVE 2022-40735)について考えよう

お客様から、CVE 2022-40735 (https://nvd.nist.gov/vuln/detail/CVE-2022-40735) について、また wolfSSL のユーザーとして脆弱性があるかどうかについてお問い合わせがありました。 端的に言うと、答えは「いいえ」です。とは言え、ご自身を危険にさらす場合がいくつかあるのも事実です。 CVEを詳しく掘り下げて、このような攻撃から身を守る最善の方法について見ていきましょう。

まず、このCVE での説明の目的は適切な議論ができるようにするためです。 攻撃は、サーバーが大きなプライベート パラメータまたは大きなパラメータを使用する TLS などのプロトコルでの DHE の使用に集中しています。 この記事の執筆時点では対応する論文を見ていないので、実際の攻撃があったのかは明確ではありません。 最小限の説明しか得られていませんが、それでも私たちは自分自身を守るためにいくつか優れたセキュリティ上の決定を下すことができます。

この攻撃では、クライアントが 1 つ以上のメッセージをサーバーに送信して、DHE鍵交換を開始します。 TLS 1.2 では、これはクライアントがハンドシェイクを開始し、DHE 暗号スイートをネゴシエートすることを意味します。 TLS 1.3 では、クライアントは DH key share データを送信し、DH 名前付きグループ (名前付き楕円曲線ではない) のサポートのみを一覧表示します。 攻撃は、サーバーが鍵ペアを生成する必要がある間、クライアントがほとんど作業を行わなくても発生します。

TLS 1.2 では、サーバーが最初に鍵ペアを生成し、DH パラメータと公開鍵をクライアントに送信します。 この時点で、クライアントは接続を切断し、再接続を開始できます。 TLS 1.3 では、クライアントは同じ鍵共有を何度も送信し、サーバーが公開 DH 鍵を送信すると接続を切断できます。

サーバーが DHE のために実行しなければならない作業量は、非常に大きくなる可能性があります。 DHE 操作は非常に遅いことが知られており、さらに遅くなる方法があります。

交換用の鍵ペアの生成には、ランダムな秘密鍵の生成と公開鍵の計算が含まれます。 秘密鍵は、次数 (ジェネレータ (g) をべき乗することによって到達できる個別の値の数) と同じくらい大きくなる可能性があります。 次数は、素数の「法(modulus)」とほぼ同じサイズです。

過去の知恵は、注文をカバーするのに十分な大きさの秘密鍵を生成することでした。 でもこれは無駄すぎます! 2048 ビットの DH 鍵には、112 ビットのセキュリティしかありません。 公開鍵から秘密鍵を見つけるのは計算上非常に難しいため、224 ビットの秘密鍵で十分なのです。 2048 ビットの指数 (秘密鍵) を使用した剰余累乗は、224 ビットの指数を使用した場合よりも約 8 倍遅くなります!

wolfSSL は、順序が不明な場合や名前付きグループを使用する場合、小さくても安全な秘密鍵を使用します。

このCVE では、この攻撃をDoS攻撃と表現しています。 つまり、サーバーがDH 鍵の生成で忙しく、他のことを行うことができなくなります。 しかし、そのサーバーはどれくらい強力ですか? 同時に処理できる接続数はいくつですか? 答えはそのサーバーのセットアップからわかるはずです。

一つのサーバー スレッドが 1 秒間に数十の接続を処理することが期待値として設定されているのであれば、1 秒間の DHE 操作の数がそれよりもはるかに多くても問題はありません。 ただし、1 秒あたりの DHE 操作の数が必要な接続数に近い場合は、いくつかの変更を行う必要があります。

攻撃の別の部分は、サーバーに大きなパラメーターを使用させることです。 セキュリティ強化のため、サーバーは 2048、3072、および 4096 ビットの名前付きグループを使用できるように構成されている場合があります。 最新の Intel x64 サーバーでは、たとえば、4000 の 2048 ビット DHE 鍵生成を 1 秒で完了できます。 ただし、3072 ビット DHE の場合は 2000 のみ、4096 ビット 鍵生成の場合は 1000 のみです。したがって、1 秒あたりに実行できる DHE 操作の数と比較して、サポートする接続の数を理解することが重要です。

そのため、TLS で DHE 暗号スイートを使用する場合は、適切なサイズのパラメーターを使用することが重要な軽減策となります。 サーバーが、処理できるサイズのパラメーターのみをサポートするように構成されていることを確認してください。

別の軽減策は、TLS ハンドシェイクで DHE を使用しないことです。 ECDHE は非常に一般的にサポートされ、人気があります。 X25519 を使用すると、2048 ビット DHE よりも 5 倍高速になります。

DoS 攻撃の検出と防御に関連する緩和策は他にもあります。 1 つのメカニズムは、悪意のあるクライアントを検出してブロックするか、タイムアウトにすることです。 これらの保護はベスト プラクティスと見なされ、この CVE から保護しない場合でも実装する必要があります。

要約すると、CVE 2022-40735 で説明されているように、wolfSSL は DHE 鍵生成における長い秘密鍵の問題に対して脆弱ではありません。 ただし、サーバーで許可する DHE パラメータのサイズを慎重に検討してください。 接続要件に対する DHE 操作の相対的なパフォーマンスは、とにかく ECDHE に切り替える必要があることを意味する場合があります。

原文:https://www.wolfssl.com/dhe-vulnerability-cve-2022-40735/