<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.6 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc tocdepth="2"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lake-edhoc-12" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" tocDepth="2" version="3">
  <!-- xml2rfc v2v3 conversion 3.9.1 -->
  <front>
    <title abbrev="EDHOC">Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-12"/>
    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization abbrev="Ericsson">Ericsson AB</organization>
      <address>
        <postal>
          <street>SE-164 80 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J" surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization abbrev="Ericsson">Ericsson AB</organization>
      <address>
        <postal>
          <street>SE-164 80 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization abbrev="Ericsson">Ericsson AB</organization>
      <address>
        <postal>
          <street>SE-164 80 Stockholm</street>
          <country>Sweden</country>
        </postal>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>
    <date year="2021" month="October" day="20"/>
    <abstract>
      <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a very compact and lightweight authenticated Diffie-Hellman key exchange with ephemeral keys. EDHOC provides mutual authentication, forward secrecy, and identity protection. EDHOC is intended for usage in constrained scenarios and a main use case is to establish an OSCORE security context. By reusing COSE for cryptography, CBOR for encoding, and CoAP for transport, the additional code size can be kept very low.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Lightweight Authenticated Key Exchange Working Group mailing list (lake@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/lake/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/lake-wg/edhoc"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <section anchor="motivation" numbered="true" toc="default">
        <name>Motivation</name>
        <t>Many Internet of Things (IoT) deployments require technologies which are highly performant in constrained environments <xref target="RFC7228" format="default"/>. IoT devices may be constrained in various ways, including memory, storage, processing capacity, and power. The connectivity for these settings may also exhibit constraints such as unreliable and lossy channels, highly restricted bandwidth, and dynamic topology. The IETF has acknowledged this problem by standardizing a range of lightweight protocols and enablers designed for the IoT, including the Constrained Application Protocol (CoAP, <xref target="RFC7252" format="default"/>), Concise Binary Object Representation (CBOR, <xref target="RFC8949" format="default"/>), and Static Context Header Compression (SCHC, <xref target="RFC8724" format="default"/>).</t>
        <t>The need for special protocols targeting constrained IoT deployments extends also to the security domain <xref target="I-D.ietf-lake-reqs" format="default"/>. Important characteristics in constrained environments are the number of round trips and protocol message sizes, which if kept low can contribute to good performance by enabling transport over a small number of radio frames, reducing latency due to fragmentation or duty cycles, etc. Another important criteria is code size, which may be prohibitive for certain deployments due to device capabilities or network load during firmware update. Some IoT deployments also need to support a variety of underlying transport technologies, potentially even with a single connection.</t>
        <t>Some security solutions for such settings exist already. CBOR Object Signing and Encryption (COSE, <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>) specifies basic application-layer security services efficiently encoded in CBOR. Another example is Object Security for Constrained RESTful Environments (OSCORE, <xref target="RFC8613" format="default"/>) which is a lightweight communication security extension to CoAP using CBOR and COSE. In order to establish good quality cryptographic keys for security protocols such as COSE and OSCORE, the two endpoints may run an authenticated Diffie-Hellman key exchange protocol, from which shared secret key material can be derived. Such a key exchange protocol should also be lightweight; to prevent bad performance in case of repeated use, e.g., due to device rebooting or frequent rekeying for security reasons; or to avoid latencies in a network formation setting with many devices authenticating at the same time.</t>
        <t>This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a lightweight authenticated key exchange protocol providing good security properties including forward secrecy, identity protection, and cipher suite negotiation. Authentication can be based on raw public keys (RPK) or public key certificates and requires the application to provide input on how to verify that endpoints are trusted. This specification focuses on referencing instead of transporting credentials to reduce message overhead. EDHOC does currently not support pre-shared key (PSK) authentication as authentication with static Diffie-Hellman public keys by reference produces equally small message sizes but with much simpler key distribution and identity protection.</t>
        <t>EDHOC makes use of known protocol constructions, such as SIGMA <xref target="SIGMA" format="default"/> and Extract-and-Expand <xref target="RFC5869" format="default"/>. EDHOC uses COSE for cryptography and identification of credentials (including COSE_Key, CWT, CCS, X.509, C509, see <xref target="auth-cred" format="default"/>). COSE provides crypto agility and enables the use of future algorithms and credentials targeting IoT.</t>
      </section>
      <section anchor="use-of-edhoc" numbered="true" toc="default">
        <name>Use of EDHOC</name>
        <t>EDHOC is designed for highly constrained settings making it especially suitable for low-power wide area networks <xref target="RFC8376" format="default"/> such as Cellular IoT, 6TiSCH, and LoRaWAN. A main objective for EDHOC is to be a lightweight authenticated key exchange for OSCORE, i.e., to provide authentication and session key establishment for IoT use cases such as those built on CoAP <xref target="RFC7252" format="default"/>. CoAP is a specialized web transfer protocol for use with constrained nodes and networks, providing a request/response interaction model between application endpoints. As such, EDHOC is targeting a large variety of use cases involving 'things' with embedded microcontrollers, sensors, and actuators.</t>
        <t>A typical setting is when one of the endpoints is constrained or in a constrained network, and the other endpoint is a node on the Internet (such as a mobile phone) or at the edge of the constrained network (such as a gateway). Thing-to-thing interactions over constrained networks are also relevant since both endpoints would then benefit from the lightweight properties of the protocol. EDHOC could e.g., be run when a device connects for the first time, or to establish fresh keys which are not revealed by a later compromise of the long-term keys. Further security properties are described in <xref target="sec-prop" format="default"/>.</t>
        <t>EDHOC enables the reuse of the same lightweight primitives as OSCORE: CBOR for encoding, COSE for cryptography, and CoAP for transport. By reusing existing libraries, the additional code size can be kept very low. Note that, while CBOR and COSE primitives are built into the protocol messages, EDHOC is not bound to a particular transport. Transfer of EDHOC messages in CoAP payloads is detailed in <xref target="coap" format="default"/>.</t>
      </section>
      <section anchor="message-size-examples" numbered="true" toc="default">
        <name>Message Size Examples</name>
        <t>Compared to the DTLS 1.3 handshake <xref target="I-D.ietf-tls-dtls13" format="default"/> with ECDHE and connection ID, the number of bytes in EDHOC + CoAP can be less than 1/6 when RPK authentication is used, see <xref target="I-D.ietf-lwig-security-protocol-comparison" format="default"/>. <xref target="fig-sizes" format="default"/> shows examples of message sizes for EDHOC with different kinds of authentication keys and different COSE header parameters for identification: static Diffie-Hellman keys or signature keys, either in CBOR Web Token (CWT) / CWT Claims Set (CCS) <xref target="RFC8392" format="default"/> identified by a key identifier using 'kid' <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>, or in X.509 certificates identified by a hash value using 'x5t' <xref target="I-D.ietf-cose-x509" format="default"/>.</t>
        <figure anchor="fig-sizes">
          <name>Example of message sizes in bytes.</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
========================================================
                    Static DH Keys        Signature Keys
                    --------------        --------------
                    kid        x5t        kid        x5t
--------------------------------------------------------
message_1            37         37         37         37
message_2            45         58        102        115
message_3            19         33         77         90
--------------------------------------------------------
Total               101        128        216        242
========================================================
]]></artwork>
        </figure>
      </section>
      <section anchor="document-structure" numbered="true" toc="default">
        <name>Document Structure</name>
        <t>The remainder of the document is organized as follows: <xref target="background" format="default"/> outlines EDHOC authenticated with digital signatures, <xref target="overview" format="default"/> describes the protocol elements of EDHOC, including formatting of the ephemeral public keys, <xref target="key-der" format="default"/> specifies the key derivation, <xref target="asym" format="default"/> specifies message processing for EDHOC authenticated with signature keys or static Diffie-Hellman keys, <xref target="error" format="default"/> describes the error messages, and <xref target="transfer" format="default"/> shows how to transfer EDHOC with CoAP and establish an OSCORE security context.</t>
      </section>
      <section anchor="term" numbered="true" toc="default">
        <name>Terminology and Requirements Language</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals, as shown here.</t>
        <t>Readers are expected to be familiar with the terms and concepts described in CBOR <xref target="RFC8949" format="default"/>, CBOR Sequences <xref target="RFC8742" format="default"/>, COSE structures and processing <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>, COSE algorithms <xref target="I-D.ietf-cose-rfc8152bis-algs" format="default"/>, CWT and CWT Claims Set <xref target="RFC8392" format="default"/>, and CDDL <xref target="RFC8610" format="default"/>. The Concise Data Definition Language (CDDL) is used to express CBOR data structures <xref target="RFC8949" format="default"/>. Examples of CBOR and CDDL are provided in <xref target="CBOR" format="default"/>. When referring to CBOR, this specification always refers to Deterministically Encoded CBOR as specified in Sections 4.2.1 and 4.2.2 of <xref target="RFC8949" format="default"/>. The single output from authenticated encryption (including the authentication tag) is called "ciphertext", following <xref target="RFC5116" format="default"/>.</t>
      </section>
    </section>
    <section anchor="background" numbered="true" toc="default">
      <name>EDHOC Outline</name>
      <t>EDHOC specifies different authentication methods of the Diffie-Hellman key exchange: digital signatures and static Diffie-Hellman keys. This section outlines the digital signature-based method. Further details of protocol elements and other authentication methods are provided in the remainder of this document.</t>
      <t>SIGMA (SIGn-and-MAc) is a family of theoretical protocols with a large number of variants <xref target="SIGMA" format="default"/>. Like IKEv2 <xref target="RFC7296" format="default"/> and (D)TLS 1.3 <xref target="RFC8446" format="default"/>, EDHOC authenticated with digital signatures is built on a variant of the SIGMA protocol which provides identity protection of the initiator (SIGMA-I) against active attackers, and like IKEv2 <xref target="RFC7296" format="default"/>, EDHOC implements the MAC-then-Sign variant of the SIGMA-I protocol shown in <xref target="fig-sigma" format="default"/>.</t>
      <figure anchor="fig-sigma">
        <name>MAC-then-Sign variant of the SIGMA-I protocol.</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
Initiator                                                   Responder
|                                G_X                                |
+------------------------------------------------------------------>|
|                                                                   |
|      G_Y, Enc( ID_CRED_R, Sig( R; MAC( CRED_R, G_X, G_Y ) ) )     |
|<------------------------------------------------------------------+
|                                                                   |
|        AEAD( ID_CRED_I, Sig( I; MAC( CRED_I, G_Y, G_X ) ) )       |
+------------------------------------------------------------------>|
|                                                                   |
]]></artwork>
      </figure>
      <t>The parties exchanging messages are called Initiator (I) and Responder (R). They exchange ephemeral public keys, compute a shared secret, and derive symmetric application keys used to protect application data.</t>
      <ul spacing="normal">
        <li>G_X and G_Y are the ECDH ephemeral public keys of I and R, respectively.</li>
        <li>CRED_I and CRED_R are the credentials containing the public authentication keys of I and R, respectively.</li>
        <li>ID_CRED_I and ID_CRED_R are credential identifiers enabling the recipient party to retrieve the credential of I and R, respectively.</li>
        <li>Sig(I; . ) and Sig(R; . ) denote signatures made with the private authentication key of I and R, respectively.</li>
        <li>Enc(), AEAD(), and MAC() denotes encryption, authenticated encryption with additional data, and message authentication code using keys derived from the shared secret.</li>
      </ul>
      <t>In order to create a "full-fledged" protocol some additional protocol elements are needed. EDHOC adds:</t>
      <ul spacing="normal">
        <li>Transcript hashes (hashes of message data) TH_2, TH_3, TH_4 used for key derivation and as additional authenticated data.</li>
        <li>Computationally independent keys derived from the ECDH shared secret and used for authenticated encryption of different messages.</li>
        <li>An optional fourth message giving explicit key confirmation to I in deployments where no protected application data is sent from R to I.</li>
        <li>A key material exporter and a key update function with forward secrecy.</li>
        <li>Verification of a common preferred cipher suite.</li>
        <li>Method types and error handling.</li>
        <li>Selection of connection identifiers C_I and C_R which may be used to identify established keys or protocol state.</li>
        <li>Transport of external authorization data.</li>
      </ul>
      <t>EDHOC is designed to encrypt and integrity protect as much information as possible, and all symmetric keys are derived using as much previous information as possible. EDHOC is furthermore designed to be as compact and lightweight as possible, in terms of message sizes, processing, and the ability to reuse already existing CBOR, COSE, and CoAP libraries.</t>
      <t>To simplify for implementors, the use of CBOR and COSE in EDHOC is summarized in <xref target="CBORandCOSE" format="default"/>. Test vectors including CBOR diagnostic notation are provided in <xref target="I-D.selander-lake-traces" format="default"/>.</t>
    </section>
    <section anchor="overview" numbered="true" toc="default">
      <name>Protocol Elements</name>
      <section anchor="general" numbered="true" toc="default">
        <name>General</name>
        <t>The EDHOC protocol consists of three mandatory messages (message_1, message_2, message_3) between Initiator and Responder, an optional fourth message (message_4), and an error message. All EDHOC messages are CBOR Sequences <xref target="RFC8742" format="default"/>. <xref target="fig-flow" format="default"/> illustrates an EDHOC message flow with the optional fourth message as well as the content of each message. The protocol elements in the figure are introduced in <xref target="overview" format="default"/> and <xref target="asym" format="default"/>. Message formatting and processing is specified in <xref target="asym" format="default"/> and <xref target="error" format="default"/>.</t>
        <t>Application data may be protected using the agreed application algorithms (AEAD, hash) in the selected cipher suite (see <xref target="cs" format="default"/>) and the application can make use of the established connection identifiers C_I and C_R (see <xref target="ci" format="default"/>). EDHOC may be used with the media type application/edhoc defined in <xref target="iana" format="default"/>.</t>
        <t>The Initiator can derive symmetric application keys after creating EDHOC message_3, see <xref target="exporter" format="default"/>. Protected application data can therefore be sent in parallel or together with EDHOC message_3. EDHOC message_4 is typically not sent.</t>
        <figure anchor="fig-flow">
          <name>EDHOC Message Flow with the Optional Fourth Message</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Initiator                                                   Responder
|                 METHOD, SUITES_I, G_X, C_I, EAD_1                 |
+------------------------------------------------------------------>|
|                             message_1                             |
|                                                                   |
|       G_Y, Enc( ID_CRED_R, Signature_or_MAC_2, EAD_2 ), C_R       |
|<------------------------------------------------------------------+
|                             message_2                             |
|                                                                   |
|            AEAD( ID_CRED_I, Signature_or_MAC_3, EAD_3 )           |
+------------------------------------------------------------------>|
|                             message_3                             |
|                                                                   |
|                           AEAD( EAD_4 )                           |
|<- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
|                             message_4                             |
]]></artwork>
        </figure>
      </section>
      <section anchor="method" numbered="true" toc="default">
        <name>Method</name>
        <t>The data item METHOD in message_1 (see <xref target="asym-msg1-form" format="default"/>), is an integer specifying the authentication method. EDHOC supports authentication with signature or static Diffie-Hellman keys, as defined in the four authentication methods: 0, 1, 2, and 3, see <xref target="fig-method-types" format="default"/>. When using a static Diffie-Hellman key the authentication is provided by a Message Authentication Code (MAC) computed from an ephemeral-static ECDH shared secret which enables significant reductions in message sizes.</t>
        <t>The Initiator and the Responder need to have agreed on a single method to be used for EDHOC, see <xref target="applicability" format="default"/>.</t>
        <figure anchor="fig-method-types">
          <name>Method Types</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
+-------+-------------------+-------------------+-------------------+
| Value | Initiator         | Responder         | Reference         |
+-------+-------------------+-------------------+-------------------+
|     0 | Signature Key     | Signature Key     | [[this document]] |
|     1 | Signature Key     | Static DH Key     | [[this document]] |
|     2 | Static DH Key     | Signature Key     | [[this document]] |
|     3 | Static DH Key     | Static DH Key     | [[this document]] |
+-------+-------------------+-------------------+-------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="ci" numbered="true" toc="default">
        <name>Connection Identifiers</name>
        <t>EDHOC includes the selection of connection identifiers (C_I, C_R) identifying a connection for which keys are agreed.</t>
        <t>Connection identifiers may be used to correlate EDHOC messages and facilitate the retrieval of protocol state during EDHOC protocol execution (see <xref target="transport" format="default"/>) or in a subsequent application protocol, e.g., OSCORE (see <xref target="ci-oscore" format="default"/>). The connection identifiers do not have any cryptographic purpose in EDHOC.</t>
        <t>Connection identifiers in EDHOC are byte strings or integers, encoded in CBOR. One byte connection identifiers (the integers -24 to 23 and the empty CBOR byte string h'') are realistic in many scenarios as most constrained devices only have a few connections.</t>
        <section anchor="selection-of-connection-identifiers" numbered="true" toc="default">
          <name>Selection of Connection Identifiers</name>
          <t>C_I and C_R are chosen by I and R, respectively. The Initiator selects C_I and sends it in message_1 for the Responder to use as a reference to the connection in communications with the Initiator. The Responder selects C_R and sends in message_2 for the Initiator to use as a reference to the connection in communications with the Responder.</t>
          <t>If connection identifiers are used by an application protocol for which EDHOC establishes keys then the selected connection identifiers SHALL adhere to the requirements for that protocol, see <xref target="ci-oscore" format="default"/> for an example.</t>
        </section>
        <section anchor="ci-oscore" numbered="true" toc="default">
          <name>Use of Connection Identifiers with OSCORE</name>
          <t>For OSCORE, the choice of a connection identifier results in the endpoint selecting its Recipient ID, see Section 3.1 of <xref target="RFC8613" format="default"/>, for which certain uniqueness requirements apply, see Section 3.3 of <xref target="RFC8613" format="default"/>. Therefore, the Initiator and the Responder MUST NOT select connection identifiers such that it results in same OSCORE Recipient ID. Since the Recipient ID is a byte string and a EDHOC connection identifier is either a CBOR byte string or a CBOR integer, care must be taken when selecting the connection identifiers and converting them to Recipient IDs. A mapping from EDHOC connection identifier to OSCORE Recipient ID is specified in <xref target="edhoc-to-oscore" format="default"/>.</t>
        </section>
      </section>
      <section anchor="transport" numbered="true" toc="default">
        <name>Transport</name>
        <t>Cryptographically, EDHOC does not put requirements on the lower layers. EDHOC is not bound to a particular transport layer and can even be used in environments without IP. The transport is responsible, where necessary, to handle:</t>
        <ul spacing="normal">
          <li>message loss,</li>
          <li>message reordering,</li>
          <li>message duplication,</li>
          <li>fragmentation,</li>
          <li>demultiplex EDHOC messages from other types of messages,</li>
          <li>denial-of-service protection,</li>
          <li>message correlation.</li>
        </ul>
        <t>The Initiator and the Responder need to have agreed on a transport to be used for EDHOC, see <xref target="applicability" format="default"/>.</t>
        <section anchor="ci-edhoc" numbered="true" toc="default">
          <name>Use of Connection Identifiers for EDHOC Message Correlation</name>
          <t>The transport needs to support the correlation between EDHOC messages and facilitate the retrieval of protocol state during EDHOC protocol execution, including an indication of a message being message_1. The correlation may reuse existing mechanisms in the transport protocol. For example, the CoAP Token may be used to correlate EDHOC messages in a CoAP response and an associated CoAP request.</t>
          <t>Connection identifiers may be used to correlate EDHOC messages and facilitate the retrieval of protocol state during EDHOC protocol execution.  EDHOC transports that do not inherently provide correlation across all messages of an exchange can send connection identifiers along with EDHOC messages to gain that required capability, e.g., by prepending the appropriate connection identifier (when available from the EDHOC protocol) to the EDHOC message. Transport of EDHOC in CoAP payloads is described in <xref target="coap" format="default"/>, which also shows how to use connection identifiers and message_1 indication with CoAP.</t>
        </section>
      </section>
      <section anchor="auth-key-id" numbered="true" toc="default">
        <name>Authentication Parameters</name>
        <t>EDHOC supports various settings for how the other endpoint's authentication (public) key is transported, identified, and trusted as described in this section.</t>
        <t>The authentication key (see <xref target="auth-keys" format="default"/>) is used in several parts of EDHOC:</t>
        <ol spacing="normal" type="1"><li>as part of the authentication credential included in the integrity calculation</li>
          <li>for verification of the Signature_or_MAC field in message_2 and message_3 (see <xref target="asym-msg2-proc" format="default"/> and <xref target="asym-msg3-proc" format="default"/>)</li>
          <li>in the key derivation (in case of a static Diffie-Hellman key, see <xref target="key-der" format="default"/>).</li>
        </ol>
        <t>The authentication credential (CRED_x) contains, in addition to the authentication key, also the authentication key algorithm and optionally other parameters such as identity, key usage, expiry, issuer, etc. (see <xref target="auth-cred" format="default"/>). Identical authentication credentials need to be established in both endpoints to be able to verify integrity. For many settings it is not necessary to transport the authentication credential within EDHOC over constrained links, for example, it may be pre-provisioned or acquired out-of-band over less constrained links.</t>
        <t>EDHOC relies on COSE for identification of authentication credentials (using ID_CRED_x, see <xref target="id_cred" format="default"/>) and supports all credential types for which COSE header parameters are defined (see <xref target="auth-cred" format="default"/>).</t>
        <t>The choice of authentication credential depends also on the trust model (see <xref target="identities" format="default"/>). For example, a certificate or CWT may rely on a trusted third party, whereas a CCS or a self-signed certificate/CWT may be used when trust in the public key can be achieved by other means, or in the case of trust-on-first-use.</t>
        <t>The type of authentication key, authentication credential, and the way to identify the credential have a large impact on the message size. For example, the signature_or_MAC field is much smaller with a static DH key than with a signature key. A CCS is much smaller than a self-signed certificate/CWT, but if it is possible to reference the credential with a COSE header like 'kid', then that is typically much smaller than to transport a CCS.</t>
        <section anchor="identities" numbered="true" toc="default">
          <name>Identities and trust anchors</name>
          <t>Policies for what connections to allow are typically set based on the identity of the other party, and parties typically only allow connections from a specific identity or a small restricted set of identities. For example, in the case of a device connecting to a network, the network may only allow connections from devices which authenticate with certificates having a particular range of serial numbers and signed by a particular CA. On the other hand, the device may only be allowed to connect to a network which authenticates with a particular public key (information of which may be provisioned, e.g., out of band or in the external authorization data, see <xref target="AD" format="default"/>). The EDHOC implementation or the application must enforce information about the intended endpoint, and in particular whether it is a specific identity or a set of identities. Either EDHOC passes information about identity to the application for a decision, or EDHOC needs to have access to relevant information and makes the decision on its own.</t>
          <t>EDHOC assumes the existence of mechanisms (certification authority, trusted third party, pre-provisioning, etc.) for specifying and distributing authentication credentials.</t>
          <ul spacing="normal">
            <li>When a Public Key Infrastructure (PKI) is used with certificates, the trust anchor is a Certification Authority (CA) certificate, and the identity is the subject whose unique name (e.g., a domain name, NAI, or EUI) is included in the endpoint's certificate. In order to run EDHOC each party needs at least one CA public key certificate, or just the public key, and a specific identity or set of identities it is allowed to communicate with. Only validated public-key certificates with an allowed subject name, as specified by the application, are to be accepted. EDHOC provides proof that the other party possesses the private authentication key corresponding to the public authentication key in its certificate. The certification path provides proof that the subject of the certificate owns the public key in the certificate.</li>
            <li>Similarly, when a PKI is used with CWTs, each party needs to have a trusted third party public key as trust anchor to verify the end-entity CWTs, and a specific identity or set of identities in the 'sub' (subject) claim of the CWT to determine if it is allowed to communicate with. The trusted third party public key can, e.g., be stored in a self-signed CWT or in a CCS.</li>
            <li>When PKI is not used (CCS, self-signed certificate/CWT), the trust anchor is the authentication key of the other party. In this case, the identity is typically directly associated to the authentication key of the other party. For example, the name of the subject may be a canonical representation of the public key. Alternatively, if identities can be expressed in the form of unique subject names assigned to public keys, then a binding to identity can be achieved by including both public key and associated subject name in the protocol message computation: CRED_I or CRED_R may be a self-signed certificate/CWT or CCS containing the authentication key and the subject name, see <xref target="auth-cred" format="default"/>. In order to run EDHOC, each endpoint needs a specific authentication key/unique associated subject name, or a set of public authentication keys/unique associated subject names, which it is allowed to communicate with. EDHOC provides the proof that the other party possesses the private authentication key corresponding to the public authentication key.</li>
          </ul>
          <t>To prevent misbinding attacks in systems where an attacker can register public keys without proving knowledge of the private key, SIGMA <xref target="SIGMA" format="default"/> enforces a MAC to be calculated over the "identity". EDHOC follows SIGMA by calculating a MAC over the whole credential, which in case of an X.509 or C509 certificate includes the "subject" and "subjectAltName" fields, and in the case of CWT or CCS includes the "sub" claim. While the SIGMA paper only focuses on the identity, the same principle is true for other information such as policies associated to the public key.</t>
        </section>
        <section anchor="auth-keys" numbered="true" toc="default">
          <name>Authentication Keys</name>
          <t>The authentication key (i.e. the public key used for authentication) MUST be a signature key or static Diffie-Hellman key. The Initiator and the Responder MAY use different types of authentication keys, e.g., one uses a signature key and the other uses a static Diffie-Hellman key. The authentication key algorithm needs to be compatible with the method and the cipher suite. The authentication key algorithm needs to be compatible with the EDHOC key exchange algorithm when static Diffie-Hellman authentication is used, and compatible with the EDHOC signature algorithm when signature authentication is used.</t>
          <t>Note that for most signature algorithms, the signature is determined by the signature algorithm and the authentication key algorithm together. When using static Diffie-Hellman keys the Initiator's and Responder's private authentication keys are called I and R, respectively, and the public authentication keys are called G_I and G_R, respectively.</t>
          <t>For X.509 the authentication key is represented with a SubjectPublicKeyInfo field. For CWT and CCS, the authentication key is represented with a 'cnf' claim <xref target="RFC8747" format="default"/> containing a COSE_Key <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>.</t>
        </section>
        <section anchor="auth-cred" numbered="true" toc="default">
          <name>Authentication Credentials</name>
          <t>The authentication credentials, CRED_I and CRED_R, contain the public authentication key of the Initiator and the Responder, respectively.</t>
          <t>EDHOC relies on COSE for identification of authentication credentials (see <xref target="id_cred" format="default"/>) and supports all credential types for which COSE header parameters are defined including X.509 <xref target="RFC5280" format="default"/>, C509 <xref target="I-D.ietf-cose-cbor-encoded-cert" format="default"/>, CWT <xref target="RFC8392" format="default"/> and CWT Claims Set (CCS) <xref target="RFC8392" format="default"/>. When the identified credential is a chain or bag, CRED_x is just the end-entity X.509 or C509 certificate / CWT. In X.509 and C509 certificates, signature keys typically have key usage "digitalSignature" and Diffie-Hellman public keys typically have key usage "keyAgreement".</t>
          <t>CRED_x needs to be defined such that it is identical when used by Initiator or Responder. The Initiator and Responder are expected to agree on a specific encoding of the credential, see <xref target="applicability" format="default"/>. It is RECOMMENDED that the COSE 'kid' parameter, when used, refers to a specific encoding. The Initiator and Responder SHOULD use an available authentication credential (transported in EDHOC or otherwise provisioned) without re-encoding. If for some reason re-encoding of the authentication credential may occur, then a potential common encoding for CBOR based credentials is bytewise lexicographic order of their deterministic encodings as specified in Section 4.2.1 of <xref target="RFC8949" format="default"/>.</t>
          <ul spacing="normal">
            <li>When the authentication credential is an X.509 certificate, CRED_x SHALL be the end-entity DER encoded certificate, encoded as a bstr <xref target="I-D.ietf-cose-x509" format="default"/>.</li>
            <li>When the authentication credential is a C509 certificate, CRED_x SHALL be the end-entity C509Certificate <xref target="I-D.ietf-cose-cbor-encoded-cert" format="default"/></li>
            <li>When the authentication credential is a COSE_Key in a CWT, CRED_x SHALL be the untagged CWT.</li>
            <li>
              <t>When the authentication credential is a COSE_Key but not in a CWT, CRED_x SHALL be an untagged CCS.
              </t>
              <ul spacing="normal">
                <li>Naked COSE_Keys are thus dressed as CCS when used in EDHOC, which is done by prefixing the COSE_Key with 0xA108A101.</li>
              </ul>
            </li>
          </ul>
          <t>An example of a CRED_x is shown below:</t>
          <figure>
            <name>A CCS Containing an X25519 Static Diffie-Hellman Key and an EUI-64 Identity.</name>
            <artwork name="" type="" align="left" alt=""><![CDATA[
{                                              /CCS/
  2 : "42-50-31-FF-EF-37-32-39",               /sub/
  8 : {                                        /cnf/
    1 : {                                      /COSE_Key/
      1 : 1,                                   /kty/
      2 : 0,                                   /kid/
     -1 : 4,                                   /crv/
     -2 : h'b1a3e89460e88d3a8d54211dc95f0b90   /x/
            3ff205eb71912d6db8f4af980d2db83a'
    }
  }
}
]]></artwork>
          </figure>
        </section>
        <section anchor="id_cred" numbered="true" toc="default">
          <name>Identification of Credentials</name>
          <t>ID_CRED_R and ID_CRED_I are transported in message_2 and message_3, respectively (see <xref target="asym-msg2-proc" format="default"/> and <xref target="asym-msg3-proc" format="default"/>). They are used to identify and optionally transport the authentication keys of the Initiator and the Responder, respectively. ID_CRED_I and ID_CRED_R do not have any cryptographic purpose in EDHOC since EDHOC integrity protects the authentication credential. EDHOC relies on COSE for identification of authentication credentials and supports all types of COSE header parameters used to identify authentication credentials including X.509, C509, CWT and CCS.</t>
          <ul spacing="normal">
            <li>ID_CRED_R is intended to facilitate for the Initiator to retrieve the Responder's authentication key.</li>
            <li>ID_CRED_I is intended to facilitate for the Responder to retrieve the Initiator's authentication key.</li>
          </ul>
          <t>ID_CRED_I and ID_CRED_R are COSE header maps and contains one or more COSE header parameter. ID_CRED_I and ID_CRED_R MAY contain different header parameters. The header parameters typically provide some information about the format of authentication credential.</t>
          <t>Note that COSE header parameters in ID_CRED_x are used to identify the sender's authentication credential. There is therefore no reason to use the "-sender" header parameters, such as x5t-sender, defined in Section 3 of <xref target="I-D.ietf-cose-x509" format="default"/>. Instead, the corresponding parameter without "-sender", such as x5t, SHOULD be used.</t>
          <t>Example: X.509 certificates can be identified by a hash value using the 'x5t' parameter:</t>
          <ul spacing="normal">
            <li>ID_CRED_x = { 34 : COSE_CertHash }, for x = I or R,</li>
          </ul>
          <t>Example: CWT or CCS can be identified by a key identifier using the 'kid' parameter:</t>
          <ul spacing="normal">
            <li>ID_CRED_x = { 4 : key_id_x }, where key_id_x : kid, for x = I or R.</li>
          </ul>
          <t>Note that 'kid' is extended to support int values to allow more one-byte identifiers (see <xref target="kid-header-param" format="default"/> and <xref target="kid-key-common-param" format="default"/>) which may be useful in many scenarios since constrained devices only have a few keys. As stated in Section 3.1 of <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>, applications MUST NOT assume that 'kid' values are unique and several keys associated with a 'kid' may need to be checked before the correct one is found. Applications might use additional information such as 'kid context' or lower layers to determine which key to try first. Applications should strive to make ID_CRED_x as unique as possible, since the recipient may otherwise have to try several keys.</t>
          <t>See <xref target="COSE" format="default"/> for more examples.</t>
        </section>
      </section>
      <section anchor="cs" numbered="true" toc="default">
        <name>Cipher Suites</name>
        <t>An EDHOC cipher suite consists of an ordered set of algorithms from the "COSE Algorithms" and "COSE Elliptic Curves" registries as well as the EDHOC MAC length. Algorithms need to be specified with enough parameters to make them completely determined. EDHOC is currently only specified for use with key exchange algorithms of type ECDH curves, but any Key Encapsulation Method (KEM), including Post-Quantum Cryptography (PQC) KEMs, can be used in method 0, see <xref target="pqc" format="default"/>. Use of other types of key exchange algorithms to replace static DH authentication (method 1,2,3) would likely require a specification updating EDHOC with new methods.</t>
        <t>EDHOC supports all signature algorithms defined by COSE, including PQC signature algorithms such as HSS-LMS. Just like in TLS 1.3 <xref target="RFC8446" format="default"/> and IKEv2 <xref target="RFC7296" format="default"/>, a signature in COSE is determined by the signature algorithm and the authentication key algorithm together, see <xref target="auth-keys" format="default"/>. The exact details of the authentication key algorithm depend on the type of authentication credential. COSE supports different formats for storing the public authentication keys including COSE_Key and X.509, which have different names and ways to represent the authentication key and the authentication key algorithm.</t>
        <t>An EDHOC cipher suite consists of the following parameters:</t>
        <ul spacing="normal">
          <li>EDHOC AEAD algorithm</li>
          <li>EDHOC hash algorithm</li>
          <li>EDHOC MAC length in bytes (Static DH)</li>
          <li>EDHOC key exchange algorithm (ECDH curve)</li>
          <li>EDHOC signature algorithm</li>
          <li>Application AEAD algorithm</li>
          <li>Application hash algorithm</li>
        </ul>
        <t>Each cipher suite is identified with a pre-defined int label.</t>
        <t>EDHOC can be used with all algorithms and curves defined for COSE. Implementation can either use any combination of COSE algorithms and parameters to define their own private cipher suite, or use one of the pre-defined cipher suites. Private cipher suites can be identified with any of the four values -24, -23, -22, -21. The pre-defined cipher suites are listed in the IANA registry (<xref target="suites-registry" format="default"/>) with initial content outlined here:</t>
        <ul spacing="normal">
          <li>
            <t>Cipher suites 0-3, based on AES-CCM, are intended for constrained IoT where message overhead is a very important factor. Note that AES-CCM-16-64-128 and AES-CCM-16-64-128 are compatible with the IEEE CCM* mode.
            </t>
            <ul spacing="normal">
              <li>Cipher suites 1 and 3 use a larger tag length (128-bit) in EDHOC than in the Application AEAD algorithm (64-bit).</li>
            </ul>
          </li>
          <li>Cipher suites 4 and 5, based on ChaCha20, are intended for less constrained applications and only use 128-bit tag lengths.</li>
          <li>Cipher suite 6, based on AES-GCM, is for general non-constrained applications. It uses high performance algorithms that are widely supported.</li>
          <li>Cipher suites 24 and 25 are intended for high security applications such as government use and financial applications. These cipher suites do not share any algorithms. Cipher suite 24 is compatible with the CNSA suite <xref target="CNSA" format="default"/>.</li>
        </ul>
        <t>The different methods (<xref target="method" format="default"/>) use the same cipher suites, but some algorithms are not used in some methods. The EDHOC signature algorithm is not used in methods without signature authentication.</t>
        <t>The Initiator needs to have a list of cipher suites it supports in order of preference. The Responder needs to have a list of cipher suites it supports. SUITES_I contains cipher suites supported by the Initiator, formatted and processed as detailed in <xref target="asym-msg1-form" format="default"/> to secure the cipher suite negotiation. Examples of cipher suite negotiation are given in <xref target="ex-neg" format="default"/>.</t>
      </section>
      <section anchor="cose_key" numbered="true" toc="default">
        <name>Ephemeral Public Keys</name>
        <t>EDHOC always uses compact representation of elliptic curve points, see <xref target="comrep" format="default"/>. In COSE compact representation is achieved by formatting the ECDH ephemeral public keys as COSE_Keys of type EC2 or OKP according to Sections 7.1 and 7.2 of <xref target="I-D.ietf-cose-rfc8152bis-algs" format="default"/>, but only including the 'x' parameter in G_X and G_Y. For Elliptic Curve Keys of type EC2, compact representation MAY be used also in the COSE_Key.  If the COSE implementation requires an 'y' parameter, the value y = false SHALL be used. COSE always use compact output for Elliptic Curve Keys of type EC2.</t>
      </section>
      <section anchor="AD" numbered="true" toc="default">
        <name>External Authorization Data (EAD)</name>
        <t>In order to reduce round trips and number of messages or to simplify processing, external security applications may be integrated into EDHOC by transporting authorization related data in the messages. One example is third-party identity and authorization information protected out of scope of EDHOC <xref target="I-D.selander-ace-ake-authz" format="default"/>. Another example is a certificate enrolment request or the resulting issued certificate.</t>
        <t>EDHOC allows opaque external authorization data (EAD) to be sent in the EDHOC messages. External authorization data sent in message_1 (EAD_1) or message_2 (EAD_2) should be considered unprotected by EDHOC, see <xref target="unprot-data" format="default"/>. External authorization data sent in message_3 (EAD_3) or message_4 (EAD_4) is protected between Initiator and Responder.</t>
        <t>External authorization data is a CBOR sequence (see <xref target="CBOR" format="default"/>) consisting of one or more (ead_label, ead_value) pairs as defined below:</t>
        <sourcecode type="CDDL"><![CDATA[
ead = 1* (
  ead_label : int,
  ead_value : any,
)
]]></sourcecode>
        <t>Applications using external authorization data need to specify format, processing, and security considerations and register the (ead_label, ead_value) pair, see <xref target="iana-ead" format="default"/>. The CDDL type of ead_value is determined by the int ead_label and MUST be specified.</t>
        <t>The EAD fields of EDHOC are not intended for generic application data. Since data carried in EAD_1 and EAD_2 fields may not be protected, special considerations need to be made such that it does not violate security and privacy requirements of the service which uses this data. Moreover, the content in an EAD field may impact the security properties provided by EDHOC. Security applications making use of the EAD fields must perform the necessary security analysis.</t>
      </section>
      <section anchor="applicability" numbered="true" toc="default">
        <name>Applicability Statement</name>
        <t>EDHOC requires certain parameters to be agreed upon between Initiator and Responder. Some parameters can be agreed through the protocol execution (specifically cipher suite negotiation, see <xref target="cs" format="default"/>) but other parameters may need to be known out-of-band (e.g., which authentication method is used, see <xref target="method" format="default"/>).</t>
        <t>The purpose of the applicability statement is to describe the intended use of EDHOC to allow for the relevant processing and verifications to be made, including things like:</t>
        <ol spacing="normal" type="1"><li>
            <t>How the endpoint detects that an EDHOC message is received. This includes how EDHOC messages are transported, for example in the payload of a CoAP message with a certain Uri-Path or Content-Format; see <xref target="coap" format="default"/>.
            </t>
            <ul spacing="normal">
              <li>The method of transporting EDHOC messages may also describe data carried along with the messages that are needed for the transport to satisfy the requirements of <xref target="transport" format="default"/>, e.g., connection identifiers used with certain messages, see <xref target="coap" format="default"/>.</li>
            </ul>
          </li>
          <li>Authentication method (METHOD; see <xref target="method" format="default"/>).</li>
          <li>Profile for authentication credentials (CRED_I, CRED_R; see <xref target="auth-cred" format="default"/>), e.g., profile for certificate or CCS, including supported authentication key algorithms (subject public key algorithm in X.509 or C509 certificate).</li>
          <li>Type used to identify authentication credentials (ID_CRED_I, ID_CRED_R; see <xref target="id_cred" format="default"/>).</li>
          <li>Use and type of external authorization data (EAD_1, EAD_2, EAD_3, EAD_4; see <xref target="AD" format="default"/>).</li>
          <li>Identifier used as identity of endpoint; see <xref target="identities" format="default"/>.</li>
          <li>If message_4 shall be sent/expected, and if not, how to ensure a protected application message is sent from the Responder to the Initiator; see <xref target="m4" format="default"/>.</li>
        </ol>
        <t>The applicability statement may also contain information about supported cipher suites. The procedure for selecting and verifying cipher suite is still performed as described in <xref target="asym-msg1-form" format="default"/> and <xref target="wrong-selected" format="default"/>, but it may become simplified by this knowledge.</t>
        <t>An example of an applicability statement is shown in <xref target="appl-temp" format="default"/>.</t>
        <t>For some parameters, like METHOD, ID_CRED_x, type of EAD, the receiver is able to verify compliance with applicability statement, and if it needs to fail because of incompliance, to infer the reason why the protocol failed.</t>
        <t>For other parameters, like CRED_x in the case that it is not transported, it may not be possible to verify that incompliance with applicability statement was the reason for failure: Integrity verification in message_2 or message_3 may fail not only because of wrong authentication credential. For example, in case the Initiator uses public key certificate by reference (i.e., not transported within the protocol) then both endpoints need to use an identical data structure as CRED_I or else the integrity verification will fail.</t>
        <t>Note that it is not necessary for the endpoints to specify a single transport for the EDHOC messages. For example, a mix of CoAP and HTTP may be used along the path, and this may still allow correlation between messages.</t>
        <t>The applicability statement may be dependent on the identity of the other endpoint, or other information carried in an EDHOC message, but it then applies only to the later phases of the protocol when such information is known. (The Initiator does not know identity of Responder before having verified message_2, and the Responder does not know identity of the Initiator before having verified message_3.)</t>
        <t>Other conditions may be part of the applicability statement, such as target application or use (if there is more than one application/use) to the extent that EDHOC can distinguish between them. In case multiple applicability statements are used, the receiver needs to be able to determine which is applicable for a given session, for example based on URI or external authorization data type.</t>
      </section>
    </section>
    <section anchor="key-der" numbered="true" toc="default">
      <name>Key Derivation</name>
      <t>EDHOC uses Extract-and-Expand <xref target="RFC5869" format="default"/> with the EDHOC hash algorithm in the selected cipher suite to derive keys used in EDHOC and in the application. Extract is used to derive fixed-length uniformly pseudorandom keys (PRK) from ECDH shared secrets. Expand is used to derive additional output keying material (OKM) from the PRKs.</t>
      <t>This section defines Extract, Expand and other key derivation functions based on these: Expand is used to define EDHOC-KDF and in turn EDHOC-Exporter, whereas Extract is used to define EDHOC-KeyUpdate.</t>
      <section anchor="extract" numbered="true" toc="default">
        <name>Extract</name>
        <t>The pseudorandom keys (PRKs) are derived using Extract.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   PRK = Extract( salt, IKM )
]]></artwork>
        <t>where the input keying material (IKM) and salt are defined for each PRK below.</t>
        <t>The definition of Extract depends on the EDHOC hash algorithm of the selected cipher suite:</t>
        <ul spacing="normal">
          <li>if the EDHOC hash algorithm is SHA-2, then Extract( salt, IKM ) = HKDF-Extract( salt, IKM ) <xref target="RFC5869" format="default"/></li>
          <li>if the EDHOC hash algorithm is SHAKE128, then Extract( salt, IKM ) = KMAC128( salt, IKM, 256, "" )</li>
          <li>if the EDHOC hash algorithm is SHAKE256, then Extract( salt, IKM ) = KMAC256( salt, IKM, 512, "" )</li>
        </ul>
        <section anchor="prk2e" numbered="true" toc="default">
          <name>PRK_2e</name>
          <t>PRK_2e is used to derive a keystream to encrypt message_2. PRK_2e is derived with the following input:</t>
          <ul spacing="normal">
            <li>The salt SHALL be a zero-length byte string. Note that <xref target="RFC5869" format="default"/> specifies that if the salt is not provided, it is set to a string of zeros (see Section 2.2 of <xref target="RFC5869" format="default"/>). For implementation purposes, not providing the salt is the same as setting the salt to the zero-length byte string (0x).</li>
            <li>The IKM SHALL be the ephemeral-ephemeral ECDH shared secret G_XY (calculated from G_X and Y or G_Y and X) as defined in Section 6.3.1 of <xref target="I-D.ietf-cose-rfc8152bis-algs" format="default"/>. The use of G_XY gives forward secrecy, in the sense that compromise of the private authentication keys does not compromise past session keys.</li>
          </ul>
          <t>Example: Assuming the use of curve25519, the ECDH shared secret G_XY is the output of the X25519 function <xref target="RFC7748" format="default"/>:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
   G_XY = X25519( Y, G_X ) = X25519( X, G_Y )
]]></artwork>
          <t>Example: Assuming the use of SHA-256 the extract phase of HKDF produces PRK_2e as follows:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
   PRK_2e = HMAC-SHA-256( salt, G_XY )
]]></artwork>
          <t>where salt = 0x (zero-length byte string).</t>
        </section>
        <section anchor="prk3e2m" numbered="true" toc="default">
          <name>PRK_3e2m</name>
          <t>PRK_3e2m is used to produce a MAC in message_2 and to encrypt message_3. PRK_3e2m is derived as follows:</t>
          <t>If the Responder authenticates with a static Diffie-Hellman key, then PRK_3e2m = Extract( PRK_2e, G_RX ), where G_RX is the ECDH shared secret calculated from G_R and X, or G_X and R, else PRK_3e2m = PRK_2e.</t>
        </section>
        <section anchor="prk4x3m" numbered="true" toc="default">
          <name>PRK_4x3m</name>
          <t>PRK_4x3m is used to produce a MAC in message_3, to encrypt message_4, and to derive application specific data. PRK_4x3m is derived as follows:</t>
          <t>If the Initiator authenticates with a static Diffie-Hellman key, then PRK_4x3m = Extract( PRK_3e2m, G_IY ), where G_IY is the ECDH shared secret calculated from G_I and Y, or G_Y and I, else PRK_4x3m = PRK_3e2m.</t>
        </section>
      </section>
      <section anchor="expand" numbered="true" toc="default">
        <name>Expand</name>
        <t>The keys, IVs and MACs used in EDHOC are derived from the PRKs using Expand, and instantiated with the EDHOC AEAD algorithm in the selected cipher suite.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   OKM = EDHOC-KDF( PRK, transcript_hash, label, context, length )
       = Expand( PRK, info, length )
]]></artwork>
        <t>where info is encoded as the CBOR sequence</t>
        <sourcecode type="CDDL"><![CDATA[
info = (
  transcript_hash : bstr,
  label : tstr,
  context : bstr,
  length : uint,
)
]]></sourcecode>
        <t>where</t>
        <ul spacing="normal">
          <li>transcript_hash is a bstr set to one of the transcript hashes TH_2, TH_3, or TH_4 as defined in Sections <xref target="asym-msg2-form" format="counter"/>, <xref target="asym-msg3-form" format="counter"/>, and <xref target="exporter" format="counter"/>.</li>
          <li>label is a tstr set to the name of the derived key, IV or MAC; i.e., "KEYSTREAM_2", "MAC_2", "K_3", "IV_3", or "MAC_3".</li>
          <li>context is a bstr</li>
          <li>length is the length of output keying material (OKM) in bytes</li>
        </ul>
        <t>The definition of Expand depends on the EDHOC hash algorithm of the selected cipher suite:</t>
        <ul spacing="normal">
          <li>if the EDHOC hash algorithm is SHA-2, then Expand( PRK, info, length ) = HKDF-Expand( PRK, info, length ) <xref target="RFC5869" format="default"/></li>
          <li>if the EDHOC hash algorithm is SHAKE128, then Expand( PRK, info, length ) = KMAC128( PRK, info, L, "" )</li>
          <li>if the EDHOC hash algorithm is SHAKE256, then Expand( PRK, info, length ) = KMAC256( PRK, info, L, "" )</li>
        </ul>
        <t>where L = 8*length, the output length in bits.</t>
        <t>The keys, IVs and MACs are derived as follows:</t>
        <ul spacing="normal">
          <li>KEYSTREAM_2 is derived using the transcript hash TH_2 and the pseudorandom key PRK_2e.</li>
          <li>MAC_2 is derived using the transcript hash TH_2 and the pseudorandom key PRK_3e2m.</li>
          <li>K_3 and IV_3 are derived using the transcript hash TH_3 and the pseudorandom key PRK_3e2m. IVs are only used if the EDHOC AEAD algorithm uses IVs.</li>
          <li>MAC_3 is derived using the transcript hash TH_3 and the pseudorandom key PRK_4x3m.</li>
        </ul>
        <t>KEYSTREAM_2, K_3, and IV_3 use an empty CBOR byte string h'' as context. MAC_2 and MAC_3 use context as defined in <xref target="asym-msg2-proc" format="default"/> and <xref target="asym-msg3-proc" format="default"/>, respectively.</t>
      </section>
      <section anchor="exporter" numbered="true" toc="default">
        <name>EDHOC-Exporter</name>
        <t>Application keys and other application specific data can be derived using the EDHOC-Exporter interface defined as:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   EDHOC-Exporter(label, context, length)
     = EDHOC-KDF(PRK_4x3m, TH_4, label, context, length)
]]></artwork>
        <t>where label is a registered tstr from the EDHOC Exporter Label registry (<xref target="exporter-label" format="default"/>), context is a bstr defined by the application, and length is a uint defined by the application. The (label, context) pair must be unique, i.e., a (label, context) MUST NOT be used for two different purposes. However an application can re-derive the same key several times as long as it is done in a secure way. For example, in most encryption algorithms the same key kan be reused with different nonces. The context can for example be the empty (zero-length) sequence or a single CBOR byte string.</t>
        <t>The transcript hash TH_4 is a CBOR encoded bstr and the input to the hash function is a CBOR Sequence.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   TH_4 = H( TH_3, CIPHERTEXT_3 )
]]></artwork>
        <t>where H() is the hash function in the selected cipher suite. Examples of use of the EDHOC-Exporter are given in <xref target="asym-msg4-proc" format="default"/> and <xref target="transfer" format="default"/>.</t>
        <ul spacing="normal">
          <li>K_4 and IV_4 are derived with the EDHOC-Exporter using the empty CBOR byte string h'' as context, and labels "EDHOC_K_4" and "EDHOC_IV_4", respectively. IVs are only used if the EDHOC AEAD algorithm uses IVs.</li>
        </ul>
      </section>
      <section anchor="keyupdate" numbered="true" toc="default">
        <name>EDHOC-KeyUpdate</name>
        <t>To provide forward secrecy in an even more efficient way than re-running EDHOC, EDHOC provides the function EDHOC-KeyUpdate. When EDHOC-KeyUpdate is called the old PRK_4x3m is deleted and the new PRK_4x3m is calculated as a "hash" of the old key using the Extract function as illustrated by the following pseudocode:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   EDHOC-KeyUpdate( nonce ):
      PRK_4x3m = Extract( nonce, PRK_4x3m )
]]></artwork>
        <t>The EDHOC-KeyUpdate takes a nonce as input to guarantee that there are no short cycles. The Initiator and the Responder need to agree on the nonce, which can e.g., be a counter or a random number. While the KeyUpdate method provides forward secrecy it does not give as strong security properties as re-running EDHOC, see <xref target="security" format="default"/>.</t>
      </section>
    </section>
    <section anchor="asym" numbered="true" toc="default">
      <name>Message Formatting and Processing</name>
      <t>This section specifies formatting of the messages and processing steps. Error messages are specified in <xref target="error" format="default"/>. Annotated traces of EDHOC protocol runs are provided in <xref target="I-D.selander-lake-traces" format="default"/>.</t>
      <t>An EDHOC message is encoded as a sequence of CBOR data items (CBOR Sequence, <xref target="RFC8742" format="default"/>).
