[cabfpub] Ballot 188 - Clarify use of term "CA" in Baseline Requirements

Steve Medin Steve_Medin at symantec.com
Wed Mar 1 18:08:16 UTC 2017


Symantec votes NO. We appreciate both the original effort and the issues 
raised below.





From: Public [mailto:public-bounces at cabforum.org] On Behalf Of Ryan Sleevi via 
Public
Sent: Friday, February 24, 2017 5:29 PM
To: CA/Browser Forum Public Discussion List <public at cabforum.org>
Cc: Ryan Sleevi <sleevi at google.com>
Subject: Re: [cabfpub] Ballot 188 - Clarify use of term "CA" in Baseline 
Requirements



Apologies for this late batch of feedback; Google is continuing to discover 
new details related to various misissuances by CAs that is otherwise occupying 
significant time.



I have some concerns with some of these provisions, even if I think on the 
whole, the sum is certainly where we desire to see things. Given that voting 
has now begun, I'm hoping to gather feedback on how a secondary ballot might 
correct these matters, if indeed these concerns are valid, prior to voting. 
Otherwise, we will need to carefully evaluate whether the risk of these issues 
exceeds the value the overall ballot provides.



That said, I appreciate the folks who have driven this ballot to this period, 
as it helps make sure we prioritize and provide the actionable feedback that 
might make it easier to support this or a future ballot, as below:



On Thu, Feb 16, 2017 at 11:08 AM, Ben Wilson via Public <public at cabforum.org 
<mailto:public at cabforum.org> > wrote:

*       Insert a new definition for "Externally Operated Subordinate CA" as: 
"A third party Subordinate CA Operator, not the Root CA Operator or its 
Affiliate, that is in possession or control of the Private Key associated with 
the Subordinate CA Certificate."

*       Insert a new definition for "Internally Operated Subordinate CA" as: 
"A Subordinate CA Operator, operated by a Root CA Operator or its Affiliate, 
that is in possession or control of the Private Key associated with the 
Subordinate CA Certificate."



I think this is a potentially problematic definition, in that it relates to 
the scope of the operations of the audit, as well as matters below that I 
highlight. I'm hoping the proposers and drafters can clarify (or link to 
previous discussions) as to the reason in which "or its Affiliate" was 
introduced into these definitions, or to highlight where it was already a 
natural and existing part of these definitions.



In Section 4.9.1.2 (Reasons for Revoking a Subordinate CA Certificate)


Replace with:

The Issuing CA SHALL revoke a Subordinate CA Certificate within seven (7) days 
if one or more of the following occurs:

1.      The Externally Operated Subordinate CA requests revocation in writing;
2.      The Externally Operated Subordinate CA notifies the Issuing CA that 
the original certificate request was not authorized and does not retroactively 
grant authorization;



Can you highlight/explain why this was limited to "Externally Operated"? I 
cannot see why these reasonings don't apply to Internally Operated Subordinate 
CAs as well, due to the above introduction of "or its Affiliate".



5.      The Issuing CA is made aware that the Subordinate CA Certificate was 
not issued in accordance with, or that the Externally Operated Subordinate CA 
has not complied with these Requirements or the applicable Certificate Policy 
or Certification Practice Statement;



This change seems problematic in that it suggests that revocation is not 
required for Internally Operated Subordinate CAs to comply with the 
Requirements or the applicable Certificate Policy or Certification Practice 
Statement.



Can you clarify where the equivalent provision might already exist, or if this 
is adopted, where it would exist in the new document?



In Section 4.9.9 (On-line revocation/status checking availability)


Replace with:

OCSP responses MUST conform to RFC6960 and/or RFC5019. OCSP responses MUST 
either:

1.      Be signed by the Private Key associated with the Root CA Certificate 
or the Subordinate CA Certificate that issued the Certificates whose 
revocation status is being checked, or
2.      Be signed by an OCSP Responder whose Certificate is issued by the Root 
CA Certificate or Subordinate CA Certificate that issued the Certificate whose 
revocation status is being checked.

In the latter case, the OCSP signing Certificate MUST contain an extension of 
type id-pkix-ocsp-nocheck, as defined by RFC6960.



One potential problem with this change is that it removes the association of 
subject naming which previously existed. That is, I'm wondering whether or not 
this opens the opportunity for an OCSP response to be signed by the same key, 
but to present a different byName ResponderID within the ResponseData of the 
BasicOCSPResponse. The language present in 6960 4.2.2.3 states "The purpose of 
the ResponderID information is to allow clients to find the certificate used 
to sign a signed OCSP response.  Therefore, the information MUST correspond to 
the certificate that was used to sign the response.", but the change from 
"signed by the CA" to "signed by the Private Key" arguably leaves it ambiguous 
as to the associated certificate used to sign a signed OCSP response.



Put differently (since I understand this is subtle)



Imagine Private Key A is associated with Certificate 1 and Certificate 2. 
Certificate 1's associated Issuer Name is "Foo", Certificate 2's associated 
Issuer Name is "Bar". At present, I do not believe this is forbidden under the 
Baseline Requirements (or under this proposal). Under this model, it seems 
that I potentially could issue a certificate whose issuer is Certificate 1 
("Foo"), but then create an OCSP response with responderID byName of "Bar", 
and then sign with Private Key A.



Under 6960, this meets the definition that "the information MUST correspond to 
the certificate that was used to sign the response" - since Certificate 2 was 
'used' to sign the response, using Certificate 1's Private Key.



Have I missed somewhere in the intersection of this Ballot, the existing 
Baseline Requirements, and 6960 where this scenario (as insane as it is) is 
prohibited?



In Section 4.9.10 (On-line revocation checking requirements)


*       Replace the first sentence with "Each CA SHALL support an OCSP 
capability using the GET method for Certificates issued in accordance with 
these Requirements".
*       Replace the last sentence, which currently reads: "Effective 1 August 
2013, OCSP responders for CAs which are not Technically Constrained in line 
with Section 7.1.5 MUST NOT respond with a 'good' status for such 
certificates." with: "OCSP Responders for Subordinate CA Certificates that are 
Technically Constrained in accordance with Section 7.1.5 are exempt from this 
prohibition on responding "good" to OCSP requests for the status on 
Certificates that have not been issued."



This changes a MUST NOT into a SHOULD NOT, and a SHOULD NOT into a MAY, 
although I believe unintentionally.



The current MUST NOT is derived from two sentences in the existing language:

"If the OCSP responder receives a request for status of a certificate that has 
not been issued, then the responder SHOULD NOT respond with a "good" status."

"Effective 1 August 2013, OCSP responders for CAs which are not Technically 
Constrained in line with Section 7.1.5 MUST NOT respond with a "good" status 
for such certificates"



Combined, that makes it a MUST NOT for non-TCSCs, and SHOULD NOT for TCSCs.



With this new language, it becomes

"If the OCSP responder receives a request for status of a certificate that has 
not been issued, then the responder SHOULD NOT respond with a "good" status."

"OCSP Responders for Subordinate CA Certificates that are Technically 
Constrained in accordance with Section 7.1.5 are exempt from this prohibition 
on responding "good" to OCSP requests for the status on Certificates that have 
not been issued."



By removing the MUST NOT, non-existent certs from non-TCSCs fall into the 
first clause, which is SHOULD NOT.

Further, by stating 'exempt from this prohibition', for TCSCs, this moves the 
SHOULD NOT into nothingness (effectively, a 'MAY')





As per RFC 2119, "SHOULD NOT" is equivalent to "NOT RECOMMENDED (but 
allowed)", while MUST NOT (aka "SHALL NOT") means an absolute prohibition.



Was this intentional?





In Section 5.4.1 (Types of events recorded)


Replace subsections 1 and 2 in the second paragraph of so that they read:

The CA SHALL record at least the following events:

1. Private Key lifecycle management events for the Root CA Certificate or 
Subordinate CA Certificate, including:



Does this mean items A and B are removed, or was it proposed to leave them in 
place? The language is ambiguous, given the text below.




2. Certificate lifecycle management events for the Root CA Certificate, 
Subordinate CA Certificate, and Subscriber Certificates, including:

a.      Certificate requests, renewal, and re-key requests, and revocation;
b.      All verification activities stipulated in these Requirements and the 
CA's Certification Practice Statement;
c.      Date, time, phone number used, persons spoken to, and end results of 
verification telephone calls;
d.      Acceptance and rejection of certificate requests; Frequency of 
Processing Log



Was this a typo? Can you explain what "Frequency of processing log" is meant 
to be in this context?



e.      Issuance of Certificates; and
f.      Generation of Certificate Revocation Lists and OCSP entries.


In Section 6.1.1.1 (CA Key Pair Generation)


Replace the first two paragraphs with the following:

For a Key Pair generated to be associated with either (i) a Root CA 
Certificate or (ii) a Subordinate CA Certificate to be operated by an 
Externally Operated Subordinate CA, the CA SHALL:

1.      prepare and follow a Key Generation Script,
2.      have a Qualified Auditor witness the Key Pair generation process or 
record a video of the entire Key Pair generation process, and
3.      have a Qualified Auditor issue a report opining that the CA followed 
its key ceremony during its Key and Certificate generation process and the 
controls used to ensure the integrity and confidentiality of the Key Pair.

For a Key Pair generated to be associated with a Subordinate CA Certificate to 
be operated by the Root CA Operator or its Affiliates, the CA SHOULD:



Why does this not use the term Internally Operated Subordinate CA? It would 
seem that this would be semantically accurate and correspond to the (ii) above 
to completely cover the set of Sub CA Certificates.




1.      prepare and follow a Key Generation Script and
2.      have a Qualified Auditor witness the Key Pair generation process or 
record a video of the entire Key Pair generation process.

In all cases, the CA SHALL:

1.      generate the Key in a physically secured environment as described in 
the CA's Certificate Policy and/or Certification Practice Statement;
2.      generate the Key using personnel in trusted roles under the principles 
of multiple person control and split knowledge;
3.      generate the Key within cryptographic modules meeting the applicable 
technical and business requirements as disclosed in the CA's Certificate 
Policy and/or Certification Practice Statement;
4.      log its Key generation activities; and
5.      maintain effective controls to provide reasonable assurance that the 
Private Key was generated and protected in conformance with the procedures 
described in its Certificate Policy and/or Certification Practice Statement 
and (if applicable) its Key Generation Script.



This again is a subtle but important change. Under the existing language, keys 
plural is used, to indicate that it is a Key Pair - of Public and Private 
keys. The change to "the Key" leaves it ambiguous as to whether this was meant 
to be "the Key Pair", "the Public Key", or "the Private Key".



The fact that 5 specifically states Private Key, but 1-4 does not, further 
amplifies this confusion as to whether the omission was intentional.



Change the title of Section 6.1.7 as "Key usage purposes (as per X.509 v3 key 
usage field)"



It is not a field. It is an extension.



In Section 6.2.6 (Private key transfer into or from a cryptographic module)


Replace with:

If the Issuing CA generated the Private Key on behalf of an Externally 
Operated Subordinate CA, then the Issuing CA SHALL encrypt the Private Key for 
transport to the Externally Operated Subordinate CA.

If the Issuing CA becomes aware that an Externally Operated Subordinate CA's 
Private Key has been communicated to an unauthorized person or an organization 
not affiliated with the Externally Operated Subordinate CA, then the Issuing 
CA SHALL revoke all Subordinate CA Certificates that include the Public Key 
corresponding to the communicated Private Key.



Similarly, this creates the scenario where an Internally Operated Subordinate 
CA is operated with different infrastructure than the audit, at least based on 
my current understanding about the scope of the engagement not necessarily 
covering the "Affiliates" portion.



Is there a reason this was reduced in scope and/or can you highlight where the 
scope is functionally equivalent to the existing text?



In Section 7.1.5 (Name Constraints)


Replace the last paragraph with:

If the Subordinate CA Operator is not allowed to issue certificates with 
dNSNames, then the Subordinate CA Certificate MUST include a zero-length 
dNSName in excludedSubtrees. Otherwise, the Subordinate CA Certificate MUST 
include at least one dNSName in permittedSubtrees.



The preceding paragraph states "Subordinate CA Certificate is not allowed to 
issue certificates". This change introduces an asymmetry between the two. Was 
this intentional? Is it significant?



In Section 8.1 (Frequency or circumstances of assessment)


Replace the first paragraph with:

CA Certificates MUST either be (a) Technically Constrained in line with 
section 7.1.5 and be audited in line with section 8.7 only, or (b) be fully 
audited in line with all requirements of this section (8). A Certificate is 
deemed capable of being used to issue certificates for server authentication 
if it contains an X.509v3 basicConstraints extension with the CA boolean set 
to true and has no EKU, the id-kp-anyExtendedKeyUsage [RFC5280] EKU, or the 
id-kp-serverAuth [RFC5280] EKU.



Is the CA Certificate what is audited? My understanding is that the CP/CPS of 
the Organization are audited, which includes the operational security of the 
Private Key and what it signs/issues. I realize this is somewhat of a parallel 
bug to the existing text, but I'm surprised that the WG did not suggest this 
should be resolved.





In Section 8.7 (Self-Audits)


Replace the last paragraph with:

During the period in which a Technically Constrained Externally Operated 
Subordinate CA issues Certificates, the Issuing CA SHALL monitor adherence to 
the Issuing CA's Certificate Policy and/or Certification Practice Statement 
and the Externally Operated Subordinate CA's Certificate Policy and/or 
Certification Practice Statement. On at least a quarterly basis, against a 
randomly selected sample of the greater of one certificate or at least three 
percent of the Certificates issued by the Externally Operated Subordinate CA, 
during the period commencing immediately after the previous audit sample was 
taken, the CA SHALL ensure adherence to all applicable Certificate Policies 
and/or Certification Practice Statements.



Much like several other changes mentioned above, this limits the scope of the 
existing text from "internal or external" to simply "external". Thus it 
reduces the scope of examination for internally operated subordinate CA 
certificates, which may be operated by an Afilliate under a distinct CP/CPS. 
Is that fair to say?



In Section 9.6.1 (CA representations and warranties)

Replace the last paragraph with:

The Root CA Operator SHALL be responsible for the performance and warranties 
of its Externally Operated Subordinate CAs, for the Externally Operated 
Subordinate CAs' compliance with these Requirements, and for all liabilities 
and indemnification obligations of the Externally Operated Subordinate CAs 
under these Requirements, as if the Root CA Operator were the Externally 
Operated Subordinate CA issuing the Certificates.



Yet another asymmetry between the existing text that appears to introduce a 
loophole with respect to 'internally operated' subordinate CAs.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cabforum.org/pipermail/public/attachments/20170301/48b80766/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5744 bytes
Desc: not available
URL: <http://lists.cabforum.org/pipermail/public/attachments/20170301/48b80766/attachment.p7s>


More information about the Public mailing list