私の会社のTLS標準を決定する際に、なぜすべての推奨事項がまだTLS_DHE_xxxで始まる一時的なDiffie-Hellman TLS暗号の使用を提案するのか不思議に思いました。
多くの研究をした後、私は以下を発見しました。
Alexa.com
の上位10サイトのうち1つのサイト(Wikipedia.org)のみが実際に使用しています。他のどれもせず、代わりにTLS_ECDHE_xxxまたはTLS_RSA_xxx暗号に依存します。このことから、これらの暗号を使用しないことによって影響を受けるブラウザーはそれほど多くないことが推測できます。それ以外の場合、これらの大規模なサイトはユーザーを遮断します。Ssllabs.comのブラウザーでサポートされている暗号スイートを見ると、同等の楕円曲線よりもTLS_DHE_xxx暗号を選択する重要なブラウザーがないことが明らかです。 TLS_DHE_xxx暗号をサポートするWikipedia.org上のすべてのブラウザーは、代わりにTLS_RSAまたはTLS_ECDHE暗号スイートを選択します。
これに対する注目すべき例外は、Android 2.3.7以下、IE 8、Java 6u45およびOpenSSL 0.9です。 8y。これらのうち、Android 2.3.7、OpenSSL 0.9.8yおよびJava 6u45はTLS_DHE暗号を選択し、さらにその後、後者は1024ビットを超えるDHパラメータをサポートしません(LogJam攻撃から推奨されます)IE 8 on XPは、 TLS_DHEは暗号化されているため、このコンテキストではブラウザは無効です。
事実上、上記の段落の結果、TLS_DHE_xxx暗号化を有効にする唯一の利点は、Android 2.3.7およびOpenSSL 0.9.8yクライアントは、パーフェクトフォワード機密。これらのフリンジケースクライアントがこれらの暗号をサポートする唯一の理由であることが私の発見です。これが確かに事実である場合、将来的には、明示的に希望しない限り、これらの暗号スイートを含めることには意味がないようです。これらのブラウザのPFSをサポートします。これらのブラウザはすべて、正しい暗号が利用可能であればPFSなしでTLS_RSA_xxx暗号を使用して接続します。
MikeとMichałからいくつかの素晴らしいフィードバックを受けた後、この質問に答えるときに考慮したい点を私の研究にさらにいくつか追加することにしました。
どちらも有効な点を提起しましたが、私の意見では、今日私たちが知っているように、インターネット上で一般的に考えると、どちらもやや「フリンジ」なケースを指しています。
EC暗号の信頼問題。
私は最初の調査でこれを検討しましたが、元の質問に追加するのを忘れていました。一部の人々は、RFC 4492で定義されている標準のEC曲線を信頼していません。これは、私の質問に多くの可能な結果をもたらす可能性があります。
1。サーバーの所有者はECDHE暗号を信頼しませんが、DHE暗号とともに有効のままにします(Mozilla TLSガイドによる)。この場合、DHE暗号は上記のフリンジケースブラウザー以外では使用されません。
2。サーバーの所有者はECDHE暗号の信頼性について何の見解もなく、クライアントがECDHEを信用しない場合に備えて、DHE暗号をそこに残します。この場合、ECDHEを無効にする唯一のユーザーは、NSAの関与のためにそれらを信頼しない上級ユーザーである可能性があります。また、そのようなユーザーは完全転送秘密を必要とするため、 DHE暗号のみを使用するように制限されています。ただし、インターネット上のWebサーバーの半分はDHE暗号を使用していないため、これらのユーザーはほとんど何もするのに苦労します(そして、彼らは上級ユーザーなので、Googleやスタック交換または最も上位のサイトにアクセスします)。
これは、「典型的な」Webサイトで検討する必要がないユーザーのフリンジケースのようです。
。サーバーの所有者がECDHE暗号を完全に信用しない場合は、DHE暗号のみを有効にするのではなく、単に有効にする必要があります。これは、DHE暗号を使用するのに適したシナリオです。ただし、DHEのみをサポートしてECDHEをサポートしていないサイトはまだ見つかりません。
これにより、これは「フリンジケース」のように見え、通常のTLS設定には適用されません。 ECDHEの信頼性が問題である場合は、代わりにDHEを検討する必要があるということは、どのような規格でも確かに主張できます。
曲線の互換性の問題
「Supported Elliptic Curves Extension」がどのように機能するかについて学習したので、これがDHE暗号を使用する際の考慮事項であることがわかります。しかし、これはまだフリンジケースだと感じています。次のシナリオを検討してください。
1。サーバーの所有者は、一般的なブラウザでは広くサポートされていないカスタム曲線を使用したいと考えています。彼女は、カスタム曲線を指定し、標準曲線もそのままにしておくTLS構成を使用します。この場合、カスタム曲線をサポートしないブラウザーは、引き続きECDHEと標準曲線を使用して接続します。上記の旧式のフリンジケースクライアントを除き、どのブラウザもDHEを使用して接続しないため、それらを指定する必要はありません。
2。サーバーの所有者はonly一般的なブラウザで広くサポートされていないカスタム/非標準曲線を使用したいと考えています。彼女は、標準曲線ではなくECDHEのカスタム/非標準曲線を指定するTLS構成を使用します。現在のほとんどのブラウザーはカスタム/非標準曲線をサポートしておらず、PFSを維持するためにDHEにフォールバックする必要があります。これは、優れたECDHE曲線をサポートしないもののフォールバックとしてDHE暗号をサポートするための良いシナリオです。一般的なTLSサーバーではそのような構成が(まだ)許可されていないため、これはまだ周辺的な問題だと感じています。
今後、より多くのサーバーが、使用する曲線を指定するオプションをサポートし始めるようになれば、これはフリンジケースとは言えなくなります。
私はこれらの暗号を含める、または除外する理由でしばらく探していましたが、自分で行った自分の研究以外には何も思いつきませんでした。私は何かが欠けているに違いないと感じざるを得ないので、私の質問はこれです:
PS ECDHEとDHEはどちらもポスト量子の世界では役に立たないため、キーを検討するときは [〜#〜] sidh [〜#〜] (ポスト量子暗号のPFS)のようなソリューションを検討する必要がありますもう少し遠い将来にメソッドを交換します。
NSAまたは他の機関によって侵害されたと信じて、ECDHEに使用される曲線を信頼しない人もいます-たとえば このコメント を参照) Bruce Schneier氏は、ECCではなく従来の離散ログ暗号を優先するようになったと述べています。ECDHEを信頼できない場合は、DHEが完全な前方秘密を提供する唯一のアルゴリズムであるため、推奨される選択肢です。
最初に、暗号スイートの選択がどのように機能するかについてのメモ。
標準によると、サーバーはクライアントの好みを尊重することになっています。実際には、サーバーは、サーバー管理者が(正しいか誤っているかを問わず)サーバーよりもクライアントの方がよく知っていると信じているため、クライアントの設定を無視する傾向があります。
私が次の目標を持つサーバー管理者であるとします。
プライバシーを重視するサーバー管理者にとって、これらの目標は珍しいとは思いません。
これらの基準が与えられ、SSLラボによると、DHEはいくつかのギャップを埋めます。
素数が十分に大きいDHEは安全ではないと考える理由はないので、サポートされている場合は有効のままにしておきます。
有効になっている場合は、十分に大きい素数を使用する必要があります。私の一般的なガイドラインは、DSAをRSAキーと同じサイズにすることです。
通常、DHE暗号スイートは、対応するEDHE暗号スイートのすぐ下に優先順位で配置します。