rfc9820.original   rfc9820.txt 
ACE Working Group R. Marin-Lopez Internet Engineering Task Force (IETF) R. Marin-Lopez
Internet-Draft University of Murcia Request for Comments: 9820 University of Murcia
Intended status: Standards Track D. Garcia-Carrillo Category: Standards Track D. Garcia-Carrillo
Expires: 23 August 2025 University of Oviedo ISSN: 2070-1721 University of Oviedo
19 February 2025 July 2025
EAP-based Authentication Service for CoAP Authentication Service Based on the Extensible Authentication Protocol
draft-ietf-ace-wg-coap-eap-15 (EAP) for Use with the Constrained Application Protocol (CoAP)
Abstract Abstract
This document specifies an authentication service that uses the This document specifies an authentication service that uses the
Extensible Authentication Protocol (EAP) transported employing Extensible Authentication Protocol (EAP) transported employing
Constrained Application Protocol (CoAP) messages. As such, it Constrained Application Protocol (CoAP) messages. As such, it
defines an EAP lower layer based on CoAP called CoAP-EAP. One of the defines an EAP lower layer based on CoAP called "CoAP-EAP". One of
main goals is to authenticate a CoAP-enabled IoT device (EAP peer) the main goals is to authenticate a CoAP-enabled Internet of Things
that intends to join a security domain managed by a Controller (EAP (IoT) device (EAP peer) that intends to join a security domain
authenticator). Secondly, it allows deriving key material to protect managed by a Controller (EAP authenticator). Secondly, it allows
CoAP messages exchanged between them based on Object Security for deriving key material to protect CoAP messages exchanged between them
Constrained RESTful Environments (OSCORE), enabling the establishment based on Object Security for Constrained RESTful Environments
of a security association between them. (OSCORE), enabling the establishment of a security association
between them.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on 23 August 2025. 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/rfc9820.
Copyright Notice Copyright Notice
Copyright (c) 2025 IETF Trust and the persons identified as the Copyright (c) 2025 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
Please review these documents carefully, as they describe your rights carefully, as they describe your rights and restrictions with respect
and restrictions with respect to this document. Code Components to this document. Code Components extracted from this document must
extracted from this document must include Revised BSD License text as include Revised BSD License text as described in Section 4.e of the
described in Section 4.e of the Trust Legal Provisions and are Trust Legal Provisions and are provided without warranty as described
provided without warranty as described in the Revised BSD License. in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 1.1. Requirements Language
2. General Architecture . . . . . . . . . . . . . . . . . . . . 4 2. General Architecture
3. CoAP-EAP Operation . . . . . . . . . . . . . . . . . . . . . 5 3. CoAP-EAP Operation
3.1. Discovery . . . . . . . . . . . . . . . . . . . . . . . . 6 3.1. Discovery
3.2. Flow of operation (OSCORE establishment) . . . . . . . . 6 3.2. Flow of Operation (OSCORE Establishment)
3.3. Reauthentication . . . . . . . . . . . . . . . . . . . . 9 3.3. Re-Authentication
3.4. Managing the State of the Service . . . . . . . . . . . . 10 3.4. Managing the State of the Service
3.5. Error handling . . . . . . . . . . . . . . . . . . . . . 11 3.5. Error Handling
3.5.1. EAP authentication failure . . . . . . . . . . . . . 11 3.5.1. EAP Authentication Failure
3.5.2. Non-responsive endpoint . . . . . . . . . . . . . . . 12 3.5.2. Non-Responsive Endpoint
3.5.3. Duplicated message with /.well-known/coap-eap . . . . 12 3.5.3. Duplicated Message with /.well-known/coap-eap
3.6. Proxy operation in CoAP-EAP . . . . . . . . . . . . . . . 13 3.6. Proxy Operation in CoAP-EAP
4. CoAP-EAP Media type format . . . . . . . . . . . . . . . . . 14 4. CoAP-EAP Media Type Format
5. CBOR Objects in CoAP-EAP . . . . . . . . . . . . . . . . . . 14 5. CBOR Objects in CoAP-EAP
6. Cipher suite negotiation and key derivation . . . . . . . . . 15 6. Cipher Suite Negotiation and Key Derivation
6.1. Cipher suite negotiation . . . . . . . . . . . . . . . . 15 6.1. Cipher Suite Negotiation
6.2. Deriving the OSCORE Security Context . . . . . . . . . . 17 6.2. Deriving the OSCORE Security Context
7. Discussion . . . . . . . . . . . . . . . . . . . . . . . . . 18 7. Discussion
7.1. CoAP as EAP lower layer . . . . . . . . . . . . . . . . . 18 7.1. CoAP as the EAP Lower Layer
7.2. Size of the EAP lower layer vs EAP method size . . . . . 20 7.2. Size of the EAP Lower Layer vs. EAP Method Size
8. Security Considerations . . . . . . . . . . . . . . . . . . . 20 8. Security Considerations
8.1. Use of EAP Methods . . . . . . . . . . . . . . . . . . . 20 8.1. Use of EAP Methods
8.2. Authorization . . . . . . . . . . . . . . . . . . . . . . 21 8.2. Authorization
8.3. Allowing CoAP-EAP traffic to perform authentication . . . 21 8.3. Allowing CoAP-EAP Traffic to Perform Authentication
8.4. Freshness of the key material . . . . . . . . . . . . . . 21 8.4. Freshness of the Key Material
8.5. Channel Binding support . . . . . . . . . . . . . . . . . 22 8.5. Channel-Binding Support
8.6. Additional Security Considerations . . . . . . . . . . . 22 8.6. Additional Security Considerations
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 9. IANA Considerations
9.1. CoAP-EAP Cipher Suites . . . . . . . . . . . . . . . . . 23 9.1. CoAP-EAP Cipher Suites
9.2. CDDL in CoAP-EAP Information elements . . . . . . . . . . 24 9.2. CDDL in CoAP-EAP Information Elements
9.3. The Well-Known URI Registry . . . . . . . . . . . . . . . 25 9.3. The Well-Known URIs Registry
9.4. The EAP lower layer identifier registry . . . . . . . . . 26 9.4. The EAP Lower Layers Registry
9.5. Media Types Registry . . . . . . . . . . . . . . . . . . 26 9.5. Media Types Registry
9.6. CoAP Content-Formats Registry . . . . . . . . . . . . . . 27 9.6. CoAP Content-Formats Registry
9.7. Resource Type (rt=) Link Target Attribute Values 9.7. Resource Type (rt=) Link Target Attribute Values Registry
Registry . . . . . . . . . . . . . . . . . . . . . . . . 27 9.8. Expert Review Instructions
9.8. Expert Review Instructions . . . . . . . . . . . . . . . 27 10. References
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 10.1. Normative References
10.1. Normative References . . . . . . . . . . . . . . . . . . 28 10.2. Informative References
10.2. Informative References . . . . . . . . . . . . . . . . . 29 Appendix A. Flow of Operation (DTLS Establishment)
Appendix A. Flow of operation (DTLS establishment) . . . . . . . 32 A.1. Deriving DTLS PSK and Identity
A.1. Deriving DTLS PSK and identity . . . . . . . . . . . . . 34 Appendix B. Using CoAP-EAP for Distributing Key Material for IoT
Appendix B. Using CoAP-EAP for distributing key material for IoT Networks
networks . . . . . . . . . . . . . . . . . . . . . . . . 35 Appendix C. Example Use Case Scenarios
Appendix C. Examples of Use Case Scenario . . . . . . . . . . . 35 C.1. Example 1: CoAP-EAP Using ACE
C.1. Example 1: CoAP-EAP in ACE . . . . . . . . . . . . . . . 36 C.2. Example 2: Multiple Domains with AAA Infrastructures
C.2. Example 2: Multi-domain with AAA infrastructures . . . . 37 C.3. Example 3: Single Domain with a AAA Infrastructure
C.3. Example 3: Single domain with AAA infrastructure . . . . 38 C.4. Example 4: Single Domain Without a AAA Infrastructure
C.4. Example 4: Single domain without AAA infrastructure . . . 38 C.5. Other Use Cases
C.5. Other use cases . . . . . . . . . . . . . . . . . . . . . 38 C.5.1. CoAP-EAP for Network Access Authentication
C.5.1. CoAP-EAP for network access authentication . . . . . 38 C.5.2. CoAP-EAP for Service Authentication
C.5.2. CoAP-EAP for service authentication . . . . . . . . . 40 Acknowledgments
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 40 Authors' Addresses
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40
1. Introduction 1. Introduction
This document specifies an authentication service (application) that This document specifies an authentication service (application) that
uses the Extensible Authentication Protocol (EAP) [RFC3748] and is uses the Extensible Authentication Protocol (EAP) [RFC3748] and is
built on top of the Constrained Application Protocol (CoAP)[RFC7252] built on top of the Constrained Application Protocol (CoAP)
called CoAP-EAP. CoAP-EAP is an application that allows [RFC7252]; it is called "CoAP-EAP". CoAP-EAP is an application that
authenticating two CoAP endpoints by using EAP and establishing an allows authenticating two CoAP endpoints by using EAP and
Object Security for Constrained RESTful Environments (OSCORE) establishing an Object Security for Constrained RESTful Environments
security association between them. More specifically, this document (OSCORE) security association between them. More specifically, this
specifies how CoAP can be used as a constrained, link-layer document specifies how CoAP can be used as a constrained, link-layer-
independent, reliable EAP lower layer [RFC3748] to transport EAP independent, reliable EAP lower layer [RFC3748] to transport EAP
messages between a CoAP server (acting as EAP peer) and a CoAP client messages between a CoAP server (acting as an EAP peer) and a CoAP
(acting as EAP authenticator) using CoAP messages. The CoAP client client (acting as an EAP authenticator) using CoAP messages. The
has the option of contacting a backend AAA infrastructure to complete CoAP client has the option of contacting a backend Authentication,
the EAP negotiation, as described in the EAP specification [RFC3748]. Authorization, and Accounting (AAA) infrastructure to complete the
EAP negotiation, as described in the EAP specification [RFC3748].
The EAP methods that can be transported with CoAP-EAP MUST export In the case of this specification, the EAP methods that can be
cryptographic material [RFC5247] for this specification. Examples of transported with CoAP-EAP MUST export cryptographic material
such methods are EAP-GPSK [RFC5433], EAP-SIM [RFC4186], EAP-AKA' [RFC5247]. Examples of such methods are the EAP Generalized Pre-
[RFC5448], EAP-TLS 1.3 [RFC9190], EAP-EDHOC [I-D.ietf-emu-eap-edhoc], Shared Key (EAP-GPSK) [RFC5433], the EAP Method for Global System for
etc. In general, any EAP method designed in EMU Working Group that Mobile Communications (GSM) Subscriber Identity Modules (EAP-SIM)
exports the Master Session Key (MSK) can be used with CoAP-EAP. The [RFC4186], the EAP Method for 3rd Generation Authentication and Key
Master Session Key (MSK) is used as the basis for further Agreement (EAP-AKA') [RFC5448], EAP-TLS 1.3 [RFC9190], EAP with
cryptographic derivations. This way, CoAP messages are protected Ephemeral Diffie-Hellman over CBOR Object Signing and Encryption
after authentication. After CoAP-EAP's operation, an OSCORE security (EAP-EDHOC) [EAP-EDHOC], etc. ("CBOR" stands for "Concise Binary
association is established between the endpoints of the service. Object Representation".) In general, any EAP method designed in the
Using the keying material from the authentication, other security EAP Method Update (EMU) Working Group that exports the Master Session
associations could be generated. Appendix A shows how to establish a Key (MSK) can be used with CoAP-EAP. The MSK is used as the basis
(D)TLS security association using the keying material from the EAP for further cryptographic derivations. This way, CoAP messages are
authentication. protected after authentication. After the CoAP-EAP operation, an
OSCORE security association is established between the endpoints of
the service. Using the keying material from the authentication,
other security associations could be generated. Appendix A shows how
to establish a (D)TLS security association using the keying material
from the EAP authentication.
One of the main applications of CoAP-EAP is Internet of Things (IoT) One of the main applications of CoAP-EAP involves Internet of Things
networks, where we can find very constrained links (e.g., limited (IoT) networks, where we can find very constrained links (e.g.,
bandwidth) and devices with limited capabilities. In these IoT limited bandwidth) and devices with limited capabilities. In these
scenarios, we identify the IoT device as the entity that wants to be IoT scenarios, we identify the IoT device as the entity that wants to
authenticated by using EAP to join a domain that is managed by a be authenticated by using EAP to join a domain that is managed by a
Controller. The IoT device is in these cases the EAP peer and the Controller. In these cases, the IoT device is the EAP peer and the
Controller, the entity steering the authentication, the EAP Controller is the entity steering the authentication (i.e., the EAP
authenticator. From now on, the IoT device is referred to as the EAP authenticator); from now on, the IoT device will be referred to as
peer and the Controller as the EAP authenticator. In these cases, the EAP peer and the Controller will be referred to as the EAP
EAP methods with fewer exchanges, shorter messages, and cryptographic authenticator. In these cases, EAP methods with fewer exchanges,
algorithms suitable for constrained devices are preferable. The shorter messages, and cryptographic algorithms suitable for
benefits of the EAP framework in IoT are highlighted in constrained devices are preferable. The benefits of the EAP
[EAP-framework-IoT]. framework in IoT networks are highlighted in [EAP-Framework-IoT].
1.1. Requirements Language 1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
Readers are expected to be familiar with the terms and concepts Readers are expected to be familiar with the terms and concepts
described in CoAP [RFC7252], EAP [RFC3748] [RFC5247] and OSCORE described in CoAP [RFC7252], EAP [RFC3748] [RFC5247], and OSCORE
[RFC8613]. [RFC8613].
2. General Architecture 2. General Architecture
Figure 1 illustrates the architecture defined in this document. In Figure 1 illustrates the architecture defined in this document. In
this architecture, the Extensible Authentication Protocol (EAP) peer this architecture, the EAP peer will act as a CoAP server for this
will act as a CoAP server for this service, and the domain EAP service and the domain EAP authenticator will act as a CoAP client.
authenticator as a CoAP client. The rationale behind this decision The rationale behind this decision is that EAP requests will always
is that EAP requests direction is always from the EAP server to the travel from the EAP server to the EAP peer. Accordingly, EAP
EAP peer. Accordingly, EAP responses direction is always from the responses will always travel from the EAP peer to the EAP server.
EAP peer to the EAP server.
It is worth noting that the EAP authenticator MAY interact with a It is worth noting that the EAP authenticator MAY interact with a
backend AAA infrastructure when EAP pass-through mode is used, which backend AAA infrastructure when EAP pass-through mode is used, which
will place the EAP server in the AAA server that contains the will place the EAP server in the AAA server that contains the
information required to authenticate the EAP peer. information required to authenticate the EAP peer.
The protocol stack is described in Figure 2. CoAP-EAP is an The protocol stack is described in Figure 2. CoAP-EAP is an
application built on top of CoAP. On top of the application, there application built on top of CoAP. On top of the application, there
is an EAP state machine that can run any EAP method. For this is an EAP state machine that can run any EAP method. In the case of
specification, the EAP method MUST support key derivation and export, this specification, the EAP method MUST support key derivation and
as specified in [RFC5247], a Master Session Key (MSK) of at least 64 export as specified in [RFC5247]: an MSK of at least 64 octets and an
octets, and an Extended Master Session Key (EMSK) of at least 64 Extended Master Session Key (EMSK) of at least 64 octets. CoAP-EAP
octets. CoAP-EAP also relies on CoAP reliability mechanisms in CoAP also relies on CoAP reliability mechanisms in CoAP to transport EAP:
to transport EAP: CoAP over UDP with Confirmable messages ([RFC7252]) CoAP over UDP with Confirmable messages [RFC7252] or CoAP over TCP,
or CoAP over TCP, TLS, or WebSockets [RFC8323]. TLS, or WebSockets [RFC8323].
+--------+ +--------------+ +----------+ +--------+ +--------------+ +----------+
| EAP | | EAP | | AAA/ | | EAP | | EAP | | AAA/ |
| peer |<------>| authenticator|<----------->|EAP Server| | peer |<------>| authenticator|<----------->|EAP server|
+--------+ CoAP +--------------+ AAA +----------+ +--------+ CoAP +--------------+ AAA +----------+
(Optional) (optional)
<----(SCOPE OF THIS DOCUMENT)----> <----(SCOPE OF THIS DOCUMENT)---->
Figure 1: CoAP-EAP Architecture Figure 1: CoAP-EAP Architecture
+-------------------------------+ +---------------------------------+
| EAP State Machine | | EAP State Machine |
+-------------------------------+ +---------------------------------+
| Application(CoAP-EAP) | <-- This Document | Application (CoAP-EAP) | <-- This Document
+-------------------------------+ +---------------------------------+
| Request/Responses/Signaling | RFC 7252 / RFC 8323 | Request / Responses / Signaling | RFC 7252 / RFC 8323
+-------------------------------+ +---------------------------------+
| Message / Message Framing | RFC 7252 / RFC 8323 | Message / Message Framing | RFC 7252 / RFC 8323
+-------------------------------+ +---------------------------------+
|Unreliable / Reliable Transport| RFC 7252 / RFC 8323 | Unreliable / Reliable Transport | RFC 7252 / RFC 8323
+-------------------------------+ +---------------------------------+
Figure 2: CoAP-EAP Stack Figure 2: CoAP-EAP Stack
3. CoAP-EAP Operation 3. CoAP-EAP Operation
Because CoAP-EAP uses reliable delivery defined in CoAP ([RFC7252], Because CoAP-EAP uses reliable delivery as defined in CoAP [RFC7252]
[RFC8323]), EAP retransmission time is set to infinite as mentioned [RFC8323], EAP retransmission time is set to an infinite value, as
in [RFC3748]. To keep the ordering guarantee, CoAP-EAP uses mentioned in [RFC3748]. To maintain ordering guarantees, CoAP-EAP
Hypermedia as the Engine of Application State (HATEOAS). Each step uses Hypermedia as the Engine of Application State (HATEOAS). Each
during the EAP authentication accesses a new resource in the CoAP step during the EAP authentication accesses a new resource in the
server (EAP peer). The previous resource is removed once the new CoAP server (EAP peer). The previous resource is removed once the
resource is created, indicating the resource that will process the new resource is created, indicating the resource that will process
next step of the EAP authentication. the next step of the EAP authentication.
One of the benefits of using EAP is that we can choose from a large One of the benefits of using EAP is that we can choose from a large
variety of authentication methods. variety of authentication methods.
In CoAP-EAP, the EAP peer will only have one authentication session In CoAP-EAP, the EAP peer will only have one authentication session
with a specific EAP authenticator, and it will not process any other with a specific EAP authenticator, and it will not process any other
EAP authentication in parallel (with the same EAP authenticator). EAP authentication in parallel (with the same EAP authenticator).
That is, a single ongoing EAP authentication is permitted for the That is, a single ongoing EAP authentication is permitted for the
same EAP peer and the same EAP authenticator. It may be worth noting same EAP peer and the same EAP authenticator. It may be worth noting
that the EAP authenticator may have parallel EAP sessions with that the EAP authenticator may have parallel EAP sessions with
multiple EAP peers. multiple EAP peers.
To access the authentication service, this document defines the well- To access the authentication service, this document defines the well-
known URI "coap-eap" (to be assigned by IANA). The /.well-known/ known URI "coap-eap" (see Section 9.3). The /.well-known/coap-eap
coap-eap URI is used with "coap", "coap+tcp" or "coap+ws". URI is used with "coap", "coap+tcp", or "coap+ws".
3.1. Discovery 3.1. Discovery
Before the CoAP-EAP exchange takes place, the EAP peer needs to Before the CoAP-EAP exchange takes place, the EAP peer needs to
discover the EAP authenticator or the entity that will enable the discover the EAP authenticator or the entity that will enable the
CoAP-EAP exchange (e.g., an intermediary proxy). The discovery CoAP-EAP exchange (e.g., an intermediary proxy). The discovery
process is out of the scope of this document. process is outside the scope of this document.
The CoAP-EAP application can be accessed through the URI "coap-eap" The CoAP-EAP application can be accessed through the URI "coap-eap"
for the trigger message (see Section 3.2, Step 0). The CoAP-EAP for the trigger message (see Section 3.2, Step 0). The CoAP-EAP
service can be discovered by asking directly about the services service can be discovered by asking directly about the services
offered. This information can also be available in the resource offered. This information can also be available in the resource
directory [RFC9176]. directory [RFC9176].
Implementation Notes: There are different methods to discover the Implementation notes: There are different methods for discovering the
IPv6 address of the EAP authenticator or intermediary entity. For IPv6 address of the EAP authenticator or intermediary entity. For
example, on a 6LoWPAN network, the Border Router will typically act example, in a 6LoWPAN network, the Border Router will typically act
as the EAP authenticator hence, after receiving the Router as the EAP authenticator hence, after receiving the Router
Advertisement (RA) messages from the Border Router, the EAP peer may Advertisement (RA) messages from the Border Router, the EAP peer may
engage on the CoAP-EAP exchange. engage in the CoAP-EAP exchange.
3.2. Flow of operation (OSCORE establishment) 3.2. Flow of Operation (OSCORE Establishment)
Figure 3 shows the general flow of operation for CoAP-EAP to Figure 3 shows the general flow of operation for CoAP-EAP to
authenticate using EAP and establish an OSCORE security context. The authenticate using EAP and establish an OSCORE security context. The
flow does not show a specific EAP method. Instead, the chosen EAP flow does not show a specific EAP method. Instead, the chosen EAP
method is represented by using a generic name (EAP-X). The flow method is represented by using a generic name (EAP-X). The flow
assumes that the EAP peer knows the EAP authenticator implements the assumes that the EAP peer knows the EAP authenticator implements the
CoAP-EAP service. A CoAP-EAP message has a media type application/ CoAP-EAP service. A CoAP-EAP message has the media type
coap-eap, See Section 9.5. "application/coap-eap". See Section 9.5.
The steps of the operation are as follows: The steps for this flow of operation are as follows:
* Step 0. The EAP peer MUST start the CoAP-EAP process by sending a * Step 0. The EAP peer MUST start the CoAP-EAP process by sending a
"POST /.well-known/coap-eap" request (trigger message). This "POST /.well-known/coap-eap" request (trigger message). This
message carries the 'No-Response' [RFC7967] CoAP option to avoid message carries the 'No-Response' CoAP option [RFC7967] to avoid
waiting for a response that is not needed. This is the only waiting for a response that is not needed. This is the only
message where the EAP authenticator acts as a CoAP server and the message where the EAP authenticator acts as a CoAP server and the
EAP peer as a CoAP client. The message also includes a URI in the EAP peer acts as a CoAP client. The message also includes a URI
payload of the message to indicate the resource where the EAP in the payload of the message to indicate the resource where the
authenticator MUST send the next message. The name of the EAP authenticator MUST send the next message. The name of the
resource is selected by the CoAP server. resource is selected by the CoAP server.
Implementation notes: When generating the URI for a resource of a Implementation notes: When generating the URI for a resource during a
step of the authentication, the resource could have the following step of the authentication, the resource could have the following
format as an example "path/eap/counter", where: format as an example "path/eap/counter", where:
* "path" is some local path on the device to make the path unique. * "path" is some local path on the device to make the path unique.
This could be omitted if desired. This could be omitted if desired.
* "eap" is the name that indicates the URI is for the EAP peer. * "eap" is the name that indicates that the URI is for the EAP peer.
This has no meaning for the protocol but helps with debugging. This has no meaning for the protocol but helps with debugging.
* "counter' which is an incrementing unique number for every new EAP * "counter" is an incrementing unique number for every new EAP
request. request.
So, in Figure 3 for example, the URI for the first resource would be So, per Figure 3, the URI for the first resource would be "a/eap/1".
“a/eap/1"
* Step 1. The EAP authenticator sends a POST message to the * Step 1. The EAP authenticator sends a POST message to the
resource indicated in Step 0 (e.g., '/a/eap/1'). The payload in resource indicated in Step 0 (e.g., '/a/eap/1'). The payload in
this message contains the first EAP message (EAP Request/ this message contains the first EAP message (EAP Request/Identity)
Identity), the Recipient ID of the EAP authenticator (RID-C) for and the Recipient ID of the EAP authenticator (RID-C) for OSCORE,
OSCORE, and MAY contain a CBOR array with a list of proposed and MAY contain a CBOR array with a list of proposed cipher suites
cipher suites (CS-C) for OSCORE. If the cipher suite list is not (CS-C) for OSCORE. If the cipher suite list is not included, the
included, the default cipher suite for OSCORE is used. The default cipher suite for OSCORE is used. The details of the
details of the cipher suite negotiation are discussed in cipher suite negotiation are discussed in Section 6.1.
Section 6.1.
* Step 2. The EAP peer processes the POST message sending the EAP * Step 2. The EAP peer processes the POST message sending the EAP
request (EAP-Req/Id) to the EAP peer state machine, which returns request (EAP-Req/Id) to the EAP peer state machine, which returns
an EAP response (EAP Resp/Id). Then, assigns a new resource to an EAP response (EAP Resp/Id). Then, assigns a new resource to
the ongoing authentication process (e.g., '/a/eap/2'), and deletes the ongoing authentication process (e.g., '/a/eap/2') and deletes
the previous one ('/a/eap/1'). Finally, sends a '2.01 Created' the previous one ('/a/eap/1'). Finally, sends a '2.01 Created'
response with the new resource identifier in the Location-Path response with the new resource identifier in the Location-Path
(and/or Location-Query) options for the next step. The EAP (and/or Location-Query) options for the next step. The EAP
response, the Recipient ID of the EAP peer (RID-I) and the response, the Recipient ID of the EAP peer (RID-I), and the
selected cipher suite for OSCORE (CS-I) are included in the selected cipher suite for OSCORE (CS-I) are included in the
payload. In this step, the EAP peer may create an OSCORE security payload. In this step, the EAP peer may create an OSCORE security
context (see Section 6.2). The required Master Session Key (MSK) context (see Section 6.2). The required MSK will be available
will be available once the EAP authentication is successful in once the EAP authentication is successful (Step 7).
step 7.
* Steps 3-6. From now on, the EAP authenticator and the EAP peer * Steps 3-6. From now on, the EAP authenticator and the EAP peer
will exchange EAP packets related to the EAP method (EAP-X), will exchange EAP packets related to the EAP method (EAP-X),
transported in the CoAP message payload. The EAP authenticator transported in the CoAP message payload. The EAP authenticator
will use the POST method to send EAP requests to the EAP peer. will use the POST method to send EAP requests to the EAP peer.
The EAP peer will use a response to carry the EAP response in the The EAP peer will use a response to carry the EAP response in the
payload. EAP requests and responses are represented in Figure 3 payload. EAP requests and responses are represented in Figure 3
using the nomenclature (EAP-X-Req and EAP-X-Resp, respectively). using the nomenclature "EAP-X-Req" and "EAP-X-Resp", respectively.
When a POST message arrives (e.g., '/a/eap/1') carrying an EAP When a POST message arrives (e.g., '/a/eap/1') carrying an EAP
request message, if processed correctly by the EAP peer state request message, if processed correctly by the EAP peer state
machine, returns an EAP Response. Along with each EAP Response, a machine, it returns an EAP Response. Along with each EAP
new resource is created (e.g., '/a/eap/3') for processing the next Response, a new resource is created (e.g., '/a/eap/3') for
EAP request and the ongoing resource (e.g., '/a/eap/2') is erased. processing the next EAP request and the ongoing resource (e.g.,
This way, ordering guarantee is achieved. Finally, an EAP '/a/eap/2') is erased. This way, ordering guarantees are
response is sent in the payload of a CoAP response that will also achieved. Finally, an EAP response is sent in the payload of a
indicate the new resource in the Location-Path (and/or Location- CoAP response that will also indicate the new resource in the
Query) Options. In case there is an error processing a legitimate Location-Path (and/or Location-Query) Options. If an error occurs
message, the server will return a (4.00 Bad Request). There is a while processing a legitimate message, the server will return a
discussion about error handling in Section 3.5. "4.00 Bad Request". Error handling is discussed in Section 3.5.
* Step 7. When the EAP authentication ends successfully, the EAP * Step 7. When the EAP authentication ends successfully, the EAP
authenticator obtains the Master Session Key (MSK) exported by the authenticator obtains the MSK exported by the EAP method, an EAP
EAP method, an EAP Success message, and some authorization Success message, and some authorization information (e.g., session
information (e.g., session lifetime) [RFC5247]. The EAP lifetime) [RFC5247]. The EAP authenticator creates the OSCORE
authenticator creates the OSCORE security context using the MSK security context using the MSK and Recipient ID of both entities
and Recipient ID of both entities exchanged in Steps 1 and 2. The exchanged in Steps 1 and 2. The establishment of the OSCORE
establishment of the OSCORE Security Context is defined in Security Context is defined in Section 6.2. Then, the EAP
Section 6.2. Then, the EAP authenticator sends the POST message authenticator sends the POST message protected with OSCORE for key
protected with OSCORE for key confirmation including the EAP confirmation, including the EAP Success. The EAP authenticator
Success. The EAP authenticator MAY also send a Session Lifetime, MAY also send a Session Lifetime, in seconds, which is represented
in seconds, which is represented with an unsigned integer in a by an unsigned integer in a CBOR object (see Section 5). If this
CBOR object (see Section 5). If this Session Lifetime is not Session Lifetime is not sent, the EAP peer assumes a default value
sent, the EAP peer assumes a default value of 8 hours, as of 8 hours, as RECOMMENDED in [RFC5247]. The reception of the
RECOMMENDED in [RFC5247]. The reception of the OSCORE-protected OSCORE-protected POST message is considered by the EAP peer as an
POST message is considered by the EAP peer as an alternate alternate indication of success [RFC3748]. The EAP peer state
indication of success ([RFC3748]). The EAP peer state machine in machine in the EAP peer interprets the alternate indication of
the EAP peer interprets the alternate indication of success success (similarly to the arrival of an EAP Success) and returns
(similarly to the arrival of an EAP Success) and returns the MSK, the MSK, which is used to create the OSCORE security context in
which is used to create the OSCORE security context in the EAP the EAP peer to process the protected POST message received from
peer to process the protected POST message received from the EAP the EAP authenticator.
authenticator.
* Step 8. If the EAP authentication and the verification of the * Step 8. If the EAP authentication and the verification of the
OSCORE-protected POST in Step 7 is successful, then the EAP peer OSCORE-protected POST (Step 7) are successful, then the EAP peer
answers with an OSCORE-protected '2.04 Changed'. From this point answers with an OSCORE-protected '2.04 Changed'. From this point
on, communication with the last resource (e.g., '/a/eap/(n)') MUST on, communication with the last resource (e.g., '/a/eap/(n)') MUST
be protected with OSCORE. If allowed by application policy, the be protected with OSCORE. If allowed by application policy, the
same OSCORE security context MAY be used to protect communication same OSCORE security context MAY be used to protect communication
to other resources between the same endpoints. to other resources between the same endpoints.
EAP peer EAP authenticator EAP peer EAP authenticator
------------- ------------ ------------- ------------
| POST /.well-known/coap-eap | | POST /.well-known/coap-eap |
0)| No-Response | 0)| No-Response |
skipping to change at page 9, line 41 skipping to change at line 410
| POST /a/eap/(n) | | | POST /a/eap/(n) | |
| OSCORE | | | OSCORE | |
| Payload(EAP Success||*Session-Lifetime)| OSCORE | Payload(EAP Success||*Session-Lifetime)| OSCORE
MSK 7)|<----------------------------------------| CTX MSK 7)|<----------------------------------------| CTX
| | | | | |
| | 2.04 Changed | | | 2.04 Changed |
OSCORE | OSCORE | OSCORE | OSCORE |
CTX 8)|---------------------------------------->| CTX 8)|---------------------------------------->|
*Session-Lifetime is optional *Session-Lifetime is optional
Figure 3: CoAP-EAP flow of operation with OSCORE Figure 3: CoAP-EAP Flow of Operation with OSCORE
3.3. Reauthentication 3.3. Re-Authentication
When the CoAP-EAP state is close to expiring, the EAP peer may want When the CoAP-EAP state is close to expiring, the EAP peer may want
to start a new authentication process (re-authentication) to renew to start a new authentication process (re-authentication) to renew
the state. The main goal is to obtain new and fresh keying material the state. The main goal is to obtain new and fresh keying material
(MSK/EMSK) that, in turn, allows deriving a new OSCORE security (MSK/EMSK) that, in turn, allows deriving a new OSCORE security
context, increasing the protection against key leakage. The keying context, increasing the protection against key leakage. The keying
material MUST be renewed before the expiration of the Session- material MUST be renewed before the expiration of the Session-
Lifetime. By default, the EAP Key Management Framework establishes a Lifetime. By default, the EAP key management framework [RFC5247]
default value of 8 hours to refresh the keying material. Certain EAP establishes a default value of 8 hours to refresh the keying
methods such as EAP-NOOB [RFC9140] or EAP-AKA' [RFC5448] provide fast material. Certain EAP methods such as Nimble Out-of-Band
reconnect for quicker re-authentication. The EAP re-authentication Authentication for EAP (EAP-NOOB) [RFC9140] or EAP-AKA' [RFC5448]
protocol (ERP) [RFC6696] MAY also be used to avoid the repetition of provide fast reconnect for quicker re-authentication. The EAP Re-
the entire EAP exchange. authentication Protocol (ERP) [RFC6696] MAY also be used to avoid the
repetition of the entire EAP exchange.
The re-authentication message flow will be the same as the one shown The re-authentication message flow will be the same as that shown in
in Figure 3. Nevertheless, two different CoAP-EAP states will be Figure 3. Nevertheless, two different CoAP-EAP states will be active
active during the re-authentication: the current CoAP-EAP state and during the re-authentication: the current CoAP-EAP state and the new
the new CoAP-EAP state, which will be created once the re- CoAP-EAP state, which will be created once the re-authentication has
authentication has finished successfully. Once the re-authentication finished successfully. Once the re-authentication is completed
is completed successfully, the current CoAP-EAP state is deleted and successfully, the current CoAP-EAP state is deleted and replaced by
replaced by the new CoAP-EAP state. If, for any reason, the re- the new CoAP-EAP state. If for any reason the re-authentication
authentication fails, the current CoAP-EAP state will be available fails, the current CoAP-EAP state will be available until it expires,
until it expires, or it is renewed in another try of re- or it will be renewed during a subsequent re-authentication attempt.
authentication.
If the re-authentication fails, it is up to the EAP peer to decide If the re-authentication fails, it is up to the EAP peer to decide
when to start a new re-authentication before the current EAP state when to start a new re-authentication before the current EAP state
expires. expires.
3.4. Managing the State of the Service 3.4. Managing the State of the Service
The EAP peer and the EAP authenticator keep state during the CoAP-EAP The EAP peer and the EAP authenticator keep state during the CoAP-EAP
negotiation. The CoAP-EAP state includes several important parts: negotiation. The CoAP-EAP state includes several important parts:
* A reference to an instance of the EAP (peer or authenticator/ * A reference to an instance of the EAP (peer or authenticator/
server) state machine. server) state machine.
* The resource for the next message in the negotiation (e.g., '/a/ * The resource for the next message in the negotiation (e.g., '/a/
eap/2') eap/2').
* The MSK is exported when the EAP authentication is successful. * The MSK, which is exported when the EAP authentication is
CoAP-EAP can access the different variables by the EAP state successful. CoAP-EAP can access the different variables via the
machine (i.e., [RFC4137]). EAP state machine (see [RFC4137]).
* A reference to the OSCORE context. * A reference to the OSCORE context.
Once created, the EAP authenticator MAY choose to delete the state as Once created, the EAP authenticator MAY choose to delete the state as
described in Figure 4. Conversely, the EAP peer may need to renew described in Figure 4. Conversely, the EAP peer may need to renew
the CoAP-EAP state because the key material is close to expiring, as the CoAP-EAP state because the key material is close to expiring, as
mentioned in Section 3.3. mentioned in Section 3.3.
There are situations where the current CoAP-EAP state might need to There are situations where the current CoAP-EAP state might need to
be removed. For instance, due to its expiration or forced removal, be removed. For instance, due to its expiration or forced removal,
the EAP peer has to be expelled from the security domain. This the EAP peer has to be expelled from the security domain. Such an
exchange is illustrated in Figure 4. exchange is illustrated in Figure 4.
If the EAP authenticator deems it necessary to remove the CoAP-EAP If the EAP authenticator deems it necessary to remove the CoAP-EAP
state from the EAP peer before it expires, it can send a DELETE state from the EAP peer before it expires, it can send a DELETE
command in a request to the EAP peer, referencing the last CoAP-EAP command in a request to the EAP peer, referencing the last CoAP-EAP
state resource given by the CoAP server, whose identifier will be the state resource given by the CoAP server, whose identifier will be the
last one received (e.g., '/a/eap/(n)' in Figure 3). This message is last one received (e.g., '/a/eap/(n)' in Figure 3). This message is
protected by the OSCORE security association to prevent forgery. protected by the OSCORE security association to prevent forgery.
Upon reception of this message, the CoAP server sends a response to Upon reception of this message, the CoAP server sends a response to
the EAP authenticator with the Code '2.02 Deleted', which is also the EAP authenticator with the code '2.02 Deleted', which is also
protected by the OSCORE security association. If a response from the protected by the OSCORE security association. If a response from the
EAP peer does not arrive after EXCHANGE_LIFETIME the EAP EAP peer does not arrive after EXCHANGE_LIFETIME, the EAP
authenticator will remove the state. authenticator will remove the state.
EAP peer EAP authenticator EAP peer EAP authenticator
------------- ------------- ------------- -------------
| | | |
| DELETE /a/eap/(n) | | DELETE /a/eap/(n) |
| OSCORE | | OSCORE |
|<--------------------------------------| |<--------------------------------------|
| | | |
| 2.02 Deleted | | 2.02 Deleted |
| OSCORE | | OSCORE |
|-------------------------------------->| |-------------------------------------->|
Figure 4: Deleting state Figure 4: Deleting State
3.5. Error handling 3.5. Error Handling
This section elaborates on how different errors are handled. From This section elaborates on how different errors are handled: EAP
EAP authentication failure, a non-responsive endpoint lost messages, authentication failure (Section 3.5.1), a non-responsive endpoint
or an initial POST message arriving out of place. (Section 3.5.2), and duplicated messages (Section 3.5.3).
3.5.1. EAP authentication failure 3.5.1. EAP Authentication Failure
The EAP authentication may fail in different situations (e.g., wrong The EAP authentication may fail in different situations (e.g., wrong
credentials). The result is that the EAP authenticator will send an credentials). The result is that the EAP authenticator will send an
EAP Failure message because of the EAP authentication (Step 7 in EAP Failure message because of a failed EAP authentication (Step 7 in
Figure 3). In this case, the EAP peer MUST send a response '4.01 Figure 3). In this case, the EAP peer MUST send a response '4.01
Unauthorized' in Step 8. Therefore, Step 7 and Step 8 are not Unauthorized' in Step 8. Therefore, Steps 7 and 8 are not protected
protected in this case because no Master Session Key (MSK) is in this case because no MSK is exported and the OSCORE security
exported and the OSCORE security context is not yet generated. context is not yet generated.
If the EAP authentication fails during the re-authentication and the If the EAP authentication fails during the re-authentication and the
EAP authenticator sends an EAP failure, the current CoAP-EAP state EAP authenticator sends an EAP failure, the current CoAP-EAP state
will be still usable until it expires. will still be usable until it expires.
3.5.2. Non-responsive endpoint 3.5.2. Non-Responsive Endpoint
If, for any reason, one of the entities becomes non-responsive, the If for any reason one of the entities becomes non-responsive, the
CoAP-EAP state SHOULD be removed after a stipulated amount of time. CoAP-EAP state SHOULD be removed after a stipulated amount of time.
The amount of time can be adjusted according to the policies The amount of time can be adjusted according to the policies
established by the application or use case where CoAP-EAP is used. established by the application or use case where CoAP-EAP is used.
As a default value, the CoAP EXCHANGE_LIFETIME parameter, as defined As a default value, the CoAP EXCHANGE_LIFETIME parameter, as defined
in CoAP[RFC7252] will be used. in CoAP [RFC7252], will be used.
The removal of the CoAP-EAP state in the EAP authenticator assumes The removal of the CoAP-EAP state in the EAP authenticator assumes
that the EAP peer will need to authenticate again. that the EAP peer will need to authenticate again.
According to CoAP, EXCHANGE_LIFETIME considers the time it takes According to CoAP, EXCHANGE_LIFETIME considers the time it takes
until a client stops expecting a response to a request. A timer is until a client stops expecting a response to a request. A timer is
reset every time a message is sent. By default, CoAP-EAP adopts the reset every time a message is sent. By default, CoAP-EAP adopts the
value of EXCHANGE_LIFETIME as a timer in the EAP peer and value of EXCHANGE_LIFETIME as a timer in the EAP peer and
Authenticator to remove the CoAP-EAP state if the authentication authenticator to remove the CoAP-EAP state if the authentication
process has not progressed in that time, in consequence, it has not process has not progressed in that time, in consequence, it has not
been completed. been completed.
The EAP peer will remove the CoAP-EAP state either if the The EAP peer will remove the CoAP-EAP state if either the
EXCHANGE_LIFETIME is triggered, or the EAP peer state machine returns EXCHANGE_LIFETIME is triggered or the EAP peer state machine returns
an eapFail. an eapFail.
The EAP authenticator will remove the CoAP-EAP state either if the The EAP authenticator will remove the CoAP-EAP state if either the
EXCHANGE_LIFETIME is triggered, or, when the EAP authenticator is EXCHANGE_LIFETIME is triggered or, when the EAP authenticator is
acting in pass-through mode (i.e., the EAP authentication is operating in pass-through mode (i.e., the EAP authentication is
performed against a AAA server), the EAP authenticator state machine performed against a AAA server), the EAP authenticator state machine
returns an aaaTimemout. returns "aaaTimeout" [RFC4137].
3.5.3. Duplicated message with /.well-known/coap-eap 3.5.3. Duplicated Message with /.well-known/coap-eap
The reception of the trigger message in Step 0 containing the URI The reception of the trigger message in Step 0 containing the URI
/coap-eap needs some additional considerations, as the resource is /coap-eap needs some additional considerations, as the resource is
always available in the EAP authenticator. always available in the EAP authenticator.
If a trigger message (Step 0) arrives at the EAP authenticator during If a trigger message (Step 0) arrives at the EAP authenticator during
an ongoing authentication with the same EAP peer, the EAP an ongoing authentication with the same EAP peer, the EAP
authenticator MUST silently discard this trigger message. authenticator MUST silently discard this trigger message.
If an old "POST /.well-known/coap-eap" (Step 0) arrives at the EAP If an old "POST /.well-known/coap-eap" (Step 0) arrives at the EAP
authenticator and there is no authentication ongoing, the EAP authenticator and there is no authentication ongoing, the EAP
authenticator may understand that a new authentication process is authenticator may understand that a new authentication process is
requested. Consequently, the EAP authenticator will start a new EAP requested. Consequently, the EAP authenticator will start a new EAP
authentication. However, if the EAP peer did not start any authentication. However, if the EAP peer did not start any
authentication and therefore, it did not select any resource for the authentication and therefore, it did not select any resource for the
EAP authentication. Thus, the EAP peer sends a '4.04 Not found' in EAP authentication. Thus, the EAP peer sends a '4.04 Not Found' in
the response (Figure 5). the response (Figure 5).
EAP peer EAP authenticator EAP peer EAP authenticator
---------- ---------- ---------- ----------
| *POST /.well-known/coap-eap | | *POST /.well-known/coap-eap |
0) | No-Response | 0) | No-Response |
| Payload("/a/eap/1") | | Payload("/a/eap/1") |
| ------------------------->| | ------------------------->|
| POST /a/eap/1 | | POST /a/eap/1 |
| Payload (EAP Req/Id||CS-C) | | Payload (EAP Req/Id||CS-C) |
1) |<----------------------------------------| 1) |<----------------------------------------|
| | | |
| 4.04 Not found | | 4.04 Not Found |
|---------------------------------------->| |---------------------------------------->|
*Old *Old
Figure 5: /.well-known/coap-eap with no ongoing authentication Figure 5: /.well-known/coap-eap with No Ongoing Authentication
from the EAP authenticator from the EAP Authenticator
3.6. Proxy operation in CoAP-EAP 3.6. Proxy Operation in CoAP-EAP
The CoAP-EAP operation is intended to be compatible with the use of The CoAP-EAP operation is intended to be compatible with the use of
intermediary entities between the EAP peer and the EAP authenticator intermediary entities between the EAP peer and the EAP authenticator
when direct communication is not possible. In this context, CoAP when direct communication is not possible. In this context, CoAP
proxies can be used as enablers of the CoAP-EAP exchange. proxies can be used as enablers of the CoAP-EAP exchange.
This specification is limited to using standard CoAP [RFC7252] as This specification is limited to using standard CoAP [RFC7252] as
well as standardized CoAP options [RFC8613]. It does not specify any well as standardized CoAP options [RFC8613]. It does not specify any
addition in the form of CoAP options. This is expected to ease the addition in the form of CoAP options. This is expected to ease the
integration of CoAP intermediaries in the CoAP-EAP exchange. integration of CoAP intermediaries in the CoAP-EAP exchange.
When using proxies in the CoAP-EAP, it should be considered that the When using proxies in the CoAP-EAP exchange, it should be considered
exchange contains a role-reversal process at the beginning of the that the exchange contains a role-reversal process at the beginning
exchange. In the first message, the EAP peer acts as a CoAP client of the exchange. In the first message, the EAP peer acts as a CoAP
and the EAP authenticator as the CoAP server. After that, in the client and the EAP authenticator acts as the CoAP server. After
remaining exchanges the roles are reversed, being the EAP peer, the that, in the remaining exchanges the roles are reversed, being the
CoAP server, and the EAP authenticator, the CoAP client. When using EAP peer, the CoAP server, and the EAP authenticator, the CoAP
a proxy in the exchange, for message 0, the proxy will act as client. When using a proxy in the exchange, for Message 0, the proxy
forward, and as reverse for the rest. Additionally, in the first will act as forward, and as reverse for the rest. Additionally, in
exchange, the EAP peer, as a CoAP client, sends the URI for the next the first exchange, the EAP peer, as a CoAP client, sends the URI for
CoAP message in the payload of a request. This is not the typical the next CoAP message in the payload of a request. This is not the
behavior, as URIs referring to new services/resources appear in typical behavior, as URIs referring to new services/resources appear
Location-Path and/or Location-Query Options in CoAP responses. in Location-Path and/or Location-Query Options in CoAP responses.
Hence, the proxy will have to treat the payload of message 0, as if Hence, the proxy will have to treat the payload of Message 0 as if it
it were a Location-Path Option of a CoAP response. were a Location-Path Option of a CoAP response.
4. CoAP-EAP Media type format 4. CoAP-EAP Media Type Format
In the CoAP-EAP exchange, the following format will be used. This is In the CoAP-EAP exchange, the format specified by the "application/
the format is specified by application/coap-eap media type, see coap-eap" media type will be used. See Section 9.5.
Section 9.5.
In CoAP-EAP there are two different elements that can be sent over In CoAP-EAP, there are two different elements that can be sent over
the payload. The first one is a relative URI. This payload will be the payload. The first one is a relative URI. This payload will be
present for the first message (0) in Figure 3. present for the first message (0) in Figure 3.
In all the other cases, an EAP message will be followed by the CBOR In all the other cases, an EAP message will be followed by the CBOR
Object specified in Section 5. A visual example of the second case Object specified in Section 5. A visual example of the second case
can be found in Figure 7. can be found in Figure 7 (Section 6.1).
5. CBOR Objects in CoAP-EAP 5. CBOR Objects in CoAP-EAP
In the CoAP-EAP exchange, there is information that needs to be In the CoAP-EAP exchange, there is information that needs to be
exchanged between the two entities. Examples of this information are exchanged between the two entities. Examples of this information are
the cipher suites that need to be negotiated or authorization the cipher suites that need to be negotiated or authorization
information (Session-lifetime). There may also be a need to extend information (Session-lifetime). There may also be a need to extend
the information that has to be exchanged in the future. This section the information that has to be exchanged in the future. This section
specifies the CBOR [RFC8949] data structure to exchange information specifies the CBOR data structure [RFC8949] to exchange information
between the EAP peer and the EAP authenticator in the CoAP payload. between the EAP peer and the EAP authenticator in the CoAP payload.
Figure 6 shows the specification of the CBOR Object to exchange Figure 6 shows the specification of the CBOR Object to exchange
information in CoAP-EAP information in CoAP-EAP.
CoAP-EAP_Info = { CoAP-EAP_Info = {
? 1 : [+ int], ; Cipher Suite (CS-C or CS-I) ? 1 : [+ int], ; Cipher Suite (CS-C or CS-I)
? 2 : bstr, ; RID-C ? 2 : bstr, ; RID-C
? 3 : bstr, ; RID-I ? 3 : bstr, ; RID-I
? 4 : uint ; Session-Lifetime ? 4 : uint ; Session-Lifetime
} }
Figure 6: CBOR data structure for CoAP-EAP Figure 6: CBOR Data Structure for CoAP-EAP
The parameters contain the following information: The parameters contain the following information:
1. Cipher Suite: Is an array with the list of proposed, or selected, 1. Cipher Suite: An array with the list of proposed, or selected,
COSE algorithms for OSCORE. If the field is carried over a CBOR Object Signing and Encryption (COSE) algorithms for OSCORE.
request, the meaning is the proposed cipher suite, if it is If the field is carried over a request, a proposed cipher suite
carried over a response, corresponds to the agreed-upon cipher is indicated; if it is carried over a response, it corresponds to
suite. the agreed-upon cipher suite.
2. RID-I: Is the Recipient ID of the EAP peer. The EAP 2. RID-C: The Recipient ID of the EAP authenticator. The EAP peer
authenticator uses this value as a Sender ID for its OSCORE uses this value as the Sender ID for its OSCORE Sender Context.
Sender Context. The EAP peer uses this value as Recipient ID for The EAP authenticator uses this value as the Recipient ID for its
its Recipient Context. Recipient Context.
3. RID-C: Is the Recipient ID of the EAP authenticator. The EAP 3. RID-I: The Recipient ID of the EAP peer. The EAP authenticator
peer uses this value as a Sender ID for its OSCORE Sender uses this value as the Sender ID for its OSCORE Sender Context.
Context. The EAP authenticator uses this value as Recipient ID The EAP peer uses this value as the Recipient ID for its
for its Recipient Context. Recipient Context.
4. Session-Lifetime: Is time the session is valid, in seconds. 4. Session-Lifetime: The time that the session is valid, in seconds.
Other indexes can be used to carry additional values as needed, like Other indexes can be used to carry additional values as needed, like
specific authorization parameters. specific authorization parameters.
The indexes from 65001 to 65535 are reserved for experimentation. The indexes from 65001 to 65535 are reserved for experimentation.
6. Cipher suite negotiation and key derivation 6. Cipher Suite Negotiation and Key Derivation
6.1. Cipher suite negotiation 6.1. Cipher Suite Negotiation
OSCORE runs after the EAP authentication, using the cipher suite OSCORE runs after the EAP authentication, using the cipher suite
selected in the cipher suite negotiation (Steps 1 and 2). To selected in the cipher suite negotiation (Steps 1 and 2). To
negotiate the cipher suite, CoAP-EAP follows a simple approach: the negotiate the cipher suite, CoAP-EAP follows a simple approach: The
EAP authenticator sends a list, in decreasing order of preference, EAP authenticator sends a list, in decreasing order of preference,
with the identifiers of the supported cipher suites (Step 1). In the with the identifiers of the supported cipher suites (Step 1). In the
response to that message (Step 2), the EAP peer sends a response with response to that message (Step 2), the EAP peer sends its choice.
the choice.
This list is included in the payload after the EAP message through a This list is included in the payload after the EAP message through a
CBOR array. An example of how the fields are arranged in the CoAP CBOR array. An example of how the fields are arranged in the CoAP
payload can be seen in Figure 7. An example of the exchange with the payload can be seen in Figure 7. An example exchange for the cipher
cipher suite negotiation is shown in Figure 8, where it can be suite negotiation is shown in Figure 8, where it can be appreciated
appreciated the disposition of both EAP-Request/Identity and EAP- the disposition of both the EAP-Request/Identity and EAP-Response/
Response/Identity, followed by the CBOR object defined in Section 5, Identity, followed by the CBOR object defined in Section 5,
containing the cipher suite field for the cipher suite negotiation. containing the cipher suite field for the cipher suite negotiation.
+-----+-----------+-------+------++-------------+ +-----+-----------+-------+------++-------------+
|Code |Identifier |Length | Data ||cipher suites| |Code |Identifier |Length | Data ||cipher suites|
+-----+-----------+-------+------++-------------+ +-----+-----------+-------+------++-------------+
EAP Packet CBOR array EAP packet CBOR array
Figure 7: cipher suites are in the CoAP payload Figure 7: Cipher Suites in the CoAP Payload
EAP peer EAP Auth. EAP peer EAP auth.
(CoAP server) (CoAP client) (CoAP server) (CoAP client)
------------- ------------- ------------- -------------
| | | |
| ... | | ... |
|---------------------------------------->| |---------------------------------------->|
| POST /a/eap/1 | | POST /a/eap/1 |
| Payload (EAP Req/Id, CBORArray[0,1,2]) | | Payload (EAP Req/Id, CBORArray[0,1,2]) |
1) |<----------------------------------------| 1) |<----------------------------------------|
| 2.01 Created Location-Path [/a/eap/2] | | 2.01 Created Location-Path [/a/eap/2] |
| Payload (EAP Resp/Id, CBORArray[0]) | | Payload (EAP Resp/Id, CBORArray[0]) |
2) |---------------------------------------->| 2) |---------------------------------------->|
... ...
Figure 8: cipher suite negotiation Figure 8: Cipher Suite Negotiation
In case there is no CBOR array stating the cipher suites, the default If there is no CBOR array specifying the cipher suites, the default
cipher suites are applied. If the EAP authenticator sends a cipher suites are applied. If the EAP authenticator sends a
restricted list of cipher suites that are willing to accept, it MUST restricted list of cipher suites that can be accepted, it MUST
include the default value 0 since it is mandatory to implement. The include the default value 0, since it is mandatory to implement. The
EAP peer will have at least that option available. EAP peer will have at least that option available.
The cipher suite requirements are inherited from the ones established The cipher suite requirements are inherited from those established by
by OSCORE [RFC8613], which are COSE algorithms [RFC9053]. By OSCORE [RFC8613], which are COSE algorithms [RFC9053]. By default,
default, the HMAC-based Extract-and-Expand Key Derivation Function the HMAC-based Extract-and-Expand Key Derivation Function (HKDF)
(HKDF) algorithm is SHA-256 and the AEAD algorithm is AES-CCM- algorithm is SHA-256 and the Authenticated Encryption with Associated
16-64-128 [RFC9053]. Both are mandatory to implement. The other Data (AEAD) algorithm is AES-CCM-16-64-128 [RFC9053]. ("HMAC" stands
supported and negotiated cipher suites are the following: for "Hashed Message Authentication Code".) Both are mandatory to
implement. The other supported and negotiated cipher suites are as
follows:
* 0) AES-CCM-16-64-128, SHA-256 (default) * 0) AES-CCM-16-64-128, SHA-256 (default)
* 1) A128GCM, SHA-256 * 1) A128GCM, SHA-256
* 2) A256GCM, SHA-384 * 2) A256GCM, SHA-384
* 3) ChaCha20/Poly1305, SHA-256 * 3) ChaCha20/Poly1305, SHA-256
* 4) ChaCha20/Poly1305, SHAKE256 * 4) ChaCha20/Poly1305, SHAKE256
This specification uses the HKDF defined in [RFC5869] to derive the This specification uses the HKDF as defined in [RFC5869] to derive
necessary key material. Since the key derivation process uses the the necessary key material. Since the key derivation process uses
Master Session Key (MSK), which is considered fresh key material, the the MSK, which is considered fresh key material, the HKDF-Expand
HKDF-Expand function will be used (shortened here as KDF). Why the function (shortened here as "KDF") will be used. See Section 8.1
use of this function is enough, and it is not necessary to use KDF- regarding why the use of this function is enough and it is not
Extract is explained in Section 8.1. necessary to use KDF-Extract.
6.2. Deriving the OSCORE Security Context 6.2. Deriving the OSCORE Security Context
The derivation of the security context for OSCORE allows securing the The derivation of the OSCORE security context allows securing the
communication between the EAP peer and the EAP authenticator once the communication between the EAP peer and the EAP authenticator once the
MSK has been exported, providing confidentiality, integrity, key MSK has been exported, providing confidentiality, integrity, key
confirmation (Steps 7 and 8), and downgrading attack detection. confirmation (Steps 7 and 8), and detection of downgrading attacks.
Once Master Secret and Master Salt are derived, they can be used to Once the Master Secret and Master Salt are derived, they can be used
derive the rest of the OSCORE Security Context (see Section 3.2.1 of to derive the rest of the OSCORE Security Context (see Section 3.2.1
[RFC8613]). It should be noted that ID Context is not provided for of [RFC8613]). It should be noted that the ID Context is not
the OSCORE Security Context derivation. provided for the OSCORE Security Context derivation.
The Master Secret can be derived by using the chosen cipher suite and The Master Secret can be derived by using the chosen cipher suite and
the KDF as follows: the KDF as follows:
Master Secret = KDF(MSK, CS | "COAP-EAP OSCORE MASTER SECRET", length) Master Secret = KDF(MSK, CS | "COAP-EAP OSCORE MASTER SECRET", length)
where: where:
* The MSK exported by the EAP method. Discussion about the use of * The MSK is exported by the EAP method. The use of the MSK for key
the MSK for key derivation is done in Section 8. derivation is discussed in Section 8.
* CS is the concatenation of the content of the cipher suite * CS is the concatenation of the content of the cipher suite
negotiation, that is, the concatenation of two CBOR arrays CS-C negotiation -- that is, the concatenation of two CBOR arrays CS-C
and CS-I (with CBOR ints as elements), as defined in Section 5. and CS-I (with CBOR ints as elements), as defined in Section 5.
If CS-C or CS-I were not sent, (i.e., default algorithms are used) If neither CS-C nor CS-I was sent (i.e., default algorithms are
the value used to generate CS will be the same as if the default used), the value used to generate CS will be the same as if the
algorithms were explicitly sent in CS-C or CS-I (i.e., a CBOR default algorithms were explicitly sent in CS-C or CS-I (i.e., a
array with the cipher suite 0). CBOR array with the cipher suite value of 0).
* "COAP-EAP OSCORE MASTER SECRET" is the ASCII code representation * "COAP-EAP OSCORE MASTER SECRET" is the ASCII code representation
of the non-NULL terminated string (excluding the double quotes of the non-NULL-terminated string (excluding the double quotes
around it). around it).
* CS and "COAP-EAP OSCORE MASTER SECRET" are concatenated. * CS and "COAP-EAP OSCORE MASTER SECRET" are concatenated.
* length is the size of the output key material. * length is the size of the output key material.
The Master Salt, similarly to the Master Secret, can be derived as Similarly to the Master Secret, the Master Salt can be derived as
follows: follows:
Master Salt = KDF(MSK, CS | "COAP-EAP OSCORE MASTER SALT", length) Master Salt = KDF(MSK, CS | "COAP-EAP OSCORE MASTER SALT", length)
where: where:
* The MSK is exported by the EAP method. Discussion about the use * The MSK is exported by the EAP method. The use of the MSK for key
of the MSK for the key derivation is done in Section 8. derivation is discussed in Section 8.
* CS is the concatenation of the content of the cipher suite * CS is the concatenation of the content of the cipher suite
negotiation, that is, the concatenation of two CBOR arrays CS-C negotiation -- that is, the concatenation of two CBOR arrays CS-C
and CS-I (with CBOR ints as elements), as defined in Section 5. and CS-I (with CBOR ints as elements), as defined in Section 5.
If CS-C or CS-I were not sent, (i.e., default algorithms are used) If neither CS-C nor CS-I was sent (i.e., default algorithms are
the value used to generate CS will be the same as if the default used), the value used to generate CS will be the same as if the
algorithms were explicitly sent in CS-C or CS-I (i.e., a CBOR default algorithms were explicitly sent in CS-C or CS-I (i.e., a
array with the cipher suite 0). CBOR array with the cipher suite value of 0).
* "COAP-EAP OSCORE MASTER SALT" is the ASCII code representation of * "COAP-EAP OSCORE MASTER SALT" is the ASCII code representation of
the non-NULL-terminated string (excluding the double quotes around the non-NULL-terminated string (excluding the double quotes around
it). it).
* CS and "COAP-EAP OSCORE MASTER SALT" are concatenated. * CS and "COAP-EAP OSCORE MASTER SALT" are concatenated.
* length is the size of the output key material. * length is the size of the output key material.
Since the MSK is used to derive the Master Key, the correct Since the MSK is used to derive the Master Key, the correct
verification of the OSCORE protected request (Step 7) and response verification of the OSCORE-protected request (Step 7) and response
(Step 8) confirms the EAP authenticator and the EAP peer have the (Step 8) confirms that the EAP authenticator and the EAP peer have
same Master Secret, achieving key confirmation. the same Master Secret, achieving key confirmation.
To prevent a downgrading attack, the content of the cipher suite To prevent a downgrading attack, the content of the cipher suite
negotiation (which is referred to here as CS) is embedded in the (referred to here as "CS") negotiation is embedded in the Master
Master Secret derivation. If an attacker changes the value of the Secret derivation. If an attacker changes the value of the cipher
cipher suite negotiation, the result will be different OSCORE suite negotiation, the result will be different OSCORE security
security contexts, which ends up with a failure in Steps 7 and 8. contexts, which in turn will result in failure in Steps 7 and 8.
The EAP authenticator will use the Recipient ID of the EAP peer (RID- The EAP authenticator will use the Recipient ID of the EAP peer (RID-
I) as the Sender ID for its OSCORE Sender Context. The EAP peer will I) as the Sender ID for its OSCORE Sender Context. The EAP peer will
use this value as Recipient ID for its Recipient Context. use this value as the Recipient ID for its Recipient Context.
The EAP peer will use the Recipient ID of the EAP authenticator (RID- The EAP peer will use the Recipient ID of the EAP authenticator (RID-
C) as the Sender ID for its OSCORE Sender Context. The EAP C) as the Sender ID for its OSCORE Sender Context. The EAP
authenticator will use this value as Recipient ID for its Recipient authenticator will use this value as the Recipient ID for its
Context. Recipient Context.
7. Discussion 7. Discussion
7.1. CoAP as EAP lower layer 7.1. CoAP as the EAP Lower Layer
This section discusses the suitability of the CoAP protocol as EAP This section discusses the suitability of CoAP as the EAP lower layer
lower layer and reviews the requisites imposed by EAP on any protocol and reviews the requisites imposed by EAP on any protocol
transporting EAP. What EAP expects from its lower layers can be transporting EAP. What EAP expects from its lower layers can be
found in Section 3.1 of [RFC3748], which is elaborated next: found in Section 3.1 of [RFC3748], which is elaborated next:
Unreliable transport. EAP does not assume that lower layers are Unreliable transport: EAP does not assume that lower layers are
reliable, but it can benefit from a reliable lower layer. In this reliable, but it can benefit from a reliable lower layer. In this
sense, CoAP provides a reliability mechanism (e.g., using Confirmable sense, CoAP provides a reliability mechanism (e.g., using
messages). Confirmable messages).
Lower layer error detection. EAP relies on lower layer error Lower-layer error detection: EAP relies on lower-layer error
detection (e.g., CRC, checksum, MIC, etc.). For simplicity, CoAP-EAP detection (e.g., CRC, checksum, Message Integrity Check (MIC),
delegates error detection to the lower layers, such as the link layer etc.). For simplicity, CoAP-EAP delegates error detection to the
or transport layer (e.g., UDP over IPv6 or TCP). lower layers, such as the link layer or transport layer (e.g., UDP
over IPv6 or TCP).
Lower layer security. EAP does not require security services from Lower-layer security: EAP does not require security services from
the lower layers. the lower layers.
Minimum MTU. Lower layers need to provide an EAP MTU size of 1020 Minimum MTU: Lower layers need to provide an EAP MTU size of 1020
octets or greater. CoAP assumes an upper bound of 1024 octets for octets or greater. CoAP assumes an upper bound of 1024 octets for
its payload, which covers the EAP requirements when in the CoAP its payload, which covers the EAP requirements when only the EAP
payload only the EAP message is sent. In the case of Messages 1 and message is sent in the CoAP payload. In the case of Messages 1
2 in Figure 3, those messages have extra information apart from EAP. and 2 in Figure 3, those messages have extra information apart
Nevertheless, the EAP Req/Id has a fixed length of 5 bytes. Message from EAP. Nevertheless, the EAP Req/Id has a fixed length of 5
2 with the EAP Resp/Id, would limit the length of the identity being bytes. Message 2, with the EAP Resp/Id, would limit the length of
used to the CoAP payload maximum size (1024) - len( CS-I || RID-I ) - the identity being used to the CoAP payload maximum size (1024) -
EAP Response header (5 bytes), which leaves enough space for sending len( CS-I || RID-I ) - EAP Response header (5 bytes), which leaves
even lengthy identities. Nevertheless, this limitation can be enough space for sending even lengthy identities. Nevertheless,
overcome by using CoAP block-wise transfer[RFC7959]. Note: When EAP this limitation can be overcome by using CoAP block-wise transfers
is proxied over an AAA framework, the Access-Request packets in [RFC7959]. Note: When EAP is proxied over a AAA framework, the
RADIUS MUST contain a Framed-MTU attribute with the value 1024, and Access-Request packets in RADIUS MUST contain a Framed-MTU
the Framed-MTU AVP to 1024 in DIAMETER This attribute signals the AAA attribute with a value of 1024 and, in Diameter, the Framed-MTU
server that it should limit its responses to 1024 octets. Attribute-Value Pair (AVP) with a value of 1024. This information
signals the AAA server that it should limit its responses to 1024
octets.
Ordering guarantees. EAP relies on lower layer ordering guarantees Ordering guarantees: EAP relies on lower-layer ordering guarantees
for correct operation. Regarding message ordering, every time a new for correct operation. Regarding message ordering, every time a
message arrives at the authentication service hosted by the EAP peer, new message arrives at the authentication service hosted by the
a new resource is created, and this is indicated in a "2.01 Created" EAP peer, a new resource is created, and this is indicated in a
response code along with the name of the new resource via Location- "2.01 Created" response code along with the name of the new
Path or Location-Query options. This way, the application shows that resource via Location-Path or Location-Query options. This way,
its state has advanced. the application shows that its state has advanced.
Although the [RFC3748] states: "EAP provides its own support for Although [RFC3748] states that "EAP provides its own support for
duplicate elimination and retransmission", EAP is also reliant on duplicate elimination and retransmission," EAP is also reliant on
lower layer ordering guarantees. In this regard, [RFC3748] talks lower-layer ordering guarantees. In this regard, [RFC3748] talks
about possible duplication and says: "Where the lower layer is about possible duplication and says, "Where the lower layer is
reliable, it will provide the EAP layer with a non-duplicated stream reliable, it will provide the EAP layer with a non-duplicated stream
of packets. However, while it is desirable that lower layers provide of packets. However, while it is desirable that lower layers provide
for non-duplication, this is not a requirement". CoAP provides a for non-duplication, this is not a requirement." CoAP provides a
non-duplicated stream of packets and accomplishes the desirable non- non-duplicated stream of packets and accomplishes the desirable non-
duplication. In addition, [RFC3748] says that when EAP runs over a duplication. In addition, [RFC3748] says that when EAP runs over a
reliable lower layer "the authenticator retransmission timer SHOULD reliable lower layer "the authenticator retransmission timer SHOULD
be set to an infinite value, so that retransmissions do not occur at be set to an infinite value, so that retransmissions do not occur at
the EAP layer." the EAP layer."
7.2. Size of the EAP lower layer vs EAP method size 7.2. Size of the EAP Lower Layer vs. EAP Method Size
Regarding the impact that an EAP lower layer will have on the number Regarding the impact that an EAP lower layer will have on the number
of bytes of the whole authentication exchange, there is a comparison of bytes of the whole authentication exchange, [CoAP-EAP] provides a
with another network layer-based EAP lower layer, PANA [RFC5191], in comparison with another network-layer-based EAP lower layer, the
[coap-eap]. Protocol for Carrying Authentication for Network Access (PANA) as
defined in [RFC5191].
The EAP method being transported will take most of the exchange, The EAP method being transported will take most of the exchange.
however, the impact of the EAP lower layer cannot be ignored, However, the impact of the EAP lower layer cannot be ignored,
especially in very constrained communication technologies, such as especially in very constrained communication technologies such as
the ones found in IoT, with limited capabilities. those with limited capabilities (e.g., as can be found in IoT
networks).
Note: For constrained devices and network scenarios, the use of the Note: For scenarios involving constrained devices and networks, the
latest versions of EAP methods (e.g., EAP-AKA' [RFC5448], EAP-TLS 1.3 use of the latest versions of EAP methods (e.g., EAP-AKA' [RFC5448],
[RFC9190]) is recommended in favor of older versions with the goal of EAP-TLS 1.3 [RFC9190]) is recommended in favor of older versions with
economization, or EAP methods more adapted for IoT (e.g., EAP-NOOB the goal of economizing, or EAP methods more adapted for IoT networks
[RFC9140], EAP-EDHOC [I-D.ietf-emu-eap-edhoc], etc.). (e.g., EAP-NOOB [RFC9140], EAP-EDHOC [EAP-EDHOC], etc.).
8. Security Considerations 8. Security Considerations
There are some security aspects to be considered, such as how Security aspects to be considered include how authorization is
authorization is managed, the use of Master Session Key (MSK) as key managed, the use of the MSK as key material, and how trust in the EAP
material, and how trust in the EAP authenticator is established. authenticator is established. Additional considerations such as EAP
Additional considerations such as EAP channel binding as per channel binding as per [RFC6677] are also discussed here.
[RFC6677] are also discussed here.
8.1. Use of EAP Methods 8.1. Use of EAP Methods
This document limits the use of EAP methods to the ones compliant This document limits the use of EAP methods to those compliant with
with [RFC4017] specification, yielding strong and fresh session keys [RFC4017], yielding strong and fresh session keys such as the MSK.
such as the MSK. By this assumption, the HKDF-Expand function is By this assumption, the HKDF-Expand function is used directly, as
used directly, as clarified in [RFC5869]. clarified in [RFC5869].
8.2. Authorization 8.2. Authorization
Authorization is part of bootstrapping. It serves to establish Authorization is part of bootstrapping. It serves to establish
whether the EAP peer can join and the set of conditions it must whether the EAP peer can join and the set of conditions it must
adhere to. The authorization data will be gathered from the adhere to. The authorization data will be gathered from the
organization that is responsible for the EAP peer and sent to the EAP organization that is responsible for the EAP peer and sent to the EAP
authenticator in case AAA infrastructure is deployed. authenticator if a AAA infrastructure is deployed.
In standalone mode, the authorization information will be in the EAP In standalone mode, the authorization information will be in the EAP
authenticator. If the pass-through mode is used, authorization data authenticator. If pass-through mode is used, authorization data
received from the AAA server can be delivered by the AAA protocol received from the AAA server can be delivered by the AAA protocol
(e.g., RADIUS or Diameter). Providing more fine-grained (e.g., RADIUS or Diameter). Providing more fine-grained
authorization data can be with the transport of SAML in RADIUS authorization data can be done by transporting the data using the
[RFC7833]. After bootstrapping, additional authorization information Security Assertion Markup Language (SAML) in RADIUS [RFC7833]. After
may be needed to operate in the security domain. This can be taken bootstrapping, additional authorization information may be needed to
care of by the solutions proposed in the ACE WG, such as the use of operate in the security domain. This can be taken care of by the
OAuth [RFC9200], among other solutions, to provide Authentication and solutions proposed in the Authentication and Authorization for
Authorization for Constrained Environments. Constrained Environments (ACE) WG, such as the use of OAuth
[RFC9200], among other solutions, to provide ACE.
8.3. Allowing CoAP-EAP traffic to perform authentication 8.3. Allowing CoAP-EAP Traffic to Perform Authentication
Since CoAP is an application protocol, CoAP-EAP assumes certain IP Since CoAP is an application protocol, CoAP-EAP assumes certain IP
connectivity in the link between the EAP peer and the EAP connectivity in the link between the EAP peer and the EAP
authenticator to run. This link MUST authorize exclusively authenticator to run. This link MUST authorize exclusively
unprotected IP traffic to be sent between the EAP peer and the EAP unprotected IP traffic to be sent between the EAP peer and the EAP
authenticator during the authentication with CoAP-EAP. Once the authenticator during the authentication with CoAP-EAP. Once the
authentication is successful, the key material generated by the EAP authentication is successful, the key material generated by the EAP
authentication (MSK) and any other traffic can be authorized if it is authentication (MSK) and any other traffic can be authorized if it is
protected. It is worth noting that if the EAP authenticator is not protected. It is worth noting that if the EAP authenticator is not
in the same link as the EAP peer and an intermediate entity helps in the same link as the EAP peer and an intermediate entity (i.e., a
with this process (i.e., CoAP proxy) and the same comment applies to CoAP proxy) helps with this process, this concept also applies to the
the communication between the EAP peer and the intermediary. communication between the EAP peer and the intermediary.
Alternatively, the link-layer MAY provide support to transport CoAP- Alternatively, the link layer MAY provide support to transport CoAP-
EAP without an IP address by using link-layer frames (e.g. by EAP without an IP address by using link-layer frames (e.g., by
defining a new Key Management Protocol ID in IEEE 802.15.9 defining a new Key Management Protocol ID per IEEE 802.15.9
[ieee802159]). [IEEE802159]).
8.4. Freshness of the key material 8.4. Freshness of the Key Material
In CoAP-EAP there is no nonce exchange to provide freshness to the In CoAP-EAP, there is no nonce exchange to provide freshness to the
keys derived from the MSK. The MSK and Extended Master Session Key keys derived from the MSK. The MSKs and EMSKs are fresh key material
(EMSK) keys according to the EAP Key Management Framework [RFC5247] per [RFC5247]. Since only one authentication is established per EAP
are fresh key material. Since only one authentication is established authenticator, there is no need to generate additional key material.
per EAP authenticator, there is no need to generate additional key If a new MSK is required, a re-authentication can be done by running
material. In case a new MSK is required, a re-authentication can be the process again or using a more lightweight EAP method to derive
done, by running the process again or using a more lightweight EAP additional key material as elaborated in Section 3.3.
method to derive additional key material as elaborated in
Section 3.3.
8.5. Channel Binding support 8.5. Channel-Binding Support
According to the [RFC6677], channel binding, related to EAP, is sent According to [RFC6677], channel binding, as related to EAP, is sent
through the EAP method supporting it. through the EAP method supporting it.
To satisfy the requirements of the document, the EAP lower layer To satisfy the requirements of the document, the EAP lower-layer
identifier (To be assigned by IANA) needs to be sent, in the EAP identifier (assigned by IANA) needs to be sent, in the EAP Lower-
Lower-Layer Attribute if RADIUS is used. Layer Attribute if RADIUS is used.
8.6. Additional Security Considerations 8.6. Additional Security Considerations
In the authentication process, there is a possibility of an entity In the authentication process, it is possible for an entity to forge
forging messages to generate denial of service (DoS) attacks on any messages to generate denial-of-service (DoS) attacks on any of the
of the entities involved. For instance, an attacker can forge entities involved. For instance, an attacker can forge multiple
multiple initial messages to start an authentication (Step 0) with initial messages to start an authentication (Step 0) with the EAP
the EAP authenticator as if they were sent by different EAP peers. authenticator as if they were sent by different EAP peers.
Consequently, the EAP authenticator will start an authentication Consequently, the EAP authenticator will start an authentication
process for each message received in Step 0, sending the EAP Request/ process for each message received in Step 0, sending the EAP Request/
Id (Step 1). Id (Step 1).
To minimize the effects of this DoS attack, it is RECOMMENDED that To minimize the effects of this DoS attack, it is RECOMMENDED that
the EAP authenticator limits the rate at which it processes incoming the EAP authenticator limit the rate at which it processes incoming
messages in Step 0 to provide robustness against denial of service messages in Step 0 to provide robustness against DoS attacks. The
(DoS) attacks. The details of rate limiting are outside the scope of details of rate limiting are outside the scope of this specification.
this specification. Nevertheless, the rate of these messages is also Nevertheless, the rate of these messages is also limited by the
limited by the bandwidth available between the EAP peer and the EAP bandwidth available between the EAP peer and the EAP authenticator.
authenticator. This bandwidth will be especially limited in This bandwidth will be especially limited in constrained links (e.g.,
constrained links (e.g., LPWAN). Lastly, it is also RECOMMENDED to Low-Power WANs (LPWANs)). Lastly, it is also RECOMMENDED to reduce
reduce at a minimum the state in the EAP authenticator at least until at a minimum the state in the EAP authenticator at least until the
the EAP Response/Id is received by the EAP authenticator. EAP Response/Id is received by the EAP authenticator.
Another security-related concern is how to ensure that the EAP peer Another security-related concern is how to ensure that the EAP peer
joining the security domain can trust the EAP authenticator. This joining the security domain can trust the EAP authenticator. This
issue is elaborated in the EAP Key Management Framework [RFC5247]. issue is elaborated in [RFC5247]. In particular, the EAP peer knows
In particular, the EAP peer knows it can trust the EAP authenticator it can trust the EAP authenticator because the key that is used to
because the key that is used to establish the security association is establish the security association is derived from the MSK. If the
derived from the MSK. If the EAP authenticator has the MSK, it is EAP authenticator has the MSK, it is because the AAA server of the
because the AAA Server of the EAP peer trusted the EAP authenticator. EAP peer trusted the EAP authenticator.
9. IANA Considerations 9. IANA Considerations
This section provides guidance to the Internet Assigned Numbers
Authority (IANA) regarding the registration of values related to
CoAP-EAP.
9.1. CoAP-EAP Cipher Suites 9.1. CoAP-EAP Cipher Suites
IANA has created a new registry titled "CoAP-EAP Cipher Suites" under IANA has created a new registry titled "CoAP-EAP Cipher Suites" under
the new group name "CoAP-EAP protocol". The registration procedures a new registry group named "CoAP-EAP Protocol". The registration
are "Specification Required", "Private Use", "Standards Action with procedures are "Specification Required", "Private Use", and
Expert Review" and "Specification Required" following the indications "Standards Action with Expert Review" (see [RFC8126]), as shown in
in Table 1. Table 1.
+===============+=====================================+ +===============+=====================================+
| Range | Registration Procedures | | Range | Registration Procedures |
+===============+=====================================+ +===============+=====================================+
| -65536 to -25 | Specification Required | | -65536 to -25 | Specification Required |
+---------------+-------------------------------------+ +---------------+-------------------------------------+
| -24 to -21 | Private Use | | -24 to -21 | Private Use |
+---------------+-------------------------------------+ +---------------+-------------------------------------+
| -20 to 23 | Standards Action with Expert Review | | -20 to 23 | Standards Action with Expert Review |
+---------------+-------------------------------------+ +---------------+-------------------------------------+
| 24 to 65535 | Specification Required | | 24 to 65535 | Specification Required |
+---------------+-------------------------------------+ +---------------+-------------------------------------+
Table 1: CoAP-EAP Cipher Suites Registration Procedures Table 1: Registration Procedures for CoAP-EAP
Cipher Suites
The columns of the registry are Value, Algorithms, Description and The columns of the registry are Value, Algorithms, Description, and
Reference, where Value is an integer, and the other columns are text Reference, where Value is an integer and the other columns are text
strings. The initial contents of the registry are shown in Table 2. strings. The initial registrations are shown in Table 2.
+=======+============+============================+============+ +=======+============+=============================+===========+
| Value | Algorithms | Description | Reference | | Value | Algorithms | Description | Reference |
+=======+============+============================+============+ +=======+============+=============================+===========+
| 0 | 10, -16 | AES-CCM-16-64-128, SHA-256 | [[this | | 0 | 10, -16 | AES-CCM-16-64-128, SHA-256 | RFC 9820 |
| | | | document]] | +-------+------------+-----------------------------+-----------+
+-------+------------+----------------------------+------------+ | 1 | 1, -16 | A128GCM, SHA-256 | RFC 9820 |
| 1 | 1, -16 | A128GCM, SHA-256 | [[this | +-------+------------+-----------------------------+-----------+
| | | | document]] | | 2 | 3, -43 | A256GCM, SHA-384 | RFC 9820 |
+-------+------------+----------------------------+------------+ +-------+------------+-----------------------------+-----------+
| 2 | 3, -43 | A256GCM, SHA-384 | [[this | | 3 | 24, -16 | ChaCha20/Poly1305, SHA-256 | RFC 9820 |
| | | | document]] | +-------+------------+-----------------------------+-----------+
+-------+------------+----------------------------+------------+ | 4 | 24, -45 | ChaCha20/Poly1305, SHAKE256 | RFC 9820 |
| 3 | 24, -16 | ChaCha20/Poly1305, SHA-256 | [[this | +-------+------------+-----------------------------+-----------+
| | | | document]] |
+-------+------------+----------------------------+------------+
| 4 | 24, -45 | ChaCha20/Poly1305, | [[this |
| | | SHAKE256 | document]] |
+-------+------------+----------------------------+------------+
Table 2: CoAP-EAP Cipher Suites initial values Table 2: CoAP-EAP Cipher Suites: Initial Registrations
9.2. CDDL in CoAP-EAP Information elements 9.2. CDDL in CoAP-EAP Information Elements
IANA has created a new registry titled "CoAP-EAP Information element" IANA has created a new registry titled "CoAP-EAP Information
under the new group name "CoAP-EAP protocol". The registration Elements" under a new registry group named "CoAP-EAP Protocol". The
procedure are "Specification Required", "Private Use", "Standards registration procedures are "Standards Action with Expert Review",
Action with Expert Review" and "Specification Required" following the "Private Use", "Specification Required", and "Experimental Use" (see
indications in Table 3. [RFC8126]), as shown in Table 3.
+================+=====================================+ +================+=====================================+
| Range | Registration Procedures | | Range | Registration Procedures |
+================+=====================================+ +================+=====================================+
| 0 to 23 | Standards Action with Expert Review | | 0 to 23 | Standards Action with Expert Review |
+----------------+-------------------------------------+ +----------------+-------------------------------------+
| 24 to 49 | Private Use | | 24 to 49 | Private Use |
+----------------+-------------------------------------+ +----------------+-------------------------------------+
| 50 to 65000 | Specification Required | | 50 to 65000 | Specification Required |
+----------------+-------------------------------------+ +----------------+-------------------------------------+
| 65001 to 65535 | Experimental Use | | 65001 to 65535 | Experimental Use |
+----------------+-------------------------------------+ +----------------+-------------------------------------+
Table 3: CoAP-EAP Information Elements Registration Table 3: Registration Procedures for CoAP-EAP
Procedures Information Elements
The columns of the registry are Name, Label, CBOR Type, Description The columns of the registry are Name, Label, CBOR Type, Description,
and Reference, where Value is an integer, and the other columns are and Reference, where Label is an integer and the other columns are
text strings. The initial contents of the registry are described in text strings. The initial registrations are shown in Table 4.
Table 4.
+==================+=======+========+===============+============+ +==================+=======+========+===============+===========+
| Name | Label | CBOR | Description | Reference | | Name | Label | CBOR | Description | Reference |
| | | Type | | | | | | Type | | |
+==================+=======+========+===============+============+ +==================+=======+========+===============+===========+
| Cipher Suite | 1 | CBOR | List of the | [[this | | Cipher Suite | 1 | CBOR | List of the | RFC 9820 |
| | | Array | proposed or | document]] | | | | Array | proposed or | |
| | | | selected COSE | | | | | | selected COSE | |
| | | | algorithms | | | | | | algorithms | |
| | | | for OSCORE | | | | | | for OSCORE | |
+------------------+-------+--------+---------------+------------+ +------------------+-------+--------+---------------+-----------+
| RID-C | 2 | Byte | It contains | [[this | | RID-C | 2 | Byte | Contains the | RFC 9820 |
| | | String | the Recipient | document]] | | | | String | Recipient ID | |
| | | | ID of the EAP | | | | | | of the EAP | |
| | | | authenticator | | | | | | authenticator | |
+------------------+-------+--------+---------------+------------+ +------------------+-------+--------+---------------+-----------+
| RID-I | 3 | Byte | It contains | [[this | | RID-I | 3 | Byte | Contains the | RFC 9820 |
| | | String | the Recipient | document]] | | | | String | Recipient ID | |
| | | | ID of the EAP | | | | | | of the EAP | |
| | | | peer | | | | | | peer | |
+------------------+-------+--------+---------------+------------+ +------------------+-------+--------+---------------+-----------+
| Session-Lifetime | 4 | uint | Contains the | [[this | | Session-Lifetime | 4 | uint | Contains the | RFC 9820 |
| | | | time the | document]] | | | | | time that the | |
| | | | session is | | | | | | session is | |
| | | | valid in | | | | | | valid, in | |
| | | | seconds | | | | | | seconds | |
+------------------+-------+--------+---------------+------------+ +------------------+-------+--------+---------------+-----------+
Table 4: CoAP-EAP Information Elements initial content Table 4: CoAP-EAP Information Elements: Initial Registrations
9.3. The Well-Known URI Registry 9.3. The Well-Known URIs Registry
IANA has added the well-known URI "coap-eap" to the "Well-Known URIs" IANA has added the well-known URI "coap-eap" to the "Well-Known URIs"
registry under the group name "Well-Known URIs" defined by [RFC8615]. registry under the "Well-Known URIs" registry group defined by
[RFC8615].
* URI suffix: coap-eap
* Change controller: IETF
* Specification document(s): [[this document]]
* Related information: None
* Status: permanent
9.4. The EAP lower layer identifier registry
IANA has added the identifier of CoAP-EAP to the registry "EAP Lower URI Suffix: coap-eap
Layer" under the Extensible Authentication Protocol (EAP) Registry Reference: RFC 9820
defined by [RFC6677]. Status: permanent
Change Controller: IETF
* Value: TBD. 9.4. The EAP Lower Layers Registry
* Lower Layer: CoAP-EAP IANA has added the identifier "CoAP-EAP" to the "EAP Lower Layers"
registry (defined by [RFC6677]) under the "Extensible Authentication
Protocol (EAP) Registry".
* Specification document(s): [[this document]] Value: 10
Lower Layer: CoAP-EAP
Reference: RFC 9820
9.5. Media Types Registry 9.5. Media Types Registry
IANA has added the media types "application/coap-eap" to the "Media IANA has added the media type "application/coap-eap" to the "Media
Types" registry. Section 4 defines the format. Types" registry. Section 4 defines the format.
* Type name: application Type name: application
* Subtype name: coap-eap
* Required parameters: N/A
* Optional parameters: N/A Subtype name: coap-eap
* Encoding considerations: binary Required parameters: N/A
* Security considerations: See Section 8 of [[this document]]. Optional parameters: N/A
* Interoperability considerations: N/A Encoding considerations: binary
* Published specification: [[this document]] Security considerations: See Section 8 of RFC 9820.
* Applications that use this media type: To be identified Interoperability considerations: N/A
* Fragment identifier considerations: N/A Published specification: RFC 9820
* Additional information: Applications that use this media type: To be identified
- Magic number(s): N/A Fragment identifier considerations: N/A
- File extension(s): N/A Additional information:
- Macintosh file type code(s): N/A Magic number(s): N/A
File extension(s): N/A
Macintosh file type code(s): N/A
* Person and email address to contact for further information: Person and email address to contact for further information:
ace@ietf.org ace@ietf.org
* Intended usage: COMMON Intended usage: COMMON
* Restrictions on usage: N/A Restrictions on usage: N/A
* Author: See "Authors' Addresses" section of [[this document]]. Author: See the "Authors' Addresses" section of RFC 9820.
* Change Controller: IETF Change Controller: IETF
9.6. CoAP Content-Formats Registry 9.6. CoAP Content-Formats Registry
IANA has added the media types "application/coap-eap" to the "CoAP IANA has added the media type "application/coap-eap" to the "CoAP
Content-Formats" registry under the group name "Constrained RESTful Content-Formats" registry under the "Constrained RESTful Environments
Environments (CoRE) Parameters" following the specification in (CoRE) Parameters" registry group, following the specification in
Section 12.3 of [RFC7252]. Section 12.3 of [RFC7252].
+======================+==================+=====+===================+ +======================+==================+=====+===========+
| Media Type | Content Encoding | ID | Reference | | Media Type | Content Encoding | ID | Reference |
+======================+==================+=====+===================+ +======================+==================+=====+===========+
| application/coap-eap | - | TBD | [[this | | application/coap-eap | - | 269 | RFC 9820 |
| | | | document]] | +----------------------+------------------+-----+-----------+
+----------------------+------------------+-----+-------------------+
Table 5: CoAP Content-Formats Registry Table 5: CoAP Content-Formats Registry
9.7. Resource Type (rt=) Link Target Attribute Values Registry 9.7. Resource Type (rt=) Link Target Attribute Values Registry
IANA has added the resource type "core.coap-eap" to the "Resource IANA has added the resource type "core.coap-eap" to the "Resource
Type (rt=) Link Target Attribute Values" registry under the group Type (rt=) Link Target Attribute Values" registry under the
name "Constrained RESTful Environments (CoRE) Parameters". "Constrained RESTful Environments (CoRE) Parameters" registry group.
* Value: "core.coap-eap"
- Description: CoAP-EAP resource. +===============+===================+===========+
| Value | Description | Reference |
+===============+===================+===========+
| core.coap-eap | CoAP-EAP resource | RFC 9820 |
+---------------+-------------------+-----------+
- Reference: [[this document]] Table 6: Resource Type (rt=) Link Target
Attribute Values Registry
9.8. Expert Review Instructions 9.8. Expert Review Instructions
The IANA registries established in this document are defined as The IANA registries established in this document apply the
"Specification Required", "Private Use", "Standards Action with "Specification Required", "Private Use", "Standards Action with
Expert Review", "Experimental Use" and "Specification Required". Expert Review", and "Experimental Use" policies. (See also
This section provides general guidelines for what experts should [RFC8126].) This section provides general guidelines for what
focus on, but as they are designated experts for a reason, they experts should focus on, but as they are designated experts for a
should be granted flexibility. reason, they should be granted flexibility.
* When defining the use of CoAP-EAP Information Elements: Experts * When defining the use of CoAP-EAP Information Elements (IEs),
are expected to evaluate how the values are defined, their scope, experts are expected to evaluate how the values are defined, their
and whether they align with CoAP-EAP's functionality and scope, and whether they align with CoAP-EAP's functionality and
constraints. They are expected to assess if the values are clear, constraints. They are expected to assess whether the values are
well-structured, and follow CoAP and CoAP-EAP conventions, such as clear, well structured, and follow CoAP and CoAP-EAP conventions,
concise encoding for constrained environments. They should ensure such as concise encoding for constrained environments. They
these IEs can seamlessly integrate with existing CoAP should ensure that these IEs can seamlessly integrate with
implementations and extensions. It is also expected that they existing CoAP implementations and extensions. Experts are also
verify if IE values are protected from unauthorized modification expected to verify that IE values are protected from unauthorized
or misuse during transmission. modification or misuse during transmission.
* When adding new cipher suites: Experts must ensure that algorithm * When adding new cipher suites, experts must ensure that algorithm
values are sourced from the appropriate registry when required. values are sourced from the appropriate registry when required.
They should also consider seeking input from relevant IETF working They should also consider seeking input from relevant IETF working
groups regarding the accuracy of registered parameters. groups regarding the accuracy of registered parameters.
10. References 10. References
10.1. Normative References 10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
skipping to change at page 29, line 27 skipping to change at line 1284
(OSCORE)", RFC 8613, DOI 10.17487/RFC8613, July 2019, (OSCORE)", RFC 8613, DOI 10.17487/RFC8613, July 2019,
<https://www.rfc-editor.org/info/rfc8613>. <https://www.rfc-editor.org/info/rfc8613>.
[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>.
10.2. Informative References 10.2. Informative References
[coap-eap] Garcia-Carrillo, D. and R. Marin-Lopez, "Lightweight CoAP- [CoAP-EAP] Garcia-Carrillo, D. and R. Marin-Lopez, "Lightweight CoAP-
Based Bootstrapping Service for the Internet of Things", Based Bootstrapping Service for the Internet of Things",
2016, <https://www.mdpi.com/1424-8220/16/3/358>. Sensors, vol. 16, no. 3, DOI 10.3390/s16030358, 2016,
<https://www.mdpi.com/1424-8220/16/3/358>.
[EAP-framework-IoT]
Sethi, M., "Secure Network Access Authentication for IoT
Devices: EAP Framework vs. Individual Protocols", 2021,
<https://ieeexplore.ieee.org/document/9579387>.
[I-D.ietf-emu-eap-edhoc] [EAP-EDHOC]
Garcia-Carrillo, D., Marin-Lopez, R., Selander, G., and J. Garcia-Carrillo, D., Marin-Lopez, R., Selander, G., Preuß
P. Mattsson, "Using the Extensible Authentication Protocol Mattsson, J., and F. Lopez-Gomez, "Using the Extensible
(EAP) with Ephemeral Diffie-Hellman over COSE (EDHOC)", Authentication Protocol (EAP) with Ephemeral Diffie-
Work in Progress, Internet-Draft, draft-ietf-emu-eap- Hellman over COSE (EDHOC)", Work in Progress, Internet-
edhoc-02, 21 October 2024, Draft, draft-ietf-emu-eap-edhoc-04, 4 June 2025,
<https://datatracker.ietf.org/doc/html/draft-ietf-emu-eap- <https://datatracker.ietf.org/doc/html/draft-ietf-emu-eap-
edhoc-02>. edhoc-04>.
[ieee802159] [EAP-Framework-IoT]
Sethi, M. and T. Aura, "Secure Network Access
Authentication for IoT Devices: EAP Framework vs.
Individual Protocols", IEEE Communications Standards
Magazine, vol. 5, no. 3, pp. 34-39,
DOI 10.1109/MCOMSTD.201.2000088, 2021,
<https://ieeexplore.ieee.org/document/9579387>.
[IEEE802159]
IEEE, "IEEE Standard for Transport of Key Management IEEE, "IEEE Standard for Transport of Key Management
Protocol (KMP) Datagrams", 2021. Protocol (KMP) Datagrams", IEEE Std 802.15.9-2021,
DOI 10.1109/IEEESTD.2022.9690134, January 2022,
<https://doi.org/10.1109/IEEESTD.2022.9690134>.
[lo-coap-eap] [LO-CoAP-EAP]
Garcia-Carrillo, D., Marin-Lopez, R., Kandasamy, A., and Garcia-Carrillo, D., Marin-Lopez, R., Kandasamy, A., and
A. Pelov, "A CoAP-Based Network Access Authentication A. Pelov, "A CoAP-Based Network Access Authentication
Service for Low-Power Wide Area Networks: LO-CoAP-EAP", Service for Low-Power Wide Area Networks: LO-CoAP-EAP",
2017, <https://www.mdpi.com/1424-8220/17/11/2646>. Sensors, vol. 17, no. 11, DOI 10.3390/s17112646, 2017,
<https://www.mdpi.com/1424-8220/17/11/2646>.
[RFC4017] Stanley, D., Walker, J., and B. Aboba, "Extensible [RFC4017] Stanley, D., Walker, J., and B. Aboba, "Extensible
Authentication Protocol (EAP) Method Requirements for Authentication Protocol (EAP) Method Requirements for
Wireless LANs", RFC 4017, DOI 10.17487/RFC4017, March Wireless LANs", RFC 4017, DOI 10.17487/RFC4017, March
2005, <https://www.rfc-editor.org/info/rfc4017>. 2005, <https://www.rfc-editor.org/info/rfc4017>.
[RFC4137] Vollbrecht, J., Eronen, P., Petroni, N., and Y. Ohba, [RFC4137] Vollbrecht, J., Eronen, P., Petroni, N., and Y. Ohba,
"State Machines for Extensible Authentication Protocol "State Machines for Extensible Authentication Protocol
(EAP) Peer and Authenticator", RFC 4137, (EAP) Peer and Authenticator", RFC 4137,
DOI 10.17487/RFC4137, August 2005, DOI 10.17487/RFC4137, August 2005,
skipping to change at page 31, line 22 skipping to change at line 1379
Format, and Confirmation Methods for the Security Format, and Confirmation Methods for the Security
Assertion Markup Language (SAML)", RFC 7833, Assertion Markup Language (SAML)", RFC 7833,
DOI 10.17487/RFC7833, May 2016, DOI 10.17487/RFC7833, May 2016,
<https://www.rfc-editor.org/info/rfc7833>. <https://www.rfc-editor.org/info/rfc7833>.
[RFC7967] Bhattacharyya, A., Bandyopadhyay, S., Pal, A., and T. [RFC7967] Bhattacharyya, A., Bandyopadhyay, S., Pal, A., and T.
Bose, "Constrained Application Protocol (CoAP) Option for Bose, "Constrained Application Protocol (CoAP) Option for
No Server Response", RFC 7967, DOI 10.17487/RFC7967, No Server Response", RFC 7967, DOI 10.17487/RFC7967,
August 2016, <https://www.rfc-editor.org/info/rfc7967>. August 2016, <https://www.rfc-editor.org/info/rfc7967>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>. <https://www.rfc-editor.org/info/rfc8446>.
[RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers [RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers
(URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, (URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019,
<https://www.rfc-editor.org/info/rfc8615>. <https://www.rfc-editor.org/info/rfc8615>.
[RFC8824] Minaburo, A., Toutain, L., and R. Andreasen, "Static [RFC8824] Minaburo, A., Toutain, L., and R. Andreasen, "Static
Context Header Compression (SCHC) for the Constrained Context Header Compression (SCHC) for the Constrained
skipping to change at page 32, line 26 skipping to change at line 1433
Extensible Authentication Protocol with TLS 1.3", Extensible Authentication Protocol with TLS 1.3",
RFC 9190, DOI 10.17487/RFC9190, February 2022, RFC 9190, DOI 10.17487/RFC9190, February 2022,
<https://www.rfc-editor.org/info/rfc9190>. <https://www.rfc-editor.org/info/rfc9190>.
[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 Using the OAuth 2.0 Framework Constrained Environments Using the OAuth 2.0 Framework
(ACE-OAuth)", RFC 9200, DOI 10.17487/RFC9200, August 2022, (ACE-OAuth)", RFC 9200, DOI 10.17487/RFC9200, August 2022,
<https://www.rfc-editor.org/info/rfc9200>. <https://www.rfc-editor.org/info/rfc9200>.
[THREAD] Thread Group, "Thread specification 1.3", 2023. [THREAD] Thread Group, "Thread Specification 1.3", 2023.
[TS133.501] [TS133.501]
ETSI, "5G; Security architecture and procedures for 5G ETSI, "5G; Security architecture and procedures for 5G
System - TS 133 501 V15.2.0 (2018-10)", 2018. System", V15.2.0, ETSI TS 133 501, 2018.
[ZigbeeIP] Zigbee Alliance, "ZigBee IP Specification (Zigbee Document [ZigbeeIP] Zigbee Alliance, "Zigbee IP Specification (Zigbee Document
095023r34)", 2014. 095023r34)", 2014.
Appendix A. Flow of operation (DTLS establishment) Appendix A. Flow of Operation (DTLS Establishment)
CoAP-EAP makes it possible to derive a PSK from the MSK to allow CoAP-EAP makes it possible to derive a Pre-Shared Key (PSK) from the
(D)TLS PSK-based authentication between the EAP peer and the EAP MSK to allow (D)TLS PSK-based authentication between the EAP peer and
authenticator instead of using OSCORE. In the case of using (D)TLS the EAP authenticator instead of using OSCORE. In the case of using
to establish a security association, there is a limitation on the use (D)TLS to establish a security association, there is a limitation on
of intermediaries between the EAP peer and the EAP authenticator, as the use of intermediaries between the EAP peer and the EAP
(D)TLS breaks the end-to-end communications when using intermediaries authenticator, as (D)TLS breaks the end-to-end communications when
such as proxies. using intermediaries such as proxies.
Figure 9 shows the last steps of the flow of operation for CoAP-EAP
when (D)TLS is used to protect the communication between the EAP peer
and the EAP authenticator using the keying material exported by the
EAP authentication. The general flow is essentially the same as in
the case of OSCORE, except that DTLS negotiation is established in
Step 7. Once DTLS negotiation has finished successfully, the EAP
peer is granted access to the domain. Step 7 MUST be interpreted by
the EAP peer as an alternate success indication, which will end up
with the MSK and the DTLS_PSK derivation for the (D)TLS
authentication based on the PSK.
EAP peer EAP authenticator EAP peer EAP authenticator
------------- ------------- ------------- -------------
... ...
| 2.01 Created Location-Path [/a/eap/(n)] | | 2.01 Created Location-Path [/a/eap/(n)] |
| Payload (EAP-X Resp) | | Payload (EAP-X Resp) |
6) |---------------------------------------->| 6) |---------------------------------------->|
| | MSK | | MSK
| (D)TLS 1.3 Client Hello | | | (D)TLS 1.3 Client Hello | |
MSK 7) |<----------------------------------------| V MSK 7) |<----------------------------------------| V
| | | DTLS_PSK | | | DTLS_PSK
V |===============DTLS hanshake=============| V |===============DTLS handshake============|
DTLS_PSK | | DTLS_PSK | |
<-(Protected with (D)TLS)-> <-(Protected with (D)TLS)->
Figure 9: CoAP-EAP flow of operation with DTLS Figure 9: CoAP-EAP Flow of Operation with DTLS
Figure 9 shows the last steps of the operation for CoAP-EAP when
(D)TLS is used to protect the communication between the EAP peer and
the EAP authenticator using the keying material exported by the EAP
authentication. The general flow is essentially the same as in the
case of OSCORE, except that DTLS negotiation is established in Step
7). Once DTLS negotiation has finished successfully, the EAP peer is
granted access to the domain. Step 7 MUST be interpreted by the EAP
peer as an alternate success indication, which will end up with the
MSK and the DTLS_PSK derivation for the (D)TLS authentication based
on PSK.
According to [RFC8446] the provision of the PSK out-of-band also According to [RFC8446], the provision of the PSK out of band also
requires the provision of the KDF hash algorithm and the PSK requires the provision of the KDF hash algorithm and the PSK
identity. To simplify the design in CoAP-EAP, the KDF hash algorithm identity. To simplify the design in CoAP-EAP, the KDF hash algorithm
can be included in the list of cipher suites exchanged in Step 1 and can be included in the list of cipher suites exchanged in Steps 1 and
Step 2 if DTLS wants to be used instead of OSCORE. For the same 2 if DTLS wants to be used instead of OSCORE. For the same reason,
reason, the PSK identity is derived from (RID-C) (RID-I) as defined the PSK identity is derived from (RID-C) (RID-I) as defined in
in Appendix A.1. Appendix A.1.
Analogous to how the cipher suite is negotiated for OSCORE Analogous to how the cipher suite is negotiated for OSCORE
Section 6.1, the EAP authenticator sends a list, in decreasing order (Section 6.1), the EAP authenticator sends a list, in decreasing
of preference, with the identifiers of the hash algorithms supported order of preference, with the identifiers of the hash algorithms
(Step 1). In the response, the EAP peer sends the choice. supported (Step 1). In the response, the EAP peer sends its choice.
This list is included in the payload after the EAP message with a This list is included in the payload after the EAP message with a
CBOR array that contains the cipher suites. This CBOR array is CBOR array that contains the cipher suites. This CBOR array is
enclosed as one of the elements of the CBOR Object used for enclosed as one of the elements of the CBOR Object used for
transporting information in CoAP-EAP (See Section 5). An example of transporting information in CoAP-EAP (see Section 5). An example of
how the fields are arranged in the CoAP payload can be seen in how the fields are arranged in the CoAP payload can be seen in
Figure 7. Figure 7.
In case there is no CBOR array stating the cipher suites, the default If there is no CBOR array specifying the cipher suites, the default
cipher suites are applied. If the EAP authenticator sends a cipher suites are applied. If the EAP authenticator sends a
restricted list of cipher suites that is willing to accept, it MUST restricted list of cipher suites that can be accepted, it MUST
include the default value 0 since it is mandatory to implement. The include the default value 0, since it is mandatory to implement. The
EAP peer will have at least that option available. EAP peer will have at least that option available.
For DTLS, the negotiated cipher suite is used to determine the hash For DTLS, the negotiated cipher suite is used to determine the hash
function to be used to derive the "DTLS PSK" from the MSK: function to be used to derive the "DTLS PSK" from the MSK. The
following hash algorithms are considered:
The hash algorithms considered are the following:
* 5) TLS_SHA256 * 5) TLS_SHA256
* 6) TLS_SHA384 * 6) TLS_SHA384
* 7) TLS_SHA512 * 7) TLS_SHA512
The inclusion of these values, apart from indicating the hash The inclusion of these values, apart from indicating the hash
algorithm, indicates if the EAP authenticator intends to establish an algorithm, indicates that the EAP authenticator intends to establish
OSCORE security association or a DTLS security association after the an OSCORE security association or a DTLS security association after
authentication is completed. If both options appear in the cipher the authentication is completed. If both options appear in the
suite negotiation, the OSCORE security association will be preferred cipher suite negotiation, the OSCORE security association will be
over DTLS. preferred over DTLS.
A.1. Deriving DTLS PSK and identity A.1. Deriving DTLS PSK and Identity
To enable DTLS after an EAP authentication, the Identity and the PSK To enable DTLS after an EAP authentication, Identity and the PSK for
for DTLS is defined. The Identity in this case is generated by DTLS are defined. Identity in this case is generated by
concatenating the exchanged Sender ID and the Recipient ID. concatenating the exchanged Sender ID and the Recipient ID.
CoAP-EAP PSK Identity = RID-C || RID-I CoAP-EAP PSK Identity = RID-C || RID-I
It is also possible to derive a pre-shared key for DTLS [RFC9147], It is also possible to derive a PSK for DTLS [RFC9147], referred to
referred to here as "DTLS PSK", from the MSK between both the EAP here as "DTLS PSK", from the MSK between both the EAP peer and EAP
peer and EAP authenticator if required. The length of the DTLS PSK authenticator if required. The length of the DTLS PSK will depend on
will depend on the cipher suite. To have keying material with the cipher suite. To have keying material with sufficient length, a
sufficient length, a key of 32 bytes is derived that can be later key of 32 bytes is derived that can be truncated later if needed:
truncated if needed:
DTLS PSK = KDF(MSK, "CoAP-EAP DTLS PSK", length). DTLS PSK = KDF(MSK, "CoAP-EAP DTLS PSK", length)
where: where:
* MSK is exported by the EAP method. * The MSK is exported by the EAP method.
* "CoAP-EAP DTLS PSK" is the ASCII code representation of the non- * "CoAP-EAP DTLS PSK" is the ASCII code representation of the non-
NULL terminated string (excluding the double quotes around it). NULL-terminated string (excluding the double quotes around it).
* length is the size of the output key material. * length is the size of the output key material.
Appendix B. Using CoAP-EAP for distributing key material for IoT Appendix B. Using CoAP-EAP for Distributing Key Material for IoT
networks Networks
Similarly, to the example of Appendix A.1, where a shared key PSK for Similarly to the example in Appendix A.1, where a shared key PSK for
DTLS is derived, it is possible to provide key material to different DTLS is derived, it is possible to provide key material to different
link-layers after the CoAP-EAP authentication is complete. link layers after the CoAP-EAP authentication is complete.
One example is that CoAP-EAP could be used to derive the required PSK For example, CoAP-EAP could be used to derive the PSK required to run
required to run the 6TiSCH Constrained Join Protocol (CoJP) the Constrained Join Protocol (CoJP) for IPv6 over the TSCH mode of
[RFC9031]. IEEE 802.15.4e (6TiSCH) [RFC9031]. ("TSCH" stands for "Time-Slotted
Channel Hopping".)
Another example is when a shared Network Key is required by the Another example would be when a shared Network Key is required by the
devices that join a network. An example of this Network Key can be devices that join a network. An example of this Network Key can be
found in ZigBee IP [ZigbeeIP] or THREAD protocol [THREAD]. After found in Zigbee IP [ZigbeeIP] or the THREAD protocol [THREAD]. After
CoAP-EAP execution, a security association based on OSCORE protects CoAP-EAP execution, a security association based on OSCORE protects
any exchange between the EAP peer and the EAP authenticator. This any exchange between the EAP peer and the EAP authenticator. This
security association can be used for distributing the Network Key security association can be used for distributing the Network Key
securely and other required parameters. How the Network Key is securely and other required parameters. How the Network Key is
distributed after a successful CoAP-EAP authentication is out of the distributed after a successful CoAP-EAP authentication is outside the
scope of this document. scope of this document.
How a particular link-layer technology uses the MSK to derive further How a particular link-layer technology uses the MSK to derive further
key material for protecting the link-layer or use the OSCORE key material for protecting the link layer or uses OSCORE protection
protection to distribute key material is out of the scope of this to distribute key material is outside the scope of this document.
document.
Appendix C. Examples of Use Case Scenario Appendix C. Example Use Case Scenarios
In IoT, for an EAP peer to act as a trustworthy entity within a In IoT networks, for an EAP peer to act as a trustworthy entity
security domain, certain key material needs to be shared between the within a security domain, certain key material needs to be shared
EAP peer and the EAP authenticator. between the EAP peer and the EAP authenticator.
Next, examples of different use case scenarios will be elaborated on, Next, examples of different use case scenarios will be elaborated on
about the usage of CoAP-EAP. as related to the usage of CoAP-EAP.
Generally, four entities are involved: Generally, four entities are involved:
* 2 EAP peers (A and B), which are EAP peers. They are the EAP * Two EAP peers (A and B).
peers.
* 1 EAP authenticator (C). The EAP authenticator manages a domain * One EAP authenticator (C). The EAP authenticator manages a domain
where EAP peers can be deployed. In IoT, it can be considered a where EAP peers can be deployed. In IoT networks, it can be
more powerful machine than the EAP peers. considered a more powerful machine than the EAP peers.
* 1 AAA server (AAA) - Optional. The AAA is an Authentication, * One AAA server. Optional. The AAA server is not constrained.
Authorization, and Accounting Server, which is not constrained. Here, the EAP authenticator is operating in pass-through mode.
Here, the EAP authenticator acts as an EAP authenticator in pass-
through mode.
Generally, any EAP peer wanting to join the domain managed by the EAP Generally, any EAP peer wanting to join the domain managed by the EAP
authenticator MUST perform a CoAP-EAP authentication with the EAP authenticator MUST perform a CoAP-EAP authentication with the EAP
authenticator (C). This authentication MAY involve an external AAA authenticator (C). This authentication MAY involve an external AAA
server. This means that A and B, once deployed, will run CoAP-EAP server. This means that the EAP peers (A and B), once deployed, will
once, as a bootstrapping phase, to establish a security association run CoAP-EAP once, as a bootstrapping phase, to establish a security
with C. Moreover, any other entity, which wants to join and association with C. Moreover, any other entity that wants to join
establish communications with EAP peers under C's domain must also do and establish communications with EAP peers under C's domain must
the same. also do the same.
By using EAP, the flexibility of having different types of By using EAP, the flexibility of having different types of
credentials can be achieved. For instance, if a device that is not credentials can be achieved. For instance, if a device that is not
battery-dependent and not very constrained is available, a heavier battery dependent and not very constrained is available, a heavier
authentication method could be used. With varied EAP peers and authentication method could be used. With varied EAP peers and
networks, more lightweight authentication methods might need to be networks, authentication methods that are more lightweight (e.g.,
used (e.g., EAP-NOOB[RFC9140], EAP-AKA'[RFC5448], EAP-PSK[RFC4764], EAP-NOOB [RFC9140], EAP-AKA' [RFC5448], EAP-PSK [RFC4764], EAP-EDHOC
EAP-EDHOC[I-D.ietf-emu-eap-edhoc], etc.) being able to adapt to [EAP-EDHOC], etc.) and are able to adapt to different types of
different types of devices according to organization policies or devices according to organization policies or device capabilities
devices capabilities. might need to be used.
C.1. Example 1: CoAP-EAP in ACE C.1. Example 1: CoAP-EAP Using ACE
In ACE, the process of client registration and provisioning of When using ACE, the process of client registration and provisioning
credentials to the client is not specified. The process of Client of credentials to the client is not specified. The process of client
registration and provisioning can be achieved using CoAP-EAP. Once registration and provisioning can be achieved using CoAP-EAP. Once
the process of authentication with EAP is completed, the fresh key the process of authentication with EAP is completed, the fresh key
material is shared between the EAP peer and the EAP authenticator. material is shared between the EAP peer and the EAP authenticator.
In this instance, the EAP authenticator and the Authorization Server With ACE, the EAP authenticator and the Authorization Server (AS) can
(AS) of ACE can be co-located. be co-located.
Next, a general way to exemplify how Client registration can be Next, a general way to exemplify how client registration can be
performed using CoAP-EAP is presented, to allow two EAP peers (A and performed using CoAP-EAP is presented, to allow two EAP peers (A and
B) to communicate and interact after a successful client B) to communicate and interact after a successful client
registration. registration.
EAP peer A wants to communicate with EAP peer B (e.g., to activate a EAP peer A wants to communicate with EAP peer B (e.g., to activate a
light switch). The overall process is divided into three phases. light switch). The overall process is divided into three phases.
Let's start with EAP peer A. In the first phase, EAP peer A does not
yet belong to EAP authenticator C's domain. Then, it communicates
with C and authenticates with CoAP-EAP, which, optionally,
communicates with the AAA server to complete the authentication
process. If the authentication is successful, a fresh MSK is shared
between C and EAP peer A. This key material allows EAP peer A to
establish a security association with the C. Some authorization
information may also be provided in this step. In case EAP is used
in standalone mode, the AS itself having information about the
devices can be the entity providing said authorization information.
If authentication and authorization are correct, EAP peer A has been * In the first phase, EAP peer A does not yet belong to EAP
enrolled in the EAP authenticator C's domain for some time. In authenticator C's domain. Then, it communicates with C and
particular, [RFC5247] recommends 8 hours, though the entity providing authenticates with CoAP-EAP, which, optionally, communicates with
the authorization information can establish this lifetime. In the the AAA server to complete the authentication process. If the
same manner, B needs to perform the same process with CoAP-EAP to be authentication is successful, a fresh MSK is shared between C and
part of EAP authenticator C's domain. EAP peer A. This key material allows EAP peer A to establish a
security association with C. Some authorization information may
also be provided in this step. If EAP is used in standalone mode,
the AS itself, having information about the devices, can be the
entity providing said authorization information.
In the second phase, when EAP peer A wants to talk to EAP peer B, it If authentication and authorization are correct, EAP peer A is
contacts EAP authenticator C for authorization to access EAP peer B enrolled in EAP authenticator C's domain for some period of time.
and obtain all the required information to do that securely (e.g., In particular, [RFC5247] recommends 8 hours, though the entity
keys, tokens, authorization information, etc.). This phase does NOT providing the authorization information can establish this
require the usage of CoAP-EAP. The details of this phase are out of lifetime. In the same manner, B needs to perform the same process
the scope of this document, and the ACE framework is used for this with CoAP-EAP to be part of EAP authenticator C's domain.
purpose [RFC9200].
In the third phase, EAP peer A can access EAP peer B with the * In the second phase, when EAP peer A wants to talk to EAP peer B,
credentials and information obtained from EAP authenticator C in the it contacts EAP authenticator C for authorization to access EAP
second phase. This access can be repeated without contacting the EAP peer B and obtain all the required information to do that securely
authenticator, while the credentials given to A are still valid. The (e.g., keys, tokens, authorization information, etc.). This phase
details of this phase are out of the scope of this document. does NOT require the usage of CoAP-EAP. The details of this phase
are outside the scope of this document; the ACE framework is used
for this purpose. See [RFC9200].
* In the third phase, EAP peer A can access EAP peer B with the
credentials and information obtained from EAP authenticator C
during the second phase. This access can be repeated without
contacting the EAP authenticator, while the credentials given to A
are still valid. The details of this phase are outside the scope
of this document.
It is worth noting that the first phase with CoAP-EAP is required to It is worth noting that the first phase with CoAP-EAP is required to
join the EAP authenticator C's domain. Once it is performed join EAP authenticator C's domain. Once it is performed
successfully, the communications are local to the EAP authenticator successfully, the communications are local to EAP authenticator C's
C's domain and there is no need to perform a new EAP authentication domain and there is no need to perform a new EAP authentication as
as long as the key material is still valid. When the keys are about long as the key material is still valid. When the keys are about to
to expire, the EAP peer can engage in a re-authentication as expire, the EAP peer can engage in a re-authentication to renew the
explained in Section 3.3, to renew the key material. key material, as explained in Section 3.3.
C.2. Example 2: Multi-domain with AAA infrastructures C.2. Example 2: Multiple Domains with AAA Infrastructures
A device (A) of the domain acme.org, which uses a specific kind of A device (A) of the domain acme.org uses a specific kind of
credential (e.g., AKA) and intends to join the um.es domain. This credential (e.g., AKA) and intends to join the um.es domain. This
user does not belong to this domain, for which first it performs a user does not belong to this domain, for which it first performs a
client registration using CoAP-EAP. For this, it interacts with the client registration using CoAP-EAP. To do this, it interacts with
EAP authenticator's domain, which in turn communicates with an AAA the EAP authenticator's domain, which in turn communicates with a AAA
infrastructure (acting as AAA client). Through the local AAA server infrastructure (acting as a AAA client). Through the local AAA
communicate with the home AAA server to complete the authentication server communicate with the home AAA server to complete the
and integrate the device as a trustworthy entity into the domain of authentication and integrate the device as a trustworthy entity into
EAP authenticator C. In this scenario, the AS under the role of the EAP authenticator C's domain. In this scenario, the AS, in the role
EAP authenticator receives the key material from the AAA of the EAP authenticator, receives the key material from the AAA
infrastructure infrastructure.
C.3. Example 3: Single domain with AAA infrastructure C.3. Example 3: Single Domain with a AAA Infrastructure
As a University Campus, with several Faculty buildings and each one In this scenario, a university campus has several faculty buildings,
has its criteria or policies in place to manage EAP peers under an where each building has its criteria or policies in place to manage
AS. All buildings belong to the same domain (e.g., um.es). All EAP peers under an AS. All buildings belong to the same domain
these buildings are managed with AAA infrastructure. A new device (e.g., um.es). All these buildings are managed with a AAA
(A) with credentials from the domain (e.g., um.es) will be able to infrastructure. A new device (A) with credentials from the domain
perform the device registration with an EAP authenticator (C) of any (e.g., um.es) will be able to perform the device registration with an
building if they are managed by the same general domain. EAP authenticator (C) of any building if they are managed by the same
general domain.
C.4. Example 4: Single domain without AAA infrastructure C.4. Example 4: Single Domain Without a AAA Infrastructure
In another case, without a AAA infrastructure, with an EAP In another case, without a AAA infrastructure, with an EAP
authenticator that has co-located the EAP server, and using EAP authenticator that has co-located the EAP server, and using EAP
standalone mode, all the devices can be managed within the same standalone mode, all the devices can be managed within the same
domain locally. Client registration of an EAP peer (A) with domain locally. Client registration of an EAP peer (A) with a
Controller (C) can also be performed in the same manner. Controller (C) can also be performed in the same manner.
C.5. Other use cases C.5. Other Use Cases
C.5.1. CoAP-EAP for network access authentication C.5.1. CoAP-EAP for Network Access Authentication
One of the first steps for an EAP peer is to perform the One of the first steps for an EAP peer is to perform the
authentication to gain access to the network. To do so, the device authentication to gain access to the network. To do so, the device
first must be authenticated and granted authorization to gain access must first be authenticated and granted authorization to gain access
to the network. Additionally, security parameters such as to the network. Additionally, security parameters such as
credentials can be derived from the authentication process, allowing credentials can be derived from the authentication process, allowing
the trustworthy operation of the EAP peer in a particular network by the trustworthy operation of the EAP peer in a particular network by
joining the security domain. By using EAP, this can be achieved with joining the security domain. By using EAP, this can be achieved with
flexibility and scalability, because of the different EAP methods flexibility and scalability, because of the different EAP methods
available and the ability to rely on AAA infrastructures if needed to available and the ability to rely on AAA infrastructures if needed to
support multi-domain scenarios, which is a key feature when the EAP support multi-domain scenarios, which is a key feature when the EAP
peers deployed under the same security domain belong, for example, to peers deployed under the same security domain belong, for example, to
different organizations. different organizations.
In the process of joining a network, there are two cases: 1) the node The following two cases apply to the process of joining a network:
does not have an IPv6 address; 2) the node does have an IPv6 address 1) the node has an IPv6 address (e.g., link-local IPv6 or IPv6 global
(e.g., link-local IPv6 or IPv6 global address). address) and 2) the node does not have an IPv6 address.
In networks where the device is placed, and no IP support is In networks where the device is in place but no IP support is
available until the EAP peer is authenticated, specific support for available until the EAP peer is authenticated, specific support for
this EAP lower layer has to be defined to allow CoAP-EAP messages to this EAP lower layer has to be defined to allow CoAP-EAP messages to
be exchanged between the EAP peer and the EAP authenticator. For be exchanged between the EAP peer and the EAP authenticator. For
example, in IEEE 802.15.4 networks, a new KMP ID can be defined to example, in IEEE 802.15.4 networks, a new Key Management Protocol
add such support in the case of IEEE 802.15.9 [ieee802159]. Where (KMP) ID can be defined to add such support in the case of IEEE
can be assumed that the device has at least a link-layer IPv6 802.15.9 [IEEE802159], where it can be assumed that the device has at
address. least a link-layer IPv6 address.
When the EAP peer intends to be admitted into the network, it would When the EAP peer intends to be admitted into the network, it would
search for an entity that offers the CoAP-EAP service, be it the EAP search for an entity that offers the CoAP-EAP service, be it directly
authenticator directly, or through the intermediary (i.e., proxy). via the EAP authenticator or through an intermediary (i.e., proxy).
See Section 3.1. See Section 3.1.
CoAP-EAP will run between the EAP peer and the EAP authenticator or CoAP-EAP will run between the EAP peer and the EAP authenticator or
through an intermediary entity such as a proxy, as happens in a mesh through an intermediary entity such as a proxy, as happens in a mesh
network, where the EAP authenticator could be placed to 1 or more network, where the EAP authenticator could be placed one or more hops
hops from the EAP peer. In the case a proxy participates in CoAP- away from the EAP peer. In the case that a proxy participates in
EAP, it will be because it is already a trustworthy entity within the CoAP-EAP, it will be because it is already a trustworthy entity
domain, which communicates through a secure channel with the EAP within the domain and communicates through a secure channel with the
authenticator, as illustrated by Figure 10. EAP authenticator, as illustrated by Figure 10.
Thus, the EAP peer follows the same process described in If the EAP peer cannot connect to the EAP authenticator directly, the
Appendix C.5.1 to perform the authentication. As mentioned, either EAP peer can follow the same process as that described in Section 3.6
with a direct link to the EAP authenticator, or through an to perform the authentication (i.e., can connect via an intermediary
intermediary entity (proxy) that is already part of the network entity (proxy) that is already part of the network (already shares
(already shares key material and communicates through a secure key material and communicates through a secure channel with the
channel with the authenticator) and can aid in running CoAP-EAP. authenticator) and can aid in running CoAP-EAP).
When CoAP-EAP is completed, and the OSCORE security association is When CoAP-EAP is completed and the OSCORE security association is
established with the EAP authenticator, the EAP peer receives the established with the EAP authenticator, the EAP peer receives the
local configuration parameters for the network (e.g. a network key) local configuration parameters for the network (e.g., a network key)
and can configure a global IPv6 address. Moreover, there is no need and can configure a global IPv6 address. Moreover, there is no need
of a CoAP proxy after a successful authentication. for a CoAP proxy after a successful authentication.
For removal, if the EAP authenticator decides to remove a particular For removal, if the EAP authenticator decides to remove a particular
EAP peer from the network or the peer itself intends to leave, either EAP peer from the network or the peer itself intends to leave, either
EAP peer or EAP authenticator can directly send a DELETE command to the EAP peer or the EAP authenticator can directly send a DELETE
explicitly express that the network access state is removed, and the command to explicitly express that the network access state is
device will no longer belong to the network. Thus, any state related removed, and the device will no longer belong to the network. Thus,
to the EAP peer is removed in the EAP authenticator. Forced removal any state related to the EAP peer is removed in the EAP
can be done by sending new specific key material to the devices that authenticator. Forced removal can be done by sending new specific
still belong to the network, excluding the removed device, following key material to the devices that still belong to the network,
a similar model as 6TiSCH Join Protocol [RFC9031] or Zigbee excluding the removed device, following a model similar to CoJP for
IP[ZigbeeIP]. The specifics on how this process is to be done, is 6TiSCH [RFC9031] or Zigbee IP [ZigbeeIP]. The specifics on how this
out of the scope of this document. process is to be done are outside the scope of this document.
+-------+ +--------+ +--------------+ +-------+ +--------+ +--------------+
| EAP | | CoAP | | EAP | | EAP | | CoAP | | EAP |
| peer |<------>| Proxy |<------------------------->| authenticator| | peer |<------>| proxy |<------------------------->| authenticator|
+-------+ CoAP +--------+ CoAP +--------------+ +-------+ CoAP +--------+ CoAP +--------------+
OSCORE/DTLS OSCORE/DTLS
<--(Security Association)--> <--(security association)-->
Figure 10: CoAP-EAP through CoAP proxy Figure 10: CoAP-EAP Through CoAP Proxy
Given that EAP is also used for network access authentication, this Given that EAP is also used for network access authentication, this
service can be adapted to other technologies. For instance, to service can be adapted to other technologies -- for instance, to
provide network access control to very constrained technologies provide network access control to very constrained technologies
(e.g., LoRa network). Authors in [lo-coap-eap] provide a study of a (e.g., Long Range (LoRa) networks). The authors of [LO-CoAP-EAP]
minimal version of CoAP-EAP for LPWAN networks with interesting provide a study of a minimal version of CoAP-EAP for LPWANs, with
results. In this specific case, the compression by SCHC for CoAP interesting results. In this specific case, compression as provided
[RFC8824] can be leveraged. by Static Context Header Compression (SCHC) for CoAP [RFC8824] can be
leveraged.
C.5.2. CoAP-EAP for service authentication C.5.2. CoAP-EAP for Service Authentication
It is not uncommon that the infrastructure where the device is It is not uncommon that the infrastructure where the device is
deployed and the services of the EAP peer are managed by different deployed and the services of the EAP peer are managed by different
organizations. Therefore, in addition to the authentication for organizations. Therefore, in addition to the authentication for
network access control, the possibility of a secondary authentication network access control, the possibility of a secondary authentication
to access different services has to be considered. This process of to access different services has to be considered. This process of
authentication, for example, will provide the necessary key material authentication, for example, will provide the necessary key material
to establish a secure channel and interact with the entity in charge to establish a secure channel and interact with the entity in charge
of granting access to different services. of granting access to different services.
In 5G, for example, consider primary and secondary authentication In 5G, for example, consider primary and secondary authentication
using EAP [TS133.501]. using EAP [TS133.501].
Acknowledgments Acknowledgments
We would like to thank the reviewers of this work: Paul Wouters, We would like to thank the reviewers of this work: Paul Wouters,
Heikki Vatiainen, Josh Howlett, Deb Cooley, Eliot Lear, Alan DeKok, Heikki Vatiainen, Josh Howlett, Deb Cooley, Eliot Lear, Alan DeKok,
Carsten Bormann, Mohit Sethi, Benjamin Kaduk, Christian Amsuss, John Carsten Bormann, Mohit Sethi, Benjamin Kaduk, Christian Amsüss, John
Mattsson, Goran Selander, Alexandre Petrescu, Pedro Moreno-Sanchez Preuß Mattsson, Göran Selander, Alexandre Petrescu, Pedro Moreno-
and Eduardo Ingles-Sanchez. Sanchez, and Eduardo Ingles-Sanchez.
We would also like to thank Gabriel Lopez-Millan for the first review We would also like to thank Gabriel Lopez-Millan for the first review
of this document, and we would like to thank Ivan Jimenez-Sanchez for of this document, Ivan Jimenez-Sanchez for the first proof-of-concept
the first proof-of-concept implementation of this idea, Julian Niklas implementation of this idea, Julian Niklas Schimmelpfennig for the
Schimmelpfennig for the implementation of the Erbium-based IoT device implementation of the Erbium-based IoT device implementation, and
implementation, and Daniel Menendez Gonzalez for the Python Daniel Menendez Gonzalez for the Python implementation.
implementation.
And thank for their valuable comments to Alexander Pelov and Laurent Thanks also to Alexander Pelov and Laurent Toutain for their valuable
Toutain, especially for the potential optimizations of CoAP-EAP. comments, especially regarding the potential optimizations of CoAP-
EAP.
This work was supported in part by Grant PID2020-112675RB-C44 funded This work was supported in part by Grant PID2020-112675RB-C44 funded
by MCIN/AEI/10.13039/5011000011033 (ONOFRE-3-UMU) and in part by the by MCIN/AEI/10.13039/5011000011033 (ONOFRE-3-UMU) and in part by the
H2020 EU project IoTCrawler under contract 779852. H2020 EU project IoTCrawler under contract 779852.
Authors' Addresses Authors' Addresses
Rafa Marin-Lopez Rafa Marin-Lopez
University of Murcia University of Murcia
Campus de Espinardo S/N, Faculty of Computer Science Campus de Espinardo S/N, Faculty of Computer Science
30100 Murcia 30100 Murcia
Spain Spain
Email: rafa@um.es Email: rafa@um.es
Dan Garcia-Carrillo Dan Garcia-Carrillo
University of Oviedo University of Oviedo
Calle Luis Ortiz Berrocal S/N, Edificio Polivalente Calle Luis Ortiz Berrocal S/N, Edificio Polivalente
 End of changes. 279 change blocks. 
866 lines changed or deleted 864 lines changed or added

This html diff was produced by rfcdiff 1.48.