rfc9118.original | rfc9118.txt | |||
---|---|---|---|---|
Network Working Group R. Housley | Internet Engineering Task Force (IETF) R. Housley | |||
Internet-Draft Vigil Security | Request for Comments: 9118 Vigil Security | |||
Updates: 8226 (if approved) 30 June 2021 | Updates: 8226 August 2021 | |||
Intended status: Standards Track | Category: Standards Track | |||
Expires: 1 January 2022 | ISSN: 2070-1721 | |||
Enhanced JWT Claim Constraints for STIR Certificates | Enhanced JSON Web Token (JWT) Claim Constraints for Secure Telephone | |||
draft-ietf-stir-enhance-rfc8226-04 | Identity Revisited (STIR) Certificates | |||
Abstract | Abstract | |||
RFC 8226 specifies the use of certificates for Secure Telephone | RFC 8226 specifies the use of certificates for Secure Telephone | |||
Identity Credentials, and these certificates are often called "STIR | Identity Credentials; these certificates are often called "Secure | |||
Certificates". RFC 8226 provides a certificate extension to | Telephone Identity Revisited (STIR) Certificates". RFC 8226 provides | |||
constrain the JSON Web Token (JWT) claims that can be included in the | a certificate extension to constrain the JSON Web Token (JWT) claims | |||
Personal Assertion Token (PASSporT) as defined in RFC 8225. If the | that can be included in the Personal Assertion Token (PASSporT), as | |||
PASSporT signer includes a JWT claim outside the constraint | defined in RFC 8225. If the PASSporT signer includes a JWT claim | |||
boundaries, then the PASSporT recipient will reject the entire | outside the constraint boundaries, then the PASSporT recipient will | |||
PASSporT. This document updates RFC 8226; it provides all of the | reject the entire PASSporT. This document updates RFC 8226; it | |||
capabilities available in the original certificate extension as well | provides all of the capabilities available in the original | |||
as an additional way to constrain the allowable JWT claims. The | certificate extension as well as an additional way to constrain the | |||
enhanced extension can also provide a list of claims that are not | allowable JWT claims. The enhanced extension can also provide a list | |||
allowed to be included in the PASSporT. | of claims that are not allowed to be included in the PASSporT. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 1 January 2022. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9118. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
as described in Section 4.e of the Trust Legal Provisions and are | include Simplified BSD License text as described in Section 4.e of | |||
provided without warranty as described in the Simplified BSD License. | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology | |||
3. Enhanced JWT Claim Constraints Syntax . . . . . . . . . . . . 3 | 3. Enhanced JWT Claim Constraints Syntax | |||
4. Usage Examples . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. Usage Examples | |||
5. Certificate Extension Example . . . . . . . . . . . . . . . . 5 | 5. Certificate Extension Example | |||
6. Guidance to Certification Authorities . . . . . . . . . . . . 7 | 6. Guidance to Certification Authorities | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 7. IANA Considerations | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 8. Security Considerations | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 | 9. References | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 9.1. Normative References | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 9.2. Informative References | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 9 | Appendix A. ASN.1 Module | |||
Appendix A. ASN.1 Module . . . . . . . . . . . . . . . . . . . . 10 | Acknowledgements | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 | Author's Address | |||
1. Introduction | 1. Introduction | |||
The use of certificates [RFC5280] in establishing authority over | The use of certificates [RFC5280] in establishing authority over | |||
telephone numbers is described in [RFC8226]. These certificates are | telephone numbers is described in [RFC8226]. These certificates are | |||
often called "STIR Certificates". STIR certificates are an important | often called "STIR Certificates". STIR certificates are an important | |||
element of the overall system that prevents the impersonation of | element of the overall system that prevents the impersonation of | |||
telephone numbers on the Internet. | telephone numbers on the Internet. | |||
Section 8 of [RFC8226] provides a certificate extension to constrain | Section 8 of [RFC8226] provides a certificate extension to constrain | |||
skipping to change at page 3, line 7 ¶ | skipping to change at line 95 ¶ | |||
This document defines an enhanced JWTClaimConstraints certificate | This document defines an enhanced JWTClaimConstraints certificate | |||
extension, which provides all of the capabilities available in the | extension, which provides all of the capabilities available in the | |||
original certificate extension as well as an additional way to | original certificate extension as well as an additional way to | |||
constrain the allowable JWT claims. That is, the enhanced extension | constrain the allowable JWT claims. That is, the enhanced extension | |||
can provide a list of claims that are not allowed to be included in | can provide a list of claims that are not allowed to be included in | |||
the PASSporT. | the PASSporT. | |||
The Enhanced JWT Claim Constraints certificate extension is needed to | The Enhanced JWT Claim Constraints certificate extension is needed to | |||
limit the authority when a parent STIR certificate delegates to a | limit the authority when a parent STIR certificate delegates to a | |||
subordinate STIR certificate. For example, | subordinate STIR certificate. For example, [RFC9060] describes the | |||
[I-D.ietf-stir-cert-delegation] describes the situation where service | situation where service providers issue a STIR certificate to | |||
providers issue a STIR certificate to enterprises or other customers | enterprises or other customers to sign PASSporTs, and the Enhanced | |||
to sign PASSporTs, and the Enhanced JWT Claim Constraints certificate | JWT Claim Constraints certificate extension can be used to prevent | |||
extension can be used to prevent specific claims from being included | specific claims from being included in PASSporTs and accepted as | |||
in PASSporTs and accepted as valid by the PASSporT recipient. | valid by the PASSporT recipient. | |||
The JWT Claim Constraints certificate extension defined in [RFC8226] | The JWT Claim Constraints certificate extension defined in [RFC8226] | |||
provides a list of claims that must be included in a valid PASSporT | provides a list of claims that must be included in a valid PASSporT | |||
as well as a list if permitted values for selected claims. The | as well as a list of permitted values for selected claims. The | |||
Enhanced JWT Claim Constraints certificate extension defined in this | Enhanced JWT Claim Constraints certificate extension defined in this | |||
document includes those capabilities and adds a list of claims that | document includes those capabilities and adds a list of claims that | |||
must not be included in a valid PASSporT. | must not be included in a valid PASSporT. | |||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Enhanced JWT Claim Constraints Syntax | 3. Enhanced JWT Claim Constraints Syntax | |||
The Enhanced JWT Claim Constraints certificate extension is non- | The Enhanced JWT Claim Constraints certificate extension is non- | |||
critical, applicable only to end-entity certificates, and defined | critical, applicable only to end-entity certificates, and defined | |||
with ASN.1 [X.680]. The syntax of the JWT claims in a PASSporT is | with ASN.1 [X.680]. The syntax of the JWT claims in a PASSporT is | |||
specified in [RFC8225]. | specified in [RFC8225]. | |||
The Enhanced JWT Claim Constraints certificate extension is optional, | The Enhanced JWT Claim Constraints certificate extension is optional, | |||
but when present, it constrains the JWT claims that authentication | but, when present, it constrains the JWT claims that authentication | |||
services may include in the PASSporT objects they sign. Constraints | services may include in the PASSporT objects they sign. Constraints | |||
are applied by certificate issuers and enforced by recipients when | are applied by certificate issuers and enforced by recipients when | |||
validating PASSporT claims as follows: | validating PASSporT claims as follows: | |||
1. mustInclude indicates JWT claims that MUST appear in the PASSporT | 1. mustInclude indicates JWT claims that MUST appear in the PASSporT | |||
in addition to the iat, orig, and dest claims. The baseline | in addition to the iat, orig, and dest claims. The baseline | |||
PASSporT claims ("iat", "orig", and "dest") are considered to be | PASSporT claims ("iat", "orig", and "dest") are considered to be | |||
required by [RFC8225], and these claims SHOULD NOT be part of the | required by [RFC8225], and these claims SHOULD NOT be part of the | |||
mustInclude list. If mustInclude is absent, the iat, orig, and | mustInclude list. If mustInclude is absent, the iat, orig, and | |||
dest claims MUST appear in the PASSporT. | dest claims MUST appear in the PASSporT. | |||
2. permittedValues indicates that if the claim name is present, the | 2. permittedValues indicates that, if the claim name is present, the | |||
claim MUST exactly match one of the listed values. | claim MUST exactly match one of the listed values. | |||
3. mustExclude indicates JWT claims that MUST NOT appear in the | 3. mustExclude indicates JWT claims that MUST NOT appear in the | |||
PASSporT. The baseline PASSporT claims ("iat", "orig", and | PASSporT. The baseline PASSporT claims ("iat", "orig", and | |||
"dest") are always permitted, and these claims MUST NOT be part | "dest") are always permitted, and these claims MUST NOT be part | |||
of the mustExclude list. If one of these baseline PASSporT | of the mustExclude list. If one of these baseline PASSporT | |||
claims appears in the mustExclude list, then the certificate MUST | claims appears in the mustExclude list, then the certificate MUST | |||
be treated as if the extension was not present. | be treated as if the extension was not present. | |||
Following the precedent in [RFC8226], JWT Claim Names MUST be ASCII | Following the precedent in [RFC8226], JWT Claim Names MUST be ASCII | |||
strings, which are also known as strings using the International | strings, which are also known as strings using the International | |||
Alphabet No. 5 [ISO646]. | Alphabet No. 5 [ISO646]. | |||
The Enhanced JWT Claim Constraints certificate extension is | The Enhanced JWT Claim Constraints certificate extension is | |||
identified by the following object identifier (OID): | identified by the following object identifier (OID): | |||
id-pe-eJWTClaimConstraints OBJECT IDENTIFIER ::= { id-pe TBD1 } | id-pe-eJWTClaimConstraints OBJECT IDENTIFIER ::= { id-pe 33 } | |||
The Enhanced JWT Claim Constraints certificate extension has the | The Enhanced JWT Claim Constraints certificate extension has the | |||
following syntax: | following syntax: | |||
EnhancedJWTClaimConstraints ::= SEQUENCE { | EnhancedJWTClaimConstraints ::= SEQUENCE { | |||
mustInclude [0] JWTClaimNames OPTIONAL, | mustInclude [0] JWTClaimNames OPTIONAL, | |||
-- The listed claim names MUST appear in the PASSporT | -- The listed claim names MUST appear in the PASSporT | |||
-- in addition to iat, orig, and dest. If absent, iat, orig, | -- in addition to iat, orig, and dest. If absent, iat, orig, | |||
-- and dest MUST appear in the PASSporT. | -- and dest MUST appear in the PASSporT. | |||
permittedValues [1] JWTClaimValuesList OPTIONAL, | permittedValues [1] JWTClaimValuesList OPTIONAL, | |||
skipping to change at page 5, line 12 ¶ | skipping to change at line 190 ¶ | |||
JWTClaimName ::= IA5String | JWTClaimName ::= IA5String | |||
4. Usage Examples | 4. Usage Examples | |||
Consider these usage examples with a PASSporT claim called | Consider these usage examples with a PASSporT claim called | |||
"confidence" with values "low", "medium", and "high". These examples | "confidence" with values "low", "medium", and "high". These examples | |||
illustrate the constraints that are imposed by mustInclude, | illustrate the constraints that are imposed by mustInclude, | |||
permittedValues, and mustExclude: | permittedValues, and mustExclude: | |||
* If a CA issues a certificate to an authentication service that | * If a certification authority (CA) issues a certificate to an | |||
includes an Enhanced JWT Claim Constraints certificate extension | authentication service that includes an Enhanced JWT Claim | |||
that contains the mustInclude JWTClaimName "confidence", then an | Constraints certificate extension that contains the mustInclude | |||
authentication service is required to include the "confidence" | JWTClaimName "confidence", then an authentication service is | |||
claim in all PASSporTs it generates and signs. A verification | required to include the "confidence" claim in all PASSporTs it | |||
service will treat as invalid any PASSporT it receives without a | generates and signs. A verification service will treat any | |||
"confidence" PASSporT claim. | PASSporT it receives without a "confidence" PASSporT claim as | |||
invalid. | ||||
* If a CA issues a certificate to an authentication service that | * If a CA issues a certificate to an authentication service that | |||
includes an Enhanced JWT Claim Constraints certificate extension | includes an Enhanced JWT Claim Constraints certificate extension | |||
that contains the permittedValues JWTClaimName "confidence" and a | that contains the permittedValues JWTClaimName "confidence" and a | |||
permitted "high" value, then a verification service will treat as | permitted "high" value, then a verification service will treat any | |||
invalid any PASSporT it receives with a PASSporT "confidence" | PASSporT it receives with a PASSporT "confidence" claim with a | |||
claim with a value other than "high". However, a verification | value other than "high" as invalid. However, a verification | |||
service will not treat as invalid a PASSporT it receives without a | service will not treat a PASSporT it receives without a PASSporT | |||
PASSporT "confidence" claim at all, unless "confidence" also | "confidence" claim at all as invalid, unless "confidence" also | |||
appears in mustInclude. | appears in mustInclude. | |||
* If a CA issues a certificate to an authentication service that | * If a CA issues a certificate to an authentication service that | |||
includes an Enhanced JWT Claim Constraints certificate extension | includes an Enhanced JWT Claim Constraints certificate extension | |||
that contains the mustExclude JWTClaimName "confidence", then a | that contains the mustExclude JWTClaimName "confidence", then a | |||
verification service will treat as invalid any PASSporT it | verification service will treat any PASSporT it receives with a | |||
receives with a PASSporT "confidence" claim regardless of the | PASSporT "confidence" claim as invalid regardless of the claim | |||
claim value. | value. | |||
5. Certificate Extension Example | 5. Certificate Extension Example | |||
A certificate containing an example of the | A certificate containing an example of the | |||
EnhancedJWTClaimConstraints certificate extension is provided in | EnhancedJWTClaimConstraints certificate extension is provided in | |||
Figure 1. The certificate is provided in the format described in | Figure 1. The certificate is provided in the format described in | |||
[RFC7468]. The example of the EnhancedJWTClaimConstraints extension | [RFC7468]. The example of the EnhancedJWTClaimConstraints extension | |||
from the certificate is shown in Figure 2. The example imposes four | from the certificate is shown in Figure 2. The example imposes three | |||
constraints: | constraints: | |||
1. The "confidence" claim must be present in the PASSporT. | 1. The "confidence" claim must be present in the PASSporT. | |||
2. The "confidence" claim must have a value of "high" or "medium". | 2. The "confidence" claim must have a value of "high" or "medium". | |||
3. The "priority" claim must not be present in the PASSporT. | 3. The "priority" claim must not be present in the PASSporT. | |||
NOTE: This certificate in Figure 1 will need to be corrected once | ||||
IANA assigns the object identifier for the certificate extension. | ||||
-----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
MIICqjCCAlCgAwIBAgIUH7Zd3rQ5AsvOlzLnzUHhrVhDSlowCgYIKoZIzj0EAwIw | MIICpzCCAk2gAwIBAgIUH7Zd3rQ5AsvOlzLnzUHhrVhDSlswCgYIKoZIzj0EAwIw | |||
KTELMAkGA1UEBhMCVVMxGjAYBgNVBAMMEUJPR1VTIFNIQUtFTiBST09UMB4XDTIx | KTELMAkGA1UEBhMCVVMxGjAYBgNVBAMMEUJPR1VTIFNIQUtFTiBST09UMB4XDTIx | |||
MDQxNTEyMTg1NloXDTIyMDQxNTEyMTg1NlowbDELMAkGA1UEBhMCVVMxCzAJBgNV | MDcxNTIxNTIxNVoXDTIyMDcxNTIxNTIxNVowbDELMAkGA1UEBhMCVVMxCzAJBgNV | |||
BAgMAlZBMRAwDgYDVQQHDAdIZXJuZG9uMR4wHAYDVQQKDBVCb2d1cyBFeGFtcGxl | BAgMAlZBMRAwDgYDVQQHDAdIZXJuZG9uMR4wHAYDVQQKDBVCb2d1cyBFeGFtcGxl | |||
IFRlbGVjb20xDTALBgNVBAsMBFZvSVAxDzANBgNVBAMMBlNIQUtFTjBZMBMGByqG | IFRlbGVjb20xDTALBgNVBAsMBFZvSVAxDzANBgNVBAMMBlNIQUtFTjBZMBMGByqG | |||
SM49AgEGCCqGSM49AwEHA0IABNR6C6nBWRA/fXTglV03aXkXy8hx9oBttVLhsTZ1 | SM49AgEGCCqGSM49AwEHA0IABNR6C6nBWRA/fXTglV03aXkXy8hx9oBttVLhsTZ1 | |||
IYVRBao4OZhVf/Xv1a3xLsZ6KfdhuylSeAKuCoSbVGojYDGjggERMIIBDTAMBgNV | IYVRBao4OZhVf/Xv1a3xLsZ6KfdhuylSeAKuCoSbVGojYDGjggEOMIIBCjAMBgNV | |||
HRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUDlG3dxHyzKL/FZfS | HRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUDlG3dxHyzKL/FZfS | |||
PI7rpuueRbswHwYDVR0jBBgwFoAUlToKtrQeFrwwyXpMj1qu3TQEeoEwQgYJYIZI | PI7rpuueRbswHwYDVR0jBBgwFoAUlToKtrQeFrwwyXpMj1qu3TQEeoEwQgYJYIZI | |||
AYb4QgENBDUWM1RoaXMgY2VydGlmaWNhdGUgY2Fubm90IGJlIHRydXN0ZWQgZm9y | AYb4QgENBDUWM1RoaXMgY2VydGlmaWNhdGUgY2Fubm90IGJlIHRydXN0ZWQgZm9y | |||
IGFueSBwdXJwb3NlLjAWBggrBgEFBQcBGgQKMAigBhYEMTIzNDBRBgsrBgEFBQcB | IGFueSBwdXJwb3NlLjAWBggrBgEFBQcBGgQKMAigBhYEMTIzNDBOBggrBgEFBQcB | |||
l4+jcARCMECgDjAMFgpjb25maWRlbmNloSAwHjAcFgpjb25maWRlbmNlMA4MBGhp | IQRCMECgDjAMFgpjb25maWRlbmNloSAwHjAcFgpjb25maWRlbmNlMA4MBGhpZ2gM | |||
Z2gMBm1lZGl1baIMMAoWCHByaW9yaXR5MAoGCCqGSM49BAMCA0gAMEUCIQC1AR9y | Bm1lZGl1baIMMAoWCHByaW9yaXR5MAoGCCqGSM49BAMCA0gAMEUCIQCbNR4QK1um | |||
WWHoUWH3KZ0UIvBamAThQvjJCyKWuHQIyR6LSAIgWhuf+di772aGlWhMpv5uSua5 | +0vq2CE1B1/W3avYeREsPi/7RKHffL+5eQIgarHot+X9Rl7SOyNBq5X5JyEMx0SQ | |||
ljiGsKx+dMEIE2uU978= | hRLkCY3Zoz2OCNQ= | |||
-----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
Figure 1. Example Certificate. | Figure 1: Example Certificate | |||
0 64: SEQUENCE { | 0 64: SEQUENCE { | |||
2 14: [0] { | 2 14: [0] { | |||
4 12: SEQUENCE { | 4 12: SEQUENCE { | |||
6 10: IA5String 'confidence' | 6 10: IA5String 'confidence' | |||
: } | : } | |||
: } | : } | |||
18 32: [1] { | 18 32: [1] { | |||
20 30: SEQUENCE { | 20 30: SEQUENCE { | |||
22 28: SEQUENCE { | 22 28: SEQUENCE { | |||
skipping to change at page 6, line 52 ¶ | skipping to change at line 275 ¶ | |||
: } | : } | |||
: } | : } | |||
: } | : } | |||
52 12: [2] { | 52 12: [2] { | |||
54 10: SEQUENCE { | 54 10: SEQUENCE { | |||
56 8: IA5String 'priority' | 56 8: IA5String 'priority' | |||
: } | : } | |||
: } | : } | |||
: } | : } | |||
Figure 2. Example EnhancedJWTClaimConstraints extension. | Figure 2: Example EnhancedJWTClaimConstraints Extension | |||
6. Guidance to Certification Authorities | 6. Guidance to Certification Authorities | |||
The EnhancedJWTClaimConstraints extension specified in this document | The EnhancedJWTClaimConstraints extension specified in this document | |||
and the JWTClaimConstraints extension specified in [RFC8226] MUST NOT | and the JWTClaimConstraints extension specified in [RFC8226] MUST NOT | |||
both appear in the same certificate. | both appear in the same certificate. | |||
If the situation calls for mustExclude constraints, then the | If the situation calls for mustExclude constraints, then the | |||
EnhancedJWTClaimConstraints extension is the only extension that can | EnhancedJWTClaimConstraints extension is the only extension that can | |||
express the constraints. | express the constraints. | |||
On the other hand, if the situation does not call for mustExclude | On the other hand, if the situation does not call for mustExclude | |||
constraints, then either the EnhancedJWTClaimConstraints extension or | constraints, then either the EnhancedJWTClaimConstraints extension or | |||
the JWTClaimConstraints extension can express the constraints. Until | the JWTClaimConstraints extension can express the constraints. Until | |||
such time as the EnhancedJWTClaimConstraints become widely | such time as support for the EnhancedJWTClaimConstraints extension | |||
implemented, the use of the JWTClaimConstraints extension may be more | becomes widely implemented, the use of the JWTClaimConstraints | |||
likely to be implemented. This guess is based on the presumption | extension may be more likely to be supported. This guess is based on | |||
that the first specified extension will be implemented more widely in | the presumption that the first specified extension will be | |||
the next few years. | implemented more widely in the next few years. | |||
7. IANA Considerations | 7. IANA Considerations | |||
This document makes use of object identifiers for the Enhanced JWT | This document makes use of object identifiers for the Enhanced JWT | |||
Claim Constraints certificate extension defined in Section 3 and the | Claim Constraints certificate extension defined in Section 3 and the | |||
ASN.1 module identifier defined in Appendix A. Therefore, IANA is | ASN.1 module identifier defined in Appendix A. Therefore, IANA has | |||
asked to made the following assignments within the SMI Numbers | made the following assignments within the "Structure of Management | |||
Registry. | Information (SMI) Numbers (MIB Module Registrations)" registry. | |||
For the Enhanced JWT Claim Constraints certificate extension in the | For the Enhanced JWT Claim Constraints certificate extension in the | |||
"SMI Security for PKIX Certificate Extension" (1.3.6.1.5.5.7.1) | "SMI Security for PKIX Certificate Extension" (1.3.6.1.5.5.7.1) | |||
registry: | registry: | |||
TBD1 id-pe-eJWTClaimConstraints | +=========+============================+ | |||
| Decimal | Description | | ||||
+=========+============================+ | ||||
| 33 | id-pe-eJWTClaimConstraints | | ||||
+---------+----------------------------+ | ||||
Table 1 | ||||
For the ASN.1 module identifier in the "SMI Security for PKIX Module | For the ASN.1 module identifier in the "SMI Security for PKIX Module | |||
Identifier" (1.3.6.1.5.5.7.0) registry: | Identifier" (1.3.6.1.5.5.7.0) registry: | |||
TBD2 id-mod-eJWTClaimConstraints-2021 | +=========+==================================+ | |||
| Decimal | Description | | ||||
+=========+==================================+ | ||||
| 101 | id-mod-eJWTClaimConstraints-2021 | | ||||
+---------+----------------------------------+ | ||||
Table 2 | ||||
8. Security Considerations | 8. Security Considerations | |||
For further information on certificate security and practices, see | For further information on certificate security and practices, see | |||
[RFC5280], especially the Security Considerations section. | [RFC5280], especially the Security Considerations section. | |||
Since non-critical certificate extension are ignored by | Since non-critical certificate extensions are ignored by | |||
implementations that do not recognize the extension object identifier | implementations that do not recognize the extension object identifier | |||
(OID), constraints on PASSporT validation will only be applied by | (OID), constraints on PASSporT validation will only be applied by | |||
relying parties that recognize the EnhancedJWTClaimConstraints | relying parties that recognize the EnhancedJWTClaimConstraints | |||
extension. | extension. | |||
The Enhanced JWT Claim Constraints certificate extension can be used | The Enhanced JWT Claim Constraints certificate extension can be used | |||
by certificate issuers to provide limits on the acceptable PASSporTs | by certificate issuers to provide limits on the acceptable PASSporTs | |||
that can be accepted by verification services. Enforcement of these | that can be accepted by verification services. Enforcement of these | |||
limits depends upon proper implementation by the verification | limits depends upon proper implementation by the verification | |||
services. The digital signature on the PASSportT data structure will | services. The digital signature on the PASSporT data structure will | |||
be valid even if the limits are violated. | be valid even if the limits are violated. | |||
Use of the Enhanced JWT Claim Constraints certificate extension | Use of the Enhanced JWT Claim Constraints certificate extension | |||
permittedValues constraint is most useful when the claim definition | permittedValues constraint is most useful when the claim definition | |||
allows a specified set of values. In this way, all of the values | allows a specified set of values. In this way, all of the values | |||
that are not listed in the JWTClaimValuesList are prohibited in a | that are not listed in the JWTClaimValuesList are prohibited in a | |||
valid PASSporT. | valid PASSporT. | |||
Certificate issuers must take care when imposing constraints on the | Certificate issuers must take care when imposing constraints on the | |||
PASSporT claims and the claim values that can successfully validated; | PASSporT claims and the claim values that can be successfully | |||
some combinations can prevent any PASSporT from being successfully | validated; some combinations can prevent any PASSporT from being | |||
validated by the certificate. For example, an entry in mustInclude | successfully validated by the certificate. For example, an entry in | |||
and an entry in mustExclude for the same claim will prevent | mustInclude and an entry in mustExclude for the same claim will | |||
successful validation on any PASSporT. | prevent successful validation on any PASSporT. | |||
Certificate issuers SHOULD NOT include an entry in mustExclude for | Certificate issuers SHOULD NOT include an entry in mustExclude for | |||
the "rcdi" claim for a certificate that will be used with the | the "rcdi" claim for a certificate that will be used with the | |||
PASSporT Extension for Rich Call Data defined in | PASSporT Extension for Rich Call Data defined in [STIR-PASSPORT-RCD]. | |||
[I-D.ietf-stir-passport-rcd]. Excluding this claim would prevent the | Excluding this claim would prevent the integrity protection mechanism | |||
integrity protection mechanism from working properly. | from working properly. | |||
Certificate issuers must take care when performing certificate | Certificate issuers must take care when performing certificate | |||
renewal [RFC4949] to include exactly the same Enhanced JWT Claim | renewal [RFC4949] to include exactly the same Enhanced JWT Claim | |||
Constraints certificate extension in the new certificate as the old | Constraints certificate extension in the new certificate as the old | |||
one. Renewal usually takes place before the old certificate expires, | one. Renewal usually takes place before the old certificate expires, | |||
so there is a period of time where both the new certificate and the | so there is a period of time where both the new certificate and the | |||
old certificate are valid. If different constraints appear in the | old certificate are valid. If different constraints appear in the | |||
two certificates with the same public key, some PASSporTs might be | two certificates with the same public key, some PASSporTs might be | |||
valid when one certificate is used and invalid when the other one is | valid when one certificate is used and invalid when the other one is | |||
used. | used. | |||
9. Acknowledgements | 9. References | |||
Many thanks to Chris Wendt for his insight into the need for the for | ||||
the Enhanced JWT Claim Constraints certificate extension. | ||||
Thanks to Ben Campbell, Theresa Enghardt, Ben Kaduk, Erik Kline, Eric | ||||
Vyncke, and Rob Wilton for their thoughtful review and comments. The | ||||
document is much better as a result of their efforts. | ||||
10. References | ||||
10.1. Normative References | 9.1. 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, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://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, | |||
skipping to change at page 9, line 34 ¶ | skipping to change at line 407 ¶ | |||
[RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion | [RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion | |||
Token", RFC 8225, DOI 10.17487/RFC8225, February 2018, | Token", RFC 8225, DOI 10.17487/RFC8225, February 2018, | |||
<https://www.rfc-editor.org/info/rfc8225>. | <https://www.rfc-editor.org/info/rfc8225>. | |||
[RFC8226] Peterson, J. and S. Turner, "Secure Telephone Identity | [RFC8226] Peterson, J. and S. Turner, "Secure Telephone Identity | |||
Credentials: Certificates", RFC 8226, | Credentials: Certificates", RFC 8226, | |||
DOI 10.17487/RFC8226, February 2018, | DOI 10.17487/RFC8226, February 2018, | |||
<https://www.rfc-editor.org/info/rfc8226>. | <https://www.rfc-editor.org/info/rfc8226>. | |||
[X.680] International Telecommunication Union, "Information | [X.680] ITU-T, "Information technology - Abstract Syntax Notation | |||
Technology - Abstract Syntax Notation One (ASN.1): | One (ASN.1): Specification of basic notation", ITU-T | |||
Specification of basic notation", ISO/IEC 8824-1, August | Recommendation X.680, February 2021. | |||
2021. | ||||
10.2. Informative References | ||||
[I-D.ietf-stir-cert-delegation] | ||||
Peterson, J., "STIR Certificate Delegation", Work in | ||||
Progress, Internet-Draft, draft-ietf-stir-cert-delegation- | ||||
04, 22 February 2021, <https://www.ietf.org/archive/id/ | ||||
draft-ietf-stir-cert-delegation-04.txt>. | ||||
[I-D.ietf-stir-passport-rcd] | 9.2. Informative References | |||
Wendt, C. and J. Peterson, "PASSporT Extension for Rich | ||||
Call Data", Work in Progress, Internet-Draft, draft-ietf- | ||||
stir-passport-rcd-11, 29 March 2021, | ||||
<https://www.ietf.org/archive/id/draft-ietf-stir-passport- | ||||
rcd-11.txt>. | ||||
[ISO646] International Organization for Standardization, | [ISO646] ISO, "Information technology - ISO 7-bit coded character | |||
"Information processing - ISO 7-bit coded character set | set for information interchange", ISO/IEC 646:1991, | |||
for information interchange", ISO/IEC 646:1991, December | December 1991. | |||
1991. | ||||
[RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | |||
FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | |||
<https://www.rfc-editor.org/info/rfc4949>. | <https://www.rfc-editor.org/info/rfc4949>. | |||
[RFC7468] Josefsson, S. and S. Leonard, "Textual Encodings of PKIX, | [RFC7468] Josefsson, S. and S. Leonard, "Textual Encodings of PKIX, | |||
PKCS, and CMS Structures", RFC 7468, DOI 10.17487/RFC7468, | PKCS, and CMS Structures", RFC 7468, DOI 10.17487/RFC7468, | |||
April 2015, <https://www.rfc-editor.org/info/rfc7468>. | April 2015, <https://www.rfc-editor.org/info/rfc7468>. | |||
[RFC9060] Peterson, J., "Secure Telephone Identity Revisited (STIR) | ||||
Certificate Delegation", RFC 9060, DOI 10.17487/RFC9060, | ||||
August 2021, <https://www.rfc-editor.org/rfc/rfc9060>. | ||||
[STIR-PASSPORT-RCD] | ||||
Wendt, C. and J. Peterson, "PASSporT Extension for Rich | ||||
Call Data", Work in Progress, Internet-Draft, draft-ietf- | ||||
stir-passport-rcd-12, 12 July 2021, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-stir- | ||||
passport-rcd-12>. | ||||
Appendix A. ASN.1 Module | Appendix A. ASN.1 Module | |||
This appendix provides the ASN.1 [X.680] definitions for the Enhanced | This appendix provides the ASN.1 [X.680] definitions for the Enhanced | |||
JWT Claim Constraints certificate extension. The module defined in | JWT Claim Constraints certificate extension. The module defined in | |||
this appendix are compatible with the ASN.1 specifications published | this appendix is compatible with the ASN.1 specifications published | |||
in 2015. | in 2015. | |||
This ASN.1 module imports ASN.1 from [RFC5912]. | This ASN.1 module imports ASN.1 from [RFC5912]. | |||
<CODE BEGINS> | <CODE BEGINS> | |||
EnhancedJWTClaimConstraints-2021 | EnhancedJWTClaimConstraints-2021 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-eJWTClaimConstraints-2021(TBD2) } | id-mod-eJWTClaimConstraints-2021(101) } | |||
DEFINITIONS EXPLICIT TAGS ::= BEGIN | DEFINITIONS EXPLICIT TAGS ::= BEGIN | |||
IMPORTS | IMPORTS | |||
id-pe | id-pe | |||
FROM PKIX1Explicit-2009 -- From RFC 5912 | FROM PKIX1Explicit-2009 -- From RFC 5912 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-pkix1-explicit-02(51) } | id-mod-pkix1-explicit-02(51) } | |||
skipping to change at page 11, line 6 ¶ | skipping to change at line 473 ¶ | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-pkixCommon-02(57) } ; | id-mod-pkixCommon-02(57) } ; | |||
-- Enhanced JWT Claim Constraints Certificate Extension | -- Enhanced JWT Claim Constraints Certificate Extension | |||
ext-eJWTClaimConstraints EXTENSION ::= { | ext-eJWTClaimConstraints EXTENSION ::= { | |||
SYNTAX EnhancedJWTClaimConstraints | SYNTAX EnhancedJWTClaimConstraints | |||
IDENTIFIED BY id-pe-eJWTClaimConstraints } | IDENTIFIED BY id-pe-eJWTClaimConstraints } | |||
id-pe-eJWTClaimConstraints OBJECT IDENTIFIER ::= { id-pe TBD1 } | id-pe-eJWTClaimConstraints OBJECT IDENTIFIER ::= { id-pe 33 } | |||
EnhancedJWTClaimConstraints ::= SEQUENCE { | EnhancedJWTClaimConstraints ::= SEQUENCE { | |||
mustInclude [0] JWTClaimNames OPTIONAL, | mustInclude [0] JWTClaimNames OPTIONAL, | |||
-- The listed claim names MUST appear in the PASSporT | -- The listed claim names MUST appear in the PASSporT | |||
-- in addition to iat, orig, and dest. If absent, iat, orig, | -- in addition to iat, orig, and dest. If absent, iat, orig, | |||
-- and dest MUST appear in the PASSporT. | -- and dest MUST appear in the PASSporT. | |||
permittedValues [1] JWTClaimValuesList OPTIONAL, | permittedValues [1] JWTClaimValuesList OPTIONAL, | |||
-- If the claim name is present, the claim MUST contain one | -- If the claim name is present, the claim MUST contain one | |||
-- of the listed values. | -- of the listed values. | |||
mustExclude [2] JWTClaimNames OPTIONAL } | mustExclude [2] JWTClaimNames OPTIONAL } | |||
skipping to change at page 11, line 35 ¶ | skipping to change at line 502 ¶ | |||
claim JWTClaimName, | claim JWTClaimName, | |||
values SEQUENCE SIZE (1..MAX) OF UTF8String } | values SEQUENCE SIZE (1..MAX) OF UTF8String } | |||
JWTClaimNames ::= SEQUENCE SIZE (1..MAX) OF JWTClaimName | JWTClaimNames ::= SEQUENCE SIZE (1..MAX) OF JWTClaimName | |||
JWTClaimName ::= IA5String | JWTClaimName ::= IA5String | |||
END | END | |||
<CODE ENDS> | <CODE ENDS> | |||
Acknowledgements | ||||
Many thanks to Chris Wendt for his insight into the need for the for | ||||
the Enhanced JWT Claim Constraints certificate extension. | ||||
Thanks to Ben Campbell, Theresa Enghardt, Ben Kaduk, Erik Kline, Éric | ||||
Vyncke, and Rob Wilton for their thoughtful review and comments. The | ||||
document is much better as a result of their efforts. | ||||
Author's Address | Author's Address | |||
Russ Housley | Russ Housley | |||
Vigil Security, LLC | Vigil Security, LLC | |||
516 Dranesville Road | 516 Dranesville Road | |||
Herndon, VA, 20170 | Herndon, VA 20170 | |||
United States of America | United States of America | |||
Email: housley@vigilsec.com | Email: housley@vigilsec.com | |||
End of changes. 43 change blocks. | ||||
147 lines changed or deleted | 151 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/ |