RFC 9509 PROPOSED STANDARD SECURITY · CERTIFICATES · 5G

EKU for 5G NFs: X.509 Certificate Extended Key Usage (EKU) for 5G Network Functions

Three new certificate purpose labels so 5G network functions can prove a key is for signing tokens or encrypting JSON, and nothing else.

On rfc-editor.org ↗
PUBLISHED
March 2024
AUTHORS
T. Reddy.K, J. Ekman, D. Migault
STREAM
IETF
NEW KEYPURPOSEIDS
3 (37, 38, 39 under id-kp)
EKU REGISTRY ARC
1.3.6.1.5.5.7.3
ASN.1 MODULE OID
id-mod-nf-eku (108)
KEYUSAGE FOR JWS SIGNING
digitalSignature or nonRepudiation
KEYUSAGE FOR JWE
keyEncipherment
DOI
10.17487/RFC9509

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                        T. Reddy.K
Request for Comments: 9509                                      J. Ekman
Category: Standards Track                                          Nokia
ISSN: 2070-1721                                               D. Migault
                                                                Ericsson
                                                              March 2024


  X.509 Certificate Extended Key Usage (EKU) for 5G Network Functions

Abstract

   RFC 5280 specifies several extended key purpose identifiers
   (KeyPurposeIds) for X.509 certificates.  This document defines
   encrypting JSON objects in HTTP messages, using JSON Web Tokens
   (JWTs), and signing the OAuth 2.0 access tokens KeyPurposeIds for
   inclusion in the Extended Key Usage (EKU) extension of X.509 v3
   public key certificates used by Network Functions (NFs) for the 5G
   System.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   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/rfc9509.

Copyright Notice

   Copyright (c) 2024 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Revised BSD License text as described in Section 4.e of the
   Trust Legal Provisions and are provided without warranty as described
   in the Revised BSD License.

Table of Contents

   1.  Introduction
   2.  Terminology
   3.  Extended Key Purpose for Network Functions
   4.  Including the Extended Key Purpose in Certificates
   5.  Implications for a Certification Authority
   6.  Security Considerations
   7.  Privacy Considerations
   8.  IANA Considerations
   9.  References
     9.1.  Normative References
     9.2.  Informative References
   Appendix A.  ASN.1 Module
   Acknowledgments
   Contributor
   Authors' Addresses

1.  Introduction

   The operators of 5G ("fifth generation") systems as defined by 3GPP
   make use of an internal PKI to generate X.509 PKI certificates for
   the Network Functions (NFs) (Section 6 of [TS23.501]) in a 5G System.
   The certificates are used for the following purposes:

   *  Client and Server certificates for NFs in 5G Core (5GC) Service
      Based Architecture (SBA) (see Section 6.1.3c of [TS33.310] and
      Section 6.7.2 of [TS29.500])

   *  Client Credentials Assertion (CCA) uses JSON Web Tokens (JWTs)
      [RFC7519] and is secured with digital signatures based on the JSON
      Web Signature (JWS) [RFC7515] (see Section 13.3.8.2 of [TS33.501],
      and Section 6.7.5 of [TS29.500]).

   *  Certificates for encrypting JSON objects in HTTP messages between
      Security Edge Protection Proxies (SEPPs) using JSON Web Encryption
      (JWE) [RFC7516] (see Section 13.2.4.4 of [TS33.501], Section 6.3.2
      of [TS33.210], Section 6.7.4 of [TS29.500], and Section 5.3.2.1 of
      [TS29.573]).

   *  Certificates for signing the OAuth 2.0 access tokens for service
      authorization to grant temporary access to resources provided by
      NF producers using JWS (see Section 13.4.1 of [TS33.501] and
      Section 6.7.3 of [TS29.500]).

   [RFC5280] specifies several key usage extensions, defined via
   KeyPurposeIds, for X.509 certificates.  Key usage extensions added to
   a certificate are meant to express intent as to the purpose of the
   named usage, for humans and for complying libraries.  In addition,
   the IANA registry "SMI Security for PKIX Extended Key Purpose"
   [RFC7299] contains additional KeyPurposeIds.  The use of the
   anyExtendedKeyUsage KeyPurposeId, as defined in Section 4.2.1.12 of
   [RFC5280], is generally considered a poor practice.  This is
   especially true for publicly trusted certificates, whether they are
   multi-purpose or single-purpose, within the context of 5G Systems and
   the 5GC Service Based Architecture.

   If the purpose of the issued certificates is not restricted, i.e.,
   the type of operations for which a public key contained in the
   certificate can be used are not specified, those certificates could
   be used for another purpose than intended, increasing the risk of
   cross-protocol attacks.  Failure to ensure proper segregation of
   duties means that a NF that generates the public/private keys and
   applies for a certificate to the operator certification authority
   could obtain a certificate that can be misused for tasks that this NF
   is not entitled to perform.  For example, a NF service consumer could
   potentially impersonate NF service producers using its certificate.
   Additionally, in cases where the certificate's purpose is intended
   for use by the NF service consumer as a client certificate, it's
   essential to ensure that the NF with this client certificate and the
   corresponding private key are not allowed to sign the Client
   Credentials Assertion (CCA).  When a NF service producer receives the
   signed CCA from the NF service consumer, the NF should only accept
   the token if the CCA is signed with a certificate that has been
   explicitly issued for this purpose.

   The KeyPurposeId id-kp-serverAuth (Section 4.2.1.12 of [RFC5280]) can
   be used to identify that the certificate is for a server (e.g., NF
   service producer), and the KeyPurposeId id-kp-clientAuth
   (Section 4.2.1.12 of [RFC5280]) can be used to identify that the
   certificate is for a client (e.g., NF service consumer).  However,
   there are currently no KeyPurposeIds for the other usages of
   certificates in a 5G System.  This document addresses the above
   problem by defining the EKU extension of X.509 public key
   certificates for signing the JWT Claims Set using JWS, encrypting
   JSON objects in HTTP messages using JWE, and signing the OAuth 2.0
   access tokens using JWS.

   Vendor-defined KeyPurposeIds used within a PKI governed by the vendor
   or a group of vendors typically do not pose interoperability
   concerns, as non-critical extensions can be safely ignored if
   unrecognized.  However, using or misusing KeyPurposeIds outside of
   their intended vendor-controlled environment can lead to
   interoperability issues.  Therefore, it is advisable not to rely on
   vendor-defined KeyPurposeIds.  Instead, the specification defines
   standard KeyPurposeIds to ensure interoperability across various
   implementations.

   Although the specification focuses on a 5G use case, the standard
   KeyPurposeIds defined in this document can be used in other
   deployments.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

3.  Extended Key Purpose for Network Functions

   This specification defines the KeyPurposeIds id-kp-jwt, id-kp-
   httpContentEncrypt, and id-kp-oauthAccessTokenSigning and uses these,
   respectively, for: signing the JWT Claims Set of CCA using JWS,
   encrypting JSON objects in HTTP messages between Security Edge
   Protection Proxies (SEPPs) using JWE, and signing the OAuth 2.0
   access tokens for service authorization to grant temporary access to
   resources provided by NF producers using JWS.  As described in
   [RFC5280], "[i]f the [Extended Key Usage] extension is present, then
   the certificate MUST only be used for one of the purposes indicated."
   [RFC5280] also notes that "[i]f multiple [key] purposes are indicated
   the application need not recognize all purposes indicated, as long as
   the intended purpose is present."

   Network Functions that verify the signature of a CCA represented as a
   JWT, decrypt JSON objects in HTTP messages between Security Edge
   Protection Proxies (SEPPs) using JWE, or verify the signature of an
   OAuth 2.0 access tokens for service authorization to grant temporary
   access to resources provided by NF producers using JWS SHOULD require
   that corresponding KeyPurposeIds be specified by the EKU extension.
   If the certificate requester knows the certificate users are mandated
   to use these KeyPurposeIds, it MUST enforce their inclusion.
   Additionally, such a certificate requester MUST ensure that the
   KeyUsage extension be set to digitalSignature or nonRepudiation (also
   designated as contentCommitment) for signature calculation and/or to
   keyEncipherment for secret key encryption.

4.  Including the Extended Key Purpose in Certificates

   [RFC5280] specifies the EKU X.509 certificate extension for use on
   end entity certificates.  The extension indicates one or more
   purposes for which the certified public key is valid.  The EKU
   extension can be used in conjunction with the key usage extension,
   which indicates the set of basic cryptographic operations for which
   the certified key may be used.  The EKU extension syntax is repeated
   here for convenience:

   ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId

   KeyPurposeId ::= OBJECT IDENTIFIER

   As described in [RFC5280], the EKU extension may, at the option of
   the certificate issuer, be either critical or non-critical.  The
   inclusion of KeyPurposeIds id-kp-jwt, id-kp-httpContentEncrypt, and
   id-kp-oauthAccessTokenSigning in a certificate indicates that the
   public key encoded in the certificate has been certified for use in
   the following:

   1.  Validating the JWS Signature in JWT.  The distinction between JWS
       and JWE is determined by the Key Usage (KU) that is set to
       digitalSignature or nonRepudiation for JWS and keyEncipherment
       for JWE.

   2.  Encrypting JSON objects in HTTP messages (for example, encrypting
       the content-encryption key (CEK) with the recipient's public key
       using the RSAES-OAEP algorithm to produce the JWE Encrypted Key).
       KU is set to keyEncipherment.

   3.  Signing OAuth 2.0 access tokens.  In this case, KU is set to
       digitalSignature or nonRepudiation.

        id-kp  OBJECT IDENTIFIER  ::= {
          iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) kp(3) }

   id-kp-jwt OBJECT IDENTIFIER ::= { id-kp 37 }
   id-kp-httpContentEncrypt OBJECT IDENTIFIER ::= { id-kp 38 }
   id-kp-oauthAccessTokenSigning OBJECT IDENTIFIER ::= { id-kp 39 }

5.  Implications for a Certification Authority

   The procedures and practices employed by a certification authority
   MUST ensure that the correct values for the EKU extension as well as
   the KU extension are inserted in each certificate that is issued.
   The inclusion of the id-kp-jwt, id-kp-httpContentEncrypt, and id-kp-
   oauthAccessTokenSigning KeyPurposeIds does not preclude the inclusion
   of other KeyPurposeIds.

6.  Security Considerations

   The Security Considerations of [RFC5280] are applicable to this
   document.  This extended key purpose does not introduce new security
   risks but instead reduces existing security risks by providing the
   means to identify if the certificate is generated to sign the JWT
   Claims Set, signing the OAuth 2.0 access tokens using JWS, or
   encrypting the CEK in JWE for encrypting JSON objects in HTTP
   messages.

   To reduce the risk of specific cross-protocol attacks, the relying
   party or the relying party software may additionally prohibit use of
   specific combinations of KeyPurposeIds.  The procedure for allowing
   or disallowing combinations of KeyPurposeIds using Excluded
   KeyPurposeId and Permitted KeyPurposeId, as carried out by a relying
   party, is defined in Section 4 of [RFC9336].  Examples of Excluded
   KeyPurposeIds include the presence of the anyExtendedKeyUsage
   KeyPurposeId or the complete absence of the EKU extension in a
   certificate.  Examples of Permitted KeyPurposeIds include the
   presence of id-kp-jwt, id-kp-httpContentEncrypt, or id-kp-
   oauthAccessTokenSigning KeyPurposeIds.

7.  Privacy Considerations

   In some security protocols, such as TLS 1.2 [RFC5246], certificates
   are exchanged in the clear.  In other security protocols, such as TLS
   1.3 [RFC8446], the certificates are encrypted.  The inclusion of the
   EKU extension can help an observer determine the purpose of the
   certificate.  In addition, if the certificate is issued by a public
   certification authority, the inclusion of an EKU extension can help
   an attacker to monitor the Certificate Transparency logs [RFC9162] to
   identify the purpose of the certificate.

8.  IANA Considerations

   IANA has registered the following OIDs in the "SMI Security for PKIX
   Extended Key Purpose" registry (1.3.6.1.5.5.7.3).  These OIDs are
   defined in Section 4.

   +=========+===============================+============+
   | Decimal | Description                   | References |
   +=========+===============================+============+
   | 37      | id-kp-jwt                     | RFC 9509   |
   +---------+-------------------------------+------------+
   | 38      | id-kp-httpContentEncrypt      | RFC 9509   |
   +---------+-------------------------------+------------+
   | 39      | id-kp-oauthAccessTokenSigning | RFC 9509   |
   +---------+-------------------------------+------------+

                           Table 1

   IANA has registered the following ASN.1[X.680] module OID in the "SMI
   Security for PKIX Module Identifier" registry (1.3.6.1.5.5.7.0).
   This OID is defined in Appendix A.

   +=========+===============+============+
   | Decimal | Description   | References |
   +=========+===============+============+
   | 108     | id-mod-nf-eku | RFC 9509   |
   +---------+---------------+------------+

                   Table 2

