Subject: RE: Absent keyUsage in certificates

From: "Stefan Santesson" <[email-masked]>
Date: Tue, 31 May 2005 09:58:07 +0100

I'm not sure I get the problem or what has to be fixed.

This extension defines the use of the public key in the certificate. So
obviously, in absence of this extension the usage is simply undefined in
the context of this extension.

The use of the public key may however still be constrained by other
means, such as certificate policy, EKU, Basic Constraints etc. So it is
not correct to define that absent key usage extension = all usages. 

The key usage extension is already required for CA certs.

/Stefan

> -----Original Message-----
> From: [email-masked]
[mailto:[email-masked]]
> On Behalf Of Peter Gutmann
> Sent: den 30 maj 2005 18:31
> To: [email-masked]; [email-masked]
> Subject: Re: Absent keyUsage in certificates
> 
> 
> Sam Roberts <[email-masked]> writes:
> 
> >I agree that allow-all or deny-all is sensible, and special-casing
two of
> the
> >bits would be weird, but isn't allow-all what is specified now?
> 
> Nope.  See below.
> 
> >This interpretation is based on the validation rules, section 6.1.4,
rule
> >(n):
> >
> >  If a key usage extension is present, verify that the keyCertSign
bit
> >  is set.
> 
> Oh, section 6 contradicts section 4 in a number of places, I take
section
> 4 as
> definitive since it specifies the intent of the spec whereas section 6
> only
> contains an attempt at implementing that intent.
> 
> (Another proposed improvement for bride-of-3280, indicate which of
section
> 4
>  or 6 is definitive in the case of conflict).
> 
> >I can't see anything that says that absence of Key Usage should
trigger
> chain
> >validation failure.
> 
> The exact text I quoted earlier, i.e:
> 
>   Conforming CAs MUST include this extension in certificates that
contain
>   public keys that are used to validate digital signatures on other
public
> key
>   certificates or CRLs.
> 
> >Its a long RFC, an you point to the text you are "squinting sideways"
at?
> 
> The keyUsage text, which covers the use of keyUsage in a very obtuse
way.
> What the above is trying to say in a very roundabout way is:
> 
>   CA certificates must include a keyUsage extension with keyCertSign
or
>   crlSign bits set as appropriate.
> 
> >Why MUST an end-entity cert include a Key Usage, not including it is
a
> good
> >way of specifying allow-all. You want to forbid allow-all?
> 
> No, I want to make it explicit.  As your message shows, at least one
PKIX
> member (not to mention an unknown but significant number of non-PKIX
> people)
> find the current text/usage quite confusing :-).  Since virtually all
CAs
> already include keyUsage, explicitly requiring it would fix the
problem at
> virtually zero cost to implementors.
> 
> Peter.

---

From: "Stefan Santesson" <[email-masked]>
Date: Tue, 31 May 2005 14:05:01 +0100

Peter,

> >In fact, many many companies and oragnizations have demanded the
> acceptance
> >and usage by applications EE certs with this extension absent to
indicate
> all
> >purposes.
> 
> All purposes except cert/CRL signing, you mean.  Or do they really
want to
> use them for all purposes, including cert/CRL signing/verification?

All purposes that is consistent with the rest of the certificate. Since
Basic Constraints MUST be present in CA certificates, this automatically
excludes CRL/Cert signing for EE certs.

Stefan Santesson
Program Manager, Standards Liaison
Windows Security

> Sent: den 31 maj 2005 10:57
> To: David Cross; [email-masked]; [email-masked]
> Subject: RE: Absent keyUsage in certificates
> 
> 
> "David Cross" <[email-masked]> writes:
> 
> >I agree for CA certificates, the Key Usage extension MUST be
asserted.
> >However, in client (end entity) certificates, this is extremely
> >disadvantageous as it makes deployments and future application
> consumption
> >difficult.
> 
> In what way?  Why can't you just set all the flags that make sense
(e.g.
> all
> encryption and signing flags for an RSA key)?  At the moment the few
certs
> I've seen with keyUsage absent seem to be more an indication of CA
error
> than
> an intent to allow them to be used for any purpose (e.g. ones that
have no
> X.509 keyUsage but do have a Netscape keyUsage that doesn't match an
all-
> purpose usage, or ones where the CA, when questioned, admitted that
that
> wasn't at all what they'd intended).  Making keyUsage mandatory
everywhere
> would make the CA's intent explicit.
> 
> >In fact, many many companies and oragnizations have demanded the
> acceptance
> >and usage by applications EE certs with this extension absent to
indicate
> all
> >purposes.
> 
> All purposes except cert/CRL signing, you mean.  Or do they really
want to
> use them for all purposes, including cert/CRL signing/verification?
> 
> Peter.

---

From: "David Cross" <[email-masked]>
Date: Tue, 31 May 2005 16:31:08 -0700

Sorry for delayed reply, I am travelling.  Yes, you are correct, they
don't want to use EE certs for CRL or cetr signing which also require
basic constraints to be set.  But many companies don't want to
anticipate the purpose when they issue a 5 year smartcard, etc. 

David B. Cross 

-----Original Message-----
From: [email-masked] [mailto:[email-masked]]
On Behalf Of Peter Gutmann
Sent: Tuesday, May 31, 2005 1:57 AM
To: David Cross; [email-masked]; [email-masked]
Subject: RE: Absent keyUsage in certificates

"David Cross" <[email-masked]> writes:

>I agree for CA certificates, the Key Usage extension MUST be asserted.
>consumption difficult.

In what way?  Why can't you just set all the flags that make sense (e.g.
all encryption and signing flags for an RSA key)?  At the moment the few
certs I've seen with keyUsage absent seem to be more an indication of CA
error than an intent to allow them to be used for any purpose (e.g. ones
that have no
X.509 keyUsage but do have a Netscape keyUsage that doesn't match an
all- purpose usage, or ones where the CA, when questioned, admitted that
that wasn't at all what they'd intended).  Making keyUsage mandatory
everywhere would make the CA's intent explicit.

>acceptance and usage by applications EE certs with this extension 
>absent to indicate all purposes.

All purposes except cert/CRL signing, you mean.  Or do they really want
to use them for all purposes, including cert/CRL signing/verification?

Peter.