Consensus was my current WIP proposal is not viable, for some of the following 
main reasons:

1) cost/benefit analysis doesn't seem to be worth it
2) backwards compatibility handling
3) some argue harder to implement; others argue easier

To start, I'll note that I have not submitted a PR yet.

This is all currently just on a WIP branch on GitHub to be easier to discuss 
specifics on-list. It's based on PR #201, but that's just to make keeping track 
of things easier. This is less of an issue now that my other PRs were merged 
(namely the updated cipher suite section).

I'll switch to a standalone proposal for the next draft instead of editing the 
section inline, as it was indicated that would be easier to follow. Not 
everyone was a party to every discussion on-list about these topics, so a 
better summary is needed.

On to the concerns:

1) The cost/benefit analysis is a very important concern. If you're only 
analyzing this from a perspective of combinatorial explosion reduction, then I 
actually agree it's not worth the cost. Here's how I perceive it, currently:

benefit:
+ reduction in combinatorial mess (primarily achieved as we move forward, as 
back compat still needs to offer some old)
+ single point of negotiation for (EC)DHE
+ single point of negotiation for certificates (seemed to be wide agreement to 
do this regardless of full a la carte)
+ deprecation of existing DHE suites which risk wanting weak groups depending 
on server and are an interop hazard due to Java being crap
+ ECC is always an option, regardless of suite offer/selection
+ FFDHE doesn't need new suites to be offered by clients not offering DHE AEAD 
at the moment
+ missing combinations are no longer an interop failure

cost:
- change has risks of mistake at various points (implementation, deployment, 
admin, client config, etc.)
- support for TLS 1.2 + 1.3 results in a mix; old suites still need to be 
offered
- risk of confusion due to change in behavior (point #2 above)

depends:
+/- point #4, depending on implementation

(the number of points in this list is not indicative of weight; the first cost 
could outweigh all benefits, depending on perspective)

Additionally mentioned cost:
- cannot specify exact combinations; some might not be desirable

However, I set this one aside because it's a problem with a full a la carte 
proposal, but not my current one. All possible combinations of 
DHE/ECDHE+RSA/DSS/ECDSA/PSK/anon+cipher_hash are already considered valid, and 
generally have their own suite assignments. I'm not suggesting breaking up 
cipher_hash. Cert/PSK/anon still have to have separate suites in this system, 
which prohibits wrong stuff like none_anon (lack of DH from plain PSK + anon). 
If we ditch suites entirely, as was suggested by others, then this is a risk 
that comes up.

The main difference in my calculus vs. others is that:
a) I'm swayed by Tony Arcieri's argument that DHE, as it currently exists, 
needs to be scrapped. Old Java chokes on it and there is a risk of servers 
negotiating weak groups when offering it. Deprecating all DHE suites is an 
interop and security win. FFDHE is still around, but now with only strong 
groups, whereas without this proposal we go ECC or bust (until something 
post-quantum is a viable option here).
b) ECC isn't separate anymore; it's always expected to be available. We don't 
have to worry about endpoints actually offering suites that claim support, as 
it's just a given now.
c) Interop failure due to missing suites, regardless of algorithm support, is 
no longer a risk. It's currently possible to negotiate CBC because the GCM 
suites offered by the server are combinations not supported by the client, even 
though GCM is supported. (this does happen in the real world and is too often 
overlooked in this discussion)

2) Backwards compatibility is pretty straightforward.

Here's what Firefox currently offers, minus RC4 & 3DES:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA

The current TLS 1.3 draft would only accept the top two as viable (only AEAD). 
Both my current proposal and the general consensus minimum would pick just the 
top one and pick certs based on the extension.

Note that DHE/FFDHE is available, but only for AES CBC with RSA. The second 
change here is that my proposal allows DHE with no changes to this list. Yeah, 
we'd like to move to an ECC only world, but I'm paranoid and want a backup. 
This gives it effortlessly. This would also permit FFDHE+ECDSA combinations 
without new suites. All DHE suites could be dropped in the future, in favor of 
ECDHE only on old TLS but the possibility of FFDHE on new. If you want to keep 
around FFDHE without this proposal, you need to add those suites for GCM.

Just to make sure it's emphasized, the current path without this proposal would 
require Firefox add the following in order to use the new FFDHE groups:
TLS_DHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

Mozilla probably doesn't want to do that. Negotiating the new FFDHE groups 
might be acceptable, but whatever weaker junk you get without them is not. I 
guess a higher minimum could be put in place for AEAD suites or TLS 1.3+, but 
now we're already adding complexity.

Once we get out of the AES monoculture, it's also the difference between adding:
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
TLS_DHE_RSA_WITH_CHACHA20_POLY1305
TLS_DHE_ECDSA_WITH_CHACHA20_POLY1305
or just:
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305

I'll also add that DHE_ECDSA suites just aren't defined. Yes, using the cert 
extension could let us get this combo via DHE_RSA, but that means offering RSA 
suites for everything old and new.

As to the need to list all this stuff to work:
If you want everything to be clean, abandon TLS and go for something QUIC 
based. Backwards compatibility is messy; that's one of the reasons why you 
shouldn't want it forever.

3) I argue that framing the negotiation in a manner more similar to what is 
actually being negotiated reduces the risk of problems. _Not_ doing so has the 
following issues:

a) Offering an ECDHE suite will offer FFDHE groups via the upgraded extension, 
but no ability for a server to pick it if the right combo for DHE isn't there. 
The server can't select the 4k FF group if it'd rather have that than P-256 
because no better curve is available.
b) ECHDE/DHE has to be chosen based on cipher suite priority, rather than 
actually looking at the groups' priority and picking the one that should be 
preferred. Contrary to suite definitions, ECDHE and DHE are not monolithic 
things.
c) The server should be able to offer any certs the client can use, regardless 
of connection encryption. (again, this part seems to have wide agreement)

---

That covers the main issues. There's also the issue of making sure that any new 
system is understandable and doesn't introduce points of confusion down the 
road.

I don't claim that this addresses everything that has been or can be said, but 
I also don't want to post a larger wall of text than this. ;)

Also, others may likely not care about FFDHE as much as I do. It is, however, 
in the current draft on essentially equal footing with ECC. As such, I'm 
considering it that way in discussion and proposals. This proposal is shaped by 
the negotiated FF-DH draft and its integration into the current TLS 1.3 draft.


Dave

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to