A few comments and nits are below but I have one high level question. Why limit 
the manifest produced by root programs to trust anchors? Root programs could 
produce a structure that represents CA certificates and all possible partial 
paths that can be validated by a trust store as well. This would remove the 
need for CAs or subscribers (or anyone who used the root program) to do path 
building. Root program users could look up paths that end with the issuer of a 
given certificate then validate using the corresponding trust store. This 
approach may remove the need for CAs to take any action relative to this 
mechanism and should require fewer moving parts to move in concert. The 
signaling mechanism seems like something that is long overdue, and I don't 
think would need to change if the manifest were augmented. Though, if CA certs 
were included in the manifest, indices could be returned instead of CA certs to 
represent the path, which may be useful in the PQ scenario.

 

Questions/Comments

In section 4, the ability to drop old versions seems like a need-to-have over 
time. If preserving indexing is the concern, maybe define the versions field as 
featuring an array of trust-store-version or null. 

 

In section 4, why include entire TAs in the manifest instead of a reference 
(i.e., hash)? Including the TAs may promote misuse. If TAs are necessary, CBOR 
may be a better choice given the bulk of the contents are binary data. 

 

In section 4.1, the sum may exceed the lifetime of the trust anchor. For 
example, if a trust anchor is five years from decommissioning when expiration 
is calculated but its max_lifetime per current definition is six years. Should 
max_lifetime be the number of seconds of the maximum lifetime of subscriber 
certificates issued by subordinate/leaf CAs?

 

In section 4.2, why not use indices to identify each trust anchor and limit the 
usage of labels to the optional grouping of TAs? This may help eliminate 
possible mistakes when a relying party prepares an exclusion list, i.e., by 
referencing a group when an individual TA was intended. Does "repurpose" 
include adding or removing a trust anchor from a label or can label members 
vary freely across versions?

 

In section 5, it's not clear to me that exclusively tasking CAs with preparing 
CertificatePropertyLists is desirable. If a CA is not aware of a root program a 
subscriber needs to support, the subscriber could prepare the structure 
directly (possibly by augmenting a structure provided by the CA as a hint). 
Paths with more than one intermediate CA may complicate preparation for CAs as 
well.

 

In section 6.5, the second and third paragraphs (and security considerations) 
suggest the root program prepares trust expressions but the next to last 
paragraph suggests software versions influence trust expression contents. 
Requiring root programs to be aware of software versions seems like a stretch. 
Trust expressions seem inherently local, i.e., to capture trust anchors a 
relying party has explicitly disabled. There is also potential for a relying 
party to utilize trust anchors from more than one root program, which would 
require relying party to do final preparation. Re: the "should get moved to the 
manifest" note, why is the ability to omit a TA from the entries list not 
sufficient for this?

 

Nits

In 2.2, a trust anchor typically also has a name in addition to a key.

 

In last bullet of section 3, ‘all’ seems like an either an overstatement or a 
tautology. Maybe "...assured that relying parties with compatible trust stores 
will be satisfied..." or just delete.

 

In section 4, the "expected to issue" in the max_lifetime definition should be 
"expected to validate". It probably means "subscriber certificates" instead of 
"certification paths", as well.

 

Section 4.1 "all unexpired certificates" should probably be "all unexpired 
subscriber certificates."

 

In the last paragraph of 4.2, the "MAY repurpose...after" should be "MUST NOT 
repurpose...before" relative to expiration of all references. If label reuse is 
the primary motivation for expiration, is expiration worth the complexity?

 

In section 5, the entry sorting language should indicate ascending or 
descending.

 

In 6.2, it may be worth adding "and MUST use one of the trust anchor stores 
indicated in the trust_expressions extension to validate the result."

 

Section 6.5 should define "desired subset." It should also relate "trust store 
version" and "specified version" in steps 2 and 3 to the actual trust store 
that a relying party is using. It seems a bit odd not to factor in comparison 
of manifest contents against the trust store used for path validation when 
preparing the excluded_labels list.

 

As noted above, the last sentence of the security considerations section 
doesn't seem necessary.

 

In Appendix A, the type field may be better as a group socket than text. Do you 
intend to make Appendix A normative at some point?

 

From: TLS <tls-boun...@ietf.org> on behalf of David Benjamin 
<david...@chromium.org>
Date: Thursday, October 19, 2023 at 11:38 AM
To: "<tls@ietf.org>" <tls@ietf.org>
Cc: Devon O'Brien <asymmet...@google.com>, <b...@chromium.org>
Subject: [TLS] Fwd: New Version Notification for 
draft-davidben-tls-trust-expr-00.txt

 

Hi all,

We just published a document on certificate negotiation. It's a TLS extension, 
which allows the client to communicate which trust anchors it supports, 
primarily focused on use cases like the Web PKI where trust stores are fairly 
large. There is also a supporting ACME extension, to allow CAs to provision 
multiple certificate chains on a server, with enough metadata to match against 
what the client sends. (It also works in the other direction for client 
certificates.)

The hope is this can build towards a more agile and flexible PKI. In 
particular, the Use Cases section of the document details some scenarios (e.g. 
root rotation) that can be made much more robust with it.

It's very much a draft-00, but we're eager to hear your thoughts on it!

David, Devon, and Bob

---------- Forwarded message ---------
From: <internet-dra...@ietf.org>
Date: Thu, Oct 19, 2023 at 11:36 AM
Subject: New Version Notification for draft-davidben-tls-trust-expr-00.txt
To: Bob Beck <b...@google.com>, David Benjamin <david...@google.com>, Devon 
O'Brien <asymmet...@google.com>



A new version of Internet-Draft draft-davidben-tls-trust-expr-00.txt has been
successfully submitted by David Benjamin and posted to the
IETF repository.

Name:     draft-davidben-tls-trust-expr
Revision: 00
Title:    TLS Trust Expressions
Date:     2023-10-19
Group:    Individual Submission
Pages:    35
URL:      https://www.ietf.org/archive/id/draft-davidben-tls-trust-expr-00.txt
Status:   https://datatracker.ietf.org/doc/draft-davidben-tls-trust-expr/
HTML:     https://www.ietf.org/archive/id/draft-davidben-tls-trust-expr-00.html
HTMLized: https://datatracker.ietf.org/doc/html/draft-davidben-tls-trust-expr


Abstract:

   This document defines TLS trust expressions, a mechanism for relying
   parties to succinctly convey trusted certification authorities to
   subscribers by referencing named and versioned trust stores.  It also
   defines supporting mechanisms for subscribers to evaluate these trust
   expressions, and select one of several available certification paths
   to present.  This enables a multi-certificate deployment model, for a
   more agile and flexible PKI that can better meet security
   requirements.



The IETF Secretariat


_______________________________________________ TLS mailing list TLS@ietf.org 
https://www.ietf.org/mailman/listinfo/tls 

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to