On 11/06/2024 02:24, Devon O'Brien wrote:

Focusing on the actual draft text, the TLS trust expressions extension does not represent any kind of major paradigm shift, primarily due to its strong similarity to the existing certificate_authorities TLS extension. [...]

There is no fundamental capability offered by trust expressions that isn’t already available by certificate_authorities. When compared to certificate_authorities, the primary obstacle being addressed by trust expressions is the size of the message sent in (1). X.501 distinguished names are notoriously verbose, and modern trust stores contain hundreds of trust anchors, rendering it infeasible for relying parties to dedicate tens of thousands of bytes in a TLS handshake to listing trust anchors. Notably, parties that may wish for clients to signal a specific mandated CA can do so efficiently with certificate_authorities today, as this requires sending only a single distinguished name.

There are a number of issues with this argument. The first and most important is that you are misunderstanding and so misrepresenting the concerns that are being raised.

We have been discussing on the list whether Trust Expressions enables bad actors (in particular, governments) to establish their own root programs and get users and websites to adopt them. This is a distinct scenario from the case you addressed where a government demands the inclusion of a specific single government CA. Although both are equally bad for the security and privacy of users.

As previously discussed on the list, government root programs are much more dangerous proposals than the forced inclusion of specific CAs because they appear to have legitimate purposes in the eyes of lawmakers. Proposals to mandate the inclusion of a single government CA in existing root stores are as transparently evil as the plot of the average bond villain. The community understands there is no legitimate reason a government should force inclusion of their CA and so infers the actual use case will be mass surveillance or censorship.

The more attractive route for governments is to argue that they are establishing a domestic root store (or 'trust regime'). The government will establish a regulator to manage the scheme and approve the suitable CAs. These domestic root stores are argued to enable digital sovereignty, break free of control by American big tech and help build the local cybersecurity industry. Despite being dressed up in this clothing, they are just as effective tools for surveillance and censorship as forcing a CA into an existing root store would be.

One of the key differences between Trust Expressions and the certificate_authorities extension is that T.E. is a very effective tool for establishing a new trust store and indeed has been designed with this goal in mind (see bold text below). It is not only the fact that T.E. compresses the certificate_authorities extension that enables this outcome. Another key design decision is letting the CA decide which root stores a website should support, without needing a decision or approval from the website operator.

The second issue with the argument that Trust Expressions does not introduce new risks is that the certificate_authorities extension only exists on paper rather than in running code. If a government were to try to pass some legislation which used the certificate_authorities extension, they would be completely unable to enact it in practice. This is because support in TLS libraries is practically non-existent. Most of those I surveyed did not have any support, a couple had support but only for client certificates. I was unable to find any library or webserver which supports certificate_authorities in the client_hello although presumably one exists.  As the certificate_authorities extension has been standardized for 6 years now and support is still so limited, I'm not especially concerned that will change in the future.

I also want to be clear that there is no danger in writing down ideas like the certificate_authorities extension or Trust Expressions. Governments are capable of these ideas even if they tend to execute them with limited technical competence. The danger entirely comes from whether running code, out there in the real world, actually supports these features. Governments, even powerful federations, would find it impossible to force certificate_authorities or Trust Expressions into popular TLS stacks if the community were against it. But if we ship these features to the entire web, they can (and will) be abused.

Summing up:

 * Certificate_authorities does not enable the creation of domestic
   root stores, trust expressions does by solving their adoption
   problem (expanded on here [1])
 * Domestic root stores have the same (or worse) harms than simply
   mandating a government CA in existing root stores.
 * Domestic root stores are much more likely to be supported by
   (non-technical) lawmakers than mandating inclusion of government CA
   in an existing root store.
 * Separately, support for the certificate_authorities extension has
   not shipped and its getting the code running that governments need
   in order to enable the abuse, not the ideas in draft specs.

Devon O'Brien wrote:

Discussion about whether some root program may be pressured to accept national trust anchors that do not meet existing standards is a critically important security policy topic, but is fundamentally orthogonal to this mechanism. Drawing causality between trust expressions and this outcome (especially ignoring the existing surface already provided by certificate_authorities) may be well-intentioned, but is misplaced.


Bob Beck wrote:

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.
*

I agree with Bob that Trust Expressions enables the creation of new root programs and hope that the other authors of Trust Expressions would also agree. If so, it cannot be argued that these risks are in any way orthogonal, rather, they directly concern how this goal / feature can be exploited by bad actors.

My point has been that the actors with the incentives and the capabilities to establish new root programs are mostly governments who are interested in surveilling and censoring users. I am less optimistic that T.E. will enable the creation of new root programs for good reasons -  that would require websites go through extra effort to support multiple CAs simultaneously without a legal stick pushing them to do so - otherwise the new root program could simply be a strict subset of the existing root programs and not need T.E.

Nick Harper wrote:

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.

I think we're getting rather away from the point, but to clear up some factual errors:

 * About one third of the eIDAS QWAC trust list were also in browser
   root stores. The remaining two thirds were not trusted.
 * eIDAS does now have safeguard to enable removal that were added at
   the last minute due to outcry [2] [3].
 * The fact the EU has a domestic trust store ready to go is very
   material as to whether Trust Expressions can be used to ship a
   domestic root stores to web users. You seemed to be imagining this
   would be rather abstract and a lot of work compared to a single
   government CA, rather than something that has already been done and
   heavily debated in Parliament.

David Benjamin wrote:

Broadly, the fingerprinting story is the same as the certificate_authorities extension, in that trust expressions targets the cases where the trust anchor list is common to your desired anonymity set, whatever it is.

The draft doesn't currently mention the risks here and I think quite a bit more analysis is required. Especially as certificate_authorities is not used by any major implementation today in the Client Hello, so the risks cannot be hand waved as similar to what we have today.

I think its probably reasonable to assume that the major browser fingerprints will always have distinct TLS fingerprints. However, Trust Expressions adds an additional fingerprinting vector as different Chrome versions will have different trust labels, making it easy to pick out older Chrome clients. Additionally, different derivatives of Chrome, e.g. Chromium, Edge, etc will also now be possible to fingerprint through their trust store. It is presumably likely that things might go even further, e.g. with being able to fingerprint an Android Webview vs a Chrome TLS Client Hello based on which root store is used or if different root stores are offered for different channels or geographies.

This seems like quite a substantial increase in fingerprinting risks compared to existing extensions, which tend to reveal only whether they are in use, rather than directly leak information about who is using them.

Best,
Dennis

[1] https://mailarchive.ietf.org/arch/msg/tls/XW2tkA2Bk9Rj9RpQM36q044ggHo/

[2] https://scotthelme.co.uk/what-the-qwac/

[3] https://eidas-open-letter.org


_______________________________________________
TLS mailing list --tls@ietf.org
To unsubscribe send an email totls-le...@ietf.org
_______________________________________________
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org

Reply via email to