On Tue, Jan 26, 2016 at 8:28 PM Martin Thomson <martin.thom...@gmail.com>
wrote:

> This is in part why I created:
> https://github.com/tlswg/tls13-spec/pull/402


Ah, great. And indeed there is a paragraph I missed:
"""
At this point, the handshake is complete, and the client and server may
exchange application layer data. Application data MUST NOT be sent prior to
sending the Finished message. Note that while the server may send
application data prior to receiving the client’s Authentication messages,
any data sent at that point is of course being sent to an unauthenticated
peer.
"""

In addition to the diagram, there's also some text in 6.3.4.3 which
somewhat contradicts this (that's the paragraph I was going off of in
writing this mail):
"""
[...] Once a side has sent its Finished message and received and validated
the Finished message from its peer, it may begin to send and receive
application data over the connection. This data will be protected under
keys derived from the ephemeral secret (see Section 7).
"""

My understanding is that the server is able to send any data that does
> not depend on client authentication at t=0.5 and any data that depends
> on client authentication at either t=0.5 if it successfully consumes
> the client authentication in the 0-RTT flight, or t=1.5 failing that.
>

This seems unnecessarily complicated and invites all the context-switching
problems of mid-stream client auth in even more situations.

If the server needs to send a CertificateRequest (i.e. the client
mispredicted the 0-RTT Certificate/CertificateVerify) but otherwise has a
0-RTT hit, have it reject 0-RTT altogether. The 0-RTT is already all but
useless because the first authenticated byte of the response is delayed to
t=1.5. We should just say that 0-RTT accept + CertificateRequest is
forbidden.

If one really wants to, a la mid-stream[*] auth, send unauthenticated bytes
at t=0.5 and then authenticated bytes at t=1.5, one could just as easily
use mid-stream auth itself. The server accepts the 0-RTT without a
CertificateRequest and, at t=0.5, sends the unauthenticated bytes followed
by a mid-stream CertificateRequest. At t=1, the client processes the
unauthenticated bytes, sees a mid-stream CertificateRequest, authenticates,
which the server receives at t=1.5, sends authenticated bytes, received by
the client at t=2. The same data arrives at the same times and we don't
increase the state-space.

David

[*] Mid-stream auth is a serious regression, and I am not endorsing it in
any way. But supposing it exists for the purposes of this thread...


> On 27 January 2016 at 11:46, David Benjamin <david...@chromium.org> wrote:
> > It's possible I'm reading the draft wrong, so this thread may be a very
> > short one.
> >
> > (t here is in units of RTT, so t=0 is when the client sends ClientHello
> and
> > t=0.5 is when the server receives ClientHello and sends ServerHello, t=1
> is
> > when the client receives ServerHello, etc.)
> >
> > Looking at the Zero-RTT exchange here:
> > https://tlswg.github.io/tls13-spec/#rfc.section.6.2.2
> >
> > Is the intention that the client, even in the successful 0-RTT case, send
> > two Finished messages (one at t=0 and one at t=1) and that the server not
> > send application data until receiving the second of these at t=1.5? If
> so,
> > does this not defeat the purpose of 0-RTT? Although the client now
> eagerly
> > sends at t=0, it will not see the response until t=2, which is no better
> > than the resumption case (in TLS 1.2 or 1.3) where the client doesn't
> send
> > until t=1.
> >
> > David
> >
> > _______________________________________________
> > TLS mailing list
> > TLS@ietf.org
> > https://www.ietf.org/mailman/listinfo/tls
> >
>
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to