<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.10 (Ruby 2.7.4) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-rieckers-emu-eap-ute-01" category="std" consensus="true" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="EAP-UTE">User-assisted Trust Establishment (EAP-UTE)</title>

    <author initials="J.-F." surname="Rieckers" fullname="Jan-Frederik Rieckers">
      <organization abbrev="DFN">Deutsches Forschungsnetz | German National Research and Education Network</organization>
      <address>
        <postal>
          <street>Alexanderplatz 1</street>
          <city>Berlin</city>
          <code>10178</code>
          <country>Germany</country>
        </postal>
        <email>rieckers@dfn.de</email>
        <uri>www.dfn.de</uri>
      </address>
    </author>

    <date year="2022" month="September" day="22"/>

    <area>SEC</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>EAP-UTE</keyword> <keyword>EAP</keyword> <keyword>IoT</keyword>

    <abstract>


<t>The Extensible Authentication Protocol (EAP) provides support for multiple authentication methods.
This document defines the EAP-UTE authentication method for a User-assisted Trust Establishment between the peer and the server.
The EAP method is intended for bootstrapping Internet-of-Things (IoT) devices without preconfigured authentication credentials.
The trust establishment is achieved by transmitting a one-directional out-of-band (OOB) message between the peer and the server to authenticate the in-band exchange.
The peer must have a secondary input or output interface, such as a display, camera, microphone, speaker, blinking light, or light sensor, so that dynamically generated messages with tens of bytes in length can be transmitted or received.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-rieckers-emu-eap-ute/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        EAP Method Update (emu) Working Group mailing list (<eref target="mailto:emu@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/emu/"/>.
      </t>
    </note>


  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>This document describes a method for registration, authentication, and key derivation for network-connected devices, especially with low computational power and small or no interaction interfaces, such as devices that are part of the Internet of Things (IoT).
These devices may come without preconfigured trust anchors or have no possibility to receive a network configuration that enables them to connect securely to a network.</t>

<t>This document uses the basic design principle behind the EAP-NOOB method described in <xref target="RFC9140"/> and aims to improve some key elements of the protocol to better address the needs for IoT devices.
This is mainly achieved by using CBOR with numeric keys instead of JSON to encode the exchanged messages and by modifying the message flow.</t>

<t>TODO: The EAP-UTE protocol also allows extensions, they are still TBD. Basically, the messages can just include additional fields with newly defined meanings.</t>

<t>The possible problems of EAP-NOOB are discussed in <xref target="I-D.draft-rieckers-emu-eap-noob-observations"/>. This document provides a specification which aims to address these concerns.</t>

</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>

<t>TODO frequently used terms</t>

<t>authenticator</t>

<t>peer</t>

<t>server</t>

</section>
<section anchor="eap-ute-protocol"><name>EAP-UTE protocol</name>

<t>This section defines the EAP-UTE method.</t>

<section anchor="protocol-overview"><name>Protocol Overview</name>

<t>TODO: The introduction text is basically copied from RFC9140. Should be reworded.</t>

<t>The EAP-UTE method execution spans two or more EAP conversations, called Exchanges in this specification.
Each Exchange consists of several EAP request-response pairs.
In order to give the user time to deliver the OOB message between the peer and the server, at least two separate EAP conversations are needed.</t>

<t>The overall protocol starts with a version and cryptosuite negotiation and peer detection.
Depending on the current state of the peer and server, different exchanges are selected.</t>

<t>If the server or the peer are in the unregistered state, peer and server exchange nonces and keys for the Ephemeral Elliptic Curve Diffie-Hellman.
This is called the Initial Exchange.
The Initial Exchange results in an EAP-Failure, since neither the server nor the peer are authenticated.</t>

<t>After the Initial Exchange, the user-assisted step of trust establishment takes place.
The user delivers one OOB message either from the peer to the server or from the server to the peer.</t>

<t>While peer and server are waiting for completion of the OOB Step, the peer <bcp14>MAY</bcp14> probe the server by reconnecting, to check for successful transmission of the OOB message.
This probe request will result in a Waiting Exchange and EAP-Failure, if the server has not yet received the OOB message.</t>

<t>If either the server or the peer have received the OOB message, the probe request will result in a Completion Exchange.
In the Completion Exchange, peer and server exchange message authentication codes over the previous in-band messages and the OOB message.
The Completion Exchange may result in EAP-Success.
Once the peer and server have performed a successful Completion Exchange, both endpoints store the created association in persistent storage.</t>

<t>After a successful Completion Exchange, the peer and server can use the Reconnect Exchange, to create a new association with new cryptographic bindings.
The user-assisted OOB step is not necessary, since the peer and server can infer the mutual authentication by using the persistent data stored after the Completion Exchange.</t>

<figure title="EAP-UTE Server-Peer Association State Machine" anchor="statemachine"><artwork><![CDATA[
                                      Waiting
                                      .------.
                                      |      V
   +------------------+         +---------------------+
.->| Unregistered (0) | Initial | Waiting for OOB (1) |
|  |   (ephemeral)    |-------->|    (ephemeral)      |
|  +------------------+         +---------------------+
|                                 |    |
| User Reset    .-----------------'    | OOB Input
|               | Completion           |
|               |                      |
|               V                      V
| +----------------+            +------------------+
'-| Registered (3) | Completion | OOB Received (2) |
  |  (persistent)  |<-----------|                  |
  +----------------+            +------------------+
]]></artwork></figure>

</section>
<section anchor="messages"><name>Messages</name>

<section anchor="general-message-format"><name>General Message format</name>

<t>All EAP-UTE messages consist of a CBOR Sequence with the following elements</t>

<dl>
  <dt>type:</dt>
  <dd>
    <t>integer to indicate the type of the message</t>
  </dd>
  <dt>payload:</dt>
  <dd>
    <t>a byte-string containing a CBOR encoded map</t>
  </dd>
  <dt>additional:</dt>
  <dd>
    <t>an optional byte-string containing additional information, e.g. a message authentication code, encoded as CBOR map</t>
  </dd>
</dl>

<t>Remark from the author:<br />
This format is just a first draft.
It allows a very simple MAC calculation, since the MACs can just consist of the concatenated previous messages.
This also allows an easy addition of extensions, since the extension payloads are automatically included in the MAC calculation, if they are part of the CBOR payload.
Additionally, the additional section allows for extensions that do not need integrity protection, e.g. for referal to a different server in the background.</t>

<t>The message payloads are encoded in CBOR <xref target="RFC8949"/> as maps.
In <xref target="mapkeys"/> the different message fields, their assigned mapkey and the type are listed.</t>

<texttable title="Mapkeys for CBOR encoding" anchor="mapkeys">
      <ttcol align='left'>Mapkey</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>1</c>
      <c>Array of Integers</c>
      <c>Versions</c>
      <c>The versions supported by the server. For this document the version is 1</c>
      <c>2</c>
      <c>Integer</c>
      <c>Version</c>
      <c>The version selected by the peer</c>
      <c>3</c>
      <c>Array</c>
      <c>Ciphers*</c>
      <c>The ECDHE curves and Hash algorithms supported by the server.</c>
      <c>4</c>
      <c>Array</c>
      <c>Cipher*</c>
      <c>The ECHDE curve and Hash algorithm selected by the peer</c>
      <c>5</c>
      <c>Integer</c>
      <c>Directions</c>
      <c>The OOB-Directions supported by the server. 0x01 for peer-to-server, 0x02 for server-to-peer, 0x03 for both</c>
      <c>6</c>
      <c>Integer</c>
      <c>Direction</c>
      <c>The OOB-Direction selected by the peer. <bcp14>SHOULD</bcp14> be either 0x01 or 0x02, but <bcp14>MAY</bcp14> be 0x03 for both directions</c>
      <c>7</c>
      <c>Map</c>
      <c>ServerInfo</c>
      <c>Information about the server, e.g. a URL for OOB-message-submission</c>
      <c>8</c>
      <c>Map</c>
      <c>PeerInfo</c>
      <c>Information about the peer, e.g. manufacturer/serial number</c>
      <c>9</c>
      <c>bytes</c>
      <c>Nonce_P</c>
      <c>Peer Nonce</c>
      <c>10</c>
      <c>bytes</c>
      <c>Nonce_S</c>
      <c>Server Nonce</c>
      <c>11</c>
      <c>Map</c>
      <c>Key_P**</c>
      <c>Peer's ECDHE key according to the chosen cipher</c>
      <c>12</c>
      <c>Map</c>
      <c>Key_S**</c>
      <c>Server's ECDHE key</c>
      <c>13</c>
      <c>null/bytes</c>
      <c>MAC_S***</c>
      <c>Indication that Server MAC is included (null value) and byte string in additional section</c>
      <c>14</c>
      <c>null/bytes</c>
      <c>MAC_P***</c>
      <c>Indication that Peer MAC is included (null value) and byte string in additional section</c>
      <c>15</c>
      <c>text</c>
      <c>PeerId</c>
      <c>Peer Identifier</c>
      <c>16</c>
      <c>bytes</c>
      <c>OOB-Id</c>
      <c>Identifier of the OOB message</c>
      <c>17</c>
      <c>int</c>
      <c>RetryInterval</c>
      <c>Number of seconds to wait after a failed Completion Exchange</c>
      <c>18</c>
      <c>Map</c>
      <c>AdditionalServerInfo</c>
      <c>Additional information about the server. TODO: not sure about this yet.</c>
</texttable>

<t>*: The Ciphers field consists of an array of two arrays.
The first array contains all supported ECDHE curves using the identifiers from the COSE Elliptic Curves registry. The server <bcp14>MUST NOT</bcp14> offer and the peer <bcp14>MUST NOT</bcp14> accept curves not suited for ECDH.
The second array contains all supported Hash algorithms using the indentifiers from the COSE Algorithms registry. The server <bcp14>MUST</bcp14> only offer and the peer <bcp14>MUST</bcp14> only accept Hash algorithms.
The Cipher field consists of an array of two items, first the selected ECDHE curve, second the selected Hash algorithm.</t>

<t>**: The peer and server Key are encoded as COSE key <xref target="RFC8152"/>.</t>

<t>***: The inclusion of MAC_S or MAC_P map keys with a NULL map value indicate that the MAC value is included in the additional field of the CBOR sequence.
The MAC field is encoded with the same map key as byte string, its length is determined by the used cryptosuite.</t>

<t>A message <bcp14>MUST NOT</bcp14> contain both MAC_S and MAC_P, only one of these values can be present in a message.</t>

<section anchor="thoughts-about-the-message-format"><name>Thoughts about the message format</name>

<t>EAP-NOOB <xref target="RFC9140"/> uses JSON as encoding. Problems of using JSON are discussed in section 2.1 of <xref target="I-D.draft-rieckers-emu-eap-noob-observations"/>.</t>

<t>For this specification, the following encodings have been considered:</t>

<t><list style="symbols">
  <t>Static encoding<br />
This allows a minimal number of bytes and requires a minimal amount of parsing, since the format and order of the message fields is specified exactly.
However, this encoding severely affects the extensibility, unless a specific extension format is used.
The specification of this protocol also has optional fields in some message types, so this would also have to be addressed.</t>
  <t>CBOR with static fields (e.g. Array)<br />
This approach has a slightly higher number of bytes than the static encoding, but allows an easier extensibility.
The required fields can be specified, so the order of the protocol field is static and a parser has minimal effort to parse the protocol fields.
However, this might be problematic in future protocol versions, when new fields are introduced.
Like with static encoding, this also requires a mechanism for optional fields in the different message types.</t>
  <t>CBOR map with numeric keys<br />
To mitigate the problems of optional fields while keeping the parsing effort low, CBOR maps with numeric keys can be used.
All protocol fields are identified by a unique identifier, specified in this document.
A parser can simply loop through the CBOR map. Since CBOR maps have a canonical order, minimal implementations may rely on this fact to parse the information needed.</t>
</list></t>

<t>On the basis of this discussion, this draft will use a CBOR map as message encoding.
However, this is just a first draft and suggestions for other message formats are highly welcome.</t>

</section>
</section>
<section anchor="server-greeting"><name>Server greeting</name>

<t><list style="symbols">
  <t>Message Type: 1</t>
  <t>Required Attributes:
  <list style="symbols">
      <t>Versions</t>
      <t>Ciphers</t>
      <t>Directions</t>
    </list></t>
  <t>Optional Attributes:
  <list style="symbols">
      <t>ServerInfo</t>
      <t>RetryInterval?</t>
    </list></t>
</list></t>

</section>
<section anchor="client-greeting"><name>Client greeting</name>
<t><list style="symbols">
  <t>Message Type: 2</t>
  <t>Required Attributes:
  <list style="symbols">
      <t>Version</t>
      <t>Cipher</t>
      <t>Nonce_P</t>
      <t>Key_P</t>
    </list></t>
  <t>Optional Attributes:
  <list style="symbols">
      <t>PeerId</t>
      <t>PeerInfo</t>
      <t>Direction</t>
    </list></t>
</list></t>

</section>
<section anchor="server-keyshare"><name>Server Keyshare</name>
<t><list style="symbols">
  <t>Message Type: 3</t>
  <t>Required Attributes:
  <list style="symbols">
      <t>Key_S</t>
      <t>Nonce_S</t>
    </list></t>
  <t>Optional Attributes:
  <list style="symbols">
      <t>MAC_S</t>
      <t>PeerId</t>
      <t>AdditionalServerInfo?</t>
      <t>RetryInterval?</t>
    </list></t>
</list></t>

</section>
<section anchor="client-finished"><name>Client Finished</name>
<t><list style="symbols">
  <t>Message Type: 4</t>
  <t>Optional Attributes:
  <list style="symbols">
      <t>MAC_P</t>
    </list></t>
</list></t>

</section>
<section anchor="client-completion-request"><name>Client Completion Request</name>
<t><list style="symbols">
  <t>Message Type: 5</t>
  <t>Required Attributes:
  <list style="symbols">
      <t>Nonce_P</t>
      <t>PeerId</t>
    </list></t>
  <t>Optional Attributes:
  <list style="symbols">
      <t>OOB-Id</t>
    </list></t>
</list></t>

</section>
<section anchor="server-completion-response"><name>Server Completion Response</name>
<t><list style="symbols">
  <t>Message Type: 6</t>
  <t>Required Attributes:
  <list style="symbols">
      <t>Nonce_S</t>
      <t>MAC_S</t>
    </list></t>
  <t>Optional Attributes:
  <list style="symbols">
      <t>OOB-Id</t>
    </list></t>
</list></t>

</section>
<section anchor="client-keyshare"><name>Client Keyshare</name>
<t><list style="symbols">
  <t>Message Type: 7</t>
  <t>Required Attributes:
  <list style="symbols">
      <t>PeerId</t>
      <t>Nonce_P</t>
      <t>Key_P</t>
    </list></t>
</list></t>

</section>
</section>
<section anchor="protocol-sequence"><name>Protocol Sequence</name>

<t>After reception of the EAP-Response/Identity packet, the server always answers with a Server Greeting packet (Type 1).
This Server Greeting contains the supported protocol versions, ciphers and OOB directions along with the ServerInfo.</t>

<t>Depending on the peer state, the peer chooses the next packet.
If the peer is in the unregistered state and thus does not yet have an ephemeral or persistent state, it chooses the Client Greeting, which starts the Initial Handshake.</t>

<t>If the peer is in the Waiting for OOB or OOB Received state, the Initial Exchange has completed and the OOB step needs to take place.
If the negotiated direction is from server to peer, the peer <bcp14>SHOULD NOT</bcp14> try to reconnect until the peer received an OOB message.
If the negotiated direction is from peer to server, the peer can probe the server at regular intervals to check if the OOB message to the server has been delivered.
The peer will send a Client Completion Request to initiate the Waiting/Completion Exchange.</t>

<t>If the peer is in the Registered state, it may choose between three different Reconnect Exchanges.
If the peer wants a reconnect without new key exchanges, it will send a Client Completion Request, starting the Reconnect Exchange without ECDHE.
If the peer wants to reconnect with new key exchanges, it will send a Client Key Share packet, which starts the Reconnect Exchange with new ECDHE exchange.
If the peer wants to upgrade to a new protocol version or change the used cipher suites, it will send a Client Greeting, starting the Upgrade exchange.</t>

<section anchor="initial-exchange"><name>Initial Exchange</name>

<t>The Initial Exchange comprises of the following packets:</t>

<t>After the Server Greeting common to all exchanges, the peer sends a Client Greeting packet.
The Client Greeting contains the peer's chosen protocol version, cipher and direction of the OOB message.
The peer <bcp14>MUST</bcp14> only choose values for these fields offered by the server in it's Server Greeting.
For Direction the peer <bcp14>SHOULD</bcp14> choose either 0x01 (peer-to-server) or 0x02 (server-to-peer) if the server offered 0x03 (both directions).
Additionally, the Client Greeting contains PeerInfo, a nonce and the peer's ECDHE public key.</t>

<t>The server will then answer with a Server Keyshare packet.
The packet contains a newly allocated PeerId, the server's nonce and the ECDHE public key.</t>

<t>The peer then answers with a Client Finished packet without any payload.</t>

<t>Since no authentication has yet been achieved, the server then answers with an EAP-Failure.</t>

<figure title="Initial Exchange" anchor="initialexchange"><artwork><![CDATA[
EAP Peer            Authenticator   EAP Server
  |                         |             |
  |<- EAP-Request/Identity -|             |
  |                                       |
  |-- EAP-Response/Identity ------------->|
  |    (NAI=new@eap-ute.arpa)             |
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER GREETING (1)                 |
  |   Versions, Ciphers, ServerInfo,      |
  |   Directions                          |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT GREETING (2)                 |
  |   Version, Cipher, PeerInfo,          |
  |   Direction, Nonce_P, Key_P           |
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER KEYSHARE (3)                 |
  |   PeerId, Key_S, Nonce_S              |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT FINISHED (4)                 |
  |                                       |
  |                                       |
  |<- EAP-Failure ------------------------|
  |                                       |
]]></artwork></figure>

</section>
<section anchor="user-assisted-out-of-band-step"><name>User-assisted out-of-band step</name>

<t>After the completed Initial Exchange, the peer or the server, depending on the negotiated direction, will generate an OOB message.</t>

<t>This message consists of a 16-byte freshly generated nonce (OOB-Nonce), the authentication value OOB-Auth and the PeerId.
The calculation of the OOB-Auth field is described in <xref target="sec_keys"/>.</t>

<t>The devices <bcp14>MAY</bcp14> also include the OOB-Id field, if size of the OOB message is not important.</t>

<t>Devices <bcp14>SHOULD</bcp14> export the message as a CBOR sequence of byte strings in the order PeerId, OOB-Nonce, OOB-Auth (, optionally OOB-Id).
The format of the OOB message <bcp14>MAY</bcp14> be altered by the application, depending on the available interfaces.</t>

</section>
<section anchor="waiting-exchange"><name>Waiting Exchange</name>

<t>The Waiting Exchange is performed if neither the server nor the peer have received an OOB message yet.
<!-- TODO: Clarify that Waiting and Completion Exchange are the same until EAP-Failure --></t>

<t>The peer probes the server with a Client Completion Request.
In this packet the peer omits the optional OOB-Id field.
If the OOB message is delivered from the peer to the server, the server may have received an OOB message already.
To allow the server to complete the association, the peer includes a nonce, along with the allocated PeerId.
The nonce <bcp14>MAY</bcp14> be repeated for all Client Completion Requests while waiting for the completion, but <bcp14>MUST</bcp14> be recalculated if a new initial handshake is performed.</t>

<t>If the server did not receive an OOB message, it answers with an EAP-Failure.</t>

<figure title="Waiting Exchange" anchor="waitingexchange"><artwork><![CDATA[
EAP Peer            Authenticator   EAP Server
  |                         |             |
  |<- EAP-Request/Identity -|             |
  |                                       |
  |-- EAP-Response/Identity ------------->|
  |    (NAI=waiting@eap-ute.arpa)         |
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER GREETING (1)                 |
  |   Versions, Ciphers, Server Info,     |
  |   Directions                          |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT COMPLETION REQUEST (5)       |
  |   PeerId, Nonce_P                     |
  |                                       |
  |<- EAP-Failure ------------------------|
  |                                       |
]]></artwork></figure>

</section>
<section anchor="completion-exchange"><name>Completion Exchange</name>

<t>The Completion Exchange is performed to finish the mutual trust establishment.</t>

<t>As in the Waiting Exchange, the peer probes the server with a Client Completion Request.
The nonce of the previous Client Completion Requests which did not lead to a completion <bcp14>MAY</bcp14> be repeated.
If the peer has received an OOB message, the peer will include the OOB-Id in the Completion Request.
If the peer did not include an OOB-Id, the server will include the OOB-Id of its received OOB message.
In the unlikely case that both directions are negotiated and an OOB message is delivered from the peer to the server and from the server to the peer at the same time, as a tiebreaker, the OOB message from the server to the peer is chosen.</t>

<t>The server generates a new nonce, calculates MAC_S according to <xref target="sec_keys"/> and sends a Server Completion Response to the peer.</t>

<t>The peer will then calculate the MAC_P value and send a Client Finished message to the server.</t>

<t>After checking the MAC_P value, the server then answers with an EAP-Success.</t>

<figure title="Completion Exchange" anchor="completionexchange"><artwork><![CDATA[
EAP Peer            Authenticator   EAP Server
  |                         |             |
  |<- EAP-Request/Identity -|             |
  |                                       |
  |-- EAP-Response/Identity ------------->|
  |    (NAI=waiting@eap-ute.arpa)         |
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER GREETING (1)                 |
  |   Versions, Ciphers, Server Info,     |
  |   Directions                          |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT COMPLETION REQUEST (5)       |
  |   PeerId, Nonce_P, [OOB-Id]           |
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER COMPLETION RESPONSE (6)      |
  |   [OOB-Id], Nonce_S, MAC_S            |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT FINISHED (4)                 |
  |   MAC_P                               |
  |                                       |
  |<- EAP-Success ------------------------|
  |                                       |
]]></artwork></figure>

</section>
<section anchor="reconnect-exchange"><name>Reconnect Exchange</name>

<t>The Reconnect Exchange is performed if both the peer and the server are in the registered state.</t>

<t>For a reconnect without new exchanging of ECDHE keys, the peer will answer to the Server Greeting with a Client Completion Request, including the PeerId and a nonce.</t>

<t>To distinguish a Reconnect Exchange from a Waiting/Completion Exchange, the server will look up the saved states for the transmitted PeerId.
If the server has a persistent state saved, it will choose the Reconnect Exchange, otherwise it will choose the Waiting Exchange.</t>

<t>The server will then generate a nonce and the MAC_S value according to <xref target="sec_keys"/> and send a Server Completion Response with the nonce and MAC_S value.</t>

<t>The peer then sends a Client Finished message, containing the computed MAC_P value.</t>

<t>The server then answers with an EAP-Success.</t>

<figure title="Reconnect Exchange without new ECDHE exchange" anchor="reconnectstatic"><artwork><![CDATA[
EAP Peer            Authenticator   EAP Server
  |                         |             |
  |<- EAP-Request/Identity -|             |
  |                                       |
  |-- EAP-Response/Identity ------------->|
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER GREETING (1)                 |
  |   Versions, Ciphers, Server Info,     |
  |   Directions                          |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT COMPLETION REQUEST (5)       |
  |   PeerId, Nonce_P                     |
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER COMPLETION RESPONSE (6)      |
  |   Nonce_S, MAC_S                      |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT FINISHED (4)                 |
  |   MAC_P                               |
  |                                       |
  |<- EAP-Success ------------------------|
  |                                       |
]]></artwork></figure>

<t>For a Reconnect Exchange with new ECDHE exchange, the peer will send a Client Keyshare in response to the Server Greeting.
The Client Keyshare will include the PeerId, a nonce and a new ECDHE key.</t>

<t>The server will also generate a new ECDHE key, a nonce and compute MAC_S according to <xref target="sec_keys"/>.</t>

<t>The peer will then calculate the MACs and keying material according to <xref target="sec_keys_reconnect"/> and send a Client Finished message to the server, including its MAC_P value.</t>

<t>The server checks the MAC_P value and answers with an EAP-Success.</t>

<figure title="Reconnect Exchange with new ECDHE exchange" anchor="reconnectecdhe"><artwork><![CDATA[
EAP Peer            Authenticator   EAP Server
  |                         |             |
  |<- EAP-Request/Identity -|             |
  |                                       |
  |-- EAP-Response/Identity ------------->|
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER GREETING (1)                 |
  |   Versions, Ciphers, Server Info,     |
  |   Directions                          |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT KEYSHARE (7)                 |
  |   PeerId, Nonce_P, Key_P              |
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER KEYSHARE (3)                 |
  |   Nonce_S, Key_S, MAC_S               |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT FINISHED (4)                 |
  |   MAC_P                               |
  |                                       |
  |<- EAP-Success ------------------------|
  |                                       |
]]></artwork></figure>

</section>
<section anchor="upgrade-exchange"><name>Upgrade Exchange</name>

<t>The Upgrade Exchange is performed to upgrade either the EAP-UTE version or the used cipher suite, or refresh the cryptographic keying material.</t>

<t>A client may choose to perform this exchange instead of a reconnect exchange. The client <bcp14>SHOULD</bcp14> only choose this if the server offers a better version or cipher suite in its Server Greeting or if the current set of cryptographic keys has been used for an application specific amount of reconnect exchanges or time.</t>

<!-- TODO: Maybe the server should be able to reject the upgrade handshake or at least reject the renegotiation of keying materials based on a rate limit to prevent DoS attacks -->

<t>If the client cooses the Upgrade Exchange, it answers to the Server Greeting with a Client Greeting and includes the PeerId field.
To distinguish the Upgrade Exchange from the Intial Exchange, the server will look up the PeerId and, if a persistent association is found, answer with its Server Keyshare, including the optional MAC_S field, calculated according to <xref target="sec_keys"/>.</t>

<t>The peer will then calculate the MACs and keying material according to <xref target="sec_keys_reconnect"/> and send a Client Finished message to the server, including its MAC_P value.</t>

<t>The server checks the MAC_P value of the client and answers with an EAP-Success.
Afterwards the server updates the association stored for the client.</t>

<figure title="Upgrade Exchange" anchor="upgradeexchange"><artwork><![CDATA[
EAP Peer            Authenticator   EAP Server
  |                         |             |
  |<- EAP-Request/Identity -|             |
  |                                       |
  |-- EAP-Response/Identity ------------->|
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER GREETING (1)                 |
  |   Versions, Ciphers, ServerInfo,      |
  |   Directions                          |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT GREETING (2)                 |
  |   Version, Cipher, PeerInfo,          |
  |   PeerId, Nonce_P, Key_P              |
  |                                       |
  |<- EAP-Request/EAP-UTE ----------------|
  |   SERVER KEYSHARE (3)                 |
  |   Key_S, Nonce_S, MAC_S               |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT FINISHED (4)                 |
  |   MAC_P                               |
  |                                       |
  |<- EAP-Failure ------------------------|
  |                                       |
]]></artwork></figure>

</section>
</section>
<section anchor="sec_keys"><name>MAC and OOB calculation and Key derivation</name>

<section anchor="mac-calculation"><name>MAC Calculation</name>
<t>For the MAC calculation, the exchanged messages up to the current message are concatenated into the "Messages" field.
This field consists for each message of the CBOR sequence of the message type and the CBOR encoded message payload as byte-string.
The optional MAC value at the end of the message is omitted.</t>

<t>For the following definition || denotes a concatenation.</t>

<t>Messages = Type_1 || Length_1 || Payload_1 || ... || Type_n || Length_n || Payload_n
<!-- TODO: This is still the old TLV syntax, needs to be adjusted to CBOR sequences --></t>

<t>The Messages field is calculated separately for each exchange, i.e. the Messages field for the Initial Exchange will include the Server Greeting, Client Greeting, Server Keyshare and Client Finished message.</t>

<t>The OOB-Auth field is calculated as hash over the concatenation of the Messages field of the Initial Exchange, the generated OOB-Nonce and the direction of the Out-of-band message.
The length of the OOB-Auth field is determined by the used hash algorithm.</t>

<t>OOB-Auth = H( Messages || OOB-Nonce || Direction)</t>

<t>The OOB-Id, used to identify the used OOB message, is calculated over the string "OOB-Id" concatenated with the OOB-Auth field.
The hash result is truncated to 16 bytes.</t>

<t>OOB-Id = H( "OOB-Id" || OOB-Auth )[0..15]</t>

<t>For the calculation of the MAC_S and MAC_P value, the Messages field will only include the messages sent up to the point of the MAC calculation.
For MAC_S this also includes the Server Keyshare/Server Completion Response message.
For MAC_P the Client Finished message is omitted from the Messages field, so both MAC_P and MAC_S have the same input for the Messages field.</t>

<t>Depending on the performed Exchange, the MAC calculation differs.
For the Completion Exchange, the MAC calculation includes the direction (0x01 for peer to server, 0x02 for server to peer), a Hash of the Messages field of the Initial Exchange, a hash of the Messages of the Completion exchange and the OOB-Nonce.</t>

<t>MAC_P = HMAC(K_p, 0x01 || H(Messages (Initial Exchange)) || H(Messages) || OOB-Nonce)</t>

<t>MAC_S = HMAC(K_s, 0x02 || H(Messages (Initial Exchange)) || H(Messages) || OOB-Nonce)</t>

<t>For the reconnect exchanges the MAC calculation will include only the direction and a hash of the Messages field of the Reconnect Exchange.</t>

<t>MAC_P = HMAC(K_p, 0x01 || H(Messages) )</t>

<t>MAC_S = HMAC(K_s, 0x02 || H(Messages) )</t>

</section>
<section anchor="key-derivation"><name>Key derivation</name>

<t>The key derivation is performed differently depending on the performed Exchange.</t>

<texttable>
      <ttcol align='left'>Performed Exchange</ttcol>
      <ttcol align='left'>KDF input field</ttcol>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Length (bytes)</ttcol>
      <c>Completion Exchange</c>
      <c>Z</c>
      <c>ECDHE shared secret from Key_P and Key_S</c>
      <c>variable</c>
      <c>&#160;</c>
      <c>AlgorithmId</c>
      <c>"EAP-UTE"</c>
      <c>7</c>
      <c>&#160;</c>
      <c>PartyUInfo</c>
      <c>Nonce_P</c>
      <c>32</c>
      <c>&#160;</c>
      <c>PartyVInfo</c>
      <c>Nonce_S</c>
      <c>32</c>
      <c>&#160;</c>
      <c>SuppPrivInfo</c>
      <c>OOB-Nonce</c>
      <c>32</c>
      <c>Reconnect Exchange without ECDHE</c>
      <c>Z</c>
      <c>Association_Key</c>
      <c>32</c>
      <c>&#160;</c>
      <c>AlgorithmId</c>
      <c>"EAP-UTE"</c>
      <c>7</c>
      <c>&#160;</c>
      <c>PartyUInfo</c>
      <c>Nonce_P</c>
      <c>32</c>
      <c>&#160;</c>
      <c>PartyVInfo</c>
      <c>Nonce_S</c>
      <c>32</c>
      <c>&#160;</c>
      <c>SuppPrivInfo</c>
      <c>(null)</c>
      <c>0</c>
      <c>Reconnect Exchange with new ECHDE exchange or cryptosuite change</c>
      <c>Z</c>
      <c>ECDHE shared secret from Key_P and Key_S</c>
      <c>variable</c>
      <c>&#160;</c>
      <c>AlgorithmId</c>
      <c>"EAP-UTE"</c>
      <c>7</c>
      <c>&#160;</c>
      <c>PartyUInfo</c>
      <c>Nonce_P</c>
      <c>32</c>
      <c>&#160;</c>
      <c>PartyVInfo</c>
      <c>Nonce_S</c>
      <c>32</c>
      <c>&#160;</c>
      <c>SuppPrivInfo</c>
      <c>Association_Key</c>
      <c>32</c>
</texttable>

<t>The output of the key derivation also depends on the used exchange method.</t>

<texttable>
      <ttcol align='left'>Performed Exchange</ttcol>
      <ttcol align='left'>KDF output bytes</ttcol>
      <ttcol align='left'>Used as</ttcol>
      <ttcol align='left'>Length (bytes)</ttcol>
      <c>Completion Exchange or Upgrade Exchange</c>
      <c>0..63</c>
      <c>MSK</c>
      <c>64</c>
      <c>&#160;</c>
      <c>64..127</c>
      <c>EMSK</c>
      <c>64</c>
      <c>&#160;</c>
      <c>128..191</c>
      <c>AMSK</c>
      <c>64</c>
      <c>&#160;</c>
      <c>192..223</c>
      <c>MethodId</c>
      <c>32</c>
      <c>&#160;</c>
      <c>224..255</c>
      <c>K_s</c>
      <c>32</c>
      <c>&#160;</c>
      <c>256..287</c>
      <c>K_p</c>
      <c>32</c>
      <c>&#160;</c>
      <c>288..319</c>
      <c>Association_Key</c>
      <c>32</c>
      <c>Reconect exchanges</c>
      <c>0..63</c>
      <c>MSK</c>
      <c>64</c>
      <c>&#160;</c>
      <c>64..127</c>
      <c>EMSK</c>
      <c>64</c>
      <c>&#160;</c>
      <c>128..191</c>
      <c>AMSK</c>
      <c>64</c>
      <c>&#160;</c>
      <c>192..223</c>
      <c>MethodId</c>
      <c>32</c>
      <c>&#160;</c>
      <c>224..255</c>
      <c>K_s</c>
      <c>32</c>
      <c>&#160;</c>
      <c>256..287</c>
      <c>K_p</c>
      <c>32</c>
</texttable>

</section>
<section anchor="sec_keys_reconnect"><name>Updating of keying materials</name>

<t>The client and server commit to new keying material at different positions in the protocol.
If the final Client Finished message is lost, this leads to the client committing to the change and the server keeping the old state.</t>

<t>To circumvent this issue, the client will save the previous keying material until the change is authenticated by a following reconnect exchange.</t>

<t>Upon Reception of the MAC_S value from the server in a Reconnect or Upgrade Exchange, the client will perform the following steps:</t>

<t><list style="symbols">
  <t>The client will execute the key derivation using the current Association_Key and calculate the MAC_S value.
If the received MAC_S value matches the locally computed one, the client purges the Prev_Association_Key, Prev_Cipher and Prev_Version values, if they are present. The previous values can be purged since this authentication proves that the server committed to the state change in a previous Upgrade Exchange.
Afterwards the client calculates the MAC_P value and sends the Client Finished message.</t>
  <t>If the MAC_S value does not match, and the Prev_* values are empty, the client sends an error message and aborts the key derivation. <!-- TODO which error message? --></t>
  <t>The client will execute the key derivation using the Prev_Association_Key and calculate the MAC_S value.
If the received MAC_S value matches the new locally computed MAC_S, this indicates that the server has not commited to a previous update of cryptographic keys in the last Upgrade Exchange.
As a result, the client will move the values of Prev_Association_Key, Prev_Cipher and Prev_Version values to Association_Key, Cipher and Version and pures the Prev_* values.
Afterwards the client calculates the MAC_P value and sends the Client Finished message.</t>
  <t>If the second MAC_S value did not match either, the client sends an error message and aborts the key derivation. <!-- TODO which error message? --></t>
  <t>Finally, if the current exchange is an Upgrade Exchange, the client will save the newly generated Association_Key along with the current cipher and version into the persistent storage.
The previous values of these fields are moved to the Prev_* slots.</t>
</list></t>

</section>
</section>
<section anchor="error-handling"><name>Error handling</name>

<t>TBD</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>This document has a lot of security considerations, however they remain TBD</t>

<section anchor="eap-security-claims"><name>EAP Security Claims</name>

<t>TODO. See <xref target="RFC3748"/>, section 7.2.1</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has IANA actions, if approved.
What they are exactly needs to be defined in detail.</t>

<t>The EAP Method Type number for EAP-UTE needs to be assigned.
The reference implementation will use 255 (Experimental) for now.</t>

<t>Like EAP-NOOB, this draft will probably use a .arpa domain, in this case probably eap-ute.arpa, as default NAI realm.</t>

<t>Additionally, the IANA should create registries for the message types and the message field mapkeys.</t>

</section>
<section anchor="implementation-status"><name>Implementation Status</name>

<t>Note to RFC Editor: Please remove this entire section before publication.</t>

<t>As of now, only a partial implementation exists.</t>

<section anchor="server-implementation-of-eap-ute"><name>Server Implementation of EAP-UTE</name>

<t><list style="symbols">
  <t>Responsible Organization: DFN-Verein/University of Bremen</t>
  <t>Location: https://github.com/namib-project/eap-noob-ute-server</t>
  <t>Coverage: Only Initial and Completion Exchange implemented</t>
  <t>Level of Maturity: research</t>
  <t>Version Compatibility: Version 01 of the individual draft partially implemented</t>
  <t>Licensing: MIT / Apache 2.0</t>
  <t>Contact Information: Jan-Frederik Rieckers, rieckers@dfn.de</t>
</list></t>

</section>
<section anchor="client-implementation-in-esp-idf"><name>Client Implementation in ESP-IDF</name>

<t><list style="symbols">
  <t>Responsible Organization: DFN-Verein/University of Bremen</t>
  <t>Location: https://github.com/namib-project/esp-idf/tree/namib/eap-ute</t>
  <t>Coverage: Only Initial and Completion Exchange implemented</t>
  <t>Level of Maturity: research</t>
  <t>Version Compatibility: Version 01 of the individual draft partially implemented</t>
  <t>Licensing: Apache 2.0</t>
  <t>Contact Information: Jan-Frederik Rieckers, rieckers@dfn.de</t>
</list></t>

</section>
</section>
<section anchor="differences-to-rfc-9140-eap-noob"><name>Differences to RFC 9140 (EAP-NOOB)</name>

<t>In this section the main differences between EAP-NOOB and EAP-UTE are discussed.
Some problems of <xref target="RFC9140"/> are discussed in <xref target="I-D.draft-rieckers-emu-eap-noob-observations"/>.</t>

<section anchor="different-encoding"><name>Different encoding</name>

<t>EAP-UTE uses CBOR instead of JSON. More text TBD.</t>

</section>
<section anchor="implicit-transmission-of-peer-state"><name>Implicit transmission of peer state</name>

<t>In EAP-NOOB all EAP exchanges start with the same common handshake, which mainly serves the purpose of detecting the current peer state.</t>

<t>The server initiates the EAP conversation by sending a Type 1 message without any further content, to which the peer responds by sending its PeerId, if it was assigned, and its PeerState.</t>

<t>In EAP-UTE, this peer state transmission is done implicitly by the peer's choice of response to the Server Greeting.</t>

<t>This adds probably unnecessary bytes in the first packet from the server to the peer, since the peer already knows the server's supported versions, ciphers and the ServerInfo in the later exchanges, especially in the Waiting/Completion Exchange.
However, this increased number of bytes is negligible in comparison to the elevated expense of an additional roundtrip, since this would significantly increase the authentication time, especially if the EAP packets are routed through a number of proxies.</t>

</section>
<section anchor="extensibility"><name>Extensibility</name>

<t>The EAP-NOOB standard does not specify how to deal with unexpected labels in the message, which could be used to extend the protocol.
This specification will explicitly allow extensions. They are still TBD.</t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>





<reference anchor='RFC3748' target='https://www.rfc-editor.org/info/rfc3748'>
<front>
<title>Extensible Authentication Protocol (EAP)</title>
<author fullname='B. Aboba' initials='B.' surname='Aboba'><organization/></author>
<author fullname='L. Blunk' initials='L.' surname='Blunk'><organization/></author>
<author fullname='J. Vollbrecht' initials='J.' surname='Vollbrecht'><organization/></author>
<author fullname='J. Carlson' initials='J.' surname='Carlson'><organization/></author>
<author fullname='H. Levkowetz' initials='H.' role='editor' surname='Levkowetz'><organization/></author>
<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='RFC8949' target='https://www.rfc-editor.org/info/rfc8949'>
<front>
<title>Concise Binary Object Representation (CBOR)</title>
<author fullname='C. Bormann' initials='C.' surname='Bormann'><organization/></author>
<author fullname='P. Hoffman' initials='P.' surname='Hoffman'><organization/></author>
<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='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<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='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<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>




    </references>

    <references title='Informative References'>





<reference anchor='RFC8152' target='https://www.rfc-editor.org/info/rfc8152'>
<front>
<title>CBOR Object Signing and Encryption (COSE)</title>
<author fullname='J. Schaad' initials='J.' surname='Schaad'><organization/></author>
<date month='July' year='2017'/>
<abstract><t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined 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></abstract>
</front>
<seriesInfo name='RFC' value='8152'/>
<seriesInfo name='DOI' value='10.17487/RFC8152'/>
</reference>



<reference anchor='RFC9140' target='https://www.rfc-editor.org/info/rfc9140'>
<front>
<title>Nimble Out-of-Band Authentication for EAP (EAP-NOOB)</title>
<author fullname='T. Aura' initials='T.' surname='Aura'><organization/></author>
<author fullname='M. Sethi' initials='M.' surname='Sethi'><organization/></author>
<author fullname='A. Peltonen' initials='A.' surname='Peltonen'><organization/></author>
<date month='December' year='2021'/>
<abstract><t>The Extensible Authentication Protocol (EAP) provides support for multiple authentication methods. This document defines the EAP-NOOB authentication method for nimble out-of-band (OOB) authentication and key derivation. The EAP method is intended for bootstrapping all kinds of Internet-of-Things (IoT) devices that have no preconfigured authentication credentials. The method makes use of a user-assisted, one-directional, out-of-band (OOB) message between the peer device and authentication server to authenticate the in-band key exchange. The device must have a nonnetwork input or output interface, such as a display, microphone, speaker, or blinking light, that can send or receive dynamically generated messages of tens of bytes in length.</t></abstract>
</front>
<seriesInfo name='RFC' value='9140'/>
<seriesInfo name='DOI' value='10.17487/RFC9140'/>
</reference>


<reference anchor='I-D.draft-rieckers-emu-eap-noob-observations'>
   <front>
      <title>Observations about EAP-NOOB (RFC 9140)</title>
      <author fullname='Jan-Frederik Rieckers'>
	 <organization>Deutsches Forschungsnetz | German National Research and Education Network</organization>
      </author>
      <date day='7' month='March' year='2022'/>
      <abstract>
	 <t>   This memo is a random list of things the author noticed about EAP-
   NOOB when looking at the draft and running the implementation while
   capturing the packets (https://github.com/Vogeltak/hostap).

   Most of the statements were written down before the author started
   the implementation.  By the time of writing this draft, a mostly
   complete server implementation has been written.  The implementation-
   specific remarks are mostly thoughts the author had while planning
   their own implementation.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-rieckers-emu-eap-noob-observations-00'/>
   <format target='https://www.ietf.org/archive/id/draft-rieckers-emu-eap-noob-observations-00.txt' type='TXT'/>
</reference>




    </references>


<section numbered="false" anchor="Acknowledgements"><name>Acknowledgements</name>

<t>TBD</t>

</section>


  </back>

<!-- ##markdown-source:
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
8lH8E9u3Z2wiHapl6Ci9V/LWMD+bojPBv90wIV/aMBp9FtCKf/ETlzX0bU+U
P2K9XvfrrWi/sv/aaLZ9r7dCuYyi+N9H/W8c7R5+B+v9g5xe7iflPNn8MvDU
5mtziuo5TmH/Zwen7w5O1Y+nBwfnh0c/Uirdyv7hv3dObxWTthuopd1m+yBQ
fjP8nzrfOv7bJxzhf+/14cHReTDf7VvN1063G/CL1vZuvl1rt3TZaPkS8/38
9f3p4K9nr3ZPDyjrbt18Lechs7vrAt8r238S/J+/Xi8Pjw7PXh3sq41H6+H/
JHg+tb3gX1hZA+9t+L9d/xiIZUU4c9njEpCtKyycWXi3drA7PN2MNkyosnhL
p/1UBImMIsyo74JKX7Mu28yOLks/e7S4YbGwZWyNhyjgqLae9CgMNi61mUbn
k1nM4RHtHlHfZtcl9gWSiKN22AjFhpOKTL4sZoO0t0Ad4vbOs147s2r08D0n
hok8tQd4MT2GnNf2zKXt7lCc+5RZZ9J/6bbkAUkfT2foBkjQhQv2O3csypH+
QBUBwjAPRSmiYKMNTkjw0JlAHD2wW9dhruvnu9F1zm5ANsO9KWF5juu0QC0p
QUlWhUpgMp9nLpjWoJPkEjYHnj8OzlL3xZ9aPxPCGG6cFMH4kTuTAEi96SRQ
fOQjJkLKdOh8+wfgPJwNsQfWbjpecgjYDo3U05aTkcjpBgrgsp0e7//vA6WL
zGsTQhlrXk1bUI6V4HxZGfO7cZaKOeZCFCGtOcurRmPOEF93EilS19BOXou/
JCt1MgLt8lwyViNlr3DMhRffp0MHrEV2jLEKdrfu16rrvUyXzAeEBkugs8Rm
Y6CltRKpNooTHpoKuCCBRvluaANRz5ZPMLWxzSrMGHAjfqiIKhuH8UbpiDa4
O58fIZHs2a868Q06sSzYCr34d6kTK68o/g504r3jNyevD/AUtcJz3wewPzYe
b9b7V15HtPmTXxT+X1XHEhqr61h1EWR1rBaZ0Fl5AC8SW8AZx2Rps0TnM2At
B00xm6fh0m5Rzz5HuHgm6vIK5DjCeuY5nDp+lmFpDHLkBedOayw5dgOih2CF
LAmmQ3pjiyaVNo5ZelEZDGLBc/UvcumgG2OofRDABkpXB2XsZbeBkCy9wID3
MDGSL1ZPiOYD5U4rptyM/LMkMr275nCwkmw1UkPwwHyXdcMq1YNSigLVtYF1
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
3K3/9LHzyw7QPaFKjz6yQfI/QAJAsE6SAAA=

-->

</rfc>

