Welcome! Log In Create A New Profile

Advanced

Re: Why do newer versions of Chromium favor RSA certificates over ECC certificates?

Maxim Dounin
May 22, 2022 11:36AM
Hello!

On Sun, May 22, 2022 at 02:55:29AM +0800, wordlesswind via nginx wrote:

> I noticed that after Chromium 594356 build (71.0.3563.0) it favors RSA
> certificates over ECC certificates.

[...]

> I don't get the idea from the changes in the source code. I'm curious to
> know why, since obviously ECC certificates are smaller than RSA
> certificates.
>
>
> Let’s Encrypt
>
> ECC 384 (E1)
>
> RSA 4096 (R3)
>
> nginx.conf:
>         ssl_stapling         on;
>         resolver             8.8.8.8 1.1.1.1 valid=300s;
>         ssl_stapling_verify  on;
>
>         ssl_session_cache    shared:SSL:10m;
>         ssl_session_timeout  1d;
>
>         ssl_protocols        TLSv1.2 TLSv1.3;
>         ssl_ciphers
> ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256;
>         ssl_ecdh_curve       secp384r1;
>
>         ssl_early_data       on;

First of all, you may want to get rid of the "ssl_ecdh_curve" in
your nginx configuration. Or at least add "prime256v1" and
"x25519" to the list. Using only "secp384r1" severely limits what
can be used during the handshake, and can affect ciphers and
certificates being used.

For example, in current versions of Chrome the preferred signature
algorithm for TLS 1.3 ciphers is "ecdsa_secp256r1_sha256", so it
won't work in your configuration. And the only key share group is
"x25519", so your configuration will require HelloRetryRequest.

Secondly, given the signature algorithms order as used by Chrome
and assuming Chromium's is the same, you'll likely have to switch
to prime256v1 (AKA secp256r1) certificates (and probably from R3)
to make sure they are being preferred over RSA:

Extension: signature_algorithms (len=18)
Type: signature_algorithms (13)
Length: 18
Signature Hash Algorithms Length: 16
Signature Hash Algorithms (8 algorithms)
Signature Algorithm: ecdsa_secp256r1_sha256 (0x0403)
Signature Hash Algorithm Hash: SHA256 (4)
Signature Hash Algorithm Signature: ECDSA (3)
Signature Algorithm: rsa_pss_rsae_sha256 (0x0804)
Signature Hash Algorithm Hash: Unknown (8)
Signature Hash Algorithm Signature: SM2 (4)
Signature Algorithm: rsa_pkcs1_sha256 (0x0401)
Signature Hash Algorithm Hash: SHA256 (4)
Signature Hash Algorithm Signature: RSA (1)
Signature Algorithm: ecdsa_secp384r1_sha384 (0x0503)
Signature Hash Algorithm Hash: SHA384 (5)
Signature Hash Algorithm Signature: ECDSA (3)
Signature Algorithm: rsa_pss_rsae_sha384 (0x0805)
Signature Hash Algorithm Hash: Unknown (8)
Signature Hash Algorithm Signature: Unknown (5)
Signature Algorithm: rsa_pkcs1_sha384 (0x0501)
Signature Hash Algorithm Hash: SHA384 (5)
Signature Hash Algorithm Signature: RSA (1)
Signature Algorithm: rsa_pss_rsae_sha512 (0x0806)
Signature Hash Algorithm Hash: Unknown (8)
Signature Hash Algorithm Signature: Unknown (6)
Signature Algorithm: rsa_pkcs1_sha512 (0x0601)
Signature Hash Algorithm Hash: SHA512 (6)
Signature Hash Algorithm Signature: RSA (1)

Note that ecdsa_secp384r1_sha384 comes after rsa_pkcs1_sha256.
Overall, it looks like signature algorithms are ordered based on
the hash function bits, and this results in RSA with sha256
signature being preferred over ECDSA with secp384r1/sha384. The
question "why to use such order" should be addressed to the
Chromium developers, as already suggested.

Just in case, on nginx side you can force the order you prefer by
using the ssl_prefer_server_ciphers directive
(http://nginx.org/r/ssl_prefer_server_ciphers). I wouldn't
recommend doing this though, as in most cases clients know better
which ciphers they can handle more efficiently and securely.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx mailing list -- nginx@nginx.org
To unsubscribe send an email to nginx-leave@nginx.org
Subject Author Posted

Why do newer versions of Chromium favor RSA certificates over ECC certificates?

wordlesswind via nginx May 21, 2022 03:00PM

RE: Why do newer versions of Chromium favor RSA certificates over ECC certificates?

Thomas Ward May 21, 2022 03:44PM

Re: Why do newer versions of Chromium favor RSA certificates over ECC certificates?

Maxim Dounin May 22, 2022 11:36AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 164
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready