On Mon, Jul 18, 2016 at 5:07 PM, Ilari Liusvaara <ilariliusva...@welho.com>
wrote:
> On Mon, Jul 18, 2016 at 03:27:28PM +0200, Kyle Rose wrote:
> > On Wed, Jul 13, 2016 at 7:12 PM, Eric Rescorla <e...@rtfm.com> wrote:
> >
> > > There have been a lot of discussions about whether we should try to
> > > refactor cipher-suite negotiation to be less monolithic in the cipher
> > > suite. I've generally been on the "no" side of that on cost/benefit
> > > grounds as well as not quite seeing how it would fit into the rest
> > > of the infrastructure. However, now that we're starting to get full
> > > implementations, and it's becoming clearer how the new elements
> > > (principally PSK-resumption and key_shares) interact with cipher
> > > suites, I've started to think that in fact we may be able to clean
> > > things up. One proposal for this is below [0]. I know this is
> > > pretty late in the process, but if we do want this change it's
> > > better to do it now.
> > >
> > > I'm sure we'll need to discuss this in Berlin, but in the meantime,
> > > fire away.
> > >
> > >
> > > The basic idea here is to factor out the TLS 1.3 negotiation into three
> > > mostly orthogonal axes.
> > >
> > > - Symmetric cipher/PRF  -- indicated by the cipher suite list as in
> TLS 1.2
> > > - Key exchange -- indicated by the key_shares and pre_shared_key
> extensions
> > > - Authentication -- indicated the signature_algorithms and
> pre_shared_key
> > >   extensions
> > >
> >
> > Tl;dr: I think this is a good approach because it eliminates much of the
> > existing negotiation redundancy/complexity and combinatorial explosion in
> > the 1.3+ ciphersuite menu.
>
> I recently tried to write code to handle this ciphersuite negotiation, so
> that it always negotiates a valid choice if any valid choice exists.
>
> I think the end result was insane. The problem that makes it so difficult
> is that legacy signature types, group types and protection/PRFs interact,
> so not all supported offers that server has enabled are actually possible
> to chose.
>

Can you say more about this?

I spent some time mocking up an implementation locally and it was pretty
clean.

Perhaps what made it easier is that I did:

1. Define new cipher suites that were totally agnostic about the key
exchange
and signature.

2. Assume everything was orthogonal except for the PSK/signature/key
exchange
interaction...

-Ekr



-Ekr


>
> > The longer version: the argument I made in Prague (though IIRC not very
> > clearly) was that while it would be nice to limit the ciphersuite options
> > to agreed-upon "good" combinations based on some sane notion of
> > forward-looking security margin (notwithstanding the practical inability
> to
> > see the future), the reality on the ground is that authentication is
> based
> > on something pre-existing---the server has one or two long-term keys of a
> > fixed length (e.g., one RSA-2048 and one P-256) that it can't augment on
> > demand---so it really only makes sense for the client to indicate what it
> > supports and to deal with whatever the server chooses to send it on that
> > basis. So I'd argue that this one is orthogonal based on that constraint,
> > and so it should be negotiated separately.
>
> If you are talking about "strength-matching", there is no sane notion of
> security equivalence with protection, key exchange and signatures (due to
> different sub-threshold, multi-key and period properties).
>
> And coupling those in a way that doesn't lead to great difficulty (even
> greater than currently) REALLY causes the ciphersuite space to
> combinatorially explode.
>
> > AEAD and PRF OTOH don't come with built-in keys, so they can always be
> > chosen as a pair as a function of the desired security margin.
>
> Except in some situations (e.g. 64-bit systems with hardware AES and
> CLMUL) it actually would make some sense to use AES-128-GCM with SHA-384.
>
> The "match security" is IMO about not having the weakest algorithm not
> being too weak, or "paying too much" for algorithm that is much above
> anything else.
>
> But what it doesn't consider is what if the stronger algorithm is
> actually cheaper? This actually happens on 64-bit on SHA-256 vs. SHA-384.
>
> Or if on 32-bit hardware where you don't have hw AES? Then
> X25519/Ed25519/Chacha20Poly1305/SHA256 is the cheapest (or ECDSA P-256
> if you don't have Ed25519), nevermind that it has "256-bit" symmetric
> cipher,
> but everything else at "128-bit" level...
>
> > Key agreement is not clearly in either category: when it's PSK, it's
> based
> > on what you have, so it's similar to authentication; but when it's
> (EC)DHE,
> > it's not, and so ideally you'd like the chosen group to be tied to the
> > AEAD/PRF security margin. But, since the client has to offer specific
> > groups rather than specifying general support for ECDHE or EdDHE, both
> > because ideally we want the client key share sent in the first flight and
> > because unlike RSA or FFDHE a client can't generalize to key sizes it
> > hasn't seen before, it actually still shares a lot in common with the
> auth
> > case of being sort-of something you have rather than something you can
> > choose on the fly. So I'm also in agreement that this is mostly
> orthogonal
> > and should be negotiated separately.
>
> "Security matching" between groups and symmetric ciphers is already highly
> problematic, and depends on all sorts of assumptions (and is generally
> biased towards symmetric ciphers being less secure than they seem).
>
> Sure, the server might bias choices, but actually enforcing anything here
> is IMO unwise.
>
> > So now you have several grab bags and need to choose one from each. Is it
> > necessary to tie the various bits together by security margin? Not clear.
> > It's probably fine to assume a client isn't going to announce support for
> > anything it doesn't think is secure enough, so the only practical
> downside
> > to using e.g. AES256-GCM-SHA384 with P-256 ECDSA is the unnecessary
> > additional CPU consumption of AES-256/SHA-384. The client was willing to
> > accept P-256 server authentication, so presumably it's happy with that
> > security margin; and anyway, the server could prefer ciphersuites and
> ECDHE
> > groups that better match the available auth credentials.
>
> IMO, no it is not necressary to tie the security margins. In case of
> authentication and encryption, there is also the issue that authentication
> is good if it is unbroken at that moment, whereas key exchange and
> encryption
> must remain unbroken for long time since.
>
> So that someone thinks ECDSA P-256 is OK for authentication does not mean
> that the same entity thinks ECDHE P-256 is OK for key exchange. Or to think
> that 128-bit symmetric encryption is OK.
>
> > Or maybe prospective security margin is too complex and/or too
> ill-defined
> > to bother with, and a server should just choose the least CPU-intensive
> > combination of everything.
>
> Well, yeah, it is ill-defined. Of course, there can be bad algorithms
> that one wants to disable.
>
> However, interactions between bad algorithms are much less likely than
> actual bad algorithms causing problems by themselves.
>
>
> -Ilari
>
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to