Additional optimizations are made to reduce message overhead.</t>
      <t>While EDHOC uses the COSE_Key, COSE_Sign1, and COSE_Encrypt0 structures, only a subset of the parameters is included in the EDHOC messages, see <xref target="COSE" format="default"/>. The unprotected COSE header in COSE_Sign1, and COSE_Encrypt0 (not included in the EDHOC message) MAY contain parameters (e.g., 'alg').</t>
      <section anchor="proc-outline" numbered="true" toc="default">
        <name>Message Processing Outline</name>
        <t>This section outlines the message processing of EDHOC.</t>
        <t>For each new/ongoing session, the endpoints are assumed to keep an associated protocol state containing identifiers, keying material, etc. used for subsequent processing of protocol related data. The protocol state is assumed to be associated to an applicability statement (<xref target="applicability" format="default"/>) which provides the context for how messages are transported, identified, and processed.</t>
        <t>EDHOC messages SHALL be processed according to the current protocol state. The following steps are expected to be performed at reception of an EDHOC message:</t>
        <ol spacing="normal" type="1"><li>Detect that an EDHOC message has been received, for example by means of port number, URI, or media type (<xref target="applicability" format="default"/>).</li>
          <li>Retrieve the protocol state according to the message correlation provided by the transport, see <xref target="transport" format="default"/>. If there is no protocol state, in the case of message_1, a new protocol state is created. The Responder endpoint needs to make use of available Denial-of-Service mitigation (<xref target="dos" format="default"/>).</li>
          <li>If the message received is an error message, then process according to <xref target="error" format="default"/>, else process as the expected next message according to the protocol state.</li>
        </ol>
        <t>If the processing fails for some reason then, typically, an error message is sent, the protocol is discontinued, and the protocol state erased. Further details are provided in the following subsections and in <xref target="error" format="default"/>.</t>
        <t>Different instances of the same message MUST NOT be processed in one session.  Note that processing will fail if the same message appears a second time for EDHOC processing because the state of the protocol has moved on and now expects something else. This assumes that message duplication due to re-transmissions is handled by the transport protocol, see <xref target="transport" format="default"/>. The case when the transport does not support message deduplication is addressed in <xref target="duplication" format="default"/>.</t>
      </section>
      <section anchor="m1" numbered="true" toc="default">
        <name>EDHOC Message 1</name>
        <section anchor="asym-msg1-form" numbered="true" toc="default">
          <name>Formatting of Message 1</name>
          <t>message_1 SHALL be a CBOR Sequence (see <xref target="CBOR" format="default"/>) as defined below</t>
          <sourcecode type="CDDL"><![CDATA[
message_1 = (
  METHOD : int,
  SUITES_I : suites,
  G_X : bstr,
  C_I : bstr / int,
  ? EAD_1 : ead,
)

suites = [ 2* int ] / int
]]></sourcecode>
          <t>where:</t>
          <ul spacing="normal">
            <li>METHOD - authentication method, see <xref target="method" format="default"/>.</li>
            <li>SUITES_I - array of cipher suites which the Initiator supports in order of preference, starting with the most preferred and ending with the cipher suite selected for this session. If the most preferred cipher suite is selected then SUITES_I is encoded as that cipher suite, i.e., as an int. The processing steps are detailed below and in <xref target="wrong-selected" format="default"/>.</li>
            <li>G_X - the ephemeral public key of the Initiator</li>
            <li>C_I - variable length connection identifier</li>
            <li>EAD_1 - unprotected external authorization data, see <xref target="AD" format="default"/>.</li>
          </ul>
        </section>
        <section anchor="init-proc-msg1" numbered="true" toc="default">
          <name>Initiator Processing of Message 1</name>
          <t>The Initiator SHALL compose message_1 as follows:</t>
          <ul spacing="normal">
            <li>
              <t>SUITES_I contains a list of supported cipher suites, in order of preference, truncated after the cipher suite selected for this session.
              </t>
              <ul spacing="normal">
                <li>The Initiator MUST select its most preferred cipher suite, conditioned on what it can assume to be supported by the Responder.</li>
                <li>The selected cipher suite MAY be changed between sessions, e.g., based on previous error messages (see next bullet), but all cipher suites which are more preferred than the selected cipher suite in the list MUST be included in SUITES_I.</li>
                <li>If the Initiator previously received from the Responder an error message with error code 2 (see <xref target="wrong-selected" format="default"/>) indicating cipher suites supported by the Responder, then the Initiator SHOULD select the most preferred supported cipher suite among those (note that error messages are not authenticated and may be forged).</li>
                <li>The supported cipher suites and the order of preference MUST NOT be changed based on previous error messages.</li>
              </ul>
            </li>
            <li>Generate an ephemeral ECDH key pair using the curve in the selected cipher suite and format it as a COSE_Key. Let G_X be the 'x' parameter of the COSE_Key.</li>
            <li>Choose a connection identifier C_I and store it for the length of the protocol.</li>
            <li>Encode message_1 as a sequence of CBOR encoded data items as specified in <xref target="asym-msg1-form" format="default"/></li>
          </ul>
        </section>
        <section anchor="resp-proc-msg1" numbered="true" toc="default">
          <name>Responder Processing of Message 1</name>
          <t>The Responder SHALL process message_1 as follows:</t>
          <ul spacing="normal">
            <li>Decode message_1 (see <xref target="CBOR" format="default"/>).</li>
            <li>Verify that the selected cipher suite is supported and that no prior cipher suite in SUITES_I is supported.</li>
            <li>Pass EAD_1 to the security application.</li>
          </ul>
          <t>If any processing step fails, the Responder SHOULD send an EDHOC error message back, formatted as defined in <xref target="error" format="default"/>, and the session MUST be discontinued. Sending error messages is essential for debugging but MAY e.g., be skipped due to denial-of-service reasons, see <xref target="dos" format="default"/>. If an error message is sent, the session MUST be discontinued.</t>
        </section>
      </section>
      <section anchor="m2" numbered="true" toc="default">
        <name>EDHOC Message 2</name>
        <section anchor="asym-msg2-form" numbered="true" toc="default">
          <name>Formatting of Message 2</name>
          <t>message_2 SHALL be a CBOR Sequence (see <xref target="CBOR" format="default"/>) as defined below</t>
          <sourcecode type="CDDL"><![CDATA[
message_2 = (
  G_Y_CIPHERTEXT_2 : bstr,
  C_R : bstr / int,
)
]]></sourcecode>
          <t>where:</t>
          <ul spacing="normal">
            <li>G_Y_CIPHERTEXT_2 - the concatenation of G_Y, the ephemeral public key of the Responder, and CIPHERTEXT_2</li>
            <li>C_R - variable length connection identifier</li>
          </ul>
        </section>
        <section anchor="asym-msg2-proc" numbered="true" toc="default">
          <name>Responder Processing of Message 2</name>
          <t>The Responder SHALL compose message_2 as follows:</t>
          <ul spacing="normal">
            <li>Generate an ephemeral ECDH key pair using the curve in the selected cipher suite and format it as a COSE_Key. Let G_Y be the 'x' parameter of the COSE_Key.</li>
            <li>Choose a connection identifier C_R and store it for the length of the protocol.</li>
            <li>Compute the transcript hash TH_2 = H( H(message_1), G_Y, C_R ) where H() is the hash function in the selected cipher suite. The transcript hash TH_2 is a CBOR encoded bstr and the input to the hash function is a CBOR Sequence. Note that H(message_1) can be computed and cached already in the processing of message_1.</li>
            <li>
              <t>Compute MAC_2 = EDHOC-KDF( PRK_3e2m, TH_2, "MAC_2", &lt;&lt; ID_CRED_R, CRED_R, ? EAD_2 &gt;&gt;, mac_length_2 ). If the Responder authenticates with a static Diffie-Hellman key (method equals 1 or 3), then mac_length_2 is the EDHOC MAC length given by the selected cipher suite. If the Responder authenticates with a signature key (method equals 0 or 2), then mac_length_2 is equal to the output size of the EDHOC hash algorithm given by the selected cipher suite.
              </t>
              <ul spacing="normal">
                <li>ID_CRED_R - identifier to facilitate retrieval of CRED_R, see <xref target="id_cred" format="default"/></li>
                <li>CRED_R - CBOR item containing the credential of the Responder, see <xref target="auth-cred" format="default"/></li>
                <li>EAD_2 - unprotected external authorization data, see <xref target="AD" format="default"/></li>
              </ul>
            </li>
            <li>
              <t>If the Responder authenticates with a static Diffie-Hellman key (method equals 1 or 3), then Signature_or_MAC_2 is MAC_2. If the Responder authenticates with a signature key (method equals 0 or 2), then Signature_or_MAC_2 is the 'signature' field of a COSE_Sign1 object as defined in Section 4.4 of <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/> using the signature algorithm of the selected cipher suite, the private authentication key of the Responder, and the following parameters as input (see <xref target="COSE" format="default"/>):  </t>
              <ul spacing="normal">
                <li>protected =  &lt;&lt; ID_CRED_R &gt;&gt;</li>
                <li>external_aad = &lt;&lt; TH_2, CRED_R, ? EAD_2 &gt;&gt;</li>
                <li>payload = MAC_2</li>
              </ul>
            </li>
            <li>
              <t>CIPHERTEXT_2 is calculated by using the Expand function as a binary additive stream cipher.  </t>
              <ul spacing="normal">
                <li>
                  <t>plaintext = ( ID_CRED_R / bstr / int, Signature_or_MAC_2, ? EAD_2 )      </t>
                  <ul spacing="normal">
                    <li>If ID_CRED_R contains a single 'kid' parameter, i.e., ID_CRED_R = { 4 : kid_R }, then only the byte string or integer kid_R is conveyed in the plaintext encoded accordingly as bstr or int.</li>
                  </ul>
                </li>
                <li>Compute KEYSTREAM_2 = EDHOC-KDF( PRK_2e, TH_2, "KEYSTREAM_2", h'', plaintext_length ), where plaintext_length is the length of the plaintext.</li>
                <li>CIPHERTEXT_2 = plaintext XOR KEYSTREAM_2</li>
              </ul>
            </li>
            <li>Encode message_2 as a sequence of CBOR encoded data items as specified in <xref target="asym-msg2-form" format="default"/>.</li>
          </ul>
        </section>
        <section anchor="initiator-processing-of-message-2" numbered="true" toc="default">
          <name>Initiator Processing of Message 2</name>
          <t>The Initiator SHALL process message_2 as follows:</t>
          <ul spacing="normal">
            <li>Decode message_2 (see <xref target="CBOR" format="default"/>).</li>
            <li>Retrieve the protocol state using the message correlation provided by the transport (e.g., the CoAP Token, the 5-tuple, or the prepended C_I, see <xref target="coap" format="default"/>).</li>
            <li>Decrypt CIPHERTEXT_2, see <xref target="asym-msg2-proc" format="default"/>.</li>
            <li>Pass EAD_2 to the security application.</li>
            <li>Verify that the identity of the Responder is an allowed identity for this connection, see <xref target="identities" format="default"/>.</li>
            <li>Verify Signature_or_MAC_2 using the algorithm in the selected cipher suite. The verification process depends on the method, see <xref target="asym-msg2-proc" format="default"/>.</li>
          </ul>
          <t>If any processing step fails, the Initiator SHOULD send an EDHOC error message back, formatted as defined in <xref target="error" format="default"/>. Sending error messages is essential for debugging but MAY e.g., be skipped if a session cannot be found or due to denial-of-service reasons, see <xref target="dos" format="default"/>. If an error message is sent, the session MUST be discontinued.</t>
        </section>
      </section>
      <section anchor="m3" numbered="true" toc="default">
        <name>EDHOC Message 3</name>
        <section anchor="asym-msg3-form" numbered="true" toc="default">
          <name>Formatting of Message 3</name>
          <t>message_3 SHALL be a CBOR Sequence (see <xref target="CBOR" format="default"/>) as defined below</t>
          <sourcecode type="CDDL"><![CDATA[
message_3 = (
  CIPHERTEXT_3 : bstr,
)
]]></sourcecode>
        </section>
        <section anchor="asym-msg3-proc" numbered="true" toc="default">
          <name>Initiator Processing of Message 3</name>
          <t>The Initiator SHALL compose message_3 as follows:</t>
          <ul spacing="normal">
            <li>Compute the transcript hash TH_3 = H(TH_2, CIPHERTEXT_2) where H() is the hash function in the selected cipher suite. The transcript hash TH_3 is a CBOR encoded bstr and the input to the hash function is a CBOR Sequence.  Note that H(TH_2, CIPHERTEXT_2) can be computed and cached already in the processing of message_2.</li>
            <li>
              <t>Compute MAC_3 = EDHOC-KDF( PRK_4x3m, TH_3, "MAC_3", &lt;&lt; ID_CRED_I, CRED_I, ? EAD_3 &gt;&gt;, mac_length_3 ). If the Initiator authenticates with a static Diffie-Hellman key (method equals 2 or 3), then mac_length_3 is the EDHOC MAC length given by the selected cipher suite.  If the Initiator authenticates with a signature key (method equals 0 or 1), then mac_length_3 is equal to the output size of the EDHOC hash algorithm given by the selected cipher suite.
              </t>
              <ul spacing="normal">
                <li>ID_CRED_I - identifier to facilitate retrieval of CRED_I, see <xref target="id_cred" format="default"/></li>
                <li>CRED_I - CBOR item containing the credential of the Initiator, see <xref target="auth-cred" format="default"/></li>
                <li>EAD_3 - protected external authorization data, see <xref target="AD" format="default"/></li>
              </ul>
            </li>
            <li>
              <t>If the Initiator authenticates with a static Diffie-Hellman key (method equals 2 or 3), then Signature_or_MAC_3 is MAC_3. If the Initiator authenticates with a signature key (method equals 0 or 1), then Signature_or_MAC_3 is the 'signature' field of a COSE_Sign1 object as defined in Section 4.4 of <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/> using the signature algorithm of the selected cipher suite, the private authentication key of the Initiator, and the following parameters as input (see <xref target="COSE" format="default"/>):  </t>
              <ul spacing="normal">
                <li>protected =  &lt;&lt; ID_CRED_I &gt;&gt;</li>
                <li>external_aad = &lt;&lt; TH_3, CRED_I, ? EAD_3 &gt;&gt;</li>
                <li>payload = MAC_3</li>
              </ul>
            </li>
            <li>
              <t>Compute a COSE_Encrypt0 object as defined in Section 5.3 of <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>, with the EDHOC AEAD algorithm of the selected cipher suite, using the encryption key K_3, the initialization vector IV_3, the plaintext P, and the following parameters as input (see <xref target="COSE" format="default"/>):  </t>
              <ul spacing="normal">
                <li>protected = h''</li>
                <li>external_aad = TH_3</li>
              </ul>
              <t>
where  </t>
              <ul spacing="normal">
                <li>
                  <t>K_3 = EDHOC-KDF( PRK_3e2m, TH_3, "K_3", h'', key_length )
                  </t>
                  <ul spacing="normal">
                    <li>key_length - length of the encryption key of the EDHOC AEAD algorithm</li>
                  </ul>
                </li>
                <li>
                  <t>IV_3 = EDHOC-KDF( PRK_3e2m, TH_3, "IV_3", h'', iv_length )
                  </t>
                  <ul spacing="normal">
                    <li>iv_length - length of the intialization vector of the EDHOC AEAD algorithm</li>
                  </ul>
                </li>
                <li>
                  <t>P = ( ID_CRED_I / bstr / int, Signature_or_MAC_3, ? EAD_3 )      </t>
                  <ul spacing="normal">
                    <li>If ID_CRED_I contains a single 'kid' parameter, i.e., ID_CRED_I = { 4 : kid_I }, only the byte string or integer kid_I is conveyed in the plaintext encoded accordingly as bstr or int.</li>
                  </ul>
                </li>
              </ul>
              <t>
CIPHERTEXT_3 is the 'ciphertext' of COSE_Encrypt0.</t>
            </li>
            <li>Encode message_3 as a CBOR data item as specified in <xref target="asym-msg3-form" format="default"/>.</li>
          </ul>
          <t>Pass the connection identifiers (C_I, C_R) and the application algorithms in the selected cipher suite to the application. The application can now derive application keys using the EDHOC-Exporter interface, see <xref target="exporter" format="default"/>.</t>
          <t>After sending message_3, the Initiator is assured that no other party than the Responder can compute the key PRK_4x3m (implicit key authentication). The Initiator can securely derive application keys and send protected application data. However, the Initiator does not know that the Responder has actually computed the key PRK_4x3m and therefore the Initiator SHOULD NOT permanently store the keying material PRK_4x3m and TH_4, or derived application keys, until the Initiator is assured that the Responder has actually computed the key PRK_4x3m (explicit key confirmation). This is similar to waiting for acknowledgement (ACK) in a transport protocol. Explicit key confirmation is e.g., assured when the Initiator has verified an OSCORE message or message_4 from the Responder.</t>
        </section>
        <section anchor="responder-processing-of-message-3" numbered="true" toc="default">
          <name>Responder Processing of Message 3</name>
          <t>The Responder SHALL process message_3 as follows:</t>
          <ul spacing="normal">
            <li>Decode message_3 (see <xref target="CBOR" format="default"/>).</li>
            <li>Retrieve the protocol state using the message correlation provided by the transport (e.g., the CoAP Token, the 5-tuple, or the prepended C_I, see <xref target="coap" format="default"/>).</li>
            <li>Decrypt and verify the COSE_Encrypt0 as defined in Section 5.3 of <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>, with the EDHOC AEAD algorithm in the selected cipher suite, and the parameters defined in <xref target="asym-msg3-proc" format="default"/>.</li>
            <li>Pass EAD_3 to the security application.</li>
            <li>Verify that the identity of the Initiator is an allowed identity for this connection, see <xref target="identities" format="default"/>.</li>
            <li>Verify Signature_or_MAC_3 using the algorithm in the selected cipher suite. The verification process depends on the method, see <xref target="asym-msg3-proc" format="default"/>.</li>
            <li>Pass the connection identifiers (C_I, C_R), and the application algorithms in the selected cipher suite to the security application. The application can now derive application keys using the EDHOC-Exporter interface.</li>
          </ul>
          <t>If any processing step fails, the Responder SHOULD send an EDHOC error message back, formatted as defined in <xref target="error" format="default"/>. Sending error messages is essential for debugging but MAY e.g., be skipped if a session cannot be found or due to denial-of-service reasons, see <xref target="dos" format="default"/>. If an error message is sent, the session MUST be discontinued.</t>
          <t>After verifying message_3, the Responder is assured that the Initiator has calculated the key PRK_4x3m (explicit key confirmation) and that no other party than the Responder can compute the key. The Responder can securely send protected application data and store the keying material PRK_4x3m and TH_4.</t>
        </section>
      </section>
      <section anchor="m4" numbered="true" toc="default">
        <name>EDHOC Message 4</name>
        <t>This section specifies message_4 which is OPTIONAL to support. Key confirmation is normally provided by sending an application message from the Responder to the Initiator protected with a key derived with the EDHOC-Exporter, e.g., using OSCORE (see <xref target="transfer" format="default"/>). In deployments where no protected application message is sent from the Responder to the Initiator, the Responder MUST send message_4. Two examples of such deployments:</t>
        <ol spacing="normal" type="1"><li>When EDHOC is only used for authentication and no application data is sent.</li>
          <li>When application data is only sent from the Initiator to the Responder.</li>
        </ol>
        <t>Further considerations about when to use message_4 are provided in <xref target="applicability" format="default"/> and <xref target="sec-prop" format="default"/>.</t>
        <section anchor="asym-msg4-form" numbered="true" toc="default">
          <name>Formatting of Message 4</name>
          <t>message_4 SHALL be a CBOR Sequence (see <xref target="CBOR" format="default"/>) as defined below</t>
          <sourcecode type="CDDL"><![CDATA[
message_4 = (
  CIPHERTEXT_4 : bstr,
)
]]></sourcecode>
        </section>
        <section anchor="asym-msg4-proc" numbered="true" toc="default">
          <name>Responder Processing of Message 4</name>
          <t>The Responder SHALL compose message_4 as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Compute a COSE_Encrypt0 as defined in Section 5.3 of <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>, with the EDHOC AEAD algorithm of the selected cipher suite, using the encryption key K_4, the initialization vector IV_4, the plaintext P, and the following parameters as input (see <xref target="COSE" format="default"/>):  </t>
              <ul spacing="normal">
                <li>protected = h''</li>
                <li>external_aad = TH_4</li>
              </ul>
              <t>
where  </t>
              <ul spacing="normal">
                <li>
                  <t>K_4 = EDHOC-Exporter( "EDHOC_K_4", h'', key_length )
                  </t>
                  <ul spacing="normal">
                    <li>key_length - length of the encryption key of the EDHOC AEAD algorithm</li>
                  </ul>
                </li>
                <li>
                  <t>IV_4 = EDHOC-Exporter( "EDHOC_IV_4", h'', iv_length )
                  </t>
                  <ul spacing="normal">
                    <li>iv_length - length of the intialization vector of the EDHOC AEAD algorithm</li>
                  </ul>
                </li>
                <li>
                  <t>P = ( ? EAD_4 )
                  </t>
                  <ul spacing="normal">
                    <li>EAD_4 - protected external authorization data, see <xref target="AD" format="default"/>.</li>
                  </ul>
                </li>
              </ul>
              <t>
CIPHERTEXT_4 is the 'ciphertext' of COSE_Encrypt0.</t>
            </li>
            <li>Encode message_4 as a CBOR data item as specified in <xref target="asym-msg4-form" format="default"/>.</li>
          </ul>
        </section>
        <section anchor="initiator-processing-of-message-4" numbered="true" toc="default">
          <name>Initiator Processing of Message 4</name>
          <t>The Initiator SHALL process message_4 as follows:</t>
          <ul spacing="normal">
            <li>Decode message_4 (see <xref target="CBOR" format="default"/>).</li>
            <li>Retrieve the protocol state using the message correlation provided by the transport (e.g., the CoAP Token, the 5-tuple, or the prepended C_I, see <xref target="coap" format="default"/>).</li>
            <li>Decrypt and verify the COSE_Encrypt0 as defined in Section 5.3 of <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>, with the EDHOC AEAD algorithm in the selected cipher suite, and the parameters defined in <xref target="asym-msg4-proc" format="default"/>.</li>
            <li>Pass EAD_4 to the security application.</li>
          </ul>
          <t>If any processing step fails, the Responder SHOULD send an EDHOC error message back, formatted as defined in <xref target="error" format="default"/>. Sending error messages is essential for debugging but MAY e.g., be skipped if a session cannot be found or due to denial-of-service reasons, see <xref target="dos" format="default"/>. If an error message is sent, the session MUST be discontinued.</t>
        </section>
      </section>
    </section>
    <section anchor="error" numbered="true" toc="default">
      <name>Error Handling</name>
      <t>This section defines the format for error messages.</t>
      <t>An EDHOC error message can be sent by either endpoint as a reply to any non-error EDHOC message. How errors at the EDHOC layer are transported depends on lower layers, which need to enable error messages to be sent and processed as intended.</t>
      <t>Errors in EDHOC are fatal. After sending an error message, the sender MUST discontinue the protocol. The receiver SHOULD treat an error message as an indication that the other party likely has discontinued the protocol. But as the error message is not authenticated, a received error message might also have been sent by an attacker and the receiver MAY therefore try to continue the protocol.</t>
      <t>error SHALL be a CBOR Sequence (see <xref target="CBOR" format="default"/>) as defined below</t>
      <figure anchor="fig-error-message">
        <name>EDHOC Error Message</name>
        <sourcecode type="CDDL"><![CDATA[
error = (
  ERR_CODE : int,
  ERR_INFO : any,
)
]]></sourcecode>
      </figure>
      <t>where:</t>
      <ul spacing="normal">
        <li>ERR_CODE - error code encoded as an integer. The value 0 is used for success, all other values (negative or positive) indicate errors.</li>
        <li>ERR_INFO - error information. Content and encoding depend on error code.</li>
      </ul>
      <t>The remainder of this section specifies the currently defined error codes, see <xref target="fig-error-codes" format="default"/>. Additional error codes and corresponding error information may be specified.</t>
      <figure anchor="fig-error-codes">
        <name>Error Codes and Error Information</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+----------+---------------+----------------------------------------+
