rfc9509xml2.original.xml | rfc9509.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
<?rfc toc="yes"?> | <!DOCTYPE rfc [ | |||
<?rfc tocompact="yes"?> | <!ENTITY nbsp " "> | |||
<?rfc tocdepth="3"?> | <!ENTITY zwsp "​"> | |||
<?rfc tocindent="yes"?> | <!ENTITY nbhy "‑"> | |||
<?rfc symrefs="yes"?> | <!ENTITY wj "⁠"> | |||
<?rfc sortrefs="yes"?> | ]> | |||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | |||
<?rfc compact="yes"?> | std" consensus="true" docName="draft-ietf-lamps-nf-eku-05" number="9509" ipr="tr | |||
<?rfc subcompact="no"?> | ust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" tocDepth="3" | |||
<rfc category="std" docName="draft-ietf-lamps-nf-eku-05" ipr="trust200902"> | symRefs="true" sortRefs="true" version="3"> | |||
<front> | <front> | |||
<title abbrev="EKUs for NFs">X.509 Certificate Extended Key Usage (EKU) | <title abbrev="EKUs for 5G Network Functions">X.509 Certificate Extended Key Usage (EKU) | |||
for 5G Network Functions</title> | for 5G Network Functions</title> | |||
<seriesInfo name="RFC" value="9509"/> | ||||
<author fullname="Tirumaleswar Reddy" initials="T." surname="Reddy"> | <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K"> | |||
<organization>Nokia</organization> | <organization>Nokia</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<country>India</country> | <country>India</country> | |||
</postal> | </postal> | |||
<email>kondtir@gmail.com</email> | <email>kondtir@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Jani Ekman" initials="J." surname="Ekman"> | <author fullname="Jani Ekman" initials="J." surname="Ekman"> | |||
<organization>Nokia</organization> | <organization>Nokia</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<country>Finland</country> | <country>Finland</country> | |||
</postal> | </postal> | |||
<email>jani.ekman@nokia.com</email> | <email>jani.ekman@nokia.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Daniel Migault" initials="D." surname="Migault"> | <author fullname="Daniel Migault" initials="D." surname="Migault"> | |||
<organization>Ericsson</organization> | <organization>Ericsson</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<country>Canada</country> | <country>Canada</country> | |||
</postal> | </postal> | |||
<email>daniel.migault@ericsson.com</email> | <email>daniel.migault@ericsson.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2024" month="March"/> | ||||
<date /> | <area>sec</area> | |||
<workgroup>lamps</workgroup> | ||||
<workgroup>LAMPS WG</workgroup> | <keyword>3GPP</keyword> | |||
<abstract> | <abstract> | |||
<t>RFC 5280 specifies several extended key purpose identifiers | <t>RFC 5280 specifies several extended key purpose identifiers | |||
(KeyPurposeIds) for X.509 certificates. This document defines encrypting | (KeyPurposeIds) for X.509 certificates. This document defines encrypting | |||
JSON objects in HTTP messages, JSON Web Token (JWT) and signing the | JSON objects in HTTP messages, using JSON Web Tokens (JWTs), and signing | |||
OAuth 2.0 access tokens KeyPurposeIds for inclusion in the Extended Key | the OAuth 2.0 access tokens KeyPurposeIds for inclusion in the Extended | |||
Usage (EKU) extension of X.509 v3 public key certificates used by | Key Usage (EKU) extension of X.509 v3 public key certificates used by | |||
Network Functions (NFs) for the 5G System.</t> | Network Functions (NFs) for the 5G System.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="intro" title="Introduction"> | <section anchor="intro" numbered="true" toc="default"> | |||
<t>The Operators of 5G ("fifth generation") systems as defined by 3GPP | <name>Introduction</name> | |||
<t>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 | make use of an internal PKI to generate X.509 PKI certificates for the | |||
Network Functions (NFs) (Section 6 of <xref target="TS23.501"></xref>) | Network Functions (NFs) (Section 6 of <xref target="TS23.501" | |||
in a 5G system. The certificates are used for the following | format="default"/>) in a 5G System. The certificates are used for the | |||
purposes:</t> | following purposes:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>Client and Server certificates for NFs in 5G Core (5GC) Service Base | |||
<t>Client and Server certificates for NFs in 5GC Service Based | d | |||
Architecture (see Section 6.1.3c of <xref | Architecture (SBA) (see Section 6.1.3c of <xref target="TS33.310" | |||
target="TS33.310"></xref>)</t> | format="default"/> and Section 6.7.2 of <xref target="TS29.500" | |||
format="default"/>)</li> | ||||
<t>Client Credentials Assertion (CCA) uses JSON Web Tokens (JWT) | <li>Client Credentials Assertion (CCA) uses JSON Web Tokens (JWTs) | |||
<xref target="RFC7519"></xref> and is secured with digital | <xref target="RFC7519" format="default"/> and is secured with digital | |||
signatures based on JSON Web Signature (JWS) <xref | signatures based on the JSON Web Signature (JWS) <xref | |||
target="RFC7515"></xref> (see Section 13.3.8.2 of <xref | target="RFC7515" format="default"/> (see Section 13.3.8.2 of <xref | |||
target="TS33.501"></xref>).</t> | target="TS33.501" format="default"/>, and Section 6.7.5 of <xref | |||
target="TS29.500" format="default"/>).</li> | ||||
<t>Certificates for encrypting JSON objects in HTTP messages between | <li>Certificates for encrypting JSON objects in HTTP messages between | |||
Security Edge Protection Proxies (SEPPs) using JSON Web Encryption | Security Edge Protection Proxies (SEPPs) using JSON Web Encryption | |||
(JWE) <xref target="RFC7516"></xref> (Section 13.2.4.4 of <xref | (JWE) <xref target="RFC7516" format="default"/> (see Section 13.2.4.4 | |||
target="TS33.501"></xref>) and Section 6.3.2 of <xref | of <xref target="TS33.501" format="default"/>, Section 6.3.2 of <xref | |||
target="TS33.210"></xref>).</t> | target="TS33.210" format="default"/>, Section 6.7.4 of <xref | |||
target="TS29.500" format="default"/>, and Section 5.3.2.1 of <xref | ||||
<t>Certificates for signing the OAuth 2.0 access tokens for service | target="TS29.573" format="default"/>).</li> | |||
authorization to grant temporary access to resources provided by NF | <li>Certificates for signing the OAuth 2.0 access tokens for service | |||
producers using JWS (see Section 13.4.1 of <xref | authorization to grant temporary access to resources provided by NF | |||
target="TS33.501"></xref>).</t> | producers using JWS (see Section 13.4.1 of <xref target="TS33.501" | |||
</list></t> | format="default"/> and Section 6.7.3 of <xref target="TS29.500" | |||
format="default"/>).</li> | ||||
<t><xref target="RFC5280"></xref> specifies several key usage | </ul> | |||
<t><xref target="RFC5280" format="default"/> specifies several key usage | ||||
extensions, defined via KeyPurposeIds, for X.509 certificates. 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 | 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 | purpose of the named usage, for humans and for complying libraries. In | |||
addition, the IANA registry "SMI Security for PKIX Extended Key Purpose" | addition, the IANA registry "SMI Security for PKIX Extended Key Purpose" | |||
<xref target="RFC7299"></xref> contains additional KeyPurposeIds.The use | <xref target="RFC7299" format="default"/> contains additional | |||
of the anyExtendedKeyUsage KeyPurposeId, as defined in Section 4.2.1.12 | KeyPurposeIds. The use of the anyExtendedKeyUsage KeyPurposeId, as | |||
of <xref target="RFC5280"></xref>, is generally considered a poor | defined in <xref target="RFC5280" sectionFormat="of" | |||
practice. This is especially true for publicly trusted certificates, | section="4.2.1.12"/>, is generally considered a poor practice. This is | |||
whether they are multi-purpose or single-purpose, within the context of | especially true for publicly trusted certificates, whether they are | |||
5G systems and the 5G Core Service Based Architecture.</t> | multi-purpose or single-purpose, within the context of 5G Systems and | |||
the 5GC Service Based Architecture.</t> | ||||
<t>If the purpose of the issued certificates is not restricted, i.e., | <t>If the purpose of the issued certificates is not restricted, i.e., | |||
the type of operations for which a public key contained in the | the type of operations for which a public key contained in the | |||
certificate can be used are not specified, those certificates could be | certificate can be used are not specified, those certificates could be | |||
used for another purpose than intended, increasing the risk of | used for another purpose than intended, increasing the risk of | |||
cross-protocol attacks. Failure to ensure proper segregation of duties | cross-protocol attacks. Failure to ensure proper segregation of duties | |||
means that a NF which generates the public/private keys and applies for | means that a NF that generates the public/private keys and applies for a | |||
a certificate to the operator CA, could obtain a certificate which can | certificate to the operator certification authority could obtain a | |||
be misused for tasks that this NF is not entitled to perform. For | certificate that can be misused for tasks that this NF is not entitled | |||
example, a NF service consumer could potentially impersonate NF service | to perform. For example, a NF service consumer could potentially | |||
producers using its certificate. Additionally, in cases where the | impersonate NF service producers using its certificate. Additionally, in | |||
certificate's purpose is intended for use by the NF service consumer as | cases where the certificate's purpose is intended for use by the NF | |||
a client certificate, it's essential to ensure that the NF with this | service consumer as a client certificate, it's essential to ensure that | |||
client certificate and the corresponding private key is not allowed to | the NF with this client certificate and the corresponding private key | |||
sign the Client Credentials Assertion (CCA). When a NF service producer | are not allowed to sign the Client Credentials Assertion (CCA). When a | |||
receives the signed CCA from the NF service consumer, the NF should only | NF service producer receives the signed CCA from the NF service | |||
accept the token if the CCA is signed with a certificate that has been | consumer, the NF should only accept the token if the CCA is signed with | |||
explicitly issued for this purpose.</t> | a certificate that has been explicitly issued for this purpose.</t> | |||
<t>The KeyPurposeId id-kp-serverAuth (<xref target="RFC5280" | ||||
<t>The KeyPurposeId id-kp-serverAuth (Section 4.2.1.12 of <xref | sectionFormat="of" section="4.2.1.12"/>) can be used to identify that | |||
target="RFC5280"></xref>) can be used to identify that the certificate | the certificate is for a server (e.g., NF service producer), and the | |||
is for a server (e.g., NF service producer), and the KeyPurposeId | KeyPurposeId id-kp-clientAuth (<xref target="RFC5280" | |||
id-kp-clientAuth (Section 4.2.1.12 of <xref target="RFC5280"></xref>) | sectionFormat="of" section="4.2.1.12"/>) can be used to identify that | |||
can be used to identify that the certificate is for a client (e.g., NF | the certificate is for a client (e.g., NF service consumer). However, | |||
service consumer). However, there are currently no KeyPurposeIds for the | there are currently no KeyPurposeIds for the other usages of | |||
other usages of certificates in 5G System. This document addresses the | certificates in a 5G System. This document addresses the above problem by | |||
above problem by defining the Extended Key Usage (EKU) extension of | defining the EKU extension of X.509 public key certificates for signing | |||
X.509 public key certificates for signing the JWT Claims set using JWS, | the JWT Claims Set using JWS, encrypting JSON objects in HTTP messages | |||
encrypting JSON objects in HTTP messages using JWE, and signing the | using JWE, and signing the OAuth 2.0 access tokens using JWS.</t> | |||
OAuth 2.0 access tokens using JWS.</t> | ||||
<t>Vendor-defined KeyPurposeIds used within a PKI governed by the vendor | <t>Vendor-defined KeyPurposeIds used within a PKI governed by the vendor | |||
or a group of vendors typically do not pose interoperability concerns, | or a group of vendors typically do not pose interoperability concerns, | |||
as non-critical extensions can be safely ignored if unrecognized. | as non-critical extensions can be safely ignored if unrecognized. | |||
However, using or misusing KeyPurposeIds outside of their intended | However, using or misusing KeyPurposeIds outside of their intended | |||
vendor-controlled environment can lead to interoperability issues. | vendor-controlled environment can lead to interoperability issues. | |||
Therefore, it is advisable not to rely on vendor-defined KeyPurposeIds. | Therefore, it is advisable not to rely on vendor-defined KeyPurposeIds. | |||
Instead, the specification defines standard KeyPurposeIds to ensure | Instead, the specification defines standard KeyPurposeIds to ensure | |||
interoperability across various implementations.</t> | interoperability across various implementations.</t> | |||
<t>Although the specification focuses on a 5G use case, the standard | <t>Although the specification focuses on a 5G use case, the standard | |||
KeyPurposeIds defined in this document can be used in other | KeyPurposeIds defined in this document can be used in other | |||
deployments.</t> | deployments.</t> | |||
</section> | </section> | |||
<section anchor="notation" numbered="true" toc="default"> | ||||
<section anchor="notation" title="Terminology"> | <name>Terminology</name> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t> The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
"OPTIONAL" in this document are to be interpreted as described in BCP 14 | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
<xref target="RFC2119"></xref><xref target="RFC8174"></xref> when, and | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
only when, they appear in all capitals, as shown here.</t> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document | |||
are to be interpreted as described in BCP 14 <xref | ||||
target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they | ||||
appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Extended Key Purpose for Network Functions"> | <name>Extended Key Purpose for Network Functions</name> | |||
<t>This specification defines the KeyPurposeIds id-kp-jwt, | <t>This specification defines the KeyPurposeIds id-kp-jwt, | |||
id-kp-httpContentEncrypt, id-kp-oauthAccessTokenSigning and uses these | id-kp-httpContentEncrypt, and id-kp-oauthAccessTokenSigning | |||
for respectively signing the JWT Claims set of CCA using JWS, encrypting | and uses these, respectively, for: signing the JWT Claims Set | |||
JSON objects in HTTP messages between Security Edge Protection Proxies | of CCA using JWS, encrypting JSON objects in HTTP messages between | |||
(SEPPs) using JWE and signing the OAuth 2.0 access tokens for service | Security Edge Protection Proxies (SEPPs) using JWE, and signing the | |||
authorization to grant temporary access to resources provided by NF | OAuth 2.0 access tokens for service authorization to grant temporary | |||
producers using JWS. As described in <xref target="RFC5280"></xref>, | access to resources provided by NF producers using JWS. As described in | |||
"[i]f the [Extended Key Usage] extension is present, then the | <xref target="RFC5280" format="default"/>, "[i]f the [Extended Key | |||
certificate MUST only be used for one of the purposes indicated." <xref | Usage] extension is present, then the certificate <bcp14>MUST</bcp14> | |||
target="RFC5280"></xref> also notes that "[i]f multiple [key] purposes | only be used for one of the purposes indicated." <xref target="RFC5280" | |||
are indicated the application need not recognize all purposes indicated, | format="default"/> also notes that "[i]f multiple [key] purposes are | |||
as long as the intended purpose is present."</t> | indicated the application need not recognize all purposes indicated, as | |||
long as the intended purpose is present."</t> | ||||
<t>Network functions that verify the signature of a CCA represented as a | <t>Network Functions that verify the signature of a CCA represented as a | |||
JWT, decrypt JSON objects in HTTP messages between Security Edge | JWT, decrypt JSON objects in HTTP messages between Security Edge | |||
Protection Proxies (SEPPs) using JWE, or verify the signature of an | Protection Proxies (SEPPs) using JWE, or verify the signature of an | |||
OAuth 2.0 access tokens for service authorization to grant temporary | OAuth 2.0 access tokens for service authorization to grant temporary | |||
access to resources provided by NF producers using JWS SHOULD require | access to resources provided by NF producers using JWS | |||
the specification of corresponding KeyPurposeIds by the Extended Key | <bcp14>SHOULD</bcp14> require that corresponding | |||
Usage (EKU) extension. If the certificate requester knows the | KeyPurposeIds be specified by the EKU extension. If the certificate reques | |||
certificate users are mandated to use these KeyPurposeIds, it MUST | ter knows | |||
enforce their inclusion. Additionally, such certificate requester MUST | the certificate users are mandated to use these KeyPurposeIds, it | |||
ensure that the KeyUsage extension be set to digitalSignature or | <bcp14>MUST</bcp14> enforce their inclusion. Additionally, such | |||
nonRepudiation (also designated as contentCommitment) for signature | a certificate requester <bcp14>MUST</bcp14> ensure that the KeyUsage | |||
calculation and/or to keyEncipherment for secret key encryption.</t> | extension be set to digitalSignature or nonRepudiation (also designated | |||
as contentCommitment) for signature calculation and/or to | ||||
keyEncipherment for secret key encryption.</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default" anchor="purpose-in-certificates"> | ||||
<name>Including the Extended Key Purpose in Certificates</name> | ||||
<t><xref target="RFC5280" format="default"/> 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:</t> | ||||
<section title="Including the Extended Key Purpose in Certificates"> | <sourcecode type="asn.1"><![CDATA[ | |||
<t><xref target="RFC5280"></xref> specifies the Extended Key Usage (EKU) | ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId | |||
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:</t> | ||||
<figure> | ||||
<artwork><![CDATA[ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPur | ||||
poseId | ||||
KeyPurposeId ::= OBJECT IDENTIFIER | KeyPurposeId ::= OBJECT IDENTIFIER | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | ||||
<t></t> | ||||
<t>As described in <xref target="RFC5280"></xref>, the EKU extension | <t>As described in <xref target="RFC5280" format="default"/>, the EKU | |||
may, at the option of the certificate issuer, be either critical or | extension may, at the option of the certificate issuer, be either | |||
non-critical. The inclusion of KeyPurposeId id-kp-jwt, | critical or non-critical. The inclusion of KeyPurposeIds id-kp-jwt, | |||
id-kp-httpContentEncrypt, and id-kp-oauthAccessTokenSigning in a | id-kp-httpContentEncrypt, and id-kp-oauthAccessTokenSigning in a | |||
certificate indicates that the public key encoded in the certificate has | certificate indicates that the public key encoded in the certificate has | |||
been certified for use in the following: <list style="numbers"> | been certified for use in the following: </t> | |||
<t>Validating the JWS Signature in JWT. The distinction between JWS | ||||
and JWE is determined by the KU that is set to digitalSignature or | ||||
nonRepudiation for JWS and keyEncipherment for JWE.</t> | ||||
<t>Encrypting JSON objects in HTTP messages (for example, encrypting | ||||
the CEK with the recipient's public key using the RSAES-OAEP | ||||
algorithm to produce the JWE Encrypted Key). KU is set to | ||||
keyEncipherment.</t> | ||||
<t>Signing OAuth 2.0 access tokens. In this case, KU is set to | ||||
digitalSignature or nonRepudiation.</t> | ||||
</list></t> | ||||
<t><figure> | <ol spacing="normal" type="1"> | |||
<artwork><![CDATA[ id-kp OBJECT IDENTIFIER ::= { | <li>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.</li> | ||||
<li>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.</li> | ||||
<li>Signing OAuth 2.0 access tokens. In this case, KU is set to | ||||
digitalSignature or nonRepudiation.</li> | ||||
</ol> | ||||
<sourcecode type="asn.1"><![CDATA[ | ||||
id-kp OBJECT IDENTIFIER ::= { | ||||
iso(1) identified-organization(3) dod(6) internet(1) | iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) kp(3) } | security(5) mechanisms(5) pkix(7) kp(3) } | |||
id-kp-jwt OBJECT IDENTIFIER ::= { id-kp TBD1 } | id-kp-jwt OBJECT IDENTIFIER ::= { id-kp 37 } | |||
id-kp-httpContentEncrypt OBJECT IDENTIFIER ::= { id-kp TBD2 } | id-kp-httpContentEncrypt OBJECT IDENTIFIER ::= { id-kp 38 } | |||
id-kp-oauthAccessTokenSigning OBJECT IDENTIFIER ::= { id-kp TBD3 } | id-kp-oauthAccessTokenSigning OBJECT IDENTIFIER ::= { id-kp 39 } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure></t> | ||||
</section> | </section> | |||
<section anchor="solution" numbered="true" toc="default"> | ||||
<section anchor="solution" | <name>Implications for a Certification Authority</name> | |||
title="Implications for a Certification Authority"> | ||||
<t>The procedures and practices employed by a certification authority | <t>The procedures and practices employed by a certification authority | |||
MUST ensure that the correct values for the EKU extension as well as the | <bcp14>MUST</bcp14> ensure that the correct values for the EKU extension a s well as the | |||
KU extension are inserted in each certificate that is issued. The | KU extension are inserted in each certificate that is issued. The | |||
inclusion of the id-kp-jwt, id-kp-httpContentEncrypt and | inclusion of the id-kp-jwt, id-kp-httpContentEncrypt, and | |||
id-kp-oauthAccessTokenSigning KeyPurposeIds does not preclude the | id-kp-oauthAccessTokenSigning KeyPurposeIds does not preclude the | |||
inclusion of other KeyPurposeIds.</t> | inclusion of other KeyPurposeIds.</t> | |||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="default"> | ||||
<section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
<t>The Security Considerations of <xref target="RFC5280"></xref> are | <t>The Security Considerations of <xref target="RFC5280" | |||
applicable to this document. This extended key purpose does not | format="default"/> are applicable to this document. This extended key | |||
introduce new security risks but instead reduces existing security risks | purpose does not introduce new security risks but instead reduces | |||
by providing means to identify if the certificate is generated to sign | existing security risks by providing the means to identify if the | |||
the JWT Claims Set, signing the OAuth 2.0 access tokens using JWS or to | certificate is generated to sign the JWT Claims Set, signing the OAuth | |||
encrypt the CEK in JWE for encrypting JSON objects in HTTP messages.</t> | 2.0 access tokens using JWS, or encrypting the CEK in JWE for encrypting | |||
JSON objects in HTTP messages.</t> | ||||
<t>To reduce the risk of specific cross-protocol attacks, the relying | <t>To reduce the risk of specific cross-protocol attacks, the relying | |||
party or the relying party software may additionally prohibit use of | party or the relying party software may additionally prohibit use of | |||
specific combinations of KeyPurposeIds. The procedure for allowing or | specific combinations of KeyPurposeIds. The procedure for allowing or | |||
disallowing combinations of KeyPurposeIds using Excluded KeyPurposeId | disallowing combinations of KeyPurposeIds using Excluded KeyPurposeId | |||
and Permitted KeyPurposeId, as carried out by a relying party, is | and Permitted KeyPurposeId, as carried out by a relying party, is | |||
defined in Section 4 of <xref target="RFC9336"></xref>. Examples of | defined in <xref target="RFC9336" sectionFormat="of" | |||
Excluded KeyPurposeId include the presence of the anyExtendedKeyUsage | section="4"/>. Examples of Excluded KeyPurposeIds include the presence of | |||
KeyPurposeId or the complete absence of the EKU extension in a | the anyExtendedKeyUsage KeyPurposeId or the complete absence of the EKU | |||
certificate. Examples of Permitted KeyPurposeId include the presence of | extension in a certificate. Examples of Permitted KeyPurposeIds include | |||
id-kp-jwt, id-kp-httpContentEncrypt or id-kp-oauthAccessTokenSigning | the presence of id-kp-jwt, id-kp-httpContentEncrypt, or | |||
KeyPurposeId.</t> | id-kp-oauthAccessTokenSigning KeyPurposeIds.</t> | |||
</section> | </section> | |||
<section anchor="Privacy" numbered="true" toc="default"> | ||||
<section anchor="Privacy" title="Privacy Considerations"> | <name>Privacy Considerations</name> | |||
<t>In some security protocols, such as TLS 1.2 <xref | <t>In some security protocols, such as TLS 1.2 <xref target="RFC5246" | |||
target="RFC5246"></xref>, certificates are exchanged in the clear. In | format="default"/>, certificates are exchanged in the clear. In other | |||
other security protocols, such as TLS 1.3 <xref | security protocols, such as TLS 1.3 <xref target="RFC8446" | |||
target="RFC8446"></xref>, the certificates are encrypted. The inclusion | format="default"/>, the certificates are encrypted. The inclusion of the | |||
of the EKU extension can help an observer determine the purpose of the | EKU extension can help an observer determine the purpose of the | |||
certificate. In addition, If the certificate is issued by a public | certificate. In addition, if the certificate is issued by a public | |||
certification authority, the inclusion of EKU extension can help an | certification authority, the inclusion of an EKU extension can help an | |||
attacker to monitor the Certificate Transparency logs <xref | attacker to monitor the Certificate Transparency logs <xref | |||
target="RFC9162"></xref> to identify the purpose of the certificate.</t> | target="RFC9162" format="default"/> to identify the purpose of the | |||
certificate.</t> | ||||
</section> | </section> | |||
<section anchor="IANA" numbered="true" toc="default"> | ||||
<section anchor="IANA" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
<t>IANA is requested to register the following OIDs in the "SMI Security | <t>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 | for PKIX Extended Key Purpose" registry (1.3.6.1.5.5.7.3). These OIDs | |||
are defined in Section 4.</t> | are defined in <xref target="purpose-in-certificates"/>.</t> | |||
<figure anchor="fig-a"> | ||||
<name>Table 1</name> | ||||
<artwork><![CDATA[ | ||||
+=========+===============================+============+ | ||||
| Decimal | Description | References | | ||||
+=========+===============================+============+ | ||||
| TBD1 | id-kp-jwt | This-RFC | | ||||
+---------+-------------------------------+------------+ | ||||
| TBD2 | id-kp-httpContentEncrypt | This-RFC | | ||||
+---------+-------------------------------+------------+ | ||||
| TBD3 | id-kp-oauthAccessTokenSigning | This-RFC | | ||||
+---------+-------------------------------+------------+ | ||||
]]></artwork> | ||||
</figure> | ||||
<t></t> | ||||
<t>IANA is also requested to register the following ASN.1<xref | ||||
target="X.680"></xref> module OID in the "SMI Security for PKIX Module | ||||
Identifier" registry (1.3.6.1.5.5.7.0). This OID is defined in <xref | ||||
target="Appendix"></xref>.</t> | ||||
<t><figure anchor="fig-b"> | ||||
<name>Table 2</name> | ||||
<artwork><![CDATA[ | ||||
+=========+==========================+============+ | ||||
| Decimal | Description | References | | ||||
+=========+==========================+============+ | ||||
| TBD4 | id-mod-nf-eku | This-RFC | | ||||
+---------+--------------------------+------------+ | ||||
]]></artwork> | ||||
</figure></t> | ||||
</section> | ||||
<section anchor="contrib" title="Contributors"> | <table anchor="iana-table-1" align="left"> | |||
<t>The following individuals have contributed to this document:</t> | <thead> | |||
<tr> | ||||
<th>Decimal</th> | ||||
<th>Description</th> | ||||
<th>References</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>37</td> | ||||
<td>id-kp-jwt</td> | ||||
<td>RFC 9509</td> | ||||
</tr> | ||||
<tr> | ||||
<td>38</td> | ||||
<td>id-kp-httpContentEncrypt</td> | ||||
<td>RFC 9509</td> | ||||
</tr> | ||||
<tr> | ||||
<td>39</td> | ||||
<td>id-kp-oauthAccessTokenSigning</td> | ||||
<td>RFC 9509</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t><figure> | <t>IANA has registered the following ASN.1<xref | |||
<artwork><![CDATA[ German Peinado | target="X.680" format="default"/> module OID in the "SMI Security for PKIX | |||
Nokia | Module Identifier" registry (1.3.6.1.5.5.7.0). This OID is defined | |||
in <xref target="Appendix" format="default"/>.</t> | ||||
Email: german.peinado@nokia.com]]></artwork> | <table anchor="iana-table-2" align="left"> | |||
</figure></t> | <thead> | |||
<tr> | ||||
<th>Decimal</th> | ||||
<th>Description</th> | ||||
<th>References</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>108</td> | ||||
<td>id-mod-nf-eku</td> | ||||
<td>RFC 9509</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section anchor="acknowledgments" title="Acknowledgments"> | ||||
<t>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.</t> | ||||
<t>Thanks to Paul Wouters, Lars Eggert, and Éric Vyncke for the | ||||
IESG review.</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | <references> | |||
<?rfc include="reference.RFC.2119"?> | <name>References</name> | |||
<references> | ||||
<?rfc include="reference.RFC.8174"?> | <name>Normative References</name> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
<?rfc include="reference.RFC.5280"?> | 119.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
<?rfc include="reference.RFC.7515"?> | 174.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
<?rfc include="reference.RFC.7519"?> | 280.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
<?rfc include="reference.RFC.7516"?> | 515.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
<!-- <?rfc include="reference.RFC.7159"?> --> | 519.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
<!-- <?rfc include="reference.RFC.9052"?> --> | 516.xml"/> | |||
<!-- <?rfc include="reference.RFC.8949"?> --> | ||||
<reference anchor="X.680" target="https://www.itu.int/rec/T-REC-X.680"> | <reference anchor="X.680" target="https://www.itu.int/rec/T-REC-X.680"> | |||
<front> | <front> | |||
<title>ITU-T, "Information technology - Abstract Syntax Notation One | <title>Information technology - Abstract Syntax Notation One | |||
(ASN.1): Specification of basic notation", ITU-T Recommendation | (ASN.1): Specification of basic notation</title> | |||
X.680, February 2021.</title> | <author> | |||
<organization>ITU-T</organization> | ||||
<author> | </author> | |||
<organization></organization> | <date month="February" year="2021"/> | |||
</author> | </front> | |||
<seriesInfo name="ITU-T Recommendation" value="X.680"/> | ||||
<date day="" month="" year="" /> | </reference> | |||
</front> | ||||
</reference> | ||||
<reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690"> | ||||
<front> | ||||
<title>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,</title> | ||||
<author> | ||||
<organization></organization> | ||||
</author> | ||||
<date day="" month="" year="" /> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<?rfc include='reference.RFC.5246'?> | ||||
<?rfc include='reference.RFC.8446' | ||||
?> | ||||
<?rfc include="reference.RFC.7299"?> | ||||
<?rfc include="reference.RFC.9336"?> | ||||
<?rfc include="reference.RFC.9162"?> | ||||
<!-- <?rfc include="reference.RFC.7518"?> --> | ||||
<reference anchor="TS33.501" | ||||
target="https://www.3gpp.org/ftp/Specs/archive/33_series/33.501 | ||||
/33501-h70.zip"> | ||||
<front> | ||||
<title>3rd Generation Partnership Project; Technical Specification | ||||
Group Services and System Aspects; Security architecture and | ||||
procedures for 5G system (Release 17), , 3GPP TS:33.501 V17.7.0, | ||||
Sept 2022,</title> | ||||
<author> | ||||
<organization></organization> | ||||
</author> | ||||
<date day="" month="" year="" /> | <reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690"> | |||
</front> | <front> | |||
</reference> | <title>Information technology - ASN.1 encoding rules: | |||
Specification of Basic Encoding Rules (BER), Canonical Encoding | ||||
Rules (CER) and Distinguished Encoding Rules (DER)</title> | ||||
<author> | ||||
<organization>ITU-T</organization> | ||||
</author> | ||||
<date month="February" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="ITU-T Recommendation" value="X.690"/> | ||||
</reference> | ||||
<reference anchor="TS33.310" | </references> | |||
target="https://www.3gpp.org/ftp/Specs/archive/33_series/33.310 | ||||
/33310-h40.zip"> | ||||
<front> | ||||
<title>3rd Generation Partnership Project; Technical Specification | ||||
Group Services and System Aspects; Network Domain Security (NDS); | ||||
Authentication Framework (AF) (Release 17), 3GPP 33.310 V17.4.0, | ||||
Sept 2022,</title> | ||||
<author> | <references> | |||
<organization></organization> | <name>Informative References</name> | |||
</author> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
246.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
446.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
299.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
336.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
162.xml"/> | ||||
<date day="" month="" year="" /> | <reference anchor="TS29.573" target="https://www.3gpp.org/ftp/Specs/archiv | |||
</front> | e/29_series/29.573/29573-i50.zip"> | |||
<front> | ||||
<title>5G System; Public Land Mobile Network (PLMN) Interconnection; St | ||||
age 3</title> | ||||
<author> | ||||
<organization>3GPP</organization> | ||||
</author> | ||||
<date month="December" year="2023"/> | ||||
</front> | ||||
<seriesInfo name="Release" value="18.5.0"/> | ||||
<seriesInfo name="3GPP TS" value="29.573"/> | ||||
</reference> | </reference> | |||
<reference anchor="TS33.210" | <reference anchor="TS33.501" target="https://www.3gpp.org/ftp/Specs/archiv | |||
target="https://www.3gpp.org/ftp/Specs/archive/33_series/33.210 | e/33_series/33.501/33501-i40.zip"> | |||
/33210-h10.zip"> | <front> | |||
<front> | <title>Security architecture and procedures for 5G system</title> | |||
<title>3rd Generation Partnership Project; Technical Specification | <author> | |||
Group Services and System Aspects;Network Domain Security (NDS); IP | <organization>3GPP</organization> | |||
network layer security (Release 17), 3GPP TS 33.210 V17.1.0 Sept | </author> | |||
2022,</title> | <date month="December" year="2023"/> | |||
</front> | ||||
<seriesInfo name="Release" value="18.4.0"/> | ||||
<seriesInfo name="3GPP TS" value="33.501"/> | ||||
</reference> | ||||
<author> | <reference anchor="TS33.310" target="https://www.3gpp.org/ftp/Specs/arch | |||
<organization></organization> | ive/33_series/33.310/33310-i20.zip"> | |||
</author> | <front> | |||
<title>Network Domain Security (NDS); Authentication Framework | ||||
(AF)</title> | ||||
<author> | ||||
<organization>3GPP</organization> | ||||
</author> | ||||
<date month="December" year="2023"/> | ||||
</front> | ||||
<seriesInfo name="Release" value="18.2.0"/> | ||||
<seriesInfo name="3GPP TS" value="33.310"/> | ||||
</reference> | ||||
<date day="" month="" year="" /> | <reference anchor="TS33.210" target="https://www.3gpp.org/ftp/Specs/arch | |||
</front> | ive/33_series/33.210/33210-h10.zip"> | |||
</reference> | <front> | |||
<title>Network Domain Security (NDS); IP network layer | ||||
security</title> | ||||
<author> | ||||
<organization>3GPP</organization> | ||||
</author> | ||||
<date month="September" year="2022"/> | ||||
</front> | ||||
<seriesInfo name="Release" value="17.1.0"/> | ||||
<seriesInfo name="3GPP TS" value="33.210"/> | ||||
</reference> | ||||
<reference anchor="TS23.501" | <reference anchor="TS23.501" target="https://www.3gpp.org/ftp/Specs/arch | |||
target="https://www.3gpp.org/ftp/Specs/archive/23_series/23.501 | ive/23_series/23.501/23501-i40.zip"> | |||
/23501-i00.zip"> | <front> | |||
<front> | <title>System architecture for the 5G System (5GS)</title> | |||
<title>3rd Generation Partnership Project; Technical Specification | <author> | |||
Group Services and System Aspects; System architecture for the 5G | <organization>3GPP</organization> | |||
System (5GS); Stage 2 (Release 18), 3GPP TS 23.501 V18.0.0 Dec | </author> | |||
2022,</title> | <date month="December" year="2023"/> | |||
</front> | ||||
<seriesInfo name="Release" value="18.4.0"/> | ||||
<seriesInfo name="3GPP TS" value="23.501"/> | ||||
</reference> | ||||
<author> | <reference anchor="TS29.500" target="https://www.3gpp.org/ftp/Specs/archi | |||
<organization></organization> | ve/29_series/29.500/29500-i40.zip"> | |||
</author> | <front> | |||
<title>5G System; Technical Realization of Service Based Architecture | ||||
; Stage 3</title> | ||||
<author> | ||||
<organization>3GPP</organization> | ||||
</author> | ||||
<date month="December" year="2023"/> | ||||
</front> | ||||
<seriesInfo name="Release" value="18.4.0"/> | ||||
<seriesInfo name="3GPP TS" value="29.500"/> | ||||
</reference> | ||||
<date day="" month="" year="" /> | </references> | |||
</front> | ||||
</reference> | ||||
</references> | </references> | |||
<section anchor="Appendix" title="ASN.1 Module"> | <section anchor="Appendix" numbered="true" toc="default"> | |||
<t>The following module adheres to ASN.1 specifications <xref | <name>ASN.1 Module</name> | |||
target="X.680"></xref> and <xref target="X.690"></xref>.</t> | <t>The following module adheres to ASN.1 specifications <xref target="X.68 | |||
0" format="default"/> and <xref target="X.690" format="default"/>.</t> | ||||
<figure> | <sourcecode name="" type="asn.1" markers="true"><![CDATA[ | |||
<artwork><![CDATA[<CODE BEGINS> | ||||
NF-EKU | NF-EKU | |||
{ 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-nf-eku (TBD4) } | id-mod-nf-eku (108) } | |||
DEFINITIONS IMPLICIT TAGS ::= | DEFINITIONS IMPLICIT TAGS ::= | |||
BEGIN | BEGIN | |||
-- OID Arc | -- OID Arc | |||
id-kp OBJECT IDENTIFIER ::= | id-kp OBJECT IDENTIFIER ::= | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) kp(3) } | security(5) mechanisms(5) pkix(7) kp(3) } | |||
-- Extended Key Usage Values | -- Extended Key Usage Values | |||
id-kp-jwt OBJECT IDENTIFIER ::= { id-kp TBD1 } | id-kp-jwt OBJECT IDENTIFIER ::= { id-kp 37 } | |||
id-kp-httpContentEncrypt OBJECT IDENTIFIER ::= { id-kp TBD2 } | id-kp-httpContentEncrypt OBJECT IDENTIFIER ::= { id-kp 38 } | |||
id-kp-oauthAccessTokenSigning OBJECT IDENTIFIER ::= { id-kp TBD3 } | id-kp-oauthAccessTokenSigning OBJECT IDENTIFIER ::= { id-kp 39 } | |||
END | END | |||
]]></sourcecode> | ||||
<CODE ENDS>]]></artwork> | </section> | |||
</figure> | ||||
<section anchor="acknowledgments" numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>We would like to thank <contact fullname="Corey Bonnell"/>, <contact | ||||
fullname="Ilari Liusvaara"/>, <contact fullname="Carl Wallace"/>, and | ||||
<contact fullname="Russ Housley"/> for their useful feedback. Thanks to | ||||
<contact fullname="Yoav Nir"/> for the secdir review, <contact | ||||
fullname="Elwyn Davies"/> for the genart review, and <contact | ||||
fullname="Benson Muite"/> for the intdir review.</t> | ||||
<t>Thanks to <contact fullname="Paul Wouters"/>, <contact fullname="Lars | ||||
Eggert"/>, and <contact fullname="Éric Vyncke"/> for the IESG | ||||
review.</t> | ||||
</section> | </section> | |||
<section anchor="contrib" numbered="false" toc="default"> | ||||
<name>Contributor</name> | ||||
<t>The following individual has contributed to this document:</t> | ||||
<contact fullname="German Peinado"> | ||||
<organization>Nokia</organization> | ||||
<address> | ||||
<email>german.peinado@nokia.com</email> | ||||
</address> | ||||
</contact> | ||||
</section> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 67 change blocks. | ||||
387 lines changed or deleted | 402 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |