-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove FFDH in TLS 1.2 #5278
Comments
Note that the relevance of FFDH-with-TLS-1.2 is currently quite low and will presumably only decrease over time as TLS 1.3 becomes dominant. Here are some stats from a crawler on top web sites:
Even restricting ourselves to versions of TLS lower than 1.3, FFDH does not even represent 1% of the connections. Presumably this would be even less in the constrained space, as people have a stronger incentive to switch to ECDH which uses less RAM and computation time / energy. For reference, here's the script that was used to generate those stats: #!/usr/bin/python3
# Usage:
# wget -q -O- https://crawler.ninja/files/ciphers.txt | python3 cs.py
import re
import sys
(total, tls13, ecdh, ffdh, other) = (0, 0, 0, 0, 0)
for l in sys.stdin.readlines():
if l.strip() == "Cipher Suites:":
continue
(cs, n) = l.strip().split()
n = int(re.sub(",", "", n))
total += n
if cs.startswith("TLS_"):
tls13 += n
elif cs.startswith("ECDHE-"):
ecdh += n
elif cs.startswith("DHE-"):
ffdh += n
else:
other += n
pre13 = total - tls13
print("Total:", total)
print("TLS 1.3: {} ({:.2f}%)".format(tls13, tls13 / total * 100))
print("ECDH: {} ({:.2f}% total, {:.2f}% pre-1.3)".format(
ecdh, ecdh / total * 100, ecdh / pre13 * 100))
print("FFDH: {} ({:.2f}% total, {:.2f}% pre-1.3)".format(
ffdh, ffdh / total * 100, ffdh / pre13 * 100))
print("other: {} ({:.2f}% total, {:.2f}% pre-1.3)".format(
other, other / total * 100, other / pre13 * 100)) |
Based on this data, it is tempting to:
|
Reminder to self: advertise this plan on the mailing-list and ask for feedback. |
Note: FFDH support will be added to TLS 1.3 (based on PSA) by #5979 - currently planned for the next quarter. |
Sent an email to the list asking people to speak up if the above plan would cause trouble for them. |
Labeling "api-break" based on the current plan, so that we don't forget about it when preparing 4.0. |
Just noting that this is in line with the upcoming TLS BCP -- see in particular the bit starting with "However, [...]" at https://www.ietf.org/archive/id/draft-ietf-uta-rfc7525bis-08.html#section-4.1-2.7.1 |
Note: the draft mentioned is now an RFC (since November 2022) with official Best Current Practice status. Now there's also a WG draft to formally deprecate FFDH in TLS 1.2 (as well a RSA-encryption-based key exchanges). |
Marking as SHOULD because this removes the final public-facing dependency on |
Based on the (lack of) feedback on the 2022 mailing list thread and on the reasons cited in this issue, we have decided to remove FFDH support in TLS 1.2 in Mbed TLS 4.0. Next steps: identify what code to remove:
|
I don't think extra work should be needed for that. All buffer sizes that depend on whether DHM is enabled should already be guarded by Though of course we should keep an eye out for this, because if we have such bugs, then this would be an excellent opportunity to catch them. |
Note: there are some tests cases in |
This has been broken down into: |
There's a mismatch between what TLS 1.2 expects and what PSA Crypto provides regarding FFDH. See the documentation on PSA limitations for details. (Note: this is only a problem for (D)TLS 1.2, not (D)TLS 1.3.)
This task is:
The text was updated successfully, but these errors were encountered: