Qualys SSL Labsを使用してSSL/TLS構成を確認すると、楕円曲線Diffie–Hellman(ECDH)パブリックサーバーパラメータの再利用にフラグが付いていることがわかりました。
楕円曲線Diffie–Hellman(ECDH)パブリックサーバーパラメータの再利用が不適切と見なされるのはなぜですか?
注:通常のDHと楕円曲線DHの違いを意図的に無視しています。ここでは関係ありません。
これは言い回しや用語が不十分だと思います。 SSL LabsはRFCの定義を使用して、基本的に次のように伝えます「ああ、同じpubkeyを2回受け取った!これは起こらないはずです!」
SSL Labsは、このためにDH public server param (Ys)
およびECDH public server param
という用語を使用します。
そして、これは、「パラメータ」を構成するもののRFC定義を参照していて、opensslの定義を参照していないことを知っている場合にのみ意味があります。構成するもの "dhparams".
TLS 1.2 RFCに従って、パラメーターは次のように定義されます。
struct {
opaque dh_p<1..2^16-1>;
opaque dh_g<1..2^16-1>;
opaque dh_Ys<1..2^16-1>;
} ServerDHParams; /* Ephemeral DH parameters */
したがって、彼らは公開鍵(dh_Ys
)を含めます。
ただし、これはpubkeyを含まないparamsという用語のOpenSSLの使用と競合します。
$ openssl dhparam 123 -noout -text
Generating DH parameters, 123 bit long safe prime, generator 2
This is going to take a long time
......+..++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*
DH Parameters: (123 bit)
prime:
04:f4:19:58:a6:2c:ad:1f:4f:b8:a9:b9:fd:3d:ea:
1b
generator: 2 (0x2)
プライムとジェネレーターのみが含まれています。 PubKeyはありません。
(退屈している場合にのみ、以下の部分を読んでください。)
エフェメラルDHのopensslドキュメントは、エフェメラルRSAのopensslドキュメントから汚染されているようです。 eRSAは過去のものであり、もはやサポートされていませんが、現在は一時的なDH/ECDHを使用するのと同じことを行いました。
それで、それはDH/ECDHと何が関係しているのでしょうか?さて、SSL_OP_SINGLE_DH_USE
のドキュメントは次のようになります。
SSL_OP_SINGLE_DH_USE
一時/一時的なDHパラメータを使用するときは常に新しいキーを作成します[...]
ちょっと待って!通常のopenssl用語によれば、KEYはパラメーター/キーの組み合わせの一時的な部分です。では、なぜtemporary/ephemeral DHパラメータなどの用語を使用するのでしょうか。 -まあ、私は彼らが(今は死んで埋葬されている)eRSAのドキュメントからそれをコピーしたと思います。
それで これはeRSAについて言うのが理にかなっています :
/* Generating a key on the fly is very costly, so use what is there */
if (rsa_1024)
rsa_tmp=rsa_1024;
これを eDHのドキュメント にコピーしても意味がありません。
/* Generating a key on the fly is very costly, so use what is there */
setup_dh_parameters_like_above();
これは、古いeRSAの例からそのままコピーされます。そして、DHのコンテキストでは、これは意味がありません。コストがかかるのは、DH-KEYを再生成するのではなく、DH-GROUPを再生成することです。
2017-07-23Sunを編集:間違った「係数を共有できます、問題ありません」ステートメントを削除しました。
自分でキーを生成しなかった場合、それがバックドアでないかどうか確信が持てません。
キーが十分な数のサーバーと共有されている場合、解読する方が魅力的でコスト効率が高くなります。