blob: 5879d77a916ad35265f6e439257719d5edd3b432 [file] [log] [blame] [view]
Gilles Peskine3758fd62021-06-02 00:07:17 +02001Weak curves are now disabled by default for X.509 and TLS
2---------------------------------------------------------
3
4The default X.509 verification profile (`mbedtls_x509_crt_profile_default`) and the default curve and hash selection have changed. X.509 and TLS now allow the same algorithms by default (except that the X.509 profile only lists curves that support signature verification).
5
6Hashes and curves weaker than 255 bits are no longer accepted by default. The following algorithms have been removed: SHA-1 (formerly only accepted for key exchanges but not for certificate signatures), SHA-224, secp192r1, secp224r1, secp192k1, secp224k1 (weaker hashes were already not accepted).
7
8The compile-time option `MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE` is no longer available.
9
10If you still need to accept certificates signed with algorithms that have been removed from the default profile, call `mbedtls_x509_crt_verify_with_profile` instead of `mbedtls_x509_crt_verify` and pass a profile that allows the curves you want. For example, to allow SHA-224:
11```
12mbedtls_x509_crt_profile my_profile = mbedtls_x509_crt_profile_default;
13my_profile.allowed_mds |= MBEDTLS_X509_ID_FLAG( MBEDTLS_MD_SHA224 );
14```
15
16If you still need to allow hashes and curves in TLS that have been removed from the default configuration, call `mbedtls_ssl_conf_sig_hashes()` and `mbedtls_ssl_conf_curves()` with the desired lists.
Gilles Peskineb1940a72021-06-02 15:18:12 +020017
18TLS now favors faster curves over larger curves
19-----------------------------------------------
20
21The default preference order for curves in TLS now favors resource usage (performance and memory consumption) over size. The exact order is unspecified and may change, but generally you can expect 256-bit curves to be preferred.
22
23If you prefer a different order, call `mbedtls_ssl_conf_curves()` when configuring a TLS connection.