On Wed, Jun 14, 2017 at 6:47 PM Colm MacCárthaigh <c...@allcosts.net> wrote:

> On Wed, Jun 14, 2017 at 3:23 PM, David Benjamin <david...@chromium.org>
> wrote:
>
>> 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.
>>
>
> Suppose a request, or a frame, spans two different client certificate
> authentication contexts (or unauthenticated, and authenticated); how is
> that handled today? or is it just forbidden?
>

In TLS 1.2, that would require renegotiation, which is not allowed in
HTTP/2. Our client and server implementations enforce this, for this and
other reasons.
http://httpwg.org/specs/rfc7540.html#rfc.section.9.2.1

Sadly, in Chrome as an HTTP/1.1 client, we are stuck with supporting this
mess, so we allow it at HTTP/1.1, but we will only accept client
certificate requests between request and response and further forbid all
handshake/application interleave. HTTP/1.1 without pipelining is just
barely simple enough that one can get away with all this. (In all other
cases, BoringSSL does not support renegotiation at all.)

The mess around trying to make byte boundaries semantically meaningful is
why I'd previously advocated leaving TLS 1.3 post-handshake auth to the
application profile, and why I advocated that it never be allowed in
HTTP/2. HTTP/2 should use something at its layer, possibly leaning on
exported authenticators. We have no plans to implement TLS 1.3
post-handshake auth in BoringSSL, but if we were ever to implement it, it
would likely be under the same constraints as renegotiation (off by
default, client-only, HTTP/1.1-only, and only at that one point in the
protocol with no interleave).

I assume what you're getting at here is that my 0-RTT and post-handshake
auth preferences are the opposite? :-) That's true. In the post-handshake
auth case, making the boundary insignificant to the higher-level protocol
isn't really feasible. Conversely, forbidding 0-RTT with HTTP/2 would be
rather unfortunate. But it seems the tight synchronization is not needed
here, so we don't need to go that route.
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to