On Tue, Mar 7, 2023 at 6:51 PM Viktor Dukhovni <ietf-d...@dukhovni.org> wrote:
> What specific changes would you recommend in say the OpenSSL > implementation? Just not sending the useless tickets? Fine, we've > saved a bit of bandwidth, but haven't really solved the problem. > I don't know the details of the OpenSSL implementation or the behavior of a psk_ke only client attempting that resumption with an OpenSSL server. Not sending the useless tickets sounds like the right fix. It also sounds like we've solved the problem: In a case where a client that only supports psk_key for resumption modes is talking to a server that only supports psk_dhe_ke for resumption, useless information is no longer being sent over the wire and the client will always attempt a full handshake. > > We have somewhat different interoperability expectations, because I > expect resumption to work under typical conditions, which would include > clients sending just "psk_ke". Unless the server has a good reason to > expect all clients to always request "psk_dhe_ke", it should support > "psk_ke", leaving the client the option to negotiate "psk_dhe_ke" or use > "psk_ke" if preferred. > I expect resumption to work when both endpoints support the feature. TLS has multiple options (thankfully TLS 1.3 has many fewer than TLS 1.2), and only the full handshake is required. You're correct that the client should have the option to negotiate psk_dhe_ke or psk_ke (or none at all) as desired, and in the same vein the server has the option to negotiate psk_dhe_ke or psk_ke (or decline resumption) as desired. > > Resumption is an important optimisation, it can make the difference > between a scalable service and a degraded or unusable service. > I don't disagree. In application profiles where the optimization makes a critical difference, the resumption modes that make that difference should be specified as MTI. The key here is that they should only be MTI in those application profiles. > > There's no downgrade attack, if both sides want psk_dhe_ke, they get it. > If some application or private deployment never needs psk_ke resumption, > fine. But in the absence of specific knowledge a generic client using > TLS to reach some random server should be able to perform resumption > without the sort of friction that turning up forward-secrecy to 11 > introduces. The client *should* still offer psk_dhe_ke where it makes > sense, and servers *should* then use DHE resumption, but if the client > has good reason to choose "psk_ke" it should not be punished for its > choice to optimise for performance. > Why should a client be allowed to force a server to accept psk_ke over performing a full handshake? A server should be free to choose to always perform forward secret handshakes. When a client that prefers psk_ke talks to said server, it isn't being punished. The client is offered psk_dhe_ke, and if it doesn't like that, it can always do a full handshake. Each peer is entitled to their preferences, and the TLS handshake negotiates the best option for both endpoints. > > > This isn't a protocol issue. This is an implementation issue (buggy > > implementations sending psk_dhe_ke NSTs in response to psk_ke > ClientHellos) > > and an ecosystem issue. > > But sending the unusable tickets isn't the problem, the problem is that > non-DHE resumption is unavailable by default. Is that an implementation > bug or not? That's not an implementation bug, that's an ecosystem issue. As I said earlier, all of the pieces are there in RFC 8446. People just have to choose to use it. TLS is used in many different ways by different application protocols. Stating that a certain feature of TLS should be available in all TLS implementations is a high bar to pass — it must be near universally useful. Instead, each ecosystem that uses TLS can and should decide for itself which features are useful. Actors in those ecosystems can choose their implementations (or choose to create their own) based on the availability of TLS features.
_______________________________________________ TLS mailing list TLS@ietf.org https://www.ietf.org/mailman/listinfo/tls