On Thu, Jun 13, 2024 at 4:23 PM Amir Omidi <amir=
40aaomidi....@dmarc.ietf.org> wrote:

> I’ve had a lot of trouble understanding how the user agent is supposed to
> be configured with this. Maybe a browser is going to be able to do it
> easily, but how do we envision this working in openssl? Or a programming
> language?
>
> If this is implemented by user agents, how do we envision the
> fingerprinting impact for this?
>
> My comments aren’t blockers by any means. It’s only me trying to
> understand how we imagine this draft working in these various TLS client
> implementations.
>

Hi Amir.

If you're thinking about "non-browser" things such as the openssl command
line tool, curl, nc, libcurl using utilities, etc. You probably need to
first ponder where those tools are getting their trust store to verify
certificates from the public web today.

Sometimes this is a custom bundle included with the tool, sometimes this is
a "system" CA trust store maintained by the operating system distribution.
Either way "someone" decided to include it, and usually, this is done by
following along with an existing root program
that the maintainers mostly trust to do a good job of being a root program.
Hopefully it is kept up to date both in terms of adding new additions, and
keeping up with distrusts.

By not sending a trust expression they could just continue as today, and in
the presence of a trust expressions supporting server they would get the
"default" certificate that is hoped to be ubiquitous. In the near term
until trust expressions are well supported by TLS software and servers, I
would expect that to likely be what would happen.

Outside of my day job I do assist with curating a trust store in an
operating system that is used by such tools when built there. Today we
mostly just follow along with Mozilla's trust store for firefox, because we
have no desire today to run our own root program. So let's call this
thankless task maintenance for "BasementOS".

In the future, If support were added to the TLS libraries we use, a trust
expression *could* be used, assuming BasementOS had one to use.  That could
take several forms:

   - BasementOS can use the published information from a root program
   publishing trust expressions to include the same roots of trust, and they
   simply advertise the exact trust expression corresponding to the roots
   they include. (I.E. if they decide to follow the chrome root program, they
   fetch the information from the chrome root progam, include chrome's roots
   at version 1234 and send the trust expression of "chrome 1234"). With
   support for using an identified trust store in the TLS software, one could
   even ponder being able to download or update versions of a package that
   included such roots and the trust expression for them.
   - BasementOS could decide a particular root program is mostly ok, and do
   just as the above, but exclude some roots they don't want or like in the
   system trust bundle, so they send the same trust expression, but exclude
   the roots they remove. (chrome 1234 with exclusions)

