On Thu, May 23, 2024 at 11:09 AM Dennis Jackson <ietf=
40dennis-jackson...@dmarc.ietf.org> wrote

>
> > I think we have to agree that Trust Expressions enables websites to
> adopt new CA chains regardless of client trust and even builds a
> centralized mechanism for doing so. It is a core feature of the design.
>
> No one has to agree to this because you have not backed this claim at all.
> Nick sent two long emails explaining why this was not the case, both of
> which you have simply dismissed [...]
>
> This is something that I believe David Benjamin and the other draft
> authors, and I all agree on. You and Nick seem to have misunderstood either
> the argument or the draft.
>
> David Benjamin, writing on behalf of Devon and Bob as well:
>
> By design, a multi-certificate model removes the ubiquity requirement for
> a trust anchor to be potentially useful for a server operator.
>
> [...]
>
> Server operators, once software is in place, not needing to be concerned
> about new trust expressions or changes to them. The heavy lifting is
> between the root program and the CA.
>
> From the Draft (Section 7):
>
> Subscribers SHOULD use an automated issuance process where the CA
> transparently provisions multiple certification paths, without changes to
> subscriber configuration.
>
> The CA can provision whatever chains it likes without the operator's
> involvement. These chains do not have to be trusted by any clients. This is
> a centralized mechanism which allows one party (the CA) to ship multiple
> chains of its choice to all of its subscribers. This obviously has
> beneficial use cases, but there are also cases where this can be abused.
>

Hi Dennis,

Since you seem to be trying to speak on my behalf, I'm going to go ahead
and correct this now. This is not true. I think you have misunderstood how
this extension works. In fact, the extension with this property is the
certificate_authorities extension, already standardized by the TLSWG, and
with an even longer history as a non-extension field of the
CertificateRequest message.

At the end of the day, the TLS components of trust expressions are simply a
more size-efficient form of the certificate_authorities field. The rest is
working through the deployment implications to reduce server operator
burden. However, the way we achieve this size efficiency is by *not* saying
the CAs names. Instead, the CA sets are indirected through named and
versioned "trust stores". However, the price one inherently needs to pay
here is that servers need to know how to map from those trust stores back
to the certificates. We solve this with the TrustStoreInclusionList
metadata from the CA.

That TrustStoreInclusionList structure is necessarily a point-in-time
snapshot of the state of the world. If a root program has not included a CA
yet, the CA cannot claim it in the metadata or connections will fail. If
the CA is included in zero root programs, the only viable (i.e. correct and
does not cause interop issues) TrustStoreInclusionList is the empty list,
in which case the certificate will never be presented.

If the root program were to add that CA later, the server *still will not
send those certificates* to updated clients. It takes a
new TrustStoreInclusionList from the CA for the certificate to be sent. We
can (and must for interop) efficiently solve version skew for
removals, hence the excluded_labels machinery. But version skew for
additions requires saying *something* preexisting that names the CA. Now,
if the client really, really wanted to trigger that certificate, it could
do so today. It could send the name of the CA in the
certificate_authorities extension. I wouldn't expect clients to want to
waste bandwidth on this. Regardless, trust expressions has no involvement
in that process, the tool you use there is the certificate_authorities
extension. Now, _after_ a root program has made an addition, trust
expressions' deployment model allows for reduced server operator burden as
in the text you quoted, but at that point the CA has already been trusted.

Of course, whether this property (whether servers can usefully pre-deploy
not-yet-added trust anchors), which trust expressions does not have, even
matters boils to whether a root program would misinterpret availability in
servers as a sign of CA trustworthiness, when those two are clearly
unrelated to each other. Ultimately, the trustworthiness of CAs is a
subjective social question: do we believe this CA has *and will continue*
only sign true things? We can build measures to retroactively catch issues
like Certificate Transparency, but the key question is fundamentally
forward-looking. The role of a root program is to make judgement calls on
this question. A root program that so misunderstands its role in this
system that it conflates these two isn't going to handle its other
load-bearing responsibilities either.

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

Reply via email to