Here is a slightly edited version of what a lead security developer 
at Microsoft told me with regard to EKUs and path processing.

To the core issue. Does EKU need to be in the root certificate. The 
answer is: no.

Every root certificate is stored with some properties that are not 
cryptographically bound to the certificate, but are protected by 
other mechanisms that protect the integrity of the root store. A root 
may have EKU assigned to it either through an EKU extension, or by 
properties in the root store. The properties in the root store are 
added by Microsoft upon acceptance of the root for one or more 
purposes.

These EKU properties are used to ensure that e.g. only roots approved 
for code signing can be used to validate code integrity of software 
components.

For this to work, Microsoft path validation also checks that the end 
certificate is consistent with the EKU property of the root. This 
part adds to X.509 and rfc 3280bis. A certificate is considered 
consistent with the root EKU if each CA certificate in the path 
either has an absent EKU extension or express an EKU consistent with 
the intended usage. The end certificate is treated with respect to 
EKU exactly according to the standard.

When our path validation algorithm checks for EKU consistency we 
first determine what EKU's that are valid for a root certificate.

The EKU's valid for a certificates is the intersection of EKU's in 
the root and EKU's set as root parameters. Empty parameters or absent 
EKU extension counts as Any.

So:
If a Root contains EKU A, and parameters express EKU B, then this 
root is not valid for any EKU at all.
If the Root express EKU A and B and Parameters express EKU B, the 
root is valid for EKU B only.
If the Root express EKU B and no parameters are set, the root is 
valid for EKU B still

The normal case is that the root certificate does not have any EKU 
extension and that all EKU's are expressed as parameters set by 
Microsoft.

Microsoft chain validation honor extensions in roots an process them 
if they have any relevance for path processing. Technically you can 
see this as an extended validation process where we expand the inputs 
to the path validation algorithm. This results in path validation 
that is further constrained from what is specified in rfc3280. It is 
specifically allowed in rfc3280 section 6 to further constrain path 
validation from the standard algorithm.

As I said before, Microsoft EKU processing is expanding on the 
standard in a way that does not break the standard, but do indeed 
further constrain it. The important thing here is that we do not 
require EKU's in roots, but if they are present, we do honor them and 
do not validate end certificates with conflicting EKU under such root.
_______________________________________________
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to