Skip to main content

EAP-based Authentication Service for CoAP
draft-ietf-ace-wg-coap-eap-03

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Active".
Authors Rafael Marin-Lopez , Dan Garcia-Carrillo
Last updated 2021-08-30 (Latest revision 2021-07-26)
RFC stream Internet Engineering Task Force (IETF)
Formats
Reviews
Additional resources Mailing list discussion
Stream WG state In WG Last Call
Revised I-D Needed - Issue raised by WGLC
Document shepherd (None)
IESG IESG state I-D Exists
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-ietf-ace-wg-coap-eap-03
ACE Working Group                                         R. Marin-Lopez
Internet-Draft                                      University of Murcia
Intended status: Standards Track                      D. Garcia-Carrillo
Expires: 27 January 2022                            University of Oviedo
                                                            26 July 2021

               EAP-based Authentication Service for CoAP
                     draft-ietf-ace-wg-coap-eap-03

Abstract

   This document specifies an authentication service that uses the
   Extensible Authentication Protocol (EAP) transported employing
   Constrained Application Protocol (CoAP) messages.  As such, it
   defines an EAP lower-layer based on CoAP called CoAP-EAP.  One of the
   primer goals is to authenticate a CoAP-enabled device (EAP peer) that
   intends to join a security domain managed by a domain Controller (EAP
   authenticator).  Secondly, it allows deriving key material to protect
   CoAP messages exchanged between them based on Object Security for
   Constrained RESTful Environments (OSCORE), enabling the establishment
   of a security association between them.  This document also provides
   guidelines on how to generate key material for other types of
   security associations.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   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
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 27 January 2022.

Copyright Notice

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

Marin-Lopez & Garcia-CarrExpires 27 January 2022                [Page 1]
Internet-Draft                  CoAP-EAP                       July 2021

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

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   3
   2.  General Architecture  . . . . . . . . . . . . . . . . . . . .   4
   3.  CoAP-EAP Operation  . . . . . . . . . . . . . . . . . . . . .   4
     3.1.  General flow of operation . . . . . . . . . . . . . . . .   4
     3.2.  Error handling  . . . . . . . . . . . . . . . . . . . . .   8
       3.2.1.  Non-responding endpoint . . . . . . . . . . . . . . .   8
       3.2.2.  Messages with /.well-known/a  . . . . . . . . . . . .   8
     3.3.  Managing the State of the Service . . . . . . . . . . . .  10
       3.3.1.  Deleting the state  . . . . . . . . . . . . . . . . .  10
       3.3.2.  Reauthentication  . . . . . . . . . . . . . . . . . .  11
   4.  Cryptosuite negotiation and key derivation  . . . . . . . . .  11
     4.1.  Cryptographic suite negotiation . . . . . . . . . . . . .  12
     4.2.  Deriving the OSCORE Security Context  . . . . . . . . . .  14
     4.3.  Deriving DTLS PSK . . . . . . . . . . . . . . . . . . . .  16
   5.  Discussion  . . . . . . . . . . . . . . . . . . . . . . . . .  16
     5.1.  CoAP as EAP lower layer . . . . . . . . . . . . . . . . .  17
     5.2.  Size of the EAP lower layer vs EAP method size  . . . . .  18
     5.3.  Controller as the CoAP Client . . . . . . . . . . . . . .  18
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  19
     6.1.  Authorization . . . . . . . . . . . . . . . . . . . . . .  19
     6.2.  Freshness of the key material . . . . . . . . . . . . . .  19
     6.3.  Channel Binding support . . . . . . . . . . . . . . . . .  19
     6.4.  Additional Security Consideration . . . . . . . . . . . .  20
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  20
   8.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .  20
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  20
     9.1.  Normative References  . . . . . . . . . . . . . . . . . .  20
     9.2.  Informative References  . . . . . . . . . . . . . . . . .  21
   Appendix A.  Examples of Use Case Scenario  . . . . . . . . . . .  23
     A.1.  Example 1: CoAP-EAP in ACE  . . . . . . . . . . . . . . .  24
     A.2.  Example 2: Multi-domain with AAA infrastructures  . . . .  25
     A.3.  Example 3: Single domain with AAA infrastructure  . . . .  26
     A.4.  Example 4: Single domain without AAA infrastructure . . .  26
     A.5.  Other use cases . . . . . . . . . . . . . . . . . . . . .  26
       A.5.1.  CoAP-EAP for network access control . . . . . . . . .  26
       A.5.2.  CoAP-EAP for service authentication . . . . . . . . .  27

Marin-Lopez & Garcia-CarrExpires 27 January 2022                [Page 2]
Internet-Draft                  CoAP-EAP                       July 2021

   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  27

1.  Introduction

   This document specifies an authentication service that uses the
   Extensible Authentication Protocol (EAP) [RFC3748] and is built on
   top of the Constrained Application Protocol (CoAP) [RFC7252] called
   CoAP-EAP.  CoAP-EAP allows authenticating two CoAP endpoints by using
   EAP, and to establish an OSCORE security association between them.

   More specifically, this document specifies how CoAP can be used as a
   constrained, link-layer independent, EAP lower layer [RFC3748] to
   transport EAP messages between a CoAP server (acting as EAP peer) and
   a CoAP client (acting as EAP authenticator) using CoAP messages.  The
   CoAP client has the option of contacting a backend AAA infrastructure
   to complete the EAP negotiation as described in the EAP specification
   [RFC3748].

   EAP methods transported in CoAP MUST generate cryptographic material
   [RFC5247].  This way, CoAP messages are protected after the
   authentication.  After CoAP-EAP's operation, Object Security for
   Constrained RESTful Environments (OSCORE) is established between
   endpoints of the service.  In addition, using the key material
   derived from the authentication, this document specifies how to
   establish other types of security associations:

   *  An OSCORE [RFC8613] security association is established based on
      the cryptographic material generated from the EAP authentication.

   *  A DTLS security association MAY be established using the exported
      cryptographic material after a successful EAP authentication.

1.1.  Requirements Language

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

   Readers are expected to be familiar with the terms and concepts of
   described in CoAP [RFC7252], EAP [RFC3748]and OSCORE [RFC8613].

Marin-Lopez & Garcia-CarrExpires 27 January 2022                [Page 3]
Internet-Draft                  CoAP-EAP                       July 2021

2.  General Architecture

   Figure 1 illustrates the architecture defined in this document.
   Basically, an IoT device, acting as the EAP peer, wants to be
   authenticated by using EAP to join a domain that is managed by a
   Controller (EAP authenticator).  The IoT device will act a CoAP
   server for this service, and the EAP authenticator as a CoAP client.
   The rationale behind this decision, as expanded later, is that EAP
   requests go always from the EAP server to the EAP peer.  Accordingly,
   the EAP responses go from the EAP peer to the EAP server.

   It is worth noting that the CoAP client (EAP authenticator) MAY
   interact with a backend AAA infrastructure when EAP pass-through mode
   is used, which will place the EAP server in the AAA server that
   contains the information required to authenticate the EAP peer.

                     IoT device            Controller
                   +------------+        +------------+
                   | EAP peer/  |        | EAP auth./ |
                   | CoAP server|+------+| CoAP client|
                   +------------+  CoAP  +------------+

                      Figure 1: CoAP-EAP Architecture

