Re: Policy 2.7 Proposal: Exclude Policy Certification Authorities from EKU Requirement

2019-04-30 Thread Ryan Sleevi via dev-security-policy
On Tue, Apr 30, 2019 at 1:10 PM Fotis Loukos  wrote:

> I am just arguing that there is no risk involved in having a single
> certificate. I do agree that the model you proposed with the two
> certificates is a model that can be used right now, but I do not see any
> additional risks by having a single certificate.
>

As the one proposing relaxing the policy, shouldn't the burden of evidence
and discussion be on you to establish why and how there is no risk?

I just want to highlight that there's a difference between whether or not
you see the risk and whether or not others see the benefit. I think it'd be
helpful if you highlight the benefit. For example, you highlighted
infrastructure certificates - but those aren't applicable (e.g. an OCSP
certificate)


> > Among other things, the Root CA is permitted to be offline, but the EV
> > intermediate is not.
>
> This is a difference at the specific requirements for the particular
> CAs, and not a difference on the policies the CAs are audited against. I
> thought that your point is that that model creates a significant risk to
> the users because it is subject to the union of policies and needs to be
> audited under both policies. The fact that a CA is audited against a
> single or multiple policies is semantically different to the content of
> the policies themselves.
>

I don't believe it's reasonable to treat those as separable. For example,
by the same logic being applied here, one could argue that there is no
difference between a root certificate and a leaf certificate, since they're
audited against the same policies - but, obviously, with different
requirements.

The requirements - and capabilities - of the certificates are an intrinsic
part of the discussion and risk.


> >> Or how is it different from auditing a Sub CA issued before 2019/01/01
> >> under both policies?
> >
> >
> > It is this previously-permitted, now forbidden, aspect of policy that was
> > the intentional specification of policy. Folks would argue that the EV
> > intermediate - capable of issuing TLS certificates - wasn't "intended" to
> > be used as such, and thus would exclude it from audits or complying with
> > the BRs, or any other number of divergent, non-compliant behaviours.
>
> Well, I totally agree that this interpretation is really, REALLY, bad,
> and I would never support something like this. I really don't think that
> any auditors would actually agree with this since it creates a huge risk
> to the ecosystem and as far as I'm concerned, it is clear that such CAs
> are in scope. However, I wouldn't object to adding that such SubCAs are
> subject to both policies, if that would address your concerns.
>

I feel that, as the proposer to the change, it would be beneficial if you
look through the past discussions of CA certificate disclosures, to see
that such interpretations have been met. From an auditor perspective, it's
not an interpretative matter, if that's how the scope was contracted.

I don't think it's beneficial to try and incrementally piecemeal bandaids
on, without first understanding how and why the policy came to be, and the
risks it's trying to prevent, and then discussing the benefits to the
community and to users that outweigh those risks. It's also not
unreasonable to reject the proposal if risks are overlooked, or if the
risks outweigh the benefits, or if the benefits are not clearly articulated.


> > The current policy ensures that there's technical restrictions on this,
> and
> > defines them in such a way that the permitted hierarchy is the desired
> > hierarchy, not only for matters of assessing compliance, but of reducing
> > risk to users.
>
> You are mentioning the risk to the users, and in your previous email you
> mentioned that there were issues in the past. I would appreciate it if
> you could please point me to a single occasion where a SubCA not issuing
> end entity certificates, but having EKU constrained intermediates led to
> an issue.
>

Beyond attempting to change the burden of evidence - which is a rather
entirely unreasonable and problematic approach, especially as the advocate
for the change - simply look through my past CP/CPS reviews in this Forum.
You can see, for example, that one of the routine issues I would flag would
be the conflation of e-mail certificates for use as TLS certificates,
through poorly specified certificate profiles.

For example, an intermediate - with EKUs for both - may be used as a policy
intermediate. TLS and S/MIME intermediates would be constructed, but
without EKU restrictions - merely operational. The S/MIME leaves would lack
EKUs, the TLS intermediate would have TLS-server-auth. However,
certificates issued by the S/MIME intermediate would fully be usable for
TLS, particularly if the user's or organization's legal name was a
domain-shaped thing.

There are many ways to do PKI. Many of them are bad. Part of the policy is
to constrain and restrain the badness, and reduce ambiguity and options.
This is 

Re: Policy 2.7 Proposal: Exclude Policy Certification Authorities from EKU Requirement

2019-04-30 Thread Fotis Loukos via dev-security-policy
Hello,

On 30/4/19 6:59 μ.μ., Ryan Sleevi via dev-security-policy wrote:
> On Tue, Apr 30, 2019 at 11:49 AM Fotis Loukos  wrote:
> 
>> On 30/4/19 6:34 μ.μ., Ryan Sleevi via dev-security-policy wrote:
>>> On Tue, Apr 30, 2019 at 8:51 AM Fotis Loukos  wrote:
>>>
 Hello Ryan,

 On 29/4/19 5:20 μ.μ., Ryan Sleevi via dev-security-policy wrote:
> On Fri, Apr 26, 2019 at 7:02 PM Wayne Thayer via dev-security-policy <
> dev-security-policy@lists.mozilla.org> wrote:
>
>> In version 2.6 of our Root Store Policy, we added the requirement to
>> section 5.3 that intermediate certificates contain an EKU and separate
>> serverAuth and emailProtection uses. Version 2.6.1 updated the
 requirement
>> to exclude cross certificates [1]. Last month, an issue [2] was filed
>> requesting that we add "Policy Certification Authorities" (PCAs) as
 another
>> exception.
>>
>> PCAs are described in RFC 5280 as a CA certificate that is only used
>> to
>> issue other CA certificates, so excluding PCAs from this requirement
 would
>> not in theory weaken it. However, I'm not aware of any way to
 technically
>> enforce that PCAs not issue end-entity certificates, and allowing more
>> exceptions would seem to make this policy more difficult to enforce.
>> In
>> addition, RFC 5280 section 3.2 appears to reference PCAs as an example
 of
>> an architecture that should be abandoned in favor of x509v3
>> certificate
>> extensions:
>>
>>With X.509 v3, most of the requirements addressed by RFC 1422 can
>> be
>>addressed using certificate extensions, without a need to restrict
>>the CA structures used.  In particular, the certificate extensions
>>relating to certificate policies obviate the need for PCAs...
>>
>> This is https://github.com/mozilla/pkipolicy/issues/172
>>
>> I will appreciate everyone's input on this proposal.
>>
>
> TL;DR: I do not support this change.
>
> This appears to highlight a tension between Mozilla Policy and
>> (possible)
> ways to design a PKI.
>
> Consider the example of a CA that produces EV, OV, and DV certificates,
 for
> use in both TLS and S/MIME.
>
> One hierarchy would have (Root, no policies/any policy) -> (EV, OV, DV
> PCAs, using the Certificate Policies extension to constrain the
>> policies)
> -> (TLS, S/MIME issuing intermediates, using EKU) -> Leaf
> Another hierarchy would be (Root, no policies/any policy) -> (TLS,
>> S/MIME
> "policy" intermediates, using EKU) -> (EV, OV, DV TLS issuing
 intermdiates,
> EV, OV, DV S/MIME issuing intermediates, using the Certificate Policies
 to
> constrain the policies)

 I would be glad to implement the second model you are proposing, but
 AFAICT this is prohibited by the Root Store Policy using a single SubCA.
 More precisely, section 5.3 of the Root Store Policy mentions:

 Intermediate certificates created after January 1, 2019, with the
 exception of cross-certificates that share a private key with a
 corresponding root certificate: MUST contain an EKU extension; and, MUST
 NOT include the anyExtendedKeyUsage KeyPurposeId; and, * MUST NOT
 include both the id-kp-serverAuth and id-kp-emailProtection
 KeyPurposeIds in the same certificate.

>>>
>>> Can you explain to me why you believe this is prohibited? The second
>> model
>>> is the model that is permitted - the first model is, as you note,
>> expressly
>>> forbidden by policy.
>>
>> As I said, this is prohibited by the Root Store Policy using a single
>> SubCA. If that SubCA was to issue a TLS and an S/MIME intermediate, it
>> would need to either:
>> - Not include an EKU extension -> prohibited by the clause "MUST contain
>> an EKU extension"
>> - Include the anyExtendedKeyUsage KeyPurposeId -> prohibited by the
>> clause "MUST NOT include the anyExtendedKeyUsage KeyPurposeId"
>> - Include both the id-kp-serverAuth and id-kp-emailProtection
>> KeyPurposeIds -> prohibited by the clause "MUST NOT include both the
>> id-kp-serverAuth and id-kp-emailProtection KeyPurposeIds in the same
>> certificate."
>>
>> I don't know of any other possible configurations that would allow this.
>> Please let me know if this can be solved in some other way.
>>
> 
> I'm afraid we're saying the same thing, so I'm not sure where the confusion
> is.
> 
> It would appear you're interpreting "(TLS, S/MIME "policy" intermediates,
> using EKU)" as referring to a single certificate, wheras I'm trying to
> clearly specify (as later provided) that this is not, and is in fact two
> different certificates, each constrained by EKU to a singular, specific
> purpose.
> 
> This is desirable.
> 

I am just arguing that there is no risk involved in having a single
certificate. I do agree that the model you proposed with the two
certificates is a model that can be used 

Re: Policy 2.7 Proposal: Exclude Policy Certification Authorities from EKU Requirement

2019-04-30 Thread Ryan Sleevi via dev-security-policy
On Tue, Apr 30, 2019 at 11:49 AM Fotis Loukos  wrote:

> On 30/4/19 6:34 μ.μ., Ryan Sleevi via dev-security-policy wrote:
> > On Tue, Apr 30, 2019 at 8:51 AM Fotis Loukos  wrote:
> >
> >> Hello Ryan,
> >>
> >> On 29/4/19 5:20 μ.μ., Ryan Sleevi via dev-security-policy wrote:
> >>> On Fri, Apr 26, 2019 at 7:02 PM Wayne Thayer via dev-security-policy <
> >>> dev-security-policy@lists.mozilla.org> wrote:
> >>>
>  In version 2.6 of our Root Store Policy, we added the requirement to
>  section 5.3 that intermediate certificates contain an EKU and separate
>  serverAuth and emailProtection uses. Version 2.6.1 updated the
> >> requirement
>  to exclude cross certificates [1]. Last month, an issue [2] was filed
>  requesting that we add "Policy Certification Authorities" (PCAs) as
> >> another
>  exception.
> 
>  PCAs are described in RFC 5280 as a CA certificate that is only used
> to
>  issue other CA certificates, so excluding PCAs from this requirement
> >> would
>  not in theory weaken it. However, I'm not aware of any way to
> >> technically
>  enforce that PCAs not issue end-entity certificates, and allowing more
>  exceptions would seem to make this policy more difficult to enforce.
> In
>  addition, RFC 5280 section 3.2 appears to reference PCAs as an example
> >> of
>  an architecture that should be abandoned in favor of x509v3
> certificate
>  extensions:
> 
> With X.509 v3, most of the requirements addressed by RFC 1422 can
> be
> addressed using certificate extensions, without a need to restrict
> the CA structures used.  In particular, the certificate extensions
> relating to certificate policies obviate the need for PCAs...
> 
>  This is https://github.com/mozilla/pkipolicy/issues/172
> 
>  I will appreciate everyone's input on this proposal.
> 
> >>>
> >>> TL;DR: I do not support this change.
> >>>
> >>> This appears to highlight a tension between Mozilla Policy and
> (possible)
> >>> ways to design a PKI.
> >>>
> >>> Consider the example of a CA that produces EV, OV, and DV certificates,
> >> for
> >>> use in both TLS and S/MIME.
> >>>
> >>> One hierarchy would have (Root, no policies/any policy) -> (EV, OV, DV
> >>> PCAs, using the Certificate Policies extension to constrain the
> policies)
> >>> -> (TLS, S/MIME issuing intermediates, using EKU) -> Leaf
> >>> Another hierarchy would be (Root, no policies/any policy) -> (TLS,
> S/MIME
> >>> "policy" intermediates, using EKU) -> (EV, OV, DV TLS issuing
> >> intermdiates,
> >>> EV, OV, DV S/MIME issuing intermediates, using the Certificate Policies
> >> to
> >>> constrain the policies)
> >>
> >> I would be glad to implement the second model you are proposing, but
> >> AFAICT this is prohibited by the Root Store Policy using a single SubCA.
> >> More precisely, section 5.3 of the Root Store Policy mentions:
> >>
> >> Intermediate certificates created after January 1, 2019, with the
> >> exception of cross-certificates that share a private key with a
> >> corresponding root certificate: MUST contain an EKU extension; and, MUST
> >> NOT include the anyExtendedKeyUsage KeyPurposeId; and, * MUST NOT
> >> include both the id-kp-serverAuth and id-kp-emailProtection
> >> KeyPurposeIds in the same certificate.
> >>
> >
> > Can you explain to me why you believe this is prohibited? The second
> model
> > is the model that is permitted - the first model is, as you note,
> expressly
> > forbidden by policy.
>
> As I said, this is prohibited by the Root Store Policy using a single
> SubCA. If that SubCA was to issue a TLS and an S/MIME intermediate, it
> would need to either:
> - Not include an EKU extension -> prohibited by the clause "MUST contain
> an EKU extension"
> - Include the anyExtendedKeyUsage KeyPurposeId -> prohibited by the
> clause "MUST NOT include the anyExtendedKeyUsage KeyPurposeId"
> - Include both the id-kp-serverAuth and id-kp-emailProtection
> KeyPurposeIds -> prohibited by the clause "MUST NOT include both the
> id-kp-serverAuth and id-kp-emailProtection KeyPurposeIds in the same
> certificate."
>
> I don't know of any other possible configurations that would allow this.
> Please let me know if this can be solved in some other way.
>

I'm afraid we're saying the same thing, so I'm not sure where the confusion
is.

It would appear you're interpreting "(TLS, S/MIME "policy" intermediates,
using EKU)" as referring to a single certificate, wheras I'm trying to
clearly specify (as later provided) that this is not, and is in fact two
different certificates, each constrained by EKU to a singular, specific
purpose.

This is desirable.


> > I suppose it wasn't clear that the , was separating out a list of
> > intermediates. That is, in the 'second' model, you'd construct the
> > following:
> > (Root, no policies / any policy) -> (TLS intermediate) -> (EV
> intermediate)
> > -> (EV TLS Leaf)
> > (Root, no policies / any policy) -> 

Re: Policy 2.7 Proposal: Exclude Policy Certification Authorities from EKU Requirement

2019-04-30 Thread Fotis Loukos via dev-security-policy
On 30/4/19 6:34 μ.μ., Ryan Sleevi via dev-security-policy wrote:
> On Tue, Apr 30, 2019 at 8:51 AM Fotis Loukos  wrote:
> 
>> Hello Ryan,
>>
>> On 29/4/19 5:20 μ.μ., Ryan Sleevi via dev-security-policy wrote:
>>> On Fri, Apr 26, 2019 at 7:02 PM Wayne Thayer via dev-security-policy <
>>> dev-security-policy@lists.mozilla.org> wrote:
>>>
 In version 2.6 of our Root Store Policy, we added the requirement to
 section 5.3 that intermediate certificates contain an EKU and separate
 serverAuth and emailProtection uses. Version 2.6.1 updated the
>> requirement
 to exclude cross certificates [1]. Last month, an issue [2] was filed
 requesting that we add "Policy Certification Authorities" (PCAs) as
>> another
 exception.

 PCAs are described in RFC 5280 as a CA certificate that is only used to
 issue other CA certificates, so excluding PCAs from this requirement
>> would
 not in theory weaken it. However, I'm not aware of any way to
>> technically
 enforce that PCAs not issue end-entity certificates, and allowing more
 exceptions would seem to make this policy more difficult to enforce. In
 addition, RFC 5280 section 3.2 appears to reference PCAs as an example
>> of
 an architecture that should be abandoned in favor of x509v3 certificate
 extensions:

With X.509 v3, most of the requirements addressed by RFC 1422 can be
addressed using certificate extensions, without a need to restrict
the CA structures used.  In particular, the certificate extensions
relating to certificate policies obviate the need for PCAs...

 This is https://github.com/mozilla/pkipolicy/issues/172

 I will appreciate everyone's input on this proposal.

>>>
>>> TL;DR: I do not support this change.
>>>
>>> This appears to highlight a tension between Mozilla Policy and (possible)
>>> ways to design a PKI.
>>>
>>> Consider the example of a CA that produces EV, OV, and DV certificates,
>> for
>>> use in both TLS and S/MIME.
>>>
>>> One hierarchy would have (Root, no policies/any policy) -> (EV, OV, DV
>>> PCAs, using the Certificate Policies extension to constrain the policies)
>>> -> (TLS, S/MIME issuing intermediates, using EKU) -> Leaf
>>> Another hierarchy would be (Root, no policies/any policy) -> (TLS, S/MIME
>>> "policy" intermediates, using EKU) -> (EV, OV, DV TLS issuing
>> intermdiates,
>>> EV, OV, DV S/MIME issuing intermediates, using the Certificate Policies
>> to
>>> constrain the policies)
>>
>> I would be glad to implement the second model you are proposing, but
>> AFAICT this is prohibited by the Root Store Policy using a single SubCA.
>> More precisely, section 5.3 of the Root Store Policy mentions:
>>
>> Intermediate certificates created after January 1, 2019, with the
>> exception of cross-certificates that share a private key with a
>> corresponding root certificate: MUST contain an EKU extension; and, MUST
>> NOT include the anyExtendedKeyUsage KeyPurposeId; and, * MUST NOT
>> include both the id-kp-serverAuth and id-kp-emailProtection
>> KeyPurposeIds in the same certificate.
>>
> 
> Can you explain to me why you believe this is prohibited? The second model
> is the model that is permitted - the first model is, as you note, expressly
> forbidden by policy.

As I said, this is prohibited by the Root Store Policy using a single
SubCA. If that SubCA was to issue a TLS and an S/MIME intermediate, it
would need to either:
- Not include an EKU extension -> prohibited by the clause "MUST contain
an EKU extension"
- Include the anyExtendedKeyUsage KeyPurposeId -> prohibited by the
clause "MUST NOT include the anyExtendedKeyUsage KeyPurposeId"
- Include both the id-kp-serverAuth and id-kp-emailProtection
KeyPurposeIds -> prohibited by the clause "MUST NOT include both the
id-kp-serverAuth and id-kp-emailProtection KeyPurposeIds in the same
certificate."

I don't know of any other possible configurations that would allow this.
Please let me know if this can be solved in some other way.

> 
> I suppose it wasn't clear that the , was separating out a list of
> intermediates. That is, in the 'second' model, you'd construct the
> following:
> (Root, no policies / any policy) -> (TLS intermediate) -> (EV intermediate)
> -> (EV TLS Leaf)
> (Root, no policies / any policy) -> (TLS intermediate) -> (OV intermediate)
> -> (OV TLS leaf)
> (Root, no policies / any policy) -> (TLS intermediate) -> (DV intermediate)
> -> (DV TLS leaf)
> (Root, no policies / any policy) -> (S/MIME intermediate) -> (EV
> intermediate) -> (EV S/MIME leaf)
> ... etc
> 
> This is *highly* desirable and strongly beneficial to security than a model
> which is expressly forbidden in the current policy, which is
> (Root, no policies / any policy) -> (EV intermediate) -> (TLS intermediate)
> -> (EV TLS leaf)
> (Root, no policies / any policy) -> (EV intermediate) -> (S/MIME
> intermediate) -> (EV S/MIME leaf)
> 
> That model creates significant risk to users, 

Re: Policy 2.7 Proposal: Exclude Policy Certification Authorities from EKU Requirement

2019-04-30 Thread Ryan Sleevi via dev-security-policy
On Tue, Apr 30, 2019 at 8:51 AM Fotis Loukos  wrote:

> Hello Ryan,
>
> On 29/4/19 5:20 μ.μ., Ryan Sleevi via dev-security-policy wrote:
> > On Fri, Apr 26, 2019 at 7:02 PM Wayne Thayer via dev-security-policy <
> > dev-security-policy@lists.mozilla.org> wrote:
> >
> >> In version 2.6 of our Root Store Policy, we added the requirement to
> >> section 5.3 that intermediate certificates contain an EKU and separate
> >> serverAuth and emailProtection uses. Version 2.6.1 updated the
> requirement
> >> to exclude cross certificates [1]. Last month, an issue [2] was filed
> >> requesting that we add "Policy Certification Authorities" (PCAs) as
> another
> >> exception.
> >>
> >> PCAs are described in RFC 5280 as a CA certificate that is only used to
> >> issue other CA certificates, so excluding PCAs from this requirement
> would
> >> not in theory weaken it. However, I'm not aware of any way to
> technically
> >> enforce that PCAs not issue end-entity certificates, and allowing more
> >> exceptions would seem to make this policy more difficult to enforce. In
> >> addition, RFC 5280 section 3.2 appears to reference PCAs as an example
> of
> >> an architecture that should be abandoned in favor of x509v3 certificate
> >> extensions:
> >>
> >>With X.509 v3, most of the requirements addressed by RFC 1422 can be
> >>addressed using certificate extensions, without a need to restrict
> >>the CA structures used.  In particular, the certificate extensions
> >>relating to certificate policies obviate the need for PCAs...
> >>
> >> This is https://github.com/mozilla/pkipolicy/issues/172
> >>
> >> I will appreciate everyone's input on this proposal.
> >>
> >
> > TL;DR: I do not support this change.
> >
> > This appears to highlight a tension between Mozilla Policy and (possible)
> > ways to design a PKI.
> >
> > Consider the example of a CA that produces EV, OV, and DV certificates,
> for
> > use in both TLS and S/MIME.
> >
> > One hierarchy would have (Root, no policies/any policy) -> (EV, OV, DV
> > PCAs, using the Certificate Policies extension to constrain the policies)
> > -> (TLS, S/MIME issuing intermediates, using EKU) -> Leaf
> > Another hierarchy would be (Root, no policies/any policy) -> (TLS, S/MIME
> > "policy" intermediates, using EKU) -> (EV, OV, DV TLS issuing
> intermdiates,
> > EV, OV, DV S/MIME issuing intermediates, using the Certificate Policies
> to
> > constrain the policies)
>
> I would be glad to implement the second model you are proposing, but
> AFAICT this is prohibited by the Root Store Policy using a single SubCA.
> More precisely, section 5.3 of the Root Store Policy mentions:
>
> Intermediate certificates created after January 1, 2019, with the
> exception of cross-certificates that share a private key with a
> corresponding root certificate: MUST contain an EKU extension; and, MUST
> NOT include the anyExtendedKeyUsage KeyPurposeId; and, * MUST NOT
> include both the id-kp-serverAuth and id-kp-emailProtection
> KeyPurposeIds in the same certificate.
>

