> On May 21, 2020, at 10:12 AM, Ryan Sleevi <ryan-ietf...@sleevi.com> wrote:
> 
> 
> On Wed, May 20, 2020 at 6:40 PM Russ Housley <hous...@vigilsec.com 
> <mailto:hous...@vigilsec.com>> wrote:
> MINOR
> 
> Section 1 also says:
> 
>    Because the above problems do not relate to the CA's inherent
>    function of validating possession of names, ....
> 
> The CA is responsible for confirming that the public key in the
> certificate corresponds to a private key that can be used by the
> certificate subject.  This is usually done by a proof of possession
> mechanism.  So, I think that the start of this sentence should be
> reworded to avoid the impression that the CA only validates the
> name.
> 
> The existing framing is correct. The most widely used Internet PKI, the Web 
> PKI, intentionally doesn’t not require a proof of possession mechanism. It is 
> not used as an authentication mechanism (i.e. a binding of a key to an 
> identity) but an authorization mechanism (i.e. a binding of an authorized set 
> of identities to a key).
> 
> The “CA only validates the name” is not just an impression, it’s the 
> widespread running code. Due to how TLS certificates are used (online 
> protocol negotiation, without non-repudiation support), there’s no risk 
> opened nor any necessity to do a strong proof of possession binding, even in 
> cases of strong identity binding.

The CSR is signed with the key to be certified.  That is proof of possession.

> 
> QUESTION
> 
> While I have no objection to the DelegationUsage extension,
> I wonder is an extended key usage would provide the same
> confidence in the certificate.
> 
> In practice, no. As things currently are, it would unfortunately undermine 
> the confidence, although this an entirely fair and reasonable question.
> 
> As a recap (and more for those without the same context you have) the way 
> 5280 and it’s predecessors were designed, the Certificate Policies extension 
> is the primary means of expressing or indicating compliance to a particular 
> policy. If a relying party explicitly attempts to validate a certificate, for 
> a RP-determined Certificate Policy, then they can know whether or not that 
> certificate complied with their expectations for issuance and management. 
> This is all defined within 5280, albeit quite complex, and involves 
> processing rules for both leaves and intermediates, as well as the ability to 
> map between different policies (via policyMappings), such that an RP 
> expecting policy A can validate a certificate bearing only policy B, provided 
> some trusted party in the certification path asserted that B was 
> equal-or-equivalent-to A
> 
> Additionally, certificates have the extendedKeyUsage, which is most commonly 
> used to restrict the protocol or protocols a given certificate can be used 
> for. In RFC 5280 and friends, this restriction only applies to lead 
> certificates. However, from the very earliest days of PKIX, the two main 
> implementations (Microsoft and Netscape) diverged from this, in unspecified 
> ways that ultimately PKIX declined to incorporate, to allow EKUs to be used 
> on intermediates to restrict the protocols that certificates can be issued 
> for. If a leaf EKU is not a subset of its issuing chain, then that EKU is not 
> permitted; much like policy OIDs.
> 
> This divergence, which has existed since the very earliest days of TLS, 
> resulted in a different approach to managing policy than the idealized goal 
> of PKIX. Rather than having every relying party application provide an 
> initial policy, such as a policy OID assigned by the root store vendor 
> (typically the OS/browser vendor), to indicate compliance with the root 
> store’s policy, and using policy mappings for that, implementations simply 
> used the EKU as a joint indicator for “uses protocol X and complies with the 
> issuance policies for protocol X, as defined by the root store vendor”.
> 
> This whole long preamble builds to our present day. In wide practice, and 
> even for those root stores/OSes/applications that do not implement EKU 
> chaining in the fashion mentioned above, the mere presence of an EKU is the 
> indicator for compliance with a set of policies, and altering EKUs, like 
> altering policy OIDs, requires issuing new intermediates permitted for that 
> EKU.
> 
> If DC certificates only bore a DC EKU, they would, in effect, be exempt from 
> all of the certificate policies widely practiced for the issuance of TLS 
> certificates, which would reduce the confidence in the certificate. They 
> would also typically require the CA to issue new intermediate certificates 
> prior to being able to issue such certificates that were accepted. For 
> applications, the certificate validation libraries apply local policy to 
> certificates based on their EKU via technical measures, to ensure they match 
> the expected issuance policy, such as checking for certificate transparency 
> information or limiting the maximum validity period the application will 
> accept.
> 
> Recall that the design of DC is also possible via simply nameConstrained 
> subCAs, but part of the reason for DC is that it does not require or reduces 
> dependencies on external PKIs in order to satisfy local protocol needs. The 
> same argument applies here against EKU: to use EKU would place ongoing 
> dependencies back on those external PKI, be incompatible with how those PKIs 
> are typically administered, and would cause significant challenges for 
> applications implementing on common libraries (such as those provided by 
> their OS).
> 
> It’s far from perfect, but the current state of the art is this approach. If 
> something is meant to be “like” TLS, at minimum, it needs to contain the TLS 
> EKU, so it is subjected to the TLS policies and usable with TLS validation 
> stacks. Extensions, with or without the critical bit set, serve as the way to 
> distinguish whether and how it should be usable with TLS and the “something 
> like TLS” protocol.
> 
> An EKU certainly could be pursued, and it’s by no means an unreasonable 
> question, but in order to provide the same confidence as currently specified, 
> existing root store policies would need to be rewritten and redefined to 
> include that EKU in scope of their “subject to TLS”, as would their software 
> and validation libraries similarly be updated to process that.

I am aware of the "fight" about EKU chaining.  I have a view, but I did not 
really want to drag subcerts into that controversy.

I guess I ask the authors to add a paragraph to the rationale section that says 
something about why this extension was used instead of an extended key usage.

Russ

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to