3.  CoAP-EAP Operation

   The sequence flow can be seen in Figure 2.  It shows how EAP-X, a
   generic EAP method, is used as an authentication mechanism.

   (NOTE: any EAP method that exports cryptographic material is valid.
   For example, EAP-MD5 cannot be used since it does not export key
   material).

3.1.  General flow of operation

   The first step to run CoAP-EAP is for the IoT device to discover the
   Controller, and that it implements the CoAP-EAP service.  To do so,
   we can rely on any mechanism that allows us to perform this
   discovery.  For example, the discovery mechanism of CoAP.  To access
   the authentication service, this document defines the well-known URI
   "/.well-known/a" (to be assigned by IANA).  This URI is referring to
   the authentication service that is present in both the IoT device and
   the Controller.

   For the rest of this section, the IoT device is referred to as the
   EAP peer and the Controller as the EAP authenticator.

Marin-Lopez & Garcia-CarrExpires 27 January 2022                [Page 4]
Internet-Draft                  CoAP-EAP                       July 2021

   In the CoAP-EAP flow of operation, the EAP peer always starts the
   authentication process by sending the first message.  When the EAP
   peer discovers the presence of the EAP authenticator and wants to
   start the authentication, it sends a Non-Confirmable "POST /.well-
   known/a" request (Step 0).  This message will carry the option called
   'No-Response' [RFC7967].  The rationale of this option is to avoid
   waiting for a response that is not needed.  So, the use of this
   option will indicate to the EAP authenticator that the EAP peer is
   ready to start the authentication process.

   This message is the only instance where the EAP authenticator acts as
   a CoAP server and the EAP peer as a CoAP client.  After this, the
   exchange continues with the EAP authenticator as a CoAP client and
   the EAP peer as a CoAP server.  A discussion about the CoAP roles is
   in Section 5.3

   Once the EAP authenticator is aware of the intention of the EAP peer
   of starting an authentication process, sends a Confirmable "POST
   /.well-known/a" request to the EAP peer(Step 1).  After receiving the
   first POST, the EAP peer (CoAP server) assigns a resource to the
   ongoing authentication process, and answers with an Acknowledgment
   with a piggybacked response containing the resource identifier in the
   Location-Path (and/or Location-Query) Options (Step 2).  The path
   /.well-known/a at this point will not be used.  The name of the
   resource is selected by the CoAP server as it pleases.  The only
   condition is that both end points have to correctly process the
   following message based on the selected value.  As an example, the
   CoAP server MAY follow the the naming "/a/x".  Where "a" is the
   general name of the authentication service; "x" represents the
   resource established to process the following message of the
   authentication.  This naming, as example, will be used in the figures
   of this document.  The EAP peer (CoAP server) will only have one
   authentication session with that particular EAP authenticator (CoAP
   client) and it will not process EAP authentications in parallel (with
   the same EAP authenticator) to save resources.

   In this exchange (Step 1 and 2), the EAP-Request/Identity (EAP Req/
   Id) and EAP-Response/Identity (EAP Resp/Id) messages are exchanged
   between the EAP authenticator and the EAP peer.  Upon the reception
   of the EAP Req/Id message, the EAP authenticator sends this message
   to the EAP server.  The EAP server is in charge of steering the
   conversation, choosing the EAP method to be used (e.g.  EAP-X).  In
   this exchange we can also see the cryptosuite negotiation.  If the
   cryptosuite is not sent, the default cryptosuite is used.  The first
   message (Step 1) carries, concatenated to the EAP Req/Id, a CBOR
   array containing a list with the cryptosuites, and the CoAP server in
   the next message will confirm by sending a choice.  The details of
   the cryptosuite negotiation are discussed in Section 4.1.

Marin-Lopez & Garcia-CarrExpires 27 January 2022                [Page 5]
Internet-Draft                  CoAP-EAP                       July 2021

   NOTE: Since only an ongoing EAP authentication is permitted per EAP
   authenticator and EAP is a lock-step protocol, a CoAP Token of a
   constant value can be used throughout the authentication process.  An
   empty Token MAY be considered to reduce bytes.

   From now on, the EAP authenticator and the EAP peer will exchange EAP
   packets related to the EAP method, transported in the CoAP message
   payload (Steps 3,4,5,6).  The EAP authenticator will use the POST
   method in a Confirmable message to send EAP requests to the EAP peer.
   The EAP peer will use a piggybacked response in the Acknowledgment
   message to carry the EAP response.  EAP requests and responses are
   represented in Figure 2 using the nomenclature (EAP-X-Req n) and
   (EAP-X-Resp n) respectively.  'X' indicates the EAP method use. 'n'
   indicates the identifier of the EAP message, which is shown
   monotonically increasing from 1 in this flow of operation.

   When a Confirmable POST message arrives (e.g, /a/x) carrying an EAP
   request message, if processed correctly, returns an EAP Response.
   Along with the EAP response, a new resource is created (e.g, /a/y)
   and the ongoing resource (i.e., /a/x) is erased.  This EAP response
   will go in a CoAP piggybacked response that will also indicate the
   new resource in the Location-Path (and/or Location-Query) Options.
   In case there is an error processing a legitimate message, the server
   will return an (4.00 Bad Request).  There is a discussion about error
   handling in Section 3.2.

   When the authentication is completed correctly, the EAP server sends
   an EAP Success message, and both CoAP endpoints will share a Master
   Session Key (MSK)[RFC5295].

   Using the MSK, an OSCORE security association is established between
   EAP peer and EAP authenticator, which serves as key confirmation of
   the MSK and to provide integrity and authentication to the last
   exchange (Steps 7 and 8).  From that point, any exchange between both
   CoAP endpoints is protected with OSCORE.  Before sending the EAP
   success to the EAP peer, the EAP authenticator can derive the OSCORE
   Security Context.  The EAP peer can do so when it receives the
   message containing the EAP success, and the session liftime, to
   verify the message from the EAP authenticator and generate the answer
   (Step 8).  The establishment of the OSCORE Security Context is
   discussed in Section 4.2.  The Session Lifetime, in seconds, is
   represented with a unsigned integer in a CBOR array.  The disposition
   of the information is the same to the cryptosuite negotiation () see
   Section 4.1).

Marin-Lopez & Garcia-CarrExpires 27 January 2022                [Page 6]
Internet-Draft                  CoAP-EAP                       July 2021

            EAP peer                                  EAP Auth.
         (CoAP server)                             (CoAP client)
         -------------                             -------------
              | NON [0x6af5] POST /.well-known/a        |
           0) | Token (0xab), No-Response               |
              |---------------------------------------->|
              |        CON [0x7654] POST /.well-known/a |
              |                            Token (0xac) |
              |        Payload (EAP Req/Id||Cryptosuite)|
           1) |<----------------------------------------|
              | ACK [0x7654]                            |
              | Token (0xac)                            |
              | 2.01 Created Location-Path [/a/x]       |
              | Payload (EAP Resp/Id||Cryptosuite)      |
           2) |---------------------------------------->|
              |                  CON [0x8694] POST /a/x |
              |                            Token (0xac) |
              |                     Payload EAP-X-Req 1 |
           3) |<----------------------------------------|
              | ACK [0x8694]                            |
              | Token (0xac)                            |
              | 2.01 Created Location-Path [/a/y]       |
              | Payload EAP-X-Resp 1                    |
           4) |---------------------------------------->|
                                 ....

              |                CON [0x9869] POST /a/y   |
              |                            Token (0xac) |
              |                   Payload EAP-X-Req (n) |
           5) |<----------------------------------------|
              | ACK [0x9869]                            |
              | Token (0xac)                            |
              | 2.01 Created Location-Path [/a/z]       | MSK
              | Payload EAP-X-Resp (n)                  |  |
           6) |---------------------------------------->|  v
              |                CON [0x7811] POST /a/z   |OSCORE
              |                  Token (0xac), OSCORE   |CONTEXT
    MSK       | Payload (EAP success||Session-Lifetime) |(*)
     |     7) |<----------------------------------------|
     v        | ACK [0x7811]                            |
   OSCORE  (*)| Token (0xac), OSCORE                    |
   CONTEXT 8) |---------------------------------------->|
              (*) Protected with OSCORE

                    Figure 2: CoAP-EAP flow of operation

Marin-Lopez & Garcia-CarrExpires 27 January 2022                [Page 7]
Internet-Draft                  CoAP-EAP                       July 2021

3.2.  Error handling

   This section elaborates how different errors are handled, from a non-
   responding endpoint, dealing lost messages and initial POST messages
   arriving arriving out of place.

   In general, the CoAP engine, in the client and server, will take care
   of retransmissions, dealing with lost messages sent out of place, and
   sending the errors when a client is trying to access a resource that
   does not exist in the CoAP server.  But, there are cases where the
   messages can arrive out of place, and the CoAP engine may not
   recognize them as old or as a retransmission, and send them to the
   CoAP application.

3.2.1.  Non-responding endpoint

   When CoAP-EAP starts, a state is created that stores all information
   related to the process.  If by any reason one of the entities becomes
   non-responding, the state should be only kept form a period of time
   before it is removed.  According to CoAP, EXCHANGE_LIFETIME considers
   the time it takes until a client stops expecting a response to a
   Confirmable request.  A timer is reseted every time a message is
   sent.  If EXCHANGE_LIFETIME has passed waiting the next message, both
   entities will delete the CoAP-EAP state if the authentication process
   has not finished correctly.

3.2.2.  Messages with /.well-known/a

   The reception of messages containing /.well-known/a needs some
   additional considerations, as the resource is always available in
   both entities.  This message can be sent out of the expected order by
   the EAP peer as well as by the EAP authenticator for reasons such as
   network delays.

   When this message arrives to the other entity during an ongoing
   authentication, and it is not recognized by the CoAP engine as an old
   or retransmitted message, arriving to the CoAP-EAP application, we
   describe the behavior depending on the entity receiving this message.
   If this message is from the EAP authenticator to the peer, being a
   Confirmable POST message, will honor the request and answer, in this
   case with a CoAP Reset message, that will indicate that, since there
   is an authentication ongoing, the EAP authenticator is not in
   disposition of processing this message.  This exchange is illustrated
   in Figure 3.

Marin-Lopez & Garcia-CarrExpires 27 January 2022                [Page 8]
Internet-Draft                  CoAP-EAP                       July 2021

           EAP peer                                  EAP Auth.
         (CoAP server)            .                (CoAP client)
         -------------            .               -------------
              |                                         |
              |        CON [0x7654] POST /.well-known/a |
              |                            Token (0xac) |
              |        Payload (EAP Req/Id||Cryptosuite)|
              |<----------------------------------------|
              |                                         |
              | RST [0x7654]                            |
              | 0.00 Code                               |
              |---------------------------------------->|

    Figure 3: /.well-known/a during ongoing authentication from the EAP
                               authenticator

   In case the message goes from the EAP peer to the authenticator,
   being a Non-confirmable POST message with the No-Response Option,
   there is no need to further process this message, and can be silently
   ignored.  This exchange is illustrated in Figure 4.

           EAP peer                                  EAP Auth.
         (CoAP server)            .                (CoAP client)
         -------------            .               -------------
              |                                         |
              | NON [0x6af5] POST /.well-known/a        |
              | Token (0xab), No-Response               |
              |---------------------------------------->| --+
              |                   .                     |   |
              |                   .                     |   v
                                                        (Ignored)

      Figure 4: /.well-known/a during ongoing authentication from the
                                  EAP peer

   When this message arrives to the CoAP-EAP application, and there is
   no authentication ongoing it will understand that a new
   authentication process is starting.  In case the message goes from
   the EAP authenticator to the peer, and no prior Non-confirmable
   /.well-known/a message was sent by the EAP peer, it will send a Reset
   message indicating that is not in disposition to process this
   message, as it has to be the EAP peer the one to initiate the
   process.  This exchange is illustrated in Figure 5.

Marin-Lopez & Garcia-CarrExpires 27 January 2022                [Page 9]
Internet-Draft                  CoAP-EAP                       July 2021

           EAP peer                                  EAP Auth.
         (CoAP server)                             (CoAP client)
         -------------                            -------------
              |                                         |
              |        CON [0x7654] POST /.well-known/a |
              |                            Token (0xac) |
              |        Payload (EAP Req/Id||Cryptosuite)|
              |<----------------------------------------|
              |                                         |
              | RST [0x7654]                            |
              | 0.00 Code                               |
              |---------------------------------------->|

    Figure 5: /.well-known/a with no ongoing authentication from the EAP
                               authenticator

   If this message is from the EAP peer to the authenticator, receiving
   a Non-confirmable /.well-known/a message, it will understand it as
   the start of the process by the EAP peer, and start a normal process
   of authentication as depicted in the general flow of operation in
   Figure 2.

3.3.  Managing the State of the Service

   The management of the CoAP-EAP state, can be done in different ways.
   The Controller MAY choose to delete it as explained in Section 3.3.1.
   On the other hand, the IoT device may need to renew the CoAP-EAP
   state because the key material is close to expire, as elaborated in
   Section 3.3.2.

3.3.1.  Deleting the state

   There are situations where the current CoAP-EAP state might need to
   be removed.  For instance due to its expiration or a forced removal
   if the IoT device needs to be expelled from the security domain.
   This exchange is illustrated in Figure 6.  If the Controller, which
   implements the CoAP client in this exchange, deems necessary the
   removal of the state, it can send a DELETE command to the CoAP
   server, referencing the last CoAP-EAP state resource given by the
   CoAP server, whose identifier will be the last one received with the
   ACK of the EAP success message (/a/z in Figure 2) This message will
   be protected with the OSCORE security association to prevent forgery.
   Upon reception of this message, the CoAP server sends piggybacked
   response to the client with the Code 2.02 Deleted, which is also
   protected with the OSCORE security association.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 10]
Internet-Draft                  CoAP-EAP                       July 2021

           EAP peer                                  EAP Auth.
         (CoAP server)                             (CoAP client)
         -------------                             -------------
              |                                         |
              |                CON [0x7654] DELETE /a/z |
              |                            Token (0xac) |
              |                                  OSCORE |
              |<----------------------------------------|
              |                                         |
              | ACK [0x7654]                            |
              | Token (0xac)                            |
              | 2.02 Deleted                            |
              | OSCORE                                  |
              |---------------------------------------->|

                          Figure 6: Deleting state

   If the ACK from the CoAP server does not arrive, after the maximum
   retransmission attempts, the CoAP client will remove the state from
   its side.

3.3.2.  Reauthentication

   When the CoAP-EAP state is close to expire, the IoT device MAY want
   to start a re-authentication process to renew the state.  Since the
   initial authentication is usually taxing, it is assumed to be done
   only once over a long period of time.  If further EAP re-
   authentications for refreshing the key material are necessary, there
   are other methods that can be used to perform these re-
   authentications.  For example, the EAP re-authentication protocol
   (ERP) [RFC6696], EAP-NOOB [I-D.ietf-emu-eap-noob], or EAP-AKA'
   [RFC5448] MAY be used to avoid repeating the entire EAP exchange.
   The message flow for the reauthentication will be exactly the same as
   the one shown in Figure 2, using a more lightweight alternative to do
   a re-authentication.  While the re-authentication is ongoing, two
   different CoAP-EAP states will be active.  Once the reauthentication
   is completed and OSCORE is exchanged using the newly derived key
   material, the old CoAP-EAP state is deleted.  If by any reason, the
   reauthentication fails to complete, the old CoAP-EAP state will be
   available until it expires.

4.  Cryptosuite negotiation and key derivation

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 11]
Internet-Draft                  CoAP-EAP                       July 2021

4.1.  Cryptographic suite negotiation

   How the cryptographic suite is selected is important.  OSCORE runs
   after the EAP authentication, using the cryptosuite selected in the
   cryptosuite negotiation.  To negotiate the cryptosuite, the protocol
   follows a simple approach by sending in the first message from the
   Controller, a list in decreasing order or preference, with the
   identifiers of the supported cryptosuites.  In the response to that
   message, the IoT device sends a response with the choice.  To do this
   without resorting to the creation of a new CoAP option tailored to
   this purpose, by leveraging the fact that in the payload it is always
   expected at the beginning the EAP message, which by design specifies
   its own length.  Following the EAP message, optionally there is a
   CBOR array that contains the cryptosuites.  Be it the list of
   cryptosuites supported by the Controller, or the one chosen by the
   IoT device.  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
   cryptosuite negotiation is shown in Figure 8, where can be
   appreciated the disposition of both EAP-Request/Identity and
   Response/Identity, followed by the CBOR array.  It is worth noting
   that the CBOR array is also expected in the EAP Success, containing
   the Session Lifetime.

               +-----+-----------+-------+------++------------+
               |Code |Identifier |Length |Data  ||Cyphersuites|
               +-----+-----------+-------+------++------------+
                           EAP Packet              CBOR Array

         Figure 7: How the cypersuites are sent in the CoAP payload

            EAP peer                                  EAP Auth.
         (CoAP server)                             (CoAP client)
         -------------                             -------------
              |                                         |
              |                  ...                    |
              |---------------------------------------->|
              |        CON [0x7654] POST /.well-known/a |
              |                            Token (0xac) |
              |  Payload (EAP Req/Id, CBORArray[0,1,2]) |
           1) |<----------------------------------------|
              | ACK [0x7654]                            |
              | Token (0xac)                            |
              | 2.01 Created Location-Path [/a/x]       |
              | Payload (EAP Resp/Id, CBORArray[0])     |
           2) |---------------------------------------->|
                                 ...

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 12]
Internet-Draft                  CoAP-EAP                       July 2021

            Figure 8: Cryptosuite negotition in t CoAP-EAP flow

   In case there is no CBOR Array stating the cryptosuites, the default
   cryptosuites are applied.  If the Controller sends a restricted list
   of cryptosuites that is willing to accept, and the ones supported by
   the IoT device are not in that list, the IoT device will respond with
   a 4.00 Bad Request, expressing in the Payload the cryptosuites
   supported.  Figure 9 illustrates this exchange.

            EAP peer                                  EAP Auth.
         (CoAP server)                             (CoAP client)
         -------------                             -------------
              |                                         |
              |                  ...                    |
              |---------------------------------------->|
              |        CON [0x7654] POST /.well-known/a |
              |                            Token (0xac) |
              |    Payload (EAP Req/Id, CBORArray[1,2]) |
           1) |<----------------------------------------|
              | ACK [0x7654]                            |
              | Token (0xac)                            |
              | 4.00 Bad Request                        |
              | Payload (CBORArray[0])                  |
           2) |---------------------------------------->|

                  Figure 9: Cryptosuite negotition failed

   To avoid a downgrading attack, we will use the proposed cryptosuite
   list and the choice in the key derivation process, to bind them to
   the generated keys as explained in Section 4.2.

   As a result of a successful EAP authentication, both the CoAP server
   and CoAP client share a Master Session Key (MSK).  The MSK is a fresh
   key, so any key derived from the MSK will be also fresh.  The CoAP-
   EAP exchange finishes with the establishment of an OSCORE security
   association for the CoAP-EAP service.  The security level for the
   CoAP-EAP exchanges with OSCORE is with integrity.  Due to the
   requirement of using OSCORE, the cryptosuite requirements are
   inherited from the ones established by OSCORE.  This requires for the
   HKDF algorithm by default HKDF SHA-256 and the AEAD algorithm by
   default AES-CCM-16-64-128 to be mandatory to implement.  The other
   cryptosuites supported and negotiated in the cryptosuite negotiation
   are, expressed as tuples of AEAD Algorithm and Hash Algorithm, the
   following:

      0.  AES-CCM-16-64-128, SHA-256

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 13]
Internet-Draft                  CoAP-EAP                       July 2021

      1.  A128GCM, SHA-256

      2.  A256GCM, SHA-384

   This specification uses the (HMAC)-based key derivation function
   (HKDF) defined in [RFC5869] to derive the necessary key material.
   Since the derivation will be done using the MSK, which is considered
   fresh key material, we will use the HKDF-Expand function, which we
   will shorten here as KDF.  In addition to the generation of the
   OSCORE parameters, we consider the derivation of a pre-shared key
   that can be used for a DTLS security association (DTLS PSK).

4.2.  Deriving the OSCORE Security Context

   The derivation of the security context for OSCORE has a three
   purposes:

   *  Secure the last two messages of the CoAP-EAP exchange, while
      establishing the OSCORE security association

   *  Perform key confirmation

   *  Prevent a downgrading attack.

   We can achieve this because, after a successful authentication, both
   the EAP authenticator and the peer share the MSK.  From this MSK,
   necessary key material for the OSCORE context is derived.  If the
   contexts match, both entities confirm they have the same Master
   Secret, and therefore they share the same MSK.  We prevent a
   downgrading attack, by embedding into the derivation process, context
   information gathered from the cryptosuite negotiation.  To do this,
   we concatenate to the label, the content of the cryptosuites
   negotiation (which we refer to here as CSO), using the null string
   for any part of the negotiation missing.  If an attacker changes the
   value of the cryptosuite negotiation in any of the messages, the
   result will be different security contexts.

   Key material needed to derive the OSCORE Security Context, from the
   MSK is done as follows:

   The Master Secret can be derived by using the chosen cryptosuite and
   the KDF.  The Master Secret can be derived as follows:

   Master Secret = KDF(MSK, CSO | "OSCORE MASTER SECRET", length)

   where:

   *  The algorithms are agreed in the cryptosuite negotiation.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 14]
Internet-Draft                  CoAP-EAP                       July 2021

   *  The MSK exported by the EAP method.  Discussion about the use of
      the MSK for the key derivation is done in Section 6.

   *  CSO is the concatenation of the content of the cryptosuite
      negotiation, in the request and response.  If any of the messages
      did not contain the CBOR array, the null string is used.

   *  "OSCORE MASTER SECRET" is the ASCII code representation of the
      non-NULL terminated string (excluding the double quotes around
      it).

   *  CSO and "OSCORE MASTER SECRET" are concatenated.

   *  length is the size of the output key material.

   The Master Salt, similarly to the Master Secret, can be derived as
   follows:

   Master Salt = KDF(MSK, CSO | "OSCORE MASTER SALT", length)

   where:

   *  The algorithms are agreed in the cryptosuite negotiation.

   *  The MSK exported by the EAP method.  Discussion about the use of
      the MSK for the key derivation is done in Section 6.

   *  CSO is the concatenation of the content of the cryptosuite
      negotiation, in the request and response.  If any of the messages
      did not contain the CBOR array, the null string is used.

   *  "OSCORE MASTER SALT" is the ASCII code representation of the non-
      NULL terminated string (excluding the double quotes around it).

   *  CSO and "OSCORE MASTER SECRET" are concatenated.

   *  length is the size of the output key material.

   Regarding the Recipient ID and Sender ID, as their purpose is to
   serve as identifiers of both entities involved in the exchange, these
   identifiers are generated as follows:

   Recipient ID = KDF(MSK, "OSCORE RECIPIENT ID", length)

   where:

   *  The algorithms are agreed in the cryptosuite negotiation.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 15]
Internet-Draft                  CoAP-EAP                       July 2021

   *  "OSCORE RECIPIENT ID" is the ASCII code representation of the non-
      NULL terminated string (excluding the double quotes around it).

   *  length is the size of the output.  This value will be the maximum
      allowed length according to the limits established by OSCORE to
      Recipient ID, depending on the chosen cryptographic algorithms
      [RFC8613].

   For the Sender ID, analogously to the Recipient ID:

   Sender ID = KDF(MSK, "OSCORE SENDER ID", length)

   where:

   *  The algorithms are agreed in the cryptosuite negotiation.

   *  "OSCORE RECIPIENT ID" is the ASCII code representation of the non-
      NULL terminated string (excluding the double quotes around it).

   *  length is the size of the output.  The maximum value allowed is
      established by OSCORE to Sender ID, depending on the chosen
      cryptographic algorithms.

4.3.  Deriving DTLS PSK

   It is also possible to derive a pre-shared key for DTLS [RFC6347],
   refereed to here as "DTLS PSK", from the MSK between both CoAP
   endpoints if required.  The length of the DTLS PSK will depend on the
   cryptosuite.  To have a cryptographic material with sufficient length
   we will derive a key of 32 bytes that can be later truncated if
   needed:

   DTLS PSK = KDF(MSK, "DTLS PSK", length).

   where:

   *  MSK is exported by the EAP method.

   *  "DTLS PSK" is the ASCII code representation of the non-NULL
      terminated string (excluding the double quotes around it).

   *  length is the size of the output key material.

5.  Discussion

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 16]
Internet-Draft                  CoAP-EAP                       July 2021

5.1.  CoAP as EAP lower layer

   This section discusses the suitability of the CoAP protocol as EAP
   lower layer, and reviews the requisites imposed by the EAP protocol
   to any protocol that transports EAP.  What EAP expects from its lower
   layers can be found in section 3.1 of [RFC3748], which is elaborated
   next:

   Unreliable transport.  EAP does not assume that lower layers are
   reliable.  CoAP provides a reliability mechanism through the use of
   Confirmable messages.

   Lower layer error detection.  EAP relies on lower layer error
   detection (e.g., CRC, Checksum, MIC, etc.).  CoAP goes on top of UDP
   which provides a checksum mechanism over its payload.

   Lower layer security.  EAP does not require security services from
   the lower layers.

   Minimum MTU.  Lower layers need to provide an EAP MTU size of 1020
   octets or greater.  CoAP assumes an upper bound of 1024 for its
   payload which covers the requirements of EAP.

   Ordering guarantees.  EAP relies on lower layer ordering guarantees
   for correct operation.  Regarding message ordering, every time a new
   message arrives at the authentication service hosted by the IoT
   device, a new resource is created and this is indicated in a 2.01
   Created response code along with the name of the new resource via
   Location-Path or Location-Query.  This way the application indicates
   that its state has advanced.  Although the [RFC3748] states: "EAP
   provides its own support for duplicate elimination and
   retransmission", EAP is also reliant on lower layer ordering
   guarantees.  In this regard, the RFC talks about possible duplication
   and says: "Where the lower layer is reliable, it will provide the EAP
   layer with a non-duplicated stream of packets.  However, while it is
   desirable that lower layers provide for non-duplication, this is not
   a requirement".  CoAP is providing a non-duplicated stream of packets
   and accomplish the "desirable" non-duplication.  In addition,
   [RFC3748] says that when EAP runs over a reliable lower layer "the
   authenticator retransmission timer SHOULD be set to an infinite
   value, so that retransmissions do not occur at the EAP layer."

   NOTE: This document does not assume any specific naming schema.  The
   only requisite that both CoAP client and server MUST agree, is the
   establishment of a nomenclature indicates that the next URI used to
   refer to a resource, univocally points to the next expected EAP
   exchange.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 17]
