On 11/11/2016 02:42, Peter Bowen wrote:
> Given that there is a lack of clarity on when the CABF BRs apply, and
> that applicability of the BRs is outside the scope of the BRs, I
> propose the following text to clarify and help CAs understand the
> expectations of operating a publicly trusted CA.
>
> Thanks,
> Peter
>
As phrased, I assume this is intended as something that might become a
CA/B forum document rather than a Mozilla specific document.
Could some of this be shortened by reference to existing BR documents,
thus avoiding needless redundancy and risk of inconsistency?
> Requirements for a CA in the WebPKI
>
>
> The WebPKI is a loosely defined group of Certification Authorities
> which are trusted to issue certificates asserting control of
> identifiers bound to and scoped by the ICANN/PTI operated DNS root.
> The WebPKI may also provide identity certificates asserting that the
> holder can act on behalf of natural persons and legal entities.
>
>
> The WebPKI is based on certificate as described in RFC 5280. It is
> inspired by ITU-T X.500 series standards but does not always comply
> with the X.500 standards. In particular, WebPKI acknowledges and
> accepts that the Directory Information Tree does not exist and
> therefore focused on properties of subjects rather than their
> relationships. Therefore Distinguished Names, while being Sequences
> of Relative Distinguished Names (RDNs), are treated as an unordered
> Set of RDNs and different natural persons or legal entities may have
> the same Distinguished Name if the described properties of the persons
> or entities are the same.
>
>
> In order to provide assurance to parties relying upon these
> certificates, there are minimal interoperability requirements for CAs
> in the WebPKI.
>
>
> Definitions:
>
>
> Certification Authority (CA) - a logical entity which uses its private
> key to sign certificates.
>
A single organization will usually operate more than one logical CA
entity, such as one or more root CAs and one or more intermediary CAs.
>
> Certificate Authority Key Pair - a set cryptographic keys, usable with
> an asymmetric key cryptographic algorithm, consisting of a CA private
> key and a CA public key.
>
>
> Certification Authority Operator (CAO) - a natural person or legal
> entity which has control of and is responsible for the use of the CA
> private key.
>
>
> CA-Certificate - a Compliant Certificate with a Basic Constraints
> extension with a value of true in the cA component
>
>
> Self-signed Certificate - a CA Certificate where the Issuer and
> Subject Distinguished Names are identical and where the signature can
> be verified by the Subject Public Key Info in the certificate
>
Change to "Self-signed CA Certificate" (to distinguish from self-signed
end entity certificate, which need not be mentioned in the text, but
which do exist outside the scope of this document).
>
> Cross-Certificate - a CA Certificate where the Issuer and Subject
> Distinguished Names are not the same
>
>
Change to "Intermediary CA Certificate" for consistency with common
usage of the terminology. Also add
"Cross-Certificate - an Intermediary CA Certificate whose Subject and
public key is the same as that of some Self-signed CA Certificate
in the WebPKI, regardless if that Self-signed CA Certificate has the
same CAO or not."
> End-entity Certificate - a Compliant Certificate either with no Basic
> Constraints extension or with a value of false in the CA component
>
>
> Compliant Certificate - a Certificate as described in RFC 5280 as
> updated by RFC 6818 with the following exceptions:
>
> dNSName type GeneralNames included in a Subject Alternative Name
> extension may contain ‘*’ and ‘?’
>
> The critical attribute of extensions of type Name Constraints may be
> set to false
>
>
> Requirements:
>
>
> 1) The CA must have exactly one CA private key.
>
>
> 2) The CA must have a unique key identifier (across all known CAs).
>
>
> 3) The CA must have a unique distinguished name (across all known CAs).
>
>
> 4) The CA must have a single defined CAO at any given time.
>
>
> 5) Private keys which are CA private keys must only be used to
> generate signatures that meet the following requirements:
>
> a) The signature must be over a SHA-256, SHA-384, or SHA-512 hash
Should this be reworded to allow future stronger hash algorithms, such
as SHA-3 or non-US algorithms if and when those are otherwise accepted
by the BRs?
Should there be an exception for issuing updated OCSP certificates
and/or CRLs with historic hash algorithms previously used by the same CA
in order to support revocation checking of existing/older
certificates issued using those algorithms and checked by relying
parties incapable of checking certificate chains involving the
currently acceptable algorithms.
For example, when a relying party checks the validity of a time stamped
e-mail or code signature made in 2014 using an SHA-1 certificate
chaining to the CA in question, such a relying party may make OCSP
and/or CRL queries to the CA expecting the OCSP replies and/or CRL to
be signed using SHA-1 using a chain of SHA-1 certificates leading to
the original issuing CA. Such a requirement might be met with
reasonable protection of the modern PKI by:
- Signing SHA-1 CRLs with reasonably long lifetimes (e.g. 1 month) and
randomized values (timestamps, revocations of non-existing serial
numbers) at both ends of the CRL.
- Issuing very few SHA-1 OCSP signing certificates with 1 year or
longer validity, then using those to sign both CRL-derived canned
SHA-1 OCSP responses and negative OCSP responses for queries about
never issued certificates and/or multiple actual certificates.
Securing the SHA-1 OCSP responders (at URLs listed in the previously
issued SHA-1 certificates) against SHA-1 attacks is left as an
exercise for the CA.
>
> b) The data being signed must be one of the following:
>
> - Self-signed Certificate
>
> - Cross-Certificate
>
> - End-entity Certificate
>
> - Certificate Revocation Lists (as defined in RFC 5280)
>
> - OCSP response (as defined in RFC 6960)
>
> - Precertificate (as defined in draft-ietf-trans-rfc6962-bis)
>
> c) Data that does not meet the above requirements must not be signed
>
>
> 6) CA private keys must meet one of the following requirements:
>
> a) RSA keys with p and q each being at least 1024 bits long and an odd
> value for the exponent e
>
> b) DSA keys with p being at least 2048 bits long and q being at least
> 224 bits long
>
> c) EC keys on the NIST P-256, P-384, or P-521 curves
Again, should future algorithm options be automatically accepted, if
and when those are added to other parts of the BRs?
>
>
> 7) End-entity Certificates must include an Extended Key Usage
> extension if one of the following is true:
>
> - The Certificate does not include a Key Usage extension
>
> - The Key Usage Extension includes Digital Signature
>
> - The subject public key info contains a RSA key and the the key usage
> extension includes Key Encipherment
>
> - The subject public key info contains a EC key and the key usage
> extension includes Key Agreement
>
Maybe this should not be conditional on the algorithm, only the Key
Usage extension. That way the text becomes applicable to any future
accepted algorithms too.
>
> 8) If the Extended Key Usage extension in an End-Entity certificate
> contains either the id-kp-serverAuth key purpose id or the special
> KeyPurposeId anyExtendedKeyUsage, or both, then the CA must follow the
> Baseline Requirements for publicly trusted certificates when issuing
> the certificate
>
>
> 9) If the Extended Key Usage extension in an End-Entity certificate
> contains either the id-kp-codeSigning key purpose id or the special
> KeyPurposeId anyExtendedKeyUsage, or both, then the CA must follow the
> Minimum Requirements for the Issuance and Management of
> Publicly-Trusted Code Signing Certificates when issuing the
> certificate
This number 9 obviously does not apply to Mozilla after they stopped
caring about code signing. But it still applies to other CA/B forum
members.
>
>
> 10) If the Extended Key Usage extension in an End-Entity certificate
> contains either the id-kp-emailProtection key purpose id or the
> special KeyPurposeId anyExtendedKeyUsage, or both, then the CA must:
>
> a) Ensure the End-Entity certificates follows the S/MIME Certificate
> Profile: Minimum
>
> b) take reasonable measures to verify that the entity submitting the
> request controls the email account associated with the email address
> referenced in the certificate or has been authorized by the email
> account holder to act on the account holder’s behalf
>
>
>
> 11) If the Subject Distinguished Name of an End-Entity certificate
> contains any attributes of with the type jurisdictionCountryName (OID:
> 1.3.6.1.4.1.311.60.2.1.3), then the CAO must validate the details of
> the subject according to the Extended Validation Guidelines
>
>
> 12) The CAO must ensure that any CA that is the subject of a
> Cross-Certificate issued by the CA follows these requirements unless
> the Cross-Certificate meets the below requirements:
>
> - The Cross-Certificate contains an Extended Key Usage extension
>
> - The EKU extension does not contain either the id-kp-serverAuth key
> purpose id or the special KeyPurposeId anyExtendedKeyUsage
>
"id-kp-serverAuth, id-kp-codeSigning and/or id-kp-emailProtection" (for
consistency with numbers 9 and 10 above).
>
> 13) If the CAO designates the CA as a "Root CA", then the CA private
> key may only be used to sign End-Entity certificates when the
> End-Entity certificate contains a Key Usage Extension which has
> id-kp-OCSPSigning as the only key purpose.
>
"13 and a half) Any issued intermediary CA certificates (including
cross certificates) must include a path length basic constraint which
is as low as the intended use of its subject CA allows, and always
strictly less than any path length basic constraint on the issuing CAs
own valid certificates."
>
> 14) The CA key pair for any Root CA must be used only for Root CAs
>
This number 14 seems to prohibit the issuing of true cross certificates
between WebPKI root CAs, as is otherwise recommended when standing up a
new root CA. (Example 1: Let's Encrypt is cross signed by a CA already
in existing root stores) (Example 2: When existing CAs set up new SHA-2
only roots as part of the transition away from SHA-1, those roots were
usually cross signed by their already trusted SHA-1 roots).
Perhaps a better text would be
"1 and a half) The CA private key must not be used for any other CA or
entity, but a CA may have more than one CA Certificate for that private
key".
Enjoy
Jakob
--
Jakob Bohm, CIO, Partner, WiseMo A/S.
https://www.wisemo.com
Transformervej 29, 2860 Søborg, Denmark. Direct
+45 31 13 16 10
This public discussion message is non-binding and may contain errors.
WiseMo - Remote Service Management for PCs, Phones and Embedded