Default DHE group

Matt Caswell matt at openssl.org
Tue Mar 19 11:36:07 UTC 2019



On 18/03/2019 23:05, Zeev Tarantov wrote:
> Since openssl verion 1.1.0, code for TLS server can use
> `SSL_CTX_set_dh_auto(ctx, 1);` to let openssl handle choice of DH group which
> will be used to generate ephemeral keys if a DHE cipher suite is negotiated.
> 
> TLS 1.3 limits DHE parameters to use groups from RFC 7919, from ffdhe2048 to
> ffdhe8192.
> Reference: https://tools.ietf.org/html/rfc8446#section-4.2.8.1
> 
> I'm looking at the function ssl_get_auto_dh in github master and you get one of:
> RFC 5114 DH_get_1024_160
> RFC 5114 DH_get_2048_224
> RFC 3526 BN_get_rfc3526_prime_3072
> RFC 3526 BN_get_rfc3526_prime_8192
> 
> Because SSL_CTX_set_dh_auto does not use the values from RFC 7919, application
> developers choose to not use SSL_CTX_set_dh_auto.
> See for example this commit to nginx web server:
> https://hg.nginx.org/nginx/rev/1aa9650a8154

Well I don't think that commit is an example of developers choosing not to use
SSL_CTX_set_dh_auto because it doesn't use the values from RFC7919. The commit
doesn't mention RFC7919 at all and actually predates the publication of that RFC
in any case. Rather it seems to be a policy decision to not use fixed DH
parameters due to precomputation attacks. That concern would apply equally well
to RFC7919 - although I'm not aware of any practical precomputation attacks for
non-export grade DH params.

I'm also not aware of any concerns raised about the RFC3526/RFC5114 params
(other than the 1024 one is quite small - but looking at the logic of
SSL_CTX_set_dh_auto it selects a size based on the strength of the other
elements in the ciphersuite - so it will use larger DH params where appropriate).

> I also cannot really recommend postfix switch to SSL_CTX_set_dh_auto from the
> hardcoded default generated by the postfix developers
> (https://github.com/vdukhovni/postfix/blob/postfix-3.4/postfix/src/tls/tls_dh.c).
> 
> Patching software using openssl to use RFC 7919 groups "manually" does not scale
> well. Expecting server admins to configure this at install time is laughable.
> 
> The situation is so dire, Google Chrome famously decided there are so many
> RSA-2048/DHE-1024 web servers deployed, that disabling DHE is the right thing to do!

Again, this seems to be mixing up different things. I'm not sure how that is
relevant to the RFC7919 vs RFC5114/RFC3526 discussion.

> 
> In case dh_auto was set, why doesn't openssl use the RFC 7919 groups also with
> TLS versions below 1.3?

In fact OpenSSL does not support DHE in TLSv1.3 at all so it is not a case of
using RFC7919 for one protocol version and not for others. There is a PR for
adding TLSv1.3 support for this:

https://github.com/openssl/openssl/pull/8178

The reason that they aren't supported by SSL_CTX_set_dh_auto() at the moment is
that that function was introduced before RFC7919 was published (and in fact
1.1.0 was released in the same month as the publication of that RFC). I notice
that the underlying RFC7919 params have been integrated into the latest versions
of OpenSSL but only in libcrypto - not in libssl. I'd certainly have no
objection to updating SSL_CTX_set_dh_auto() to use more modern parameters in
OpenSSL 3.0 (PRs welcome) - although I don't think we could justify backporting
such a change to a stable branch (1.1.1).

Matt


More information about the openssl-users mailing list