Skip to content

Commit 03e7040

Browse files
Merge pull request #9917 from valeriosetti/issue9685
[development] Remove the DHE-RSA key exchange
2 parents 0baf361 + bfc1ec1 commit 03e7040

21 files changed

+18
-522
lines changed

ChangeLog.d/9685.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Removals
2+
* Remove support for the DHE-RSA key exchange in TLS 1.2.

docs/architecture/tls13-support.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ Support description
117117
| MBEDTLS_KEY_EXCHANGE_PSK_ENABLED | n/a (2) |
118118
| MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED | n/a |
119119
| MBEDTLS_KEY_EXCHANGE_RSA_ENABLED | n/a |
120-
| MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED | n/a |
121120
| MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED | n/a |
122121
| MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED | n/a |
123122
| MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED | n/a |

framework

include/mbedtls/check_config.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,6 @@
7474
#error "MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED defined, but not all prerequisites"
7575
#endif
7676

77-
#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) && \
78-
( !defined(MBEDTLS_DHM_C) || !defined(MBEDTLS_RSA_C) || \
79-
!defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_PKCS1_V15) )
80-
#error "MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED defined, but not all prerequisites"
81-
#endif
82-
8377
#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) && \
8478
( !defined(MBEDTLS_CAN_ECDH) || !defined(MBEDTLS_RSA_C) || \
8579
!defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_PKCS1_V15) )
@@ -162,7 +156,6 @@
162156

