> > On Thu, Jun 1, 2017 at 5:22 PM, Eric Rescorla <e...@rtfm.com> wrote: > > > 1. As long as 0-RTT is declinable (i.e., 0-RTT does not cause > > connection failures) then a DKG-style attack where the client > > replays the 0-RTT data in 1-RTT is possible. > > > > This isn't what I call a replay. It's a second request, but the client is > control of it. That distinction matters because the client can modify it if > it needs to be unique in some way and that turns out to be important for > some cases.
Sure. For the sake of clarify, I'm going to suggest we call: - replay == the attacker re-sends the data with no interaction with the client - retransmission == the client re-sends (possibly with some slight changes) > > 4. If implemented properly, both a single-use ticket and a > > strike-register style mechanism make it possible to limit > > the number of 0-RTT copies which are processed to 1 within > > a given zone (where a zone is defined as having consistent > > storage), so the number of accepted copies of the 0-RTT > > data is N where N is the number of zones. > > > > This is much better than the total anarchy of allowing completely unlimited > replay, and it does reduce the risk for side-channels, throttles etc, but I > wouldn't consider it a proper implementation or secure. I'm not presently taking a position on whether this is secure or proper, or whatever. I'm just attempting to state the facts about how the system behaves. From this, I'm going to take that you agree with this statement. > > Maybe a lot of this dilemma could be avoided if the the PSKs that can be > used for regular resumption and for 0-RTT encryption were separate, with > the latter being scoped smaller and with use-at-most-once semantics. > > 5. Implementing the level of coherency to get #4 is a pain. > > > > 6. If you bind each ticket to a given zone, then you can > > get limit the number of accepted 0-RTT copies to 1 > > (for that zone) and accepted 1-RTT copies to 1 (because > > of the DKG attack listed above). > > > > Yep! Agreed :) Moving the text above to here: > Importantly it gets > us back to a state where clients may have no control over a deterministic > outcome. > > Some clients need idempotency tokens that are consistent for duplicate > requests, this approach works ok then. Other kinds of clients also need > tokens that are unique to each request attempt, this approach doesn't work > ok in that case. That's the qualitative difference. > > I'd also add that the suggested optimization here is clearly to support > globally resumable session tickets that are not scoped to a single site. > That's a worthy goal; but it's unfortunate that in the draft design it also > means that 0-RTT sections would be globally scoped. That's seems bad to me > because it's so hostile to forward secrecy, and hostile to protecting the > most critical user-data. What's the point of having FS for everything > except the requests, where the auth details often are, and which can > usually be used to generate the response? Synchronizing keys that can > de-cloak an arbitrary number of such sessions to many data centers spread > out across the world, seems just so defeating. I realize that it's common > today, I've built such systems, but at some point we have to decide that FS > either matters or it doesn't. Are users and their security auditors really > going to live with that? What is the point of rolling out ECDHE so > pervasively only to undo most of the benefit? This contains a fair bit of advocacy and right now I'm just trying to get to the point where we agree on the facts. Trying to distill this into factual statements... 7. With the current design, clients have no way of knowing what, if any, anti-replay mechanisms the servers are using. Thus, they cannot be sure that servers are ensuring at-most-once semantics for the 0-RTT data (at-most-twice if the client retransmits in response to 0-RTT failure) [0]. This makes it difficult for clients to know what is safe to send in 0-RTT. 8. The more broadly distributed the information required to process a session ticket (on the server), the worse the FS situation is, with session tickets encrypted under long-lived keys being the worst. I note that you suggest separating out 0-RTT tickets and resumption tickets, but I don't actually see how that changes matters. As Ilari notes, it is possible to say that a ticket cannot be used for 0-RTT and if you have a ticket which can be used for resumption globally but for 0-RTT at just one site, the server can implement that policy unilaterally. In any case, if you think there's some other fact I've failed to capture here, I'd appreciate it if you'd add it. Thanks, -Ekr [0] Note that scoping resumption down to a given data center does not help here for removing the DKG attack. Assume that a ticket issued at data center A is good for both resumption and 0-RTT at A but cannot be used at all at B. The attacker can still transmit the CH to both A and B, and have it accepted in 0-RTT at A and a full handshake at B, at which point the client retransmits.
_______________________________________________ TLS mailing list TLS@ietf.org https://www.ietf.org/mailman/listinfo/tls