<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-emu-eap-edhoc-12" category="std" consensus="true" submissionType="IETF" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <?v3xml2rfc silence="Found SVG with width or height specified"?>
  <front>
    <title abbrev="EAP-EDHOC">Using the Extensible Authentication Protocol (EAP) with Ephemeral Diffie-Hellman over COSE (EDHOC)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-emu-eap-edhoc-12"/>
    <author initials="D." surname="Garcia-Carrillo" fullname="Dan Garcia-Carrillo">
      <organization>University of Oviedo</organization>
      <address>
        <postal>
          <street>Gijon, Asturias  33203</street>
          <country>Spain</country>
        </postal>
        <email>garciadan@uniovi.es</email>
      </address>
    </author>
    <author initials="R." surname="Marin-Lopez" fullname="Rafael Marin-Lopez">
      <organization>University of Murcia</organization>
      <address>
        <postal>
          <street>Murcia  30100</street>
          <country>Spain</country>
        </postal>
        <email>rafa@um.es</email>
      </address>
    </author>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street>SE-164 80 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street>SE-164 80 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="F." surname="Lopez-Gomez" fullname="Francisco Lopez-Gomez">
      <organization>University of Murcia</organization>
      <address>
        <postal>
          <street>Murcia  30100</street>
          <country>Spain</country>
        </postal>
        <email>francisco.lopezg@um.es</email>
      </address>
    </author>
    <date year="2026" month="July" day="29"/>
    <area/>
    <workgroup>EAP Method Update</workgroup>
    <abstract>
      <?line 107?>

<t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides a standard mechanism for support of multiple authentication methods. This document specifies the EAP authentication method EAP-EDHOC, based on Ephemeral Diffie-Hellman Over COSE (EDHOC). EDHOC is a lightweight security handshake protocol, enabling authentication and establishment of shared secret keys suitable in constrained settings. This document also provides guidance on authentication and authorization for EAP-EDHOC.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-emu-eap-edhoc/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        EAP Method Update  mailing list (<eref target="mailto:emu@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/emu"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/emu/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dangarciacarrillo/i-d-eap-edhoc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 111?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Extensible Authentication Protocol (EAP), defined in <xref target="RFC3748"/>, provides a standard mechanism for support of multiple authentication methods. This document specifies the EAP authentication method EAP-EDHOC, which is based on the lightweight security handshake protocol Ephemeral Diffie-Hellman Over COSE (EDHOC) <xref target="RFC9528"/>.</t>
      <t>EAP-EDHOC is similar to EAP-TLS 1.3 <xref target="RFC9190"/>, since EDHOC is based on a similar security protocol design as the TLS 1.3 handshake <xref target="RFC8446"/>. However, EDHOC has been optimized for highly constrained settings, for example, involving wirelessly connected battery powered 'things' with embedded microcontrollers, sensors, and actuators. An overview of EDHOC is given in <xref target="edhoc-overview"/>.</t>
      <t>The EAP-EDHOC method enables the integration of EDHOC into different applications and use cases using the EAP framework.</t>
      <section anchor="edhoc-overview">
        <name>EDHOC Overview</name>
        <t>Ephemeral Diffie-Hellman Over COSE (EDHOC) is a lightweight authenticated ephemeral key exchange, including mutual authentication and establishment of shared secret keying material, see <xref target="RFC9528"/>.</t>
        <t>EDHOC provides state-of-the-art security design at very low message overhead, targeting low complexity implementations and allowing extensibility. The security of EDHOC has been thoroughly analyzed, some references are provided in <xref section="9.1" sectionFormat="of" target="RFC9528"/>.</t>
        <t>The main features of EDHOC are:</t>
        <ul spacing="normal">
          <li>
            <t>Support for different authentication methods and credentials. The authentication methods include (mixed) signatures and static Diffie-Hellman keys <xref target="RFC9528"/>, and pre-shared keys <xref target="I-D.ietf-lake-edhoc-psk"/>. A wide and extensible range of authentication credentials is supported, including public key certificates such as X.509 and C509 <xref target="I-D.ietf-cose-cbor-encoded-cert"/>, as well as CBOR Web Tokens (CWTs) and CWT Claims Sets (CCSs) <xref target="RFC8392"/>.</t>
          </li>
          <li>
            <t>A standardized and extensible format for identification of credentials, using CBOR Object Signing and Encryption (COSE) header parameters <xref target="STD96"/>, supporting credential transport by value or by reference, enabling very compact representations.</t>
          </li>
          <li>
            <t>Crypto agility and secure cipher suite negotiation, with predefined compactly represented cipher suites and support for extensibility using the COSE algorithms registry <xref target="RFC9053"/>.</t>
          </li>
          <li>
            <t>Selection of connection identifiers identifying a session for which keys are agreed.</t>
          </li>
          <li>
            <t>Support for integration of external security applications into EDHOC by transporting External Authorization Data (EAD) included in and protected as EDHOC messages.</t>
          </li>
        </ul>
        <t>A necessary condition for a successful completion of an EDHOC session is that both peers support a common application profile such as method and cipher suite. More details are provided in  <xref target="I-D.ietf-lake-app-profiles"/>.</t>
        <t>EDHOC messages make use of lightweight primitives, specifically CBOR <xref target="RFC8949"/> and COSE <xref target="STD96"/> for efficient encoding and security services in constrained devices. EDHOC is optimized for use with CoAP <xref target="RFC7252"/> and OSCORE <xref target="RFC8613"/> to secure resource access in constrained IoT use cases, but it is not bound to a particular transport or communication security protocol.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>Readers are expected to be familiar with the terms and concepts defined in EAP <xref target="RFC3748"/> and EDHOC <xref target="RFC9528"/>, in particular the following:</t>
      <ul spacing="normal">
        <li>
          <t>MSK - Master Session Key; defined in <xref target="RFC3748"/>.</t>
        </li>
        <li>
          <t>EMSK - Extended Master Session Key; defined in <xref target="RFC3748"/>.</t>
        </li>
        <li>
          <t>EAP peer/Peer - The device seeking network access. Terminology commonly used in the EAP framework.</t>
        </li>
        <li>
          <t>EAP server/Server - The entity providing authentication services within the EAP framework, responsible for authenticating the EAP peer on behalf of the authentication infrastructure. It may be colocated with the EAP authenticator or in a separate backend server.</t>
        </li>
        <li>
          <t>Initiator - In EAP-EDHOC, the EAP peer assumes the role of the EDHOC Initiator; therefore, the terms "Initiator" and "EAP peer" are used interchangeably in this document. As defined in <xref target="RFC9528"/>, the Initiator is the entity that sends EDHOC message_1. This role must not be confused with the sender of the EDHOC Start message introduced in this specification.</t>
        </li>
        <li>
          <t>Responder - In EAP-EDHOC, the EAP server assumes the role of the EDHOC Responder; therefore, the terms "Responder" and "EAP server" are used interchangeably in this document. The term is defined in <xref target="RFC9528"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="overview">
      <name>Protocol Overview</name>
      <section anchor="overview-of-the-eap-edhoc-conversation">
        <name>Overview of the EAP-EDHOC Conversation</name>
        <t>The EAP exchange involves three key entities: the EAP peer, the EAP authenticator, and the EAP server. The EAP authenticator is a network device that enforces access control and initiates the EAP authentication process. The EAP peer is the device seeking network access and communicates directly with the EAP authenticator. The EAP server is responsible for selecting and implementing the authentication methods and for authenticating the EAP peer. When the EAP server is not located on a separate backend authentication server, it is integrated into the EAP authenticator. For simplicity, the operational flow diagrams in this document depict only the EAP peer and the EAP server.</t>
        <t>The EDHOC protocol running between an Initiator and a Responder consists of three mandatory messages (message_1, message_2, message_3), an optional message_4, and an error message. In an EDHOC session, EAP-EDHOC uses all messages including message_4, which is mandatory and acts as a protected success indication.</t>
        <t>After receiving an EAP-Request packet with EAP-Type=EAP-EDHOC as described in this document, the conversation will continue with the EDHOC messages transported in the data fields of EAP-Response and EAP-Request packets. When EAP-EDHOC is used, the formatting and processing of EDHOC messages <bcp14>SHALL</bcp14> be done as specified in <xref target="RFC9528"/>. This document only lists additional and different requirements, restrictions, and processing compared to <xref target="RFC9528"/>.</t>
        <t>The message processing in <xref section="5" sectionFormat="of" target="RFC9528"/> states that certain data (EAD items, connection identifiers, application algorithms, etc.) is made available to the application. Since EAP-EDHOC is now acting as the application of EDHOC, it may need to handle this data to complete the protocol execution. See also <xref target="I-D.ietf-lake-edhoc-impl-cons"/>.</t>
        <t>Resumption of EAP-EDHOC may be defined using the EDHOC-PSK authentication method <xref target="I-D.ietf-lake-edhoc-psk"/>.</t>
        <section anchor="successful-eap-edhoc-message-flow-without-fragmentation">
          <name>Successful EAP-EDHOC Message Flow without Fragmentation</name>
          <t>EDHOC allows EAP-EDHOC to support authentication credentials of any type defined by COSE, which can be either transported or referenced during the protocol.</t>
          <t>The optimization combining the execution of EDHOC with the first subsequent OSCORE transaction specified in <xref target="RFC9668"/> is not applicable to this EAP method.</t>
          <t><xref target="message-flow"/> shows an example message flow for a successful execution of EAP-EDHOC.</t>
          <figure anchor="message-flow">
            <name>Example of Successful EAP-EDHOC Message Flow Exchange</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="608" width="528" viewBox="0 0 528 608" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 40,64 L 40,592" fill="none" stroke="black"/>
                  <path d="M 488,64 L 488,592" fill="none" stroke="black"/>
                  <path d="M 56,96 L 472,96" fill="none" stroke="black"/>
                  <path d="M 56,160 L 472,160" fill="none" stroke="black"/>
                  <path d="M 56,224 L 472,224" fill="none" stroke="black"/>
                  <path d="M 56,288 L 472,288" fill="none" stroke="black"/>
                  <path d="M 56,352 L 472,352" fill="none" stroke="black"/>
                  <path d="M 56,416 L 472,416" fill="none" stroke="black"/>
                  <path d="M 56,480 L 472,480" fill="none" stroke="black"/>
                  <path d="M 56,528 L 472,528" fill="none" stroke="black"/>
                  <path d="M 56,576 L 472,576" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="480,528 468,522.4 468,533.6" fill="black" transform="rotate(0,472,528)"/>
                  <polygon class="arrowhead" points="480,416 468,410.4 468,421.6" fill="black" transform="rotate(0,472,416)"/>
                  <polygon class="arrowhead" points="480,288 468,282.4 468,293.6" fill="black" transform="rotate(0,472,288)"/>
                  <polygon class="arrowhead" points="480,160 468,154.4 468,165.6" fill="black" transform="rotate(0,472,160)"/>
                  <polygon class="arrowhead" points="64,576 52,570.4 52,581.6" fill="black" transform="rotate(180,56,576)"/>
                  <polygon class="arrowhead" points="64,480 52,474.4 52,485.6" fill="black" transform="rotate(180,56,480)"/>
                  <polygon class="arrowhead" points="64,352 52,346.4 52,357.6" fill="black" transform="rotate(180,56,352)"/>
                  <polygon class="arrowhead" points="64,224 52,218.4 52,229.6" fill="black" transform="rotate(180,56,224)"/>
                  <polygon class="arrowhead" points="64,96 52,90.4 52,101.6" fill="black" transform="rotate(180,56,96)"/>
                  <g class="text">
                    <text x="40" y="36">EAP-EDHOC</text>
                    <text x="100" y="36">Peer</text>
                    <text x="432" y="36">EAP-EDHOC</text>
                    <text x="500" y="36">Server</text>
                    <text x="380" y="84">EAP-Request/Identity</text>
                    <text x="152" y="132">EAP-Response/Identity</text>
                    <text x="140" y="148">(Privacy-Friendly)</text>
                    <text x="340" y="196">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="380" y="212">(EDHOC</text>
                    <text x="436" y="212">Start)</text>
                    <text x="192" y="260">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="92" y="276">(EDHOC</text>
                    <text x="164" y="276">message_1)</text>
                    <text x="340" y="324">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="348" y="340">(EDHOC</text>
                    <text x="420" y="340">message_2)</text>
                    <text x="192" y="388">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="92" y="404">(EDHOC</text>
                    <text x="164" y="404">message_3)</text>
                    <text x="340" y="452">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="348" y="468">(EDHOC</text>
                    <text x="420" y="468">message_4)</text>
                    <text x="192" y="516">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="416" y="564">EAP-Success</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
EAP-EDHOC Peer                                   EAP-EDHOC Server

    |                                                       |
    |                                EAP-Request/Identity   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/Identity                               |
    |   (Privacy-Friendly)                                  |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                       (EDHOC Start)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    |   (EDHOC message_1)                                   |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                   (EDHOC message_2)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    |   (EDHOC message_3)                                   |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                   (EDHOC message_4)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    | ----------------------------------------------------> |
    |                                                       |
    |                                         EAP-Success   |
    | <---------------------------------------------------- |
    |                                                       |
]]></artwork>
            </artset>
          </figure>
          <t>If the EAP-EDHOC peer authenticates successfully, the EAP-EDHOC server <bcp14>MUST</bcp14> send an EAP-Request packet with EAP-Type=EAP-EDHOC containing message_4 as a protected success indication.</t>
          <t>If the EAP-EDHOC server authenticates successfully, and the EAP-EDHOC peer achieves key confirmation by successfully verifying EDHOC message_4, then the EAP-EDHOC peer <bcp14>MUST</bcp14> send an EAP-Response message with EAP-Type=EAP-EDHOC containing no data. Finally, the EAP-EDHOC server sends an EAP-Success.</t>
          <t>Note that the Identity request is optional <xref target="RFC3748"/> and might not be used in systems like 3GPP 5G <xref target="Sec5G"/> where the identity is transferred encrypted by other means before the EAP exchange. While the EAP-Response/EAP-Type=EAP-EDHOC and EAP-Success are mandatory <xref target="RFC3748"/> they do not contain any information and might be encoded into other system specific messages (e.g., <xref target="Sec5G"/>).</t>
        </section>
        <section anchor="transport-and-message-correlation">
          <name>Transport and Message Correlation</name>
          <t>EDHOC is not bound to a particular transport layer and can even be used in environments without IP. Nonetheless, <xref target="RFC9528"/> provides a set of requirements for a transport protocol to use with EDHOC. These include: handling the loss, reordering, duplication, correlation, and fragmentation of messages; demultiplexing EDHOC messages from other types of messages; and denial-of-service (DoS) protection. These requirements can be met by the EAP framework, the EAP-EDHOC method specification, and properties of the EAP lower layer, as specified in <xref target="RFC3748"/>.</t>
          <t>For message loss, this can be either fulfilled by the EAP layer, the EAP lower layer, or both.</t>
          <t>For message reordering, correct operation assumes that the EAP lower layer preserves packet ordering within an EAP conversation.</t>
          <t>For duplication and message correlation, EAP has the Identifier field, which allows both the EAP peer and EAP authenticator to detect duplicates and match a request with a response.</t>
          <t>Fragmentation is defined by this EAP method, see <xref target="fragmentation"/>. The EAP framework <xref target="RFC3748"/>, specifies that EAP methods need to provide fragmentation and reassembly if EAP packets can exceed the minimum MTU of 1020 octets.</t>
          <t>To demultiplex EDHOC messages from other types of messages, EAP provides the Type field.</t>
          <t>This method does not provide any additional mitigation against DoS attacks beyond those specified in EAP <xref target="RFC3748"/>.</t>
        </section>
        <section anchor="termination">
          <name>Termination</name>
          <t><xref target="message1-reject"/>, <xref target="message2-reject"/>, <xref target="message3-reject"/>, and <xref target="message4-reject"/> illustrate message flows in several cases where the EAP-EDHOC peer or EAP-EDHOC server sends an EDHOC error message.</t>
          <t><xref target="message1-reject"/> shows an example message flow where the EAP-EDHOC server rejects message_1 with an EDHOC error message.</t>
          <figure anchor="message1-reject">
            <name>EAP-EDHOC Server Rejection of message_1</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="528" viewBox="0 0 528 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 40,64 L 40,464" fill="none" stroke="black"/>
                  <path d="M 488,64 L 488,464" fill="none" stroke="black"/>
                  <path d="M 56,96 L 472,96" fill="none" stroke="black"/>
                  <path d="M 56,160 L 472,160" fill="none" stroke="black"/>
                  <path d="M 56,224 L 472,224" fill="none" stroke="black"/>
                  <path d="M 56,288 L 472,288" fill="none" stroke="black"/>
                  <path d="M 56,352 L 472,352" fill="none" stroke="black"/>
                  <path d="M 56,400 L 472,400" fill="none" stroke="black"/>
                  <path d="M 56,448 L 472,448" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="480,400 468,394.4 468,405.6" fill="black" transform="rotate(0,472,400)"/>
                  <polygon class="arrowhead" points="480,288 468,282.4 468,293.6" fill="black" transform="rotate(0,472,288)"/>
                  <polygon class="arrowhead" points="480,160 468,154.4 468,165.6" fill="black" transform="rotate(0,472,160)"/>
                  <polygon class="arrowhead" points="64,448 52,442.4 52,453.6" fill="black" transform="rotate(180,56,448)"/>
                  <polygon class="arrowhead" points="64,352 52,346.4 52,357.6" fill="black" transform="rotate(180,56,352)"/>
                  <polygon class="arrowhead" points="64,224 52,218.4 52,229.6" fill="black" transform="rotate(180,56,224)"/>
                  <polygon class="arrowhead" points="64,96 52,90.4 52,101.6" fill="black" transform="rotate(180,56,96)"/>
                  <g class="text">
                    <text x="40" y="36">EAP-EDHOC</text>
                    <text x="100" y="36">Peer</text>
                    <text x="432" y="36">EAP-EDHOC</text>
                    <text x="500" y="36">Server</text>
                    <text x="380" y="84">EAP-Request/Identity</text>
                    <text x="152" y="132">EAP-Response/Identity</text>
                    <text x="140" y="148">(Privacy-Friendly)</text>
                    <text x="340" y="196">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="380" y="212">(EDHOC</text>
                    <text x="436" y="212">Start)</text>
                    <text x="192" y="260">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="92" y="276">(EDHOC</text>
                    <text x="164" y="276">message_1)</text>
                    <text x="340" y="324">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="380" y="340">(EDHOC</text>
                    <text x="436" y="340">error)</text>
                    <text x="192" y="388">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="416" y="436">EAP-Failure</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
EAP-EDHOC Peer                                   EAP-EDHOC Server

    |                                                       |
    |                                EAP-Request/Identity   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/Identity                               |
    |   (Privacy-Friendly)                                  |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                       (EDHOC Start)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    |   (EDHOC message_1)                                   |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                       (EDHOC error)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    | ----------------------------------------------------> |
    |                                                       |
    |                                         EAP-Failure   |
    | <---------------------------------------------------- |
    |                                                       |
]]></artwork>
            </artset>
          </figure>
          <t><xref target="message2-reject"/> shows an example message flow where the EAP-EDHOC server authentication is unsuccessful and the EAP-EDHOC peer sends an EDHOC error message.</t>
          <figure anchor="message2-reject">
            <name>EAP-EDHOC Peer Rejection of message_2</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="496" width="528" viewBox="0 0 528 496" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 40,64 L 40,480" fill="none" stroke="black"/>
                  <path d="M 488,64 L 488,480" fill="none" stroke="black"/>
                  <path d="M 56,96 L 472,96" fill="none" stroke="black"/>
                  <path d="M 56,160 L 472,160" fill="none" stroke="black"/>
                  <path d="M 56,224 L 472,224" fill="none" stroke="black"/>
                  <path d="M 56,288 L 472,288" fill="none" stroke="black"/>
                  <path d="M 56,352 L 472,352" fill="none" stroke="black"/>
                  <path d="M 56,416 L 472,416" fill="none" stroke="black"/>
                  <path d="M 56,464 L 472,464" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="480,416 468,410.4 468,421.6" fill="black" transform="rotate(0,472,416)"/>
                  <polygon class="arrowhead" points="480,288 468,282.4 468,293.6" fill="black" transform="rotate(0,472,288)"/>
                  <polygon class="arrowhead" points="480,160 468,154.4 468,165.6" fill="black" transform="rotate(0,472,160)"/>
                  <polygon class="arrowhead" points="64,464 52,458.4 52,469.6" fill="black" transform="rotate(180,56,464)"/>
                  <polygon class="arrowhead" points="64,352 52,346.4 52,357.6" fill="black" transform="rotate(180,56,352)"/>
                  <polygon class="arrowhead" points="64,224 52,218.4 52,229.6" fill="black" transform="rotate(180,56,224)"/>
                  <polygon class="arrowhead" points="64,96 52,90.4 52,101.6" fill="black" transform="rotate(180,56,96)"/>
                  <g class="text">
                    <text x="40" y="36">EAP-EDHOC</text>
                    <text x="100" y="36">Peer</text>
                    <text x="432" y="36">EAP-EDHOC</text>
                    <text x="500" y="36">Server</text>
                    <text x="380" y="84">EAP-Request/Identity</text>
                    <text x="152" y="132">EAP-Response/Identity</text>
                    <text x="140" y="148">(Privacy-Friendly)</text>
                    <text x="340" y="196">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="380" y="212">(EDHOC</text>
                    <text x="436" y="212">Start)</text>
                    <text x="192" y="260">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="92" y="276">(EDHOC</text>
                    <text x="164" y="276">message_1)</text>
                    <text x="340" y="324">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="348" y="340">(EDHOC</text>
                    <text x="420" y="340">message_2)</text>
                    <text x="192" y="388">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="92" y="404">(EDHOC</text>
                    <text x="148" y="404">error)</text>
                    <text x="416" y="452">EAP-Failure</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
