On Tue, Jun 21, 2016 at 8:45 PM Martin Thomson <martin.thom...@gmail.com>
wrote:

> On 22 June 2016 at 10:30, Bill Frantz <fra...@pwpconsult.com> wrote:
> > Well, it seems like a browser could try TLS 1.3 without 0-RTT first.
> >
> > If it connects with 1.3 non-0-RTT, then it could mark the host as not
> > supporting 0-RTT for a day or so and after that time retry to see if the
> > host has been fixed.
>
> Yes, that is an option.  Harder to manage, but certainly possible and
> (overall) preferable to falling back to 1.2.
>

Right, that (minus the statefulness because I don't care for adding state
here) was exactly my intent with the specification text. Don't change the
ClientHello version and only retry with the 0-RTT data dropped. It
explicitly says "It is NOT RECOMMENDED to retry the connection in response
to a more generic error or advertise lower versions of TLS."

The version fallback is also inevitable (unless the version negotiation is
moved elsewhere), but at least we can separate the two and someday retire
the version fallback half.

(Also, it's unlikely, but one could also imagine that the retry switches
back to hitting a 1.3-capable server. Then changing the ClientHello version
will trip fallback detection and the connection will fail again. Whereas
retrying with only 0-RTT off is a handshake that will work against 1.2 and
1.3 servers alike.)

I don't care much about the exact distribution of MAY/SHOULD/MUST, if
that's all we disagree on. If we both agree that browsers will have to
fallback, I want the mechanism written down somewhere. Because it's not
obvious that this fallback may be triggered without a version downgrade and
without a broad trigger, both of which have been problems with the past
fallbacks. (The version downgrade has clear security implications and a
broad trigger means debugging harder and, worse, it hides bugs. I've seen
many cases of server software shipping new code that flat-out doesn't work
but fallbacks are so easy to trigger that no one noticed.)

Note that, since TLS stacks typically are not in charge of creating
sockets, the implementation is the same with or without the fallback. The
TLS stack needs to return a very specific error code (<= 1.2 ServerHello in
response to 0-RTT ClientHello) and higher-level logic can condition on it
as it pleases.

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

Reply via email to