<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.2 (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-00" 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="March" day="07"/>

    <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.</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 of 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 the following parts:</t>

<dl>
  <dt>type:</dt>
  <dd>
    <t>one octet to indicate the type of the message</t>
  </dd>
  <dt>length:</dt>
  <dd>
    <t>two octets indicating the length of the following message payload, not including the optional MAC value</t>
  </dd>
  <dt>payload:</dt>
  <dd>
    <t>the CBOR encoded message</t>
  </dd>
  <dt>MAC:</dt>
  <dd>
    <t>(optional) the message authentication code</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.</t>

<t>The message payloads are encoded in CBOR <xref target="RFC8949"/> as maps.</t>

<t>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 ciphers supported by the server. TODO: Not yet sure how to define them.</c>
      <c>4</c>
      <c>Integer?</c>
      <c>Cipher</c>
      <c>The cipher 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>?</c>
      <c>Key_P</c>
      <c>Peer's ECDHE key according to the chosen cipher</c>
      <c>12</c>
      <c>?</c>
      <c>Key_S</c>
      <c>Server's ECDHE key</c>
      <c>13</c>
      <c>null</c>
      <c>MAC_S</c>
      <c>Indication that Server MAC is included</c>
      <c>14</c>
      <c>null</c>
      <c>MAC_P</c>
      <c>Indication that Peer MAC is included</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 inclusion of MAC_S or MAC_P indicate that the MAC value is appended to the message.
The length of the MAC field is determined by the used cryptosuite.
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>

<t>TODO: Depending on the definition of the Cipher Suites, the format for Ciphers and Cipher might change, as well as Key_P and Key_S.
The most immediate choice would be COSE <xref target="RFC8152"/>. But maybe there are better choices out there.</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>ServerInfo</t>
      <t>Directions</t>
    </list></t>
  <t>Optional Attributes:
  <list style="symbols">
      <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>PeerInfo</t>
      <t>Direction</t>
      <t>Nonce_P</t>
      <t>Key_P</t>
    </list></t>
  <t>Optional Attributes:
  <list style="symbols">
      <t>PeerId</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>
      <t>MAC_S</t>
    </list></t>
  <t>Optional Attributes:
  <list style="symbols">
      <t>PeerId</t>
      <t>AdditionalServerInfo?</t>
      <t>RetryInterval?</t>
    </list></t>
</list></t>

<t>TODO: Maybe make MAC_S optional, if used in Initial Exchange</t>

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

<t>TODO: Maybe make MAC_P optional, if used in Initial Exchange</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 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.
The third option is a reconnect with a new version or cipher, this is TBD.</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 or 0x02 if the server offered 0x03.
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 ECDHE public key and the message authentication code MAC_S.</t>

<t>The peer then answers with a Client Finished packet, containing the peer's message authentication code MAC_P.</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, MAC_S       |
  |                                       |
  |-- EAP-Response/EAP-UTE -------------->|
  |   CLIENT FINISHED (4)                 |
  |   MAC_P                               |
  |                                       |
  |<- EAP-Failure ------------------------|
  |                                       |
]]></artwork></figure>

<t>TODO: Do I need MACs here? What are they really for? (see <xref target="sec_keys"/> for more thoughts on this)</t>

</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>Details still TBD.</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.</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.</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>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 MAC_P value and send a Client Finished message to the server.</t>

<t>The server then 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>

<t>TODO: Reconnect exchange with updated version or cipher suite</t>

</section>
</section>
<section anchor="sec_keys"><name>MAC and OOB calculation and Key derivation</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 one octet message type, the two octet encoding of the length and the CBOR encoded message payload. The optional MAC value at the end of the message is omitted for the MAC calculation.
For the calculation of the MAC_S value, the Messages field also includes the Server Keyshare/Server Completion Response message. For MAC_P the Client Finished message is omitted, so both MAC_P and MAC_S have the same input.</t>

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

<t>Messages = Type_1 || Length_1 || Payload_1 || ... || Type_n || Length_n || Payload_n</t>

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

<t>TODO: Calculation of MAC_S/MAC_P</t>

<t>Idea: For initial exchange MAC_S/MAC_P = HMAC(key, Messages), and for completion exchange MAC_S/MAC_P = HMAC(key, prev_MAC_S || prev_MAC_P || Messages)</t>

<t>TODO: Key derivation. Here I have a problem. If I want to send MACs in the initial exchange, I somehow have to make a key derivation already. Maybe this is too costly. Maybe it would only be necessary to save a Hash of the previous messages during the InitialExchange and include it in the KDF to cryptographically bind the Server/PeerInfo to the connection. This way, the Initial Exchange wont have MACs, the integrity check is done completely by exchanging of MACs during the Completion Exchange.
This will probably be more clear in the -01 draft version.</t>

</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>There are no implementations yet.</t>

</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:
H4sIAHzkJWIAA+0923LbRpbv/Ipe6yFShqQt2Y4T1SQZWaJjzdiSVpKTnZrZ
SoFAU+wVCGDQoGhu5H/Zb9kv23PrRuNCSXYyUzu7dlUiEujL6dOnz/00R6PR
4GZfPR3EUbWvbJUM7HK6MNaaPKvWhd5Xx5PLV4Oo1NG+upgcDlZX8CirdJnp
Sk2yK5NpXZrsSl1G9lq9ystYDwZJHmfRAjonZTSrRqXR8bUu7UgvliMdFaNl
pUdPngwGlalSaPXondXlKIJJbaUTdVkuLYxtq2iaGjtf6KxS25ODs9G7y8nO
o0E0nZYaYH4kjx4N0igDqHQ2uF7tD5QaKXnjPtPf4/xyEC2reV5yGwbwj1E2
elXqBNZwrc4FTnivVF7CmEd6Wdl4ri2uDD4ssysLC/9Pdat+0OUiytRJVAGq
olSda6ujMp6rKEvUJFnG9EKd6GqVl9c0pK1KrQHNB6l+D610WaQRjLVLL+M8
AXh2n+y++Jq/m2q9r17qMjWZNFhmVQnPeOY1PdSLyKT7ymH4D8ksGyeaXjk8
Hb06oe/L0uyr1Wo1ljaDLIdxKnOjESFb568O93afPNtX80UUwwP4/vTFs68B
r1Eh7188f7a3D4gz/Prrb559s6/iaV4OBiabhaPh293n0DjOrebv3+w+e0KD
ZXk+hUfHo6PxBvLAFqN8CkRxQ0i0+7SALSGX0+ANrDJfVrThJ6enL9U2zKRw
qh3uUu84fFHKwFjqj+PRq3Fzs+HVffSw5Uji1cmwsQVbSVRBz70ne3v8HaAz
2iJG/LzuxIyOcMUbz0Vn4XhKaAjGrh/v8t8uYaOqqrD7jx/jnhpdzcYA32Mk
QdiExyZ5/BGTjKv31WBwo7Mlbd9VmS+LfcSqeqsBgYl6V+Aq1TYMgphlqoMv
f3ATDwaj0Qh2A2g8imGsy7lWk/eVzqyZplodwD7AOTZyKs7KvMrjPKVzvaOK
Mr8xCZwyuyyKvKwULFctlmllCugbNfsuCCI7himMVcBqlsQhEj0DXmRVhRPz
+e/vSYNH6n6eM4Wjq3VGIxbA5ehk4xdEnS7HvEbAkYwL0BjYZzjYPMc0zytE
R1Egf/QkkM9GADkwErUNPGkHAL8xMQC+MjAK0HJR6jjPZuZqCXTYXkKMtAlf
o9Ty/BUBrhuAAyARUIG+gf7TNTSJMrswVYVgRCrP9CgxMIkwLpgTYZri6rbh
DO3AeqyNrvR9CFBVHoKn6ZXJeCT9Pp4DW9YMJfVeIKTz6AZ2FEaANSZRuYYO
BSwa0AVw4CdEYTmLYj0EakB2CotRibHAK9dDFcMpLaOhWpi4zIs5rAWaFToC
Ch8qwEB2jYtMzdW8GuKg9Almy2wODWwOMEZAK2s47QBzmq7Vlc5gRKQBWTbv
hELSVfkMEFhp3FiV6uwKnsfA9Ke6Rip0hHkAnRqOXTLmc7AwSZICi93CbS9z
kAaI7EGHZG1cmqnGFQa0Weorg3SDXYYtAhjSHlzrtUIWxQeYOmUsZ0aA1gy2
FqASuhoCcRQ6NrRYWlmar4AvLwDZTnYV+Up21y6gHS4oy3knIoK83hVbb4sj
XEIpaAiqiODoAsqQDryOAN9Dcid6sNp3XkRrBEZvIH8m7yiLgYtbhIvoB4Ar
cji6U5OClEQ6FPwDIgURyg3CKCIYdQaHhFnEAjsJrpAYYbKUBvIDjNu7tbTC
XaaRNTFunrnKAFyTxcSmphqWmXj+Q+JIdtVtdIJ09MsvIg0/fCCUR2ZhcWaz
QDYIhwuxgTusU40TW4fSwjFNaAxHs8ItS5ISqJZegyKWWKIFwLPDr3BJg4g2
GSwxZAxLi4fl8OXpORNGBgstYWkwOVI8MMYowcn/eHF6gpPqDJUUmswd7/rU
IL5Oj0731WXAgD3IwK8AtymQnoW+JBZA8gxxrDXRjq0MEN7ly6Oxeon4RXKl
1/WxxJP3H0gOgPF0CYDA6o1Q8MzoNJGTm+lVuhZ5gPBFGZLfmGUS001K2IQ/
C8Ku3y+EBHhNvLTWbdbH6CkfPoxVk2i8ZIsUncKZY+SrucFTJHsf7COcDaDL
GA4PgrylDvPsBs8/KTtALke4Llq25RUhqQDBwuofvX13cfloyH/VySl9Pp/8
67vj88kRfr54ffDmjf8wkBYXr0/fvTmqP9U9D0/fvp2cHHFneKoajwaP3h78
+RFzpEenZ5fHpycHbx4h1qoGDhCpRLLMReCAI3uK7KBxLF4env33f+0+A4z/
C6miu9/A+eAvX+++eAZfVsAHebYcKZm/IgENQMSC7o2jIPeKo8JUQHBDZFJ2
nq8yNdclSKLBl39BzPz7vvr9NC52n30nD3DBjYcOZ42HhLPuk05nRmLPo55p
PDYbz1uYbsJ78OfGd4f34CEfRDUr9d+WgP8UDzqyUtBZgWQCeYKKO0rmwYAF
OpJb++QKF7SsLvRqWczkkFi3asXuFMa7MXoVcgUTyEIA5z1pKlN32oHsC4Oq
U5kvnMEwVhcgFNIEiafUSOUkYi87swNTASZOA9sCJLMCHo7iYpGXrKPFeIxK
y+cU9Yg0hbkmwsasp9rGKR0PJsAvfSscBPVF4hkWuGgJnAcHJ0xb4BAgaqEJ
SkJTwvE9zhSCTJrSFYonRBtsBjwwCzoUiU4NqVLwggXGg1QvIO0KFJIImCEu
1GoQvaiBdVZKhw8lg8dbTmCnNWsG1bGshHVGCrsiFnG+uFwXVW6XpsIxrnJQ
Oyv3joBK4CTHjKgjXYDmi/JEpBWI1BJPPwwP3Z0Ic0txy0jMbKapnfZbQeIA
hB9qMQD08SzUOfMyGKjUvG+A1Iy1Jo1KA005bE/mZwD1IUPVQzQplplE0AUo
BrypaWoKOCPqcAld1RFAafTotU5TMPtqmSpUxPqOQa3c0wrrve2nQCkWzBoi
N5BmSMOvwJQC7QPUKhBriGfYByEIgTtrrzlUuhFDB7NKerTnG3qKq00d+F9B
+9FjOVSgSFsFqnYsCyBiFSK1aDo0qFRgpRPrIazy1n7517XZ4BoD8D/NTdoh
DFrmKjJksuD2oL6aaqI+ISWE4wKWMqxnBt5IYl2Hs4GeQxolanow2pAUvzlI
choXdFkgBTtbpk6jJ9dXOIksVnadx5cDD4cGThLvKW2p+klg9htO3qBwm02D
nOcgorK8UmvQlJ0N0Z0Zz0CXLkKyILV40wBDpz7eBflhjeGaho/5dPW8u+N4
Oepom6456kG543agBtyYfGm9xej1PMfqWsjvBYPsh3oZiOkL3tLx4BTPUw/X
YWQVYM/k5QI1kZAKepc6zYE3AnsrcoP6uK1QqhCTK3XEyozNY+GOAEaBTBTO
GbG/vOQ95FN6/2R9EKPqC0eR3p07ag775AIK2S+rBjxOJxZ2flVGBeieamqI
Xdv6nNcsAjFPbMIwdcJsuA/l2nGpTTCabCbbu1hWS2BELRrwRgcP4LGURFXE
aAVcem7WS5LkAnvYPzmMH9FjPKJ/44/ocst/fnRdfjfq/Pudb9zzEt8PeO7v
btW7UI5tP9mB4R1Pv/XMBRkXOTt34f1AgEA4trWTYDv01E3wHQHZeqvqvp8M
8+3D0OMmQp8bOcqrANnBvy+4Ga7tGN1CvXPchnQRPN7QuB+q3sY/9jf+URp3
EPG7sFUfDqnjF6NbWHO9qU93mkvg9Z473r295zaVANyuTwns2u3vg+F71uY6
fgKov+yrLVKcFugiAEFP3vZvXZRFXdApH53hqT8I2MsF6XdvudOjD2QFvBVW
jl+21A/kYUvdU8W+bGCIaRpo8c7IZxXbCeBZjj4DJHp0Ltn9wYCiUoN90kVy
UBEr8p0AL/MuSGzh+su4gwF777AjWQbY0bpujiGJh68ztRNoRbRO8ygZEk9k
J4TrmhfiiHh7cKhuonQJU0pzmhO5GfpZ2IWS1HBBe2yw7QbYCcHuE6GDwTls
UXldq1US41CKNRRGL7JucpZEaga2SMUhB5DolXPDkK6/BoaOlEhwgzobL1Px
M9aMHl4FzpfWBqGvAhCfkRj0Mr12ChFIofcHxgG7Ze2dNzhQ6BGq5/VPHeKt
035zjDSx0Si+oMQZAp11sL617jgoaTtkYDGNWvvM07kdg/GpC7nvMPSF7jt0
qxXopzlGVxF8RnsCXuAEtWnjxmUnFUl4U6KMNlfkoaJuXu0h8sWZUxLGMPgt
HC9qcqsu8eWtehNNNUqEI/KgFMxHBp7f3zb++L/yDcbbdfzloCxBgQKUoL/2
CnX8W/Ujm4D4EbFy475KcEaCCnUcBGOjLZdPVfdDQtxF4NSem1TmqqdqzuSN
PzcPaRo4wtMG2N8jHzUg00oHaizfNkLKvogTUbgtKORqnq/YEJ8R0wMJOaa5
nrWgrWdrTLYZ2Ofd5R65sIsDGDj/KHi4Ee4n75/sktjH0UdVPnL2M7zYY0OG
2TO8wib04qlEoYClITxf3QFPHzi9Kxsr8WVNvfVHsOX0dw9U5WVFdhi8b4KQ
BGsHaF44aIC04f8sXY6zWU4ASjAZfQ0U3w09H3p8Ncb43fkbpwiN5ICN6twF
muPr5hwouu6cgTFH44OZv5xFcQUUUj7GgC6w9my5mMrefuNG5ujQLZAUcK2f
z2QW/kotd5/0trzwaw7b7kpbpLU/6bUf7wurJodHryfk643iOC9Z8LAhHc9z
qzNHjzTQXmugerrGUNT2qbTNlimyFGCg1PxYZKMLngi0yF8p0Clsl4Z41h3i
rGeIM71pgOcyADkFZacSh8xjingC85TFfdXCKFIAtQ4adu137vtC+oIdp1At
q8o1RapuSME+4R0m7x7GJ8k3j24IMUpAloIZD0D3WaI0/tcNijvwAYoGfdeP
lbmD1B27Qm2DWJVrAOgD9oVsCpU2kTpOX3srX/Fs1CoHkAvqZuyFBcw7Jwfv
dl7KngV6VFR5eUr6DEWVi4LD20J5Deu8qT1hP5J32A/9hOWCwjHCS8gjHfgX
x4MDv1HOJY+6RRWB3CX+wZCikCRQhxwEIC1wJnETgtO6CC0oI5ai4RmFV50r
hXEauCtZb0h8WMUrCHyeLhA8FtpOtSLUiqhBgKTlgmLNziQH3WCl4TjAXz7K
2JLOIqNrkWMka7HQiUGEwyE2wAZWztt9eHoxEV1j9/keBpZewt4vojV7t0pW
ESQMyJ2tEvqhWMcWqt6X83wJQNmAthYtLdzHvsK4JMU6KewH4DsCGqN338fM
2I7nNu2omYsW7I13selHB9EGA69SNPzxbhecYu4gs+zSmaLHnPTTBE0tMBa+
JPPExL4lKMlKiU4qWjDQpVnU7N2H/HG/0FsGcitsFi0wDwubgTZpyaNYq6xC
IBSjIsd/0wxxYcp6XRojFyBn0jX6HF7nK00yjpbuYaZQA8anI9Ao48qG2jGH
wIdqmaUYQKzDjIH6XFsEeOzGhAHdikcSoOzfDCK26J70po0DPuMQtVsT6qtW
citgAKZg6X3jIn8S4MTZvwwizpZ3R0beJtFLut1OsFEFwIRhmDmlglhK6QBk
zOEvesdb2waci0+0be48qyYNI8SQ1zJAo0ONbHviABOO4vdMVqubm+xR5/me
gEBRfiIX8fg6WtKzGWY7AYroZc8otksWzGamPoJNU8CmzJaordT9nd4+pEgp
eQBlORw34Vgc08Mbc60bO1JjrfIGXHgYNLI5YxfEC3sopN8AIlLxFACCqyfv
gPY9h1VW5spZ9GGsvj3ZiuIH11oX3q/I59JhFzZ86Ce0PTPK7rqzcRAGx0KM
Oe2ChFgEJ878bRk8LofBoW4HwWlgRwI4IZndawAuL6BliWy6NksBUFC0iavU
gEvmFHTOMzR+mfiGnpjIjse5JPLHnnGSkQwL6rNNWgu1Dx8kPM18lov1bEHY
u/BgfIDcnKMI6JiO6i2NbB0fcpJj0CThXt8E+5KXV1fa8gKItMjEaMos3g48
/pgFoFNMHwK42dkkauoVZtqi7xeIzfmdLimfeReenLvzfVBVpQG+oCnF9Etv
+tIXEfH0udbf6Gtts8Fop44i26M11MvvGb7D1OCJ8PC1wdt7AHgBdPTRGTZN
0Oib2CX0mdSQu+BltbuBR+hj54DuDpxP74KT1Jxgfv5MGtwD5sePfZrz971I
ZX3uLSlGi+haO5VWJiEH0FL0knZ4tLElr+Ac2blOOkt9dtdSSRndAMXZJ0AR
WBbnHKrrwPP8LnjCDRd83oFxNp0aO94AgNMZOhB8dT8ED9zyEADBwEaSe3HX
rAHtdGm+kZlyQWkxWKbAETmMmhah4o8asVv6Y7YpqzVwTdBbq2EYgI3SVbRG
ZcKu0BSQDArB4w9ywqWj2ibX3e6OuETbrcTWYd2u9gP1SPM4sDxQbw8cK1Ga
w1CcvgrD1EcH2GPH4iFHlaRK+O9gSeQuzzFDY5yhH7ssDGpk7Oa0CwIryXUd
1ma5BQqXz64gP1YQISUQTNWYXIjB4WcoCXOSrBLmOryGGYFgrnWdK9KCsh03
kz8+5BIgoZOwgeqaJB9gbDIITVOAlJMu0RzGQy+JEwKFS5nBXFzvVEM5jI77
OheCvU4e7DpXTAGjk9xWCfiC4WHSuqmP9wN2G8HyhwDgcjWcW60mgSjrZlFE
mJ5wtUwpy455r60zKUzX29LMAkEsknUmqSSoaFy6CUmJAFMdleSNXJCjPIaW
E27q4/4gcT8hnHdyhEzFGchEeUHWFZBdoL92Q+62eSJWEeYFRMFWuXRmVLsp
mdd1pDkftOQhU7tTa7tA+EnIo9cHUYN6fCLAg+ABzqku5hw1Yc7XOYEbIKI5
2MnYrAIA3a9MRCaSO6kNHCcvuDAApv0Qr6u1RswPZmHRFaKXfccXj25pkKn0
BBRxWRhSrPOnulx5sUB2SdGrEGc1A9XoJoza/MrzzcsuL2vy+oL9u+LEbfN7
x+6ZrfpD3J+e5NKg0H9G3jEha/GLSZqb9W6InOi7FWzAs2KqLzoSakw+mTo6
0GZYMldPUKCV8uRmxfDAeFArei7feyO2nJo7RDohp7ljx0XoIy+W05RNOwnr
ybxE4xhOFYHdktdO7WjsnMhuD0IkyeXoRqDsO9E7QrXgCxtA1wbJg3xHhJe1
Jpevrpk0s7aa0dJa/SkVWOskG4LovunOYDo2OLO83QiZNwpyYuCufqChCPXA
10hulKwdzE4lj37w7yBMR5Y2vCN1DsSGf803Pmfi9yPR4IiJ1grcaEP7jeO3
ZnPtR6MNGmIjyvpdY/ztk4Pjb4F0/iDVr+OoLKKd3wae1npdRkU7wyMc/2Jy
/uPkXP1wPplcHp/8QIlEG8eH/370yqfYxMNAtxx22wchzfvh/9j1tvHfv+AG
/g/fHE9OLoP17j1ovW65w4D19Lb36x0642MoTv/fYL2fvr9/mvz54vXB+YRy
ju5ar2NiZLe7NcAHNqV/Jfyfvl+vjk+OL15PjtT2s7vhZ2P7gfB8LPyCf2Fl
Hbz34f9h42PwjlXa1OfOShCvrcdQ7I4DV7k6JquD03Iw2PO9+slV4FGmS6kp
MwbE/fdq24Ii+8svVsc/S2rKzFVFVC42JP7BHVasmnWxYXEoGjyhslSbRf1p
5yS68jBleQj6f8sK7bNRhiyrXWVmx7wBWxZEXGqDojGGvZ19zSK0k5ONYQ6f
/QvKyX05983k6iY0FIkNRDVZTjYcqimvu2q+ZFkjUKxt1LhbGNG0vdNbYt2k
wHmFPwSHoq1iY92VmN+Q32gC3bnIKAWiSkChupQ8rob0zz0p0OMg+TggBAn4
W6e8DdveirZOxRoYq1KSUVIC9VALKuGGrd+IVBcXCGsIApqlkpVWZUliEvJZ
+FLSBgrITPqs4tyj4gi6N6g5/5Qqjqrl/j+BinN4+vbszQRLAhUWMU7AEtx+
vtMeX9Ui3yUu/abw/11FptBYW2S2uTynIm/1peoMNlaTNCQD8LUZWVdssHFB
Q0/VFNZ2dHyNPaLwU0RDzQJ9kFlSbO9mffHc87MUq7ipsj0oomox1KbvCA2+
DZIgWA7JaFeKLWIIZZPp1AzVgi6YxIHni7kzGWDYxFD/JIANlI0eyqb70zmn
U3ONAdA4spLR1M5E5OpIr4FQoD77JHlKfe+odFOST2UjLPw0C84QiuCjnpZy
f0Vblt81nHEuo6aTw+lM4qpwotZlRMNzyaMKkwgb+iFX9LBTa3NIqFXE1/Tl
kjvAT0ntWEPnRDI3Q48To9d73FzhRl+Dr/v6LIk/S+I7xv+o9f7jJfFQ/YV5
3L//FvB/+n414L84Oz25mKjtr3Za48N/DtwNfoNfB///EeeB8KbfWBOq5Xlb
GerRbZw+1A3aMHvtCea07WSSnrVAa14GFRTjt2PCks+5KTwmwMvdAT473bZ1
DXHbi2xoh2ru06WGrYotyTHn3DwSkyhncsx0wvGWqPdFfVghqRzdFX/sajBp
nl+rZSEagI8511cPhNdJOfP3uFMpHnXi5jxaHcOTKEx/dG7I6VQrAy16OrRV
103hk9ov0wrD8LEXIX+vgnG3fuHdAvUUwfCd4EgrDNdWKDphEb7/SiehYvLR
egaexP+/asbHjP9ZbfinNOD/nmrDZmXhN4D/s9qwYXxUG7wUllxv0RnuyC/p
JnSgNsEy/eFJIG153sk34fg7KBFly8rspCIEWRW+X8dV4E5IKKaiAK7+DAFK
dQ9FXNi+OZgIkftM6v919jGSwme59ZDxP8uth/LNOtb84mGx5o2B8l8D/z8g
Vu7llgTL+8TXZ7n1d5VbOk7m+h6xtUFmcRC97qMbfZZ0y3XSzUBUVKTKd5sc
HPrU6+CiCVfeGdzLy1eqiBhQH1xRY88dFfiwe6MqGYxS4i2X6fl4bNm6ecNk
0vKRu3vlkQSJuYiOS9L8/YVodmqsqXMDSnShvlQlLNliAP29KXVhovSSyl9n
BvZddOJv2qD6uu5tKc49jmKvVTOJVUhiGc/6ETj2mA03pC5EdlYjr8MhSHBC
8t4HpwNtwykWj++wUl3Iga7A4JMVpDB2xHa9FKog9HXNZ4F9y0WTLlJAt2OP
a9Kp01eDguW/3v71Fr5nOfv9a8LgMLdf8LdUSPHzLnd4Q7vmvp3x/riv4/GY
P1CPrNEja/bIBgMJynyrXuMF4iO+0YAaubl33NE7bO4QrfmxFNGA9I72CZWS
FlMfz6AdTgMftkkd8+PzxbCtqwLv7Y7RtJ8Z7wSu/362AfzmCR+r11iJfexq
86ROcayOZ/AQU7A5wz6TbB3xj7VXN4TGWFKLV5G4mlkqIoraN327PAypNHJp
0VWOKRgWq4jlDbp3qBCX8oCnur7CjSBicF9Hdt6JK3rukyxL5y2R/J7GpYZO
0zaVW9afjl7xRXTBNXOUiTR192LzSXrsL+Jw3E1uZ0SEErdaResN5RirPJOK
EkToUNBZ6asStT6pRsCyy6zOT0II1i0vI21HsMLeKgKGxXA96DSaMiYpeSpO
5cJh7Dx6sisljCI4+C7cSVnSheVZklIl4uXLI7xh9wJvG0doD6VSPfKXOYdX
6LC/L80ruY6C+8SNPkO8vUaL1o+JX3jJt+J5tkR9d5OleNc0k/EYHmuu98ef
+PjwYegr9l+M98a7A7q4/uDk4AEgUjO+JN5SlRuVa9NN+D/JHRJ895KUudcV
M1Pt7+g2WBiCKV313b7uhyeoakpqvPF0O40oHMbdpMR2YampagM4ULMiti5W
3Xv+XG1P3hdwruhtusNX6OcrmJ9Kod2lCN1iV08JXPVKcTXACCJ+6Kt+KeDs
W4YhuCFfnD+L8MLKk4NjStZbYAZBJw+eMGv5+mO53FF+GcAEjuNGaXUnu5xF
nNwQQteJHzdxgtcjLGFjT/KK2A7+fMoEIMH7xM7wgmGcdJHfCK9B64pu52Vq
meoZHgZOb3fi5tLfTpHlnaJkzpbboht1eZesmxavnuDf+UHM7wx8WpwNKg6I
wJOgsyvZqa9wlwtX6fc/wospxoMLvLYgrCVvXMX/q69+p0N3VF9oLFoSX7GB
4NCtGqQdtS7XB65NGZlYcOeyGWmnTAzstX0xbV24RziqV8736QU3KVOtTu1K
J41CSlrmrmrO1fXI7wOQF0EqU5ZlgbEBmFIuenbOc9FGa0CaLghXp+WvCW/c
SY3M2EoSaMTne9cTrPM4RdlazZYlhivIdQ/T0S2nDKv3I7GjCBhBMCbmhTgj
08xIEiIrFR7BeoJrcyHACxphk+TE10trot/JFiObw7LFwcN1PIazde51Ysnd
eEliA66S1YLa//IIKX5UKC8ZonckhnRvaGWVQV1nePFF3emL8Lqx/urSGmqS
1gIJ+qzKsBYq+H2RZhJUf21e6yqADHkbHrn2RR5496y+Ss0V/VyDyUieR6Wx
XJBF1kKqb8j80cDMMybVKAt/F6LMl1kCHLOo8eLvKEGCoAtQ6I58BwjnojYr
YDhfJ1ynrxR2ZWTEP2C2iq5f5vscomBNsMPvDf1KBkrm8NKR+jr7Ey4rjfCH
cYIiWr5VYl3fVAfrYnM1w3XTFW0pXgjoicVHvfi4xO5SIf4dgJwvPZHSKSk4
E22n9SMVhqrePKlz6m99WyNZc+3f7+BfwJkCWpDRH8RIeKlOruTHTH7Zaj/6
AIYy0D2hSicfWFH6H76GwAqZbgAA

-->

</rfc>