| ERR_CODE | ERR_INFO Type | Description                            |
+==========+===============+========================================+
|        0 | any           | Success                                |
+----------+---------------+----------------------------------------+
|        1 | tstr          | Unspecified                            |
+----------+---------------+----------------------------------------+
|        2 | suites        | Wrong selected cipher suite            |
+----------+---------------+----------------------------------------+
]]></artwork>
      </figure>
      <section anchor="success" numbered="true" toc="default">
        <name>Success</name>
        <t>Error code 0 MAY be used internally in an application to indicate success, e.g., in log files. ERR_INFO can contain any type of CBOR item. Error code 0 MUST NOT be used as part of the EDHOC message exchange flow.</t>
      </section>
      <section anchor="unspecified" numbered="true" toc="default">
        <name>Unspecified</name>
        <t>Error code 1 is used for errors that do not have a specific error code defined. ERR_INFO MUST be a text string containing a human-readable diagnostic message written in English. The diagnostic text message is mainly intended for software engineers that during debugging need to interpret it in the context of the EDHOC specification. The diagnostic message SHOULD be provided to the calling application where it SHOULD be logged.</t>
      </section>
      <section anchor="wrong-selected" numbered="true" toc="default">
        <name>Wrong Selected Cipher Suite</name>
        <t>Error code 2 MUST only be used in a response to message_1 in case the cipher suite selected by the Initiator is not supported by the Responder, or if the Responder supports a cipher suite more preferred by the Initiator than the selected cipher suite, see <xref target="resp-proc-msg1" format="default"/>. ERR_INFO is in this case denoted SUITES_R and is of type suites, see <xref target="asym-msg1-form" format="default"/>. If the Responder does not support the selected cipher suite, then SUITES_R MUST include one or more supported cipher suites. If the Responder supports a cipher suite in SUITES_I other than the selected cipher suite (independently of if the selected cipher suite is supported or not) then SUITES_R MUST include the supported cipher suite in SUITES_I which is most preferred by the Initiator. SUITES_R MAY include a single cipher suite, i.e., be encoded as an int. If the Responder does not support any cipher suite in SUITES_I, then it SHOULD include all its supported cipher suites in SUITES_R in any order.</t>
        <section anchor="cipher-suite-negotiation" numbered="true" toc="default">
          <name>Cipher Suite Negotiation</name>
          <t>After receiving SUITES_R, the Initiator can determine which cipher suite to select (if any) for the next EDHOC run with the Responder.</t>
          <t>If the Initiator intends to contact the Responder in the future, the Initiator SHOULD remember which selected cipher suite to use until the next message_1 has been sent, otherwise the Initiator and Responder will likely run into an infinite loop where the Initiator selects its most preferred and the Responder sends an error with supported cipher suites. After a successful run of EDHOC, the Initiator MAY remember the selected cipher suite to use in future EDHOC sessions. Note that if the Initiator or Responder is updated with new cipher suite policies, any cached information may be outdated.</t>
        </section>
        <section anchor="ex-neg" numbered="true" toc="default">
          <name>Examples</name>
          <t>Assume that the Initiator supports the five cipher suites 5, 6, 7, 8, and 9 in decreasing order of preference. Figures <xref target="fig-error1" format="counter"/> and <xref target="fig-error2" format="counter"/> show examples of how the Initiator can format SUITES_I and how SUITES_R is used by Responders to give the Initiator information about the cipher suites that the Responder supports.</t>
          <t>In the first example (<xref target="fig-error1" format="default"/>), the Responder supports cipher suite 6 but not the initially selected cipher suite 5.</t>
          <figure anchor="fig-error1">
            <name>Example of Responder supporting suite 6 but not suite 5.</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
Initiator                                                   Responder
|              METHOD, SUITES_I = 5, G_X, C_I, EAD_1                |
+------------------------------------------------------------------>|
|                             message_1                             |
|                                                                   |
|                   ERR_CODE = 2, SUITES_R = 6                      |
|<------------------------------------------------------------------+
|                               error                               |
|                                                                   |
|             METHOD, SUITES_I = [5, 6], G_X, C_I, EAD_1            |
+------------------------------------------------------------------>|
|                             message_1                             |
]]></artwork>
          </figure>
          <t>In the second example (<xref target="fig-error2" format="default"/>), the Responder supports cipher suites 8 and 9 but not the more preferred (by the Initiator) cipher suites 5, 6 or 7. To illustrate the negotiation mechanics we let the Initiator first make a guess that the Responder supports suite 6 but not suite 5. Since the Responder supports neither 5 nor 6, it responds with SUITES_R containing the supported suites, after which the Initiator selects its most preferred supported suite. The order of cipher suites in SUITES_R does not matter. (If the Responder had supported suite 5, it would have included it in SUITES_R of the response, and it would in that case have become the selected suite in the second message_1.)</t>
          <figure anchor="fig-error2">
            <name>Example of Responder supporting suites 8 and 9 but not 5, 6 or 7.</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
Initiator                                                   Responder
|            METHOD, SUITES_I = [5, 6], G_X, C_I, EAD_1             |
+------------------------------------------------------------------>|
|                             message_1                             |
|                                                                   |
|                  ERR_CODE = 2, SUITES_R = [9, 8]                  |
|<------------------------------------------------------------------+
|                               error                               |
|                                                                   |
|           METHOD, SUITES_I = [5, 6, 7, 8], G_X, C_I, EAD_1        |
+------------------------------------------------------------------>|
|                             message_1                             |
]]></artwork>
          </figure>
          <t>Note that the Initiator's list of supported cipher suites and order of preference is fixed (see <xref target="asym-msg1-form" format="default"/> and <xref target="init-proc-msg1" format="default"/>). Furthermore, the Responder shall only accept message_1 if the selected cipher suite is the first cipher suite in SUITES_I that the Responder supports (see <xref target="resp-proc-msg1" format="default"/>). Following this procedure ensures that the selected cipher suite is the most preferred (by the Initiator) cipher suite supported by both parties.</t>
          <t>If the selected cipher suite is not the first cipher suite which the Responder supports in SUITES_I received in message_1, then Responder MUST discontinue the protocol, see <xref target="resp-proc-msg1" format="default"/>. If SUITES_I in message_1 is manipulated, then the integrity verification of message_2 containing the transcript hash TH_2 will fail and the Initiator will discontinue the protocol.</t>
        </section>
      </section>
    </section>
    <section anchor="mti" numbered="true" toc="default">
      <name>Mandatory-to-Implement Compliance Requirements</name>
      <t>An implementation may support only Initiator or only Responder.</t>
      <t>An implementation may support only a single method. None of the methods are mandatory-to-implement.</t>
      <t>Implementations MUST support 'kid' parameters of type int. None of the other COSE header parameters are mandatory-to-implement.</t>
      <t>An implementation may support only a single credential type (CCS, CWT, X.509, C509). None of the credential types are mandatory-to-implement.</t>
      <t>Implementations MUST support the EDHOC-Exporter. Implementations SHOULD support EDHOC-KeyUpdate.</t>
      <t>Implementations MAY support message_4. Error codes 1 and 2 MUST be supported.</t>
      <t>Implementations MAY support EAD.</t>
      <t>For many constrained IoT devices it is problematic to support more than one cipher suite. Existing devices can be expected to support either ECDSA or EdDSA. To enable as much interoperability as we can reasonably achieve, less constrained devices SHOULD implement both cipher suite 0 (AES-CCM-16-64-128, SHA-256, 8, X25519, EdDSA, AES-CCM-16-64-128, SHA-256) and cipher suite 2 (AES-CCM-16-64-128, SHA-256, 8, P-256, ES256, AES-CCM-16-64-128, SHA-256). Constrained endpoints SHOULD implement cipher suite 0 or cipher suite 2. Implementations only need to implement the algorithms needed for their supported methods.</t>
    </section>
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section anchor="sec-prop" numbered="true" toc="default">
        <name>Security Properties</name>
        <t>EDHOC inherits its security properties from the theoretical SIGMA-I protocol <xref target="SIGMA" format="default"/>. Using the terminology from <xref target="SIGMA" format="default"/>, EDHOC provides forward secrecy, mutual authentication with aliveness, consistency, and peer awareness. As described in <xref target="SIGMA" format="default"/>, peer awareness is provided to the Responder, but not to the Initiator.</t>
        <t>As described in <xref target="SIGMA" format="default"/>, different levels of identity protection is provided to the Initiator and the Responder. EDHOC protects the credential identifier of the Initiator against active attacks and the credential identifier of the Responder against passive attacks. The roles should be assigned to protect the most sensitive identity/identifier, typically that which is not possible to infer from routing information in the lower layers.</t>
        <t>Compared to <xref target="SIGMA" format="default"/>, EDHOC adds an explicit method type and expands the message authentication coverage to additional elements such as algorithms, external authorization data, and previous messages. This protects against an attacker replaying messages or injecting messages from another session.</t>
        <t>EDHOC also adds selection of connection identifiers and downgrade protected negotiation of cryptographic parameters, i.e., an attacker cannot affect the negotiated parameters. A single session of EDHOC does not include negotiation of cipher suites, but it enables the Responder to verify that the selected cipher suite is the most preferred cipher suite by the Initiator which is supported by both the Initiator and the Responder.</t>
        <t>As required by <xref target="RFC7258" format="default"/>, IETF protocols need to mitigate pervasive monitoring when possible. EDHOC therefore only supports methods with ephemeral Diffie-Hellman and provides a KeyUpdate function for lightweight application protocol rekeying with forward secrecy, in the sense that compromise of the private authentication keys does not compromise past session keys, and compromise of a session key does not compromise past session keys.</t>
        <t>While the KeyUpdate method can be used to meet cryptographic limits and provide partial protection against key leakage, it provides significantly weaker security properties than re-running EDHOC with ephemeral Diffie-Hellman. Even with frequent use of KeyUpdate, compromise of one session key compromises all future session keys, and an attacker therefore only needs to perform static key exfiltration <xref target="RFC7624" format="default"/>. Frequently re-running EDHOC with ephemeral Diffie-Hellman forces attackers to perform dynamic key exfiltration instead of static key exfiltration <xref target="RFC7624" format="default"/>. In the dynamic case, the attacker must have continuous interactions with the collaborator, which is more complicated and has a higher risk profile than the static case.</t>
        <t>To limit the effect of breaches, it is important to limit the use of symmetrical group keys for bootstrapping. EDHOC therefore strives to make the additional cost of using raw public keys and self-signed certificates as small as possible. Raw public keys and self-signed certificates are not a replacement for a public key infrastructure but SHOULD be used instead of symmetrical group keys for bootstrapping.</t>
        <t>Compromise of the long-term keys (private signature or static DH keys) does not compromise the security of completed EDHOC exchanges. Compromising the private authentication keys of one party lets an active attacker impersonate that compromised party in EDHOC exchanges with other parties but does not let the attacker impersonate other parties in EDHOC exchanges with the compromised party. Compromise of the long-term keys does not enable a passive attacker to compromise future session keys. Compromise of the HDKF input parameters (ECDH shared secret) leads to compromise of all session keys derived from that compromised shared secret. Compromise of one session key does not compromise other session keys. Compromise of PRK_4x3m leads to compromise of all exported keying material derived after the last invocation of the EDHOC-KeyUpdate function.</t>
        <t>EDHOC provides a minimum of 64-bit security against online brute force attacks and a minimum of 128-bit security against offline brute force attacks. This is in line with IPsec, TLS, and COSE. To break 64-bit security against online brute force an attacker would on average have to send 4.3 billion messages per second for 68 years, which is infeasible in constrained IoT radio technologies.</t>
        <t>After sending message_3, the Initiator is assured that no other party than the Responder can compute the key PRK_4x3m (implicit key authentication). The Initiator does however not know that the Responder has actually computed the key PRK_4x3m. While the Initiator can securely send protected application data, the Initiator SHOULD NOT permanently store the keying material PRK_4x3m and TH_4 until the Initiator is assured that the Responder has actually computed the key PRK_4x3m (explicit key confirmation). Explicit key confirmation is e.g., assured when the Initiator has verified an OSCORE message or message_4 from the Responder. After verifying message_3, the Responder is assured that the Initiator has calculated the key PRK_4x3m (explicit key confirmation) and that no other party than the Responder can compute the key. The Responder can securely send protected application data and store the keying material PRK_4x3m and TH_4.</t>
        <t>Key compromise impersonation (KCI): In EDHOC authenticated with signature keys, EDHOC provides KCI protection against an attacker having access to the long-term key or the ephemeral secret key. With static Diffie-Hellman key authentication, KCI protection would be provided against an attacker having access to the long-term Diffie-Hellman key, but not to an attacker having access to the ephemeral secret key. Note that the term KCI has typically been used for compromise of long-term keys, and that an attacker with access to the ephemeral secret key can only attack that specific session.</t>
        <t>Repudiation: In EDHOC authenticated with signature keys, the Initiator could theoretically prove that the Responder performed a run of the protocol by presenting the private ephemeral key, and vice versa. Note that storing the private ephemeral keys violates the protocol requirements. With static Diffie-Hellman key authentication, both parties can always deny having participated in the protocol.</t>
        <t>Two earlier versions of EDHOC have been formally analyzed <xref target="Norrman20" format="default"/> <xref target="Bruni18" format="default"/> and the specification has been updated based on the analysis.</t>
      </section>
      <section anchor="cryptographic-considerations" numbered="true" toc="default">
        <name>Cryptographic Considerations</name>
        <t>The SIGMA protocol requires that the encryption of message_3 provides confidentiality against active attackers and EDHOC message_4 relies on the use of
authenticated encryption. Hence the message authenticating functionality of the authenticated encryption in EDHOC is critical: authenticated encryption MUST NOT be replaced by plain encryption only, even if authentication is provided at another level or through a different mechanism.</t>
        <t>To reduce message overhead EDHOC does not use explicit nonces and instead rely on the ephemeral public keys to provide randomness to each session. A good amount of randomness is important for the key generation, to provide liveness, and to protect against interleaving attacks. For this reason, the ephemeral keys MUST NOT be used in more than one EDHOC message, and both parties SHALL generate fresh random ephemeral key pairs. Note that an ephemeral key may be used to calculate several ECDH shared secrets. When static Diffie-Hellman authentication is used the same ephemeral key is used in both ephemeral-ephemeral and ephemeral-static ECDH.</t>
        <t>As discussed in <xref target="SIGMA" format="default"/>, the encryption of message_2 does only need to protect against passive attacker as active attackers can always get the Responders identity by sending their own message_1. EDHOC uses the Expand function (typically HKDF-Expand) as a binary additive stream cipher. HKDF-Expand provides better confidentiality than AES-CTR but is not often used as it is slow on long messages, and most applications require both IND-CCA confidentiality as well as integrity protection. For the encryption of message_2, any speed difference is negligible, IND-CCA does not increase security, and integrity is provided by the inner MAC (and signature depending on method).</t>
        <t>Requirement for how to securely generate, validate, and process the ephemeral public keys depend on the elliptic curve. For X25519 and X448, the requirements are defined in <xref target="RFC7748" format="default"/>. For secp256r1, secp384r1, and secp521r1, the requirements are defined in Section 5 of <xref target="SP-800-56A" format="default"/>. For secp256r1, secp384r1, and secp521r1, at least partial public-key validation MUST be done.</t>
      </section>
      <section anchor="cipher-suites-and-cryptographic-algorithms" numbered="true" toc="default">
        <name>Cipher Suites and Cryptographic Algorithms</name>
        <t>When using private cipher suite or registering new cipher suites, the choice of key length used in the different algorithms needs to be harmonized, so that a sufficient security level is maintained for certificates, EDHOC, and the protection of application data. The Initiator and the Responder should enforce a minimum security level.</t>
        <t>The hash algorithms SHA-1 and SHA-256/64 (SHA-256 truncated to 64-bits) SHALL NOT be supported for use in EDHOC except for certificate identification with x5t and c5t. Note that secp256k1 is only defined for use with ECDSA and not for ECDH. Note that some COSE algorithms are marked as not recommended in the COSE IANA registry.</t>
      </section>
      <section anchor="pqc" numbered="true" toc="default">
        <name>Post-Quantum Considerations</name>
        <t>As of the publication of this specification, it is unclear when or even if a quantum computer of sufficient size and power to exploit public key cryptography will exist. Deployments that need to consider risks decades into the future should transition to Post-Quantum Cryptography (PQC) in the not-too-distant future. Many other systems should take a slower wait-and-see approach where PQC is phased in when the quantum threat is more imminent. Current PQC algorithms have limitations compared to Elliptic Curve Cryptography (ECC) and the data sizes would be problematic in many constrained IoT systems.</t>
        <t>Symmetric algorithms used in EDHOC such as SHA-256 and AES-CCM-16-64-128 are practically secure against even large quantum computers. EDHOC supports all signature algorithms defined by COSE, including PQC signature algorithms such as HSS-LMS. EDHOC is currently only specified for use with key exchange algorithms of type ECDH curves, but any Key Encapsulation Method (KEM), including PQC KEMs, can be used in method 0. While the key exchange in method 0 is specified with terms of the Diffie-Hellman protocol, the key exchange adheres to a KEM interface: G_X is then the public key of the Initiator, G_Y is the encapsulation, and G_XY is the shared secret. Use of PQC KEMs to replace static DH authentication would likely require a specification updating EDHOC with new methods.</t>
      </section>
      <section anchor="unprot-data" numbered="true" toc="default">
        <name>Unprotected Data</name>
        <t>The Initiator and the Responder must make sure that unprotected data and metadata do not reveal any sensitive information. This also applies for encrypted data sent to an unauthenticated party. In particular, it applies to EAD_1, ID_CRED_R, EAD_2, and error messages. Using the same EAD_1 in several EDHOC sessions allows passive eavesdroppers to correlate the different sessions. Another consideration is that the list of supported cipher suites may potentially be used to identify the application.</t>
        <t>The Initiator and the Responder must also make sure that unauthenticated data does not trigger any harmful actions. In particular, this applies to EAD_1 and error messages.</t>
      </section>
      <section anchor="dos" numbered="true" toc="default">
        <name>Denial-of-Service</name>
        <t>As CoAP provides Denial-of-Service protection in the form of the Echo option <xref target="I-D.ietf-core-echo-request-tag" format="default"/>, EDHOC itself does not provide countermeasures against Denial-of-Service attacks. By sending a number of new or replayed message_1 an attacker may cause the Responder to allocate state, perform cryptographic operations, and amplify messages. To mitigate such attacks, an implementation SHOULD rely on lower layer mechanisms such as the Echo option in CoAP that forces the initiator to demonstrate reachability at its apparent network address.</t>
        <t>An attacker can also send faked message_2, message_3, message_4, or error in an attempt to trick the receiving party to send an error message and discontinue the session. EDHOC implementations MAY evaluate if a received message is likely to have been forged by an attacker and ignore it without sending an error message or discontinuing the session.</t>
      </section>
      <section anchor="implementation-considerations" numbered="true" toc="default">
        <name>Implementation Considerations</name>
        <t>The availability of a secure random number generator is essential for the security of EDHOC. If no true random number generator is available, a truly random seed MUST be provided from an external source and used with a cryptographically secure pseudorandom number generator. As each pseudorandom number must only be used once, an implementation needs to get a new truly random seed after reboot, or continuously store state in nonvolatile memory, see (<xref target="RFC8613" format="default"/>, Appendix B.1.1) for issues and solution approaches for writing to nonvolatile memory. Intentionally or unintentionally weak or predictable pseudorandom number generators can be abused or exploited for malicious purposes. <xref target="RFC8937" format="default"/> describes a way for security protocol implementations to augment their (pseudo)random number generators using a long-term private key and a deterministic signature function. This improves randomness from broken or otherwise subverted random number generators. The same idea can be used with other secrets and functions such as a Diffie-Hellman function or a symmetric secret and a PRF like HMAC or KMAC. It is RECOMMENDED to not trust a single source of randomness and to not put unaugmented random numbers on the wire.</t>
        <t>If ECDSA is supported, "deterministic ECDSA" as specified in <xref target="RFC6979" format="default"/> MAY be used. Pure deterministic elliptic-curve signatures such as deterministic ECDSA and EdDSA have gained popularity over randomized ECDSA as their security do not depend on a source of high-quality randomness. Recent research has however found that implementations of these signature algorithms may be vulnerable to certain side-channel and
fault injection attacks due to their determinism. See e.g., Section 1 of <xref target="I-D.mattsson-cfrg-det-sigs-with-noise" format="default"/> for a list of attack papers. As suggested in Section 6.1.2 of <xref target="I-D.ietf-cose-rfc8152bis-algs" format="default"/> this can be addressed by combining randomness and determinism.</t>
        <t>All private keys, symmetric keys, and IVs MUST be secret. Implementations should provide countermeasures to side-channel attacks such as timing attacks. Intermediate computed values such as ephemeral ECDH keys and ECDH shared secrets MUST be deleted after key derivation is completed.</t>
        <t>The Initiator and the Responder are responsible for verifying the integrity of certificates. The selection of trusted CAs should be done very carefully and certificate revocation should be supported. The private authentication keys MUST be kept secret, only the Responder SHALL have access to the Responder's private authentication key and only the Initiator SHALL have access to the Initiator's private authentication key.</t>
        <t>The Initiator and the Responder are allowed to select the connection identifiers C_I and C_R, respectively, for the other party to use in the ongoing EDHOC protocol as well as in a subsequent application protocol (e.g., OSCORE <xref target="RFC8613" format="default"/>). The choice of connection identifier is not security critical in EDHOC but intended to simplify the retrieval of the right security context in combination with using short identifiers. If the wrong connection identifier of the other party is used in a protocol message it will result in the receiving party not being able to retrieve a security context (which will terminate the protocol) or retrieve the wrong security context (which also terminates the protocol as the message cannot be verified).</t>
        <t>If two nodes unintentionally initiate two simultaneous EDHOC message exchanges with each other even if they only want to complete a single EDHOC message exchange, they MAY terminate the exchange with the lexicographically smallest G_X. If the two G_X values are equal, the received message_1 MUST be discarded to mitigate reflection attacks. Note that in the case of two simultaneous EDHOC exchanges where the nodes only complete one and where the nodes have different preferred cipher suites, an attacker can affect which of the two nodes' preferred cipher suites will be used by blocking the other exchange.</t>
        <t>If supported by the device, it is RECOMMENDED that at least the long-term private keys are stored in a Trusted Execution Environment (TEE) and that sensitive operations using these keys are performed inside the TEE.  To achieve even higher security it is RECOMMENDED that additional operations such as ephemeral key generation, all computations of shared secrets, and storage of the PRK keys can be done inside the TEE. The use of a TEE enforces that code within that environment cannot be tampered with, and that any data used by such code cannot be read or tampered with by code outside that environment.</t>
      </section>
    </section>
    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="exporter-label" numbered="true" toc="default">
        <name>EDHOC Exporter Label Registry</name>
        <t>IANA has created a new registry titled "EDHOC Exporter Label" under the new group name "Ephemeral Diffie-Hellman Over COSE (EDHOC)". The registration procedure is "Expert Review". The columns of the registry are Label, Description, and Reference. All columns are text strings where Label consists only of the printable ASCII characters 0x21 - 0x7e. Labels beginning with "PRIVATE" MAY be used for private use without registration. All other label values MUST be registered. The initial contents of the registry are:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Label: EDHOC_K_4
Description: Key used to protect EDHOC message_4
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Label: EDHOC_IV_4
Description: IV used to protect EDHOC message_4
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Label: OSCORE_Master_Secret
Description: Derived OSCORE Master Secret
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Label: OSCORE_Master_Salt
Description: Derived OSCORE Master Salt
Reference: [[this document]]
]]></artwork>
      </section>
      <section anchor="suites-registry" numbered="true" toc="default">
        <name>EDHOC Cipher Suites Registry</name>
        <t>IANA has created a new registry titled "EDHOC Cipher Suites" under the new group name "Ephemeral Diffie-Hellman Over COSE (EDHOC)". The registration procedure is "Expert Review". The columns of the registry are Value, Array, Description, and Reference, where Value is an integer and the other columns are text strings. The initial contents of the registry are:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: -24
Algorithms: N/A
Desc: Reserved for Private Use
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: -23
Algorithms: N/A
Desc: Reserved for Private Use
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: -22
Algorithms: N/A
Desc: Reserved for Private Use
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: -21
Algorithms: N/A
Desc: Reserved for Private Use
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: 0
Array: 10, -16, 8, 4, -8, 10, -16
Desc: AES-CCM-16-64-128, SHA-256, 8, X25519, EdDSA,
      AES-CCM-16-64-128, SHA-256
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: 1
Array: 30, -16, 16, 4, -8, 10, -16
Desc: AES-CCM-16-128-128, SHA-256, 16, X25519, EdDSA,
      AES-CCM-16-64-128, SHA-256
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: 2
Array: 10, -16, 8, 1, -7, 10, -16
Desc: AES-CCM-16-64-128, SHA-256, 8, P-256, ES256,
      AES-CCM-16-64-128, SHA-256
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: 3
Array: 30, -16, 16, 1, -7, 10, -16
Desc: AES-CCM-16-128-128, SHA-256, 16, P-256, ES256,
      AES-CCM-16-64-128, SHA-256
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: 4
Array: 24, -16, 16, 4, -8, 24, -16
Desc: ChaCha20/Poly1305, SHA-256, 16, X25519, EdDSA,
      ChaCha20/Poly1305, SHA-256
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: 5
Array: 24, -16, 16, 1, -7, 24, -16
Desc: ChaCha20/Poly1305, SHA-256, 16, P-256, ES256,
      ChaCha20/Poly1305, SHA-256
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: 6
Array: 1, -16, 16, 4, -7, 1, -16
Desc: A128GCM, SHA-256, 16, X25519, ES256,
      A128GCM, SHA-256
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: 24
Array: 3, -43, 16, 2, -35, 3, -43
Desc: A256GCM, SHA-384, 16, P-384, ES384,
      A256GCM, SHA-384
Reference: [[this document]]
]]></artwork>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Value: 25
Array: 24, -45, 16, 5, -8, 24, -45
Desc: ChaCha20/Poly1305, SHAKE256, 16, X448, EdDSA,
      ChaCha20/Poly1305, SHAKE256
Reference: [[this document]]
]]></artwork>
      </section>
      <section anchor="method-types" numbered="true" toc="default">
        <name>EDHOC Method Type Registry</name>
        <t>IANA has created a new registry entitled "EDHOC Method Type" under the new group name "Ephemeral Diffie-Hellman Over COSE (EDHOC)". The registration procedure is "Expert Review". The columns of the registry are Value, Description, and Reference, where Value is an integer and the other columns are text strings. The initial contents of the registry are shown in <xref target="fig-method-types" format="default"/>.</t>
      </section>
      <section anchor="edhoc-error-codes-registry" numbered="true" toc="default">
        <name>EDHOC Error Codes Registry</name>
        <t>IANA has created a new registry entitled "EDHOC Error Codes" under the new group name "Ephemeral Diffie-Hellman Over COSE (EDHOC)". The registration procedure is "Expert Review". The columns of the registry are ERR_CODE, ERR_INFO Type and Description, where ERR_CODE is an integer, ERR_INFO is a CDDL defined type, and Description is a text string. The initial contents of the registry are shown in <xref target="fig-error-codes" format="default"/>.</t>
      </section>
      <section anchor="iana-ead" numbered="true" toc="default">
        <name>EDHOC External Authorization Data Registry</name>
        <t>IANA has created a new registry entitled "EDHOC External Authorization Data" under the new group name "Ephemeral Diffie-Hellman Over COSE (EDHOC)". The registration procedure is "Expert Review". The columns of the registry are Label, Description, Value Type, and Reference, where Label is an integer and the other columns are text strings.</t>
      </section>
      <section anchor="cwt-header-param" numbered="true" toc="default">
        <name>COSE Header Parameters Registry</name>
        <t>IANA has registered the following entries in the "COSE Header Parameters" registry under the group name "CBOR Object Signing and Encryption (COSE)". The value of the 'kcwt' header parameter is a COSE Web Token (CWT) <xref target="RFC8392" format="default"/>, and the value of the 'kccs' header parameter is an CWT Claims Set (CCS), see <xref target="term" format="default"/>. The CWT/CCS must contain a COSE_Key in a 'cnf' claim <xref target="RFC8747" format="default"/>. The Value Registry for this item is empty and omitted from the table below.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+-----------+-------+----------------+---------------------------+
| Name      | Label | Value Type     | Description               |
+===========+=======+================+===========================+
| kcwt      | TBD1  | COSE_Messages  | A CBOR Web Token (CWT)    |
|           |       |                | containing a COSE_Key in  |
|           |       |                | a 'cnf' claim             |
+-----------+-------+----------------+---------------------------+
| kccs      | TBD2  | map / #6(map)  | A CWT Claims Set (CCS)    |
|           |       |                | containing a COSE_Key in  |
|           |       |                | a 'cnf' claim             |
+-----------+-------+----------------+---------------------------+
]]></artwork>
      </section>
      <section anchor="kid-header-param" numbered="true" toc="default">
        <name>COSE Header Parameters Registry</name>
        <t>IANA has extended the Value Type of 'kid' in the "COSE Header Parameters" registry under the group name "CBOR Object Signing and Encryption (COSE)" to also allow the Value Type int. The resulting Value Type is bstr / int. The Value Registry for this item is empty and omitted from the table below.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+------+-------+------------+----------------+-------------------+
| Name | Label | Value Type | Description    | Reference         |
+------+-------+------------+----------------+-------------------+
| kid  |   4   | bstr / int | Key identifier | [RFC9052]         |
|      |       |            |                | [[This document]] |
+------+-------+------------+----------------+-------------------+
]]></artwork>
      </section>
      <section anchor="kid-key-common-param" numbered="true" toc="default">
        <name>COSE Key Common Parameters Registry</name>
        <t>IANA has extended the Value Type of 'kid' in the "COSE Key Common Parameters" registry under the group name "CBOR Object Signing and Encryption (COSE)" to also allow the Value Type int. The resulting Value Type is bstr / int. The Value Registry for this item is empty and omitted from the table below.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+------+-------+------------+----------------+-------------------+
| Name | Label | Value Type | Description    | Reference         |
+------+-------+------------+----------------+-------------------+
| kid  |   2   | bstr / int | Key identifi-  | [RFC9052]         |
|      |       |            | cation value - | [[This document]] |
|      |       |            | match to kid   |                   |
|      |       |            | in message     |                   |
+------+-------+------------+----------------+-------------------+
]]></artwork>
      </section>
      <section anchor="kid-cwt-conf-meth-param" numbered="true" toc="default">
        <name>CWT Confirmation Methods Registry</name>
        <t>IANA has extended the Value Type of 'kid' in the "CWT Confirmation Methods" registry under the group name "CBOR Web Token (CWT) Claims" to also allow the Value Type int. The incorrect term binary string has been corrected to bstr. The resulting Value Type is bstr / int. The new updated content for the 'kid' method is shown in the list below.</t>
        <ul spacing="normal">
          <li>Confirmation Method Name: kid</li>
          <li>Confirmation Method Description: Key Identifier</li>
          <li>JWT Confirmation Method Name: kid</li>
          <li>Confirmation Key: 3</li>
          <li>Confirmation Value Type(s): bstr / int</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document(s): Section 3.4 of RFC 8747 [[This document]]</li>
        </ul>
      </section>
      <section anchor="the-well-known-uri-registry" numbered="true" toc="default">
        <name>The Well-Known URI Registry</name>
        <t>IANA has added the well-known URI "edhoc" to the "Well-Known URIs" registry under the group name "Well-Known URIs".</t>
        <ul spacing="normal">
          <li>URI suffix: edhoc</li>
          <li>Change controller: IETF</li>
          <li>Specification document(s): [[this document]]</li>
          <li>Related information: None</li>
        </ul>
      </section>
      <section anchor="media-types-registry" numbered="true" toc="default">
        <name>Media Types Registry</name>
        <t>IANA has added the media type "application/edhoc" to the "Media Types" registry.</t>
        <ul spacing="normal">
          <li>Type name: application</li>
          <li>Subtype name: edhoc</li>
          <li>Required parameters: N/A</li>
          <li>Optional parameters: N/A</li>
          <li>Encoding considerations: binary</li>
          <li>Security considerations: See Section 7 of this document.</li>
          <li>Interoperability considerations: N/A</li>
          <li>Published specification: [[this document]] (this document)</li>
          <li>Applications that use this media type: To be identified</li>
          <li>Fragment identifier considerations: N/A</li>
          <li>
            <t>Additional information:  </t>
            <ul spacing="normal">
              <li>Magic number(s): N/A</li>
              <li>File extension(s): N/A</li>
              <li>Macintosh file type code(s): N/A</li>
            </ul>
          </li>
          <li>Person &amp; email address to contact for further information: See "Authors' Addresses" section.</li>
          <li>Intended usage: COMMON</li>
          <li>Restrictions on usage: N/A</li>
          <li>Author: See "Authors' Addresses" section.</li>
          <li>Change Controller: IESG</li>
        </ul>
      </section>
      <section anchor="coap-content-formats-registry" numbered="true" toc="default">
        <name>CoAP Content-Formats Registry</name>
        <t>IANA has added the media type "application/edhoc" to the "CoAP Content-Formats" registry under the group name "Constrained RESTful Environments (CoRE) Parameters".</t>
        <ul spacing="normal">
          <li>Media Type: application/edhoc</li>
          <li>Encoding:</li>
          <li>ID: TBD42</li>
          <li>Reference: [[this document]]</li>
        </ul>
      </section>
      <section anchor="resource-type-rt-link-target-attribute-values-registry" numbered="true" toc="default">
        <name>Resource Type (rt=) Link Target Attribute Values Registry</name>
        <t>IANA has added the resource type "core.edhoc" to the "Resource Type (rt=) Link Target Attribute Values" registry under the group name "Constrained RESTful Environments (CoRE) Parameters".</t>
        <ul spacing="normal">
          <li>Value: "core.edhoc"</li>
          <li>Description: EDHOC resource.</li>
          <li>Reference: [[this document]]</li>
        </ul>
        <t>Client applications can use this resource type to discover a server's resource for EDHOC, where to send a request for executing the EDHOC protocol.</t>
      </section>
      <section anchor="expert-review-instructions" numbered="true" toc="default">
        <name>Expert Review Instructions</name>
        <t>The IANA Registries established in this document is defined as "Expert Review". This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason so they should be given substantial latitude.</t>
        <t>Expert reviewers should take into consideration the following points:</t>
        <ul spacing="normal">
          <li>Clarity and correctness of registrations. Experts are expected to check the clarity of purpose and use of the requested entries. Expert needs to make sure the values of algorithms are taken from the right registry, when that is required. Expert should consider requesting an opinion on the correctness of registered parameters from relevant IETF working groups. Encodings that do not meet these objective of clarity and completeness should not be registered.</li>
          <li>Experts should take into account the expected usage of fields when approving point assignment. The length of the encoded value should be weighed against how many code points of that length are left, the size of device it will be used on, and the number of code points left that encode to that size.</li>
          <li>Specifications are recommended. When specifications are not provided, the description provided needs to have sufficient information to verify the points above.</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <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="RFC5116" target="https://www.rfc-editor.org/info/rfc5116" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5116.xml">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author initials="D." surname="McGrew" fullname="D. McGrew">
              <organization/>
            </author>
            <date year="2008" month="January"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms.  The interface and registry can be used as an application-independent set of cryptoalgorithm suites.  This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </reference>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author initials="D." surname="Cooper" fullname="D. Cooper">
              <organization/>
            </author>
            <author initials="S." surname="Santesson" fullname="S. Santesson">
              <organization/>
            </author>
            <author initials="S." surname="Farrell" fullname="S. Farrell">
              <organization/>
            </author>
            <author initials="S." surname="Boeyen" fullname="S. Boeyen">
              <organization/>
            </author>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization/>
            </author>
            <author initials="W." surname="Polk" fullname="W. Polk">
              <organization/>
            </author>
            <date year="2008" month="May"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5869" target="https://www.rfc-editor.org/info/rfc5869" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5869.xml">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author initials="H." surname="Krawczyk" fullname="H. Krawczyk">
              <organization/>
            </author>
            <author initials="P." surname="Eronen" fullname="P. Eronen">
              <organization/>
            </author>
            <date year="2010" month="May"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications.  The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC6090" target="https://www.rfc-editor.org/info/rfc6090" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6090.xml">
          <front>
            <title>Fundamental Elliptic Curve Cryptography Algorithms</title>
            <author initials="D." surname="McGrew" fullname="D. McGrew">
              <organization/>
            </author>
            <author initials="K." surname="Igoe" fullname="K. Igoe">
              <organization/>
            </author>
            <author initials="M." surname="Salter" fullname="M. Salter">
              <organization/>
            </author>
            <date year="2011" month="February"/>
            <abstract>
              <t>This note describes the fundamental algorithms of Elliptic Curve Cryptography (ECC) as they were defined in some seminal references from 1994 and earlier.  These descriptions may be useful for implementing the fundamental algorithms without using any of the specialized methods that were developed in following years.  Only elliptic curves defined over fields of characteristic greater than three are in scope; these curves are those used in Suite B. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6090"/>
          <seriesInfo name="DOI" value="10.17487/RFC6090"/>
        </reference>
        <reference anchor="RFC6979" target="https://www.rfc-editor.org/info/rfc6979" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6979.xml">
          <front>
            <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <author initials="T." surname="Pornin" fullname="T. Pornin">
              <organization/>
            </author>
            <date year="2013" month="August"/>
            <abstract>
              <t>This document defines a deterministic digital signature generation procedure.  Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein.  Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6979"/>
          <seriesInfo name="DOI" value="10.17487/RFC6979"/>
        </reference>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author initials="Z." surname="Shelby" fullname="Z. Shelby">
              <organization/>
            </author>
            <author initials="K." surname="Hartke" fullname="K. Hartke">
              <organization/>
            </author>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <date year="2014" month="June"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7624" target="https://www.rfc-editor.org/info/rfc7624" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7624.xml">
          <front>
            <title>Confidentiality in the Face of Pervasive Surveillance: A Threat Model and Problem Statement</title>
            <author initials="R." surname="Barnes" fullname="R. Barnes">
              <organization/>
            </author>
            <author initials="B." surname="Schneier" fullname="B. Schneier">
              <organization/>
            </author>
            <author initials="C." surname="Jennings" fullname="C. Jennings">
              <organization/>
            </author>
            <author initials="T." surname="Hardie" fullname="T. Hardie">
              <organization/>
            </author>
            <author initials="B." surname="Trammell" fullname="B. Trammell">
              <organization/>
            </author>
            <author initials="C." surname="Huitema" fullname="C. Huitema">
              <organization/>
            </author>
            <author initials="D." surname="Borkmann" fullname="D. Borkmann">
              <organization/>
            </author>
            <date year="2015" month="August"/>
            <abstract>
              <t>Since the initial revelations of pervasive surveillance in 2013, several classes of attacks on Internet communications have been discovered.  In this document, we develop a threat model that describes these attacks on Internet confidentiality.  We assume an attacker that is interested in undetected, indiscriminate eavesdropping.  The threat model is based on published, verified attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7624"/>
          <seriesInfo name="DOI" value="10.17487/RFC7624"/>
        </reference>
        <reference anchor="RFC7748" target="https://www.rfc-editor.org/info/rfc7748" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7748.xml">
          <front>
            <title>Elliptic Curves for Security</title>
            <author initials="A." surname="Langley" fullname="A. Langley">
              <organization/>
            </author>
            <author initials="M." surname="Hamburg" fullname="M. Hamburg">
              <organization/>
            </author>
            <author initials="S." surname="Turner" fullname="S. Turner">
              <organization/>
            </author>
            <date year="2016" month="January"/>
            <abstract>
              <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS).  These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7748"/>
          <seriesInfo name="DOI" value="10.17487/RFC7748"/>
        </reference>
        <reference anchor="RFC7959" target="https://www.rfc-editor.org/info/rfc7959" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7959.xml">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <author initials="Z." surname="Shelby" fullname="Z. Shelby" role="editor">
              <organization/>
            </author>
            <date year="2016" month="August"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks.  Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates.  In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS).  These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs.  In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers.  Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations.  Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8376" target="https://www.rfc-editor.org/info/rfc8376" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8376.xml">
          <front>
            <title>Low-Power Wide Area Network (LPWAN) Overview</title>
            <author initials="S." surname="Farrell" fullname="S. Farrell" role="editor">
              <organization/>
            </author>
            <date year="2018" month="May"/>
            <abstract>
              <t>Low-Power Wide Area Networks (LPWANs) are wireless technologies with characteristics such as large coverage areas, low bandwidth, possibly very small packet and application-layer data sizes, and long battery life operation.  This memo is an informational overview of the set of LPWAN technologies being considered in the IETF and of the gaps that exist between the needs of those technologies and the goal of running IP in LPWANs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8376"/>
          <seriesInfo name="DOI" value="10.17487/RFC8376"/>
        </reference>
        <reference anchor="RFC8392" target="https://www.rfc-editor.org/info/rfc8392" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="E." surname="Wahlstroem" fullname="E. Wahlstroem">
              <organization/>
            </author>
            <author initials="S." surname="Erdtman" fullname="S. Erdtman">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization/>
            </author>
            <date year="2018" month="May"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties.  The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection.  A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value.  CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author initials="H." surname="Birkholz" fullname="H. Birkholz">
              <organization/>
            </author>
            <author initials="C." surname="Vigano" fullname="C. Vigano">
              <organization/>
            </author>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <date year="2019" month="June"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author initials="G." surname="Selander" fullname="G. Selander">
              <organization/>
            </author>
            <author initials="J." surname="Mattsson" fullname="J. Mattsson">
              <organization/>
            </author>
            <author initials="F." surname="Palombini" fullname="F. Palombini">
              <organization/>
            </author>
            <author initials="L." surname="Seitz" fullname="L. Seitz">
              <organization/>
            </author>
            <date year="2019" month="July"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE).  OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration.  Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC8724" target="https://www.rfc-editor.org/info/rfc8724" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8724.xml">
          <front>
            <title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
            <author initials="A." surname="Minaburo" fullname="A. Minaburo">
              <organization/>
            </author>
            <author initials="L." surname="Toutain" fullname="L. Toutain">
              <organization/>
            </author>
            <author initials="C." surname="Gomez" fullname="C. Gomez">
              <organization/>
            </author>
            <author initials="D." surname="Barthel" fullname="D. Barthel">
              <organization/>
            </author>
            <author initials="JC." surname="Zúñiga" fullname="JC. Zúñiga">
              <organization/>
            </author>
            <date year="2020" month="April"/>
            <abstract>
              <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
              <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t>
              <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t>
              <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8724"/>
          <seriesInfo name="DOI" value="10.17487/RFC8724"/>
        </reference>
        <reference anchor="RFC8742" target="https://www.rfc-editor.org/info/rfc8742" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8742.xml">
          <front>
            <title>Concise Binary Object Representation (CBOR) Sequences</title>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <date year="2020" month="February"/>
            <abstract>
              <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq".  A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
              <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation.  This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8742"/>
          <seriesInfo name="DOI" value="10.17487/RFC8742"/>
        </reference>
        <reference anchor="RFC8747" target="https://www.rfc-editor.org/info/rfc8747" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8747.xml">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="L." surname="Seitz" fullname="L. Seitz">
              <organization/>
            </author>
            <author initials="G." surname="Selander" fullname="G. Selander">
              <organization/>
            </author>
            <author initials="S." surname="Erdtman" fullname="S. Erdtman">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization/>
            </author>
            <date year="2020" month="March"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization/>
            </author>
            <date year="2020" month="December"/>
            <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="I-D.ietf-cose-rfc8152bis-struct" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-cose-rfc8152bis-struct.xml" target="https://www.ietf.org/archive/id/draft-ietf-cose-rfc8152bis-struct-15.txt">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="Jim Schaad">
              <organization>August Cellars</organization>
            </author>
            <date month="February" day="1" year="2021"/>
            <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.

   This document along with [I-D.ietf-cose-rfc8152bis-algs] obsoletes
   RFC8152.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-rfc8152bis-struct-15"/>
        </reference>
        <reference anchor="I-D.ietf-cose-rfc8152bis-algs" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-cose-rfc8152bis-algs.xml" target="https://www.ietf.org/archive/id/draft-ietf-cose-rfc8152bis-algs-12.txt">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="Jim Schaad">
              <organization>August Cellars</organization>
            </author>
            <date month="September" day="24" year="2020"/>
            <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 a set of algorithms that can be used with the
   CBOR Object Signing and Encryption (COSE) protocol RFC XXXX.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-rfc8152bis-algs-12"/>
        </reference>
        <reference anchor="I-D.ietf-cose-x509" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-cose-x509.xml" target="https://www.ietf.org/internet-drafts/draft-ietf-cose-x509-08.txt">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header parameters for carrying and referencing X.509 certificates</title>
            <author initials="J" surname="Schaad" fullname="Jim Schaad">
              <organization/>
            </author>
            <date year="2020" month="December" day="14"/>
            <abstract>
              <t>The CBOR Signing And Encrypted Message (COSE) structure uses references to keys in general.  For some algorithms, additional properties are defined which carry parameters relating to keys as needed.  The COSE Key structure is used for transporting keys outside of COSE messages.  This document extends the way that keys can be identified and transported by providing attributes that refer to or contain X.509 certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-x509-08"/>
        </reference>
        <reference anchor="I-D.ietf-core-echo-request-tag" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-echo-request-tag.xml" target="https://www.ietf.org/archive/id/draft-ietf-core-echo-request-tag-14.txt">
          <front>
            <title>CoAP: Echo, Request-Tag, and Token Processing</title>
            <author fullname="Christian Amsüss">
	 </author>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <date month="October" day="4" year="2021"/>
            <abstract>
              <t>   This document specifies enhancements to the Constrained Application
   Protocol (CoAP) that mitigate security issues in particular use
   cases.  The Echo option enables a CoAP server to verify the freshness
   of a request or to force a client to demonstrate reachability at its
   claimed network address.  The Request-Tag option allows the CoAP
   server to match block-wise message fragments belonging to the same
   request.  This document updates RFC 7252 with respect to the client
   Token processing requirements, forbidding non-secure reuse of Tokens
   to ensure binding of response to request when CoAP is used with a
   security protocol, and with respect to amplification mitigation,
   where the use of Echo is now recommended.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-echo-request-tag-14"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7228" target="https://www.rfc-editor.org/info/rfc7228" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7228.xml">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <author initials="M." surname="Ersue" fullname="M. Ersue">
              <organization/>
            </author>
            <author initials="A." surname="Keranen" fullname="A. Keranen">
              <organization/>
            </author>
            <date year="2014" month="May"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks.  This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC7258" target="https://www.rfc-editor.org/info/rfc7258" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7258.xml">
          <front>
            <title>Pervasive Monitoring Is an Attack</title>
            <author initials="S." surname="Farrell" fullname="S. Farrell">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization/>
            </author>
            <date year="2014" month="May"/>
            <abstract>
              <t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="188"/>
          <seriesInfo name="RFC" value="7258"/>
          <seriesInfo name="DOI" value="10.17487/RFC7258"/>
        </reference>
        <reference anchor="RFC7296" target="https://www.rfc-editor.org/info/rfc7296" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author initials="C." surname="Kaufman" fullname="C. Kaufman">
              <organization/>
            </author>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization/>
            </author>
            <author initials="Y." surname="Nir" fullname="Y. Nir">
              <organization/>
            </author>
            <author initials="P." surname="Eronen" fullname="P. Eronen">
              <organization/>
            </author>
            <author initials="T." surname="Kivinen" fullname="T. Kivinen">
              <organization/>
            </author>
            <date year="2014" month="October"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol.  IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs).  This document obsoletes RFC 5996, and includes all of the errata for it.  It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization/>
            </author>
            <date year="2018" month="August"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8937" target="https://www.rfc-editor.org/info/rfc8937" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8937.xml">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author initials="C." surname="Cremers" fullname="C. Cremers">
              <organization/>
            </author>
            <author initials="L." surname="Garratt" fullname="L. Garratt">
              <organization/>
            </author>
            <author initials="S." surname="Smyshlyaev" fullname="S. Smyshlyaev">
              <organization/>
            </author>
            <author initials="N." surname="Sullivan" fullname="N. Sullivan">
              <organization/>
            </author>
            <author initials="C." surname="Wood" fullname="C. Wood">
              <organization/>
            </author>
            <date year="2020" month="October"/>
            <abstract>
              <t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols.  Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
        <reference anchor="I-D.ietf-core-resource-directory" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-resource-directory.xml" target="https://www.ietf.org/archive/id/draft-ietf-core-resource-directory-28.txt">
          <front>
            <title>CoRE Resource Directory</title>
            <author fullname="Christian Amsüss">
	 </author>
            <author fullname="Zach Shelby">
              <organization>ARM</organization>
            </author>
            <author fullname="Michael Koster">
              <organization>SmartThings</organization>
            </author>
            <author fullname="Carsten Bormann">
              <organization>Universitaet Bremen TZI</organization>
            </author>
            <author fullname="Peter van der Stok">
              <organization>consultant</organization>
            </author>
            <date month="March" day="7" year="2021"/>
            <abstract>
              <t>   In many IoT applications, direct discovery of resources is not
   practical due to sleeping nodes, or networks where multicast traffic
   is inefficient.  These problems can be solved by employing an entity
   called a Resource Directory (RD), which contains information about
   resources held on other servers, allowing lookups to be performed for
   those resources.  The input to an RD is composed of links and the
   output is composed of links constructed from the information stored
   in the RD.  This document specifies the web interfaces that an RD
   supports for web servers to discover the RD and to register,
   maintain, lookup and remove information on resources.  Furthermore,
   new target attributes useful in conjunction with an RD are defined.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-resource-directory-28"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-edhoc" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-oscore-edhoc.xml" target="https://www.ietf.org/archive/id/draft-ietf-core-oscore-edhoc-01.txt">
          <front>
            <title>Combining EDHOC and OSCORE</title>
            <author fullname="Francesca Palombini">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Hoeglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Stefan Hristozov">
              <organization>Fraunhofer AISEC</organization>
            </author>
            <author fullname="Goeran Selander">
              <organization>Ericsson</organization>
            </author>
            <date month="July" day="12" year="2021"/>
            <abstract>
              <t>   This document defines an optimization approach for combining the
   lightweight authenticated key exchange protocol EDHOC run over CoAP
   with the first subsequent OSCORE transaction.  This combination
   reduces the number of round trips required to set up an OSCORE
   Security Context and to complete an OSCORE transaction using that
   Security Context.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-edhoc-01"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-cose-cbor-encoded-cert.xml" target="https://www.ietf.org/archive/id/draft-ietf-cose-cbor-encoded-cert-02.txt">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed">
              <organization>Nexus Group</organization>
            </author>
            <date month="July" day="12" year="2021"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 Certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and all certificates
   compatible with the RFC 7925, IEEE 802.1AR (DevID), CNSA, RPKI, GSMA
   eUICC, and CA/Browser Forum Baseline Requirements profiles.  When
   used to re-encode DER encoded X.509 certificates, the CBOR encoding
   can in many cases reduce the size of RFC 7925 profiled certificates
   with over 50%.  The CBOR encoded structure can alternatively be
   signed directly ("natively signed"), which does not require re-
   encoding for the signature to be verified.  The document also
   specifies C509 COSE headers, a C509 TLS certificate type, and a C509
   file format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-02"/>
        </reference>
        <reference anchor="I-D.ietf-lake-reqs" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-reqs.xml" target="https://www.ietf.org/archive/id/draft-ietf-lake-reqs-04.txt">
          <front>
            <title>Requirements for a Lightweight AKE for OSCORE</title>
            <author fullname="Malisa Vucinic">
              <organization>Inria</organization>
            </author>
            <author fullname="Goeran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuss Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Dan Garcia-Carrillo">
              <organization>Odin Solutions S.L.</organization>
            </author>
            <date month="June" day="8" year="2020"/>
            <abstract>
              <t>   This document compiles the requirements for a lightweight
   authenticated key exchange protocol for OSCORE.  This draft has
   completed a working group last call (WGLC) in the LAKE working group.
   Post-WGLC, the requirements are considered sufficiently stable for
   the working group to proceed with its work.  It is not currently
   planned to publish this draft as an RFC.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-reqs-04"/>
        </reference>
        <reference anchor="I-D.ietf-lwig-security-protocol-comparison" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lwig-security-protocol-comparison.xml" target="https://www.ietf.org/archive/id/draft-ietf-lwig-security-protocol-comparison-05.txt">
          <front>
            <title>Comparison of CoAP Security Protocols</title>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Malisa Vucinic">
              <organization>INRIA</organization>
            </author>
            <date month="November" day="2" year="2020"/>
            <abstract>
              <t>   This document analyzes and compares the sizes of key exchange flights
   and the per-packet message size overheads when using different
   security protocols to secure CoAP.  The analyzed security protocols
   are DTLS 1.2, DTLS 1.3, TLS 1.2, TLS 1.3, EDHOC, OSCORE, and Group
   OSCORE.  The DTLS and TLS record layers are analyzed with and without
   6LoWPAN-GHC compression.  DTLS is analyzed with and without
   Connection ID.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lwig-security-protocol-comparison-05"/>
        </reference>
        <reference anchor="I-D.ietf-tls-dtls13" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-dtls13.xml" target="https://www.ietf.org/internet-drafts/draft-ietf-tls-dtls13-43.txt">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author initials="E" surname="Rescorla" fullname="Eric Rescorla">
              <organization/>
            </author>
            <author initials="H" surname="Tschofenig" fullname="Hannes Tschofenig">
              <organization/>
            </author>
            <author initials="N" surname="Modadugu" fullname="Nagendra Modadugu">
              <organization/>
            </author>
            <date year="2021" month="April" day="30"/>
            <abstract>
              <t>This document specifies Version 1.3 of the Datagram Transport Layer Security (DTLS) protocol.  DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t> The DTLS 1.3 protocol is intentionally based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection/non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t> This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-dtls13-43"/>
        </reference>
        <reference anchor="I-D.mattsson-cfrg-det-sigs-with-noise" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.mattsson-cfrg-det-sigs-with-noise.xml" target="https://www.ietf.org/archive/id/draft-mattsson-cfrg-det-sigs-with-noise-02.txt">
          <front>
            <title>Deterministic ECDSA and EdDSA Signatures with Additional Randomness</title>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Erik Thormarker">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Sini Ruohomaa">
              <organization>Ericsson</organization>
            </author>
            <date month="March" day="11" year="2020"/>
            <abstract>
              <t>   Deterministic elliptic-curve signatures such as deterministic ECDSA
   and EdDSA have gained popularity over randomized ECDSA as their
   security do not depend on a source of high-quality randomness.
   Recent research has however found that implementations of these
   signature algorithms may be vulnerable to certain side-channel and
   fault injection attacks due to their determinism.  One countermeasure
   to such attacks is to re-add randomness to the otherwise
   deterministic calculation of the per-message secret number.  This
   document updates RFC 6979 and RFC 8032 to recommend constructions
   with additional randomness for deployments where side-channel attacks
   and fault injection attacks are a concern.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mattsson-cfrg-det-sigs-with-noise-02"/>
        </reference>
        <reference anchor="I-D.selander-ace-ake-authz" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.selander-ace-ake-authz.xml" target="https://www.ietf.org/archive/id/draft-selander-ace-ake-authz-03.txt">
          <front>
            <title>Lightweight Authorization for Authenticated Key Exchange.</title>
            <author fullname="Goeran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuss Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Malisa Vucinic">
              <organization>INRIA</organization>
            </author>
            <author fullname="Michael Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Aurelio Schellenbaum">
              <organization>Institute of Embedded Systems, ZHAW</organization>
            </author>
            <date month="May" day="4" year="2021"/>
            <abstract>
              <t>   This document describes a procedure for augmenting the authenticated
   Diffie-Hellman key exchange EDHOC with third party assisted
   authorization targeting constrained IoT deployments (RFC 7228).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-selander-ace-ake-authz-03"/>
        </reference>
        <reference anchor="I-D.selander-lake-traces" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.selander-lake-traces.xml" target="https://www.ietf.org/archive/id/draft-selander-lake-traces-01.txt">
          <front>
            <title>Traces of EDHOC</title>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <date month="September" day="24" year="2021"/>
            <abstract>
              <t>   This document contains some example traces of Ephemeral Diffie-
   Hellman Over COSE (EDHOC).

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Lightweight
   Authenticated Key Exchange Working Group mailing list
   (lake@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/lake/.

   Source for this draft and an issue tracker can be found at
   https://github.com/lake-wg/edhoc.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-selander-lake-traces-01"/>
        </reference>
        <reference anchor="SP-800-56A" target="https://doi.org/10.6028/NIST.SP.800-56Ar3">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography</title>
            <author initials="E." surname="Barker">
              <organization/>
            </author>
            <author initials="L." surname="Chen">
              <organization/>
            </author>
            <author initials="A." surname="Roginsky">
              <organization/>
            </author>
            <author initials="A." surname="Vassilev">
              <organization/>
            </author>
            <author initials="R." surname="Davis">
              <organization/>
            </author>
            <date year="2018" month="April"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-56A Revision 3"/>
        </reference>
        <reference anchor="SECG" target="https://www.secg.org/sec1-v2.pdf">
          <front>
            <title>Standards for Efficient Cryptography 1 (SEC 1)</title>
            <author>
              <organization/>
            </author>
            <date year="2009" month="May"/>
          </front>
        </reference>
        <reference anchor="SIGMA" target="http://webee.technion.ac.il/~hugo/sigma-pdf.pdf">
          <front>
            <title>SIGMA - The 'SIGn-and-MAc' Approach to Authenticated Diffie-Hellman and Its Use in the IKE-Protocols (Long version)</title>
            <author initials="H." surname="Krawczyk">
              <organization/>
            </author>
            <date year="2003" month="June"/>
          </front>
        </reference>
        <reference anchor="CNSA" target="https://apps.nsa.gov/iaarchive/programs/iad-initiatives/cnsa-suite.cfm">
          <front>
            <title>Commercial National Security Algorithm Suite</title>
            <author initials="." surname="(Placeholder)">
              <organization/>
            </author>
            <date year="2015" month="August"/>
          </front>
        </reference>
        <reference anchor="Norrman20" target="https://arxiv.org/abs/2007.11427">
          <front>
            <title>Formal Analysis of EDHOC Key Establishment for Constrained IoT Devices</title>
            <author initials="K." surname="Norrman">
              <organization/>
            </author>
            <author initials="V." surname="Sundararajan">
              <organization/>
            </author>
            <author initials="A." surname="Bruni">
              <organization/>
            </author>
            <date year="2020" month="September"/>
          </front>
        </reference>
        <reference anchor="Bruni18" target="https://www.springerprofessional.de/en/formal-verification-of-ephemeral-diffie-hellman-over-cose-edhoc/16284348">
          <front>
            <title>Formal Verification of Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author initials="A." surname="Bruni">
              <organization/>
            </author>
            <author initials="T." surname="Sahl Jørgensen">
              <organization/>
            </author>
            <author initials="T." surname="Grønbech Petersen">
              <organization/>
            </author>
            <author initials="C." surname="Schürmann">
              <organization/>
            </author>
            <date year="2018" month="November"/>
          </front>
        </reference>
        <reference anchor="CborMe" target="http://cbor.me/">
          <front>
            <title>CBOR Playground</title>
            <author initials="C." surname="Bormann">
              <organization/>
            </author>
            <date year="2018" month="May"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="transfer" numbered="true" toc="default">
      <name>Use with OSCORE and Transfer over CoAP</name>
      <t>This appendix describes how to select EDHOC connection identifiers and derive an OSCORE security context when OSCORE is used with EDHOC, and how to transfer EDHOC messages over CoAP.</t>
      <section anchor="edhoc-to-oscore" numbered="true" toc="default">
        <name>Selecting EDHOC Connection Identifier</name>
        <t>This section specifies a rule for converting from EDHOC connection identifier to OSCORE Sender/Recipient ID. (An identifier is Sender ID or Recipient ID depending on from which endpoint is the point of view, see Section 3.1 of <xref target="RFC8613" format="default"/>.)</t>
        <ul spacing="normal">
          <li>If the EDHOC connection identifier is numeric, i.e., encoded as a CBOR integer on the wire, it is converted to a (naturally byte-string shaped) OSCORE Sender/Recipient ID equal to its CBOR encoded form.</li>
        </ul>
        <t>For example, a numeric C_R equal to 10 (0x0A in CBOR encoding) is converted to a (typically client) Sender ID equal to 0x0A, while a numeric C_I equal to -12 (0x2B in CBOR encoding) is converted to a (typically client) Sender ID equal to 0x2B.</t>
        <ul spacing="normal">
          <li>If the EDHOC connection identifier is byte-valued, hence encoded as a CBOR byte string on the wire, it is converted to an OSCORE Sender/Recipient ID equal to the byte string.</li>
        </ul>
        <t>For example, a byte-string valued C_R equal to 0xFF (0x41FF in CBOR encoding) is converted to a (typically client) Sender ID equal to 0xFF.</t>
        <t>Two EDHOC connection identifiers are called "equivalent" if and only if, by applying the conversion above, they both result in the same OSCORE Sender/Recipient ID. For example, the two EDHOC connection identifiers with CBOR encoding 0x0A (numeric) and 0x410A (byte-valued) are equivalent since they both result in the same OSCORE Sender/Recipient ID 0x0A.</t>
        <t>When EDHOC is used to establish an OSCORE security context, the connection identifiers C_I and C_R MUST NOT be equivalent. Furthermore, in case of multiple OSCORE security contexts with potentially different endpoints, to facilitate retrieval of the correct OSCORE security context, an endpoint SHOULD select an EDHOC connection identifier that when converted to OSCORE Recipient ID does not coincide with its other Recipient IDs.</t>
      </section>
      <section anchor="oscore-ctx-derivation" numbered="true" toc="default">
        <name>Deriving the OSCORE Security Context</name>
        <t>This section specifies how to use EDHOC output to derive the OSCORE security context.</t>
        <t>After successful processing of EDHOC message_3, Client and Server derive Security Context parameters for OSCORE as follows (see Section 3.2 of <xref target="RFC8613" format="default"/>):</t>
        <ul spacing="normal">
          <li>The Master Secret and Master Salt are derived by using the EDHOC-Exporter interface, see <xref target="exporter" format="default"/>.</li>
        </ul>
        <t>The EDHOC Exporter Labels for deriving the OSCORE Master Secret and the OSCORE Master Salt, are "OSCORE_Master_Secret" and "OSCORE_Master_Salt", respectively.</t>
        <t>The context parameter is h'' (0x40), the empty CBOR byte string.</t>
        <t>By default, key_length is the key length (in bytes) of the application AEAD Algorithm of the selected cipher suite for the EDHOC session. Also by default, salt_length has value 8. The Initiator and Responder MAY agree out-of-band on a longer key_length than the default and on a different salt_length.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Master Secret = EDHOC-Exporter("OSCORE_Master_Secret", h'', key_length)
Master Salt   = EDHOC-Exporter("OSCORE_Master_Salt", h'', salt_length)
]]></artwork>
        <ul spacing="normal">
          <li>The AEAD Algorithm is the application AEAD algorithm of the selected cipher suite for the EDHOC session.</li>
          <li>The HKDF Algorithm is the one based on the application hash algorithm of the selected cipher suite for the EDHOC session. For example, if SHA-256 is the application hash algorithm of the selected cipher suite, HKDF SHA-256 is used as HKDF Algorithm in the OSCORE Security Context.</li>
          <li>In case the Client is Initiator and the Server is Responder, the Client's OSCORE Sender ID and the Server's OSCORE Sender ID are determined from the EDHOC connection identifiers C_R and C_I for the EDHOC session, respectively, by applying the conversion in <xref target="edhoc-to-oscore" format="default"/>. The reverse applies in case the Client is the Responder and the Server is the Initiator.</li>
        </ul>
        <t>Client and Server use the parameters above to establish an OSCORE Security Context, as per Section 3.2.1 of <xref target="RFC8613" format="default"/>.</t>
        <t>From then on, Client and Server retrieve the OSCORE protocol state using the Recipient ID, and optionally other transport information such as the 5-tuple.</t>
      </section>
      <section anchor="coap" numbered="true" toc="default">
        <name>Transferring EDHOC over CoAP</name>
        <t>This section specifies one instance for how EDHOC can be transferred as an exchange of CoAP <xref target="RFC7252" format="default"/> messages. CoAP provides a reliable transport that can preserve packet ordering and handle message duplication. CoAP can also perform fragmentation and protect against denial-of-service attacks. The underlying CoAP transport should be used in reliable mode, in particular when fragmentation is used, to avoid, e.g.,  situations with hanging endpoints waiting for each other.</t>
        <t>By default, the CoAP client is the Initiator and the CoAP server is the Responder, but the roles SHOULD be chosen to protect the most sensitive identity, see <xref target="security" format="default"/>. According to this specification, EDHOC is transferred in POST requests and 2.04 (Changed) responses to the Uri-Path: "/.well-known/edhoc". An application may define its own path that can be discovered, e.g., using resource directory <xref target="I-D.ietf-core-resource-directory" format="default"/>.</t>
        <t>By default, the message flow is as follows: EDHOC message_1 is sent in the payload of a POST request from the client to the server's resource for EDHOC. EDHOC message_2 or the EDHOC error message is sent from the server to the client in the payload of a 2.04 (Changed) response. EDHOC message_3 or the EDHOC error message is sent from the client to the server's resource in the payload of a POST request. If needed, an EDHOC error message is sent from the server to the client in the payload of a 2.04 (Changed) response. Alternatively, if EDHOC message_4 is used, it is sent from the server to the client in the payload of a 2.04 (Changed) response analogously to message_2.</t>
        <t>In order to correlate a message received from a client to a message previously sent by the server, messages sent by the client are prepended with the CBOR serialization of the connection identifier which the server has chosen. This applies independently of if the CoAP server is Responder or Initiator. For the default case when the server is Responder, the prepended connection identifier is C_R, and C_I if the server is Initiator. If message_1 is sent to the server, the CBOR simple value "true" (0xf5) is sent in its place (given that the server has not selected C_R yet).</t>
        <t>These identifiers are encoded in CBOR and thus self-delimiting.