163157
#if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \
164158
!(defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \
165-
defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \
166159
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
167160
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
168161
defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \

include/mbedtls/config_adjust_ssl.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@
6262
#undef MBEDTLS_SSL_EXTENDED_MASTER_SECRET
6363
#undef MBEDTLS_SSL_RENEGOTIATION
6464
#undef MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
65-
#undef MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
6665
#undef MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
6766
#undef MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
6867
#undef MBEDTLS_KEY_EXCHANGE_PSK_ENABLED

include/mbedtls/mbedtls_config.h

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -206,38 +206,6 @@
206206
*/
207207
#define MBEDTLS_DEBUG_C
208208

209-
/**
210-
* \def MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
211-
*
212-
* Enable the DHE-RSA based ciphersuite modes in SSL / TLS.
213-
*
214-
* Requires: MBEDTLS_DHM_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
215-
* MBEDTLS_X509_CRT_PARSE_C
216-
*
217-
* This enables the following ciphersuites (if other requisites are
218-
* enabled as well):
219-
* MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
220-
* MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
221-
* MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
222-
* MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
223-
* MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
224-
* MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
225-
* MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
226-
* MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
227-
* MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
228-
* MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
229-
* MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
230-
* MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
231-
*
232-
* \warning Using DHE constitutes a security risk as it
233-
* is not possible to validate custom DH parameters.
234-
* If possible, it is recommended users should consider
235-
* preferring other methods of key exchange.
236-
* See dhm.h for more details.
237-
*
238-
*/
239-
#define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
240-
241209
/**
242210
* \def MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
243211
*

include/mbedtls/ssl.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -657,9 +657,6 @@ union mbedtls_ssl_premaster_secret {
657657
#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED)
658658
unsigned char _pms_rsa[48]; /* RFC 5246 8.1.1 */
659659
#endif
660-
#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)
661-
unsigned char _pms_dhm[MBEDTLS_MPI_MAX_SIZE]; /* RFC 5246 8.1.2 */
662-
#endif
663660
#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
664661
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
665662
defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \

include/mbedtls/ssl_ciphersuites.h

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,21 @@ extern "C" {
3030
#define MBEDTLS_TLS_PSK_WITH_NULL_SHA 0x2C /**< Weak! */
3131
#define MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA 0x2F
3232

33-
#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA 0x33
3433
#define MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA 0x35
35-
#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA 0x39
3634

3735
#define MBEDTLS_TLS_RSA_WITH_NULL_SHA256 0x3B /**< Weak! */
3836
#define MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256 0x3C /**< TLS 1.2 */
3937
#define MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256 0x3D /**< TLS 1.2 */
4038

4139
#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA 0x41
42-
#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x45
43-
44-
#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 0x67 /**< TLS 1.2 */
45-
#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 0x6B /**< TLS 1.2 */
4640

4741
#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA 0x84
48-
#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x88
4942

5043
#define MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA 0x8C
5144
#define MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA 0x8D
5245

5346
#define MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256 0x9C /**< TLS 1.2 */
5447
#define MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384 0x9D /**< TLS 1.2 */
55-
#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 0x9E /**< TLS 1.2 */
56-
#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 0x9F /**< TLS 1.2 */
5748

5849
#define MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256 0xA8 /**< TLS 1.2 */
5950
#define MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384 0xA9 /**< TLS 1.2 */
@@ -64,10 +55,8 @@ extern "C" {
6455
#define MBEDTLS_TLS_PSK_WITH_NULL_SHA384 0xB1 /**< Weak! */
6556

6657
#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBA /**< TLS 1.2 */
67-
#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0xBE /**< TLS 1.2 */
6858

6959
#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC0 /**< TLS 1.2 */
70-
#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0xC4 /**< TLS 1.2 */
7160

7261
#define MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA 0xC001 /**< Weak! */
7362
#define MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0xC004
@@ -113,8 +102,6 @@ extern "C" {
113102

114103
#define MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 0xC03C /**< TLS 1.2 */
115104
#define MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 0xC03D /**< TLS 1.2 */
116-
#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044 /**< TLS 1.2 */
117-
#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045 /**< TLS 1.2 */
118105
#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048 /**< TLS 1.2 */
119106
#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049 /**< TLS 1.2 */
120107
#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A /**< TLS 1.2 */
@@ -125,8 +112,6 @@ extern "C" {
125112
#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 0xC04F /**< TLS 1.2 */
126113
#define MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256 0xC050 /**< TLS 1.2 */
127114
#define MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 0xC051 /**< TLS 1.2 */
128-
#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC052 /**< TLS 1.2 */
129-
#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC053 /**< TLS 1.2 */
130115
#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C /**< TLS 1.2 */
131116
#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D /**< TLS 1.2 */
132117
#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E /**< TLS 1.2 */
@@ -153,8 +138,6 @@ extern "C" {
153138

154139
#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07A /**< TLS 1.2 */
155140
#define MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07B /**< TLS 1.2 */
156-
#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 0xC07C /**< TLS 1.2 */
157-
#define MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 0xC07D /**< TLS 1.2 */
158141
#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC086 /**< TLS 1.2 */
159142
#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 0xC087 /**< TLS 1.2 */
160143
#define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 0xC088 /**< TLS 1.2 */
@@ -174,12 +157,8 @@ extern "C" {
174157

175158
#define MBEDTLS_TLS_RSA_WITH_AES_128_CCM 0xC09C /**< TLS 1.2 */
176159
#define MBEDTLS_TLS_RSA_WITH_AES_256_CCM 0xC09D /**< TLS 1.2 */
177-
#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM 0xC09E /**< TLS 1.2 */
178-
#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM 0xC09F /**< TLS 1.2 */
179160
#define MBEDTLS_TLS_RSA_WITH_AES_128_CCM_8 0xC0A0 /**< TLS 1.2 */
180161
#define MBEDTLS_TLS_RSA_WITH_AES_256_CCM_8 0xC0A1 /**< TLS 1.2 */
181-
#define MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CCM_8 0xC0A2 /**< TLS 1.2 */
182-
#define MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CCM_8 0xC0A3 /**< TLS 1.2 */
183162
#define MBEDTLS_TLS_PSK_WITH_AES_128_CCM 0xC0A4 /**< TLS 1.2 */
184163
#define MBEDTLS_TLS_PSK_WITH_AES_256_CCM 0xC0A5 /**< TLS 1.2 */
185164
#define MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8 0xC0A8 /**< TLS 1.2 */
@@ -196,7 +175,6 @@ extern "C" {
196175
/* RFC 7905 */
197176
#define MBEDTLS_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA8 /**< TLS 1.2 */
198177
#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA9 /**< TLS 1.2 */
199-
#define MBEDTLS_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCAA /**< TLS 1.2 */
200178
#define MBEDTLS_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAB /**< TLS 1.2 */
201179
#define MBEDTLS_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAC /**< TLS 1.2 */
202180

@@ -213,7 +191,6 @@ extern "C" {
213191
typedef enum {
214192
MBEDTLS_KEY_EXCHANGE_NONE = 0,
215193
MBEDTLS_KEY_EXCHANGE_RSA,
216-
MBEDTLS_KEY_EXCHANGE_DHE_RSA,
217194
MBEDTLS_KEY_EXCHANGE_ECDHE_RSA,
218195
MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA,
219196
MBEDTLS_KEY_EXCHANGE_PSK,
@@ -225,7 +202,6 @@ typedef enum {
225202

226203
/* Key exchanges using a certificate */
227204
#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \
228-
defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \
229205
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
230206
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
231207
defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \
@@ -272,8 +248,7 @@ typedef enum {
272248
#endif
273249

274250
/* Key exchanges involving server signature in ServerKeyExchange */
275-
#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \
276-
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
251+
#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
277252
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
278253
#define MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED
279254
#endif
@@ -292,8 +267,7 @@ typedef enum {
292267
#endif
293268

294269
/* Key exchanges that involve ephemeral keys */
295-
#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \
296-
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
270+
#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
297271
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) || \
298272
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
299273
defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED)
@@ -306,11 +280,6 @@ typedef enum {
306280
#define MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED
307281
#endif
308282

309-
/* Key exchanges using DHE */
310-
#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED)
311-
#define MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED
312-
#endif
313-
314283
/* Key exchanges using ECDHE */
315284
#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
316285
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \
@@ -354,12 +323,6 @@ typedef enum {
354323
#define MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_ANY_ENABLED
355324
#endif
356325

357-
/* TLS 1.2 XXDH key exchanges: ECDH or ECDHE or FFDH */
358-
#if (defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_OR_ECDHE_1_2_ENABLED) || \
359-
defined(MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED))
360-
#define MBEDTLS_KEY_EXCHANGE_SOME_XXDH_1_2_ENABLED
361-
#endif
362-
363326
/* The handshake params structure has a set of fields called xxdh_psa which are used:
364327
* - by TLS 1.2 to do ECDH or ECDHE;
365328
* - by TLS 1.3 to do ECDHE or FFDHE.

0 commit comments

Comments
 (0)