Ryan,
I disagree with your assessment that this does not participate in the
discussion. Since you've adopted a more liberal (although
unfortunately for the rest of the document, fairly meaningless)
discussion of PKI in the abstract, this is arguably the PKI policy
management authority (NIST SP 800-32), which is referenced within RFC
3647.
The federal PKI doc has nothing to do with any of what I wrote. Not sure
why you bring it up here. It too is not an RFC, so ...
The problem with the adoption of the general term PKI is that it
leaves it ambiguous whether you're discussing a PKI operated within a
single organization or a federated PKI. A "trust store vendor" - in
this case, an entire community of suppliers being dismissed - is, in
3647 terms, the PKI participant itself that determines the which sets
of PKIs to federate with based on the evaluation of those other PKI's
CP/CPS.
Alternatively, we can use the definition from RFC 6024, and take the
view that this is a "trust anchor manager" that is the entity
responsible for managing the contents of a trust anchor store.
I can understand and appreciate hesitation to add them at this stage -
as I acknowledge, getting this document into a state that reflects
running code is a substantially larger undertaking, and rough
consensus has, from the archives at least, been a questionable part
through every major milestone -
As I tried to say other responses, this document is NOT intended to
reflect running code. It is intended to reflect the security features
and residual vulnerabilities of CT as described in 6962-bis. That is an
appropriate scope for a threat/attack analysis RFC, i.e., it is based on
a system description as provided in another RFC. When 60962-bis is
updated to reflect experience gained from deployment, this threat/attack
analysis should be updated, or become obsolete. RFC 8211 performs this
sort of analysis for CAs and repository managers in the SIDR context.
One can generate an description of cert processing based on deployed
code in a context. The recently approved SIDROPS doc
(https://datatracker.ietf.org/doc/draft-ietf-sidrops-rpki-tree-validation/)
is a good example. One could augment that description with a security
analysis. They both make reasonable Informational RFCs, but they are
different from an analysis based strictly on what is documented
standards track RFCs.
[Page 3]
> Throughout the
> remainder of this document references to certificate revocation
as a
> remedy encompass this and analogous forms of browser behavior, if
> available.
While this is located within the introduction, this seems to
setup an assumption that ‘revocation’ refers to specific
certificates or to the combination of Issuer Name and Serial
Number. This can be seen later in the document, most notably in
the contentious Section 3.4, but doesn’t reflect the practiced
capabilities of clients. This, like the most discussion preceding
this, is a result of an unclear focus as to what the Web PKI
constitutes, and whether this document views such revocations (of
SPKI) as, well, revocation. To the extent the document relies on
revocation as a remedy, it may be worthwhile to either split out
and discuss different approaches to revocation that have been
practiced - which include by SPKI, by Issuer & Serial Number, by
Subject Name and SPKI - since these seem to materially affect the
subsequent discussion of threats and remediation.
I broadened the discussion of browser revocation mechanisms to
accommodate a comment from Rich, despite the lack of any IETF
documentation on such proprietary mechanisms. I don't want to
devote more text to describing such mechanisms.
Then there's a consistency issue with 5280. CRLs and OCSP are
described as revocation mechanisms, rather than revocation itself.
agreed
Clearly, CRLs as specified by 5280 are not the only revocation
mechanism, as OCSP provided another means of revocation. If the view
is that these are the only two mechanisms, Section 3 of 5280
acknowleges that revocation may be provided by some other mechanism,
and doesn't normatively specify revocation as being Issuer and Serial.
agreed
If the view is that this threat analysis only covers CRLs and OCSP as
specific revocation mechanisms, it seems it would benefit from
clarifying that. Alternatively, if revocation is to be used in the
sense of RFC 5280, then what we're discussing here is that different
revocation mechanisms may have different tradeoffs, regardless of the
degree of IETF specification.
I have revised the text discussing revocation on page 4 as follows: "
Certificate Revocations Lists (CRLs) [RFC5280] and the Online
Certificate Status Protocol (OCSP) data [RFC6960] are the primary
certificate revocation _mechanisms_ established by IETF
standards.Browsers may make use of proprietary mechanisms to effect
revocation status checking, in lieu or in addition to the mechanisms
noted above."
I also revised the later sentence to say: " As noted above, browser
vendors may employ proprietary means of ..."
[Page 3]
> A relying party (e.g., browser) benefits from CT if it rejects a
> bogus certificate, i.e., treats it as invalid.
While understandably the introduction is trying to be brief, it
ignores the substantial primary benefit already being derived by
multiple browsers, which is the benefit to ecosystem analysis.
Whether this analysis is in assessing which CAs are responsible
for which forms of misissuance [5] or about assessing
compatibility risks, there are substantial benefits to be derived
independent of the treatment of bogus certificates.
yes, the intent in the intro is to be brief. But, there is also
the issue that "ecosystem analysis" is an activity outside the
scope of IETF standards, and it is not cited by 6962-bis as a
motivation for CT.
I disagree with this summary. Section 1 of RFC 6962-bis does not limit
the parties who might be concerned about misissuance to only
Subscribers. Paragraph 3 explicitly explores this notion of ecosystem
analysis.
Good point- paragraph 3 does say that _anyone_ concerned about
mis-issuance can monitor logs. I have the following note after the cited
sentence: " (Note that [I-D.ietf-trans-rfc6962-bis] notes that anyone
can elect to monitor logs for mis-issuance, indicating that there is a
potentially larger, unspecified set of beneficiaries.)"
It’s also ambiguous as to what the checking entails, since
verifying the entry and its correlation to the certificate can be
distinct from the verification of the inclusion proof.
The text separately discusses SCT verification and verifying a
valid log entry. The comment about checking for valid log entry
refers to fetching an inclusion proof. I have changed that text to
cite 8.1.4 in 6962-bis.
I think this is a good clarification, but the term "verifying the
entry" is still worth clarifying, because there's a distinction here
between using the API from 5.6 of 6962-bis and using 5.4 or 5.5 of
6962-bis, which is what 8.1.4 refers to.
That is, you are not "verifying a valid log entry" by using the
algorithm in 8.1.4. You're fetching an inclusion proof. The precision
here is important and semantically different.
I have revised the text to say: " If an RP _acquires and verifies an
inclusion proo_f for a certificate that claims to have been logged has a
valid log entry (8.1.4 in [I-D.ietf-trans-rfc6962-bis]), the RP probably
would have a ..."
This is similar to the issue I raised above, with "is invalid",
because it leaves ambiguous whether only the output of 8.1.3 is
considered, or if also considering 8.1.4. Note also that the execution
of 8.1.3 and 8.1.4 are different, and, for a mitigation of this
threat, both essential.
[Page 4]
> Finally, if an RP were to check logs for
> individual certificates, that would disclose to logs the
identity of
> web sites being visited by the RP, a privacy violation.
A potential issue with this construction is that it seems to miss
the existence of read-only Logs - that is, Logs that mirror the
full Merkle tree of the SCT-issuing log, and which can present
proofs without having access to the primary Log’s key material.
I don;t believe that 6962-bis describes read-only logs. As a
resiult they are not considered as part of the analysis.
They're an implementation of 6962-bis. I fail to see the requirement
that they be called out as such in it, as it's possible to have
another operating entity operate a Log (including the RP) that fully
conforms to the relevant APIs being discussed here (8.1.3 and 8.14,
presumably).
I raise this as an issue with the construction because it defines in
absolute terms that it's a privacy violation, yet there exist
privacy-preserving alternatives that fully meet what you're specifying
in the text here, without altering or changing the protocol.
Is it accurate to say that read-only logs (aka Log caches?) would
address the privacy concern only if there are a lot of them, perhaps
locally operated? Any individual Log cache could still track queries
from browsers and thus pose a potential privacy violation, right? So,
the real issue here seems to be creating Log caches that a set of users
accessing a cache can be comfortable with the cache in question. That's
a lot of detail that is not even hinted at in 6962-bis. The description
of Log operation and the Log interface both discuss submission of certs
or pre-certs, neother of which is relevant for a Log cache. If 6962-bis
anticipated Log caches, one would expect such caches to be described,
with a note that such caches offer a reduced interface (no submissions),
and that they need to be distributed in way that avoids privacy
concerns. Since NONE of that is mentioned in 6962-bis I don't think this
analysis has to presume that such read-only logs are part of the design.
I agree that 6962-bis does not preclude the creation of read-only logs,
but since 8.1.4 explicitly notes that fetching inclusion proofs from a
Log represents a possible privacy concern, I think it fair to echo that
concern here.
It’s unclear whether this is solely referring to online checking
- that is, checking for inclusion proofs at time of validation -
in which case, it seems like 6962-bis already discusses this
point in Sections 6.3 and 8.1.4, along with privacy-preserving
approaches. It’s unclear if this document is referring to
something different, then, or if it’s rejecting both the
documented alternatives and those discussed in the communities.
6.3 does not require a TLS server to send an inclusion proof. It
says that "... if the TLS server can obtain them, it SHOULD ..."
As a result, the analysis does not assume that a client will
receive an inclusion proof from a TLS server. 6.3 says that
sending inclusion proofs in the TransItemList structure helps
protect client privacy- which is an admission that client fetching
of inclusion proofs may undermine client privacy. 8.1.4 notes the
same client privacy concern. So, I don't see your point here. Are
you saying that since 6962-bis warns about client privacy concerns
and offers (but does not mandate) a way to mitigate these
concerns, that the threat analysis ought not cite this concern?
If the view is that because it is a SHOULD, it should be read in RFC
6919 terms, I can appreciate that point, although disagree. My point
is that because it's a SHOULD, consideration in a threat analysis
should be devoted to exploring both possibilities in its analysis, and
should presume that the SHOULD will be the dominant interpretation,
given RFC 2119's interpretation.
Yes, it's because 6962-bis says SHOULD, not MUST. Whenever an RFC says
SHOULD, it allows a compliant implementation to not implement the
associated requirement. It is preferable that an RFC explain the
criteria that motivated authors to make a requirement a SHOULD vs. a
MUST, but I admit that this is often not done in many RFCs.
[Page 4]
> Logging of certificates is intended to deter mis-issuance,
I think this conflates detection with deterrence. While it’s true
that detection can have a deterring effect, it seems more
accurate to reflect that the purpose is detection, as reflected
in the language choice 6962-bis.
To which places in 6962-bis are you referring?
That deter does not appear at all within 6962-bis, but within the
first paragraph of Section 1, the Introduction, it spells out the goal
of mitigation through detection.
I agree that the cited paragraph describes logs as a means for detecting
mis-issuance. But, 3.1 says " ...
it is expected that certificate issuers and subjects will bestrongly
motivated to submit them." Also, the sentence immediately before the one
you cites says: "Logging enables a Monitor to detect a bogus certificate
...." so I don't think there is much confusion here. Nonetheless, I have
revised the cited sentence to read: "Logging of certificates thus helps
to deter mis-issuance ..."
[Page 5]
> Monitors ought not trust logs that are detected misbehaving.
I mentioned this in the high-level feedback, but this notion here
about log ‘trust’ is one that deserves unpacking. Monitors have
strong incentives to continue to examine certificates from Logs,
even those that have been shown to be providing a split view. As
it relates specifically to Monitors, however, they may not trust
a Log to be a complete set of all issued certificates, but they
can certainly trust a Log to contain interesting certificates,
provided the signatures validate.
We disagree about the use of the term "trust" here, but I have
revised the text to note that "... misbehaving, although they may
elect to continue to watch such logs."
We also disagree about what Monitors ought or ought not to do, which I
think this proposed change does not adequately address. I think it is
specifically bad advice, because monitors ought to consider such logs
in the consideration of detection and misissuance. There are a host of
pragmatic reasons for this, and I spelled out some above, but one that
might be relevant is that even if a log is detected as misbehaving,
for software not receiving updates, SCTs from this log may still be
relied upon as proof of disclosure, and depending on the nature of the
misbehaviour, it's still in the interest of clients to monitor.
6962-bis does not specify Monitor behavior in the circumstances we're
discussing, so there is no definitive guuidance here, but I have deleted
the sentence in question.
[Page 6]
Figure 1
I think this figure is misleading or inaccurate, particularly
around steps 1-5. This approach manifests in some of the later
discussions around syntax checking of Logs, but as it relates to
this specific figure, misses out on the potential parties that
are performing the certificate logging. There’s no requirement,
in 6962, -bis, or as practiced, to require a CA to log 100% of
its certificates, so Steps 1-5 are more complicated. This can be
seen in existence today, as large organizations like Google and
Cloudflare perform the logging and inclusion operation
themselves, both for new and existing certificates.
As noted above, current practice that is not mandated by
6962-bisnot considered in this analysis. You are correct that
6962-bis does not require that a CA submit all certs that it
issues to be logged, but 3.1 notes that any cert not logged may be
rejected by a TLS client, and states that this provides string
motivation for a CA to log all certs destined for consumption by
such clients.
I do not believe this response adequately addresses the feedback.
Further, I do not believe the text cited supports the interpretation
being argued here, particularly since 3.1 specifically notes that any
entity can submit a certificate, and ignores the second part, which is
"and subjects" will be motivated to submit them.
It seemingly ignores the motivations in Section 6, which also notes
that a risk is entailed by the CA embedding, and that other solutions
mitigate this risk.
As I said, I think this figure is misleading or inaccurate - it's only
covering part of the logging flow, which is the part with the most
risk, and the subsequent discussion seems to hinge on expecting this
is the only logging flow.
I agree that submissions to logs from other, unspecified entities is
explicitly allowed by 6962-bis, but I think this is mentioned only once.
I see one mention of the downside of relying on an SCT embedded in a
cert, in the third bullet of Section 6. If there was strong feeling
about superiority of the first two options, 6962-bis could have made
them MUSTs and the cert extension a MAY, but it didn't.
Nonetheless, the text does indicate the benefits for a Subject if it
chooses to submit it's cert to a Log, So Figure 1 will become 1a, and be
labelled " Data Exchanges Among CT System Element (CA submission)"
Figure 1b will be labelled " Figure 1b: Data Exchanges Among CT System
Elements (Subject submission)" and will show a Subject submitting cert
chains and receiving an SCT and, optionally, and STH.
[Page 7]
2. Threats
> As noted above, the goals of CT are to deter, detect, and
facilitate
> remediation of attacks that result in certificate mis-issuance
in the
> Web PKI.
I do not believe that aligns with the stated goals for CT, which
is about detection. Deterrence and remediation are important, but
in the intersection of policy and technology, it's important to
recognize that CT cannot and does not try to fix everything
related to PKI.
I hope we both agree that it would be preferable if 6962-bis
explicitly stated its goals. We both agree that detection of bogus
cert issuance is central to CT. Log entries provide the identity
of a CA that mis-issued a cert, which facilitates remediation,
e.g., when a Monitor detects a conflict with a cert of interest.
Logging deters CAs from issuing bogus certs. I'll reword the
sentence to say that the goals of CT _appear to be_.
I do not believe this addresses the comment, and I do not see how this
reply is consistent with the above remarks that rely on exact textual
references in 6962-bis or related IETF RFCs in order to be considered
for inclusion.
Your comment referred to the "stated goals of CT" but 6962-bis does a
poor job of clearly stating goals. I once posted the cited statement to
the TRANS list and asked Ben is he disagreed. He did not disagree, but
the statement didn't make it into any of the many revisions of the
document. I changed the sentence to read: " As noted above, the goals of
CT appear to be to..."
[Page 10]
> So creating a log entry for a
> fake bogus certificate marks the log as misbehaving.
Again, the terminology issues rear their head, in now we have to
consider fake-bogus and real-bogus in interpreting the scenarios.
Fake-bogus is clarified as those that haven’t been issued by the
indicated CA, but the method of that creation of a fake is
ill-defined. It seems we’re discussing “certificates whose
signatures don’t validate,” but that’s not necessarily indicative
of Log misbehaviour. As a demonstration of this, consider an
implementation that performs BER decoding of the TBSCertificate,
re-encodes it in DER, and compares the signature. If the CA has
syntactically misissued in the classic sense - that is, rather
than the document’s broader definition, focusing purely on X.509
and RFC5280’s DER-encoding of the ASN.1 - then it’s possible that
the signature is over the malformed BER-data, not the (client
re-encoded) DER-data. That the Log accepted the signature over
the raw value of the TBSCertificate is not indicative of Log
misbehaviour.
The cert is broken if the signature was generated incorrectly by
the CA.
I'm afraid you missed this point.
https://www.ietf.org/mail-archive/web/pkix/current/msg33308.html
captures one such discussion, but I seem to recall (and can spend more
time digging up) older conversations in PKIX around this point.
I acknowledge that SETs can pose a problem in some cases, depending on
the SET elements. I believe that "standard" extensions in X.509 certs
don't trigger such problems. The issue you raise seems to result from an
ambiguity in the requirements imposed on Logs; 6962-bis requires that
Logs verify the cert path for a submitted chain. It allows Logs to
ignore expiration dates and revocation status, but the phrase "not fully
valid according to RFC 5280" is too ambiguous to be helpful.
Section 4.2 of 6962-bis says that a log MUST NOT accept a cert
that does not chain to am accepted trust anchor. So, if it
accepted the cert, the log acted in error (because it would have
to validate the sig in each cert during the chain verification). I
agree that this is a syntactic error by the log, in the
traditional sense, but it is also an example of a log misbehaving,
in any case.
We disagree then.
Similarly, there are CAs that have, in various ways, botched the
Signature or SPKI encoding in ways that clients understand and
compensate for - unnecessary or omitted ASN.1 NULLs are my
favorite example. That a Log understood this compatibility
behaviour and accepted the certificate is not indicative of Log
misbehaviour.
6962-bis allows a log to be sloppy about syntax checking relative
to 5280, in Section 4.2. But I interpret the initial requirement
to verify the chain of sigs to supersede the later "flexibility"
stated in 4.2. This is another example of ambiguity in 6962-bis
leading to uncertainty in analyzing residual vulnerabilities.
In the above described scenario, in all variations, the log is fully
conforming to (differing) interpretations of RFC 5280, either with
respect to Section 4.2 or with respect to Section 5.1.1.3. These
aren't minor wording qubbles - these are positions that major
(non-interoperable) implementations have staked hills on to argue for
or against various interpretations. And while there's a 'common sense'
interpretation, it's one that I think is consistent with 6962-bis
Section 5.1, which permits logging even if poorly encoded.
I forgot about the "bad certificate" error message. This further
confuses the question what a Log MUST do when processing a submission.
If a Log computed the hash value of each cert, as delivered, w/o
checking or re-encoding to DER, then the ambiguity re SETs might cease.
But, under that ssumption, the "bad certificate" error would never be
returned- it error clearly indicates DER checking by a Log. The "bad
submission" error message says that the cert or pre-cxert is not "valid"
without any cleart indication of what constitutes validity (seperate
from a bad cert chain, which is a seperate error message. I'd like to
understand how to interpret these error messages, and the text in 4.2,
in a consistent fashion.
In the meantime, I have changed the sentence you cited to read: " So
creating a log entry for a fake bogus certificate _suggests that the log
may be misbehaving._
[Page 11]
3.1.2. Certificate not logged
> If the CA does not submit a pre-certificate to a log, whether a log
> is benign or misbehaving does not matter.
This is problematic in that the assumption here is that CAs are
the ones performing the logging. Throughout the document, the
description of CAs performing logging ignores the ability of
Subscribers and certificate holders to perform the logging at
their discretion, up to and including seconds before performing
the TLS handshake. As a consequence, it misses an entire class of
attacks that can arise when an inclusion proof for an SCT can not
be obtained to an STH, because the SCT is newer than the
published STH.
I believe this is another instance of a compelling reason to
re-evaluate the ontology of attacks and to not attempt to
classify them using a hierarchy.
Although 6962-bis does allow any entity to log a cert, the focus
of the doc is very much on CA-based logging, as evidenced by
pre-cert logging. No changes made.
Thanks. I'll stop my analsysis at this point, as I think it
fundamentally alters the subsequent conclusions that if we're not able
to reach consensus on this point, it does not seem that there's much
value on proceeding further. The entire analysis and threat model is
undermined, in my view, to the point that it no longer accurately
reflects 6962-bis as specified, but rather, an unspecified profile of it.
Ad noted above, Figure 1 is being replicated and modified to address the
omission of Subjects as submitters. I have changed the sentence in 3.2.1
to read: " If the CA (or Subject) does not submit..."
I do not agree with your contention that the analysis is based on an
unspecified profile of 6962-bis. 6962-bis has a lot of ambiguities, some
of which we have discussed above. The analysis tries to explore the
vulnerabilies that can arise because of these ambiguities, not as a
result of implementation errors, but because implementations of CT
system elements could comply with 6962-bis and not behave in the fashion
that one might hope.
Steve
_______________________________________________
Trans mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/trans