*Section 3*
Much of this section also should be moved to a normative appendix, as it
describes details that are critical for interoperability, but which may
distract a reader from gaining a solid understanding of the CT design.
In this section the term log often refers to both a data structure and
to the entity responsible for operating the logging service. I suggest
using the phrase "log operator" for the second meaning, for clarity,
throughout the document.
The section begins by stating that "Anyone can submit certificates to
certificate logs for public auditing; ..." Why is this a requirement?
It's easy to see why a certificate Subject or the issuer of a
certificate may wish to get an SCT. But why is it important for anyone
to be able to do so? I think this requirement should be explained,
preferably before this point in the document. (If a certificate could be
submitted only by its issuers or by the Subject of the certificate, a
log operator might be able to require a signed challenge/response as
part of submission, and thus reject what might be a DoS attack.)
A log operator MUST return an SCT "immediately." Is there a reasonable
way to bound "immediately?" A MUST with such an imprecise description of
a requirement is worrisome.
The term "Maximum Merge Delay (MMD)" is introduced here, and cited in
four other places. But, I didn't find an indication of how a log
operator conveys to clients the MMD for a given log. What is the plan
for making this information available to clients? (Also, will this
document, or some other document, provide guidance for log operators
with respect to suitable MMD choices?) Might the MMD become part of the
STH? Also, the term "Auditor" is used here. A forward reference to the
description of what an Auditor does should be included, or a back
pointer to the definition of the term if a terminology section is added
earlier.
Again, the text uses the future optimistic tense when it says that "...
clients MUST reject certificates that do not have a valid SCT for the
end-entity certificate." (I am not concerned by the mandate for servers
to include an SCT because a CT-enabled server will send this information
only if a CT-enabled client asks during the handshake.) Also, the
wording here is confusing. How about: ""... a client MUST reject an
end-entity certificate that does not contain or is not accompanied by a
valid SCT."
Precisely which checks is a TLS client required to perform with respect
to an SCT? Presumably it checks the signature on the SCT (using the
public key for the log in question), decodes the SCT, checks the syntax,
and then performs a comparison between the certificate being verified
and the SCT signed entry. Is this correct? I think there is a need for a
subsection that describes exactly what a TLS client does with an SCT.
That text will need to deal with the simple end-entity certificate and
stand alone SCT case, as well as the more complex cases involving an SCT
computed on a pre-certificate, which may be an end-entity certificate or
an intermediate CA certificate. It also needs to discuss how a client
maps a LogID to a log pubic key, etc.
There is a sentence here about how an Auditor can verify that a
certificate was added to the log within the MMD. This probably should
appear in the discussion of what an Auditor does, either in lieu of this
mention, or in addition to it. (The description of the Auditor in 5.4 is
very, very vague, so it needs this sort of concrete functional
description. And, it might be better to use some normative text, e.g.,
make the MMD check a MUST or SHOULD.)
The final sentence/paragraph of this section says "Log operators MUST
NOT impose any conditions on retrieving or sharing data from the log."
That leaves open the question of whether a log operator can discriminate
when accepting requests to create log entries (i.e., generate an
SCT).The next section suggests that a log operator is allowed to
discriminate, i.e., it may choose to accept certificates issued by only
some TAs. A quick rationale for this asymmetric, mandated aspect of log
operator behavior would help here.
*Section 3.1 *
This section begins by repeating the opening sentence from 3, which
seems redundant. There is a mandate to "... publish the list of
acceptable root certificates ..." Section 4.7 describes the message used
by a client to acquire the list of root certificates accepted by a log.
This is not what I would call "publishing" the list; it is making it
available upon request.
The allusion to the "... union of root certificates trusted by major
browser vendors" may not be appropriate.It begs the question of which
browser vendors are "major." Also, the term "might" is not a good choice
for a standard. Each log operator is free to choose which TAs is
supports, and this document says how clients learn which TAs are
supported; that's good. If you want to say that you expect most log
operators to support the set of TAs accepted by the major browser
vendors, then this sounds like a CABF issue, and a reference to that
forum seems appropriate. You might even say that you expect the CABF to
maintain a TA list so that log operators have a central reference point,
rather than expecting each log operator to analyze the TA list in each
of the "major" browsers.
The notion of a Precertificate is introduced here. This is a fairly
complex feature of CT, which seems to make life harder for clients and
log operators. It sounds like an SCT issued for an existing certificate
is computed on the TBS part of that certificate, in its entirety. An SCT
issued from a precertificateis computed over the TBS certificate, minus
the poison extension, and minus any other SCT's that have been included
as extensions. Is this correct? It was not entirely clear (to me) from
the text. Also, if an SCT is to be included as a certificate extension,
or as an OCSP extension, it's syntax probably should to be defined in ASN.1.
I do worry that a CA may find it difficult to issue a precertificate
with a serial number and validity interval that is preserved when the
final certificate is issued, with one ort more SCT extensions. For
example, the FIPS 140-1 Level 3 HSM we used to sell assigned the serial
number to each certificate that it signed, a nice security feature that
would have enabled the DigiNotar folks to detect the attack they
suffered, and revoke the bogus certificates. If a CA uses an analogous
HSM capability, it would not be able to create a precerertificat5 and a
final certificate with the same serial number. There may be other
examples where analogous problems arise.
A quick explanation of why the specific precertificate design was
adopted might help readers understand the need for this complexity.
Also, a more precise description of what certificate fields and
extensions are signed is needed. For example, it's not completely clear
whether the serial number and validity interval for the certificate must
be the same in a precertificate vs. the final, issued certificate. (It
might be hard for some CAs to make thiswork, given that the
pre-certificate is not the final, issued certificate.)
It seems that there are two separate reasons for the precertificate
design. A CA can't know the value of the time stamp or the log operator
signature that will be in the SCT when the pre-certificate is submitted;
thus it cannot include an SCT extension in the submitted certificate.
Also, if a CA wants to include SCTs from more than one log, the problem
is even worse. This suggests that if the SCT were computed on a subset
of the fields/extensions in a certificate, it might be possible to
simplify the overall CT design.
If the SCT signature was computed on a subset of the certificate
content, a CA could submit that data to one or more log operators, and
incorporate the resulting SCTs into the final certificate. This would
avoid the need for some of the precertificate complexity.
For example, in 3.2.2 it appears that an SCT for a redacted
pre-certificate will not be compared against DNS name data in the
Subject field (vs. the SubjectAltName extension). If that represents a
safe exclusion, what other fields might be excluded and still preserve
the security properties of CT? Why not go back, examine each field of a
certificate (and the set of standard extensions), and say which ones
need to be covered by an SCT. This might allow SCTs for certificates and
precertificates to be processed uniformly (by clients). It might even do
away with the need for the poison OID, e.g., by not having a CA submit
the required data as a certificate.
The comment that another data structure might equally well be used for a
precertificate is inappropriate for a standards track document; this
document is specifying the format. But, as I noted above, it might be
good to revisit the precertificate design and ask whether an alternative
format is needed.
The text notes that the "poison" extension is included to ensure that
the precertificate is not accepted as a legitimate certificate. It would
help to explain what class of attacks arise if the precertificate lacked
that extension.
The text describing acceptable ways to sign the precertificate needs to
be revised; a certificate is never used to sign anything; the private
key corresponding to the public key in the certificate is used. You
might substitute "issued under" for "signed with" to fix this problem.
The text in this subsection says that a log MAY accept certificates that
do not meet some X.509/PKIX validation criteria, to accommodate "...
quirks of CA certificate-issuing software." First, it's not clear if the
provided list of quirks is intended to be complete, or if the list is
merely illustrative. Second, is accommodating broken CA software
something that we want to codify in a standards track RFC? Finally, if
different log operators adopt different policies with respect to what is
and is not checked in a submitted (pre-) certificate, life becomes
confusing for submitters. Specifically, a CA or certificate Subject may
receive an SCT from one log operator, but be rejected by another because
the latter was more stringent in its checking. That sort of inconsistent
behavior is something we ought not encourage in a standard.
The parenthetical comment about self-signed certificates and DANE
suggests that the rationale for their exclusion is "spam." It would be
good nice to discuss the rationale for excluding DANE certificates in
greater depth. Also, since the document already said that a log operator
publishes the list of root CAs for which it is willing to create log
entries, it would appear that self-signed certificates are already
excluded on that basis. Please clarify.
In the log entry format discussion, the following sentence appears:
"Future revisions of this protocol version may add new LogEntryType
values." I presume this should say that "new versions of the protocol
may add ..." One ought not revise an existing protocol version to add
new stuff, right?
The end of this subsection describes the precertificate chain, and says
that the final certificate in the chain MUST be a root certificate
accepted by the log. But at the beginning of this subsection the text
said: "The root certificate itself MAY be
omitted from the chain submitted to the log server." Please reconcile
these two statements.
The text notes that a Log operator may limit the length of the chains it
accepts. I agree with Russ that this comment ought to be normative,
e.g., a SHOULD.I suggest this limit become part of the data returned by
the Retrieve Accepted Root Certificates message (perhaps renamed)? Any
entity submitting a certificate chain would presumably want to fetch
this information before submission, to avoid wasting time.
_______________________________________________
Trans mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/trans