Internet-Draft                  CoAP-EAP                       July 2021

   Regarding the CoAP Token, CoAP-EAP will use one of a constant value
   throughout an authentication.  This is because the EAP server will
   not send a new EAP request until it has processed the expected EAP
   response.  Additionally, there will be a single EAP authentication
   between the IoT device and the same Controller.  This would also
   enable the possibility of using an Empty Token to reduce the number
   of bytes.

   As we can see, CoAP can fulfill the requirements of EAP to be
   considered suitable as lower layer.

5.2.  Size of the EAP lower layer vs EAP method size

   Regarding the impact an EAP lower layer will have to the total byte
   size of the whole exchange, there is a comparison with another
   network layer based EAP lower layer, PANA [RFC5191] in [coap-eap].
   Comparing the EAP lower layer (alone) and taking into account EAP.
   On the one hand, at the EAP lower layer level, the usage of CoAP
   gives important benefits.  On the other hand, when taking into
   account the EAP method overload, this reduction is less but still
   significant if the EAP method is lightweight (authors of [coap-eap]
   used EAP-PSK as a representative of a lightweight EAP method).  If
   the EAP method is very taxing, the impact of the reduction in size of
   the EAP lower layer is less significant.  This leads to the
   conclusion that possible next steps in this field could be designing
   new EAP methods that can be better adapted to the requirements of IoT
   devices and networks.

   However, the impact of the EAP lower layer itself cannot be ignored,
   hence the proposal of using CoAP as lightweight protocol for this
   purpose.  Other EAP methods such as EAP-AKA'[RFC5448] or new
   lightweight EAP methods such as EAP-NOOB [I-D.ietf-emu-eap-noob] or
   EAP-EDHOC [I-D.ingles-eap-edhoc] that can benefit from a CoAP-based
   EAP lower layer, as well as new ones that may be proposed in the
   future with IoT constraints in mind.

5.3.  Controller as the CoAP Client

   In general, it is assumed that, since the EAP authenticator
   (Controller) MAY implement an AAA client to interact with the AAA
   infrastructure.  Hence, this endpoint will have more resources or, at
   least, will not be a so constrained device.  Due to the constrained
   capacities of IoT devices, to relieve them of the retransmission
   tasks, the Controller is set as the CoAP client, for the main
   exchange following the recommendations of the [I-D.ietf-lwig-coap]
   document to simplify the IoT device implementation.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 18]
Internet-Draft                  CoAP-EAP                       July 2021

6.  Security Considerations

   There are some aspects to be considered such as how authorization is
   managed, the use of MSK as keying material and how the trust in the
   Controller is established.  Additional considerations such as EAP
   channel binding as per [RFC6677] are also discussed here.

6.1.  Authorization

   Authorization is part of bootstrapping.  It serves to establish
   whether the node can join and the set of conditions it has to adhere.
   The authorization data will be gathered from the organization that is
   responsible for the IoT device and sent to the EAP authenticator.  In
   standalone mode, the authorization information will be in the
   Controller.  If the pass-through mode is used, authorization data
   received from the AAA server can be delivered by the AAA protocol
   (e.g.  Diameter).  Providing more fine-grained authorization data can
   be with the transport of SAML in RADIUS [RFC7833].  After
   bootstrapping, additional authorization information to operate in the
   security domain, e.g., access services offered by other nodes, can be
   taken care of by the solutions proposed in the ACE WG.

6.2.  Freshness of the key material

   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
   (EMSK) keys according to the EAP Key Management Framework [RFC5247]
   are fresh key material.  Since only one authentication is established
   per EAP authenticator, there is no need for generating additional key
   material.  In case another authentication to be established, a re-
   authentication can be done, by running the process again, or using a
   more lightweight EAP method to derive additional key material as
   elaborated in Section 3.3.2.

6.3.  Channel Binding support

   According to the [RFC6677], channel binding related with EAP, is sent
   through the EAP method that supports it.

   To satisfy the requirements of the document, we need to send the EAP
   lower layer identifier (To be assigned by IANA), in the EAP Lower-
   Layer Attribute if RADIUS is used.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 19]
Internet-Draft                  CoAP-EAP                       July 2021

6.4.  Additional Security Consideration

   Other security-related concerns can be how to ensure that the node
   joining the security domain can in fact trust the Controller.  This
   issue is elaborated in the EAP Key Management Framework [RFC5247].
   In particular, the constrained node knows it can trust the Controller
   because the key that is used to establish the security association is
   derived from the MSK.  If the Controller has the MSK, it is clear the
   AAA Server of the node trusted the Controller, which can be
   considered as a trusted party.

7.  IANA Considerations

   Considerations for IANA regarding this document:

   *  Assignment of EAP lower layer identifier.

   *  Assignment of the URI /.well-known/a

8.  Acknowledgments

   We would like to thank as the reviewers of this work: Carsten
   Bormann, Mohit Sethi, Benjamin Kaduk, Alexandre Petrescu, Pedro
   Moreno-Sanchez and Eduardo Ingles-Sanchez.

   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
   the first proof-of-concept implementation of this idea.

   And thank for their valuables comments to Alexander Pelov and Laurent
   Toutain, especially for the potential optimizations of CoAP-EAP.

9.  References

9.1.  Normative References

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

   [RFC3748]  Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H.
              Levkowetz, Ed., "Extensible Authentication Protocol
              (EAP)", RFC 3748, DOI 10.17487/RFC3748, June 2004,
              <https://www.rfc-editor.org/info/rfc3748>.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 20]
