On Mon, Mar 14, 2016 at 12:25 PM, Dave Garrett <davemgarr...@gmail.com>
wrote:

> (This thread has gotten long and winding, so I'm replying to these two
> portions bellow under a new subject. Reply after quotations.)
>
> On Monday, March 14, 2016 02:38:27 pm Bill Cox wrote:
> > On Mon, Mar 14, 2016 at 9:10 AM, Colm MacCárthaigh <c...@allcosts.net>
> wrote:
> > > On Mon, Mar 14, 2016 at 8:35 AM, Bill Cox <waywardg...@google.com>
> wrote:
> > >> As we all know, what matters most in security is the default mode.  I
> am
> > >> suggesting making the default 0-RTT resumption mode stateful, with a
> > >> documented session-ID (and let's bring back the timestamp, too, since
> we'll
> > >> need it).
> > >
> > > Having state would make things much more robust; but rather than the
> state
> > > being around the channel itself (the TLS session), would it be more
> robust,
> > > and more flexible, for the state to be around the action? like some
> kind of
> > > hint cookie.
> >
> > It looks like server-side state is required to prevent replay.  I don't
> > think any kind of token, cookie, or server-config can fix this.
> >
> > > One of the problems with session resumption is that in order to be
> replay
> > > safe; the sequence number has to restart where it left off. That
> requires
> > > some kind of transactional store, and if you're doing all of this for
> > > latency, you may end up eating all of the wins there.
> >
> > The new tickets can in theory end the debate over session caching vs
> > session tickets, since they can be used for database lookups or contain
> an
> > encrypted session state.  However, the spec does not document how to do
> > session caching with tickets securely, which looks tricky.  In reality,
> if
> > I were trying to build a speed and security sensitive site using TLS 1.3
> > stateful 0-RTT resumption, I would probably do something like this:
> >
> > During the initial 1-RTT handshake:
> > - create a ticket containing only the session ID, resumption count, and a
> > session decryption key
> > - encrypt the session cache entry with the session encryption key stored
> in
> > the ticket
> > - encrypt the ticket with a semi-static ticket encryption key, which I
> > would rotate every few weeks
> > - send the ticket to the client, which is after encryption is enabled on
> > the connection
> >
> > During a 0-RTT resume handshake:
> > - check for a cache hit, and drop to 1-RTT if not found
> > - decrypt the ticket with ticket the semi-static ticket decryption key
> > - decrypt the cached session state with the session key from the ticket
> > - compare the resumption counts in the session state and ticket, and fall
> > back to 1-RTT if they do not match
> > - increment the resumption count
> > - create a new session ticket with a new session encryption key and the
> > updated resumption count
> > - encrypt the session cache entry with the new session encryption key
> > - send the client the new ticket
>
> On Monday, March 14, 2016 08:10:32 am Nikos Mavrogiannopoulos wrote:
> > It is important to see how protocols are perceived. For many people TLS
> > 1.3 with 0rtt will be the same as TLS 1.3. The first publication of an
> > attack against TLS 1.3 with rtt, will be perceived as an attack against
> > TLS 1.3 protocol. Even if the published attack against TLS 1.3 with
> > 0rtt was an expected one (i.e., replay of data), if the attack impact
> > is high, that may not be sufficient to stop the avalanche of bad
> > publicity. In turn that will lead several people losing confidence to
> > TLS 1.3 as a protocol, even TLS and the IETF process overall.
> >
> > My suggestion, if you need 0rtt, publish it as a different document,
> > don't mix it with TLS 1.3. The security requirements from TLS are
> > vastly different from the security requirements of a 0rtt protocol.
>
> Previous discussion seemed to land on the conclusion that semi-static DH
> 0RTT should be defined in a separate document, and after this discussion
> I'm beginning to agree that all stateless 0RTT should be defined as a
> separate companion document to the main TLS 1.3 specification. We can
> likely agree on defining a stateful 0RTT PSK resumption system which is
> sufficiently safe and mistake-resistant, and we could restrict the official
> TLS 1.3 spec to only specify that, whilst referencing the other document as
> a more experimental feature that could be available to certain applications
> (possibly a non-standards-track document). HTTPS could then, itself, have a
> separate document laying out the necessary practices to do stateless 0RTT
> safely, and other applications should be warned that without a similar such
> document, things are very risky.
>
> Is this in the ballpark of what the WG could agree on to help mitigate
> some of the problems here?
>

As far as I can tell, there's no protocol difference between "stateful" and
"stateless" resumption.
You use the same techniques (a replay cache) and the question is merely
whether the server
actually maintains one.

-Ekr



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

Reply via email to