PR up: https://github.com/tlswg/tls13-spec/pull/1034
On Fri, Jun 23, 2017 at 9:21 AM, Joseph Salowey <j...@salowey.net> wrote: > Hi Ekr, > > Discussion on this topic is dying down, can you post a PR so we can see > the proposed text. There is still some discussion on the API thread so > there may be some additional modifications coming in that area. > > > On Wed, Jun 14, 2017 at 10:45 AM, Ilari Liusvaara < > ilariliusva...@welho.com> wrote: > >> On Tue, Jun 13, 2017 at 03:24:24PM -0700, Bill Cox wrote: >> > On Tue, Jun 13, 2017 at 1:51 PM, Ilari Liusvaara < >> ilariliusva...@welho.com> >> > wrote: >> > >> > > > - Note that 0-RTT exporters are not safe for authentication on >> servers >> > > > that do not enforce single-use tickets, or for clients that do not >> > > > recompute authentication signatures on retransmission of early data. >> > > >> > > "Single-use tickets" imply global anti-replay. >> > > >> > >> > I assumed "gobal anti-replay" meant there would be a globally >> synchronized >> > cache of valid single-use tickets. It sounds like you mean "global >> > anti-replay" includes schemes using orbit/metro/server bound tickets, >> since >> > they can support single-use tickets. In that case, I agree with you, >> but I >> > think the phrase "single-use tickets" may be less confusing. Maybe just >> > say "anti-replay" instead of "global anti-replay"? >> >> IMO, "anti-replay" also includes per-server anti-replay, which archives >> "at most N replays" in global scale. >> >> Of course, the ticket scope of server can be wider than the 0-RTT scope >> (the server accepts tickets but rejects 0-RTT from any ticket in >> between). >> >> > And the latter part is way too obscure. I have no idea how it is >> > > trying to fix ClientHello replay resulting the same exporter >> > > output. >> > > >> > >> > I don't know what you mean by "resulting the same exporter output." >> Auth >> > signatures in a 1-RTT fallback need to be recomputed using the 1-RTT >> > exporter to avoid having the same signature accepted twice. Maybe this >> is >> > too specific and should be left out. >> >> If you replay ClientHello and it gets accepted twice, including to >> different servers, both connections have the same 0-RTT exporter values. >> >> The 1-RTT exporter values will not be the same, but this is not helpful >> for 0-RTT data, or for that matter any 1-RTT data unless exporters are >> switched mid-stream. >> >> > > Even this is only partially true. Anti-replay can be built above the >> TLS >> > > > layer. I'm considering doing token-binding replay defense in the >> > > > authentication backend, to help ensure the token-binding guarantee: >> that >> > > > auth tokens taken from one device cannot be used from another device >> > > > without continued access to the first device's signing oracle. >> > > > Unfortunately, 0-RTT master resumption secrets are a new kind of >> auth >> > > > bearer token, and the token binding spec does not cover them. >> > > >> > > Doing stuff like this gets more and more complicated and fragile as >> > > one moves up the layer stack. >> > > >> > >> > It depends on the task. Moving channel ID from the TLS layer to token >> > binding in the HTTP layer should simplify the TLS state machine enough >> to >> > justify the change. >> >> Implementing such thing without some TLS support at application layer is >> just crazy. >> >> IMO, the only reason token binding concerns itself at all with TLS is >> that "0.5 RTT" (a TLS 1.3 feature) and HTTP/2 was not available when >> token binding was started. Those (together with exporters) would have >> enabled token binding in HTTPS without having to mess with TLS. >> >> (The messing with TLS in token binding seems to be solely about saving >> round-trips!) >> >> > Anti-replay in the TLS layer would be good for 0-RTT >> > token binding, but the cost and complexity of running the whole >> user-facing >> > fleet of servers with anti-replay caches is huge, many times higher than >> > the cost of token-binding anti-replay in the backend. Also, the >> > authentication backend is where bound tokens are currently verified, so >> > putting the anti-replay there seems like the appropriate layer. >> >> That greatly depends on the implementation and deployment. That's why it >> is more fragile. >> >> E.g. run more than one authentication backend for 0-RTT scope, and >> your application layer anti-replay breaks. And I'm not convinced the >> scale of anti-replay cache would be much smaller at application layer, in >> fact, it could be even biger. >> >> > I'm still not sure this scheme is worth implementing, but without it, I >> do >> > not think we can support client certificates or token binding over >> 0-RTT. >> > It doesn't really matter for the TLS 1.3 spec. I'm just pointing out >> that >> > the statement "0-RTT auth is insecure without anti-replay defense" is >> not >> > 100% accurate. There are other ways to improve the security. >> >> Well, client certificates are currently forbidden for connections with >> 0-RTT data (indirectly, but it is still forbidden). It could become >> possible >> in the future. >> >> >> >> >> >> -Ilari >> >> _______________________________________________ >> 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