On Wed, Feb 13, 2019 at 7:39 AM Hubert Kario <hka...@redhat.com> wrote:

> On Wednesday, 13 February 2019 15:39:03 CET Eric Rescorla wrote:
> > On Wed, Feb 13, 2019 at 4:12 AM Hubert Kario <hka...@redhat.com> wrote:
> > > On Wednesday, 13 February 2019 01:31:41 CET Eric Rescorla wrote:
> > > > I concur with what I take to be MT's position here:
> > > >
> > > > 1. The client is clearly prohibited from changing most elements of
> the
> > > > CH
> > > > (except for listed exceptions).
> > > > 2. It's reasonable to check for and fail the handshake on any spec
> > > > violation except those where checking is explicitly forbidden (e.g.,
> > > > Must
> > > > Be Zero but Must be Ignored)
> > > > 3. Nothing in the spec requires the server to check for this
> condition.
> > >
> > > and what about values that technically can't change (as you noted
> > > yourself)
> > > but they do change and the server does use them?
> > >
> > > you are not suggesting that which value will be used (from first or
> second
> > > CH), or if the connection will be aborted, to be implementation
> dependant
> > > *by design* , do you?
> >
> > I'n not sure I understand your question, but I'll try to answer what I
> > think it says.
> >
> > 1. I do think that whether you continue the connection or abort it is an
> > implementation decision and I think that the way the spec is written says
> > that.
> > 2. I think the spec leaves open whether you should use the first or
> second
> > values, but I think implementations should use the second value. It's not
> > clear why one would want to use the first.
>
> because you have already parsed, verified and sanity-checked the first
> hello,
> you already decided what kind of parameters will the connection use and
> you're
> expecting just the values that can change to change and ignoring
> everything
> else, thus not wasting cycles on verifying the extensions twice...
>

As MT says, we use a stateless design, and we don't necessarily verify the
entire
CH prior to sending HRR. For instance, it's not necessary to do certificate
selection
and hence not to look at signature_algorithms.



> so it's not clear to me why you'd ever want to use the second one
>

Well, clearly views differ on this, then.



> > To my knowledge, there was never a WG discussion about this exact
> question,
> > so we only have the spec to guide us. Were we pre-publication I would
> have
> > advocated for (a) leaving open whether to abort and (b) requiring you to
> > use the second value.
>
> so you don't think this qualifies for Errata?
>

What Ben said.

-Ekr


>
> side note: it is actually possible to check if the 2nd CH has minimal
> changes
> in stateless HRR by replacing the extensions that can change with the
> hashes
> of their values and then storing the overall hash of CH message together
> with
> hashes of the extensions that can change. When receiving the 2nd CH, we
> can
> replace the extensions that can change with respective hash values and
> then
> check if the overall hash still matches. That translates to something like
> 4
> hashes, two positions and two flags (for padding and early_data). Only
> this
> much is necessary to check perfectly if the CH is unchanged. The only
> exception is pre_shared_key, but server behaviour with it is clearly
> defined -
> the server must use the values from 2nd CH as the selected_identity
> wouldn't
> match otherwise and binders couldn't be verified. With addition of one
> more
> hash in the cookie the server may easily ensure that the identity it
> planned
> to select remained in the CH. That's like 165 bytes when using
> non-truncated
> sha-256 hashes.
>
> --
> Regards,
> Hubert Kario
> Senior Quality Engineer, QE BaseOS Security team
> Web: www.cz.redhat.com
> Red Hat Czech s.r.o., Purkyňova 115, 612 00  Brno, Czech Republic
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to