On Fri, Mar 17, 2017 at 4:32 AM, Matt Caswell <fr...@baggins.org> wrote:

> On 17 March 2017 at 00:03, Martin Thomson <martin.thom...@gmail.com>
> wrote:
> > On 17 March 2017 at 10:58, Matt Caswell <fr...@baggins.org> wrote:
> >> In DTLS1.3 the cookie is now (potentially) much larger and appears much
> later in
> >> the ClientHello, making it much more likely that it will not fall
> >> fully within the
> >> first fragment. This could mean a fully stateless solution is
> impossible.
> >
> >
> > I think that it is feasible to simply require that ClientHello be
> > contained in a single datagram.
>
> Yes, this is one of several solutions - although it is possibly a
> retrograde step. With the assumptions that I currently have for
> DTLSv1.2, even with max size cookie and session id the full cookie
> will always be contained within the first 346 bytes of the record (if
> I did my sums right) - which doesn't seem unreasonable. So as long as
> the first fragment isn't smaller than that then, with our current
> implementation, we are good.
>
> By stating that the *whole* ClientHello must be within the first
> fragment we are placing some significant restrictions on the
> extensibility of the protocol and how much we can stuff into it.
> Fragmenting the initial ClientHello does happen even in DTLS1.2
> (before we've added extra ciphersuites and extensions for DTLSv1.3) -
> we had a recent report of someone having problems when receiving
> fragmented ClientHellos:
>
> https://mta.openssl.org/pipermail/openssl-users/2017-February/005332.html
>
> Another option is to say that the cookie extension must be fully
> contained within the first fragment - which avoids the above
> extensibility concerns. This option is much better but is still
> retrograde from DTLS1.2 because the extensions block appears later in
> the ClientHello (most importantly after ciphersuites, which could be
> quite long).
>
> A third option is to retain use of the cookie field in DTLSv1.3 and
> require that the first fragment contains it, i.e. the server sends the
> cookie in the HRR and the client reflects it back in the cookie field.
> This would solve all of the above problems but introduces a new one -
> the TLSv1.3 max cookie length is bigger than the length of the cookie
> field. There are a couple of ways around that that I can think of -
> the simplest being that DTLS1.3 could restrict the max cookie length -
> but that in itself could cause some problems due to the fact that more
> data needs to be stored in the cookie for DTLS1.3 (i.e. the transcript
> hash).
>
> >  QUIC does this and when we did the
> > sums it wasn't completely unreasonable, even assuming several key
> > shares and a big-ish cookie.  And then we made it possible to make the
> > cookie even smaller in -19.
>
> Did we? How did we do that?
>

By making the hash state you needed to store a hash value rather than a
hash checkpoint.

-Ekr


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

Reply via email to