Re: Path Discovery Test 4.1.1.3
Steven Madwin wrote:
> Is it normal practice when you issue two certificates for separate
> purposes (one that signs the end-entity and the other for signing the
> CRL) to have identical Key Usage? I would think that if you are
> issuing two certificates (especially if they have identical DNs) that
> they should have unique Key Usage values. I'd appreciate to hear what
> anyone thinks on the subject.
Steve,
At the moment, I think it is very rare for a CA to generate two
different key pairs with one only being used to sign certificates and
the other only being used to sign CRLs. But if a CA were to do so, then
I think that the certificate certifying the certificate verification key
should only assert keyCertSign and the certificate certifying the CRL
signing key should only assert cRLSign. One reason that a CA may wish
to use two different keys is if the certificate signing module is kept
off-line and is only turned on infrequently but there is still a need to
issue CRLs regularly. By using two different keys are only asserting
the necessary keyUsage bits in each certificate, an attacker who
compromises the on-line CRL signing key cannot generate bogus certificates.
Currently, the most likely reason that a scenario such as the one in
test 4.1.1.3 would occur is if the subordinate CA had performed a key
rollover and is using its new key pair to sign newly generated
certificates and CRLs, but there are still valid certificates that were
signed with the old key pair. The certificate issued by the superior CA
to the subordinate CA's old public key would assert both keyCertSign and
cRLSign since the old key was being used for both purposes at the time
the certificate was issued and the certificate issued to the new public
key would assert both key usages since the new key is currently being
used for both purposes.
Test 4.1.1.3 could have been designed to mimic the case in which a CA
uses different keys pairs for certificate and CRL signing rather than
mimicking key rollover, but I was worried that that would make path
discovery more complicated. If the certificate with the subject public
key used to verify the CRL signature only asserted the cRLSign bit then
that certificate should either not include a basicConstraints extension
or if the extension were present, the cA flag should be set to false
since X.509 states that the cA flag "indicates if the certified public
key may be used to verify certificate signatures." However, in order
for a version 3 certificate to be stored in the cACertificate or
crossCertificatePair attribute of the directory, it must include a
basicConstraints extension with cA set to TRUE. So, a certificate that
asserted only cRLSign would need to be stored in the userCertificate
attribute of the directory. While there is nothing technically wrong
with this, I would guess that many applications would be looking for the
certificate in the cACertificate and/or crossCertificatePair
attributes. I will likely include a test at the Intermediate or
Advanced level in which the certificate holding the key needed to verify
the CRL signature is stored in the userCertificate attribute, but I did
not think such a test belonged at the Rudimentary or Basic level, so I
got around the problem by that any certificate that asserted cRLSign
also asserted keyCertSign (and included a basicConstraints extension
with cA set to TRUE).
Dave
Date Index |
Thread Index |
Problems or questions? Contact list-master@nist.gov