rfc9202v4.txt | rfc9202.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) S. Gerdes | Internet Engineering Task Force (IETF) S. Gerdes | |||
Request for Comments: 9202 O. Bergmann | Request for Comments: 9202 O. Bergmann | |||
Category: Standards Track C. Bormann | Category: Standards Track C. Bormann | |||
ISSN: 2070-1721 Universität Bremen TZI | ISSN: 2070-1721 Universität Bremen TZI | |||
G. Selander | G. Selander | |||
Ericsson AB | Ericsson AB | |||
L. Seitz | L. Seitz | |||
Combitech | Combitech | |||
March 2022 | August 2022 | |||
Datagram Transport Layer Security (DTLS) Profile for Authentication and | Datagram Transport Layer Security (DTLS) Profile for Authentication and | |||
Authorization for Constrained Environments (ACE) | Authorization for Constrained Environments (ACE) | |||
Abstract | Abstract | |||
This specification defines a profile of the Authentication and | This specification defines a profile of the Authentication and | |||
Authorization for Constrained Environments (ACE) framework that | Authorization for Constrained Environments (ACE) framework that | |||
allows constrained servers to delegate client authentication and | allows constrained servers to delegate client authentication and | |||
authorization. The protocol relies on DTLS version 1.2 for | authorization. The protocol relies on DTLS version 1.2 or later for | |||
communication security between entities in a constrained network | communication security between entities in a constrained network | |||
using either raw public keys or pre-shared keys. A resource- | using either raw public keys or pre-shared keys. A resource- | |||
constrained server can use this protocol to delegate management of | constrained server can use this protocol to delegate management of | |||
authorization information to a trusted host with less-severe | authorization information to a trusted host with less-severe | |||
limitations regarding processing power and memory. | limitations regarding processing power and memory. | |||
Status of This Memo | Status of This Memo | |||
This is an Internet Standards Track document. | This is an Internet Standards Track document. | |||
skipping to change at line 94 ¶ | skipping to change at line 94 ¶ | |||
10.2. Informative References | 10.2. Informative References | |||
Acknowledgments | Acknowledgments | |||
Authors' Addresses | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
This specification defines a profile of the ACE framework [RFC9200]. | This specification defines a profile of the ACE framework [RFC9200]. | |||
In this profile, a client (C) and a resource server (RS) use the | In this profile, a client (C) and a resource server (RS) use the | |||
Constrained Application Protocol (CoAP) [RFC7252] over DTLS version | Constrained Application Protocol (CoAP) [RFC7252] over DTLS version | |||
1.2 [RFC6347] to communicate. This specification uses DTLS 1.2 | 1.2 [RFC6347] to communicate. This specification uses DTLS 1.2 | |||
terminology, but later versions such as DTLS 1.3 can be used instead. | terminology, but later versions such as DTLS 1.3 [RFC9147] can be | |||
The client obtains an access token bound to a key (the proof-of- | used instead. The client obtains an access token bound to a key (the | |||
possession (PoP) key) from an authorization server (AS) to prove its | proof-of-possession (PoP) key) from an authorization server (AS) to | |||
authorization to access protected resources hosted by the resource | prove its authorization to access protected resources hosted by the | |||
server. Also, the client and the resource server are provided by the | resource server. Also, the client and the resource server are | |||
authorization server with the necessary keying material to establish | provided by the authorization server with the necessary keying | |||
a DTLS session. The communication between the client and | material to establish a DTLS session. The communication between the | |||
authorization server may also be secured with DTLS. This | client and authorization server may also be secured with DTLS. This | |||
specification supports DTLS with raw public keys (RPKs) [RFC7250] and | specification supports DTLS with raw public keys (RPKs) [RFC7250] and | |||
with pre-shared keys (PSKs) [RFC4279]. How token introspection | with pre-shared keys (PSKs) [RFC4279]. How token introspection | |||
[RFC7662] is performed between the RS and AS is out of scope for this | [RFC7662] is performed between the RS and AS is out of scope for this | |||
specification. | specification. | |||
The ACE framework requires that the client and server mutually | The ACE framework requires that the client and server mutually | |||
authenticate each other before any application data is exchanged. | authenticate each other before any application data is exchanged. | |||
DTLS enables mutual authentication if both the client and server | DTLS enables mutual authentication if both the client and server | |||
prove their ability to use certain keying material in the DTLS | prove their ability to use certain keying material in the DTLS | |||
handshake. The authorization server assists in this process on the | handshake. The authorization server assists in this process on the | |||
skipping to change at line 140 ¶ | skipping to change at line 140 ¶ | |||
As recommended in Section 5.8 of [RFC9200], this specification uses | As recommended in Section 5.8 of [RFC9200], this specification uses | |||
Concise Binary Object Representation (CBOR) web tokens to convey | Concise Binary Object Representation (CBOR) web tokens to convey | |||
claims within an access token issued by the server. While other | claims within an access token issued by the server. While other | |||
formats could be used as well, those are out of scope for this | formats could be used as well, those are out of scope for this | |||
document. | document. | |||
1.1. Terminology | 1.1. 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 BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
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. | |||
Readers are expected to be familiar with the terms and concepts | Readers are expected to be familiar with the terms and concepts | |||
described in [RFC9200] and [RFC9201]. | described in [RFC9200] and [RFC9201]. | |||
The authorization information (authz-info) resource refers to the | The authorization information (authz-info) resource refers to the | |||
authorization information endpoint, as specified in [RFC9200]. The | authorization information endpoint, as specified in [RFC9200]. The | |||
term claim is used in this document with the same semantics as in | term claim is used in this document with the same semantics as in | |||
[RFC9200], i.e., it denotes information carried in the access token | [RFC9200], i.e., it denotes information carried in the access token | |||
or returned from introspection. | or returned from introspection. | |||
skipping to change at line 710 ¶ | skipping to change at line 710 ¶ | |||
A1 08 A1 01 A2 01 04 02 48 3D 02 78 33 FC 62 67 CE | A1 08 A1 01 A2 01 04 02 48 3D 02 78 33 FC 62 67 CE | |||
As an alternative to the access token upload, the client can provide | As an alternative to the access token upload, the client can provide | |||
the most recent access token in the psk_identity field of the | the most recent access token in the psk_identity field of the | |||
ClientKeyExchange message. To do so, the client MUST treat the | ClientKeyExchange message. To do so, the client MUST treat the | |||
contents of the access_token field from the AS-to-client response as | contents of the access_token field from the AS-to-client response as | |||
opaque data, as specified in Section 4.2 of [RFC7925], and not | opaque data, as specified in Section 4.2 of [RFC7925], and not | |||
perform any recoding. This allows the resource server to retrieve | perform any recoding. This allows the resource server to retrieve | |||
the shared secret directly from the cnf claim of the access token. | the shared secret directly from the cnf claim of the access token. | |||
DTLS 1.3 does not use the ClientKeyExchange message; for DTLS 1.3, | DTLS 1.3 [RFC9147] does not use the ClientKeyExchange message; for | |||
the access token is placed in the identity field of a PSKIdentity | DTLS 1.3, the access token is placed in the identity field of a | |||
within the PreSharedKeyExtension of the ClientHello. | PSKIdentity within the PreSharedKeyExtension of the ClientHello. | |||
If a resource server receives a ClientKeyExchange message that | If a resource server receives a ClientKeyExchange message that | |||
contains a psk_identity with a length greater than zero, it MUST | contains a psk_identity with a length greater than zero, it MUST | |||
parse the contents of the psk_identity field as a CBOR data structure | parse the contents of the psk_identity field as a CBOR data structure | |||
and process the contents as following: | and process the contents as following: | |||
* If the data contains a cnf field with a COSE_Key structure with a | * If the data contains a cnf field with a COSE_Key structure with a | |||
kid, the resource server continues the DTLS handshake with the | kid, the resource server continues the DTLS handshake with the | |||
associated key that corresponds to this kid. | associated key that corresponds to this kid. | |||
skipping to change at line 969 ¶ | skipping to change at line 969 ¶ | |||
and a server. As this specification aims at constrained devices and | and a server. As this specification aims at constrained devices and | |||
uses CoAP [RFC7252] as the transfer protocol, at least the cipher | uses CoAP [RFC7252] as the transfer protocol, at least the cipher | |||
suite TLS_PSK_WITH_AES_128_CCM_8 [RFC6655] should be supported. The | suite TLS_PSK_WITH_AES_128_CCM_8 [RFC6655] should be supported. The | |||
access tokens and the corresponding shared secrets generated by the | access tokens and the corresponding shared secrets generated by the | |||
authorization server are expected to be sufficiently short-lived to | authorization server are expected to be sufficiently short-lived to | |||
provide similar forward-secrecy properties to using ephemeral Diffie- | provide similar forward-secrecy properties to using ephemeral Diffie- | |||
Hellman (DHE) key exchange mechanisms. For longer-lived access | Hellman (DHE) key exchange mechanisms. For longer-lived access | |||
tokens, DHE cipher suites should be used, i.e., cipher suites of the | tokens, DHE cipher suites should be used, i.e., cipher suites of the | |||
form TLS_DHE_PSK_* or TLS_ECDHE_PSK_*. | form TLS_DHE_PSK_* or TLS_ECDHE_PSK_*. | |||
Constrained devices that use DTLS [RFC6347] are inherently vulnerable | Constrained devices that use DTLS [RFC6347] [RFC9147] are inherently | |||
to Denial of Service (DoS) attacks, as the handshake protocol | vulnerable to Denial of Service (DoS) attacks, as the handshake | |||
requires creation of internal state within the device. This is | protocol requires creation of internal state within the device. This | |||
specifically of concern where an adversary is able to intercept the | is specifically of concern where an adversary is able to intercept | |||
initial cookie exchange and interject forged messages with a valid | the initial cookie exchange and interject forged messages with a | |||
cookie to continue with the handshake. A similar issue exists with | valid cookie to continue with the handshake. A similar issue exists | |||
the unprotected authorization information endpoint when the resource | with the unprotected authorization information endpoint when the | |||
server needs to keep valid access tokens for a long time. | resource server needs to keep valid access tokens for a long time. | |||
Adversaries could fill up the constrained resource server's internal | Adversaries could fill up the constrained resource server's internal | |||
storage for a very long time with intercepted or otherwise retrieved | storage for a very long time with intercepted or otherwise retrieved | |||
valid access tokens. To mitigate against this, the resource server | valid access tokens. To mitigate against this, the resource server | |||
should set a time boundary until an access token that has not been | should set a time boundary until an access token that has not been | |||
used until then will be deleted. | used until then will be deleted. | |||
The protection of access tokens that are stored in the authorization | The protection of access tokens that are stored in the authorization | |||
information endpoint depends on the keying material that is used | information endpoint depends on the keying material that is used | |||
between the authorization server and the resource server; the | between the authorization server and the resource server; the | |||
resource server must ensure that it processes only access tokens that | resource server must ensure that it processes only access tokens that | |||
skipping to change at line 1161 ¶ | skipping to change at line 1161 ¶ | |||
[RFC8747] Jones, M., Seitz, L., Selander, G., Erdtman, S., and H. | [RFC8747] Jones, M., Seitz, L., Selander, G., Erdtman, S., and H. | |||
Tschofenig, "Proof-of-Possession Key Semantics for CBOR | Tschofenig, "Proof-of-Possession Key Semantics for CBOR | |||
Web Tokens (CWTs)", RFC 8747, DOI 10.17487/RFC8747, March | Web Tokens (CWTs)", RFC 8747, DOI 10.17487/RFC8747, March | |||
2020, <https://www.rfc-editor.org/info/rfc8747>. | 2020, <https://www.rfc-editor.org/info/rfc8747>. | |||
[RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object | [RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object | |||
Representation (CBOR)", STD 94, RFC 8949, | Representation (CBOR)", STD 94, RFC 8949, | |||
DOI 10.17487/RFC8949, December 2020, | DOI 10.17487/RFC8949, December 2020, | |||
<https://www.rfc-editor.org/info/rfc8949>. | <https://www.rfc-editor.org/info/rfc8949>. | |||
[RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The | ||||
Datagram Transport Layer Security (DTLS) Protocol Version | ||||
1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022, | ||||
<https://www.rfc-editor.org/info/rfc9147>. | ||||
[RFC9200] Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and | [RFC9200] Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and | |||
H. Tschofenig, "Authentication and Authorization for | H. Tschofenig, "Authentication and Authorization for | |||
Constrained Environments (ACE) Using the OAuth 2.0 | Constrained Environments (ACE) Using the OAuth 2.0 | |||
Framework (ACE-OAuth)", RFC 9200, DOI 10.17487/RFC9200, | Framework (ACE-OAuth)", RFC 9200, DOI 10.17487/RFC9200, | |||
March 2022, <https://www.rfc-editor.org/info/rfc9200>. | August 2022, <https://www.rfc-editor.org/info/rfc9200>. | |||
[RFC9201] Seitz, L., "Additional OAuth Parameters for Authentication | [RFC9201] Seitz, L., "Additional OAuth Parameters for Authentication | |||
and Authorization for Constrained Environments (ACE)", | and Authorization for Constrained Environments (ACE)", | |||
RFC 9201, DOI 10.17487/RFC9201, March 2022, | RFC 9201, DOI 10.17487/RFC9201, August 2022, | |||
<https://www.rfc-editor.org/info/rfc9201>. | <https://www.rfc-editor.org/info/rfc9201>. | |||
10.2. Informative References | 10.2. Informative References | |||
[RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand | [RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand | |||
Key Derivation Function (HKDF)", RFC 5869, | Key Derivation Function (HKDF)", RFC 5869, | |||
DOI 10.17487/RFC5869, May 2010, | DOI 10.17487/RFC5869, May 2010, | |||
<https://www.rfc-editor.org/info/rfc5869>. | <https://www.rfc-editor.org/info/rfc5869>. | |||
[RFC6655] McGrew, D. and D. Bailey, "AES-CCM Cipher Suites for | [RFC6655] McGrew, D. and D. Bailey, "AES-CCM Cipher Suites for | |||
End of changes. 9 change blocks. | ||||
25 lines changed or deleted | 30 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |