| < draft-housley-spasm-eku-constraints-01.txt | draft-housley-spasm-eku-constraints-02.txt > | |||
|---|---|---|---|---|
| INTERNET-DRAFT R. Housley | INTERNET-DRAFT R. Housley | |||
| Intended Status: Standards Track Vigil Security | Intended Status: Standards Track Vigil Security | |||
| Updates: RFC 5280 (if approved) | Updates: RFC 5280 (if approved) | |||
| Expires: 18 November 2016 17 May 2016 | Expires: 26 November 2016 25 May 2016 | |||
| Extended Key Usage Constraints | Extended Key Usage Constraints | |||
| draft-housley-spasm-eku-constraints-01 | draft-housley-spasm-eku-constraints-02 | |||
| Abstract | Abstract | |||
| This document specifies the extended key usage constraints | This document specifies the extended key usage constraints | |||
| certificate extension, which is used to place restrictions on the key | certificate extension, which is used to place restrictions on the key | |||
| purpose identifiers that are authorized to appear in the end-entity | purpose identifiers that are authorized to appear in the end-entity | |||
| certificate in a certification path. Restrictions apply to the | certificate in a certification path. Restrictions apply to the | |||
| extended key usage certificate extension, which is described in | extended key usage certificate extension, which is described in | |||
| RFC 5280. | RFC 5280. | |||
| skipping to change at page 3, line 30 ¶ | skipping to change at page 3, line 30 ¶ | |||
| The special key purpose identifier anyExtendedKeyUsage is not treated | The special key purpose identifier anyExtendedKeyUsage is not treated | |||
| differently than any other key purpose identifier in processing the | differently than any other key purpose identifier in processing the | |||
| constraints. If the anyExtendedKeyUsage key purpose identifier | constraints. If the anyExtendedKeyUsage key purpose identifier | |||
| appears in the extended key usage extension of the end-entity | appears in the extended key usage extension of the end-entity | |||
| certificate, then the anyExtendedKeyUsage key purpose identifier MUST | certificate, then the anyExtendedKeyUsage key purpose identifier MUST | |||
| appear in the permitted key purpose identifiers set and the | appear in the permitted key purpose identifiers set and the | |||
| anyExtendedKeyUsage key purpose identifier MUST NOT appear in the | anyExtendedKeyUsage key purpose identifier MUST NOT appear in the | |||
| excluded key purpose identifiers set. | excluded key purpose identifiers set. | |||
| Conforming CAs MUST mark this extension as critical, and conforming | This extension MAY, at the option of the certificate issuer, be | |||
| CAs MUST NOT issue certificates where this extension is an empty | either critical or non-critical. | |||
| sequence. That is, at least one of the permittedKeyPurposeIds field | ||||
| or the excludedKeyPurposeIds field MUST be present. | ||||
| Conforming applications MUST be able to process this extension. If | Conforming applications MUST be able to process this extension. If | |||
| any CA certificate in the certification path includes an extended key | any CA certificate in the certification path includes an extended key | |||
| usage constraints extension and the end-entity certificate includes | usage constraints extension and the end-entity certificate includes | |||
| an extended key usage certificate extension, then the application | an extended key usage certificate extension, then the application | |||
| MUST either process the extended key usage extension constraint or | MUST either process the extended key usage extension constraint or | |||
| reject the certificate. | reject the certificate. | |||
| ext-ExtKeyUsageConstraints EXTENSION ::= { | ext-ExtKeyUsageConstraints EXTENSION ::= { | |||
| SYNTAX EKUConstraints | SYNTAX EKUConstraints | |||
| IDENTIFIED BY id-ce-ekuConstraints } | IDENTIFIED BY id-ce-ekuConstraints } | |||
| id-ce-ekuConstraints OBJECT IDENTIFIER ::= { id-pe TBD } | id-ce-ekuConstraints OBJECT IDENTIFIER ::= { id-pe TBD } | |||
| EKUConstraints ::= SEQUENCE { | EKUConstraints ::= CHOICE { | |||
| permittedKeyPurposeIds [0] KeyPurposeIds OPTIONAL, | permittedKeyPurposeIds [0] KeyPurposeIds OPTIONAL, | |||
| excludedKeyPurposeIds [1] KeyPurposeIds OPTIONAL } | excludedKeyPurposeIds [1] KeyPurposeIds OPTIONAL } | |||
| ( WITH COMPONENTS { ..., permittedKeyPurposeIds PRESENT } | | ||||
| WITH COMPONENTS { ..., excludedKeyPurposeIds PRESENT } ) | ||||
| KeyPurposeIds ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId | KeyPurposeIds ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId | |||
| 3. Basic Path Validation | 3. Basic Path Validation | |||
| Certification path validation is described in Section 6.1 of RFC 5280 | Certification path validation is described in Section 6.1 of RFC 5280 | |||
| [RFC5280]. Certification path processing verifies the binding | [RFC5280]. Certification path processing verifies the binding | |||
| between the subject name and the subject public key. The binding is | between the subject name and the subject public key. The binding is | |||
| limited by constraints that are specified in the certificates that | limited by constraints that are specified in the certificates that | |||
| comprise the path and inputs that are specified by the relying party. | comprise the path and inputs that are specified by the relying party. | |||
| Certification path processing requires the name and public key for a | ||||
| trust anchor. | ||||
| This section extends to path processing to include EKU constraints. | This section extends certification path processing to include EKU | |||
| constraints. | ||||
| The resulting certification path validation processing is compatible | ||||
| with the trust anchor constrainsts processing described in RFC 5937 | ||||
| [RFC5937]. | ||||
| 3.1. Inputs | 3.1. Inputs | |||
| No additional inputs are needed. | No additional inputs are needed. | |||
| 3.2. Initialization | 3.2. Initialization | |||
| Two additional values are initialized. | Two additional values are initialized. | |||
| (l) permitted_key_purpose_ids: a set of key purpose identifiers; | (l) permitted_key_purpose_ids: a set of key purpose identifiers; | |||
| all of the key purpose identifiers in the end-entity certificate | all of the key purpose identifiers in the end-entity certificate | |||
| MUST be included in this set. If the set is empty, then the | MUST be included in this set. If the set is empty, then the | |||
| certification path will be considered invalid if the end-entity | certification path will be considered invalid if the end-entity | |||
| certificate includes an extended key usage extension. The | certificate includes an extended key usage extension. The | |||
| initial value is a special value that represents the universal | initial value is the special value that represents the universal | |||
| set. | set. | |||
| (m) excluded_key_purpose_ids: a set of key purpose identifiers; the | (m) excluded_key_purpose_ids: a set of key purpose identifiers; the | |||
| key purpose identifiers in the end-entity certificate MUST NOT | key purpose identifiers in the end-entity certificate MUST NOT | |||
| be included in this set. If the set is empty, then no key | be included in this set. If the set is empty, then no key | |||
| purpose identifiers are excluded. The initial value is the | purpose identifiers are excluded. The initial value is the | |||
| empty set. | empty set. | |||
| 3.3. Basic Certificate Processing | 3.3. Basic Certificate Processing | |||
| skipping to change at page 5, line 25 ¶ | skipping to change at page 5, line 25 ¶ | |||
| intersection of its previous value and the value indicated | intersection of its previous value and the value indicated | |||
| in the extension field. | in the extension field. | |||
| (2) If excludedKeyPurposeIds is present in the certificate, set | (2) If excludedKeyPurposeIds is present in the certificate, set | |||
| the excluded_key_purpose_ids state variable to the union of | the excluded_key_purpose_ids state variable to the union of | |||
| its previous value and the value indicated in the extension | its previous value and the value indicated in the extension | |||
| field. | field. | |||
| 3.5. Wrap-Up Procedure | 3.5. Wrap-Up Procedure | |||
| One additional processing step is needed. | Two additional processing steps are needed. | |||
| (h) If the EKU extension is included in the end-entity certificate, | (h) If the EKU extension is included in the end-entity certificate, | |||
| then confirm that the values meet the restrictions in the | then confirm that the values meet the restrictions in the | |||
| permitted_key_purpose_ids and excluded_key_purpose_ids state | permitted_key_purpose_ids and excluded_key_purpose_ids state | |||
| variables as follows: | variables as follows: | |||
| (1) If permitted_key_purpose_ids state variable is empty, then | (1) If permitted_key_purpose_ids state variable is empty, then | |||
| return a failure indication and an appropriate reason. | return a failure indication and an appropriate reason. | |||
| (2) If excluded_key_purpose_ids state variable is not empty, | (2) If excluded_key_purpose_ids state variable is not empty, | |||
| skipping to change at page 5, line 48 ¶ | skipping to change at page 6, line 5 ¶ | |||
| certificate. If any are present, then return a failure | certificate. If any are present, then return a failure | |||
| indication and an appropriate reason. | indication and an appropriate reason. | |||
| (3) If permitted_key_purpose_ids state variable is not the | (3) If permitted_key_purpose_ids state variable is not the | |||
| special value that represents the universal set, then | special value that represents the universal set, then | |||
| confirm that all of the key purpose identifiers in the end- | confirm that all of the key purpose identifiers in the end- | |||
| entity certificate are present in the state variable. If | entity certificate are present in the state variable. If | |||
| any are missing, then return a failure indication and an | any are missing, then return a failure indication and an | |||
| appropriate reason. | appropriate reason. | |||
| (i) If the EKU extension is not present in the end-entity | ||||
| certificate, then confirm that the permitted_key_purpose_ids | ||||
| state variable is the special value that represents the | ||||
| universal set and the excluded_key_purpose_ids state variable is | ||||
| the empty set. Otherwise, return a failure indication and an | ||||
| appropriate reason. | ||||
| 3.6. Outputs | 3.6. Outputs | |||
| No additional output values are returned. | No additional output values are returned. | |||
| 4. IANA Considerations | 4. IANA Considerations | |||
| Please assign an object identifier for the certificate extension | Please assign an object identifier for the certificate extension | |||
| specified in this document. Once the ASN.1 module is added, then an | specified in this document. | |||
| object identifier for that will be needed too. | ||||
| Please assign an object identifier for the ASN.1 module in the | ||||
| Appendix. | ||||
| 5. Security Considerations | 5. Security Considerations | |||
| When a CA includes the extended key usage constraints certificate | When a CA includes the extended key usage constraints certificate | |||
| extension marked as non-critical, a relying party that does not | ||||
| understand this extension will ignore it. As a result, the relying | ||||
| party might accept some key purpose identifiers in the end-entity | ||||
| certificate that would have been unauthorized. If it would be | ||||
| preferable for the certification path to be rejected, then the CA | ||||
| SHOULD mark the extended key usage constraints certificate extension | ||||
| as critical. | ||||
| When a CA includes the extended key usage constraints certificate | ||||
| extension for a subordinate CA, the OCSPSigning key purpose | extension for a subordinate CA, the OCSPSigning key purpose | |||
| identifier SHOULD be included in the permittedKeyPurposeIds field to | identifier SHOULD be included in the permittedKeyPurposeIds field to | |||
| enable the issuance of delegated OCSP Responder certificates. | enable the issuance of delegated OCSP Responder certificates. | |||
| 6. Normative References | 6. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, DOI | Requirement Levels", BCP 14, RFC 2119, DOI | |||
| 10.17487/RFC2119, March 1997, <http://www.rfc- | 10.17487/RFC2119, March 1997, | |||
| editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
| <http://www.rfc-editor.org/info/rfc5280>. | <http://www.rfc-editor.org/info/rfc5280>. | |||
| [X680] ITU-T, "Information technology -- Abstract Syntax Notation | [X680] ITU-T, "Information technology -- Abstract Syntax Notation | |||
| One (ASN.1): Specification of basic notation", ITU-T | One (ASN.1): Specification of basic notation", ITU-T | |||
| Recommendation X.680, 2002. | Recommendation X.680, 2002. | |||
| [X690] ITU-T, "Information technology -- ASN.1 encoding rules: | [X690] ITU-T, "Information technology -- ASN.1 encoding rules: | |||
| Specification of Basic Encoding Rules (BER), Canonical | Specification of Basic Encoding Rules (BER), Canonical | |||
| Encoding Rules (CER) and Distinguished Encoding Rules | Encoding Rules (CER) and Distinguished Encoding Rules | |||
| (DER)", ITU-T Recommendation X.690, 2002. | (DER)", ITU-T Recommendation X.690, 2002. | |||
| 7. Informative References | 7. Informative References | |||
| [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | |||
| Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | |||
| DOI 10.17487/RFC5912, June 2010, <http://www.rfc- | DOI 10.17487/RFC5912, June 2010, | |||
| editor.org/info/rfc5912>. | <http://www.rfc-editor.org/info/rfc5912>. | |||
| [RFC5937] Ashmore, S. and C. Wallace, "Using Trust Anchor | ||||
| Constraints during Certification Path Processing", | ||||
| RFC 5937, DOI 10.17487/RFC5937, August 2010, | ||||
| <http://www.rfc-editor.org/info/rfc5937>. | ||||
| Appendix: ASN.1 Module | Appendix: ASN.1 Module | |||
| EKUConstraints2016 { iso(1) identified-organization(3) dod(6) | EKUConstraints2016 { iso(1) identified-organization(3) dod(6) | |||
| internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) | internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) | |||
| id-mod-ekuConstraints2016(TBD) } | id-mod-ekuConstraints2016(TBD) } | |||
| DEFINITIONS IMPLICIT TAGS ::= BEGIN | DEFINITIONS IMPLICIT TAGS ::= BEGIN | |||
| -- EXPORTS ALL -- | -- EXPORTS ALL -- | |||
| skipping to change at page 7, line 43 ¶ | skipping to change at page 8, line 43 ¶ | |||
| MoreCertExtensions EXTENSION ::= { | MoreCertExtensions EXTENSION ::= { | |||
| ext-ExtKeyUsageConstraints, ... } | ext-ExtKeyUsageConstraints, ... } | |||
| ext-ExtKeyUsageConstraints EXTENSION ::= { | ext-ExtKeyUsageConstraints EXTENSION ::= { | |||
| SYNTAX EKUConstraints | SYNTAX EKUConstraints | |||
| IDENTIFIED BY id-ce-ekuConstraints } | IDENTIFIED BY id-ce-ekuConstraints } | |||
| id-ce-ekuConstraints OBJECT IDENTIFIER ::= { id-pe TBD } | id-ce-ekuConstraints OBJECT IDENTIFIER ::= { id-pe TBD } | |||
| EKUConstraints ::= SEQUENCE { | EKUConstraints ::= CHOICE { | |||
| permittedKeyPurposeIds [0] KeyPurposeIds OPTIONAL, | permittedKeyPurposeIds [0] KeyPurposeIds OPTIONAL, | |||
| excludedKeyPurposeIds [1] KeyPurposeIds OPTIONAL } | excludedKeyPurposeIds [1] KeyPurposeIds OPTIONAL } | |||
| ( WITH COMPONENTS { ..., permittedKeyPurposeIds PRESENT } | | ||||
| WITH COMPONENTS { ..., excludedKeyPurposeIds PRESENT } ) | ||||
| KeyPurposeIds ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId | KeyPurposeIds ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId | |||
| END | END | |||
| Acknowledgements | Acknowledgements | |||
| Many thanks to review and insightful comments from Santosh Chokhani, | Many thanks to review and insightful comments from Santosh Chokhani, | |||
| Stephen Farrell, Tom Gindin, Sean Leonard, Michael Richardson, Jim | Stephen Farrell, Tom Gindin, Sean Leonard, Michael Richardson, Stefan | |||
| Schaad, and Mike St.Johns. | Santesson, Jim Schaad, and Mike St.Johns. | |||
| Author's Address | Author's Address | |||
| Russell Housley | Russell Housley | |||
| Vigil Security, LLC | Vigil Security, LLC | |||
| 918 Spring Knoll Drive | 918 Spring Knoll Drive | |||
| Herndon, VA 20170 | Herndon, VA 20170 | |||
| USA | USA | |||
| EMail: housley@vigilsec.com | EMail: housley@vigilsec.com | |||
| End of changes. 17 change blocks. | ||||
| 23 lines changed or deleted | 47 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||