EAP-EDHOC Peer                                   EAP-EDHOC Server

    |                                                       |
    |                                EAP-Request/Identity   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/Identity                               |
    |   (Privacy-Friendly)                                  |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                       (EDHOC Start)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    |   (EDHOC message_1)                                   |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                   (EDHOC message_2)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    |   (EDHOC error)                                       |
    | ----------------------------------------------------> |
    |                                                       |
    |                                         EAP-Failure   |
    | <---------------------------------------------------- |
    |                                                       |
]]></artwork>
            </artset>
          </figure>
          <t><xref target="message3-reject"/> shows an example message flow where the EAP-EDHOC server authenticates to the EAP-EDHOC peer successfully, but the EAP-EDHOC peer fails to authenticate to the EAP-EDHOC server, and the server sends an EDHOC error message.</t>
          <t>Note that the EDHOC error message cannot be omitted. For example, with EDHOC ERR_CODE 3 "Unknown credential referenced", it is indicated that the EDHOC peer should, for the next EDHOC session, try another credential identifier supported according to the application profile.</t>
          <figure anchor="message3-reject">
            <name>EAP-EDHOC Server Rejection of message_3</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="608" width="528" viewBox="0 0 528 608" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 40,64 L 40,592" fill="none" stroke="black"/>
                  <path d="M 488,64 L 488,592" fill="none" stroke="black"/>
                  <path d="M 56,96 L 472,96" fill="none" stroke="black"/>
                  <path d="M 56,160 L 472,160" fill="none" stroke="black"/>
                  <path d="M 56,224 L 472,224" fill="none" stroke="black"/>
                  <path d="M 56,288 L 472,288" fill="none" stroke="black"/>
                  <path d="M 56,352 L 472,352" fill="none" stroke="black"/>
                  <path d="M 56,416 L 472,416" fill="none" stroke="black"/>
                  <path d="M 56,480 L 472,480" fill="none" stroke="black"/>
                  <path d="M 56,528 L 472,528" fill="none" stroke="black"/>
                  <path d="M 56,576 L 472,576" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="480,528 468,522.4 468,533.6" fill="black" transform="rotate(0,472,528)"/>
                  <polygon class="arrowhead" points="480,416 468,410.4 468,421.6" fill="black" transform="rotate(0,472,416)"/>
                  <polygon class="arrowhead" points="480,288 468,282.4 468,293.6" fill="black" transform="rotate(0,472,288)"/>
                  <polygon class="arrowhead" points="480,160 468,154.4 468,165.6" fill="black" transform="rotate(0,472,160)"/>
                  <polygon class="arrowhead" points="64,576 52,570.4 52,581.6" fill="black" transform="rotate(180,56,576)"/>
                  <polygon class="arrowhead" points="64,480 52,474.4 52,485.6" fill="black" transform="rotate(180,56,480)"/>
                  <polygon class="arrowhead" points="64,352 52,346.4 52,357.6" fill="black" transform="rotate(180,56,352)"/>
                  <polygon class="arrowhead" points="64,224 52,218.4 52,229.6" fill="black" transform="rotate(180,56,224)"/>
                  <polygon class="arrowhead" points="64,96 52,90.4 52,101.6" fill="black" transform="rotate(180,56,96)"/>
                  <g class="text">
                    <text x="40" y="36">EAP-EDHOC</text>
                    <text x="100" y="36">Peer</text>
                    <text x="432" y="36">EAP-EDHOC</text>
                    <text x="500" y="36">Server</text>
                    <text x="380" y="84">EAP-Request/Identity</text>
                    <text x="152" y="132">EAP-Response/Identity</text>
                    <text x="140" y="148">(Privacy-Friendly)</text>
                    <text x="340" y="196">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="380" y="212">(EDHOC</text>
                    <text x="436" y="212">Start)</text>
                    <text x="192" y="260">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="92" y="276">(EDHOC</text>
                    <text x="164" y="276">message_1)</text>
                    <text x="340" y="324">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="348" y="340">(EDHOC</text>
                    <text x="420" y="340">message_2)</text>
                    <text x="192" y="388">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="92" y="404">(EDHOC</text>
                    <text x="164" y="404">message_3)</text>
                    <text x="340" y="452">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="380" y="468">(EDHOC</text>
                    <text x="436" y="468">error)</text>
                    <text x="192" y="516">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="416" y="564">EAP-Failure</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
EAP-EDHOC Peer                                   EAP-EDHOC Server

    |                                                       |
    |                                EAP-Request/Identity   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/Identity                               |
    |   (Privacy-Friendly)                                  |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                       (EDHOC Start)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    |   (EDHOC message_1)                                   |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                   (EDHOC message_2)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    |   (EDHOC message_3)                                   |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                       (EDHOC error)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    | ----------------------------------------------------> |
    |                                                       |
    |                                         EAP-Failure   |
    | <---------------------------------------------------- |
    |                                                       |
]]></artwork>
            </artset>
          </figure>
          <t><xref target="message4-reject"/> shows an example message flow where the EAP-EDHOC server sends the EDHOC message_4 to the EAP peer, but the protected success indication fails, and the peer sends an EDHOC error message.</t>
          <figure anchor="message4-reject">
            <name>EAP-EDHOC Peer Rejection of message_4</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="624" width="528" viewBox="0 0 528 624" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 40,64 L 40,608" fill="none" stroke="black"/>
                  <path d="M 488,64 L 488,608" fill="none" stroke="black"/>
                  <path d="M 56,96 L 472,96" fill="none" stroke="black"/>
                  <path d="M 56,160 L 472,160" fill="none" stroke="black"/>
                  <path d="M 56,224 L 472,224" fill="none" stroke="black"/>
                  <path d="M 56,288 L 472,288" fill="none" stroke="black"/>
                  <path d="M 56,352 L 472,352" fill="none" stroke="black"/>
                  <path d="M 56,416 L 472,416" fill="none" stroke="black"/>
                  <path d="M 56,480 L 464,480" fill="none" stroke="black"/>
                  <path d="M 56,544 L 472,544" fill="none" stroke="black"/>
                  <path d="M 56,592 L 472,592" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="480,544 468,538.4 468,549.6" fill="black" transform="rotate(0,472,544)"/>
                  <polygon class="arrowhead" points="480,416 468,410.4 468,421.6" fill="black" transform="rotate(0,472,416)"/>
                  <polygon class="arrowhead" points="480,288 468,282.4 468,293.6" fill="black" transform="rotate(0,472,288)"/>
                  <polygon class="arrowhead" points="480,160 468,154.4 468,165.6" fill="black" transform="rotate(0,472,160)"/>
                  <polygon class="arrowhead" points="64,592 52,586.4 52,597.6" fill="black" transform="rotate(180,56,592)"/>
                  <polygon class="arrowhead" points="64,480 52,474.4 52,485.6" fill="black" transform="rotate(180,56,480)"/>
                  <polygon class="arrowhead" points="64,352 52,346.4 52,357.6" fill="black" transform="rotate(180,56,352)"/>
                  <polygon class="arrowhead" points="64,224 52,218.4 52,229.6" fill="black" transform="rotate(180,56,224)"/>
                  <polygon class="arrowhead" points="64,96 52,90.4 52,101.6" fill="black" transform="rotate(180,56,96)"/>
                  <g class="text">
                    <text x="40" y="36">EAP-EDHOC</text>
                    <text x="100" y="36">Peer</text>
                    <text x="432" y="36">EAP-EDHOC</text>
                    <text x="500" y="36">Server</text>
                    <text x="380" y="84">EAP-Request/Identity</text>
                    <text x="152" y="132">EAP-Response/Identity</text>
                    <text x="140" y="148">(Privacy-Friendly)</text>
                    <text x="340" y="196">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="380" y="212">(EDHOC</text>
                    <text x="436" y="212">Start)</text>
                    <text x="192" y="260">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="92" y="276">(EDHOC</text>
                    <text x="164" y="276">message_1)</text>
                    <text x="340" y="324">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="348" y="340">(EDHOC</text>
                    <text x="420" y="340">message_2)</text>
                    <text x="192" y="388">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="92" y="404">(EDHOC</text>
                    <text x="164" y="404">message_3)</text>
                    <text x="340" y="452">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="348" y="468">(EDHOC</text>
                    <text x="420" y="468">message_4)</text>
                    <text x="192" y="516">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="92" y="532">(EDHOC</text>
                    <text x="148" y="532">error)</text>
                    <text x="416" y="580">EAP-Failure</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
EAP-EDHOC Peer                                   EAP-EDHOC Server

    |                                                       |
    |                                EAP-Request/Identity   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/Identity                               |
    |   (Privacy-Friendly)                                  |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                       (EDHOC Start)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    |   (EDHOC message_1)                                   |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                   (EDHOC message_2)   |
    | <---------------------------------------------------- |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    |   (EDHOC message_3)                                   |
    | ----------------------------------------------------> |
    |                                                       |
    |                      EAP-Request/EAP-Type=EAP-EDHOC   |
    |                                   (EDHOC message_4)   |
    | <---------------------------------------------------  |
    |                                                       |
    |   EAP-Response/EAP-Type=EAP-EDHOC                     |
    |   (EDHOC error)                                       |
    | ----------------------------------------------------> |
    |                                                       |
    |                                         EAP-Failure   |
    | <---------------------------------------------------- |
    |                                                       |
]]></artwork>
            </artset>
          </figure>
        </section>
        <section anchor="identity">
          <name>Identity</name>
          <t>It is <bcp14>RECOMMENDED</bcp14> to use anonymous Network Access Identifiers (NAIs) <xref target="RFC7542"/> in the Identity Response, as such identities are routable and privacy-friendly.</t>
          <t>While opaque blobs are allowed by <xref target="RFC3748"/>, such identities are <bcp14>NOT RECOMMENDED</bcp14> as they are not routable and should only be considered in local deployments where the EAP-EDHOC peer, EAP authenticator, and EAP-EDHOC server all belong to the same network.</t>
          <t>Many client certificates contain an identity such as an email address, which is already in NAI format. When the certificate contains a NAI as subject name or alternative subject name, an anonymous NAI <bcp14>MUST</bcp14> be derived from the NAI in the certificate to preserve privacy. See <xref target="privacy"/>.</t>
        </section>
        <section anchor="privacy">
          <name>Privacy</name>
          <t>EAP-EDHOC peer and server implementations supporting EAP-EDHOC <bcp14>MUST</bcp14> support anonymous NAIs (<xref section="2.4" sectionFormat="of" target="RFC7542"/>).
A node supporting EAP-EDHOC <bcp14>MUST NOT</bcp14> send its username (or any other permanent identifiers) in cleartext in the Identity Response (or any message used instead of the Identity Response). Following <xref target="RFC7542"/>, it is <bcp14>RECOMMENDED</bcp14> to omit the username (i.e., the NAI is @realm), but other constructions such as a fixed username (e.g., anonymous@realm) or an encrypted username (e.g., xCZINCPTK5+7y81CrSYbPg+RKPE3OTrYLn4AQc4AC2U=@realm) are allowed. Note that the NAI <bcp14>MUST</bcp14> be a UTF-8 string as defined by the grammar in <xref section="2.2" sectionFormat="of" target="RFC7542"/>.</t>
        </section>
        <section anchor="fragmentation">
          <name>Fragmentation</name>
          <t>EDHOC is designed to perform well in constrained networks where message sizes are restricted for performance reasons. When credentials are transferred by reference, EAP-EDHOC messages are typically so small that fragmentation is not needed. However, as EAP-EDHOC also supports large X.509 certificate chains, EAP-EDHOC implementations <bcp14>MUST</bcp14> provide support for fragmentation and reassembly. Some EAP implementations and access networks impose limits on the number of EAP packet exchanges that can be processed. To minimize fragmentation, it is <bcp14>RECOMMENDED</bcp14> to use compact EAP-EDHOC peer, EAP-EDHOC server, and trust anchor authentication credentials, as well as to limit the length of certificate chains. Additionally, mechanisms that reduce the size of Certificate messages are <bcp14>RECOMMENDED</bcp14>.</t>
          <t>Since EAP is a lock-step protocol, fragmentation support can be easily added. To do so, the EAP-Response and EAP-Request packets of EAP-EDHOC have a set of information fields that allow for the specification of the fragmentation process (see <xref target="detailed-description"/> for the detailed description). As a summary, EAP-EDHOC fragmentation support is provided through the addition of flag bits (M and L) within the EAP-Response and EAP-Request packets, as well as a (conditional) EAP-EDHOC Message Length field that can be zero to four octets.</t>
          <t>The EDHOC Message Length field conveys the total length of the EDHOC message being fragmented, which facilitates buffer allocation. The L flag consists of three bits that determine the length of the EDHOC Message Length field. This L flag and the EAP-EDHOC Message Length field <bcp14>MUST</bcp14> be present only in the first fragment of a fragmented EDHOC message, thereby signaling that the EDHOC message is fragmented. Implementations <bcp14>MUST NOT</bcp14> set any of the L flag bits to 1 in unfragmented messages.</t>
          <t>The S flag bit <bcp14>SHALL</bcp14> be set to 1 in the EAP-EDHOC Start message sent by the EAP server to the peer. The S flag bit <bcp14>SHALL NOT</bcp14> be set to 1 in any other EAP-EDHOC messages. The M flag bit <bcp14>SHALL</bcp14> be set to 1 in all fragments except the last one.</t>
          <t>When an EAP-EDHOC peer receives an EAP-Request packet with the M bit set to 1, it <bcp14>MUST</bcp14> respond with an EAP-Response packet with EAP-Type=EAP-EDHOC, including the flags octect with S=0, M=0, L=0 and an empty EDHOC payload. This message serves as a fragment ACK. The EAP server <bcp14>MUST</bcp14> wait until it receives the EAP-Response before sending another fragment. To prevent errors in the processing of fragments, the EAP server <bcp14>MUST</bcp14> increment the Identifier field for each fragment contained within an EAP-Request, and the peer <bcp14>MUST</bcp14> include this Identifier value in the fragment ACK contained within the EAP-Response. Retransmitted fragments will contain the same Identifier value.</t>
          <t>Similarly, when the EAP-EDHOC server receives an EAP-Response with the M bit set to 1, it <bcp14>MUST</bcp14> respond with an EAP-Request packet with EAP-Type=EAP-EDHOC, including the flags octect with S=0, M=0, L=0 and an empty EDHOC payload. This message serves as a fragment ACK. The EAP peer <bcp14>MUST</bcp14> wait until it receives the EAP-Request before sending another fragment. To prevent errors in the processing of fragments, the EAP server <bcp14>MUST</bcp14> increment the Identifier value for each fragment ACK contained within an EAP-Request, and the peer <bcp14>MUST</bcp14> include this Identifier value in the subsequent fragment contained within an EAP-Response.</t>
          <t>Explanations and considerations regarding retransmission timers are provided in <xref target="RFC4137"/>.</t>
          <t><xref target="fragmentation-flow"/> illustrates the exchange between the endpoints in the case where the EAP-EDHOC mutual authentication is successful and fragmentation is required. EAP Identifiers are also shown to illustrate their progression. A retransmission is also included.</t>
          <figure anchor="fragmentation-flow">
            <name>EAP-EDHOC Fragmentation Example</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1120" width="528" viewBox="0 0 528 1120" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 40,64 L 40,1104" fill="none" stroke="black"/>
                  <path d="M 504,64 L 504,1104" fill="none" stroke="black"/>
                  <path d="M 56,96 L 488,96" fill="none" stroke="black"/>
                  <path d="M 56,160 L 488,160" fill="none" stroke="black"/>
                  <path d="M 56,224 L 488,224" fill="none" stroke="black"/>
                  <path d="M 56,288 L 488,288" fill="none" stroke="black"/>
                  <path d="M 56,352 L 488,352" fill="none" stroke="black"/>
                  <path d="M 56,400 L 488,400" fill="none" stroke="black"/>
                  <path d="M 56,464 L 488,464" fill="none" stroke="black"/>
                  <path d="M 56,512 L 488,512" fill="none" stroke="black"/>
                  <path d="M 56,576 L 488,576" fill="none" stroke="black"/>
                  <path d="M 56,640 L 488,640" fill="none" stroke="black"/>
                  <path d="M 280,688 L 488,688" fill="none" stroke="black"/>
                  <path d="M 56,752 L 488,752" fill="none" stroke="black"/>
                  <path d="M 56,816 L 488,816" fill="none" stroke="black"/>
                  <path d="M 56,864 L 488,864" fill="none" stroke="black"/>
                  <path d="M 56,928 L 488,928" fill="none" stroke="black"/>
                  <path d="M 56,992 L 488,992" fill="none" stroke="black"/>
                  <path d="M 56,1040 L 488,1040" fill="none" stroke="black"/>
                  <path d="M 56,1088 L 488,1088" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="496,1040 484,1034.4 484,1045.6" fill="black" transform="rotate(0,488,1040)"/>
                  <polygon class="arrowhead" points="496,928 484,922.4 484,933.6" fill="black" transform="rotate(0,488,928)"/>
                  <polygon class="arrowhead" points="496,816 484,810.4 484,821.6" fill="black" transform="rotate(0,488,816)"/>
                  <polygon class="arrowhead" points="496,640 484,634.4 484,645.6" fill="black" transform="rotate(0,488,640)"/>
                  <polygon class="arrowhead" points="496,512 484,506.4 484,517.6" fill="black" transform="rotate(0,488,512)"/>
                  <polygon class="arrowhead" points="496,400 484,394.4 484,405.6" fill="black" transform="rotate(0,488,400)"/>
                  <polygon class="arrowhead" points="496,288 484,282.4 484,293.6" fill="black" transform="rotate(0,488,288)"/>
                  <polygon class="arrowhead" points="496,160 484,154.4 484,165.6" fill="black" transform="rotate(0,488,160)"/>
                  <polygon class="arrowhead" points="64,1088 52,1082.4 52,1093.6" fill="black" transform="rotate(180,56,1088)"/>
                  <polygon class="arrowhead" points="64,992 52,986.4 52,997.6" fill="black" transform="rotate(180,56,992)"/>
                  <polygon class="arrowhead" points="64,864 52,858.4 52,869.6" fill="black" transform="rotate(180,56,864)"/>
                  <polygon class="arrowhead" points="64,752 52,746.4 52,757.6" fill="black" transform="rotate(180,56,752)"/>
                  <polygon class="arrowhead" points="64,576 52,570.4 52,581.6" fill="black" transform="rotate(180,56,576)"/>
                  <polygon class="arrowhead" points="64,464 52,458.4 52,469.6" fill="black" transform="rotate(180,56,464)"/>
                  <polygon class="arrowhead" points="64,352 52,346.4 52,357.6" fill="black" transform="rotate(180,56,352)"/>
                  <polygon class="arrowhead" points="64,224 52,218.4 52,229.6" fill="black" transform="rotate(180,56,224)"/>
                  <polygon class="arrowhead" points="64,96 52,90.4 52,101.6" fill="black" transform="rotate(180,56,96)"/>
                  <g class="text">
                    <text x="40" y="36">EAP-EDHOC</text>
                    <text x="100" y="36">Peer</text>
                    <text x="432" y="36">EAP-EDHOC</text>
                    <text x="500" y="36">Server</text>
                    <text x="284" y="84">EAP-Request/Identity</text>
                    <text x="404" y="84">(EAP-ID:</text>
                    <text x="460" y="84">0x0)</text>
                    <text x="152" y="132">EAP-Response/Identity</text>
                    <text x="276" y="132">(EAP-ID:</text>
                    <text x="332" y="132">0x0)</text>
                    <text x="140" y="148">(Privacy-Friendly)</text>
                    <text x="244" y="196">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="404" y="196">(EAP-ID:</text>
                    <text x="460" y="196">0x1)</text>
                    <text x="308" y="212">(EDHOC</text>
                    <text x="364" y="212">Start,</text>
                    <text x="400" y="212">S</text>
                    <text x="424" y="212">bit</text>
                    <text x="448" y="212">=</text>
                    <text x="468" y="212">1)</text>
                    <text x="192" y="260">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="356" y="260">(EAP-ID:</text>
                    <text x="412" y="260">0x1)</text>
                    <text x="92" y="276">(EDHOC</text>
                    <text x="164" y="276">message_1)</text>
                    <text x="244" y="324">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="404" y="324">(EAP-ID:</text>
                    <text x="460" y="324">0x2)</text>
                    <text x="76" y="340">(EDHOC</text>
                    <text x="148" y="340">message_2,</text>
                    <text x="228" y="340">Fragment</text>
                    <text x="276" y="340">1,</text>
                    <text x="296" y="340">L</text>
                    <text x="324" y="340">bits</text>
                    <text x="356" y="340">!=</text>
                    <text x="380" y="340">0,</text>
                    <text x="400" y="340">M</text>
                    <text x="424" y="340">bit</text>
                    <text x="448" y="340">=</text>
                    <text x="468" y="340">1)</text>
                    <text x="192" y="388">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="356" y="388">(EAP-ID:</text>
                    <text x="412" y="388">0x2)</text>
                    <text x="244" y="436">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="404" y="436">(EAP-ID:</text>
                    <text x="460" y="436">0x3)</text>
                    <text x="180" y="452">(EDHOC</text>
                    <text x="252" y="452">message_2,</text>
                    <text x="332" y="452">Fragment</text>
                    <text x="380" y="452">2,</text>
                    <text x="400" y="452">M</text>
                    <text x="424" y="452">bit</text>
                    <text x="448" y="452">=</text>
                    <text x="468" y="452">1)</text>
                    <text x="192" y="500">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="356" y="500">(EAP-ID:</text>
                    <text x="412" y="500">0x3)</text>
                    <text x="244" y="548">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="404" y="548">(EAP-ID:</text>
                    <text x="460" y="548">0x4)</text>
                    <text x="268" y="564">(EDHOC</text>
                    <text x="340" y="564">message_2,</text>
                    <text x="420" y="564">Fragment</text>
                    <text x="468" y="564">3)</text>
                    <text x="192" y="612">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="356" y="612">(EAP-ID:</text>
                    <text x="412" y="612">0x4)</text>
                    <text x="92" y="628">(EDHOC</text>
                    <text x="164" y="628">message_3,</text>
                    <text x="244" y="628">Fragment</text>
                    <text x="292" y="628">1,</text>
                    <text x="312" y="628">L</text>
                    <text x="340" y="628">bits</text>
                    <text x="372" y="628">!=</text>
                    <text x="396" y="628">0,</text>
                    <text x="416" y="628">M</text>
                    <text x="440" y="628">bit</text>
                    <text x="464" y="628">=</text>
                    <text x="484" y="628">1)</text>
                    <text x="244" y="676">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="404" y="676">(EAP-ID:</text>
                    <text x="460" y="676">0x5)</text>
                    <text x="272" y="692">X</text>
                    <text x="244" y="724">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="404" y="724">(EAP-ID:</text>
                    <text x="460" y="724">0x5)</text>
                    <text x="412" y="740">(Retransmission)</text>
                    <text x="192" y="788">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="356" y="788">(EAP-ID:</text>
                    <text x="412" y="788">0x5)</text>
                    <text x="92" y="804">(EDHOC</text>
                    <text x="164" y="804">message_3,</text>
                    <text x="244" y="804">Fragment</text>
                    <text x="292" y="804">2,</text>
                    <text x="312" y="804">M</text>
                    <text x="336" y="804">bit</text>
                    <text x="360" y="804">=</text>
                    <text x="380" y="804">1)</text>
                    <text x="244" y="852">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="404" y="852">(EAP-ID:</text>
                    <text x="460" y="852">0x6)</text>
                    <text x="192" y="900">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="356" y="900">(EAP-ID:</text>
                    <text x="412" y="900">0x6)</text>
                    <text x="92" y="916">(EDHOC</text>
                    <text x="164" y="916">message_3,</text>
                    <text x="244" y="916">Fragment</text>
                    <text x="292" y="916">3)</text>
                    <text x="244" y="964">EAP-Request/EAP-Type=EAP-EDHOC</text>
                    <text x="404" y="964">(EAP-ID:</text>
                    <text x="460" y="964">0x7)</text>
                    <text x="364" y="980">(EDHOC</text>
                    <text x="436" y="980">message_4)</text>
                    <text x="192" y="1028">EAP-Response/EAP-Type=EAP-EDHOC</text>
                    <text x="356" y="1028">(EAP-ID:</text>
                    <text x="412" y="1028">0x7)</text>
                    <text x="320" y="1076">EAP-Success</text>
                    <text x="404" y="1076">(EAP-ID:</text>
                    <text x="460" y="1076">0x7)</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
EAP-EDHOC Peer                                   EAP-EDHOC Server

    |                                                         |
    |                    EAP-Request/Identity (EAP-ID: 0x0)   |
    | <------------------------------------------------------ |
    |                                                         |
    |   EAP-Response/Identity (EAP-ID: 0x0)                   |
    |   (Privacy-Friendly)                                    |
    | ------------------------------------------------------> |
    |                                                         |
    |          EAP-Request/EAP-Type=EAP-EDHOC (EAP-ID: 0x1)   |
    |                              (EDHOC Start, S bit = 1)   |
    | <------------------------------------------------------ |
    |                                                         |
    |   EAP-Response/EAP-Type=EAP-EDHOC (EAP-ID: 0x1)         |
    |   (EDHOC message_1)                                     |
    | ------------------------------------------------------> |
    |                                                         |
    |          EAP-Request/EAP-Type=EAP-EDHOC (EAP-ID: 0x2)   |
    | (EDHOC message_2, Fragment 1, L bits != 0, M bit = 1)   |
    | <------------------------------------------------------ |
    |                                                         |
    |   EAP-Response/EAP-Type=EAP-EDHOC (EAP-ID: 0x2)         |
    | ------------------------------------------------------> |
    |                                                         |
    |          EAP-Request/EAP-Type=EAP-EDHOC (EAP-ID: 0x3)   |
    |              (EDHOC message_2, Fragment 2, M bit = 1)   |
    | <------------------------------------------------------ |
    |                                                         |
    |   EAP-Response/EAP-Type=EAP-EDHOC (EAP-ID: 0x3)         |
    | ------------------------------------------------------> |
    |                                                         |
    |          EAP-Request/EAP-Type=EAP-EDHOC (EAP-ID: 0x4)   |
    |                         (EDHOC message_2, Fragment 3)   |
    | <------------------------------------------------------ |
    |                                                         |
    |   EAP-Response/EAP-Type=EAP-EDHOC (EAP-ID: 0x4)         |
    |   (EDHOC message_3, Fragment 1, L bits != 0, M bit = 1) |
    | ------------------------------------------------------> |
    |                                                         |
    |          EAP-Request/EAP-Type=EAP-EDHOC (EAP-ID: 0x5)   |
    |                            X--------------------------- |
    |                                                         |
    |          EAP-Request/EAP-Type=EAP-EDHOC (EAP-ID: 0x5)   |
    |                                      (Retransmission)   |
    | <------------------------------------------------------ |
    |                                                         |
    |   EAP-Response/EAP-Type=EAP-EDHOC (EAP-ID: 0x5)         |
    |   (EDHOC message_3, Fragment 2, M bit = 1)              |
    | ------------------------------------------------------> |
    |                                                         |
    |          EAP-Request/EAP-Type=EAP-EDHOC (EAP-ID: 0x6)   |
    | <------------------------------------------------------ |
    |                                                         |
    |   EAP-Response/EAP-Type=EAP-EDHOC (EAP-ID: 0x6)         |
    |   (EDHOC message_3, Fragment 3)                         |
    | ------------------------------------------------------> |
    |                                                         |
    |          EAP-Request/EAP-Type=EAP-EDHOC (EAP-ID: 0x7)   |
    |                                     (EDHOC message_4)   |
    | <------------------------------------------------------ |
    |                                                         |
    |   EAP-Response/EAP-Type=EAP-EDHOC (EAP-ID: 0x7)         |
    | ------------------------------------------------------> |
    |                                                         |
    |                             EAP-Success (EAP-ID: 0x7)   |
    | <------------------------------------------------------ |
    |                                                         |
]]></artwork>
            </artset>
          </figure>
        </section>
      </section>
      <section anchor="identity-verification">
        <name>Identity Verification</name>
        <t>The EAP peer identity provided in the EAP-Response/Identity is not authenticated by EAP-EDHOC. Unauthenticated information <bcp14>MUST NOT</bcp14> be used for accounting purposes or to give authorization. The EAP authenticator and the EAP server <bcp14>MAY</bcp14> examine the identity presented in EAP-Response/Identity for purposes such as routing and EAP method selection. EAP-EDHOC servers <bcp14>MAY</bcp14> reject conversations if the identity does not match their policy.</t>
        <t>The EAP server identity in the EDHOC server certificate is typically a Fully Qualified Domain Name (FQDN) in the SubjectAltName (SAN) extension. Since EAP-EDHOC deployments may use more than one EAP server, each with a different certificate, EAP peer implementations <bcp14>SHOULD</bcp14> allow for the configuration of one or more trusted root certificates (CA certificate) to authenticate the server certificate and one or more server names to match against the SubjectAltName (SAN) extension in the server certificate. If any of the configured names match any of the names in the SAN extension, then the name check passes. To simplify name matching, an EAP-EDHOC deployment can assign a designated name to represent an authorized EAP server. This name can then be included in the SANs list of each certificate used by this EAP-EDHOC server. If server name matching is not used, the EAP peer has reduced assurance that the EAP server it is interacting with is authoritative for the given network. If name matching is not used with a trusted root CA, then effectively any server can obtain a certificate that will be trusted for EAP authentication by the peer.</t>
        <t>The process of configuring a root CA certificate and a server name is non-trivial; therefore, automated methods of provisioning are <bcp14>RECOMMENDED</bcp14>. For example, the eduroam federation <xref target="RFC7593"/> provides a Configuration Assistant Tool (CAT) to automate the configuration process. In the absence of a trusted root CA certificate (user-configured or system-wide), EAP peers <bcp14>MAY</bcp14> implement a Trust On First Use (TOFU) mechanism where the peer trusts and stores the server certificate during the first connection attempt. The EAP peer ensures that the server presents the same stored certificate on subsequent interactions. The use of a TOFU mechanism does not allow for the server certificate to change without out-of-band validation of the certificate and is therefore not suitable for many deployments including ones where multiple EAP servers are deployed for high availability. TOFU mechanisms increase the susceptibility to traffic interception attacks and should only be used if there are adequate controls in place to mitigate this risk.</t>
        <t>As an alternative to standard certificate validation, EDHOC extensions such as the Lightweight Authorization mechanism defined in <xref target="I-D.ietf-lake-authz"/> can provide additional means of verifying server credentials. Such mechanisms may be suitable in deployments where no prior trust relationship exists or where managing trusted root CAs is impractical.</t>
      </section>
      <section anchor="Key_Hierarchy">
        <name>Key Hierarchy</name>
        <t>The key derivation for EDHOC is described in <xref section="4" sectionFormat="of" target="RFC9528"/>. The key material and Method-Id <bcp14>SHALL</bcp14> be derived from the PRK_exporter using the EDHOC_Exporter interface, see <xref section="4.2.1" sectionFormat="of" target="RFC9528"/>.</t>
        <t>Type is the value of the EAP Type field defined in <xref section="2" sectionFormat="of" target="RFC3748"/>. For EAP-EDHOC, Type has the value TBD1. The &lt;&lt; &gt;&gt; notation defined in Appendix G.3 of <xref target="RFC8610"/> means that the CBOR-encoded integer Type value is embedded in a CBOR byte string. The use of Type as context enables the reuse of exporter labels across other future EAP methods based on EDHOC.</t>
        <artwork><![CDATA[
Type        =  TBD1
MSK         =  EDHOC_Exporter(TBD2, << Type >>, 64)
EMSK        =  EDHOC_Exporter(TBD3, << Type >>, 64)
Method-Id   =  EDHOC_Exporter(TBD4, << Type >>, 64)
Session-Id  =  Type || Method-Id
Peer-Id     =  ID_CRED_I
Server-Id   =  ID_CRED_R
]]></artwork>
        <t>EAP-EDHOC exports the MSK and the EMSK and does not specify how it is used by lower layers.</t>
      </section>
      <section anchor="parameter-negotiation-and-compliance-requirements">
        <name>Parameter Negotiation and Compliance Requirements</name>
        <t>The EAP-EDHOC peers and EAP-EDHOC servers <bcp14>MUST</bcp14> comply with the requirements defined in <xref section="8" sectionFormat="of" target="RFC9528"/>, including mandatory-to-implement cipher suites, signature algorithms, key exchange algorithms, and extensions.</t>
      </section>
      <section anchor="eap-state-machines">
        <name>EAP State Machines</name>
        <t>It is worth remembering that the EAP state machine is defined in <xref target="RFC4137"/>. However, the following considerations apply to EAP-EDHOC.</t>
        <t>The EAP-EDHOC server sends message_4 in an EAP-Request as a protected success result indication.</t>
        <t>Because EDHOC error messages are unauthenticated, they <bcp14>MUST NOT</bcp14> be relied upon to determine the cause of failure; they only indicate that the exchange did not complete and are vulnerable to injection by an attacker (DoS). However, EDHOC error messages <bcp14>MUST</bcp14> be considered failure result indication, as defined in <xref target="RFC3748"/>. After sending or receiving an EDHOC error message, the EAP-EDHOC server may only send an EAP-Failure.</t>
        <t>The keying material can be derived by the Initiator upon receiving EDHOC message_2, and by the Responder upon receiving EDHOC message_3. Implementations following <xref target="RFC4137"/> can then populate the eapKeyData and aaaEapKeyData variables with the derived keying material.</t>
        <t>The keying material can be made available to lower layers and the EAP authenticator after the protected success indication (EDHOC message_4) has been sent or received. Implementations following <xref target="RFC4137"/> can set the eapKeyAvailable and aaaEapKeyAvailable variables to TRUE.</t>
      </section>
      <section anchor="Channel_Binding">
        <name>EAP Channel Binding</name>
        <t>EAP-EDHOC allows the secure exchange of information between the endpoints of the authentication process (i.e., the EAP peer and the EAP server) using protected data fields. These fields can be used to exchange EAP channel binding information, as defined in <xref target="RFC6677"/>.</t>
        <t><xref section="6" sectionFormat="of" target="RFC6677"/> outlines requirements for components implementing channel binding information, all of which are satisfied by EAP-EDHOC, including confidentiality and integrity protection. Additionally, EAP-EDHOC supports fragmentation, allowing the inclusion of additional information at the method level without issues.</t>
        <t>While the EAD_1 and EAD_2 fields (carried in EDHOC message_1 and EDHOC message_2, respectively) are integrity protected through the transcript hash, the channel binding protocol defined in <xref target="RFC6677"/> must be transported after keying material has been derived between the endpoints in the EAP communication and before the peer is exposed to potential adverse effects from joining an adversarial network. Therefore, compliance with <xref target="RFC6677"/> requires use of the EAD_3 and EAD_4 fields, transmitted in EDHOC message_3 and EDHOC message_4, respectively.</t>
        <t>It is important to note that EAD fields in EDHOC are optional; consequently, the inclusion of EAP Channel Binding information in an authentication exchange is also optional.</t>
        <t>Accordingly, this document specifies a new EAD item, with ead_label = TBD5, to incorporate EAP channel binding information into the EAD fields of the EAP-EDHOC messages. See the definition in <xref target="iana-ead"/>. This new EAD item is intended only for EAD_3 and EAD_4. Then, it <bcp14>MUST</bcp14> be ignored if included in other EAD fields. Multiple occurrences of this new EAD item in one EAD field are NOT allowed.</t>
        <ul empty="true">
          <li>
            <t><strong>Implementation Note:</strong>
This document defines only the container for carrying EAP Channel Binding information within EAP-EDHOC messages, using the EAD_3 and EAD_4 fields. The format and semantics of the channel binding content are application-specific and are determined by the authentication domain in which the protocol is deployed.</t>
          </li>
        </ul>
        <t>If the server detects a consistency error in the channel binding information contained in EAD_3, it <bcp14>MUST</bcp14> send an EDHOC error message, as specified in <xref target="RFC9528"/>, since the new EAD item defined to carry EAP Channel Binding information is critical. In this case, the exchange proceeds according to <xref target="message3-reject"/>.</t>
        <t>Similarly, if the Initiator detects an error in the channel binding information contained in EAD_4, it <bcp14>MUST</bcp14> send an EDHOC error message, and the exchange proceeds according to <xref target="message4-reject"/>.</t>
      </section>
    </section>
    <section anchor="detailed-description">
      <name>Detailed Description of the EAP-EDHOC Request and Response Protocol</name>
      <t>The EAP-EDHOC packet format for Requests and Responses is summarized in <xref target="packet"/>. Fields are transmitted from left to right, following a structure inspired by the EAP-TLS packet format <xref target="RFC5216"/>. As specified in <xref section="4.1" sectionFormat="of" target="RFC3748"/>, EAP Request and Response packets consist of Code, Identifier, Length, Type, and Type-Data fields. The functions of the Code, Identifier, Length, and Type fields are reiterated here for convenience. The EAP Type-Data field consists of the R, S, M, L, EDHOC Message Length, and EDHOC Data fields.</t>
      <figure anchor="packet">
        <name>EAP-EDHOC Request and Response Packet Format</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="528" viewBox="0 0 528 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
              <path d="M 136,64 L 136,128" fill="none" stroke="black"/>
              <path d="M 184,96 L 184,128" fill="none" stroke="black"/>
              <path d="M 200,96 L 200,128" fill="none" stroke="black"/>
              <path d="M 216,96 L 216,128" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,128" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="68" y="84">Code</text>
                <text x="204" y="84">Identifier</text>
                <text x="388" y="84">Length</text>
                <text x="68" y="116">Type</text>
                <text x="160" y="116">R</text>
                <text x="192" y="116">S</text>
                <text x="208" y="116">M</text>
                <text x="240" y="116">L</text>
                <text x="336" y="116">EDHOC</text>
                <text x="392" y="116">Message</text>
                <text x="452" y="116">Length</text>
                <text x="520" y="116">~</text>
                <text x="240" y="148">EDHOC</text>
                <text x="284" y="148">Data</text>
                <text x="520" y="148">~</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code      |   Identifier  |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |  R  |S|M|  L  |      EDHOC Message Length     ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          EDHOC Data                           ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </artset>
      </figure>
      <section anchor="eap-edhoc-request-packet">
        <name>EAP-EDHOC Request Packet</name>
        <dl>
          <dt>Code:</dt>
          <dd>
            <t>1 (Request)</t>
          </dd>
          <dt>Identifier:</dt>
          <dd>
            <t>The Identifier field is one octet and aids in matching responses with requests. The Identifier field <bcp14>MUST</bcp14> be changed on each new (non-retransmission) Request packet, and <bcp14>MUST</bcp14> be the same if a Request packet is retransmitted due to a timeout while waiting for a Response. In the case of fragmented messages, the Identifier will follow the indications of <xref target="fragmentation"/>.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>The Length field is two octets and indicates the length in octets of the EAP packet including the Code, Identifier, Length, Type, and Data fields. Octets outside the range of the Length field should be treated as Data Link Layer padding and <bcp14>MUST</bcp14> be ignored on reception.</t>
          </dd>
          <dt>Type:</dt>
          <dd>
            <t>TBD1 (EAP-EDHOC)</t>
          </dd>
          <dt>R:</dt>
          <dd>
            <t>Implementations of this specification <bcp14>MUST</bcp14> set the R bits (reserved) to 0 and <bcp14>MUST</bcp14> ignore them on reception.</t>
          </dd>
          <dt>S:</dt>
          <dd>
            <t>The S bit (EAP-EDHOC start) is set to 1 in an EAP-EDHOC Start message. This differentiates the EAP-EDHOC Start message from a fragment acknowledgement.</t>
          </dd>
          <dt>M:</dt>
          <dd>
            <t>The M bit (more fragments) is set to 1 in all but the last fragment. I.e., when there is no fragmentation, it is set to 0.</t>
          </dd>
          <dt>L:</dt>
          <dd>
            <t>The L flag bits represent the binary encoding of the size of the EDHOC Message Length, which can range from 0 to 4 bytes. When all three bits are set to 0, the EDHOC Message Length field is not present. If the first two bits of the L field are set to 0 and the last bit is set to 1, then the size of the EDHOC Message Length field is 1 byte, and so on. Values 5 to 7 are reserved and <bcp14>MUST NOT</bcp14> be used. Receipt of such a value <bcp14>MUST</bcp14> be treated as an invalid packet.</t>
          </dd>
          <dt>EDHOC Message Length:</dt>
          <dd>
            <t>The EDHOC Message Length field, when present, has a size of one to four octets, as determined by the L flag bits. It is included only if the L flag bits indicate a value greater than zero and specifies the total length of the EDHOC message being fragmented. When fragmentation is not used, this field is omitted.</t>
          </dd>
          <dt>EDHOC Data:</dt>
          <dd>
            <t>The EDHOC data consists of the whole or a fragment of the transported EDHOC message.</t>
          </dd>
        </dl>
      </section>
      <section anchor="eap-edhoc-response-packet">
        <name>EAP-EDHOC Response Packet</name>
        <dl>
          <dt>Code:</dt>
          <dd>
            <t>2 (Response)</t>
          </dd>
          <dt>Identifier:</dt>
          <dd>
            <t>The Identifier field is one octet and <bcp14>MUST</bcp14> match the Identifier field from the corresponding request.</t>
          </dd>
          <dt>Length:</dt>
          <dd>
            <t>The Length field is two octets and indicates the length in octets of the EAP packet including the Code, Identifier, Length, Type, and Data fields. Octets outside the range of the Length field should be treated as Data Link Layer padding and <bcp14>MUST</bcp14> be ignored on reception.</t>
          </dd>
          <dt>Type:</dt>
          <dd>
            <t>TBD1 (EAP-EDHOC)</t>
          </dd>
          <dt>R:</dt>
          <dd>
            <t>Implementations of this specification <bcp14>MUST</bcp14> set the R bits (reserved) to 0 and <bcp14>MUST</bcp14> ignore them on reception.</t>
          </dd>
          <dt>S:</dt>
          <dd>
            <t>The S bit (EAP-EDHOC start) is set to 0.</t>
          </dd>
          <dt>M:</dt>
          <dd>
            <t>The M bit (more fragments) is set to 1 in all but the last fragment. I.e., when there is no fragmentation, it is set to 0.</t>
          </dd>
          <dt>L:</dt>
          <dd>
            <t>The L flag bits represent the binary encoding of the size of the EDHOC Message Length, which can range from 0 to 4 bytes. When all three bits are set to 0, the EDHOC Message Length field is not present. If the first two bits of the L field are set to 0 and the last bit is set to 1, then the size of the EDHOC Message Length field is 1 byte, and so on. Values 5 to 7 are reserved and <bcp14>MUST NOT</bcp14> be used. Receipt of such a value <bcp14>MUST</bcp14> be treated as an invalid packet.</t>
          </dd>
          <dt>EDHOC Message Length:</dt>
          <dd>
            <t>The EDHOC Message Length field, when present, has a size of one to four octets, as determined by the L flag bits. It is included only if the L flag bits indicate a value greater than zero and specifies the total length of the EDHOC message being fragmented. When fragmentation is not used, this field is omitted.</t>
          </dd>
          <dt>EDHOC Data:</dt>
          <dd>
            <t>The EDHOC data consists of the whole or a fragment of the transported EDHOC message.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="eap-type">
        <name>EAP Type</name>
        <t>IANA has registered the following new type in the "Method Types" registry under the group name "Extensible Authentication Protocol (EAP) Registry" <xref target="IANA-EAP"/>:</t>
        <artwork><![CDATA[
Value: TBD1
Description: EAP-EDHOC
Reference: [this document]
]]></artwork>
        <t>NOTE: Suggested value: TBD1 = 57.
RFC Editor: Remove this note.</t>
      </section>
      <section anchor="edhoc-exporter-labels-registry">
        <name>EDHOC Exporter Labels Registry</name>
        <t>IANA has registered the following new labels in the "EDHOC Exporter Labels" registry under the group name "Ephemeral Diffie-Hellman Over COSE (EDHOC)" <xref target="IANA-EDHOC"/>:</t>
        <artwork><![CDATA[
Label: TBD2
Description: MSK of EAP method EAP-EDHOC
Change Controller: IETF
Reference: [this document]
]]></artwork>
        <artwork><![CDATA[
Label: TBD3
Description: EMSK of EAP method EAP-EDHOC
Change Controller: IETF
Reference: [this document]
]]></artwork>
        <artwork><![CDATA[
Label: TBD4
Description: Method-Id of EAP method EAP-EDHOC
Change Controller: IETF
Reference: [this document]
]]></artwork>
        <t>NOTE: Suggested values: TBD2 = 26, TBD3 = 27, TBD4 = 28.
RFC Editor: Remove this note.</t>
        <t>The allocations have been updated to reference this document.</t>
      </section>
      <section anchor="iana-ead">
        <name>EDHOC External Authorization Data Registry</name>
        <t>IANA has registered the following new label in the "EDHOC External Authorization Data" registry under the group name "Ephemeral Diffie-Hellman Over COSE (EDHOC)" <xref target="IANA-EDHOC"/>:</t>
        <artwork><![CDATA[
Name: EAPChannelBinding
Label: TBD5
Description: EAP channel binding information
Reference: [this document]
]]></artwork>
        <t>NOTE: Suggested value: TBD5 = 1.
RFC Editor: Remove this note.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The security considerations of EAP <xref target="RFC3748"/> <xref target="RFC5247"/> and EDHOC <xref target="RFC9528"/> apply to this document. Since the design of EAP-EDHOC closely follows EAP-TLS 1.3 <xref target="RFC9190"/>, many of its security considerations are also relevant.</t>
      <section anchor="security-claims">
        <name>Security Claims</name>
        <section anchor="eap-security-claims">
          <name>EAP Security Claims</name>
          <t>EAP security claims are defined in <xref section="7.2.1" sectionFormat="of" target="RFC3748"/>.
EAP-EDHOC security claims are described next and summarized in <xref target="sec-claims"/>.</t>
          <table anchor="sec-claims">
            <name>EAP-EDHOC security claims</name>
            <thead>
              <tr>
                <th align="left">Claim</th>
                <th align="left"> </th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Auth. principle:</td>
                <td align="left">Certificates, CWTs, and all credential types for which COSE header parameters are defined (1)</td>
              </tr>
              <tr>
                <td align="left">Cipher suite negotiation:</td>
                <td align="left">Yes (2)</td>
              </tr>
              <tr>
                <td align="left">Mutual authentication:</td>
                <td align="left">Yes (3)</td>
              </tr>
              <tr>
                <td align="left">Integrity protection:</td>
                <td align="left">Yes (4)</td>
              </tr>
              <tr>
                <td align="left">Replay protection:</td>
                <td align="left">Yes (5)</td>
              </tr>
              <tr>
                <td align="left">Confidentiality:</td>
                <td align="left">Yes (6)</td>
              </tr>
              <tr>
                <td align="left">Key derivation:</td>
                <td align="left">Yes (7)</td>
              </tr>
              <tr>
                <td align="left">Key strength:</td>
                <td align="left">The specified cipher suites provide key strength of at least 128 bits.</td>
              </tr>
              <tr>
                <td align="left">Dictionary attack protection:</td>
                <td align="left">Yes (8)</td>
              </tr>
              <tr>
                <td align="left">Fast reconnect:</td>
                <td align="left">No</td>
              </tr>
              <tr>
                <td align="left">Crypt. binding:</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">Session independence:</td>
                <td align="left">Yes (9)</td>
              </tr>
              <tr>
                <td align="left">Fragmentation:</td>
                <td align="left">Yes (<xref target="fragmentation"/>)</td>
              </tr>
              <tr>
                <td align="left">Channel binding:</td>
                <td align="left">Yes (<xref target="Channel_Binding"/>: EAD_3 and EAD_4 can be used to convey integrity-protected channel properties, such as network SSID or peer MAC address.)</td>
              </tr>
            </tbody>
          </table>
          <ul spacing="normal">
            <li>
              <t>(1) Authentication principle:
EAP-EDHOC establishes a shared secret based on an authenticated ECDH key exchange. The key exchange is authenticated using different kinds of credentials. EAP-EDHOC supports EDHOC credential types. EDHOC supports all credential types for which COSE header parameters are defined. These include X.509 certificates <xref target="RFC9360"/>, C509 certificates, CWTs (<xref section="3.5.3.1" sectionFormat="of" target="RFC9528"/>), and CCSs (<xref section="7.1" sectionFormat="of" target="RFC8392"/>).</t>
            </li>
            <li>
              <t>(2) Cipher suite negotiation:
The Initiator's list of supported cipher suites and order of preference is fixed, and the selected cipher suite is the cipher suite that is most preferred by the Initiator and that is supported by both the Initiator and the Responder. EDHOC supports all signature algorithms defined by COSE.</t>
            </li>
            <li>
              <t>(3) Mutual authentication:
The Initiator and Responder authenticate each other through the EDHOC exchange.</t>
            </li>
            <li>
              <t>(4) Integrity protection:
EDHOC integrity protects all message content using transcript hashes for key derivation and as additional authenticated data, including, e.g., method type, cipher suites, and external authorization data.</t>
            </li>
            <li>
              <t>(5) Replay protection. EDHOC broadens the message authentication coverage to include algorithms, external authorization data, and prior plaintext messages, as well as adding an explicit method type. By doing this, an attacker cannot replay or inject messages from a different EDHOC session.</t>
            </li>
            <li>
              <t>(6) Confidentiality. EDHOC protects the method payload transported within the EAP-Request and EAP-Response messages; however, the EAP-Success and EAP-Failure packets themselves are not encrypted or protected by EDHOC. EDHOC message_1 is not confidential, but it does not convey any private information. EDHOC message_2 provides confidentiality against passive attackers, while message_3 and message_4 provide confidentiality against active attackers.</t>
            </li>
            <li>
              <t>(7) Key derivation. Except for MSK and EMSK, derived keys are not exported. Key derivation is discussed in <xref target="Key_Hierarchy"/>.</t>
            </li>
            <li>
              <t>(8) Dictionary attack protection. EAP-EDHOC provides Dictionary attack protection.</t>
            </li>
            <li>
              <t>(9) Session independence. EDHOC generates computationally independent keys derived from the ECDH shared secret.</t>
            </li>
          </ul>
        </section>
        <section anchor="additional-security-claims">
          <name>Additional Security Claims</name>
          <ul spacing="normal">
            <li>
              <t>(10) Cryptographic strength and Forward secrecy:
Only ephemeral key exchange methods are supported by EDHOC, which ensures that the compromise of a session key does not also compromise earlier sessions' keys.</t>
            </li>
            <li>
              <t>(11) Identity protection:
EDHOC secures the Responder's credential identifier against passive attacks and the Initiator's credential identifier against active attacks. An active attacker can get the credential identifier of the Responder by eavesdropping on the destination address used for transporting message_1 and then sending their own message_1.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="peer-and-server-identities">
        <name>Peer and Server Identities</name>
        <t>The Peer-Id represents the identity to be used for access control and accounting purposes. The Server-Id represents the identity of the EAP server. The Peer-Id and Server-Id are determined from the information provided in the credentials used.</t>
        <t>ID_CRED_I and ID_CRED_R are used to identify the credentials of the Initiator (EAP peer) and Responder (EAP server). Therefore, for Server-Id the ID_CRED_R is used, and for Peer-Id the ID_CRED_I is used.</t>
      </section>
      <section anchor="certificate-validation">
        <name>Certificate Validation</name>
        <t>Same considerations as in EAP-TLS 1.3 (<xref section="5.3" sectionFormat="of" target="RFC9190"/>) apply here in relation to the use of certificates.</t>
        <t>When other types of credentials are used such as CWT/CCS, the application needs to have a clear trust-establishment mechanism and identify the pertinent trust anchors <xref target="RFC9528"/>.</t>
      </section>
      <section anchor="certificate-revocation">
        <name>Certificate Revocation</name>
        <t>Same considerations as in EAP-TLS 1.3 (<xref section="5.4" sectionFormat="of" target="RFC9190"/>) apply here in relation to certificates.</t>
        <t>When other types of credentials are used such as CWT/CCS, the endpoints are in charge of handling revocation and confirming the validity and integrity of CWT/CCS <xref target="RFC9528"/>.</t>
      </section>
      <section anchor="packet-modification-attacks">
        <name>Packet Modification Attacks</name>
        <t>EAP-EDHOC relies on EDHOC, which is designed to maximize confidentiality by encrypting handshake elements as early as the protocol state permits. In addition, the protocol is cryptographically bound such that any modification to any message (encrypted or unencrypted) results in a verification failure, as transcript hashes computed over the plaintext messages are used to derive the cryptographic material used by both endpoints.</t>
      </section>
      <section anchor="authorization">
        <name>Authorization</name>
        <t>Following the considerations of EDHOC in Appendix D.5 (Unauthenticated Operation) of <xref target="RFC9528"/>, EDHOC can be used without authentication by allowing the Initiator or Responder to communicate with any identity except its own.</t>
        <t>When peer authentication is not used, EAP-EDHOC server implementations <bcp14>MUST</bcp14> take care to limit network access appropriately for authenticated peers. Authorization and accounting <bcp14>MUST</bcp14> be based on authenticated information such as information in the certificate. The requirements for NAIs specified in <xref section="4" sectionFormat="of" target="RFC7542"/> apply and <bcp14>MUST</bcp14> be followed.</t>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>Considerations in <xref section="9.6" sectionFormat="of" target="RFC9528"/> against tracking of users and eavesdropping on Identity Responses or certificates apply here. Also, the considerations in <xref section="5.8" sectionFormat="of" target="RFC9190"/> regarding anonymous NAIs also apply.</t>
      </section>
      <section anchor="pervasive-monitoring">
        <name>Pervasive Monitoring</name>
        <t>Considerations in <xref section="9.1" sectionFormat="of" target="RFC9528"/> about pervasive monitoring apply here.</t>
      </section>
      <section anchor="cross-protocol-attacks">
        <name>Cross-Protocol Attacks</name>
        <t>The cross-protocol attack described in <xref target="RFC9190"/> does not currently apply, as no resumption mechanism has been defined for EAP-EDHOC in this document. However, any future document defining such a mechanism will also need to address this issue.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3748">
          <front>
            <title>Extensible Authentication Protocol (EAP)</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="L. Blunk" initials="L." surname="Blunk"/>
            <author fullname="J. Vollbrecht" initials="J." surname="Vollbrecht"/>
            <author fullname="J. Carlson" initials="J." surname="Carlson"/>
            <author fullname="H. Levkowetz" initials="H." role="editor" surname="Levkowetz"/>
            <date month="June" year="2004"/>
            <abstract>
              <t>This document defines the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication methods. EAP typically runs directly over data link layers such as Point-to-Point Protocol (PPP) or IEEE 802, without requiring IP. EAP provides its own support for duplicate elimination and retransmission, but is reliant on lower layer ordering guarantees. Fragmentation is not supported within EAP itself; however, individual EAP methods may support this. This document obsoletes RFC 2284. A summary of the changes between this document and RFC 2284 is available in Appendix A. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3748"/>
          <seriesInfo name="DOI" value="10.17487/RFC3748"/>
        </reference>
        <reference anchor="RFC5247">
          <front>
            <title>Extensible Authentication Protocol (EAP) Key Management Framework</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="D. Simon" initials="D." surname="Simon"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, enables extensible network access authentication. This document specifies the EAP key hierarchy and provides a framework for the transport and usage of keying material and parameters generated by EAP authentication algorithms, known as "methods". It also provides a detailed system-level security analysis, describing the conditions under which the key management guidelines described in RFC 4962 can be satisfied. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5247"/>
          <seriesInfo name="DOI" value="10.17487/RFC5247"/>
        </reference>
        <reference anchor="RFC6677">
          <front>
            <title>Channel-Binding Support for Extensible Authentication Protocol (EAP) Methods</title>
            <author fullname="S. Hartman" initials="S." role="editor" surname="Hartman"/>
            <author fullname="T. Clancy" initials="T." surname="Clancy"/>
            <author fullname="K. Hoeper" initials="K." surname="Hoeper"/>
            <date month="July" year="2012"/>
            <abstract>
              <t>This document defines how to implement channel bindings for Extensible Authentication Protocol (EAP) methods to address the "lying Network Access Service (NAS)" problem as well as the "lying provider" problem. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6677"/>
          <seriesInfo name="DOI" value="10.17487/RFC6677"/>
        </reference>
        <reference anchor="RFC7542">
          <front>
            <title>The Network Access Identifier</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>In order to provide inter-domain authentication services, it is necessary to have a standardized method that domains can use to identify each other's users. This document defines the syntax for the Network Access Identifier (NAI), the user identifier submitted by the client prior to accessing resources. This document is a revised version of RFC 4282. It addresses issues with international character sets and makes a number of other corrections to RFC 4282.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7542"/>
          <seriesInfo name="DOI" value="10.17487/RFC7542"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9190">
          <front>
            <title>EAP-TLS 1.3: Using the Extensible Authentication Protocol with TLS 1.3</title>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides a standard mechanism for support of multiple authentication methods. This document specifies the use of EAP-TLS with TLS 1.3 while remaining backwards compatible with existing implementations of EAP-TLS. TLS 1.3 provides significantly improved security and privacy, and reduced latency when compared to earlier versions of TLS. EAP-TLS with TLS 1.3 (EAP-TLS 1.3) further improves security and privacy by always providing forward secrecy, never disclosing the peer identity, and by mandating use of revocation checking when compared to EAP-TLS with earlier versions of TLS. This document also provides guidance on authentication, authorization, and resumption for EAP-TLS in general (regardless of the underlying TLS version used). This document updates RFC 5216.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9190"/>
          <seriesInfo name="DOI" value="10.17487/RFC9190"/>
        </reference>
        <reference anchor="RFC9528">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios, and a main use case is to establish an Object Security for Constrained RESTful Environments (OSCORE) security context. By reusing CBOR Object Signing and Encryption (COSE) for cryptography, Concise Binary Object Representation (CBOR) for encoding, and Constrained Application Protocol (CoAP) for transport, the additional code size can be kept very low.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9528"/>
          <seriesInfo name="DOI" value="10.17487/RFC9528"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4137">
          <front>
            <title>State Machines for Extensible Authentication Protocol (EAP) Peer and Authenticator</title>
            <author fullname="J. Vollbrecht" initials="J." surname="Vollbrecht"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="N. Petroni" initials="N." surname="Petroni"/>
            <author fullname="Y. Ohba" initials="Y." surname="Ohba"/>
            <date month="August" year="2005"/>
            <abstract>
              <t>This document describes a set of state machines for Extensible Authentication Protocol (EAP) peer, EAP stand-alone authenticator (non-pass-through), EAP backend authenticator (for use on Authentication, Authorization, and Accounting (AAA) servers), and EAP full authenticator (for both local and pass-through). This set of state machines shows how EAP can be implemented to support deployment in either a peer/authenticator or peer/authenticator/AAA Server environment. The peer and stand-alone authenticator machines are illustrative of how the EAP protocol defined in RFC 3748 may be implemented. The backend and full/pass-through authenticators illustrate how EAP/AAA protocol support defined in RFC 3579 may be implemented. Where there are differences, RFC 3748 and RFC 3579 are authoritative.</t>
              <t>The state machines are based on the EAP "Switch" model. This model includes events and actions for the interaction between the EAP Switch and EAP methods. A brief description of the EAP "Switch" model is given in the Introduction section.</t>
              <t>The state machine and associated model are informative only. Implementations may achieve the same results using different methods. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4137"/>
          <seriesInfo name="DOI" value="10.17487/RFC4137"/>
        </reference>
        <reference anchor="RFC5216">
          <front>
            <title>The EAP-TLS Authentication Protocol</title>
            <author fullname="D. Simon" initials="D." surname="Simon"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="R. Hurst" initials="R." surname="Hurst"/>
            <date month="March" year="2008"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides support for multiple authentication methods. Transport Layer Security (TLS) provides for mutual authentication, integrity-protected ciphersuite negotiation, and key exchange between two endpoints. This document defines EAP-TLS, which includes support for certificate-based mutual authentication and key derivation.</t>
              <t>This document obsoletes RFC 2716. A summary of the changes between this document and RFC 2716 is available in Appendix A. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5216"/>
          <seriesInfo name="DOI" value="10.17487/RFC5216"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7593">
          <front>
            <title>The eduroam Architecture for Network Roaming</title>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="T. Wolniewicz" initials="T." surname="Wolniewicz"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This document describes the architecture of the eduroam service for federated (wireless) network access in academia. The combination of IEEE 802.1X, the Extensible Authentication Protocol (EAP), and RADIUS that is used in eduroam provides a secure, scalable, and deployable service for roaming network access. The successful deployment of eduroam over the last decade in the educational sector may serve as an example for other sectors, hence this document. In particular, the initial architectural choices and selection of standards are described, along with the changes that were prompted by operational experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7593"/>
          <seriesInfo name="DOI" value="10.17487/RFC7593"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC9668">
          <front>
            <title>Using Ephemeral Diffie-Hellman Over COSE (EDHOC) with the Constrained Application Protocol (CoAP) and Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="M. Tiloca" initials="M." surname="Tiloca"/>
            <author fullname="R. Höglund" initials="R." surname="Höglund"/>
            <author fullname="S. Hristozov" initials="S." surname="Hristozov"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <date month="November" year="2024"/>
            <abstract>
              <t>The lightweight authenticated key exchange protocol Ephemeral Diffie-Hellman Over COSE (EDHOC) can be run over the Constrained Application Protocol (CoAP) and used by two peers to establish a Security Context for the security protocol Object Security for Constrained RESTful Environments (OSCORE). This document details this use of the EDHOC protocol by specifying a number of additional and optional mechanisms, including an optimization approach for combining the execution of EDHOC with the first OSCORE transaction. This combination reduces the number of round trips required to set up an OSCORE Security Context and to complete an OSCORE transaction using that Security Context.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9668"/>
          <seriesInfo name="DOI" value="10.17487/RFC9668"/>
        </reference>
        <reference anchor="RFC9360">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>The CBOR Object Signing and Encryption (COSE) message structure uses references to keys in general. For some algorithms, additional properties are defined that carry parameters relating to keys as needed. The COSE Key structure is used for transporting keys outside of COSE messages. This document extends the way that keys can be identified and transported by providing attributes that refer to or contain X.509 certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9360"/>
          <seriesInfo name="DOI" value="10.17487/RFC9360"/>
        </reference>
        <reference anchor="I-D.ietf-lake-edhoc-psk">
          <front>
            <title>EDHOC Authenticated with Pre-Shared Keys (PSK)</title>
            <author fullname="Elsa Lopez-Perez" initials="" surname="Lopez-Perez">
              <organization>Inria</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Rafael Marin-Lopez" initials="R." surname="Marin-Lopez">
              <organization>University of Murcia</organization>
            </author>
            <author fullname="Francisco Lopez-Gomez" initials="F." surname="Lopez-Gomez">
              <organization>University of Murcia</organization>
            </author>
            <date day="16" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies a Pre-Shared Key (PSK) authentication method
   for the Ephemeral Diffie-Hellman Over COSE (EDHOC) Lightweight
   Authenticated Key Exchange (LAKE) protocol.  The PSK method provides
   mutual authentication, ephemeral key exchange, identity protection,
   and quantum resistance while incurring lower computational costs than
   the public-key authentication methods specified for EDHOC.  It is
   suited for systems where nodes share a PSK provided out-of-band
   (external PSK) and enables efficient session resumption with less
   computational overhead when the PSK is provided from a previous EDHOC
   session (resumption PSK).  This document details the PSK message
   flow, key derivation changes, message formatting, processing, and
   security considerations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-psk-08"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>University of Glasgow</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>IN Groupe</organization>
            </author>
            <author fullname="Lijun Liao" initials="L." surname="Liao">
              <organization>NIO</organization>
            </author>
            <date day="30" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and common certificate
   profiles, and it is extensible.

   Two types of C509 certificates are defined.  One type is an
   invertible CBOR re-encoding of DER-encoded X.509 certificates with
   the signature field copied from the DER encoding.  The other type is
   identical except that the signature is computed over the CBOR
   encoding instead of the DER encoding, thereby avoiding the use of
   ASN.1.  Both types of certificates have the same semantics as X.509
   while providing comparable size reduction.

   This document also specifies CBOR-encoded data structures for
   certification requests and certification request templates, new COSE
   headers, as well as a TLS certificate type and a file format for
   C509.  This document updates RFC 6698 by extending the TLSA selectors
   registry to include C509 certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-20"/>
        </reference>
        <reference anchor="I-D.ietf-lake-app-profiles">
          <front>
            <title>Coordinating the Use of Application Profiles for Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   The lightweight authenticated key exchange protocol Ephemeral Diffie-
   Hellman Over COSE (EDHOC) requires certain parameters to be agreed
   out-of-band, in order to ensure its successful completion.  To this
   end, application profiles specify the intended use of EDHOC to allow
   for the relevant processing and verifications to be made.  In order
   to ensure the applicability of such parameters and information beyond
   transport- or setup-specific scenarios, this document defines a
   canonical, CBOR-based representation that can be used to describe,
   distribute, and store EDHOC application profiles.  Furthermore, in
   order to facilitate interoperability between EDHOC implementations
   and support EDHOC extensibility for additional integrations, this
   document defines a number of means to coordinate the use of EDHOC
   application profiles.  Finally, this document defines a set of well-
   known EDHOC application profiles.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-app-profiles-05"/>
        </reference>
        <reference anchor="I-D.ietf-lake-edhoc-impl-cons">
          <front>
            <title>Implementation Considerations for Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document provides considerations for guiding the implementation
   of the authenticated key exchange protocol Ephemeral Diffie-Hellman
   Over COSE (EDHOC).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-impl-cons-07"/>
        </reference>
        <reference anchor="I-D.ietf-lake-authz">
          <front>
            <title>Lightweight Authorization using Ephemeral Diffie-Hellman Over COSE (ELA)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Mališa Vučinić" initials="M." surname="Vučinić">
              <organization>INRIA</organization>
            </author>
            <author fullname="Geovane Fedrecheski" initials="G." surname="Fedrecheski">
              <organization>INRIA</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   Ephemeral Diffie-Hellman Over COSE (EDHOC) is a lightweight
   authenticated key exchange protocol intended for use in constrained
   scenarios.  This document specifies Lightweight Authorization using
   EDHOC (ELA).  The procedure allows authorizing enrollment of new
   devices using the extension point defined in EDHOC.  ELA is
   applicable to zero-touch onboarding of new devices to a constrained
   network leveraging trust anchors installed at manufacture time.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-authz-08"/>
        </reference>
        <reference anchor="Sec5G" target="https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3169">
          <front>
            <title>Security architecture and procedures for 5G System</title>
            <author initials="" surname="3GPP TS 33 501">
              <organization/>
            </author>
            <date year="2025" month="March"/>
          </front>
        </reference>
        <reference anchor="IANA-EAP" target="https://www.iana.org/assignments/eap-numbers/eap-numbers.xhtml">
          <front>
            <title>Extensible Authentication Protocol (EAP) Registry</title>
            <author>
              <organization>Internet Assigned Numbers Authority (IANA)</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA-EDHOC" target="https://www.iana.org/assignments/edhoc/edhoc.xhtml">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC) Registry</title>
            <author>
              <organization>Internet Assigned Numbers Authority (IANA)</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <referencegroup anchor="STD96" target="https://www.rfc-editor.org/info/std96">
          <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052">
            <front>
              <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
              <author fullname="J. Schaad" initials="J." surname="Schaad"/>
              <date month="August" year="2022"/>
              <abstract>
                <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
                <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="96"/>
            <seriesInfo name="RFC" value="9052"/>
            <seriesInfo name="DOI" value="10.17487/RFC9052"/>
          </reference>
          <reference anchor="RFC9338" target="https://www.rfc-editor.org/info/rfc9338">
            <front>
              <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
              <author fullname="J. Schaad" initials="J." surname="Schaad"/>
              <date month="December" year="2022"/>
              <abstract>
                <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. CBOR Object Signing and Encryption (COSE) defines a set of security services for CBOR. This document defines a countersignature algorithm along with the needed header parameters and CBOR tags for COSE. This document updates RFC 9052.</t>
              </abstract>
            </front>
            <seriesInfo name="STD" value="96"/>
            <seriesInfo name="RFC" value="9338"/>
            <seriesInfo name="DOI" value="10.17487/RFC9338"/>
          </reference>
        </referencegroup>
      </references>
    </references>
    <?line 823?>

<section anchor="fragmented-message-example">
      <name>Fragmented Message Example</name>
      <t>This section provides an example of a fragmented message, including all header field values, to improve clarity and avoid ambiguity.</t>
      <t>In this example, the total size of the EDHOC message is 128 octets. The MTU allows 32 EAP bytes to be transmitted per packet. No retransmissions are considered in this example. Furthermore, this does not correspond to the EAP-EDHOC Start message. The packets sent by the server are shown below:</t>
      <artwork><![CDATA[
+-----
Code = 1 | ID = 1 | Length = 32 |
Type = TBD1 | R = 0 | S = 0 | M = 1 | L = 0b001 | EDHOC Msg Length = 128 |
EDHOC Data Bytes 1-25
+-----

+-----
Code = 1 | ID = 2 | Length = 32 |
Type = TBD1 | R = 0 | S = 0 | M = 1 | L = 0b000 |
EDHOC Data Bytes 26-51
+-----

+-----
Code = 1 | ID = 3 | Length = 32 |
Type = TBD1 | R = 0 | S = 0 | M = 1 | L = 0b000 |
EDHOC Data Bytes 52-77
+-----

+-----
Code = 1 | ID = 4 | Length = 32 |
Type = TBD1 | R = 0 | S = 0 | M = 1 | L = 0b000 |
EDHOC Data Bytes 78-103
+-----

+-----
Code = 1 | ID = 5 | Length = 32 |
Type = TBD1 | R = 0 | S = 0 | M = 0 | L = 0b000 |
EDHOC Data Bytes 104-128
+-----
]]></artwork>
      <t>As shown, the L flags have a value of 0b001 in the first fragment, indicating that the EDHOC Msg Length field is 1 byte in size. The EDHOC Msg Length field indicates the total size of the EDHOC message being fragmented, which is 128 bytes. The L flags and the EDHOC Msg Length field are only present in the first fragment.</t>
      <t>Another relevant detail is that the first fragment includes 7 bytes of header (1 byte Code, 1 byte Identifier, 2 bytes Length, 1 byte Type, 1 byte Flags, and 1 byte EDHOC Msg Length), as illustrated in <xref target="packet"/>. Subsequent fragments include 6 bytes of header, since they do not carry the EDHOC Msg Length field. Consequently, with an MTU of 32 bytes, the first fragment carries 25 bytes of payload, while each subsequent fragment carries up to 26 bytes of payload.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank Eduardo Ingles-Sanchez for his contribution in the initial phase of this work. We also want to thank Marco Tiloca, Christian Amsüss, Gabriel Lopez-Millan, Renzo Navas, Paul Wouters, Rich Salz, Ines Robles, and Christopher Inacio for their reviews, as well as the IESG Area Directors who reviewed the document during the IESG ballot and provided valuable feedback.</t>
      <t>This work was supported partially by Project PID2023-148104OB-C43 (ONOFRE4-UMU) from MCIN/AEI; the Formacion del Profesorado Universitario predoctoral grant FPU24/03871, also from MCIN/AEI; and Project 101290342 (Agentic6G), funded by the European Commission under the EU Partnerships Horizon – Institutionalised Partnerships programme.</t>
      <t>This work was supported partially by Vinnova - the Swedish Agency for Innovation Systems - through the EUREKA CELTIC-NEXT project CYPRESS.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
bLLmAAA=

-->

</rfc>
