> We should reap what we sow and just use supported_groups

Agreed 🥲

On Wed, Sep 25, 2024 at 10:54 AM Bob Beck <bbe=40google....@dmarc.ietf.org>
wrote:

>
>
> On Tue, Sep 24, 2024 at 5:12 PM David Benjamin <david...@chromium.org>
> wrote:
>
>> I should add, another reason to call it tls-supported-groups is that this
>> is essentially what the server would have put in the supported_groups
>> extension, if negotiation order in TLS were inverted. Since TLS already saw
>> fit[*] to name this concept supported_groups, I think that's a fine name
>> for the equivalent DNS incarnation.
>>
>
>> David
>>
>> [*] Mind you, supported_groups is a horrible name, but because of
>> "groups", not "supported". It refers to Diffie-Hellman groups, but we're
>> sticking PQ KEMs in there now. But we already disruptively renamed "curves"
>> to "groups" and another rename would do it again. Honestly, we should have
>> just kept it at "curves", and saved our disruption budget for a
>> more appropriate name, but so it goes. :-)
>>
>
> ^^^ This.   having a third term to attempt to describe a concept because
> we keep changing our minds is not going to help implementers, but just
> cause confusion
>
> I don't personally like supported_curves^Wgroups but turning that into
> supported^Wpreferred_curves^Wgroups^Wkems is just adding confusion and
> possibly code churn for variable renaming. We should reap what we sow and
> just use supported_groups
>
> If we absolutely must name the DNS thing something else, treat it as an
> opaque list of strings and don't be opinionated about what those
> strings contain. The DNS doesn't know or care anyway. name it for what it's
> purpose is (keyshare_hint).
>
>
>
>> On Tue, Sep 24, 2024 at 7:07 PM David Benjamin <david...@chromium.org>
>> wrote:
>>
>>> Ah, I see. I don't think "supported" vs "preferred" captures this
>>> because "preferred" in the context of TLS usually isn't a binary property
>>> but a preference order. But I agree there is some ambiguity over what to
>>> list if you've got a couple different values.
>>>
>>> I think, other than potentially changing the name, it's not likely that
>>> this will have any impact on the presentation syntax. At the end of the
>>> day, we're going to want to send a list of things that your service (being
>>> intentionally vague about multiple server instances) supports. But since
>>> "supported" vs "preferred" is not the right descriptor, I suspect we won't
>>> do better than "supported" anyway. In particular...
>>>
>>> > I interpret preferred as being a list that the target thinks
>>> > will help clients avoid HRR, and help clients choose what is
>>> > considered "best" (e.g. wrt PQ) and that should work with all
>>> > server instances concerned, and that's likely the shortest
>>> > such list.
>>>
>>> That's not right. Avoiding HRR is a matter of predicting the group that
>>> the server would have picked given yours and the server's preferences. For
>>> example, consider a server that supports:
>>>
>>> A > B > C > D > E > F
>>>
>>> By the short list theory, you might think the server should publish,
>>> say, "A, B, C". However all that accomplishes is that a client that only
>>> supports D, E, and F won't know that it should predict D. The right
>>> behavior is to publish your full preference list, so that all clients (up
>>> to differences in selection algorithm) have the best shot of predicting
>>> correctly.
>>>
>>> > The issue with "supported" may be that some server instances
>>> > might have support for all sorts of oddball groups, and it
>>> > might be counterproductive to list all of those for the
>>> > target. (And/or to collect/merge the list if we're thinking
>>> > about e.g. the wkech thing.)
>>>
>>> Variations in server instances may indeed result in mispredictions. If
>>> the variation is due to a temporary rollout inconsistency, this variation
>>> is shortlived and will eventually sort itself out. During that period of
>>> inconsistency, neither list is more correct than the other because you want
>>> to make the correct prediction for each server.
>>>
>>> If the variation is persistent because you've intentionally deployed
>>> different instances of your service differently... first of all, don't do
>>> that. The security properties are not what you might. (An attacker can
>>> always direct the client to the weaker of the two.) If, despite the
>>> security flaws, you insist on doing this, I suppose you can use different
>>> HTTPS records for each and use all the machinery that HTTPS-RR already has
>>> here. That's all orthogonal to this draft because describing multiple
>>> routes to a single service is a general HTTPS-RR feature.
>>>
>>> > I'm fine that the text is a bit ambiguous on that for now, but
>>> > if the presentation syntax says "supported" then someone may
>>> > take that literally and publish very long lists that could
>>> > result in failures, for some server instances. (Or else could
>>> > add complexity in how e.g. a front-end thing like haproxy has
>>> > to process client hellos.)
>>>
>>> Could you elaborate on how a long list could result in a failure or add
>>> complexity?
>>>
>>> At the end of the day, all this does is influence what key shares the
>>> client predicts. No matter which group the client predicts, the client
>>> remains obligated to send a ClientHello that accurate describes its
>>> preferences, and the server remains obligated to interpret it according to
>>> the rules of RFC 8446. That is all baseline requirements in implementing
>>> TLS 1.3 that this working group long decided on.
>>>
>>> If the result is that the client predicted well, great. We get better
>>> performance. If the result is that the client predicted badly, well, that's
>>> a shame but the server is already required to correctly send
>>> HelloRetryRequest. That is not added complexity or a failed connection
>>> because HelloRetryRequest is a required part of RFC 8446. Indeed Section
>>> 3.4 of the draft explicitly says that this cannot guarantee you won't get
>>> HRR. As in RFC 8446, you remain obligated to fully implement TLS 1.3,
>>> including HRR.
>>>
>>> No DNS-based design can get rid of HRR because DNS and service instances
>>> can always get out of sync. That has never been the goal here. All we can
>>> do is reduce the cases where it happens.
>>>
>>> > I think a presentation syntax of "tls-preferred-groups" would
>>> > fix the issue.
>>>
>>> Hopefully the above makes it clear that the rename both would not fix
>>> the issue, and doesn't really reflect the semantics we need here.
>>>
>>> I think the right solution here is honestly to not worry about it too
>>> much. Maybe we could add a bit of text to point this situation out, but
>>> otherwise I don't think there's anything we can or should change in the
>>> protocol itself. At transition points, it is already inevitable, due to DNS
>>> caching, that you'll get out of sync. That's fine. TLS 1.3 already handles
>>> that. Whether DNS servers the new or old population of servers isn't really
>>> going to change that. We could maybe include a suggestion to pick like the
>>> majority one or something, but it doesn't hugely matter.
>>>
>>> David
>>>
>>> On Tue, Sep 24, 2024 at 6:49 PM Stephen Farrell <
>>> stephen.farr...@cs.tcd.ie> wrote:
>>>
>>>>
>>>> Hiya,
>>>>
>>>> On 9/24/24 23:36, David Benjamin wrote:
>>>> > Could you clarify what you mean by supported vs preferred? I'm not
>>>> sure I
>>>> > follow what the difference is, in the context of a TLS implementation.
>>>>
>>>> I can try:-)
>>>>
>>>> > The intention is that you list all the NamedGroups you support, in
>>>> order of
>>>> > decreasing preference. That gives the client enough information to
>>>> make a
>>>> > reasonable prediction.
>>>>
>>>> I interpret supported as being the set of all groups that could
>>>> work with either all or at least one of the server instances
>>>> currently listening at the target's IPs. (I don't think the draft
>>>> says which of "all" or "at least one" is the intended semantic.)
>>>>
>>>> I interpret preferred as being a list that the target thinks
>>>> will help clients avoid HRR, and help clients choose what is
>>>> considered "best" (e.g. wrt PQ) and that should work with all
>>>> server instances concerned, and that's likely the shortest
>>>> such list.
>>>>
>>>> The issue with "supported" may be that some server instances
>>>> might have support for all sorts of oddball groups, and it
>>>> might be counterproductive to list all of those for the
>>>> target. (And/or to collect/merge the list if we're thinking
>>>> about e.g. the wkech thing.)
>>>>
>>>> I'm fine that the text is a bit ambiguous on that for now, but
>>>> if the presentation syntax says "supported" then someone may
>>>> take that literally and publish very long lists that could
>>>> result in failures, for some server instances. (Or else could
>>>> add complexity in how e.g. a front-end thing like haproxy has
>>>> to process client hellos.)
>>>>
>>>> Section 3.2 maybe encapsulates the ambiguity:
>>>>
>>>>    "Services SHOULD include supported TLS named groups, in order of
>>>>     decreasing preference in the tls-supported-groups parameter of their
>>>>     HTTPS or SVCB endpoints.  As TLS preferences are updated, services
>>>>     SHOULD update the DNS record to match."
>>>>
>>>> The 2nd sentence could be read as referring to the ordering or
>>>> to the content of the list. And the example would indicate the
>>>> latter. (To me anyway.)
>>>>
>>>> I think a presentation syntax of "tls-preferred-groups" would
>>>> fix the issue.
>>>>
>>>> Cheers,
>>>> S.
>>>>
>>>> >
>>>> > On Tue, Sep 24, 2024 at 6:24 PM Stephen Farrell <
>>>> stephen.farr...@cs.tcd.ie>
>>>> > wrote:
>>>> >
>>>> >>
>>>> >> Hiya,
>>>> >>
>>>> >> I read the draft again just now. ISTM overall a fine idea.
>>>> >>
>>>> >> I think the current draft is a bit ambiguous as to whether
>>>> >> the SvcParamKey reflects preferred or supported groups. It
>>>> >> may be better to resolve that before allocating a codepoint.
>>>> >>
>>>> >> However, if the DEs considered a possible later change to the
>>>> >> presentation syntax as being consistent with allocating a
>>>> >> codepoint now, then I'd be fine with going ahead now, but IIRC
>>>> >> DNS folks do also care about presentation syntax stability
>>>> >> when it comes to codepoints. (I could be wrong there or things
>>>> >> could have changed, which could change my conclusion.)
>>>> >>
>>>> >> The quickest way to resolve this might be to rev the draft
>>>> >> and just change the presentation syntax term from supported
>>>> >> to preferred. (Assuming we agree that the HTTPS RR values
>>>> >> will typically reflect overall group preferences for the
>>>> >> target and not everything actually supported by all the
>>>> >> server instances concerned.)
>>>> >>
>>>> >> Cheers,
>>>> >> S.
>>>> >>
>>>> >> On 9/24/24 19:17, Sean Turner wrote:
>>>> >>> Hi! After discussions with the author (David Benjamin) of
>>>> draft-ietf-
>>>> >>> tls-key-share-prediction [0], I would like to determine whether
>>>> >>> there is consensus to request an “early” * code point request for a
>>>> >>> 'tls-supported-group' entry in the Service Parameter Keys registry;
>>>> >>> see Section 5 of the I-D.  The point of this consensus call is to
>>>> >>> determine whether you think this I-D is stable enough to request a
>>>> >>> code point in the Expert Review range [1].  Please let the list know
>>>> >>> by 8 October 2023 if you support this “early" allocation.
>>>> >>>
>>>> >>> * Early is in quotes because, technically, this is not an early IANA
>>>> >>> allocation as defined in [2]; I am just calling it “early" because
>>>> >>> it’s before the I-D is an RFC. I confirmed with the Service
>>>> >>> Parameter Keys DEs (Designated Experts) that we can get a code point
>>>> >>> in the Expert Review space if the I-D is stable; if not, then we
>>>> >>> should be using the Private Use space.
>>>> >>>
>>>> >>> spt
>>>> >>>
>>>> >>> [0] https://datatracker.ietf.org/doc/draft-ietf-tls-key-share-
>>>> >>> prediction/ [1] https://www.iana.org/assignments/dns-svcb/dns-
>>>> >>> svcb.xhtml [2] https://datatracker.ietf.org/doc/rfc7120/
>>>> >>> _______________________________________________ TLS mailing list --
>>>> >>> tls@ietf.org To unsubscribe send an email to tls-le...@ietf.org
>>>> >>
>>>> >> _______________________________________________
>>>> >> TLS mailing list -- tls@ietf.org
>>>> >> To unsubscribe send an email to tls-le...@ietf.org
>>>> >>
>>>> >
>>>>
>>>> _______________________________________________
>> TLS mailing list -- tls@ietf.org
>> To unsubscribe send an email to tls-le...@ietf.org
>>
> _______________________________________________
> TLS mailing list -- tls@ietf.org
> To unsubscribe send an email to tls-le...@ietf.org
>
_______________________________________________
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org

Reply via email to