[TLS]Re: TLS trust expressions and certificate_authorities

2024-06-17 Thread Dennis Jackson

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 su

[TLS]Re: Working Group Last Call for Bootstrapping TLS Encrypted ClientHello with DNS Service Bindings

2024-06-17 Thread Salz, Rich
> This email starts the working group last call for "Bootstrapping TLS 
> Encrypted ClientHello with DNS Service Bindings” I-D

The draft says: " It is applicable to all TLS-based protocols (including DTLS 
[RFC9147] and QUIC version 1 [RFC9001]) unless otherwise specified."

But the ECH draft says: "ECH is supported in TLS 1.3 [RFC8446], DTLS 1.3 
[RFC9147], and newer versions of the TLS and DTLS protocols."

Those two documents should be harmonized.  I think they should both say what 
the ECH draft says, but they should also both mention that QUIC as a protocol 
that uses TLS 1.3 is also supported.


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


[TLS]Re: TLS trust expressions and certificate_authorities

2024-06-17 Thread David Benjamin
On Mon, Jun 17, 2024 at 9:10 AM Dennis Jackson  wrote:

> 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.
>
Hi Dennis,

You seem to have lost the part of my message where I linked to the section
in the draft. The “hand wave” was a summary of the more detailed discussion
in the draft:
https://davidben.github.io/tls-trust-expressions/draft-davidben-tls-trust-expr.html#name-privacy-considerations

As to that, I think you’re misunderstanding the point of this section and
the audience of a standards document. Fingerprinting risks are as much a
property of how a mechanism is used, as they are of the mechanism itself.
For example, TLS cipher suite negotiation is a fingerprinting risk if you
use user-specific cipher suite preferences. It is much less of one if
behavior is common across all instances of some software.

But a protocol specification is fixed and can only define the mechanism. It
is not useful to cite a point-in-time snapshot of what is deployed. After
all, by that standard, trust expressions have zero deployment today and
therefore contribute nothing to fingerprinting risk, even less than
certificate_authorities. This is not a useful criteria. Rather, a protocol
specification should discuss the privacy implications of different ways one
might use the protocol, so that implementations can make good choices.

In that sense, certificate_authorities and trust expressions are indeed
broadly analogous: if you use them, you reveal the CAs that you chose to
reveal. Thus, when you decide which CAs to reveal, you need to take that
into account. The section discusses this and provides some guidance on this.

If you think there is some detail, fitting the intent of the section, which
we have missed, feedback is welcome. The details below, however, do not
make sense here. Below, it looks like you are speculating about Chrome’s
intended use of this extension. As I both co-authored the draft and work on
Chrome, I don’t think we to resort to speculation here:

> 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.
>
This is not true. Chrome is both able to push root store changes
independent of Chrome updates, and does not update the root store on every
major release. That means the anonymity sets are much larger than you
imply, both because several consecutive Chrome versions will appear the
same, and because root store updates will converge faster.

The anonymity sets are more granular than all of Chrome, yes. As with any
software, behavior changes will change behavior, and so during the
transition there will be more variability, until things converge to the new
one.

(The draft text was a little sloppy on browsers vs versions, so we’ve gone
and fixed that. However, that was just an illustrative example. The
load-bearing text is the preceding paragraph. As I’m sure you’re aware, web
browsers vary significantly in how they manage changes. A complete analysis
of today’s web browser behavior would not make sense for implementation
guidance.)

And, of course, this difference is moot in most web browser contexts, as
browsers already reveal their versions: explicitly via the User-Agent
header, and implicitly by being programmable environments where probe for
behavior changes is easy. In contexts where either of these is already
accessible, it does not matter whether trust expressions reveal “some
Chromium derivative”, “Chrome”, “Chrome 123”, or something in between.

> Additionally, different derivatives of Chrome, e.g. Chromium, Edge, etc
> will also now be possible to fingerprint through their trust store.
>
This is also not true. If you build Chromium from source, you will get the
same trust store as Chrome. Other Chromium derivatives may, of course,
arbitrarily diverge from Chromium. Whether it’s the trust store or cipher
suite preferences, any TLS change will, of course, impact the TLS-level
anonymity set. This is something derivatives already must evaluate for any
change, but the section acts as guidance on this as well.

> 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
>
Distinguishing Android WebView and Chrome is already expected, as they’re
different