They are sent in front of the actual EDHOC message,
and only the part of the body following the identifier is used for EDHOC processing.</t>
        <t>Consequently, the application/edhoc media type does not apply to these messages;
their media type is unnamed.</t>
        <t>An example of a successful EDHOC exchange using CoAP is shown in <xref target="fig-coap1" format="default"/>. In this case the CoAP Token enables correlation on the Initiator side, and the prepended C_R enables correlation on the Responder (server) side.</t>
        <figure anchor="fig-coap1">
          <name>Transferring EDHOC in CoAP when the Initiator is CoAP Client</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Client    Server
  |          |
  +--------->| Header: POST (Code=0.02)
  |   POST   | Uri-Path: "/.well-known/edhoc"
  |          | Payload: true, EDHOC message_1
  |          |
  |<---------+ Header: 2.04 Changed
  |   2.04   | Content-Format: application/edhoc
  |          | Payload: EDHOC message_2
  |          |
  +--------->| Header: POST (Code=0.02)
  |   POST   | Uri-Path: "/.well-known/edhoc"
  |          | Payload: C_R, EDHOC message_3
  |          |
  |<---------+ Header: 2.04 Changed
  |   2.04   |
  |          |
]]></artwork>
        </figure>
        <t>The exchange in <xref target="fig-coap1" format="default"/> protects the client identity against active attackers and the server identity against passive attackers.</t>
        <t>An alternative exchange that protects the server identity against active attackers and the client identity against passive attackers is shown in <xref target="fig-coap2" format="default"/>. In this case the CoAP Token enables the Responder to correlate message_2 and message_3, and the prepended C_I enables correlation on the Initiator (server) side. If EDHOC message_4 is used, C_I is prepended, and it is transported with CoAP in the payload of a POST request with a 2.04 (Changed) response.</t>
        <figure anchor="fig-coap2">
          <name>Transferring EDHOC in CoAP when the Initiator is CoAP Server</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
Client    Server
  |          |
  +--------->| Header: POST (Code=0.02)
  |   POST   | Uri-Path: "/.well-known/edhoc"
  |          |
  |<---------+ Header: 2.04 Changed
  |   2.04   | Content-Format: application/edhoc
  |          | Payload: EDHOC message_1
  |          |
  +--------->| Header: POST (Code=0.02)
  |   POST   | Uri-Path: "/.well-known/edhoc"
  |          | Payload: C_I, EDHOC message_2
  |          |
  |<---------+ Header: 2.04 Changed
  |   2.04   | Content-Format: application/edhoc
  |          | Payload: EDHOC message_3
  |          |
]]></artwork>
        </figure>
        <t>To protect against denial-of-service attacks, the CoAP server MAY respond to the first POST request with a 4.01 (Unauthorized) containing an Echo option <xref target="I-D.ietf-core-echo-request-tag" format="default"/>. This forces the initiator to demonstrate its reachability at its apparent network address. If message fragmentation is needed, the EDHOC messages may be fragmented using the CoAP Block-Wise Transfer mechanism <xref target="RFC7959" format="default"/>.</t>
        <t>EDHOC does not restrict how error messages are transported with CoAP, as long as the appropriate error message can to be transported in response to a message that failed (see <xref target="error" format="default"/>). EDHOC error messages transported with CoAP are carried in the payload.</t>
        <section anchor="transferring-edhoc-and-oscore-over-coap" numbered="true" toc="default">
          <name>Transferring EDHOC and OSCORE over CoAP</name>
          <t>When using EDHOC over CoAP for establishing an OSCORE Security Context, EDHOC error messages sent as CoAP responses MUST be sent in the payload of error responses, i.e., they MUST specify a CoAP error response code. In particular, it is RECOMMENDED that such error responses have response code either 4.00 (Bad Request) in case of client error (e.g., due to a malformed EDHOC message), or 5.00 (Internal Server Error) in case of server error (e.g., due to failure in deriving EDHOC key material). The Content-Format of the error response MUST be set to application/edhoc.</t>
          <t>A method for combining EDHOC and OSCORE protocols in two round-trips is specified in <xref target="I-D.ietf-core-oscore-edhoc" format="default"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="comrep" numbered="true" toc="default">
      <name>Compact Representation</name>
      <t>As described in Section 4.2 of <xref target="RFC6090" format="default"/> the x-coordinate of an elliptic curve public key is a suitable representative for the entire point whenever scalar multiplication is used as a one-way function. One example is ECDH with compact output, where only the x-coordinate of the computed value is used as the shared secret.</t>
      <t>This section defines a format for compact representation based on the Elliptic-Curve-Point-to-Octet-String Conversion defined in Section 2.3.3 of <xref target="SECG" format="default"/>. Using the notation from <xref target="SECG" format="default"/>, the output is an octet string of length ceil( (log2 q) / 8 ). See <xref target="SECG" format="default"/> for a definition of q, M, X, xp, and ~yp. The steps in Section 2.3.3 of <xref target="SECG" format="default"/> are replaced by:</t>
      <ol spacing="normal" type="1"><li>Convert the field element xp to an octet string X of length ceil( (log2 q) / 8 ) octets using the conversion routine specified in Section 2.3.5 of <xref target="SECG" format="default"/>.</li>
        <li>Output M = X</li>
      </ol>
      <t>The encoding of the point at infinity is not supported. Compact representation does not change any requirements on validation. If a y-coordinate is required for validation or compatibily with APIs the value ~yp SHALL be set to zero. For such use, the compact representation can be transformed into the SECG point compressed format by prepending it with the single byte 0x02 (i.e., M = 0x02 || X).</t>
      <t>Using compact representation have some security benefits. An implementation does not need to check that the point is not the point at infinity (the identity element). Similarly, as not even the sign of the y-coordinate is encoded, compact representation trivially avoids so called "benign malleability" attacks where an attacker changes the sign, see <xref target="SECG" format="default"/>.</t>
    </section>
    <section anchor="CBORandCOSE" numbered="true" toc="default">
      <name>Use of CBOR, CDDL and COSE in EDHOC</name>
      <t>This Appendix is intended to simplify for implementors not familiar with CBOR <xref target="RFC8949" format="default"/>, CDDL <xref target="RFC8610" format="default"/>, COSE <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>, and HKDF <xref target="RFC5869" format="default"/>.</t>
      <section anchor="CBOR" numbered="true" toc="default">
        <name>CBOR and CDDL</name>
        <t>The Concise Binary Object Representation (CBOR) <xref target="RFC8949" format="default"/> is a data format designed for small code size and small message size. CBOR builds on the JSON data model but extends it by e.g., encoding binary data directly without base64 conversion. In addition to the binary CBOR encoding, CBOR also has a diagnostic notation that is readable and editable by humans. The Concise Data Definition Language (CDDL) <xref target="RFC8610" format="default"/> provides a way to express structures for protocol messages and APIs that use CBOR. <xref target="RFC8610" format="default"/> also extends the diagnostic notation.</t>
        <t>CBOR data items are encoded to or decoded from byte strings using a type-length-value encoding scheme, where the three highest order bits of the initial byte contain information about the major type. CBOR supports several different types of data items, in addition to integers (int, uint), simple values, byte strings (bstr), and text strings (tstr), CBOR also supports arrays []  of data items, maps {} of pairs of data items, and sequences <xref target="RFC8742" format="default"/> of data items. Some examples are given below.</t>
        <t>The EDHOC specification sometimes use CDDL names in CBOR dignostic notation as in e.g., &lt;&lt; ID_CRED_R, ? EAD_2 &gt;&gt;. This means that EAD_2 is optional and that ID_CRED_R and EAD_2 should be substituted with their values before evaluation. I.e., if ID_CRED_R = { 4 : h'' } and EAD_2 is omitted then &lt;&lt; ID_CRED_R, ? EAD_2 &gt;&gt; = &lt;&lt; { 4 : h'' } &gt;&gt;, which encodes to 0x43a10440.</t>
        <t>For a complete specification and more examples, see <xref target="RFC8949" format="default"/> and <xref target="RFC8610" format="default"/>. We recommend implementors to get used to CBOR by using the CBOR playground <xref target="CborMe" format="default"/>.</t>
        <artwork align="center" name="" type="" alt=""><![CDATA[
Diagnostic          Encoded              Type
------------------------------------------------------------------
1                   0x01                 unsigned integer
24                  0x1818               unsigned integer
-24                 0x37                 negative integer
-25                 0x3818               negative integer
true                0xf5                 simple value
h''                 0x40                 byte string
h'12cd'             0x4212cd             byte string
'12cd'              0x4431326364         byte string
"12cd"              0x6431326364         text string
{ 4 : h'cd' }       0xa10441cd           map
<< 1, 2, true >>    0x430102f5           byte string
[ 1, 2, true ]      0x830102f5           array
( 1, 2, true )      0x0102f5             sequence
1, 2, true          0x0102f5             sequence
------------------------------------------------------------------
]]></artwork>
      </section>
      <section anchor="cddl-definitions" numbered="true" toc="default">
        <name>CDDL Definitions</name>
        <t>This sections compiles the CDDL definitions for ease of reference.</t>
        <sourcecode type="CDDL"><![CDATA[
suites = [ 2* int ] / int

ead = 1* (
  ead_label : int,
  ead_value : any,
)

message_1 = (
  METHOD : int,
  SUITES_I : suites,
  G_X : bstr,
  C_I : bstr / int,
  ? EAD_1 : ead,
)

message_2 = (
  G_Y_CIPHERTEXT_2 : bstr,
  C_R : bstr / int,
)

message_3 = (
  CIPHERTEXT_3 : bstr,
)

message_4 = (
  CIPHERTEXT_4 : bstr,
)

error = (
  ERR_CODE : int,
  ERR_INFO : any,
)

info = (
  transcript_hash : bstr,
  label : tstr,
  context : bstr,
  length : uint,
)
]]></sourcecode>
      </section>
      <section anchor="COSE" numbered="true" toc="default">
        <name>COSE</name>
        <t>CBOR Object Signing and Encryption (COSE) <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/> describes how to create and process signatures, message authentication codes, and encryption using CBOR. COSE builds on JOSE, but is adapted to allow more efficient processing in constrained devices. EDHOC makes use of COSE_Key, COSE_Encrypt0, and COSE_Sign1 objects in the message processing:</t>
        <ul spacing="normal">
          <li>ECDH ephemeral public keys of type EC2 or OKP in message_1 and message_2 consist of the COSE_Key parameter named 'x', see Section 7.1 and 7.2 of <xref target="I-D.ietf-cose-rfc8152bis-algs" format="default"/></li>
          <li>
            <t>The ciphertexts in message_3 and message_4 consist of a subset of the single recipient encrypted data object COSE_Encrypt0, which is described in Sections 5.2-5.3 of <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>. The ciphertext is computed over the plaintext and associated data, using an encryption key and an initialization vector. The associated data is an Enc_structure consisting of protected headers and externally supplied data (external_aad). COSE constructs the input to the AEAD <xref target="RFC5116" format="default"/> for message_i (i = 3 or 4, see <xref target="m3" format="default"/> and <xref target="m4" format="default"/>, respectively) as follows:  </t>
            <ul spacing="normal">
              <li>Secret key K = K_i</li>
              <li>Nonce N = IV_i</li>
              <li>Plaintext P for message_i</li>
              <li>Associated Data A = [ "Encrypt0", h'', TH_i ]</li>
            </ul>
          </li>
          <li>
            <t>Signatures in message_2 of method 0 and 2, and in message_3 of method 0 and 1, consist of a subset of the single signer data object COSE_Sign1, which is described in Sections 4.2-4.4 of <xref target="I-D.ietf-cose-rfc8152bis-struct" format="default"/>. The signature is computed over a Sig_structure containing payload, protected headers and externally supplied data (external_aad) using a private signature key and verified using the corresponding public signature key. For COSE_Sign1, the message to be signed is:  </t>
            <artwork name="" type="" align="left" alt=""><![CDATA[
 [ "Signature1", protected, external_aad, payload ]
]]></artwork>
            <t>