Can you explain to me why you believe this is prohibited? The second model
is the model that is permitted - the first model is, as you note, expressly
forbidden by policy.

I suppose it wasn't clear that the , was separating out a list of
intermediates. That is, in the 'second' model, you'd construct the
following:
(Root, no policies / any policy) -> (TLS intermediate) -> (EV intermediate)
-> (EV TLS Leaf)
(Root, no policies / any policy) -> (TLS intermediate) -> (OV intermediate)
-> (OV TLS leaf)
(Root, no policies / any policy) -> (TLS intermediate) -> (DV intermediate)
-> (DV TLS leaf)
(Root, no policies / any policy) -> (S/MIME intermediate) -> (EV
intermediate) -> (EV S/MIME leaf)
... etc

This is *highly* desirable and strongly beneficial to security than a model
which is expressly forbidden in the current policy, which is
(Root, no policies / any policy) -> (EV intermediate) -> (TLS intermediate)
-> (EV TLS leaf)
(Root, no policies / any policy) -> (EV intermediate) -> (S/MIME
intermediate) -> (EV S/MIME leaf)

That model creates significant risk to users, because that EV intermediate
is capable of issuing both, subject to the union of policies, needs to be
audited under both policies, and regularly we see issues with CA's thinking
that their requirements on S/MIME don't apply to TLS.


>
> In your example, the TLS, S/MIME "policy" intermediates have to be
> different since they cannot include both the id-kp-serverAuth and
> id-kp-emailProtection EKUs. I do not think that having a single CA for
> this will introduce any risks.
>
> To summarize, I agree with the second model you are proposing, but I do
> not think that a single SubCA under the Root will introduce any
> additional risks compared to different SubCAs depending on the usage.
>

I disagree with this conclusion. I believe it demonstrably introduces more
risk to have intermediates that are jointly capable of issuing for multiple
purposes, as has been shown 

RE: AT SSL certificates without the AIA extension

2019-04-30 Thread Doug Beattie via dev-security-policy
Hi Nick,

That's a good idea if we were going to continue with supporting customers
like this; however, we're in the final stages of terminating all customers
running on-premise SSL CAs.  Given the timing, setting up private  CT logs
wouldn't help because that would undoubtedly take longer than our
termination date in about 4 months.

Doug

-Original Message-
From: Nick Lamb  
Sent: Tuesday, April 30, 2019 3:51 AM
To: dev-security-policy@lists.mozilla.org
Cc: Doug Beattie 
Subject: Re: AT SSL certificates without the AIA extension

On Mon, 29 Apr 2019 12:41:07 +
Doug Beattie via dev-security-policy
 wrote:
> It should be noted that these certificates are not posted to CT logs 
> nor are they accessed via browsers as they are used within closed 
> networks, but we'll get more details on their exact usage shortly.

Hi Doug,

Thanks for reporting this problem, I appreciate that this subCA doesn't see
a proportionate reward to logging these certs in the existing well known
public logs and so it makes sense that they wouldn't write to them.

I'm also glad to hear that a 100% sample policy was in place with, it sounds
like, a monthly audit period, given the volumes involved (from what I can
see publicly in e.g. Censys) that seems like a good idea.

Still, in terms of your audit oversight role it could make sense, as
software is replaced/ upgraded, to switch to private CT logging as a
substitute for a human role of uploading certs for audit.

>From your description it sounds as though GlobalSign reasonably trusts that
the assigned AT Employee will provide them with an accurate set of certs,
the thing we're protecting against here is accident or mistake, not a
malevolent subCA operator which would be very hard to detect this way.
Unfortunately this employee (and perhaps one or more
deputies) were on leave. If that assessment is correct then software which
uses RFC6962 methods to write certs on issuance to a log operated by
GlobalSign would satisfy this requirement automatically without a human
action.

With the log not publicly trusted it could operate a much relaxed policy
(e.g. MMD 7 days or even not defined, not publicly accessible) but it would
avoid this dependency on a specific person at AT doing a manual step
periodically in order for GlobalSign to have sight of issued certificates.

With the relative popularity of RFC6962 logging, this becomes an
off-the-shelf hook that can be used to support audit roles easily without
either manual steps to export the certificates or special modifications to
the issuance software. You mentioned EJBCA specifically in this post, and so
I verified that as expected EJBCA does provide a means for CA operators to
configure a log without also then embedding SCTs in certificates (which
might not be desirable for AT's application)

Nick.


smime.p7s
Description: S/MIME cryptographic signature
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: Policy 2.7 Proposal: Exclude Policy Certification Authorities from EKU Requirement

2019-04-30 Thread Fotis Loukos via dev-security-policy
Hello Ryan,

On 29/4/19 5:20 μ.μ., Ryan Sleevi via dev-security-policy wrote:
> On Fri, Apr 26, 2019 at 7:02 PM Wayne Thayer via dev-security-policy <
> dev-security-policy@lists.mozilla.org> wrote:
> 
>> In version 2.6 of our Root Store Policy, we added the requirement to
>> section 5.3 that intermediate certificates contain an EKU and separate
>> serverAuth and emailProtection uses. Version 2.6.1 updated the requirement
>> to exclude cross certificates [1]. Last month, an issue [2] was filed
>> requesting that we add "Policy Certification Authorities" (PCAs) as another
>> exception.
>>
>> PCAs are described in RFC 5280 as a CA certificate that is only used to
>> issue other CA certificates, so excluding PCAs from this requirement would
>> not in theory weaken it. However, I'm not aware of any way to technically
>> enforce that PCAs not issue end-entity certificates, and allowing more
>> exceptions would seem to make this policy more difficult to enforce. In
>> addition, RFC 5280 section 3.2 appears to reference PCAs as an example of
>> an architecture that should be abandoned in favor of x509v3 certificate
>> extensions:
>>
>>With X.509 v3, most of the requirements addressed by RFC 1422 can be
>>addressed using certificate extensions, without a need to restrict
>>the CA structures used.  In particular, the certificate extensions
>>relating to certificate policies obviate the need for PCAs...
>>
>> This is https://github.com/mozilla/pkipolicy/issues/172
>>
>> I will appreciate everyone's input on this proposal.
>>
> 
> TL;DR: I do not support this change.
> 
> This appears to highlight a tension between Mozilla Policy and (possible)
> ways to design a PKI.
> 
> Consider the example of a CA that produces EV, OV, and DV certificates, for
> use in both TLS and S/MIME.
> 
> One hierarchy would have (Root, no policies/any policy) -> (EV, OV, DV
> PCAs, using the Certificate Policies extension to constrain the policies)
> -> (TLS, S/MIME issuing intermediates, using EKU) -> Leaf
> Another hierarchy would be (Root, no policies/any policy) -> (TLS, S/MIME
> "policy" intermediates, using EKU) -> (EV, OV, DV TLS issuing intermdiates,
> EV, OV, DV S/MIME issuing intermediates, using the Certificate Policies to
> constrain the policies)

I would be glad to implement the second model you are proposing, but
AFAICT this is prohibited by the Root Store Policy using a single SubCA.
More precisely, section 5.3 of the Root Store Policy mentions:

Intermediate certificates created after January 1, 2019, with the
exception of cross-certificates that share a private key with a
corresponding root certificate: MUST contain an EKU extension; and, MUST
NOT include the anyExtendedKeyUsage KeyPurposeId; and, * MUST NOT
include both the id-kp-serverAuth and id-kp-emailProtection
KeyPurposeIds in the same certificate.

In your example, the TLS, S/MIME "policy" intermediates have to be
different since they cannot include both the id-kp-serverAuth and
id-kp-emailProtection EKUs. I do not think that having a single CA for
this will introduce any risks.

To summarize, I agree with the second model you are proposing, but I do
not think that a single SubCA under the Root will introduce any
additional risks compared to different SubCAs depending on the usage.

Regards,
Fotis

> 
> It's unclear to me the benefit of the former design over the latter, for
> either the CA or for relying parties. On the other hand, the benefits are
> clearer for the latter - in which the S/MIME vs TLS split happens as early
> as possible. This approach reduces the scope of audits: in the former
> design, the PCAs need to be covered by both TLS and S/MIME applicable
> audits, while the latter allows cleaving the S/MIME CAs from the scope of
> the TLS audits. Similarly, this latter approach, reflected in the current
> language, also reduces the scope of risk - if an EV PCA issues an
> inappropriate S/MIME issuing intermediate, revoking that EV PCA would also
> revoke all EV TLS certificates under the PCA model, while under the current
> model, the technical constraints of the TLS "policy" intermediate reduce
> the risk of misissuing an S/MIME intermediate under that hierarchy.
> 
> As it's unclear to me the benefit of accommodating the PCAs, because as you
> note, it's more complexity to the policy, and because it seems to be
> systemically more riskier for end-users and more expensive for CAs, I don't
> think we should support modifying the policy.
> ___
> dev-security-policy mailing list
> dev-security-policy@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-security-policy
> 


-- 
Fotis Loukos, PhD
Director of Security Architecture
SSL Corp
e: fot...@ssl.com
w: https://www.ssl.com
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: Policy 2.7 Proposal: Exclude Policy Certification Authorities from EKU Requirement

2019-04-30 Thread Fotis Loukos via dev-security-policy
Hello,

On 27/4/19 2:02 π.μ., Wayne Thayer via dev-security-policy wrote:
> In version 2.6 of our Root Store Policy, we added the requirement to
> section 5.3 that intermediate certificates contain an EKU and separate
> serverAuth and emailProtection uses. Version 2.6.1 updated the requirement
> to exclude cross certificates [1]. Last month, an issue [2] was filed
> requesting that we add "Policy Certification Authorities" (PCAs) as another
> exception.
> 
> PCAs are described in RFC 5280 as a CA certificate that is only used to
> issue other CA certificates, so excluding PCAs from this requirement would
> not in theory weaken it. However, I'm not aware of any way to technically

Just to clarify, when opening the ticket by Policy CAs I was describing
CAs issuing only SubCAs, or other "infrastructure" certificates such as
OCSP certificates, and not end-entity certificates. The full model
described in RFC5280 includes many more architectural requirements.

> enforce that PCAs not issue end-entity certificates, and allowing more
> exceptions would seem to make this policy more difficult to enforce. In

I think that many, if not most, of the requirements imposed by the
Mozilla Root Store Policy are difficult to enforce. This specific
requirement is easy to monitor thanks to CT. Crt.sh already provides
this information in a single webpage for every CA, and I think that a
single database query will return non-compliant SubCAs directly. Other
requirements, such as CAA monitoring which is part of the Mozilla Root
Store Policy by virtue of CA/B Forum BRs, are way more difficult to
enforce, and cannot be monitored directly using some service like CT.

> addition, RFC 5280 section 3.2 appears to reference PCAs as an example of
> an architecture that should be abandoned in favor of x509v3 certificate
> extensions:
> 
>With X.509 v3, most of the requirements addressed by RFC 1422 can be
>addressed using certificate extensions, without a need to restrict
>the CA structures used.  In particular, the certificate extensions
>relating to certificate policies obviate the need for PCAs...

It is my understanding that this applies to the full PCA model. As I
described before, I am simply talking about SubCAs that are issuing only
other SubCAs. Unfortunately, I don't think there is a single term to
describe these Subs.

Regards,
Fotis

> 
> This is https://github.com/mozilla/pkipolicy/issues/172
> 
> I will appreciate everyone's input on this proposal.
> 
> - Wayne
> 
> [1]
> https://github.com/mozilla/pkipolicy/commit/a8353e12db6128d9a01de7ab94949180115a2d92
> [2] https://github.com/mozilla/pkipolicy/issues/172
> ___
> dev-security-policy mailing list
> dev-security-policy@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-security-policy
> 


-- 
Fotis Loukos, PhD
Director of Security Architecture
SSL Corp
e: fot...@ssl.com
w: https://www.ssl.com
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy


Re: AT SSL certificates without the AIA extension

2019-04-30 Thread Nick Lamb via dev-security-policy
On Mon, 29 Apr 2019 12:41:07 +
Doug Beattie via dev-security-policy
 wrote:
> It should be noted that these certificates are not posted to CT logs
> nor are they accessed via browsers as they are used within closed
> networks, but we'll get more details on their exact usage shortly.

Hi Doug,

Thanks for reporting this problem, I appreciate that this subCA doesn't
see a proportionate reward to logging these certs in the existing well
known public logs and so it makes sense that they wouldn't write to
them.

I'm also glad to hear that a 100% sample policy was in place with, it
sounds like, a monthly audit period, given the volumes involved (from
what I can see publicly in e.g. Censys) that seems like a good idea.

Still, in terms of your audit oversight role it could make sense, as
software is replaced/ upgraded, to switch to private CT logging as a
substitute for a human role of uploading certs for audit.

>From your description it sounds as though GlobalSign reasonably trusts
that the assigned AT Employee will provide them with an accurate set
of certs, the thing we're protecting against here is accident or
mistake, not a malevolent subCA operator which would be very hard to
detect this way. Unfortunately this employee (and perhaps one or more
deputies) were on leave. If that assessment is correct then software
which uses RFC6962 methods to write certs on issuance to a log operated
by GlobalSign would satisfy this requirement automatically without a
human action.

With the log not publicly trusted it could operate a much relaxed
policy (e.g. MMD 7 days or even not defined, not publicly accessible)
but it would avoid this dependency on a specific person at AT doing a
manual step periodically in order for GlobalSign to have sight of issued
certificates.

With the relative popularity of RFC6962 logging, this becomes an
off-the-shelf hook that can be used to support audit roles easily
without either manual steps to export the certificates or special
modifications to the issuance software. You mentioned EJBCA
specifically in this post, and so I verified that as expected EJBCA
does provide a means for CA operators to configure a log without also
then embedding SCTs in certificates (which might not be desirable for
AT's application)

Nick.
___
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy