[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: cA flag and CRL issuers (was Re: Last Call: draft-ietf-pkix-new-part1-06.txt comments)
David,
Steve,
My interest is in ensuring that the PKIX Certificate and CRL Profile
is correct, consistent, and complete. If these issues are not of
interest to you, then feel free to ignore this message.
I wrote the first Internet standard on PKI (RFC 1422) almost 10 years
ago. If I didn't share the goals you cite, I would not still be
working on this stuff. I respect your desire to make this document a
good one, but I am frustrated by what I perceive as a very narrow
reading of selected portions of the previous standards in support of
your point of view re one aspect of this topic.
At 06:45 PM 5/15/01 -0400, Stephen Kent wrote:
Dave,
I provided an analysis of the evolution of CRL signing from V1 + V2
certs, to the changes you cite re V3 certs.
As far as I am concerned, v1 and v2 is irrelevant. Extensions did
not exist prior to v3, so neither v1 nor v2 could have included any
requirements with respect to the proper setting of the cA bit in the
basicConstraints extension.
I cite the previous versions only because they establish context for
v3. Note that ITU has a strong tradition of not making changes that
are not backward compatible. Evidence of that abounds. Thus, it is
appropriate to interpret each revised version of an ITU standard in
such a context.
>You have chosen to ignore large parts of this analysis, and focus
on text in the current version of X.509 that emphasizes syntactic
details but not the larger semantic context.
We are discussing the cA bit. I have quoted the text from X.509 that
provides the semantics for the cA bit numerous times. You have
chosen to ignore this text.
As I noted in my response to Dave Kemp, you are arguing like a lawyer
who tries to build a case around one fragment of a law, ignoring the
legislative history that expresses the intent of the lawmakers.
Sharon's message several weeks ago clearly stated that intent.
>You have not adressed the fact that both X.509 and RFC 2459 make
repeated references to "authorities" or CAs re CRL issuance. You
have received feedback from Sharon, and I think several of the 2459
authors have weighed in on this topic during the multi-week debate.
I see no point in continuing the discussion.
Based on the discussions that have occurred in this thread it seems
to me that there are a number of issues in X.509 and PKIX that need
to be resolved:
1) Who can issue CRLs?
a) There seems to be consensus that it is acceptable for an
entity that does
not sign certificates to sign CRLs.
b) There has been suggestion that the standards only allow
for authorities to issue CRLs.
It's more than a suggestion; it is a well-documented intent of the
authors' of the standards in question.
c) X.509 defines an authority as "[a]n entity, responsible
for the issuance of certificates.
Two types are defined in this Specification;
certification authority which issues public-key
certificates and attribute authority which issues
attribute certificates."
X.509 similarly defines an CA as "An authority trusted
by one or more users to create and
assign public-key certificates. Optionally the
certification authority may create the users’ keys."
An attribute authority is defined to be "[a]n authority
which assigns privileges by issuing
attribute certificates".
So, if we wish to allow entities to sign CRLs but not
certificates, we either need to allow for entities
other than authorities to issue CRLs or we need to redefine the
terms CA, AA, and authority to include
include entities that do not issue certificates.
One might be able to retain the definitions of CA and AA and add a
new authority, but I think it probably would be clearer to refine the
CA and AA definitions to make it clear that these entities may
explicitly authorize another, newly named authority type, to issue
just CRLs.
2) In which directory attributes should certificates that are issued
to subjects that are CAs be placed?
a) RFC 2587 states that certificates issued to end entities
must be placed in the userCertificate
attribute and that certificates issued to CAs must be
placed in the cACertificate and/or
crossCertificatePair attributes (with specific rules on
when each of these attributes is to
be populated).
b) RFC 2587 also states that "none of the ... CA
certificates shall include a basicConstraints
extension with the cA value set to FALSE".
c) There has been no consensus that the cA value in
basicConstraints must be set to TRUE
whenever the certificate subject is a CA. This lack of
consensus is particularly the case
when the certificate contains a keyUsage extension with
neither the keyCertSign nor the
cRLSign bit set. (I believe that Tim Polk has proposed
changing the standards to require
the cA value to be set to TRUE whenever the subject is
a CA, but there has been no
consensus that such a change should be made).
agreed, this is still unresolved.
So, either we need to change X.509 and PKIX to state that the
cA bit in basicConstraints indicates
whether the certificate subject is a CA or LDAP schema needs to
be clarified to clearly indicate in
which attribute(s) certificates issued to CAs should be placed
when basicConstraints is present but
cA is set to FALSE (e.g., if the subject public key is used to
sign CMP transactions, but not to sign
certificates or CRLs).
This is a valid concern, relevant to how we decide the CA flag issue.
Have we adequately addressed the problem of where to place the cert
used to verify a CRL under the circumstances that we're exploring?
What does the cA bit in basicConstraints mean?
As a result of the changes from new-part1-05 to new-part1-06,
the text in the PKIX profile describing
the cA bit is contradictory. It states: "The cA bit indicates
if the certified public key may be used to
verify signatures on other certificates. If the cA bit is
asserted, then either the keyCertSign bit or the
cRLSign bit in the key usage extension (see 4.2.1.3) MUST also
be asserted."
The first sentence, which is essentially copied from X.509,
states that the bit indicates whether the
subject public key may be used to verify signatures on
certificates. The next sentence, however,
seems to contradict this by stating that the cA bit may be set
to TRUE even if the subject public key
may not be used to verify signatures on certificates (if the
subject public key may be used to verify
signatures on CRLs).
yes, the text in question needs to be made consistent. one could do
so in several ways, one of which would be to change the definition of
the CA flag.
Of course, if there were a requirement to only set the cRLSign
bit in KeyUsage if the keyCertSign bit
is also set, then there would be no contradiction. If this were
the case, then the cA bit really would
indicate is the subject public key may be used to verify
signatures on certificates. However, there has
certainly been agreement that it should be acceptable to
specify that a key may be used to verify
signatures on CRLs but not certificates. So, we must either
revert to the new-part1-05 text which
clearly ties the cA bit to the keyCertSign bit, or we must
redefine the cA bit in both X.509 and PKIX.
yes, there is consensus that we want to be able to have a key that is
used to verify CRLs but not certs.
There may be other issues that I am not recalling at the moment.
We need to step back and try to view this standard from the
perspective of someone who is new to X.509. We cannot expect that
everyone who makes use of the X.509 standard will have read through
all of the messages on the PKIX mailing list. If the X.509
certificate generation and processing rules can not be unambiguously
determined from the written standards, then the standards need to be
fixed. Arguments to the effect of "the standard says X, but it
really means Y, and to see why Y is the correct interpretation
you'll need to read the relevant discussions from the PKIX mailing
list from April of 1998." Similarly, claims that people should
somehow determine the processing rules by looking at the "larger
semantic context" instead of "text in the current version of X.509
that emphasizes syntactic details" are unacceptable. If the
syntactic details are incorrect, then we should fix them. We can not
have a standard that provides incorrect "syntactic details" and then
expect people !
!
!
to correctly implement the standard based on an interpretation of
the "larger semantic context".
I agree that it should not be necessary for people to read the
background material to understand a standard, but it is quite
reasonable to expect people creating a revised version of the
standard to be cognizant of such background.
I agree that the current standards (X.509 and RFC 2459) have proven
to be somewhat ambiguous with regard to the issue of what class of
entities are allowed to issue CRLs. You and others have cited text
that, if read in isolation, supports the notion that a non-CA entity
could sign a CRL. However, this text is not consistent with the
persistent, repeated references to CAs (or CAs and AAs) as the issuer
of CRLs that appear throughout the standards in question. So, I don't
agree that the ambiguity is a great as you assert. Nonetheless, we
both agree that the goal is to move forward with a new version that
is unambiguous.
I'm looking to the 2459 editors to propose text that is consistent,
allows for separate keys for cert and CRL signing, and that makes it
clear what class of entity is authorized to sign CRLs for certs
issued by a specified CA. Given the extent of the analysis that we
have endured, it is clear that the new reader of the document should
not be expected to infer correct answer to this last question if we
merely state in the context of the definition of the CA flag that it
need not be asserted in a cert used to verify a CRL. There are too
many places where we refer to CAs (and AAs in X.509) as the entities
who sign CRLs.
I said earlier that I can live with a change to the specs, a
clarification if you prefer, that makes it explicit that we wish to
state that non-CA entities can be authorized to sign CRLs. But, I
also noted that we have to agree to make the changes throughout the
document to make this clear, and that amounts to a lot of editing.
Also, we it would be preferable to get our X.509 friends to agree to
these changes, so that we remain in synch. As I have said several
time before, I prefer the original intent as articulated by the
authors of these documents, but I can live with the change so long as
we are very explicit about that change.
Steve