On Wed, Jun 14, 2017 at 5:01 PM Andrei Popov <andrei.po...@microsoft.com>
wrote:

>
>    - What if the server receives data with the 0-RTT boundary spanning an
>    HTTP/2 frame? Is that a 0-RTT request? 1-RTT? Invalid?
>
> It appears safe to treat such data as 0-RTT; only the application can make
> this call, and it needs info from the TLS stack to make this call.
>

I actually would suggest it being 1-RTT. Or rather that a processing-time
check would count it as 1-RTT. Though I think I don't see anything
particularly wrong with it being 0-RTT either? *shrug*


>
>
>
>    - We could say that the application profile should modify the protocol
>    to reject such cases. Now, we’re taking on complexity in every protocol
>    specification and parser.
>
> It would of course be preferable (some would argue, necessary) to secure
> 0-RTT application_data at the TLS layer, but so far we’ve failed to come up
> with a way to do so.
>
>
>
>    - Our problem is a server wishes not to process some HTTP requests (or
>    other protocol units) at 0-RTT and needs to detect this case. So check a
>    boolean signal for whether the connection has currently passed the 1-RTT
>    point before any unsafe processing.
>
> I think this would be a valid implementation of #3. There may be other
> implementation options that make more sense for a different TLS API or a
> different application protocol, so I’d rather not put a specific
> implementation option in the RFC.
>

Sure, if that is the interpretation of #3, that works fine for me. My
objection is to trying to pass along a hard separation between the two
chunks of data, to the point that the sender actually cares about some data
getting sent *before* the boundary. Caring about some data being sent after
the boundary is very reasonable and natural. POSTs, perhaps. Before is
complex because you must synchronize and defer the boundary. The trouble is
a before constraint gets implied by lots of stuff.

Specifically, I would propose a looser phrasing for #3:

When accepting 0-RTT as a server, a TLS implementation SHOULD/MUST provide
a way for the application to determine if the client Finished has been
processed.

That is, it is not the identity of the bytes that matters much. It's
whether the connection has been confirmed when you perform an unsafe
action. I believe this still satisfies the properties we want, but without
breaking standard interfaces. Very near the TLS stack, at the point where
the record boundary abstraction starts leaking (it's common to only give
you back a single record on read), either API is equally easy to provide.
The looser phrasing is needed for composition once you start going up a
layer or to.

David

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

Reply via email to