rfc-9118

Enhanced JSON Web Token (JWT) Claim Constraints for Secure Telephone Identity Revisited (STIR) Certificates

R. Housley
date2021-08 streamIETF areaart wgstir statusPROPOSED STANDARD pages12 canonicalhttps://www.rfc-editor.org/rfc/rfc9118 doi10.17487/RFC9118
RFC 8226 specifies the use of certificates for Secure Telephone Identity Credentials; these certificates are often called "Secure Telephone Identity Revisited (STIR) Certificates". RFC 8226 provides a certificate extension to constrain the JSON Web Token (JWT) claims that can be included in the Personal Assertion Token (PASSporT), as defined in RFC 8225. If the PASSporT signer includes a JWT claim outside the constraint boundaries, then the PASSporT recipient will reject the entire PASSporT. This document updates RFC 8226; it provides all of the capabilities available in the original certificate extension as well as an additional way to constrain the allowable JWT claims. The enhanced extension can also provide a list of claims that are not allowed to be included in the PASSporT.

updates

Extracted elements (18)

design-rationale §6

If mustExclude constraints are not needed, either the EnhancedJWTClaimConstraints or the original JWTClaimConstraints extension may be used. The guidance recommends JWTClaimConstraints for broader compatibility until the enhanced extension is widely implemented, on the presumption that earlier-specified extensions gain wider implementation first.

jose, pkix

design-rationale §1

The Enhanced JWT Claim Constraints extension was motivated by the delegation scenario in RFC 9060, where service providers issue STIR certificates to enterprises. The original JWTClaimConstraints extension lacked the ability to prohibit specific claims; adding mustExclude fills that gap and enables finer-grained authority delegation.

jose, pkix, security

interoperability-note §1

This document updates RFC 8226 by defining the EnhancedJWTClaimConstraints extension as a superset of the original JWTClaimConstraints extension. The two extensions are mutually exclusive within a single certificate; implementers must choose one based on whether mustExclude semantics are required.

jose, pkix

normative-requirement §3 MUST NOT

Claims listed in mustExclude MUST NOT appear in the PASSporT. The baseline PASSporT claims (iat, orig, dest) are always permitted and MUST NOT be part of the mustExclude list; if they appear there, the certificate MUST be treated as if the extension was not present.

jose, pkix, security

normative-requirement §3 MUST

Claims listed in mustInclude MUST appear in the PASSporT in addition to the baseline iat, orig, and dest claims. If mustInclude is absent, iat, orig, and dest MUST appear in the PASSporT.

jose, pkix, security

normative-requirement §3 MUST

Claims listed in permittedValues MUST exactly match one of the listed values if the claim is present in the PASSporT. A PASSporT lacking a permittedValues-listed claim is not thereby invalid unless the claim also appears in mustInclude.

jose, pkix, security

normative-requirement §3 MUST

JWT Claim Names MUST be ASCII strings (IA5String / ISO 646), following the precedent set in RFC 8226.

jose, pkix

normative-requirement §3 SHOULD NOT

The baseline PASSporT claims iat, orig, and dest SHOULD NOT be included in the mustInclude list, as they are already required by RFC 8225.

jose, pkix

normative-requirement §6 MUST NOT

The EnhancedJWTClaimConstraints extension and the JWTClaimConstraints extension from RFC 8226 MUST NOT both appear in the same certificate.

jose, pkix, security

protocol-element §3

The EnhancedJWTClaimConstraints certificate extension (OID id-pe-eJWTClaimConstraints, arc id-pe 33) is a non-critical, end-entity-only X.509 extension that constrains which JWT claims authentication services may include in PASSporT objects they sign. It supersedes the JWTClaimConstraints extension from RFC 8226 by adding a mustExclude capability.

jose, pkix, security

registry §7

IANA assigned decimal 101 (id-mod-eJWTClaimConstraints-2021) in the 'SMI Security for PKIX Module Identifier' registry (1.3.6.1.5.5.7.0) for the ASN.1 module defined in this document.

registry, pkix

registry §7

IANA assigned decimal 33 (id-pe-eJWTClaimConstraints) in the 'SMI Security for PKIX Certificate Extension' registry (1.3.6.1.5.5.7.1) for the Enhanced JWT Claim Constraints certificate extension.

registry, pkix, jose

security-consideration §8

Because the EnhancedJWTClaimConstraints extension is non-critical, implementations that do not recognize its OID will ignore it. Constraints on PASSporT validation will therefore only be enforced by relying parties that explicitly support the extension.

jose, pkix, security

security-consideration §8

Certificate issuers must avoid conflicting constraints: placing the same claim in both mustInclude and mustExclude will prevent any PASSporT from being successfully validated under that certificate.

jose, pkix, security

security-consideration §8 SHOULD NOT

Certificate issuers SHOULD NOT include the 'rcdi' claim in mustExclude for certificates used with the PASSporT Extension for Rich Call Data, as doing so would break the integrity protection mechanism defined in that extension.

jose, pkix, security

security-consideration §8

During certificate renewal, issuers must include exactly the same EnhancedJWTClaimConstraints extension in the new certificate as in the old one. Differing constraints across two simultaneously valid certificates with the same public key can cause inconsistent PASSporT validation outcomes.

jose, pkix, security

security-consideration §8

The digital signature on a PASSporT data structure will be valid even if Enhanced JWT Claim Constraints limits are violated; enforcement depends solely on proper implementation by verification services, not on cryptographic protection.

jose, pkix, security

wire-format §3

EnhancedJWTClaimConstraints is an ASN.1 SEQUENCE with three optional context-tagged components: mustInclude [0] JWTClaimNames, permittedValues [1] JWTClaimValuesList, and mustExclude [2] JWTClaimNames. At least one component MUST be present (enforced by WITH COMPONENTS constraint). JWTClaimName is encoded as IA5String; permitted values are UTF8String.

jose, pkix