idnits 2.17.1 draft-ietf-stir-enhance-rfc8226-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- -- The draft header indicates that this document updates RFC8226, but the abstract doesn't seem to directly say this. It does mention RFC8226 though, so this could be OK. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (15 February 2021) is 1164 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Looks like a reference, but probably isn't: '0' on line 244 -- Looks like a reference, but probably isn't: '1' on line 248 -- Looks like a reference, but probably isn't: '2' on line 256 -- Looks like a reference, but probably isn't: '3' on line 260 Summary: 0 errors (**), 0 flaws (~~), 1 warning (==), 6 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group R. Housley 3 Internet-Draft Vigil Security 4 Updates: 8226 (if approved) 15 February 2021 5 Intended status: Standards Track 6 Expires: 19 August 2021 8 Enhanced JWT Claim Constraints for STIR Certificates 9 draft-ietf-stir-enhance-rfc8226-00 11 Abstract 13 RFC 8226 provides a certificate extension to constrain the JWT claims 14 that can be included in the PASSporT as defined in RFC 8225. If the 15 signer includes a JWT claim outside the constraint boundaries, then 16 the recipient will reject the entire PASSporT. This document defines 17 additional ways that the JWT claims can be constrained. 19 Status of This Memo 21 This Internet-Draft is submitted in full conformance with the 22 provisions of BCP 78 and BCP 79. 24 Internet-Drafts are working documents of the Internet Engineering 25 Task Force (IETF). Note that other groups may also distribute 26 working documents as Internet-Drafts. The list of current Internet- 27 Drafts is at https://datatracker.ietf.org/drafts/current/. 29 Internet-Drafts are draft documents valid for a maximum of six months 30 and may be updated, replaced, or obsoleted by other documents at any 31 time. It is inappropriate to use Internet-Drafts as reference 32 material or to cite them other than as "work in progress." 34 This Internet-Draft will expire on 19 August 2021. 36 Copyright Notice 38 Copyright (c) 2021 IETF Trust and the persons identified as the 39 document authors. All rights reserved. 41 This document is subject to BCP 78 and the IETF Trust's Legal 42 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 43 license-info) in effect on the date of publication of this document. 44 Please review these documents carefully, as they describe your rights 45 and restrictions with respect to this document. Code Components 46 extracted from this document must include Simplified BSD License text 47 as described in Section 4.e of the Trust Legal Provisions and are 48 provided without warranty as described in the Simplified BSD License. 50 Table of Contents 52 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 53 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 54 3. Enhanced JWT Claim Constraints Syntax . . . . . . . . . . . . 3 55 4. Usage Examples . . . . . . . . . . . . . . . . . . . . . . . 4 56 5. Certificate Extension Example . . . . . . . . . . . . . . . . 5 57 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 58 7. Security Considerations . . . . . . . . . . . . . . . . . . . 7 59 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 60 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 61 9.1. Normative References . . . . . . . . . . . . . . . . . . 7 62 9.2. Informative References . . . . . . . . . . . . . . . . . 8 63 Appendix A. ASN.1 Module . . . . . . . . . . . . . . . . . . . . 8 64 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 66 1. Introduction 68 The use of certificates [RFC5280] in establishing authority over 69 telephone numbers is described in [RFC8226]. 71 Section 8 of [RFC8226] provides a certificate extension to constrain 72 the JWT claims that can be included in the PASSporT [RFC8225]. If 73 the signer includes a JWT claim outside the constraint boundaries, 74 then the recipient will reject the entire PASSporT. 76 This document defines an enhanced JWTClaimConstraints certificate 77 extension, which provides all of the capabilities available in the 78 original certificate extension as well as some additional ways to 79 constrain the allowable JWT claims. 81 2. Terminology 83 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 84 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 85 "OPTIONAL" in this document are to be interpreted as described in 86 BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all 87 capitals, as shown here. 89 3. Enhanced JWT Claim Constraints Syntax 91 Certificate subjects are limited to specific values for PASSporT 92 claims with the Enhanced JWT Claim Constraints certificate extension; 93 issuers permit all claims by omitting the Enhanced JWT Claim 94 Constraints certificate extension from the extension field of the 95 certificate [RFC5280]. The certificate extension is non-critical, 96 applicable only to end-entity certificates, and defined with ASN.1 97 [X.680]. The syntax of the JWT claims in a PASSporT is specified in 98 [RFC8225]. 100 The Enhanced JWT Claim Constraints certificate extension is optional, 101 but when present, it constrains the JWT claims that authentication 102 services may include in the PASSporT objects they sign. Constraints 103 are applied by certificate issuers and enforced by recipients when 104 validating PASSporT claims as follows: 106 1. mustInclude indicates JWT claims that MUST appear in the PASSporT 107 in addition to the iat, orig, and dest claims. The baseline 108 PASSporT claims ("iat", "orig", and "dest") are considered to be 109 permitted by default, and these claims SHOULD NOT be part of the 110 mustInclude list. If mustInclude is absent, the iat, orig, and 111 dest claims MUST appear in the PASSporT. 113 2. permittedValues indicates that if the claim name is present, the 114 claim MUST contain one of the listed values. 116 3. mustExclude indicates JWT claims that MUST NOT appear in the 117 PASSporT. in addition to the iat, orig, and dest claims. The 118 baseline PASSporT claims ("iat", "orig", and "dest") are 119 considered to be permitted by default, and these claims MUST NOT 120 be part of the mustExclude list. 122 4. excludedValues indicates that if the claim name is present, the 123 claim MUST NOT contain any of the listed values. 125 The Enhanced JWT Claim Constraints certificate extension is 126 identified by the following object identifier (OID): 128 id-pe-eJWTClaimConstraints OBJECT IDENTIFIER ::= { id-pe TBD1 } 130 The Enhanced JWT Claim Constraints certificate extension has the 131 following syntax: 133 EnhancedJWTClaimConstraints ::= SEQUENCE { 134 mustInclude [0] JWTClaimNames OPTIONAL, 135 -- The listed claim names MUST appear in the PASSporT 136 -- in addition to iat, orig, and dest. If absent, iat, orig, 137 -- and dest MUST appear in the PASSporT. 138 permittedValues [1] JWTClaimValuesList OPTIONAL, 139 -- If the claim name is present, the claim MUST contain one 140 -- of the listed values. 141 mustExclude [2] JWTClaimNames OPTIONAL, 142 -- The listed claim names MUST NOT appear in the PASSporT. 143 excludedValues [3] JWTClaimValuesList OPTIONAL } 144 -- If the claim name is present, the claim MUST NOT contain 145 -- any of the listed values. 147 ( WITH COMPONENTS { ..., mustInclude PRESENT } | 148 WITH COMPONENTS { ..., permittedValues PRESENT } | 149 WITH COMPONENTS { ..., mustExclude PRESENT } | 150 WITH COMPONENTS { ..., excludedValues PRESENT } ) 152 JWTClaimValuesList ::= SEQUENCE SIZE (1..MAX) OF JWTClaimValues 154 JWTClaimValues ::= SEQUENCE { 155 claim JWTClaimName, 156 values SEQUENCE SIZE (1..MAX) OF UTF8String } 158 JWTClaimNames ::= SEQUENCE SIZE (1..MAX) OF JWTClaimName 160 JWTClaimName ::= IA5String 162 4. Usage Examples 164 Consider these usage examples with a PASSporT claim called 165 "confidence" with values "low", "medium", and "high". These examples 166 illustrate the constraints that are imposed by mustInclude, 167 permittedValues, mustExclude, and excludedValues: 169 * If a CA issues to an authentication service certificate that 170 includes an Enhanced JWT Claim Constraints certificate extension 171 that contains the mustInclude JWTClaimName "confidence", then an 172 authentication service is required to include the "confidence" 173 claim in all PASSporTs it generates and signs; a verification 174 service will treat as invalid any PASSporT it receives with a 175 PASSporT claim that does not include the "confidence" claim. 177 * If a CA issues to an authentication service certificate that 178 includes an Enhanced JWT Claim Constraints certificate extension 179 that contains the permittedValues JWTClaimName "confidence" and a 180 permitted "high" value, then a recipient authentication service 181 will treat as invalid any PASSporT it receives with a PASSporT 182 "confidence" claim with a value other than "high". However, a 183 recipient authentication service will not treat as invalid a 184 PASSporT it receives without a PASSporT "confidence" claim at all. 186 * If a CA issues to an authentication service certificate that 187 includes an Enhanced JWT Claim Constraints certificate extension 188 that contains the mustExclude JWTClaimName "confidence", then a 189 recipient authentication service will treat as invalid any 190 PASSporT it receives with a PASSporT "confidence" claim regardless 191 of the claim value. 193 * If a CA issues to an authentication service certificate that 194 includes an Enhanced JWT Claim Constraints certificate extension 195 that contains the excludedValues JWTClaimName "confidence" and a 196 permitted "low" value, then a recipient authentication service 197 will treat as invalid any PASSporT it receives with a PASSporT 198 "confidence" claim with a value of "low". However, a recipient 199 authentication service will not treat as invalid a PASSporT it 200 receives without a PASSporT "confidence" claim at all. 202 5. Certificate Extension Example 204 A certificate containing an example of the 205 EnhancedJWTClaimConstraints certificate extension is provided in 206 Figure 1. The certificate is provided in the format described in 207 [RFC7468]. The example of the EnhancedJWTClaimConstraints extension 208 from the certificate is shown in Figure 2. The example imposes four 209 constraints: 211 1. The "confidence" claim must be present in the PASSporT. 213 2. The "confidence" claim must have a value of "high" or "medium". 215 3. The "priority" claim must not be present in the PASSporT. 217 4. The "assurance" claim, if present in the PASSporT, must not have 218 a value of "low". 220 NOTE: This certificate in Figure 1 will need to be corrected once 221 IANA assigns the object identifier for the certificate extension. 223 -----BEGIN CERTIFICATE----- 224 MIICwjCCAmigAwIBAgIUH7Zd3rQ5AsvOlzLnzUHhrVhDSlkwCgYIKoZIzj0EAwIw 225 KTELMAkGA1UEBhMCVVMxGjAYBgNVBAMMEUJPR1VTIFNIQUtFTiBST09UMB4XDTIx 226 MDEyNjIwMTc1M1oXDTIyMDEyNjIwMTc1M1owbDELMAkGA1UEBhMCVVMxCzAJBgNV 227 BAgMAlZBMRAwDgYDVQQHDAdIZXJuZG9uMR4wHAYDVQQKDBVCb2d1cyBFeGFtcGxl 228 IFRlbGVjb20xDTALBgNVBAsMBFZvSVAxDzANBgNVBAMMBlNIQUtFTjBZMBMGByqG 229 SM49AgEGCCqGSM49AwEHA0IABNR6C6nBWRA/fXTglV03aXkXy8hx9oBttVLhsTZ1 230 IYVRBao4OZhVf/Xv1a3xLsZ6KfdhuylSeAKuCoSbVGojYDGjggEpMIIBJTAMBgNV 231 HRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUDlG3dxHyzKL/FZfS 232 PI7rpuueRbswHwYDVR0jBBgwFoAUlToKtrQeFrwwyXpMj1qu3TQEeoEwQgYJYIZI 233 AYb4QgENBDUWM1RoaXMgY2VydGlmaWNhdGUgY2Fubm90IGJlIHRydXN0ZWQgZm9y 234 IGFueSBwdXJwb3NlLjAWBggrBgEFBQcBGgQKMAigBhYEMTIzNDBpBgsrBgEFBQcB 235 l4+jcARaMFigDjAMFgpjb25maWRlbmNloSAwHjAcFgpjb25maWRlbmNlMA4MBGhp 236 Z2gMBm1lZGl1baIMMAoWCHByaW9yaXR5oxYwFDASFglhc3N1cmFuY2UwBQwDbG93 237 MAoGCCqGSM49BAMCA0gAMEUCIGEJnDIaAI0SiSh0YFWujezSpFVYPCvYh5xnNA1J 238 xxV+AiEApm9YYpEuuzBb7sWfh7ZveMWPfTsmCM5unTUaY6skAGE= 239 -----END CERTIFICATE----- 241 Figure 1. Example Certificate. 243 0 89: SEQUENCE { 244 2 14: [0] { 245 4 12: SEQUENCE { 246 6 10: IA5String 'confidence' 247 : } } 248 18 32: [1] { 249 20 30: SEQUENCE { 250 22 28: SEQUENCE { 251 24 10: IA5String 'confidence' 252 36 14: SEQUENCE { 253 38 4: UTF8String 'high' 254 44 6: UTF8String 'medium' 255 : } } } } 256 52 12: [2] { 257 54 10: SEQUENCE { 258 56 8: IA5String 'priority' 259 : } } 260 66 22: [3] { 261 68 20: SEQUENCE { 262 70 18: SEQUENCE { 263 72 9: IA5String 'assurance' 264 83 5: SEQUENCE { 265 85 3: UTF8String 'low' 266 : } } } } } 268 Figure 2. Example EnhancedJWTClaimConstraints extension. 270 6. IANA Considerations 272 This document makes use of object identifiers for the Enhanced JWT 273 Claim Constraints certificate extension defined in Section 3 and the 274 ASN.1 module identifier defined in Appendix A. Therefore, IANA is 275 asked to made the following assignments within the SMI Numbers 276 Registry. 278 For the Enhanced JWT Claim Constraints certificate extension in the 279 "SMI Security for PKIX Certificate Extension" (1.3.6.1.5.5.7.1) 280 registry: 282 TBD1 id-pe-eJWTClaimConstraints 284 For the ASN.1 module identifier in the "SMI Security for PKIX Module 285 Identifier" (1.3.6.1.5.5.7.0) registry: 287 TBD2 id-mod-eJWTClaimConstraints-2021 289 7. Security Considerations 291 For further information on certificate security and practices, see 292 [RFC5280], especially the Security Considerations section. 294 The Enhanced JWT Claim Constraints certificate extension can be used 295 by certificate issuers to provide limits on the acceptable PASSporT 296 that will be accepted by recipient verification services. 297 Enforcement of these limits depends upon proper implementation by the 298 recipient verification services. The digital signature on the 299 PASSportT data structure will be valid even if the limits are 300 violated. 302 8. Acknowledgements 304 Many thanks to Chris Wendt for his insight into the need for the for 305 the Enhanced JWT Claim Constraints certificate extension. 307 9. References 309 9.1. Normative References 311 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 312 Requirement Levels", BCP 14, RFC 2119, 313 DOI 10.17487/RFC2119, March 1997, 314 . 316 [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., 317 Housley, R., and W. Polk, "Internet X.509 Public Key 318 Infrastructure Certificate and Certificate Revocation List 319 (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, 320 . 322 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 323 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 324 May 2017, . 326 [RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion 327 Token", RFC 8225, DOI 10.17487/RFC8225, February 2018, 328 . 330 [RFC8226] Peterson, J. and S. Turner, "Secure Telephone Identity 331 Credentials: Certificates", RFC 8226, 332 DOI 10.17487/RFC8226, February 2018, 333 . 335 [X.680] International Telecommunication Union, "Information 336 Technology - Abstract Syntax Notation One (ASN.1): 337 Specification of basic notation", ISO/IEC 8824-1, August 338 2021. 340 9.2. Informative References 342 [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the 343 Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, 344 DOI 10.17487/RFC5912, June 2010, 345 . 347 [RFC7468] Josefsson, S. and S. Leonard, "Textual Encodings of PKIX, 348 PKCS, and CMS Structures", RFC 7468, DOI 10.17487/RFC7468, 349 April 2015, . 351 Appendix A. ASN.1 Module 353 This appendix provides the ASN.1 [X.680] definitions for the Enhanced 354 JWT Claim Constraints certificate extension. The module defined in 355 this appendix are compatible with the ASN.1 specifications published 356 in 2015. 358 This ASN.1 module imports ASN.1 from [RFC5912]. 360 361 EnhancedJWTClaimConstraints-2021 362 { iso(1) identified-organization(3) dod(6) internet(1) 363 security(5) mechanisms(5) pkix(7) id-mod(0) 364 id-mod-eJWTClaimConstraints-2021(TBD2) } 366 DEFINITIONS EXPLICIT TAGS ::= BEGIN 368 IMPORTS 370 id-pe 371 FROM PKIX1Explicit-2009 -- From RFC 5912 372 { iso(1) identified-organization(3) dod(6) internet(1) 373 security(5) mechanisms(5) pkix(7) id-mod(0) 374 id-mod-pkix1-explicit-02(51) } 376 EXTENSION 377 FROM PKIX-CommonTypes-2009 -- From RFC 5912 378 { iso(1) identified-organization(3) dod(6) internet(1) 379 security(5) mechanisms(5) pkix(7) id-mod(0) 380 id-mod-pkixCommon-02(57) } ; 382 -- Enhanced JWT Claim Constraints Certificate Extension 384 ext-eJWTClaimConstraints EXTENSION ::= { 385 SYNTAX EnhancedJWTClaimConstraints 386 IDENTIFIED BY id-pe-JWTClaimConstraints } 388 id-pe-eJWTClaimConstraints OBJECT IDENTIFIER ::= { id-pe TBD1 } 390 EnhancedJWTClaimConstraints ::= SEQUENCE { 391 mustInclude [0] JWTClaimNames OPTIONAL, 392 -- The listed claim names MUST appear in the PASSporT 393 -- in addition to iat, orig, and dest. If absent, iat, orig, 394 -- and dest MUST appear in the PASSporT. 395 permittedValues [1] JWTClaimValuesList OPTIONAL, 396 -- If the claim name is present, the claim MUST contain one 397 -- of the listed values. 398 mustExclude [2] JWTClaimNames OPTIONAL, 399 -- The listed claim names MUST NOT appear in the PASSporT. 400 excludedValues [3] JWTClaimValuesList OPTIONAL } 401 -- If the claim name is present, the claim MUST NOT contain 402 -- any of the listed values. 403 ( WITH COMPONENTS { ..., mustInclude PRESENT } | 404 WITH COMPONENTS { ..., permittedValues PRESENT } | 405 WITH COMPONENTS { ..., mustExclude PRESENT } | 406 WITH COMPONENTS { ..., excludedValues PRESENT } ) 408 JWTClaimValuesList ::= SEQUENCE SIZE (1..MAX) OF JWTClaimValues 410 JWTClaimValues ::= SEQUENCE { 411 claim JWTClaimName, 412 values SEQUENCE SIZE (1..MAX) OF UTF8String } 414 JWTClaimNames ::= SEQUENCE SIZE (1..MAX) OF JWTClaimName 416 JWTClaimName ::= IA5String 418 END 419 421 Author's Address 423 Russ Housley 424 Vigil Security, LLC 425 516 Dranesville Road 426 Herndon, VA, 20170 427 United States of America 429 Email: housley@vigilsec.com