Hi David,

the hello extensions have been removed from calculating the cookie
in Eclipse/tinydtls and Eclipse/Californium (both DTLS 1.2) at the
begin of this year

See

https://github.com/eclipse/tinydtls/pull/223

for more details.

br
Achim

Am 21.10.24 um 21:39 schrieb David Benjamin:
Hi all,

Nick noticed a fun (almost?) conflict between DTLS 1.3 PSK binders and
DTLS 1.2 HelloVerifyRequest:

A DTLS 1.2+1.3 client, in possession of a DTLS 1.3 PSK, will send a
ClientHello with a PSK binder. The server, however, may have since
rolled back DTLS 1.3 support and then might negotiate DTLS 1.2 and then
respond with a HelloVerifyRequest (not HelloRetryRequest). The client
would then resend the ClientHello with a new legacy_cookie value, as
it's expected to.

Now, a natural implementation would then recompute the PSK binder. It
doesn't strictly need to, because HelloVerifyRequest is forbidden in
DTLS 1.3, so the client is already not going to accept a 1.3
ServerHello. But it is simpler to recompute it, so you don't need to
stash the old value (or include logic to serialize a special cookie-less
ClientHello).

The question is whether this is allowed by spec and in practice, or will
a DTLS 1.2 server bind the /whole extension list/ into its cookie. RFC
6347, Section 4.2.1 says the following:

    When responding to a HelloVerifyRequest, the client MUST use the same
    parameter values (version, random, session_id, cipher_suites,
    compression_method) as it did in the original ClientHello.

It's unclear whether that list is a set of examples or the complete list
of parameters. After all, quite a lot of ClientHello parameters are in
the extensions list. On the other hand, given that DTLS 1.2 doesn't have
a key share in here, it's a little unclear to me what benefit there is
in binding anything other than the random value into this cookie.
(Unless the server takes any extensions into account when deciding
whether to send a cookie?)

Are there any DTLS 1.2 implementations that bind the whole ClientHello?
At a glance, it looks like OpenSSL does not bind any part of the
ClientHello, and BoringSSL and NSS never generate DTLS 1.2 cookies in
the first place.

My inclination is to say that refreshing the PSK value is fine. The spec
doesn't say you have to keep the extension list fixed, and this'll only
be a problem if you have an extension-binding DTLS 1.2 server, deploy
DTLS 1.3, mint some tickets, and then roll back DTLS 1.3. And then
single-use tickets (if you implement them) will eventually repair it anyway.

Thoughts?

David

_______________________________________________
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org

_______________________________________________
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org

Reply via email to