Someone could also decide we really really want to start their own root
program, for <reasons>. Maybe they don't want to be what a major browser
is. One of the (unstated, and perhaps we should state it clearer) goals of
trust expressions is to allow for new root programs to be created.

   - BasementOS (or a collective of multiple OS's, packages, whatever)
   could start a root program, and start coordinating with CA's to include
   their trust expression in matching delivered certificate chains. Maybe some
   CA's do, maybe some do not. In the interim BasementOS could start with an
   existing trust store,  remove what it doesn't like, and send that along
   with it's nascent trust expression (chrome 1234 with exclusions)
   (basementOS 12) Once enough CA's include a basementOS trust expression on
   certificates, they could transition to using a BasementOS trust expression
   - Perhaps if BasementOS itself is too tiny for this job, it bands
   together in a collective with other like minded OS's / projects, etc. and
   runs a collective root program, the same way.

The important takeaway here is that even today *SOMEONE* is making
decisions somewhere about what roots such things trust when they make
connections. Trust expressions do not change that. If today they are
manually curating a bundle without a trust expression, they can continue to
do so. If they are "following" a major root program that starts to publish
trust expressions, they could also send an appropriate trust expression.

Now, do people today put a lot of thought into what "root program" is
maintaining the trust bundle and how up to date it is for their command
line tools? I am unsure that it gets the attention it might warrant.

-Bob



> Amir Omidi (he/them)
>
>
> On Thu, Jun 13, 2024 at 22:16 Eric Rescorla <e...@rtfm.com> wrote:
>
>>
>>
>> On Wed, Jun 12, 2024 at 5:16 PM Nick Harper <i...@nharper.org> wrote:
>>
>>> On Wed, Jun 12, 2024 at 3:17 AM Dennis Jackson <i...@dennis-jackson.uk>
>>> wrote:
>>>
>>>> You can't argue that T.E. contains the functionality of
>>>> certificate_authorities as a subset, then conclude that having additional
>>>> functionalities makes it less risky. You would need to argue the exact
>>>> opposite, that T.E. doesn't contain the bad functionalities of
>>>> certificate_authorities. The risk associated with abuse of a feature is not
>>>> in any way diluted by tacking on good use cases.
>>>>
>>> I'm not arguing that TE is a superset of certificate_authorities. I'm
>>> arguing that it's an incremental improvement over certificate_authorities.
>>> That is to say, certificate_authorities is a way for a relying party to
>>> indicate to a subscriber which CAs it trusts, and TE is another way to do
>>> the same thing. TE is an incremental improvement because it's solving the
>>> same problem but making different tradeoffs. To deploy the
>>> certificate_authorities extension, no extra machinery is needed past what's
>>> in the certificates, but that comes at a cost of a large number of bytes
>>> sent by the relying party. TE optimizes for size, at the cost of additional
>>> complexity and machinery involving additional parties.
>>>
>>> For the abuse scenario, TE makes it no easier than
>>> certificate_authorities (the size of advertising the single malicious CA
>>> isn't a concern, whereas it is a problem when it's a browser's entire trust
>>> store that's advertised), and TE adds additional deployment complexity
>>> compared to certificate_authorities, which lessens the risk.
>>>
>>
>> I'm not sure that this analysis is correct. The text in 8446 isn't
>> entirely clear, but I think the
>> best reading is that that "certificate_authorities" list is supposed to
>> be exhaustive:
>>
>>    The "certificate_authorities" extension is used to indicate the
>>    certificate authorities (CAs) which an endpoint supports and which
>>    SHOULD be used by the receiving endpoint to guide certificate
>>    selection.
>>
>> ...
>>
>>    authorities:  A list of the distinguished names [X501] of acceptable
>>       certificate authorities, represented in DER-encoded [X690] format.
>>       These distinguished names specify a desired distinguished name for
>>       a trust anchor or subordinate CA; thus, this message can be used
>>       to describe known trust anchors as well as a desired authorization
>>       space.
>>
>> I don't know how widely implemented this extension is, but I don't think
>> it's
>> obviously safe to send a subset of the list.
>>
>> -Ekr
>>
>>
>>> The takeaway here is that the risks associated with the abuse of Trust
>>> Expressions also exist with certificate_authorities.
>>>>
>>>> I wonder what such a trust store manifest would look like... [1] [2].
>>>> There's at least one large player out there with a list of CAs ready to go
>>>> and all the necessary machinery in place.
>>>>
>>> Ready to go and do what?!
>>>
>>> If you're talking about the EU eIDAS QWAC trust list, those CAs were
>>> already trusted by browsers before the eIDAS regulations took effect, and
>>> eIDAS allows for their distrust and removal. Already, one CA [1] on that
>>> list is being distrusted by multiple [2] browsers [3]. Even if the EU has a
>>> published list of CAs that they could turn into a trust store manifest,
>>> this is a distraction from the point that with TE, abuse requires the
>>> cooperation (or compulsion) of more parties than with
>>> certificate_authorities.
>>>
>>> 1: https://eidas.ec.europa.eu/efda/tl-browser/#/screen/tl/AT/5/25
>>> 2:
>>> https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/XpknYMPO8dI/m/JBNFg3aVAwAJ
>>> 3:
>>> https://groups.google.com/a/ccadb.org/g/public/c/wRs-zec8w7k/m/G_9QprJ2AQAJ
>>>
>>> _______________________________________________
>>> 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