On 05/05/2017 12:04 AM, Nico Williams wrote:
> On Thu, May 04, 2017 at 11:22:47PM -0500, Benjamin Kaduk wrote:
>> On 05/04/2017 06:35 PM, Watson Ladd wrote:
>>> If you are willing to buffer 0-RTT until completion before going to
>>> the thing that makes the response, you can handle this problem for the
>>> responsemaker. This will work for most applications I can think of,
>>> and you need to handle large, drawn out requests anyway. This sounds
>>> like it would work as a solution, but I am sure there are details I
>>> haven't discovered yet.
>> The server is allowed to buffer the 0-RTT data while processing it and
>> delay a response until the handshake is completed, yes.  (I think this
>> is the "way to force 1-RTT at the application layer" that Nico wants.) 
> I'm not up on the details of how 0-rtt works in TLS 1.3.  I don't know
> if there's a way for the server to cause a round-trip to occur, nor if
> there's a way for the client to then confirm the 0-rtt data in that
> round-trip.

The server is blindly carrying data for the application.  The
application can decide to not send any 0.5-RTT data in response to the
0-RTT data, and wait for the regular 1.5-RTT response, if it wants.

> I do think having such functionality would be very helpful for cases
> where the server runs a) without a replay cache, and b) can accept
> idempotent and non-idempotent requests.

If we presume knowledge of (b) then we are forced to consider it at the
application layer; a TLS-layer signal would be pretty awkward to manage,
and an application-layer signal (or delayed response) seems much more
reasonable.

> I think always requiring a replay cache is not likely to work out in
> practice.

I agree.  I don't think we should make a claim that 0-RTT data is
safe/non-replayable by virtue of requiring that servers implement a
replay cache; it's doing consumers a disservice if we expect that there
will be servers that don't implement the strict anti-replay measures.

>> It removes the latency benefits of 0-RTT [for that request] and might be
> Because [for that request] there are no benefits of 0-rtt.
>
>> annoying to implement with APIs that only give you a single data stream
>> (but probably not too bad), but the application layer at the server has
>> the capability to solve these idempotency/replay problems. 
>> Unfortunately, we are the TLS layer and cannot assume that we control or
>> can cooperate with the application.  Which leads right back to the
>> "application profile is required" bit, of course.
> Yes, sure, but the application profile rubber has to meet the road.
> That usually means that the devil is in the APIs.
>
> An application that wants a "dumb secure socket"... just can't have
> 0-rtt.

Yes.

> HTTP should be trivial to profile... if only GET weren't abused here and
> there.
>

You might look at
https://tools.ietf.org/html/draft-nottingham-httpbis-retry-01 , though
I'm no longer confident that's actually the Nottingham document I'm
thinking of :(

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

Reply via email to