Internet-Draft                  CoAP-EAP                       July 2021

   [RFC5247]  Aboba, B., Simon, D., and P. Eronen, "Extensible
              Authentication Protocol (EAP) Key Management Framework",
              RFC 5247, DOI 10.17487/RFC5247, August 2008,
              <https://www.rfc-editor.org/info/rfc5247>.

   [RFC5295]  Salowey, J., Dondeti, L., Narayanan, V., and M. Nakhjiri,
              "Specification for the Derivation of Root Keys from an
              Extended Master Session Key (EMSK)", RFC 5295,
              DOI 10.17487/RFC5295, August 2008,
              <https://www.rfc-editor.org/info/rfc5295>.

   [RFC5869]  Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand
              Key Derivation Function (HKDF)", RFC 5869,
              DOI 10.17487/RFC5869, May 2010,
              <https://www.rfc-editor.org/info/rfc5869>.

   [RFC6677]  Hartman, S., Ed., Clancy, T., and K. Hoeper, "Channel-
              Binding Support for Extensible Authentication Protocol
              (EAP) Methods", RFC 6677, DOI 10.17487/RFC6677, July 2012,
              <https://www.rfc-editor.org/info/rfc6677>.

   [RFC7252]  Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
              Application Protocol (CoAP)", RFC 7252,
              DOI 10.17487/RFC7252, June 2014,
              <https://www.rfc-editor.org/info/rfc7252>.

   [RFC7967]  Bhattacharyya, A., Bandyopadhyay, S., Pal, A., and T.
              Bose, "Constrained Application Protocol (CoAP) Option for
              No Server Response", RFC 7967, DOI 10.17487/RFC7967,
              August 2016, <https://www.rfc-editor.org/info/rfc7967>.

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

   [RFC8613]  Selander, G., Mattsson, J., Palombini, F., and L. Seitz,
              "Object Security for Constrained RESTful Environments
              (OSCORE)", RFC 8613, DOI 10.17487/RFC8613, July 2019,
              <https://www.rfc-editor.org/info/rfc8613>.

9.2.  Informative References

   [coap-eap] Garcia-Carrillo, D. and R. Marin-Lopez, "Lightweight CoAP-
              Based Bootstrapping Service for the Internet of Things -
              https://www.mdpi.com/1424-8220/16/3/358", March 2016.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 21]
Internet-Draft                  CoAP-EAP                       July 2021

   [I-D.ietf-ace-oauth-authz]
              Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and
              H. Tschofenig, "Authentication and Authorization for
              Constrained Environments (ACE) using the OAuth 2.0
              Framework (ACE-OAuth)", Work in Progress, Internet-Draft,
              draft-ietf-ace-oauth-authz-36, 16 November 2020,
              <http://www.ietf.org/internet-drafts/draft-ietf-ace-oauth-
              authz-36.txt>.

   [I-D.ietf-emu-eap-noob]
              Aura, T., Sethi, M., and A. Peltonen, "Nimble out-of-band
              authentication for EAP (EAP-NOOB)", Work in Progress,
              Internet-Draft, draft-ietf-emu-eap-noob-05, 12 July 2021,
              <https://www.ietf.org/archive/id/draft-ietf-emu-eap-noob-
              05.txt>.

   [I-D.ietf-lwig-coap]
              Kovatsch, M., Bergmann, O., and C. Bormann, "CoAP
              Implementation Guidance", Work in Progress, Internet-
              Draft, draft-ietf-lwig-coap-06, 2 July 2018,
              <http://www.ietf.org/internet-drafts/draft-ietf-lwig-coap-
              06.txt>.

   [I-D.ingles-eap-edhoc]
              Sanchez, E., Garcia-Carrillo, D., and R. Marin-Lopez, "EAP
              method based on EDHOC Authentication", Work in Progress,
              Internet-Draft, draft-ingles-eap-edhoc-01, 2 November
              2020, <https://www.ietf.org/internet-drafts/draft-ingles-
              eap-edhoc-01.txt>.

   [lo-coap-eap]
              Garcia-Carrillo, D., Marin-Lopez, R., Kandasamy, A., and
              A. Pelov, "A CoAP-Based Network Access Authentication
              Service for Low-Power Wide Area Networks: LO-CoAP-EAP -
              https://www.mdpi.com/1424-8220/17/11/2646", November 2017.

   [RFC4764]  Bersani, F. and H. Tschofenig, "The EAP-PSK Protocol: A
              Pre-Shared Key Extensible Authentication Protocol (EAP)
              Method", RFC 4764, DOI 10.17487/RFC4764, January 2007,
              <https://www.rfc-editor.org/info/rfc4764>.

   [RFC5191]  Forsberg, D., Ohba, Y., Ed., Patil, B., Tschofenig, H.,
              and A. Yegin, "Protocol for Carrying Authentication for
              Network Access (PANA)", RFC 5191, DOI 10.17487/RFC5191,
              May 2008, <https://www.rfc-editor.org/info/rfc5191>.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 22]
Internet-Draft                  CoAP-EAP                       July 2021

   [RFC5448]  Arkko, J., Lehtovirta, V., and P. Eronen, "Improved
              Extensible Authentication Protocol Method for 3rd
              Generation Authentication and Key Agreement (EAP-AKA')",
              RFC 5448, DOI 10.17487/RFC5448, May 2009,
              <https://www.rfc-editor.org/info/rfc5448>.

   [RFC6347]  Rescorla, E. and N. Modadugu, "Datagram Transport Layer
              Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
              January 2012, <https://www.rfc-editor.org/info/rfc6347>.

   [RFC6696]  Cao, Z., He, B., Shi, Y., Wu, Q., Ed., and G. Zorn, Ed.,
              "EAP Extensions for the EAP Re-authentication Protocol
              (ERP)", RFC 6696, DOI 10.17487/RFC6696, July 2012,
              <https://www.rfc-editor.org/info/rfc6696>.

   [RFC7833]  Howlett, J., Hartman, S., and A. Perez-Mendez, Ed., "A
              RADIUS Attribute, Binding, Profiles, Name Identifier
              Format, and Confirmation Methods for the Security
              Assertion Markup Language (SAML)", RFC 7833,
              DOI 10.17487/RFC7833, May 2016,
              <https://www.rfc-editor.org/info/rfc7833>.

   [RFC8824]  Minaburo, A., Toutain, L., and R. Andreasen, "Static
              Context Header Compression (SCHC) for the Constrained
              Application Protocol (CoAP)", RFC 8824,
              DOI 10.17487/RFC8824, June 2021,
              <https://www.rfc-editor.org/info/rfc8824>.

   [TS133.501]
              ETSI, "5G; Security architecture and procedures for 5G
              System - TS 133 501 V15.2.0 (2018-10)", 2018.

Appendix A.  Examples of Use Case Scenario

   For a IoT device to act as a trustworthy entity within a security
   domain, certain key material is needed to be shared between the IoT
   device and the Controller.

   Next, we elaborate on examples of different use case scenarios about
   the usage of CoAP-EAP.  Generally, we are dealing with 4 entities:

   *  2 nodes (A and B), which are IoT devices.  They are the EAP peers.

   *  1 controller (C).  The controller manages a domain where nodes can
      be deployed.  It can be considered a more powerful machine than
      the IoT devices.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 23]
