Yes, I believe that this is what people want. On Mon, Mar 28, 2016 at 2:47 PM, Andrei Popov <andrei.po...@microsoft.com> wrote:
> Not sending cookies/authz headers in 0-RTT would solve a part of the > problem, but will browser vendors go for that? I could be wrong, but there > seems to be considerable interest in 0-RTT Token Binding…. so folks must be > planning on sending tokensJ. > > > > *From:* Karthikeyan Bhargavan [mailto:karthik.bharga...@gmail.com] > *Sent:* Monday, March 28, 2016 2:31 PM > *To:* Andrei Popov <andrei.po...@microsoft.com> > *Cc:* Colm MacCárthaigh <c...@allcosts.net>; tls@ietf.org > > *Subject:* Re: [TLS] Resumption and Forward Secrecy, 0-RTT and Safety > > > > Ø … because secrecy is in the control of the client, who can choose to > send or not send sensitive data… > > Generally, how can a browser distinguish sensitive data? > > > > By not sending cookies or authorization headers, for example? > > > > > > Cheers, > > > > Andrei > > > > *From:* TLS [mailto:tls-boun...@ietf.org <tls-boun...@ietf.org>] *On > Behalf Of *Karthikeyan Bhargavan > *Sent:* Monday, March 28, 2016 1:31 PM > *To:* Colm MacCárthaigh <c...@allcosts.net> > *Cc:* tls@ietf.org > *Subject:* Re: [TLS] Resumption and Forward Secrecy, 0-RTT and Safety > > > > Let me try to understand the concerns here. > > > > > *Resumption and Forward Secrecy* > > > > PSK_ECDHE in TLS 1.3 does provide forward secrecy for 1-RTT data, yes? > > This is already better than TLS 1.2 where we had no way to do > forward-secret resumption. > > In that case, the concern is mainly for 0-RTT, which I agree is harder to > get right. > > > > > *0RTT and Safety* > > I see at least three different challenges with 0RTT as defined. The first > is a general and high level one: we seem to willing to accept a "lower" > level of security for 0RTT data (e.g. no FS, even if the rest of the > session has it). Why? What is it we think is special about this data that > it is "less" worth protecting? surely there are very sensitive things in > urls, surely there are potential oracles and other things in there too? It > just seems super strange to me. > > > > I wonder if the QUIC folks have an answer to this question? It would be > good to gather “typical” intended use cases of 0-RTT data. > > In any case, it is good to distinguish this forward secrecy concern from > replay, because secrecy is in the control of the client, who can choose to > send or not send sensitive data, but replay detection is in the hands of > the server. > > > > > The second challenge is that the replayability of the 0RTT poses a > cryptographic safety challenge. Take Lucky13 - which is a brilliant attack > and is stunningly effective against DTLS because it is so easy to replay > over and over; barely needing to change any parameters - and let the server > do the work. 0RTT looks very similar. It doesn't seem wise to let cipher > text manipulators take as many cracks at the whip as they'd like. > > The third challenge is that the 0RTT plaintext data itself may not be safe > to replay; that is that it might trigger some kind of non-idempotent > action. Idempotence is really really hard, it isn't safe to simply plug in > a replayable section to existing protocols. There's also a huge difference > between being tolerant to a small number of replays, and a large unbounded > number. For example: a large unbounded number may be used to generate DOS > attacks against throttles and quotas. > > > > Yes, detecting and preventing replays by default would be good. > > However, I wouldn’t tie this in with the session mechanism. > > Wouldn’t we want to prevent replay of DH 0-RTT requests? > > > > Best, > > Karthik > > > > > > > > > The third challenge is that the 0RTT plaintext data itself may not be safe > to replay; that is that it might trigger some kind of non-idempotent > action. Idempotence is really really hard, it isn't safe to simply plug in > a replayable section to existing protocols. There's also a huge difference > between being tolerant to a small number of replays, and a large unbounded > number. For example: a large unbounded number may be used to generate DOS > attacks against throttles and quotas. > > > > *Tying things together* > > Short of some kind of transactional locking protocol during TLS > handshakes, I don't think there is a scheme that can perfectly prevent > replay. Bill Cox' analysis is a really good one here. But I'd like to > observe that the sort of single-use-session-id cache outlined above has a > nice property that it makes for a sort of strike register. Since the > server-side implementor is incentivized to evict entries, or at least mark > them as used, so that the slot is available for re-use; that can be > doubled-up as a "we've seen this already" signal. This reduces the replay > window to the time period for that signal to propagate (e.g. for an > eviction to happen from the cache). > > > > So 0RTT data could be encrypted under the resumption session id. That > creates the challenge that the session might not be there any more, so the > server may not be able to decrypt the 0RTT data. I actually think this is a > plus, and lines up with a separate important change I think is necessary - > the 0RTT data shouldn't be application data. It should be a separate, > optional, stream. I find it helpful to think of it as a hint, so it could > be called "replayable_hint". Instead of breaking apart an existing protocol > and putting some of it in the early data and some in the application data > transparently (a disaster in waiting), the client and server would have to > formally agree on the kind of data that could be in a "replayable_hint". > This goes a long way to mitigating many protocol level idempotency > concerns, and has no impact on the kind of pre-fetching people want to do > for HTTP and other protocols. At a bare minimum, I think we should make > this change. > > > > Lastly, and this is a little crazy but I haven't let that stop me before > ... to guard against the smaller replay window and idempotency problems at > the application levels,clients should occasionally send duplicate and > unrelated hints, just opportunistically. This keeps the server side > application "on notice" that that kind of craziness can occur, and better > to have it happen a little all of the time in a controlled way, than rarely > by attackers. > > > > *Summary* > > A common theme in the above is that it makes things more expensive for > server-side implementors, and that sucks - but I don't see another way to > avoid some of the pitfalls here; and I'm unhappy with the state of tickets > today. If I'm on my own on that, I'd be interested in what kinds of data > people might kind convincing. My own impressions come from being an Apache > httpd developer and assisting people with configurations and running > workshops at conferences. It's not scientific, but the prevalence of > non-rotation is so severe in my sample set that I'm convinced it's the > norm. > > > > -- > > Colm > > _______________________________________________ > TLS mailing list > TLS@ietf.org > https://www.ietf.org/mailman/listinfo/tls > <https://na01.safelinks.protection.outlook.com/?url=https%3a%2f%2fwww.ietf.org%2fmailman%2flistinfo%2ftls&data=01%7c01%7cAndrei.Popov%40microsoft.com%7c88d384e16d794a23be0c08d35750543d%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=IU9aYW%2b6Gt0pnbIVXnT2yGNzOCGfmvvg%2fY5yFhiKlYY%3d> > > > > _______________________________________________ > 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