9.  References

9.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC5280]  Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
              Housley, R., and W. Polk, "Internet X.509 Public Key
              Infrastructure Certificate and Certificate Revocation List
              (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008,
              <https://www.rfc-editor.org/info/rfc5280>.

   [RFC7515]  Jones, M., Bradley, J., and N. Sakimura, "JSON Web
              Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May
              2015, <https://www.rfc-editor.org/info/rfc7515>.

   [RFC7516]  Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)",
              RFC 7516, DOI 10.17487/RFC7516, May 2015,
              <https://www.rfc-editor.org/info/rfc7516>.

   [RFC7519]  Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token
              (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015,
              <https://www.rfc-editor.org/info/rfc7519>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [X.680]    ITU-T, "Information technology - Abstract Syntax Notation
              One (ASN.1): Specification of basic notation", ITU-T
              Recommendation X.680, February 2021,
              <https://www.itu.int/rec/T-REC-X.680>.

   [X.690]    ITU-T, "Information technology - ASN.1 encoding rules:
              Specification of Basic Encoding Rules (BER), Canonical
              Encoding Rules (CER) and Distinguished Encoding Rules
              (DER)", ITU-T Recommendation X.690, February 2021,
              <https://www.itu.int/rec/T-REC-X.690>.

9.2.  Informative References

   [RFC5246]  Dierks, T. and E. Rescorla, "The Transport Layer Security
              (TLS) Protocol Version 1.2", RFC 5246,
              DOI 10.17487/RFC5246, August 2008,
              <https://www.rfc-editor.org/info/rfc5246>.

   [RFC7299]  Housley, R., "Object Identifier Registry for the PKIX
              Working Group", RFC 7299, DOI 10.17487/RFC7299, July 2014,
              <https://www.rfc-editor.org/info/rfc7299>.

   [RFC8446]  Rescorla, E., "The Transport Layer Security (TLS) Protocol
              Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
              <https://www.rfc-editor.org/info/rfc8446>.

   [RFC9162]  Laurie, B., Messeri, E., and R. Stradling, "Certificate
              Transparency Version 2.0", RFC 9162, DOI 10.17487/RFC9162,
              December 2021, <https://www.rfc-editor.org/info/rfc9162>.

   [RFC9336]  Ito, T., Okubo, T., and S. Turner, "X.509 Certificate
              General-Purpose Extended Key Usage (EKU) for Document
              Signing", RFC 9336, DOI 10.17487/RFC9336, December 2022,
              <https://www.rfc-editor.org/info/rfc9336>.

   [TS23.501] 3GPP, "System architecture for the 5G System (5GS)",
              Release 18.4.0, 3GPP TS 23.501, December 2023,
              <https://www.3gpp.org/ftp/Specs/
              archive/23_series/23.501/23501-i40.zip>.

   [TS29.500] 3GPP, "5G System; Technical Realization of Service Based
              Architecture; Stage 3", Release 18.4.0, 3GPP TS 29.500,
              December 2023, <https://www.3gpp.org/ftp/Specs/
              archive/29_series/29.500/29500-i40.zip>.

   [TS29.573] 3GPP, "5G System; Public Land Mobile Network (PLMN)
              Interconnection; Stage 3", Release 18.5.0, 3GPP TS 29.573,
              December 2023, <https://www.3gpp.org/ftp/Specs/
              archive/29_series/29.573/29573-i50.zip>.

   [TS33.210] 3GPP, "Network Domain Security (NDS); IP network layer
              security", Release 17.1.0, 3GPP TS 33.210, September 2022,
              <https://www.3gpp.org/ftp/Specs/
              archive/33_series/33.210/33210-h10.zip>.

   [TS33.310] 3GPP, "Network Domain Security (NDS); Authentication
              Framework (AF)", Release 18.2.0, 3GPP TS 33.310, December
              2023, <https://www.3gpp.org/ftp/Specs/
              archive/33_series/33.310/33310-i20.zip>.

   [TS33.501] 3GPP, "Security architecture and procedures for 5G
              system", Release 18.4.0, 3GPP TS 33.501, December 2023,
              <https://www.3gpp.org/ftp/Specs/
              archive/33_series/33.501/33501-i40.zip>.

Appendix A.  ASN.1 Module

   The following module adheres to ASN.1 specifications [X.680] and
   [X.690].

   <CODE BEGINS>
   NF-EKU
     { iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-nf-eku (108) }

   DEFINITIONS IMPLICIT TAGS ::=
   BEGIN

   -- OID Arc

   id-kp OBJECT IDENTIFIER ::=
     { iso(1) identified-organization(3) dod(6) internet(1)
       security(5) mechanisms(5) pkix(7) kp(3) }

   -- Extended Key Usage Values

   id-kp-jwt OBJECT IDENTIFIER ::= { id-kp 37 }
   id-kp-httpContentEncrypt OBJECT IDENTIFIER ::= { id-kp 38 }
   id-kp-oauthAccessTokenSigning OBJECT IDENTIFIER ::= { id-kp 39 }

   END
   <CODE ENDS>

Acknowledgments

   We would like to thank Corey Bonnell, Ilari Liusvaara, Carl Wallace,
   and Russ Housley for their useful feedback.  Thanks to Yoav Nir for
   the secdir review, Elwyn Davies for the genart review, and Benson
   Muite for the intdir review.

   Thanks to Paul Wouters, Lars Eggert, and Éric Vyncke for the IESG
   review.

Contributor

   The following individual has contributed to this document:

   German Peinado
   Nokia
   Email: german.peinado@nokia.com


Authors' Addresses

   Tirumaleswar Reddy.K
   Nokia
   India
   Email: kondtir@gmail.com


   Jani Ekman
   Nokia
   Finland
   Email: jani.ekman@nokia.com


   Daniel Migault
   Ericsson
   Canada
   Email: daniel.migault@ericsson.com

AI ELI5

On this page
PROBLEMOperators of 5G systems issue X.509 certificates to Network Functions for several jobs, but only client and server authentication had a standard purpose label. A certificate with no stated purpose could be misused for tasks its holder is not entitled to do.
MECHANISMThe RFC defines three KeyPurposeIds for the Extended Key Usage extension: id-kp-jwt, id-kp-httpContentEncrypt and id-kp-oauthAccessTokenSigning. Each is paired with a required KeyUsage setting.
WHY IT MATTERSCertificates can now say whether their key signs a Client Credentials Assertion, encrypts JSON objects between SEPPs, or signs OAuth 2.0 access tokens. The IDs are standard, so they can be used outside 5G too.

§1The Problem in 5G Core Networks

Operators of 5G systems, as defined by 3GPP, run an internal PKI that issues X.509 certificates to Network Functions (NFs). The RFC lists four uses: client and server certificates for NFs in the 5G Core Service Based Architecture; signing the Client Credentials Assertion (CCA), which is a JSON Web Token secured with JWS; encrypting JSON objects in HTTP messages between Security Edge Protection Proxies (SEPPs) using JWE; and signing OAuth 2.0 access tokens that grant temporary access to resources offered by NF producers.

RFC 5280 already provides id-kp-serverAuth and id-kp-clientAuth, which can mark a certificate as belonging to a server (such as an NF service producer) or a client (such as an NF service consumer). There were no standard KeyPurposeIds for the other three uses.

A 5G network has many small helpers, and each gets a badge. Only two kinds of badge label existed, so the badges for other jobs could not say what they were for.

§2Why Unrestricted Certificates Are Risky

If a certificate does not restrict what its public key can be used for, it could be used for something other than intended, which raises the risk of cross-protocol attacks. The RFC says that using anyExtendedKeyUsage is generally considered poor practice, and especially so in 5G Systems and the 5GC Service Based Architecture.

It gives two examples. An NF service consumer could potentially impersonate NF service producers using its certificate. And an NF holding a client certificate and its private key must not be allowed to sign the CCA; the NF service producer should accept a CCA only if it was signed with a certificate explicitly issued for that purpose.

The RFC also argues against vendor-defined KeyPurposeIds. They are fine inside a vendor-controlled PKI, but using them outside that environment can cause interoperability problems, so standard ones are defined instead.

If a badge does not say what it is for, someone could use their visitor badge to open the vault. Clear labels stop that.

§3The Three New Key Purposes

The RFC defines three KeyPurposeIds: id-kp-jwt, id-kp-httpContentEncrypt and id-kp-oauthAccessTokenSigning. They are used, respectively, for signing the JWT Claims Set of the CCA using JWS, for encrypting JSON objects in HTTP messages between SEPPs using JWE, and for signing OAuth 2.0 access tokens using JWS.

Network Functions that verify a CCA signature, decrypt JSON objects between SEPPs, or verify an access token signature SHOULD require that the matching KeyPurposeId appears in the EKU extension. If the certificate requester knows its users are mandated to use these KeyPurposeIds, it MUST enforce their inclusion.

The requester must also make sure the KeyUsage extension is set to digitalSignature or nonRepudiation (also called contentCommitment) for signatures, and to keyEncipherment for secret key encryption.

There are three new labels: one for signing identity tokens, one for locking up messages between gateways, and one for signing access passes. The checker should look for the right label before trusting a badge.

NEW KEYPURPOSEIDS UNDER ID-KP (RFC 9509)
  • 37id-kp-jwt — Signing the JWT Claims Set of a CCA using JWS.
  • 38id-kp-httpContentEncrypt — Encrypting JSON objects in HTTP messages between SEPPs using JWE.
  • 39id-kp-oauthAccessTokenSigning — Signing OAuth 2.0 access tokens using JWS.

§4Putting Them in a Certificate

The EKU extension from RFC 5280 is a SEQUENCE SIZE (1..MAX) OF KeyPurposeId, where each KeyPurposeId is an object identifier. The issuer may mark the extension critical or non-critical. The new identifiers sit under the existing id-kp arc as values 37, 38 and 39.

The RFC says that including these identifiers certifies the public key for three uses. First, validating the JWS signature in a JWT, where the distinction between JWS and JWE is made by KeyUsage: digitalSignature or nonRepudiation for JWS, keyEncipherment for JWE. Second, encrypting JSON objects in HTTP messages, for example encrypting the content-encryption key with the recipient's public key using RSAES-OAEP; KeyUsage is keyEncipherment. Third, signing OAuth 2.0 access tokens, with KeyUsage digitalSignature or nonRepudiation.

The labels are written on the badge as special numbers from a big official list. Next to each label there is a second note saying whether the key is for signing or for locking.

§5What a Certification Authority Must Do

A certification authority's procedures and practices MUST ensure the correct values for both the EKU extension and the KU extension are inserted in every certificate it issues.

Including the three new KeyPurposeIds does not rule out other KeyPurposeIds in the same certificate. RFC 5280 is quoted for the general rule: if the EKU extension is present, the certificate must only be used for one of the purposes indicated, and an application need not recognize every purpose listed as long as the intended one is present.

The office that hands out badges must print the right job labels every time. A badge can carry more than one label if needed.

§6Security and Privacy Considerations

The Security Considerations of RFC 5280 apply. The RFC states that these key purposes do not introduce new security risks but reduce existing ones, by letting a relying party identify whether a certificate was issued to sign the JWT Claims Set, sign OAuth 2.0 access tokens, or encrypt the content-encryption key in JWE.

A relying party may also prohibit specific combinations of KeyPurposeIds, using the Excluded and Permitted KeyPurposeId procedure in Section 4 of RFC 9336. Examples of excluded cases are the presence of anyExtendedKeyUsage or a missing EKU extension. Examples of permitted ones are the presence of the three new identifiers.

On privacy, the EKU extension helps an observer determine what a certificate is for. In TLS 1.2 certificates are sent in the clear, while TLS 1.3 encrypts them. If the certificate comes from a public certification authority, an attacker could watch Certificate Transparency logs to learn its purpose.

Clear labels make it harder to misuse a badge. The small catch is that anyone who can see the badge can also read its labels.

§7IANA Registrations

IANA registered the three OIDs in the "SMI Security for PKIX Extended Key Purpose" registry (1.3.6.1.5.5.7.3) as decimal values 37, 38 and 39. It also registered the ASN.1 module identifier id-mod-nf-eku as decimal 108 in the "SMI Security for PKIX Module Identifier" registry (1.3.6.1.5.5.7.0).

Appendix A gives the ASN.1 module, which simply defines the id-kp arc and the three new values under it.

The official number list now has three new entries, 37, 38 and 39, so everyone uses the same numbers for the same jobs.

§8References