Internet-Draft                  CoAP-EAP                       July 2021

   *  1 AAA server (AAA) - Optional.  The AAA is an Authentication,
      Authorization and Accounting Server, which is not constrained.
      Here, the Controller acts as EAP authenticator in pass-through
      mode.

   Generally, any IoT device wanting to join the domain managed by the
   Controller MUST perform a CoAP-EAP authentication with the Controller
   (C).  This authentication MAY involve an external AAA server.  This
   means that A and B, once deployed, will run CoAP-EAP once, as a
   bootstrapping phase, to establish a security association with C.
   Moreover, any other entity, which wants to join and establish
   communications with nodes under C's domain must also do the same.  By
   using EAP, we can have the flexibility of having different types of
   credentials.  For instance, if we have a device that is not battery
   dependent, and not very constrained, we could use a heavier
   authentication method.  With varied IoT devices and networks we might
   need to resort to more lightweight authentication methods (e.g., EAP-
   NOOB[I-D.ietf-emu-eap-noob], EAP-AKA'[RFC5448], EAP-PSK[RFC4764],
   EAP-EDHOC[I-D.ingles-eap-edhoc], etc.) being able to adapt to
   different types of devices according to organization policies or
   devices capabilities.

A.1.  Example 1: CoAP-EAP in ACE

   In ACE, the process of Client registration and provisioning of
   credentials to the client is not specified.  The process of Client
   registration and provisioning can be achieved using CoAP-EAP.  Once
   the process of authentication with EAP is completed, fresh key
   material is shared between the IoT device and the Controller.  In
   this instance, the Controller and the Authorization Server (AS) of
   ACE can be co-located.

   Next, we exemplify how CoAP-EAP can be used to perform the Client
   registration in a general way, to allow two IoT devices (A and B) to
   communicate and interact after a successful client registration.

   Node A wants to communicate with node B (e.g. to activate a light
   switch).  The overall process is divided into three phases.  Let's
   start with node A.  In the first phase, the node A (EAP peer) does
   not yet belong to Controller C's domain.  Then, it communicates with
   C (EAP authenticator) 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 node A.  This key material allows node A
   to establish a security association with the C.  Some authorization
   information may be also 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.

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 24]
Internet-Draft                  CoAP-EAP                       July 2021

   If authentication and authorization are correct, node A is enrolled
   in controller C's domain for a period of time.  In particular,
   [RFC5247] recommends 8 hours, though the the entity providing the
   authorization information can establish this lifetime.  In the same
   manner, B needs to perform the same process with CoAP-EAP to be part
   of the controller C's domain.

   In the second phase, when node A wants to talk with node B, it
   contacts controller C for authorization to access node B and obtain
   all the required information to do that securely (e.g. keys, tokens,
   authorization information, etc.).  This phase does NOT require the
   usage of CoAP-EAP.  The details of this phase are out of the scope of
   this document, and the ACE framework is used for this purpose
   [I-D.ietf-ace-oauth-authz].

   In the third phase, the node A can access node B with the credentials
   and information obtained from the controller C in the second phase.
   This access can be repeated without contacting the controller, while
   the credentials given to A are still valid.  The details of this
   phase are out of scope of this document.

   It is worth noting that first phase with CoAP-EAP is required to join
   the controller C's domain.  Once it is performed with success, the
   communications are local to the controller C's domain and there is no
   need to perform a new EAP authentication as long as the key material
   is still valid.  When the keys are about to expire, the IoT device
   can engage in a reauthentication as explained in Section 3.3.2, to
   renew the key material.

A.2.  Example 2: Multi-domain with AAA infrastructures

   We assume we have a device (A) of the domain acme.org, which uses a
   specific kind of 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 client registration using CoAP-EAP.  For this, it
   interacts with the controller's domain acting as EAP authenticator,
   which in turn communicates with a AAA infrastructure (acting as AAA
   client).  Through the local AAA server to communicate with the home
   AAA server to complete the authentication and integrate the device as
   a trustworthy entity into the domain of controller C.  In this
   scenario, the AS under the role of the Controller receives the key
   material from the AAA infrastructure

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 25]
Internet-Draft                  CoAP-EAP                       July 2021

A.3.  Example 3: Single domain with AAA infrastructure

   A University Campus, we have several Faculty buildings and each one
   has its own criteria or policies in place to manage IoT devices under
   an AS.  All buildings belong to the same domain (e.g., um.es).  All
   these buildings are managed with a AAA infrastructure.  A new device
   (A) with credentials from the domain (e.g., um.es) will be able to
   perform the device registration with a Controller (C) of any building
   as long as they are managed by the same general domain.

A.4.  Example 4: Single domain without AAA infrastructure

   In another case, without a AAA infrastructure, we have a Controller
   that has co-located the EAP server and using EAP standalone mode we
   can manage all the devices within the same domain locally.  Client
   registration of a node (A) with Controller (C) can also be performed
   in the same manner.

A.5.  Other use cases

A.5.1.  CoAP-EAP for network access control

   One of the first steps for an IoT device life-cycle is to perform the
   authentication to gain access to the network.  To do so, the device
   first has to be authenticated and granted authorization to gain
   access to the network.  Additionally, security parameters such as
   credentials can be derived from the authentication process allowing
   the trustworthy operation of the IoT device in a particular network
   by joining the security domain.  By using EAP, we are able to achieve
   this with flexibility and scalability, because of the different EAP
   methods available and the ability to rely on AAA infrastructures if
   needed to support multi-domain scenarios, which is a key feature when
   the IoT devices deployed under the same security domain, belong to
   different organizations.  Given that EAP is also used for network
   access control, we can adapt this service for other technologies.
   For instance, to provide network access control to very constrained
   technologies (e.g., LoRa network).  Authors in [lo-coap-eap] provide
   an study of a minimal version of CoAP-EAP for LPWAN networks with
   interesting results.  In this specific case, we could leverage the
   compression by SCHC for CoAP [RFC8824].

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 26]
Internet-Draft                  CoAP-EAP                       July 2021

A.5.2.  CoAP-EAP for service authentication

   It is not uncommon that the infrastructure where the device is
   deployed and the services of the IoT device are managed by different
   organizations.  Therefore, in addition to the authentication for
   network access control, we have to consider the possibility of a
   secondary authentication to access different services.  This process
   of authentication, for example, will provide with the necessary key
   material to establish a secure channel and interact with the entity
   in charge of granting access to different services.  In 5G, for
   example, consider a primary and secondary authentication using EAP
   [TS133.501].

Authors' Addresses

   Rafa Marin-Lopez
   University of Murcia
   Campus de Espinardo S/N, Faculty of Computer Science
   30100 Murcia
   Spain

   Phone: +34 868 88 85 01
   Email: rafa@um.es

   Dan Garcia-Carrillo
   University of Oviedo
   Calle Luis Ortiz Berrocal S/N, Edificio Polivalente
   33203 Gijon Asturias
   Spain

   Email: garciadan@uniovi.es

Marin-Lopez & Garcia-CarrExpires 27 January 2022               [Page 27]