where protected, external_aad and payload are specified in <xref target="m2" format="default"/> and <xref target="m3" format="default"/>.</t>
          </li>
        </ul>
        <t>Different header parameters to identify X.509 or C509 certificates by reference are defined in <xref target="I-D.ietf-cose-x509" format="default"/> and <xref target="I-D.ietf-cose-cbor-encoded-cert" format="default"/>:</t>
        <ul spacing="normal">
          <li>
            <t>by a hash value with the 'x5t' or 'c5t' parameters, respectively:  </t>
            <ul spacing="normal">
              <li>ID_CRED_x = { 34 : COSE_CertHash }, for x = I or R,</li>
              <li>ID_CRED_x = { TBD3 : COSE_CertHash }, for x = I or R;</li>
            </ul>
          </li>
          <li>
            <t>or by a URI with the 'x5u' or 'c5u' parameters, respectively:  </t>
            <ul spacing="normal">
              <li>ID_CRED_x = { 35 : uri }, for x = I or R,</li>
              <li>ID_CRED_x = { TBD4 : uri }, for x = I or R.</li>
            </ul>
          </li>
        </ul>
        <t>When ID_CRED_x does not contain the actual credential, it may be very short, e.g., if the endpoints have agreed to use a key identifier parameter 'kid':</t>
        <ul spacing="normal">
          <li>ID_CRED_x = { 4 : key_id_x }, where key_id_x : kid, for x = I or R.</li>
        </ul>
        <t>Note that a COSE header map can contain several header parameters, for example { x5u, x5t } or { kid, kid_context }.</t>
        <t>ID_CRED_x MAY also identify the authentication credential by value. For example, a certificate chain can be transported in ID_CRED_x with COSE header parameter c5c or x5chain, defined in <xref target="I-D.ietf-cose-cbor-encoded-cert" format="default"/> and <xref target="I-D.ietf-cose-x509" format="default"/> and credentials of type CWT and CCS can be transported with the COSE header parameters registered in <xref target="cwt-header-param" format="default"/>.</t>
      </section>
    </section>
    <section anchor="appl-temp" numbered="true" toc="default">
      <name>Applicability Template</name>
      <t>This appendix contains a rudimentary example of an applicability statement, see <xref target="applicability" format="default"/>.</t>
      <t>For use of EDHOC in the XX protocol, the following assumptions are made:</t>
      <ol spacing="normal" type="1"><li>Transfer in CoAP as specified in <xref target="coap" format="default"/> with requests expected by the CoAP server (= Responder) at /app1-edh, no Content-Format needed.</li>
        <li>METHOD = 1 (I uses signature key, R uses static DH key.)</li>
        <li>
          <t>CRED_I is an IEEE 802.1AR IDevID encoded as a C509 certificate of type 0 <xref target="I-D.ietf-cose-cbor-encoded-cert" format="default"/>.
          </t>
          <ul spacing="normal">
            <li>R acquires CRED_I out-of-band, indicated in EAD_1.</li>
            <li>ID_CRED_I = {4: h''} is a 'kid' with value empty CBOR byte string.</li>
          </ul>
        </li>
        <li>
          <t>CRED_R is a CCS of type OKP as specified in <xref target="auth-cred" format="default"/>.
          </t>
          <ul spacing="normal">
            <li>The CBOR map has parameters 1 (kty), -1 (crv), and -2 (x-coordinate).</li>
            <li>ID_CRED_R is {TBD2 : CCS}.   Editor's note: TBD2 is the COSE header parameter value of 'kccs', see <xref target="cwt-header-param" format="default"/></li>
          </ul>
        </li>
        <li>External authorization data is defined and processed as specified in <xref target="I-D.selander-ace-ake-authz" format="default"/>.</li>
        <li>EUI-64 used as identity of endpoint.</li>
        <li>No use of message_4: the application sends protected messages from R to I.</li>
      </ol>
    </section>
    <section anchor="duplication" numbered="true" toc="default">
      <name>EDHOC Message Deduplication</name>
      <t>EDHOC by default assumes that message duplication is handled by the transport, in this section exemplified with CoAP.</t>
      <t>Deduplication of CoAP messages is described in Section 4.5 of <xref target="RFC7252" format="default"/>. This handles the case when the same Confirmable (CON) message is received multiple times due to missing acknowledgement on CoAP messaging layer. The recommended processing in <xref target="RFC7252" format="default"/> is that the duplicate message is acknowledged (ACK), but the received message is only processed once by the CoAP stack.</t>
      <t>Message deduplication is resource demanding and therefore not supported in all CoAP implementations. Since EDHOC is targeting constrained environments, it is desirable that EDHOC can optionally support transport layers which does not handle message duplication. Special care is needed to avoid issues with duplicate messages, see <xref target="proc-outline" format="default"/>.</t>
      <t>The guiding principle here is similar to the deduplication processing on CoAP messaging layer: a received duplicate EDHOC message SHALL NOT result in a response consisting of another instance of the next EDHOC message. The result MAY be that a duplicate EDHOC response is sent, provided it is still relevant with respect the current protocol state. In any case, the received message MUST NOT be processed more than once in the same EDHOC session. This is called "EDHOC message deduplication".</t>
      <t>An EDHOC implementation MAY store the previously sent EDHOC message to be able to resend it. An EDHOC implementation MAY keep the protocol state to be able to recreate the previously sent EDHOC message and resend it. The previous message or protocol state MUST NOT be kept longer than what is required for retransmission, for example, in the case of CoAP transport, no longer than the EXCHANGE_LIFETIME (see Section 4.8.2 of <xref target="RFC7252" format="default"/>).</t>
      <t>Note that the requirements in <xref target="proc-outline" format="default"/> still apply because duplicate messages are not processed by the EDHOC state machine:</t>
      <ul spacing="normal">
        <li>EDHOC messages SHALL be processed according to the current protocol state.</li>
        <li>Different instances of the same message MUST NOT be processed in one session.</li>
      </ul>
    </section>
    <section anchor="transports-not-natively-providing-correlation" numbered="true" toc="default">
      <name>Transports Not Natively Providing Correlation</name>
      <t>Protocols that do not natively provide full correlation between a series of messages can send the C_I and C_R identifiers along as needed.</t>
      <t>The transport over CoAP (<xref target="coap" format="default"/>) can serve as a blueprint for other server-client protocols:
The client prepends the C_x which the server selected (or, for message 1, the CBOR simple value 'true' which is not a valid C_x) to any request message it sends.
The server does not send any such indicator, as responses are matched to request by the client-server protocol design.</t>
      <t>Protocols that do not provide any correlation at all can prescribe prepending of the peer's chosen C_x to all messages.</t>
      <!--
Protocols that can provide all the necessary correlation but do not have any short-lived component to it
may need ... no, they don't need anything special: after an error, the next thing is a message 1 again.
-->

</section>
    <section anchor="change-log" numbered="true" toc="default">
      <name>Change Log</name>
      <t>RFC Editor: Please remove this appendix.</t>
      <ul spacing="normal">
        <li>
          <t>From -11 to -12:
          </t>
          <ul spacing="normal">
            <li>Clarified applicability to KEMs</li>
            <li>Clarified use of COSE header parameters</li>
            <li>Updates on MTI</li>
            <li>Updated security considerations</li>
            <li>New section on PQC</li>
            <li>Removed duplicate definition of cipher suites</li>
            <li>Explanations of use of COSE moved to Appendix C.3</li>
            <li>Updated internal references</li>
          </ul>
        </li>
        <li>
          <t>From -10 to -11:
          </t>
          <ul spacing="normal">
            <li>Restructured section on authentication parameters</li>
            <li>Changed UCCS to CCS</li>
            <li>Changed names and description of COSE header parameters for CWT/CCS</li>
            <li>Changed several of the KDF and Exporter labels</li>
            <li>Removed edhoc_aead_id from info (already in transcript_hash)</li>
            <li>Added MTI section</li>
            <li>EAD: changed CDDL names and added value type to registry</li>
            <li>Updated Figures 1, 2, and 3</li>
            <li>Some correction and clarifications</li>
            <li>Added core.edhoc to CoRE Resource Type registry</li>
          </ul>
        </li>
        <li>
          <t>From -09 to -10:
          </t>
          <ul spacing="normal">
            <li>SUITES_I simplified to only contain the selected and more preferred suites</li>
            <li>Info is a CBOR sequence and context is a bstr</li>
            <li>Added kid to UCCS example</li>
            <li>Separate header parameters for CWT and UCCS</li>
            <li>CWT Confirmation Method kid extended to bstr / int</li>
          </ul>
        </li>
        <li>
          <t>From -08 to -09:
          </t>
          <ul spacing="normal">
            <li>G_Y and CIPHERTEXT_2 are now included in one CBOR bstr</li>
            <li>MAC_2 and MAC_3 are now generated with EDHOC-KDF</li>
            <li>Info field "context" is now general and explicit in EDHOC-KDF</li>
            <li>Restructured Section 4, Key Derivation</li>
            <li>Added EDHOC MAC length to cipher suite for use with static DH</li>
            <li>More details on the use of CWT and UCCS</li>
            <li>Restructured and clarified Section 3.5, Authentication Parameters</li>
            <li>Replaced 'kid2' with extension of 'kid'</li>
            <li>EAD encoding now supports multiple ead types in one message</li>
            <li>Clarified EAD type</li>
            <li>Updated message sizes</li>
            <li>Replaced "perfect forward secrecy" with "forward secrecy"</li>
            <li>Updated security considerations</li>
            <li>Replaced prepended 'null' with 'true' in the CoAP transport of message_1</li>
            <li>Updated CDDL definitions</li>
            <li>Expanded on the use of COSE</li>
          </ul>
        </li>
        <li>
          <t>From -07 to -08:
          </t>
          <ul spacing="normal">
            <li>Prepended C_x moved from the EDHOC protocol itself to the transport mapping</li>
            <li>METHOD_CORR renamed to METHOD, corr removed</li>
            <li>Removed bstr_identifier and use bstr / int instead; C_x can now be int without any implied bstr semantics</li>
            <li>Defined COSE header parameter 'kid2' with value type bstr / int for use with ID_CRED_x</li>
            <li>Updated message sizes</li>
            <li>New cipher suites with AES-GCM and ChaCha20 / Poly1305</li>
            <li>Changed from one- to two-byte identifier of CNSA compliant suite</li>
            <li>Separate sections on transport and connection id with further sub-structure</li>
            <li>Moved back key derivation for OSCORE from draft-ietf-core-oscore-edhoc</li>
            <li>OSCORE and CoAP specific processing moved to new appendix</li>
            <li>Message 4 section moved to message processing section</li>
          </ul>
        </li>
        <li>
          <t>From -06 to -07:
          </t>
          <ul spacing="normal">
            <li>Changed transcript hash definition for TH_2 and TH_3</li>
            <li>Removed "EDHOC signature algorithm curve" from cipher suite</li>
            <li>New IANA registry "EDHOC Exporter Label"</li>
            <li>New application defined parameter "context" in EDHOC-Exporter</li>
            <li>Changed normative language for failure from MUST to SHOULD send error</li>
            <li>Made error codes non-negative and 0 for success</li>
            <li>Added detail on success error code</li>
            <li>Aligned terminology "protocol instance" -&gt;  "session"</li>
            <li>New appendix on compact EC point representation</li>
            <li>Added detail on use of ephemeral public keys</li>
            <li>Moved key derivation for OSCORE to draft-ietf-core-oscore-edhoc</li>
            <li>Additional security considerations</li>
            <li>Renamed "Auxililary Data" as "External Authorization Data"</li>
            <li>Added encrypted EAD_4 to message_4</li>
          </ul>
        </li>
        <li>
          <t>From -05 to -06:
          </t>
          <ul spacing="normal">
            <li>New section 5.2 "Message Processing Outline"</li>
            <li>Optional inital byte C_1 = null in message_1</li>
            <li>New format of error messages, table of error codes, IANA registry</li>
            <li>Change of recommendation transport of error in CoAP</li>
            <li>Merge of content in 3.7 and appendix C into new section 3.7 "Applicability Statement"</li>
            <li>Requiring use of deterministic CBOR</li>
            <li>New section on message deduplication</li>
            <li>New appendix containin all CDDL definitions</li>
            <li>New appendix with change log</li>
            <li>Removed section "Other Documents Referencing EDHOC"</li>
            <li>Clarifications based on review comments</li>
          </ul>
        </li>
        <li>
          <t>From -04 to -05:
          </t>
          <ul spacing="normal">
            <li>EDHOC-Rekey-FS -&gt; EDHOC-KeyUpdate</li>
            <li>Clarification of cipher suite negotiation</li>
            <li>Updated security considerations</li>
            <li>Updated test vectors</li>
            <li>Updated applicability statement template</li>
          </ul>
        </li>
        <li>
          <t>From -03 to -04:
          </t>
          <ul spacing="normal">
            <li>Restructure of section 1</li>
            <li>Added references to C509 Certificates</li>
            <li>Change in CIPHERTEXT_2 -&gt; plaintext XOR KEYSTREAM_2 (test vector not updated)</li>
            <li>"K_2e", "IV_2e" -&gt; KEYSTREAM_2</li>
            <li>Specified optional message 4</li>
            <li>EDHOC-Exporter-FS -&gt; EDHOC-Rekey-FS</li>
            <li>Less constrained devices SHOULD implement both suite 0 and 2</li>
            <li>Clarification of error message</li>
            <li>Added exporter interface test vector</li>
          </ul>
        </li>
        <li>
          <t>From -02 to -03:
          </t>
          <ul spacing="normal">
            <li>Rearrangements of section 3 and beginning of section 4</li>
            <li>Key derivation new section 4</li>
            <li>Cipher suites 4 and 5 added</li>
            <li>EDHOC-EXPORTER-FS - generate a new PRK_4x3m from an old one</li>
            <li>Change in CIPHERTEXT_2 -&gt; COSE_Encrypt0 without tag (no change to test vector)</li>
            <li>Clarification of error message</li>
            <li>New appendix C applicability statement</li>
          </ul>
        </li>
        <li>
          <t>From -01 to -02:
          </t>
          <ul spacing="normal">
            <li>New section 1.2 Use of EDHOC</li>
            <li>Clarification of identities</li>
            <li>New section 4.3 clarifying bstr_identifier</li>
            <li>Updated security considerations</li>
            <li>Updated text on cipher suite negotiation and key confirmation</li>
            <li>Test vector for static DH</li>
          </ul>
        </li>
        <li>
          <t>From -00 to -01:
          </t>
          <ul spacing="normal">
            <li>Removed PSK method</li>
            <li>Removed references to certificate by value</li>
          </ul>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>The authors want to thank Christian Amsuess, Alessandro Bruni, Karthikeyan Bhargavan, Timothy Claeys, Martin Disch, Loic Ferreira, Theis Groenbech Petersen, Dan Harkins, Klaus Hartke, Russ Housley, Stefan Hristozov, Alexandros Krontiris, Ilari Liusvaara, Karl Norrman, Salvador Perez, Eric Rescorla, Michael Richardson, Thorvald Sahl Joergensen, Jim Schaad, Carsten Schuermann, Ludwig Seitz, Stanislav Smyshlyaev, Valery Smyslov, Peter van der Stok, Rene Struik, Vaishnavi Sundararajan, Erik Thormarker, Marco Tiloca, Michel Veillette, and Malisa Vucinic for reviewing and commenting on intermediate versions of the draft. We are especially indebted to Jim Schaad for his continuous reviewing and implementation of different versions of the draft.</t>
      <t>Work on this document has in part been supported by the H2020 project SIFIS-Home (grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
qGaLOKEIeqeR74+z6X2RuE3i4CNgG0rqiG1J7tsUoWomZQfKoyAUjYSSG3xZ
gGW1Sgo9s7YblDRhjmtIVu10PpPH5Es7SJykyqjEpZ6Gj7eonhd/ckPfUFP5
S5cGbagCVqsfKvfR8UbS3LVLFsk0ELiUbHnn8UxO8D1+Yw0TSm1sFwmomikJ
rfwMrS+sM9oLK/k5LYj0W+t6jDal8pH1+bJ0saZuf/tQ8Os+xg6h4XITQ0V4
i5oJmMPyQvlS4xVFXemKKRtTS4em8P8unLSB6zqOGxapo3AmydIwwrsppGwN
DUpCaw5pio5onaqKnxOiCTm5OqzFzZ7bSE8VU2tYw/rdSF1BCsXVER9rHN0q
fMEFeRtp7Arr0inbddcK0thf1y7paMomTCy6wU1J9Pc3xyCQXX48XhVW37TN
gkyFBjsYtcehkErysmiigTW4rquEFj1P3qdjG+fOGhuvIy0sk+XAcTN02Vad
TorTBSXprBFj/d44r6tW3NdeaQ4xPk/CO/3s8MRG03vvmQ/JSYr9C1vr/956
fTWScOPq8IUDRWduQSzvshzDK9liRC0sGtazAhY2m7F96U67NcOjg5IDv9qm
wfb0dha0XEVR9FX0On6XTOwwpm3ZCqQ3MblgRwlQnxx1Sq2hwPZomuSUGkG1
R9L3tsmcWRvJFlvv97e3HsP/tjHl3oaQs7/O8QSuzHaegKa552eIfVibOVn7
eQCrxqabw2gv2twZ9ne3+qPt/vPn/cPn/dGj/mjYHz3Z7IUvgV6ILz2Gl249
3wOQmbi95/btX3tgoPNA6kLju9vhehrffFfZl3BzW7d7KZ3IS32caedWL42L
S/MSznRx/3w7HiVANB5uJY8fT0bx48nuznB7ezJ+sjvdOn+yhS+9f+BVuh5N
p8Ot3eT80faT7eHk4eT88XQnnj55vDUZwu+j+D49/XED//cxTOuSJC722x8o
GRTI0HB3d/uJzTrz2fZLY6bL0P/Sf7hjvOXXA0l5vWdjcp0Q50ulRmDb2FAl
tFRBrSPpXuTxnJY4MV+0vGvUmBRFs/kiOuQiiL5aG45kSofdTQ5urSd2t3ws
aaVhgi6DIj2Ndm9H7IwJ6vfK4jXJ29okWuTsOrzbBw/kcNOfSCljXnm2E69h
LfZbdNHBjVlJXhE2rc02mh51HbibJ/LysbyJPDW6aaJ15eY0VBfx0iZ4UBwi
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
YXI+P2DAQePecpJWuoVsEtNjD5ic95/T6j/PFWsa+GZeqMpwnByenmG+twrw
LIE75ieHXS3+0g4VgfDu7QN7Te1926O/jp7toXq/M6S/lFOkhUABpOBAOFuJ
SESnqJ52o2/T7F10hkU7qmi/gvM6x1q333Nk2looFmY0BiQmhw8CCN51wi8H
XfFb6VXS5x5XZlOy2dfgloA9mKdBIgPHsFoa4gMK07UxYRgNzBh+X1xS7oh9
iIoSceEnCaA2ydKRZN1zSQgOH5ZgZj/fQvKOPYM03FPuk+CSjulM5YjReAtD
x4aUkuCjtooikXEjxI3G7rQ0NzaaUV8JqqTEgcHzaLYCioi10SXX1VYJpXF0
1s88zylGe5pLyzGKrEdrNucwTBLOh+OFmPc524xrOHLtLXjJDYoryijtBAsH
oV8Ds2ur1QRPWfZS0F5Q/dXFg6h+kV+Lwjd9c4s8uJNfocjL1eCpEQ6JqpR8
hkmWym9QDuRoJKxfdTEcXySSMj82qYlTk3xrsqudM4GwgUqN0gGaYV3is65U
kZhwU6r075W2wo1mTnXlbBdzE3umEhLXPjItlexkAixX/omXJcny+TLNKMlL
MgyaoPL/N/dty21cV9r3eIoe6IKAC4ABENSBtjRFUZRF68QhKUepxMVqAk2y
IxBg0ABFWtZUHmTmAeZqbnORO79JnmTWea/daJBU7JmM/78yYqN7n/faa6/D
92Wx7iEUZtk4u8QsDKJqQtACLJFkAXZURKEc15KXSXRAHBc/JWsBBc6f2Fgq
QRFmKVATpO0W2W3xtzCZO/HKDIshHVKGny1fmrtFIaHsoAGMRwWPGSV4X9oi
ERY4UnBISxaMOZnPDPukmX5u7RLxUxZwrxGLUBCfkNyIGRqpDEpHoCJxVsfZ
yZyzRQjxC97gbAbLGgr588H7EbA2fOlYlIa00/O5oNthyThYkb5cSHagIaQp
+ujySw4mhAl5Jaf8Qv1rjDdgC5pSSByWmSe480xk1vL0GAQtSvJ2OzlOhx9Q
MhL8EAVzS/wswa0jIBkS6JFgpqP/0725PCRMIMZm4cz+kPluyJDjELF8Exkc
Re464PylpClaOfKjZn8xdl1AA5RKtXlxoHQRutARFsyxUNxJHG5oXriDYnoB
HotIVDst8JjUTqtU16TtgkC8JecTWo0p8iSwcdveMADYYunXAS6L2df7UOAF
zePus07S2Crn8PFr8CPmW/iXY9hOqpizg5SyVHGn+A9YzSja2TUXLrOS0GzJ
hZ0mCvFdR2NyQ3ohnIqg2ypBn+5dyuYnc4g6Z12ivKYRyZixxE+TBiV3M1LR
9Txri9GjOEsvslHzhiHjhDCCNYKVTrVqO3BXCCVvxuzvLQbSwUZjamf4ttdN
Gt2r7hYhzVgZ0IJmVVsDsO2Q1J6mmyQrEosjghIi5Am17oZX2r0+Vtt/+ptW
23/aufsU0mCTsAXRc0bm0eVpxJfUDHXrVE7uNFlYhit2eZr8KuD2xTPWvXr+
HAdv0Hv+/DcdvufPBY/+ZjGG3GeYsThK6qgMQBPhxzph72iWc37SIlwd0Ikt
IZwbRexEJJUlZ5IghuMEVsLTuElURAOm6YA3NpokaDRQtEph8/Hq5Jw7HFN8
6JZGU1MvpZ+YB8pQ8v9I06nSjiDWGkih5r2YAn7D+dDSsbwldzsCLQ/Nh7Hj
mz5iWBIzpCZ9YrpnDgO6qmIZQw+sFnI5jSqaINlP0iFabDjvtJRKrWbeld1D
WCGV4kpyzodrOrn5eGF2XDITu+UvFcXHR+DPgtnMJWmQxCgH0fi3DW5txknV
2Aub4cBDTYf3p3t8draH86t2QFdYfZTKSY5qPfdtupgj9AqBepGq4KorD1Zg
cloQeADehgWBmuTVSSmDar2V6GUVYXzp6qnVLHXFK+Sw3VRVKuTqA1ft+DTt
l07TJl2JUM2NEqaoapewJLDTnM90fB2SW4VIzJIWDaRSI2w0G5JCzQ5N3sdZ
jtz4UcXcLbeq4kdoYItaWK9KE6vTZ+Wf4Jt6jJwg7RuWRxb3/tnaGsnyblPw
78mlWD57oISnBGmMOC4tzJM9Ek1fFB0HWd1AZH74tGgaj4XDWNja2XoWwLP1
jWrKXvWNRBiPmMYIF+xj15wCuqztIX4ousE8rEKkDsAUmD6Zns4yyplFEMDj
VDF1MJOaEUq0VKNmkjoTe9dBSIZWdFYHMMfT/ri0yhrV89zCafLD3qz5JZzc
Xg4vCirFtbO5Ol6Zt05ptmSyl+Yz/TXzqXUh8cByXZiFHfPEuMpjjPB/aDFF
RzmoEIpAXNHVL6itxb1xhSkZQrmXk5vkOWuTckbieyI+obxlzBWRp5hKr4u8
5T5aK2K9AM+h+NPKNxwElg8vuFHZweOf1YDd6mEvA7vcoKpRcG/5ZvhZ/a74
VmaQpXnlSOFfDo9mabTmXkh0gj01HFEK5emOJNIgV+lM5WlsEREt73o9rZZv
f6CHy+hOyCSy3I4I80TqMiATBgkMx5dXIfjWPr0I8H2kZdD9/YKQYpwdwyOB
brTnC9gZrIGoiWIWrvLeWDGcpherFQ1BU5inE7Exo+Yhq4gBF9SaMJML0CSA
l8BIcSXCod7//NmBocZYsylxMzHSjPWP0RkIlprzHmEuhx9AAE9nIyZlYAbl
yWgcsGBGi4DPy5UYQKnitp6I+41HLg3ke2YtGxnIbFEGmcUlTG4GXvgMs2pN
DgY4BeCxfp3DJZF05wDey4pn3ByROqQSp5fTHP7FuEZwh5gvxApGiieOModR
ixpNUPViBXdINSU1gPYZjUu02ZZFE71URDvOySgxsiez6ZioipQ/eXg2LbKJ
T8gn59m08LgkSpmjWpnqqCgjtoYgLUaCaVnFZGA3IL/2YFz33sLdRQzJbDfr
d7qDpMFuQLiTCfRYZnhZ72Z5ey+dn20m9a87IaJAXHqIKh0dJYiex+4MVvo/
4lyynjE3ABLx0mQ2b0KFrZ6aUY43mSnG4ZQwkvWVtr1C8qU8d7rQTzAyhvgu
VbneLGnuRGtRsMVTROH1eMq01mk0XOGIkEUhA3SDo6lTqqyfRGdGjHer7bBq
ZFlJNboSK1q5YgrLta9/Ue23dfK24WKE3Cwj+7NdMP/Xu7w1pnQVPX/z8k1t
EISHsDf9pg0gsr/pKWPcop9IZx5hkCYslGO09tRGw6CnGATYzUB45wJ9aYKg
iz8KmhI3uxUM1f5HKYc5Jsi8azQHKMHwQlQQTarm9phBocoYwOZgN1aUS0QC
TUH2TWlhY3LGLBEnAgRWlplBg4GVEdQV47jSiwkpQMYdUvE9b/3QxZX2SQLg
UzUuPymV55qwe1IhJ6Id0XJjSDCjckWrIzB0He+fJxtNL2JQKDIfQ4Ndpwa+
74aTIfZE+0ad8zqbN/muW2RLJkO1rarBks+mBdY5Pmmjc/icjrwOfi/pZdIa
WGlsxacbAdEflxj3ahG+Ih7L+vrxdHTtvLX4KB5mw+8xH7rYT1AVxc1COIW4
S0v3ET5bfDCJmZVImZYpKEzOF9/U5gS06j4hIh+MbRgxFrtchQQDPJh1YgQ2
OYloifpYRU7DQ0Wwh+fvrjjxg1KOH3CQZjZBVaawLe6ctEF/QI+u55/SNUvm
6NUFhL3S4OXSpJJuuJWLrg3/sapdi+Jsf4Y/Q8zsk58luWKTJXkDszofdzvd
flM+o8f4z5u1glIlyR5Lzk2CS2+VT+DlJv38bYjetSaRxBWBK5/QI8pIimKJ
qsJ8VrWodED/c4eHBFPp0P71o1MuYdVS+bSZ3LNVzghDj+sVVyMlTqjgMM+F
H4NXXf0zlgkiA4MM2nC+nE4e1xGxOZvVhQzG8/FEe0w14yI6iJVF8kZGWy/O
yx+UqSyVqCFoDaFJJJmjZqwqdWUzVrV7qRkrhE3/rsImFg6RghGUTybOMYt1
lfTZvZv4iqUPnpMrtSw6Y4tQiXBKzu1yIriQ7EciuXubIi4cCKt0wP/fwvCf
Kd4qRO3/rXjbLYu3CoH7TxudJVF7F0HZ/3WCktfhbYJymZJ3pfHF2S5EWqE7
gPfGSHXXk3wGZVTtqUGn20sa74h4CZP9cWP5dNTJFzIYyZXgLvQ6qBl/EcWO
U8+X7UN68wz3XbsbCcC/fkIxZqrB0sA9RTTb9u+QqMKCl4xQSEx1jzYekeWh
RPA9k8hsMgLG3FIcEFgl8ciKSuzBqdnmZ9OLGWEvxzdmtKAwJaoviUxocgGN
rovMbZTmGFLQEOcelkd43xU38lUimSMTYG1no5J4JgNqpQUVxbyYcs2YGjHK
lg2tZJFTo7OstpV258rG07Umla0VLFmBZqDyMs+F2OsaeUSBCPQp29auMXIF
C47fp3C+Kl64KuRfskCX6uPQu6i4JMvJjA27sZs0nqYjyiSBsWn6uAJRLrg4
AXYX2okUGWYEtTha/U1i4tmgcikNBJMmxAhPSC5RDSJBqmrARUX4HJPgA+aa
mEl9ThYFQZWPJbSFZcbjGGaJbR5lKY6amqaRcYCcslEsrTd1HTBsxsdpMkMy
kDbszIsiZnvMl4WYxBlQnbTFa5gJcX6BCR37GZnZVc6ga+AcFBtmhtPQxYh3
Y+Dc9/e7j7rEr5ElV1AXWXBxi6OGMykxVnt+SMLZQO8b2chnrg2XwfuHGuZM
4/LwxCEWlGKYog1dQlDKRPQUjTWdZG3iGDI+n7eTzK7L8CoxX5AsGMowcCiF
htGbdaDcKTYieZoNXzMp1BF7ZcnFwmZkbCK7cHTWqQmzeCYiR6pSwLaJAra9
h0OCPra3w3k2bx9w/Nd28MRVcHP3O+uddeHn3tn+Dg+ywNcIgp5rJUOdvsFn
jUSZMIzJFCu0ILcTjSMYZvm4kTTG09N+8udm8nXyMGkyL4yWJVH31LBcbXJ/
biWvW8n7VnJ1wUr0v19fCOXHPLsobmy+BA6T5QmjQSg5qteRUZiLVpAhiTUz
sEAlEnkXdeL9Ld3gtx2Suvd4wi6co2Mg2n6+yRvRiGMT+7AaeURfJ4+T93Jp
1EAzxZ3mGHBy9uF4XRtNRaAr2a5eNyFeSRhcJ0aBymkvnCUtbOqkcqTJtV/n
LnKfuVoC97ou13kOGs01b6GtvV1e+rwfYAqFqiRIvp+y2VSI4PG4gP3Ssq1U
0YXIyahA9aLo4UjK8ODXQuUj2+n4Wm9lOJZCycfbkhkZKEyme9XtJw0+EnEO
6O8//vzHn5P3aJLkXbGiaRxUjtkqFmB1DILpBNQ6chyVaOVsMoz5WpI2xEJq
AcjEulU58Y1ghoS/ZC3j5srPcxCEaGwU+2p2qZZk0LZ1JZVnVkyrrVUdnOPJ
R35nckNiao5FcEJPsWSioBCVtm4URSw5Iz4GYYDQJqnbzzbDPSX3RSNvi/HH
yIiN8A9Gv/LpHv4Mz/GxOq2NNy8vqrlZiEhPJwOJ4YjEPYUxy9EDayGewlE3
eITijlqgfv4uPcGm3EAwxXlSiglFASP0/cbD+48U18xM2FS89EesRSCthqiV
P+UkdgGuKB3KDfyg6ZvKByjxD8jS51Qn2bHEEsJ6lzG48zNVoykZQ0LHFjlm
ochJ8/3B2zdcMHqux+TwZVQAhLLAHcZKk0ksSb9nJltyYYpgQEx7PMTuD5zE
JLVS2SIswpmLiEJuWzJs6MGnXEIoPD2dTImqzY6rkGmUjkiVIALckegV0Niz
xXk6KUxno7EmKLln4SB6Bct0gYPSwAlq+gXgQxVQo8AgkisSOgnPPLF2MaJ/
zLfDFjORjZIljD3qRMVT93R4yTW03En0LeBQ0AjnxFjvfSTQJIpalGB+4icM
wYCBEBFdCG0+5zhcOUxhMURku5YjYUH++ozJPwoJvIBZCsh+ivhHNSlKmQ9M
SY+nEilwnv4J9TmoXdab0borLXQIyyNIR8o+sr5S7IRfMJIsUWDsIihsC/hf
BFJzrirkXfcj0EBcg6ZYBz39Q2POP4SVFijnEbG0wDTOH5Nyg85TUE0+faZ0
uzSfLTWYdhu5gtBCoPhsGAcTvQgiHM8RUUt5UtmBpugRhyEWK8IYwPNnnp9n
Ba8qlCroFirMXzbKl3YK02nx3v32W0/o/a9M6Z08eSKmjfMs1dx2/gWeaTxS
IECxEhheh170tGow6Pl8YZdu9mZJWuFxdoJcqULFy2KBjuP8xJX7OPmUDJJN
Cnv97GrB5giEDgVgreoOFAA/+TKePGlZ8g9BT3Iuw2A97XUHg66kV6SBnige
d7I2U8NlzvREC3IZX3EbvJP8zmW3xQeSkM1qQL+E8XrLDT5B9upTuuxBudvH
09nrjM6VVZa8Z0GA2H87Iiqi/zDNulYBLvOF/9V6yfJ/oFEtP15M5ISSHVzr
D6q+7D3sPbzty3bFp92r9QdLDyfZKd8pw5cbVV8u17n0JfEiL315slycF0U1
XHfLXw26Sw+dxIKPev3haK38UR+frvyo4hv8aLDeW+/fX78/qPyojh/Vyx/d
X/7Iyc2a7iis7rN9RFuoFzUQBGUNdmCPgKpp/GBTcrPWu71uPxo836w/+G9+
1BoeLn9EYrrW8K839fWllxOTyjX3vuv3TV/8BjvlBuP7SkM5qo8o34O6UsQ2
BabizNVjFjB8+WUJCmQ1e2a0SJH8oI9qwoP2OPlD0v+KcLl+VCwgZLF6nPS+
Shpwf4U/jpiSaBN/bckjVik28brZqjVrtRBl8pg+e71z+OLts/DNwbvdw52D
o114Ilxu8BBJ7BiGCP/apl8DKBE+Y+neg+dQaVRRXyr67uj3R9u7ey929g93
3h/CY1/gfqlA9/26fO++Xbdv3XuD5fcG/j22AfI7hrts3TbE5TBSqDbJ+3Tj
pZTmIwpgD03XEZ/L35of4t5gE8YmaURYsF9ihuEHlw++Rd0ZJ+8ut5/lHGeG
YtYoW2IrDQTMFtVVpimlM5kVqCy0QwJYSHmmToQby/fwJwel4oVolF5oHiMB
iPFZbQngLt2J2DgDPAgnuxcWXph+EN0K76aCVsp3wSMZn27LbqpHOHw9QREw
WOMQ3qaVUo4TWR4DH14wibJqjWE+O9sUVPn25Z6Dk4Ml733dfaUrU4XcMFVD
whBFCiVrV2txLvODDhf14I7kyZrywSkTnN3n2rUetWvg2yXcrdZGscHMLNhd
5hgnALViHsHyMLO+llcbo4tko9Nvb6hl8NaF2il1RamMSU8lvw0ZYcZpztuL
6NOLYjrMU22mhvZS7qGtUSOXn+jdSEMPLymolysuFSU2Vejrkd0mdQDFGChe
UviAoWb5WpkJgjnGTC4oNlEKbOgvR2k6asp24ZW+0JCPfCJJg/gHpQSxxaLX
uy9mWp3NHO5YIJkoynaguu75uqm55wM0fPj0kKaPS0ZrZ/KVpk/hCL2E0l4e
5fz8zRTTC97Ao90f9Nmejfxe3BL+eSuMH13it+DjP/4hqetq0bSpwxfQdsTb
+Ypkm9C+u1VLS188L10OGpcoDr+yy+/0WndY3qSqzpZXNEmJW5fzAJbzgKHz
7rycA+f70mpOsf/x4lLHt7gLW79uiZl5QRkNQ2N0Syg5b2RBn4n/nlrCQjD6
kq3FfuC8UGV/sV4KZKXhf7AWbMJ7dde3VuKb3TJn6Y/8KVs+VrzNp5h8QLGm
sbPtvB92BCcHPTOLRhkNnq59ElR6nbzvbHQf4e7axv/ric/xJmjqmmR2mUun
vDKu4GtrQvzTEG6MbTEVtbGCz5/pHMIsLk6SY8XNDOVrVxvzNWzS2hD/ERoe
b3Td3HrxvqLb+jpqQjRp21DVCyz+M1OB4++7BM3Rqvzy8Omz9du//QabDv+g
1iNOo2/2Qpu9+OJmb6DaNMu/oLGDVV9own74wiWQs53MRSaDZBxxijw52CWO
g3jsiRZcs0lyhf3RnB+mgceU2JHmhKfsWQ0By0EVIMBSmve4I9gLTFTNR/Dg
sxoA7QlhiVZ0MJBBC1mCrHJEjkffjXZUDXxLm6AlsGTskP2UwOS14H/mcJ2E
55+4WvifI1VzcVOFplM6MJrrbCPRkJZ0SRtaXC60yksZpKnfceityGPXUwhF
CVWz48D1OQzycGOIrb/aoJJaN23Yil1ZuXvdxg7dCZoigvCSFrp9UNXwkBBR
1d6IoYPauMTmQaECtXuKeSlBTIcZDB+O2Kd7GNHQnsPfS6BHsgQY/2eUk0cM
qVhcyLplWUm5lBSJL6qmEf3MSZfTmarlFo+GHXz/3uzvfFCEIH5QuRbnFwFF
6hz6Bzuh1wmBUBrUli6FUVCa5GceSEsxMxwvSUbxkWmNxyFmtYluvK+hEz2M
vGiBCChHjXBEV6fW7+j1GG7ZSWMX+1jE52Er2ZenaM8dJnCLwFOyWVsHJQ+X
5q4ok7s7OzvJw26/09vah3WbXSJsSwRVUzpqbDV177JMO3RcfgWtSYfkIi60
epeZjzb7ERVO40g3dv1Qt9IuCqABGWbFm8WoyjTW4p9YAW8wkC7vC10LrH7t
A16alqcRJUMbN5C0ny80VDCKLHQvuW0BM/Bhft1EOrikMZxdiueg3U8aPhyk
2YmPBmrNJyLR2MQ2gXIG1/1RDsr/Gsn/bJMpNiSpslqIGKMMs8noVljemrWN
TiAySiMiI71aGAZjuITzIqgIFiqycYqLtp0OszZcf9tY5E84Xvehnne77fsD
C3MxZzRGmsmJ1Kk96IBGr7vT7oOb5UwYwqcsnNJp/jJyXe3jabbLIUrKlsY6
37PM5fiC7HF/fdagxQA0wfteud4rsoQJT4NyiG0jm+xsGaSlBu5kVxn5lXMf
Q4iKXtQoTX22Lq1Q80HL37AQKk6RFtcLt0gyBOLsMAQLUvBudG42tt++afq8
Q0u2M3Qe9hFJeNt5zqaPdIiRzdDtU46KmU58o/GNcXqdGVq6AfOVzCc+vTsv
QkSDjkfmm+bqHCWNre2XTZdJbM0O71P8VViydFGMpC1GGMDw69oYZaWZDXm3
2XnKtwzJDZix6ymKpSEX43gssfpRBAd66QjEKaQfExytQlmrBSlzwLIaK4ku
+Rknt5MvzRLoXXK/tMHlktPoF3JPNN3xpnR3AlREZTLlKyAfK5ZJDo8KdLrR
ul2aHvNh4XC3QYgj8KrB5CAUK13RZoh9hGuKNETcGRx+onaEeAY8sFD18tqk
3H+Z+dCoKLJTwogQlyoAZ6U+rtRbStIJAyUYcIFcyyeoP0bleiIA0iWPTZst
t8TqknzHVsCZlFzbOaJjGgCpaAp04eBNvJjNxPbooB84CgJhOVMNhVraBh6T
K2wFMmkSwg1tCo8kVgJLIXlCOTZjx313XrVj6pwyJEs8jmDC8SnmU4kLKCfr
xoXytZxX/DShCBYcJwqMWln4hyy7kLIjdIxyYWJRvr0VuNFd3YfuA3vHB2xw
dX64P2QXcwUWorH+WAK0pesLInzApiW5igAFJ/5uIROjYccxXgTpgr58CvF8
v/1i6813O0evdp/vHO6+3olBswadhy7ulgVvM7qL8SpygX4kpeNtLeuVc06P
s2GK5/WyTPB4q7LwRPzKIqMhO0+HZ1Aq27XjhAQLAHR6RwzwsHJrYGnBfqK7
2SJPaKnfvEfyCSGYBMwiCebnyA4YsOSNZNMne7SbOXjWksNqtT2LtvaQwZqD
rzIgOVlQlFXIKjvO5h+Re4SwunNutI0JSn5alXSMOfS9KPtZkyb0bkBiOJwO
IbegodeTppSMIdak4R+DCokCm8OLWSry/aQtAfYWTb7JYGP6lEInRT3Fy245
Md4yuBsIuO0MtElvVdr4GjpZ14LZk1KeOaQU62hySO61Ze2YFjBnTZFSvLV+
Ow4Z5HxyzfGkctvANhHxpKYh8H1vPjzj01CriEAE2lK0rUIOpOusWgQ69wyq
HKYejw9cDYJbQzqfD0bVwN6MMCcELgUHmb1VASKnVvv2X9rtcu1crlQNr/PJ
hgser9XRGlxYW9lINBFbUntM5wsaiGF7cNp/Pq+hzYmiUzudDnwlWSKj6WRN
olahgDklrxSsZ8DRTUCC6ABBX2crHLP8Ht3KbGFwglen1m4/obwDjkp+NT2t
1ZAchm9Im8nemLzUILsIrMkbE0gkEN5Su9cTQNhN4rQgEHVSymNTArzzcud1
UXrHOfSWrSH07jsi/CHP4uvDXfdoFOEpOsYOeudN9tFuCshW9m/b9Hif+uLV
mzj63YOQcUE7VxdwDRO0H3jDt5jLgp5Z6Ot2Zz1qYq7ZL2Y4LtzIdXnkepvS
NnMKjHzbS0a00vhIumLyDu/cGLO0fRA95yg0xq4O0Nwrx5wkiBCeRuWo4VA2
DUbVkm9a4RrJG15Eg0zJLUcphiLkEgZJjvVGOsbgUCKbLLnXm1TAFpFUwHTr
MPBMbD3blADmkY+wIx/fKECvK02DIuBHE/I8PyXHE0eb4Kc8YRT3J+CmGlc2
5GU6dMuKWxZYKGjEp4RP6qkyrGqb6+4jnuvupnjgNNZCoqNzCRvFW5Y3Spt4
t0C3C1pKtEZ0laLJAwc2N9xjjZERzPyJOlZTik0Qzx31BYnVoGJaPqIqqY8Q
V8U8W71GqPB3vFBwpaygwMIaAonZNKK0suF5SMPTfSTD893R7/ks9lEjrAF9
RLKx8WIUtAo2R1m/Xm9tSxo6/mvdPmMuC7PCMuIjrGM3gJyc8ve//IcM2d//
8p98QH40Jgx2xKH0yOcWEB+KiTaxKYotYgx7ZoCyfgLEpLK1reEiGKpRRl5c
KOS92Rqlr1MGGEzzsYWLq4RamqCobW6Bu5audzZaRO3jBM6eFzhUjCT4oHWw
L+ZBYzgyXjp+GX3ZFtSM42jhvGYSwVAmjjKW+ZRzSlaVtRGLwvf4uW5oHz1f
biBMJCLNZUyS9DGdSRLY8BonltoNryz/FNew+pjxdQV8g7UJ6KAyLKJqyWYu
QdQ5o1wvrrIcMiZjeXWRUg2liQZBXnNb6QFvpYeylfYc8MKVHFklHEpTtPI5
ovnobSC09BzOcgwC5DVHdvGj7bf7+yDoOKQFvuDHLRKiojOMdIy4VtyiR84Z
poQojncS7xawHr6htqKChUvmmCI+LYEBtScSmlIkTNA5ssIMZZieiY212prr
F607L1wbov1mbqZbVx1qHJH6IKlYOwft77ZfszQ7S+H/97tQ0d50fN1b727I
IpdTjeYFUyVpCj5O22Rkd0OG0/3mYIujoXM0b1BdJYltcYjTiZtEOQoCWhU3
UKnDisVx2+SDSheatnT4gfyYARDbQ0pTm0czUEDb1emtXJbj6mB7oYRxe8OU
6VPI9KiqpjRFBnxgmpG9vBzWZWqD2xX3eVc82IxHPOgf7Hp36iD28fCFHCXw
j/V4NYv1JriEArQt5dbWeWT8kggLhbibjCyrXgV9XQ9ve1u9ehDCiq7LYVUP
x5GWFPd1wqkgoMuPNb2GuOMkyZqaS9d3GCmDbsfjDq8UMg3pSFOqOVh/Mp20
LS6bMPg524mhr/w5x6dUwgipFH0YypH3xhw9wnC50/H0FIYmyCYxO9ST9pMk
qYspIR4lVsIpapEz6Xa2JX0vTqmrbpfI08pQQL8hVu8FBJu4dSc4IsFbjhaW
rfWtxRXcocZ4q8QQq7oweMnNYityNNELvnshoA99fgMPFzhw22ODt8f9zTCe
utE2On3kq+RNthc22Vu2YEltxjSJ20fTkLYp1hjPwyhuMtRxYrn6MchCSwiY
7QcJQ432jV/dHEstnhFNm3QHLZcibmUVKTP+Trlkc9R/HvB9wi50nOY6ceOB
79Rj//uB+snrOnVo88NBkjWlGNA5ZYGgwro8ztNJtSm4YoVbzBj7SCq1hegD
TqznkYJ9FUsybUD9LR0Eyh1bGHmewR/UI51MmaAsLZ4p2BKehXnhxe+A19eG
rC8WU/sZUpM/P8AdLXp0ds1HbEVF5fs55oNMEeXFxuhOGpu+NEe7E0eCln5Z
EQORzCXKwvdrnfs12FxSsRnagke253dkMAXQ7RF9/9suzCxa1bhg/RUIBipE
wr6Ha8/Lnd8fHO7vbL2GHxuuS2RsErLkJhdZf3nUz+qtpL77A/4Dy3Jfiwph
bmjLLtM1OfAzpwdMNHk6nfziKxTxFRHderSY34F5WHhKJfBzxexHMiISckss
E3563XT1ebrWbbowW2Vyqmn4YcY4hvoYJM1kIrZC/UkG4mV8CngJIW9sR9rg
gErcYFNFNJbv997C/O7TWNotFZmXoMi9/ZdHg6v1c4FrhWEY41bLblslUcS2
qc7z9DRpTKYqCVDJDMPUvPuoR7Jle9WG8fuEjYTdfsX50oPz5Z2LIFrRDAlx
yL2+bQPeWZfLLEGBly4a/5BwuCI3/Cp5Q3OJesDQGTwkjsVtQlKF7MYeRoMN
f93eZiyI9w5eSnRz/DyWGD5QSMPoJCjMfPosfz9tCiFgNnpcn0wVDpFDUxCk
XIFm08kHWEszPJ1giW2dF7/8rYDTdmuMkz4ZzabJ09likreSlylcFnLoOLz2
9CydnaaX6aSVHObnsIevcdJAV2qBmoiccsmzvBietZJX01/+e5g8R6NVPktb
6P7Li+S72S9/nRxnw7Nkj4wLGZTzDIp9kSJXJBTycpwuCvxz/iFrJfsLECcv
0MOIkVcH8+wE38UmT3+aXlJbr6ipRfIS8Wbh+EV9ARdF8ipfFJdpinVDB8bJ
G7iinmO7D9LxZTqCSdr75b9m2U+tZAeZzkCIg842hrdf57BTsnGyj/93NirQ
p3gIYwdjPoKPz8bJ97/8FbSICbX++/w8OYAXMZh5O53BTXaCf//yN6wMfn+1
GH3MT+Gals9/wi4g0tc4vUwOzq+Ls/F1mkE3fkjHGGmKj8bYrT0JQSIAJPhm
+qGFimEG/5wt8g/4QV6cTdLLPDlYgOYzg//3J+wa9OQDtfUcxhMhhGFOhlOY
qfF0KD2Djv2Q5eNxNp8LTOzrdJwXafLDAo58GAh2qeKZrtEacrRLFAFJW0LD
nVOEbKFGcgo/QEWYkm0pNV48FUguNhllx5IUFIaMSQ2Y/AzKX6BrOK675KhG
rcp8ktWV12q/Qyi3aZkM94wzrwln+DgjZlkNOxFH1It+F67pcPfgZKzd57sH
7RdoIm6cznDXUJgvlfVoo39/o98UjsqT8eLkpPY/baGNmnMfAgA=

-->

</rfc>
