On 04/17/2017 02:44 PM, Douglas Stebila wrote:
> Hi David,
>
> Thanks for the feedback.
>
>> This seems overly complicated. Why implement a parallel key share
>> mechanism rather than merely defining a new NamedGroup value?
>>
>> Using your example of Google's recent New Hope experiment, I would
>> imagine defining, say, NamedGroup.cecpq1. Let its key_shares be the
>> concatenation of New Hope and X25519 public values, and let the
>> resulting shared secret be some combination of the two resulting keys.
>>
>> This avoids changing the key schedule or protocol logic and slots in
>> nicely into the existing arrangement. The AdditionalKeyShare proposal
>> has more moving parts and combinatorial combinations to test and
>> worry about.
>
> Defining combined NamedGroups, like in the Google New Hope experiment,
> also incurs a combinatorial explosion, this time in the number of
> NamedGroups.  Given that TLS 1.3 has taken the approach of splitting
> off each component of a TLS 1.2 ciphersuite into its own negotiable
> component to avoid combinatorial explosion in standardized values,
> separately negotiating each parallel key share mechanism seemed to us
> to follow the TLS 1.3 design approach.
>

You only get the combinatorial explosion if you let it happen.  A lot of
the possible combinations wouldn't make much sense, and would not need
to be defined.  TLS 1.3 also tries to limit the possible combinations in
some aspects, presenting just a few good choices with clear trade-offs.

>> It also requires implementations answer silly questions like:
>> - What happens the server selects two New Hopes with no X25519?
>> X25519 and P-256 together?
>
> In our draft, KeyShare and AdditionalKeyShare form disjoint pools of
> NamedGroups from which one element can be selected.  If the client
> offers say P256 and X5519 in KeyShare and NewHope in its
> AdditionalKeyShare, your first problem cannot happen.  If the client
> offers NewHope in both pools, then the situation you propose could
> happen.  This does not negatively impact compatibility or security,
> although there is obviously no value in doing two NewHopes compared to
> a single NewHope.  I don't think we've put in a MUST NOT/SHOULD NOT
> here, but we could add that.
>

That's pushing complexity from the spec into implementations; we have a
lot of evidence to suggest that not all implementations will get it right.

>
> - How can I plausibly expose this complex array of options to the
> consumer of my TLS library?
>
> Yes, there is a complex array of options:
> - which algorithm(s) the client views as "must have"
> - which algorithm(s) the client views as "would like to have"
> - which algorithm(s) should/should not happen at the same time
>
> If this functionality is encapsulated anywhere in TLS, then that
> complexity needs to incorporated somewhere, either already in compound
> NamedGroups or in configuration of the parallel key share mechanism.
>  As I mentioned above, we thought that combinatorial explosion of
> NamedGroups was not the TLS 1.3 way.  However, we are open to
> considering that if there's a clear preference for it.
>

I would rather leave the complexity in the NamedGroups registry.

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

Reply via email to