<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.15 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY I-D.ietf-cose-x509 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-cose-x509.xml">
<!ENTITY I-D.ietf-core-echo-request-tag SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-echo-request-tag.xml">
<!ENTITY I-D.ietf-lake-reqs SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-reqs.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5116 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5116.xml">
<!ENTITY RFC5869 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5869.xml">
<!ENTITY RFC6090 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6090.xml">
<!ENTITY RFC6979 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6979.xml">
<!ENTITY RFC7252 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
<!ENTITY RFC7748 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7748.xml">
<!ENTITY RFC7049 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7049.xml">
<!ENTITY RFC7959 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7959.xml">
<!ENTITY RFC8152 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8152.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8376 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8376.xml">
<!ENTITY RFC8610 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
<!ENTITY RFC8613 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
<!ENTITY RFC8742 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8742.xml">
<!ENTITY I-D.ietf-6tisch-dtsecurity-zerotouch-join SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-6tisch-dtsecurity-zerotouch-join.xml">
<!ENTITY I-D.ietf-ace-oauth-authz SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-oauth-authz.xml">
<!ENTITY I-D.ietf-core-resource-directory SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-resource-directory.xml">
<!ENTITY I-D.ietf-lwig-security-protocol-comparison SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lwig-security-protocol-comparison.xml">
<!ENTITY I-D.ietf-tls-dtls13 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-dtls13.xml">
<!ENTITY I-D.selander-ace-ake-authz SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.selander-ace-ake-authz.xml">
<!ENTITY RFC7228 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7228.xml">
<!ENTITY RFC7258 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7258.xml">
<!ENTITY RFC7296 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml">
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc tocdepth="2"?>

<rfc ipr="trust200902" docName="draft-ietf-lake-edhoc-02" category="std">

  <front>
    <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>

    <author initials="G." surname="Selander" fullname="Göran Selander">
      <organization>Ericsson AB</organization>
      <address>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>
    <author initials="J." surname="Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson AB</organization>
      <address>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson AB</organization>
      <address>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>

    <date year="2020" month="November" day="02"/>

    
    
    

    <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, perfect 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 footprint can be kept very low.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Security at the application layer provides an attractive option for protecting Internet of Things (IoT) deployments, for example where protection needs to work over a variety of underlying protocols. IoT devices may be constrained in various ways, including memory, storage, processing capacity, and energy <xref target="RFC7228"/>. A method for protecting individual messages at the application layer suitable for constrained devices, is provided by CBOR Object Signing and Encryption (COSE) <xref target="RFC8152"/>), which builds on the Concise Binary Object Representation (CBOR) <xref target="RFC7049"/>. Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/> is a method for application-layer protection of the Constrained Application Protocol (CoAP), using COSE.</t>

<t>In order for a communication session to provide forward secrecy, the communicating parties can run an Elliptic Curve Diffie-Hellman (ECDH) key exchange protocol with ephemeral keys, from which shared key material can be derived. This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a lightweight key exchange protocol providing perfect forward secrecy and identity protection. Authentication is based on credentials established out of band, e.g. from a trusted third party, such as an Authorization Server as specified by <xref target="I-D.ietf-ace-oauth-authz"/>. The construction provided by EDHOC can be applied to authenticate raw public keys (RPK) and public key certificates. This version of the protocol is focusing on RPK and certificates by reference which is the initial focus for the LAKE WG (see Section 2.2 of <xref target="I-D.ietf-lake-reqs"/>).</t>

<t>After successful completion of the EDHOC protocol, application keys and other application specific data can be derived using the EDHOC-Exporter interface. A main use case for EDHOC is to establish an OSCORE security context. EDHOC uses COSE for cryptography, CBOR for encoding, and CoAP for transport. By reusing existing libraries, the additional code footprint can be kept very low.</t>

<t>EDHOC is designed for highly constrained settings making it especially suitable for low-power wide area networks <xref target="RFC8376"/> such as Cellular IoT, 6TiSCH, and LoRaWAN. Compared to the DTLS 1.3 handshake <xref target="I-D.ietf-tls-dtls13"/> with ECDH 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"/>. <xref target="fig-sizes"/> shows two examples of message sizes for EDHOC with different kinds of authentication keys and different COSE header parameters for identification: static Diffie-Hellman keys identified by ‘kid’ <xref target="RFC8152"/>, and X.509 signature certificates identified by a hash value using ‘x5t’ <xref target="I-D.ietf-cose-x509"/>. Further reductions of message sizes are possible, for example by eliding redundant length indications.</t>

<figure title="Example of message sizes in bytes." anchor="fig-sizes"><artwork align="center"><![CDATA[
=================================
                    kid       x5t                     
---------------------------------
message_1            37        37                     
message_2            46       117       
message_3            20        91        
----------------------------------
Total               103       245      
=================================
]]></artwork></figure>

<t>The ECDH exchange and the key derivation follow known protocol constructions such as <xref target="SIGMA"/>, NIST SP-800-56A <xref target="SP-800-56A"/>, and HKDF <xref target="RFC5869"/>. CBOR <xref target="RFC7049"/> and COSE <xref target="RFC8152"/> are used to implement these standards. The use of COSE provides crypto agility and enables use of future algorithms and headers designed for constrained IoT.</t>

<t>This document is organized as follows: <xref target="background"/> describes how EDHOC authenticated with digital signatures builds on SIGMA-I, <xref target="overview"/> specifies general properties of EDHOC, including message flow, formatting of the ephemeral public keys, and key derivation, <xref target="asym"/> specifies EDHOC with signature key and static Diffie-Hellman key authentication, <xref target="error"/> specifies the EDHOC error message, and <xref target="transfer"/> describes how EDHOC can be transferred in CoAP and used to establish an OSCORE security context.</t>

<section anchor="rationale-for-edhoc" title="Rationale for EDHOC">

<t>Many constrained IoT systems today do not use any security at all, and when they do, they often do not follow best practices. One reason is that many current security protocols are not designed with constrained IoT in mind. Constrained IoT systems often deal with personal information, valuable business data, and actuators interacting with the physical world. Not only do such systems need security and privacy, they often need end-to-end protection with source authentication and perfect forward secrecy. EDHOC and OSCORE <xref target="RFC8613"/> enables security following current best practices to devices and systems where current security protocols are impractical.</t>

<t>EDHOC is optimized for small message sizes and can therefore be sent over a small number of radio frames. The message size of a key exchange protocol may have a large impact on the performance of an IoT deployment, especially in constrained environments. For example, in a network bootstrapping setting a large number of devices turned on in a short period of time may result in large latencies caused by parallel key exchanges. Requirements on network formation time in constrained environments can be translated into key exchange overhead. In network technologies with duty cycle, each additional frame significantly increases the latency even if no other devices are transmitting.</t>

<t>Power consumption for wireless devices is highly dependent on message transmission, listening, and reception. For devices that only send a few bytes occasionally, the battery lifetime may be impacted by a heavy key exchange protocol. A key exchange may need to be executed more than once, e.g. due to a device rebooting or for security reasons such as perfect forward secrecy.</t>

<t>EDHOC is adapted to primitives and protocols designed for the Internet of Things: EDHOC is built on CBOR and COSE which enables small message overhead and efficient parsing in constrained devices. EDHOC is not bound to a particular transport layer, but it is recommended to transport the EDHOC message in CoAP payloads. EDHOC is not bound to a particular communication security protocol but works off-the-shelf with OSCORE <xref target="RFC8613"/> providing the necessary input parameters with required properties. Maximum code complexity (ROM/Flash) is often a constraint in many devices and by reusing already existing libraries, the additional code footprint for EDHOC + OSCORE can be kept very low.</t>

</section>
<section anchor="use-of-edhoc" title="Use of EDHOC">

<t>EDHOC is designed as a lightweight AKE for OSCORE, i.e. to provide authentication and session key establishment for IoT use cases such as those built on CoAP <xref target="RFC7252"/>. 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/device(s) connect(s) for the first time, or to establish fresh keys which are not compromised by a later compromise of the long-term keys. (Further security properties are described in <xref target="sec-prop"/>.)</t>

</section>
<section anchor="terminology-and-requirements-language" title="Terminology and Requirements Language">

<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"/> <xref target="RFC8174"/> 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="RFC7049"/>, CBOR Sequences <xref target="RFC8742"/>, COSE <xref target="RFC8152"/>, and CDDL <xref target="RFC8610"/>. The Concise Data Definition Language (CDDL) is used to express CBOR data structures <xref target="RFC7049"/>. Examples of CBOR and CDDL are provided in <xref target="CBOR"/>.</t>

</section>
</section>
<section anchor="background" title="Background">

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

<t>SIGMA (SIGn-and-MAc) is a family of theoretical protocols with a large number of variants <xref target="SIGMA"/>. Like IKEv2 <xref target="RFC7296"/> and (D)TLS 1.3 <xref target="RFC8446"/>, EDHOC authenticated with digital signatures is built on a variant of the SIGMA protocol which provide identity protection of the initiator (SIGMA-I), and like IKEv2 <xref target="RFC7296"/>, EDHOC implements the SIGMA-I variant as Mac-then-Sign. The SIGMA-I protocol using an authenticated encryption algorithm is shown in <xref target="fig-sigma"/>.</t>

<figure title="Authenticated encryption variant of the SIGMA-I protocol." anchor="fig-sigma"><artwork align="center"><![CDATA[
Initiator                                               Responder
   |                          G_X                            |
   +-------------------------------------------------------->|
   |                                                         |
   |  G_Y, AEAD( K_2; ID_CRED_R, Sig(R; CRED_R, G_X, G_Y) )  |
   |<--------------------------------------------------------+
   |                                                         |
   |     AEAD( K_3; ID_CRED_I, Sig(I; 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 the shared secret, and derive symmetric application keys.</t>

<t><list style="symbols">
  <t>G_X and G_Y are the ECDH ephemeral public keys of I and R, respectively.</t>
  <t>CRED_I and CRED_R are the credentials containing the public authentication keys of I and R, respectively.</t>
  <t>ID_CRED_I and ID_CRED_R are data enabling the recipient party to retrieve the credential of I and R, respectively.</t>
  <t>Sig(I; . ) and S(R; . ) denote signatures made with the private authentication key of I and R, respectively.</t>
  <t>AEAD(K; . ) denotes authenticated encryption with additional data using a key K derived from the shared secret.</t>
</list></t>

<t>In order to create a “full-fledged” protocol some additional protocol elements are needed. EDHOC adds:</t>

<t><list style="symbols">
  <t>Explicit connection identifiers C_I, C_R chosen by I and R, respectively, enabling the recipient to find the protocol state.</t>
  <t>Transcript hashes (hashes of message data) TH_2, TH_3, TH_4 used for key derivation and as additional authenticated data.</t>
  <t>Computationally independent keys derived from the ECDH shared secret and used for authenticated encryption of different messages.</t>
  <t>Verification of a common preferred cipher suite:  <list style="symbols">
      <t>The Initiator lists supported cipher suites in order of preference</t>
      <t>The Responder verifies that the selected cipher suite is the first supported cipher suite</t>
    </list></t>
  <t>Method types and error handling.</t>
  <t>Transport of opaque auxiliary data.</t>
</list></t>

<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 in EDHOC is summarized in <xref target="CBORandCOSE"/> and test vectors including CBOR diagnostic notation are given in <xref target="vectors"/>.</t>

</section>
<section anchor="overview" title="EDHOC Overview">

<t>EDHOC consists of three messages (message_1, message_2, message_3) that maps directly to the three messages in SIGMA-I, plus an EDHOC error message. EDHOC messages are CBOR Sequences <xref target="RFC8742"/>, where the first data item (METHOD_CORR) of message_1 is an int specifying the method and the correlation properties of the transport used, see <xref target="transport"/>. The method specifies the authentication methods used (signature, static DH), see <xref target="method-types"/>. An implementation may support only Initiator or Responder. An implementation may support only a single method. The Initiator and the Responder need to have agreed on a single method to be used for EDHOC.</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. The unprotected COSE header in COSE_Sign1, and COSE_Encrypt0 (not included in the EDHOC message) MAY contain parameters (e.g. ‘alg’). After creating EDHOC message_3, the Initiator can derive symmetric application keys, and application protected data can therefore be sent in parallel with EDHOC message_3. The application may protect data using the algorithms (AEAD, hash, etc.) in the selected cipher suite  and the connection identifiers (C_I, C_R). EDHOC may be used with the media type application/edhoc defined in <xref target="iana"/>.</t>

<figure title="EDHOC message flow" anchor="fig-flow"><artwork align="center"><![CDATA[
Initiator                                             Responder
   |                                                       |
   | ------------------ EDHOC message_1 -----------------> |
   |                                                       |
   | <----------------- EDHOC message_2 ------------------ |
   |                                                       |
   | ------------------ EDHOC message_3 -----------------> |
   |                                                       |
   | <----------- Application Protected Data ------------> |
   |                                                       |
]]></artwork></figure>

<section anchor="transport" title="Transport and Message Correlation">

<t>Cryptographically, EDHOC does not put requirements on the lower layers. EDHOC is not bound to a particular transport layer, and can be used in environments without IP. The transport is responsible to handle message loss, reordering, message duplication, fragmentation, and denial of service protection, where necessary. The Initiator and the Responder need to have agreed on a transport to be used for EDHOC. It is recommended to transport EDHOC in CoAP payloads, see <xref target="transfer"/>.</t>

<t>EDHOC includes connection identifiers (C_I, C_R) to correlate messages. The connection identifiers C_I and C_R do not have any cryptographic purpose in EDHOC. They contain information facilitating retrieval of the protocol state and may therefore be very short. The connection identifier MAY be used with an application protocol (e.g. OSCORE) for which EDHOC establishes keys, in which case the connection identifiers SHALL adhere to the requirements for that protocol. Each party choses a connection identifier it desires the other party to use in outgoing messages. (For OSCORE this results in the endpoint selecting its Recipient ID, see Section 3.1 of <xref target="RFC8613"/>).</t>

<t>If the transport provides a mechanism for correlating messages, some of the connection identifiers may be omitted. There are four cases:</t>

<t><list style="symbols">
  <t>corr = 0, the transport does not provide a correlation mechanism.</t>
  <t>corr = 1, the transport provides a correlation mechanism that enables the Responder to correlate message_2 and message_1.</t>
  <t>corr = 2, the transport provides a correlation mechanism that enables the Initiator to correlate message_3 and message_2.</t>
  <t>corr = 3, the transport provides a correlation mechanism that enables both parties to correlate all three messages.</t>
</list></t>

<t>For example, if the key exchange is transported over CoAP, the CoAP Token can be used to correlate messages, see <xref target="coap"/>.</t>

</section>
<section anchor="auth-key-id" title="Authentication Keys and Identities">

<t>The EDHOC message exchange may be authenticated using raw public keys (RPK) or public key certificates. The certificates and RPKs can contain signature keys or static Diffie-Hellman keys. In X.509 certificates, signature keys typically have key usage “digitalSignature” and Diffie-Hellman keys typically have key usage “keyAgreement”.</t>

<t>EDHOC assumes the existence of mechanisms (certification authority, trusted third party, manual distribution, etc.) for specifying and distributing authentication keys and identities. Policies are 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 in the subject field and signed by a particular CA. On the other side, the device may only be allowed to connect to a network which authenticate with a particular public key (information of which may be provisioned, e.g., out of band or in the Auxiliary Data, see <xref target="AD"/>).</t>

<t>The EDHOC implementation must be able to receive and enforce information from the application about what is the intended peer endpoint, and in particular whether it is a specific identity or a set of identities.</t>

<t><list style="symbols">
  <t>When a Public Key Infrastructure (PKI) is used, 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. Before running 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.</t>
  <t>When public keys are used but not with a PKI (RPK, self-signed certificate), the trust anchor is the public authentication key of the other party. In this case, the identity is typically directly associated to the public 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 or COSE_Key containing the public authentication key and the subject name, see <xref target="fig-sigma"/>. Before running EDHOC, each endpoint needs a specific public 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 proof that the other party possesses the private authentication key corresponding to the public authentication key.</t>
</list></t>

</section>
<section anchor="identifiers" title="Identifiers">

<t>One byte connection and credential identifiers are realistic in many scenarios as most constrained devices only have a few keys and connections. In cases where a node only has one connection or key, the identifiers may even be the empty byte string.</t>

</section>
<section anchor="cs" title="Cipher Suites">

<t>EDHOC cipher suites consist of an ordered set of COSE algorithms: an EDHOC AEAD algorithm, an EDHOC hash algorithm, an EDHOC ECDH curve, an EDHOC signature algorithm, an EDHOC signature algorithm curve, an application AEAD algorithm, and an application hash algorithm from the COSE Algorithms and Elliptic Curves registries. Each cipher suite is identified with a pre-defined int label. This document specifies four pre-defined cipher suites.</t>

<figure><artwork><![CDATA[
   0. ( 10, -16, 4, -8, 6, 10, -16 )
      (AES-CCM-16-64-128, SHA-256, X25519, EdDSA, Ed25519,
       AES-CCM-16-64-128, SHA-256)

   1. ( 30, -16, 4, -8, 6, 10, -16 )
      (AES-CCM-16-128-128, SHA-256, X25519, EdDSA, Ed25519,
       AES-CCM-16-64-128, SHA-256)

   2. ( 10, -16, 1, -7, 1, 10, -16 )
      (AES-CCM-16-64-128, SHA-256, P-256, ES256, P-256,
       AES-CCM-16-64-128, SHA-256)

   3. ( 30, -16, 1, -7, 1, 10, -16 )
      (AES-CCM-16-128-128, SHA-256, P-256, ES256, P-256,
       AES-CCM-16-64-128, SHA-256)
]]></artwork></figure>

<t>The different methods use the same cipher suites, but some algorithms are not used in some methods. The EDHOC signature algorithm and the EDHOC signature algorithm curve are not used is methods without signature authentication.</t>

<t>The Initiator need to have a list of cipher suites it supports in order of preference. The Responder need to have a list of cipher suites it supports.</t>

</section>
<section anchor="communicationnegotiation-of-protocol-features" title="Communication/Negotiation of Protocol Features">

<t>EDHOC allows the communication or negotiation of various protocol features during the execution of the protocol.</t>

<t><list style="symbols">
  <t>The Initiator proposes a cipher suite (see <xref target="cs"/>), and the Responder either accepts or rejects, and may make a counter proposal.</t>
  <t>The Initiator decides on the correlation parameter corr (see <xref target="transport"/>). This is typically given by the transport which the Initiator and the Responder have agreed on beforehand. The Responder either accepts or rejects.</t>
  <t>The Initiator decides on the method parameter, see <xref target="method-types"/>. The Responder either accepts or rejects.</t>
  <t>The Initiator and the Responder decide on the representation of the identifier of their respective credentials, ID_CRED_I and ID_CRED_R. The decision is reflected by the label used in the CBOR map, see for example <xref target="id_cred"/>.</t>
</list></t>

</section>
<section anchor="AD" title="Auxiliary Data">

<t>In order to reduce round trips and number of messages, and in some cases also streamline processing, certain security applications may be integrated into EDHOC by transporting auxiliary data together with the messages. One example is the transport of third-party authorization information protected outside of EDHOC <xref target="I-D.selander-ace-ake-authz"/>. Another example is the embedding of a certificate enrolment request or a newly issued certificate.</t>

<t>EDHOC allows opaque auxiliary data (AD) to be sent in the EDHOC messages. Unprotected Auxiliary Data (AD_1, AD_2) may be sent in message_1 and message_2, respectively. Protected Auxiliary Data (AD_3) may be sent in message_3.</t>

<t>Since data carried in AD_1 and AD_2 may not be protected, and the content of AD_3 is available to both the Initiator and the Responder, special considerations need to be made such that the availability of the data a) does not violate security and privacy requirements of the service which uses this data, and b) does not violate the security properties of EDHOC.</t>

</section>
<section anchor="cose_key" title="Ephemeral Public Keys">

<t>The ECDH ephemeral public keys are formatted as a COSE_Key of type EC2 or OKP according to Sections 13.1 and 13.2 of <xref target="RFC8152"/>, but only the ‘x’ parameter is included in the EDHOC messages. For Elliptic Curve Keys of type EC2, compact representation as per <xref target="RFC6090"/> MAY be used also in the COSE_Key. If the COSE implementation requires an ‘y’ parameter, any of the possible values of the y-coordinate can be used, see Appendix C of <xref target="RFC6090"/>. COSE <xref target="RFC8152"/> always use compact output for Elliptic Curve Keys of type EC2.</t>

</section>
<section anchor="key-der" title="Key Derivation">

<t>EDHOC uses HKDF <xref target="RFC5869"/> with the EDHOC hash algorithm in the selected cipher suite to derive keys. HKDF-Extract is used to derive fixed-length uniformly pseudorandom keys (PRK) from ECDH shared secrets. HKDF-Expand is used to derive additional output keying material (OKM) from the PRKs. The PRKs are derived using HKDF-Extract <xref target="RFC5869"/>.</t>

<figure><artwork><![CDATA[
   PRK = HKDF-Extract( salt, IKM )
]]></artwork></figure>

<t>PRK_2e is used to derive key and IV to encrypt message_2. PRK_3e2m is used to derive keys and IVs produce a MAC in message_2 and to encrypt message_3. PRK_4x3m is used to derive keys and IVs produce a MAC in message_3 and to derive application specific data.</t>

<t>PRK_2e is derived with the following input:</t>

<t><list style="symbols">
  <t>The salt SHALL be the empty byte string. Note that <xref target="RFC5869"/> specifies that if the salt is not provided, it is set to a string of zeros (see Section 2.2 of <xref target="RFC5869"/>). For implementation purposes, not providing the salt is the same as setting the salt to the empty byte string.</t>
  <t>The input keying material (IKM) SHALL be the ECDH shared secret G_XY (calculated from G_X and Y or G_Y and X) as defined in Section 12.4.1 of <xref target="RFC8152"/>.</t>
</list></t>

<t>Example: Assuming the use of SHA-256 the extract phase of HKDF produces PRK_2e as follows:</t>

<figure><artwork><![CDATA[
   PRK_2e = HMAC-SHA-256( salt, G_XY )
]]></artwork></figure>

<t>where salt = 0x (the empty byte string).</t>

<t>The pseudorandom keys PRK_3e2m and PRK_4x3m are defined as follow:</t>

<t><list style="symbols">
  <t>If the Reponder authenticates with a static Diffie-Hellman key, then PRK_3e2m = HKDF-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>
  <t>If the Initiator authenticates with a static Diffie-Hellman key, then PRK_4x3m = HKDF-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>
</list></t>

<t>Example: Assuming the use of curve25519, the ECDH shared secrets G_XY, G_RX, and G_IY are the outputs of the X25519 function <xref target="RFC7748"/>:</t>

<figure><artwork><![CDATA[
   G_XY = X25519( Y, G_X ) = X25519( X, G_Y )
]]></artwork></figure>

<t>The keys and IVs used in EDHOC are derived from PRK using HKDF-Expand <xref target="RFC5869"/> where the EDHOC-KDF is instantiated with the EDHOC AEAD algorithm in the selected cipher suite.</t>

<figure><artwork><![CDATA[
   OKM = EDHOC-KDF( PRK, transcript_hash, label, length )
       = HKDF-Expand( PRK, info, length )
]]></artwork></figure>

<t>where info is the CBOR encoding of</t>

<figure><artwork><![CDATA[
info = [
   edhoc_aead_id : int / tstr,
   transcript_hash : bstr,
   label : tstr,
   length : uint
]
]]></artwork></figure>

<t>where</t>

<t><list style="symbols">
  <t>edhoc_aead_id is an int or tstr containing the algorithm identifier of the EDHOC AEAD algorithm in the selected cipher suite encoded as defined in <xref target="RFC8152"/>. Note that a single fixed edhoc_aead_id is used in all invocations of EDHOC-KDF, including the derivation of K_2e and invocations of the EDHOC-Exporter.</t>
  <t>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"/>.</t>
  <t>label is a tstr set to the name of the derived key or IV, i.e. “K_2m”, “IV_2m”, “K_2e”, “K_3m”, “IV_3m”, “K_3ae”, or “IV_3ae”.</t>
  <t>length is the length of output keying material (OKM) in bytes</t>
</list></t>

<t>K_2m and IV_2m are derived using the transcript hash TH_2 and the pseudorandom key PRK_3e2m. K_3ae and IV_3ae are derived using the transcript hash TH_3 and the pseudorandom key PRK_3e2m. K_3m and IV_3m are derived using the transcript hash TH_3 and the pseudorandom key PRK_4x3m. IVs are only used if the EDHOC AEAD algorithm uses IVs.</t>

<section anchor="exporter" title="EDHOC-Exporter Interface">

<t>Application keys and other application specific data can be derived using the EDHOC-Exporter interface defined as:</t>

<figure><artwork><![CDATA[
   EDHOC-Exporter(label, length)
     = EDHOC-KDF(PRK_4x3m, TH_4, label, length) 
]]></artwork></figure>

<t>where label is a tstr defined by the application and length is a uint defined by the application. The label SHALL be different for each different exporter value. The transcript hash TH_4 is a CBOR encoded bstr and the input to the hash function is a CBOR Sequence.</t>

<figure><artwork><![CDATA[
   TH_4 = H( TH_3, CIPHERTEXT_3 )
]]></artwork></figure>

<t>where H() is the hash function in the selected cipher suite. Example use of the EDHOC-Exporter is given in Sections <xref target="oscore" format="counter"/>.</t>

</section>
</section>
</section>
<section anchor="asym" title="EDHOC Authenticated with Asymmetric Keys">

<section anchor="asym-overview" title="Overview">

<t>This section specifies authentication method = 0, 1, 2, and 3, see <xref target="method-types"/>. EDHOC supports authentication with signature or static Diffie-Hellman keys in the form of raw public keys (RPK) and public key certificates with the requirements that:</t>

<t><list style="symbols">
  <t>Only the Responder SHALL have access to the Responder’s private authentication key,</t>
  <t>Only the Initiator SHALL have access to the Initiator’s private authentication key,</t>
  <t>The Initiator is able to retrieve the Responder’s public authentication key using ID_CRED_R,</t>
  <t>The Responder is able to retrieve the Initiator’s public authentication key using ID_CRED_I,</t>
</list></t>

<t>where ID_CRED_I and ID_CRED_R are the identifiers of the public authentication keys. Their encoding is specified in <xref target="id_cred"/>.</t>

<figure title="Overview of EDHOC with asymmetric key authentication." anchor="fig-asym"><artwork align="center"><![CDATA[
Initiator                                                   Responder
|               METHOD_CORR, SUITES_I, G_X, C_I, AD_1               |
+------------------------------------------------------------------>|
|                             message_1                             |
|                                                                   |
|   C_I, G_Y, C_R, Enc(K_2e; ID_CRED_R, Signature_or_MAC_2, AD_2)   |
|<------------------------------------------------------------------+
|                             message_2                             |
|                                                                   |
|       C_R, AEAD(K_3ae; ID_CRED_I, Signature_or_MAC_3, AD_3)       |
+------------------------------------------------------------------>|
|                             message_3                             |
]]></artwork></figure>

</section>
<section anchor="id_cred" title="Encoding of Public Authentication Key Identifiers">

<t>The identifiers ID_CRED_I and ID_CRED_R are COSE header_maps, i.e. CBOR maps containing COSE Common Header Parameters, see Section 3.1 of <xref target="RFC8152"/>). ID_CRED_I and ID_CRED_R need to contain parameters that can identify a public authentication key. In the following paragraph we give some examples of possible COSE header parameters used.</t>

<t>Raw public keys are most optimally stored as COSE_Key objects and identified with a ‘kid’ parameter:</t>

<t><list style="symbols">
  <t>ID_CRED_x = { 4 : kid_x }, where kid_x : bstr, for x = I or R.</t>
</list></t>

<t>Public key certificates can be identified in different ways. Header parameters for identifying X.509 certificates are defined in <xref target="I-D.ietf-cose-x509"/>, for example:</t>

<t><list style="symbols">
  <t>by a hash value with the ‘x5t’ parameter;  <list style="symbols">
      <t>ID_CRED_x = { 34 : COSE_CertHash }, for x = I or R,</t>
    </list></t>
  <t>by a URL with the ‘x5u’ parameter;  <list style="symbols">
      <t>ID_CRED_x = { 35 : uri }, for x = I or R,</t>
    </list></t>
</list></t>

<t>The purpose of ID_CRED_I and ID_CRED_R is to facilitate retrieval of a public authentication key and when they do not contain the actual credential, they may be very short. ID_CRED_I and ID_CRED_R MAY contain the actual credential used for authentication. It is RECOMMENDED that they uniquely identify the public authentication key as the recipient may otherwise have to try several keys. ID_CRED_I and ID_CRED_R are transported in the ciphertext, see <xref target="asym-msg2-proc"/> and <xref target="asym-msg3-proc"/>.</t>

<t>The authentication key 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. When using a signature key, the authentication is provided by a signature. 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. The MAC is implemented with an AEAD algorithm. When using a 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>The actual credentials CRED_I and CRED_R are signed or MAC:ed by the Initiator and the Responder respectively, see <xref target="asym-msg3-form"/> and <xref target="asym-msg2-form"/>. The Initiator and the Responder MAY use different types of credentials, e.g. one uses RPK and the other uses certificate. When the credential is a certificate, CRED_x is end-entity certificate (i.e. not the certificate chain) encoded as a CBOR bstr. When the credential is a COSE_Key, CRED_x is a CBOR map only contains specific fields from the COSE_Key. For COSE_Keys of type OKP the CBOR map SHALL only include the parameters 1 (kty), -1 (crv), and -2 (x-coordinate). For COSE_Keys of type EC2 the CBOR map SHALL only include the parameters 1 (kty), -1 (crv), -2 (x-coordinate), and -3 (y-coordinate). If the parties have agreed on an identity besides the public key, the indentity is included in the CBOR map with the label “subject name”, otherwise the subject name is the empty text string. The parameters SHALL be encoded in decreasing order with int labels first and text string labels last. An example of CRED_x when the RPK contains an X25519 static Diffie-Hellman key and the parties have agreed on an EUI-64 identity is shown below:</t>

<figure><artwork><![CDATA[
CRED_x = {
  1:  1,
 -1:  4,
 -2:  h'b1a3e89460e88d3a8d54211dc95f0b90
        3ff205eb71912d6db8f4af980d2db83a',
 "subject name" : "42-50-31-FF-EF-37-32-39"
}
]]></artwork></figure>

</section>
<section anchor="bstr_id" title="Encoding of bstr_identifier">

<t>A bstr_identifier is a special encoding for byte strings, used throughout the protocol.</t>

<t>Byte strings of length greater than one are encoded as CBOR byte strings.
Byte strings of length one are encoded as the corresponding integer - 24.</t>

<t>For example, the byte string h’59e9’ encoded as a bstr_identifier is equal to h’59e9’, while the byte string h’2a’ is encoded as the integer 18.</t>

<t>The CDDL definition of the bstr_identifier is given below:</t>

<figure><artwork type="CDDL"><![CDATA[
bstr_identifier = bstr / int
]]></artwork></figure>

<t>Note that, despite what could be interpreted by the CDDL definition only, bstr_identifier once decoded are always byte strings.</t>

</section>
<section anchor="edhoc-message-1" title="EDHOC Message 1">

<section anchor="asym-msg1-form" title="Formatting of Message 1">

<t>message_1 SHALL be a CBOR Sequence (see <xref target="CBOR"/>) as defined below</t>

<figure><artwork type="CDDL"><![CDATA[
message_1 = (
  METHOD_CORR : int,
  SUITES_I : [ selected : suite, supported : 2* suite ] / suite,
  G_X : bstr,
  C_I : bstr_identifier,  
  ? AD_1 : bstr,
)

suite = int
]]></artwork></figure>

<t>where:</t>

<t><list style="symbols">
  <t>METHOD_CORR = 4 * method + corr, where method = 0, 1, 2, or 3 (see <xref target="method-types"/>) and the correlation parameter corr is chosen based on the transport and determines which connection identifiers that are omitted (see <xref target="transport"/>).</t>
  <t>SUITES_I - cipher suites which the Initiator supports in order of (decreasing) preference. The list of supported cipher suites can be truncated at the end, as is detailed in the processing steps below. One of the supported cipher suites is selected. If a single supported cipher suite is conveyed then that cipher suite is selected and the selected cipher suite is encoded as an int instead of an array.</t>
  <t>G_X - the ephemeral public key of the Initiator</t>
  <t>C_I - variable length connection identifier, encoded as a bstr_identifier (see <xref target="bstr_id"/>).</t>
  <t>AD_1 - bstr containing unprotected opaque auxiliary data</t>
</list></t>

</section>
<section anchor="initiator-processing-of-message-1" title="Initiator Processing of Message 1">

<t>The Initiator SHALL compose message_1 as follows:</t>

<t><list style="symbols">
  <t>The supported cipher suites and the order of preference MUST NOT be changed based on previous error messages. However, the list SUITES_I sent to the Responder MAY be truncated such that cipher suites which are the least preferred are omitted. The amount of truncation 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 least preferred cipher suite in the list MUST be included in the list.</t>
  <t>Determine the cipher suite to use with the Responder in message_1. If the Initiator previously received from the Responder an error message to a message_1 with diagnostic payload identifying a cipher suite that the Initiator supports, then the Initiator SHALL use that cipher suite. Otherwise the first supported (i.e. the most preferred) cipher suite in SUITES_I MUST be used.</t>
  <t>Generate an ephemeral ECDH key pair as specified in Section 5 of <xref target="SP-800-56A"/> 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.</t>
  <t>Choose a connection identifier C_I and store it for the length of the protocol.</t>
  <t>Encode message_1 as a sequence of CBOR encoded data items as specified in <xref target="asym-msg1-form"/></t>
</list></t>

</section>
<section anchor="responder-processing-of-message-1" title="Responder Processing of Message 1">

<t>The Responder SHALL process message_1 as follows:</t>

<t><list style="symbols">
  <t>Decode message_1 (see <xref target="CBOR"/>).</t>
  <t>Verify that the selected cipher suite is supported and that no prior cipher suites in SUITES_I are supported.</t>
  <t>Pass AD_1 to the security application.</t>
</list></t>

<t>If any verification step fails, the Initiator MUST send an EDHOC error message back, formatted as defined in <xref target="error"/>, and the protocol MUST be discontinued. If the Responder does not support the selected cipher suite, then SUITES_R MUST include one or more supported cipher suites. If the Responder does not support the selected cipher suite, but supports another cipher suite in SUITES_I, then SUITES_R MUST include the first supported cipher suite in SUITES_I.</t>

</section>
</section>
<section anchor="edhoc-message-2" title="EDHOC Message 2">

<section anchor="asym-msg2-form" title="Formatting of Message 2">

<t>message_2 and data_2 SHALL be CBOR Sequences (see <xref target="CBOR"/>) as defined below</t>

<figure><artwork type="CDDL"><![CDATA[
message_2 = (
  data_2,
  CIPHERTEXT_2 : bstr,
)
]]></artwork></figure>

<figure><artwork type="CDDL"><![CDATA[
data_2 = (
  ? C_I : bstr_identifier,
  G_Y : bstr,
  C_R : bstr_identifier,
)
]]></artwork></figure>

<t>where:</t>

<t><list style="symbols">
  <t>G_Y - the ephemeral public key of the Responder</t>
  <t>C_R - variable length connection identifier, encoded as a bstr_identifier (see <xref target="bstr_id"/>).</t>
</list></t>

</section>
<section anchor="asym-msg2-proc" title="Responder Processing of Message 2">

<t>The Responder SHALL compose message_2 as follows:</t>

<t><list style="symbols">
  <t>If corr (METHOD_CORR mod 4) equals 1 or 3, C_I is omitted, otherwise C_I is not omitted.</t>
  <t>Generate an ephemeral ECDH key pair as specified in Section 5 of <xref target="SP-800-56A"/> 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.</t>
  <t>Choose a connection identifier C_R and store it for the length of the protocol.</t>
  <t>Compute the transcript hash TH_2 = H(message_1, data_2) 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.</t>
  <t>Compute an inner COSE_Encrypt0 as defined in Section 5.3 of <xref target="RFC8152"/>, with the EDHOC AEAD algorithm in the selected cipher suite, K_2m, IV_2m, and the following parameters:  <list style="symbols">
      <t>protected =  « ID_CRED_R »      <list style="symbols">
          <t>ID_CRED_R - identifier to facilitate retrieval of CRED_R, see <xref target="id_cred"/></t>
        </list></t>
      <t>external_aad = « TH_2, CRED_R, ? AD_2 »      <list style="symbols">
          <t>CRED_R - bstr containing the credential of the Responder, see <xref target="id_cred"/>.</t>
          <t>AD_2 = bstr containing opaque unprotected auxiliary data</t>
        </list></t>
      <t>plaintext = h’’</t>
    </list>
COSE constructs the input to the AEAD <xref target="RFC5116"/> as follows:  <list style="symbols">
      <t>Key K = EDHOC-KDF( PRK_3e2m, TH_2, “K_2m”, length )</t>
      <t>Nonce N = EDHOC-KDF( PRK_3e2m, TH_2, “IV_2m”, length )</t>
      <t>Plaintext P = 0x (the empty string)</t>
      <t>Associated data A =      <vspace blankLines='1'/>
[ “Encrypt0”, « ID_CRED_R », « TH_2, CRED_R, ? AD_2 » ]</t>
    </list>
MAC_2 is the ‘ciphertext’ of the inner COSE_Encrypt0.</t>
  <t>If the Reponder authenticates with a static Diffie-Hellman key (method equals 1 or 3), then Signature_or_MAC_2 is MAC_2. If the Reponder authenticates with a signature key (method equals 0 or 2), then Signature_or_MAC_2 is the ‘signature’ of a COSE_Sign1 object as defined in Section 4.4 of <xref target="RFC8152"/> using the signature algorithm in the selected cipher suite, the private authentication key of the Responder, and the following parameters:  <list style="symbols">
      <t>protected =  « ID_CRED_R »</t>
      <t>external_aad = « TH_2, CRED_R, ? AD_2 »</t>
      <t>payload = MAC_2</t>
    </list>
COSE constructs the input to the Signature Algorithm as:  <list style="symbols">
      <t>The key is the private authentication key of the Responder.</t>
      <t>The message M to be signed =      <vspace blankLines='1'/>
[ “Signature1”, « ID_CRED_R », « TH_2, CRED_R, ? AD_2 », MAC_2 ]</t>
    </list></t>
  <t>CIPHERTEXT_2 is the ciphertext resulting from XOR encrypting a plaintext with the following common parameters:  <list style="symbols">
      <t>plaintext = ( ID_CRED_R / bstr_identifier, Signature_or_MAC_2, ? AD_2 )      <list style="symbols">
          <t>Note that if ID_CRED_R contains a single ‘kid’ parameter, i.e., ID_CRED_R = { 4 : kid_R }, only the byte string kid_R is conveyed in the plaintext encoded as a bstr_identifier, see <xref target="id_cred"/> and <xref target="bstr_id"/>.</t>
        </list></t>
      <t>CIPHERTEXT_2 = plaintext XOR K_2e</t>
      <t>K_2e = EDHOC-KDF( PRK_2e, TH_2, “K_2e”, length ), where length is the length of the plaintext.</t>
    </list></t>
  <t>Encode message_2 as a sequence of CBOR encoded data items as specified in <xref target="asym-msg2-form"/>.</t>
</list></t>

</section>
<section anchor="initiator-processing-of-message-2" title="Initiator Processing of Message 2">

<t>The Initiator SHALL process message_2 as follows:</t>

<t><list style="symbols">
  <t>Decode message_2 (see <xref target="CBOR"/>).</t>
  <t>Retrieve the protocol state using the connection identifier C_I and/or other external information such as the CoAP Token and the 5-tuple.</t>
  <t>Decrypt CIPHERTEXT_2. The decryption process depends on the method, see <xref target="asym-msg2-proc"/>.</t>
  <t>Verify that the identity of the Responder is an allowed identity for this connection, see <xref target="auth-key-id"/>.</t>
  <t>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"/>.</t>
  <t>Pass AD_2 to the security application.</t>
</list></t>

<t>If any verification step fails, the Responder MUST send an EDHOC error message back, formatted as defined in <xref target="error"/>, and the protocol MUST be discontinued.</t>

</section>
</section>
<section anchor="edhoc-message-3" title="EDHOC Message 3">

<section anchor="asym-msg3-form" title="Formatting of Message 3">

<t>message_3 and data_3 SHALL be CBOR Sequences (see <xref target="CBOR"/>) as defined below</t>

<figure><artwork type="CDDL"><![CDATA[
message_3 = (
  data_3,
  CIPHERTEXT_3 : bstr,
)
]]></artwork></figure>

<figure><artwork type="CDDL"><![CDATA[
data_3 = (
  ? C_R : bstr_identifier,
)
]]></artwork></figure>

</section>
<section anchor="asym-msg3-proc" title="Initiator Processing of Message 3">

<t>The Initiator  SHALL compose message_3 as follows:</t>

<t><list style="symbols">
  <t>If corr (METHOD_CORR mod 4) equals 2 or 3, C_R is omitted, otherwise C_R is not omitted.</t>
  <t>Compute the transcript hash TH_3 = H(TH_2 , CIPHERTEXT_2, data_3) where H() is the hash function in the 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.</t>
  <t>Compute an inner COSE_Encrypt0 as defined in Section 5.3 of <xref target="RFC8152"/>, with the EDHOC AEAD algorithm in the selected cipher suite, K_3m, IV_3m, and the following parameters:  <list style="symbols">
      <t>protected =  « ID_CRED_I »      <list style="symbols">
          <t>ID_CRED_I - identifier to facilitate retrieval of CRED_I, see <xref target="id_cred"/></t>
        </list></t>
      <t>external_aad = « TH_3, CRED_I, ? AD_3 »      <list style="symbols">
          <t>CRED_I - bstr containing the credential of the Initiator, see <xref target="id_cred"/>.</t>
          <t>AD_3 = bstr containing opaque protected auxiliary data</t>
        </list></t>
      <t>plaintext = h’’</t>
    </list>
COSE constructs the input to the AEAD <xref target="RFC5116"/> as follows:  <list style="symbols">
      <t>Key K = EDHOC-KDF( PRK_4x3m, TH_3, “K_3m”, length )</t>
      <t>Nonce N = EDHOC-KDF( PRK_4x3m, TH_3, “IV_3m”, length )</t>
      <t>Plaintext P = 0x (the empty string)</t>
      <t>Associated data A =      <vspace blankLines='1'/>
[ “Encrypt0”, « ID_CRED_I », « TH_3, CRED_I, ? AD_3 » ]</t>
    </list>
MAC_3 is the ‘ciphertext’ of the inner COSE_Encrypt0.</t>
  <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’ of a COSE_Sign1 object as defined in Section 4.4 of <xref target="RFC8152"/> using the signature algorithm in the selected cipher suite, the private authentication key of the Initiator, and the following parameters:  <list style="symbols">
      <t>protected =  « ID_CRED_I »</t>
      <t>external_aad = « TH_3, CRED_I, ? AD_3 »</t>
      <t>payload = MAC_3</t>
    </list>
COSE constructs the input to the Signature Algorithm as:  <list style="symbols">
      <t>The key is the private authentication key of the Initiator.</t>
      <t>The message M to be signed =      <vspace blankLines='1'/>
[ “Signature1”, « ID_CRED_I », « TH_3, CRED_I, ? AD_3 », MAC_3 ]</t>
    </list></t>
  <t>Compute an outer COSE_Encrypt0 as defined in Section 5.3 of <xref target="RFC8152"/>, with the EDHOC AEAD algorithm in the selected cipher suite, K_3ae, IV_3ae, and the following parameters. The protected header SHALL be empty.  <list style="symbols">
      <t>external_aad = TH_3</t>
      <t>plaintext = ( ID_CRED_I / bstr_identifier, Signature_or_MAC_3, ? AD_3 )      <list style="symbols">
          <t>Note that if ID_CRED_I contains a single ‘kid’ parameter, i.e., ID_CRED_I = { 4 : kid_I }, only the byte string kid_I is conveyed in the plaintext encoded as a bstr_identifier, see <xref target="id_cred"/> and <xref target="bstr_id"/>.</t>
        </list></t>
    </list>
COSE constructs the input to the AEAD <xref target="RFC5116"/> as follows:  <list style="symbols">
      <t>Key K = EDHOC-KDF( PRK_3e2m, TH_3, “K_3ae”, length )</t>
      <t>Nonce N = EDHOC-KDF( PRK_3e2m, TH_3, “IV_3ae”, length )</t>
      <t>Plaintext P = ( ID_CRED_I / bstr_identifier, Signature_or_MAC_3, ? AD_3 )</t>
      <t>Associated data A = [ “Encrypt0”, h’’, TH_3 ]</t>
    </list>
CIPHERTEXT_3 is the ‘ciphertext’ of the outer COSE_Encrypt0.</t>
  <t>Encode message_3 as a sequence of CBOR encoded data items as specified in <xref target="asym-msg3-form"/>.</t>
</list></t>

<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.</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 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 from the Responder.</t>

</section>
<section anchor="responder-processing-of-message-3" title="Responder Processing of Message 3">

<t>The Responder SHALL process message_3 as follows:</t>

<t><list style="symbols">
  <t>Decode message_3 (see <xref target="CBOR"/>).</t>
  <t>Retrieve the protocol state using the connection identifier C_R and/or other external information such as the CoAP Token and the 5-tuple.</t>
  <t>Decrypt and verify the outer COSE_Encrypt0 as defined in Section 5.3 of <xref target="RFC8152"/>, with the EDHOC AEAD algorithm in the selected cipher suite, K_3ae, and IV_3ae.</t>
  <t>Verify that the identity of the Initiator is an allowed identity for this connection, see <xref target="auth-key-id"/>.</t>
  <t>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"/>.</t>
  <t>Pass AD_3, 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.</t>
</list></t>

<t>If any verification step fails, the Responder MUST send an EDHOC error message back, formatted as defined in <xref target="error"/>, and the protocol 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>
<section anchor="error" title="Error Handling">

<section anchor="edhoc-error-message" title="EDHOC Error Message">

<t>This section defines a message format for the EDHOC error message, used during the protocol. An EDHOC error message can be sent by both parties as a reply to any non-error EDHOC message. After sending an error message, the protocol MUST be discontinued. Errors at the EDHOC layer are sent as normal successful messages in the lower layers (e.g. CoAP POST and 2.04 Changed). An advantage of using such a construction is to avoid issues created by usage of cross protocol proxies (e.g. UDP to TCP).</t>

<t>error SHALL be a CBOR Sequence (see <xref target="CBOR"/>) as defined below</t>

<figure><artwork type="CDDL"><![CDATA[
error = (
  ? C_x : bstr_identifier,
  ERR_MSG : tstr,
  ? SUITES_R : [ supported : 2* suite ] / suite,
)
]]></artwork></figure>

<t>where:</t>

<t><list style="symbols">
  <t>C_x - variable length connection identifier, encoded as a bstr_identifier (see <xref target="bstr_id"/>). If error is sent by the Responder and corr (METHOD_CORR mod 4) equals 0 or 2 then C_x is set to C_I, else if error is sent by the Initiator and corr (METHOD_CORR mod 4) equals 0 or 1 then C_x is set to C_R, else C_x is omitted.</t>
  <t>ERR_MSG - text string containing the diagnostic payload, defined in the same way as in Section 5.5.2 of <xref target="RFC7252"/>. ERR_MSG MAY be a 0-length text string.</t>
  <t>SUITES_R - cipher suites from SUITES_I or the EDHOC cipher suites registry that the Responder supports. SUITES_R MUST only be included in replies to message_1. If a single supported cipher suite is conveyed then the supported cipher suite is encoded as an int instead of an array.</t>
</list></t>

<t>After receiving SUITES_R, the Initiator can determine which selected cipher suite to use for the next EDHOC run with the Responder. 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. After a successful run of EDHOC, the Initiator MAY remember the selected cipher suite to use in future EDHOC runs. Note that if the Initiator or Responder is updated with new cipher suite policies, any cached information may be outdated.</t>

<section anchor="example-use-of-edhoc-error-message-with-suitesr" title="Example Use of EDHOC Error Message with SUITES_R">

<t>Assuming 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 Responder can truncate SUITES_I and how SUITES_R is used by the Responder to give the Initiator information about the cipher suites that the Responder supports. In <xref target="fig-error1"/>, the Responder supports cipher suite 6 but not the selected cipher suite 5.</t>

<figure title="Example use of error message with SUITES_R." anchor="fig-error1"><artwork align="center"><![CDATA[
Initiator                                                   Responder
|        METHOD_CORR, SUITES_I = [5, 5, 6, 7], G_X, C_I, AD_1       |
+------------------------------------------------------------------>|
|                             message_1                             |
|                                                                   |
|                     C_I, ERR_MSG, SUITES_R = 6                    |
|<------------------------------------------------------------------+
|                               error                               |
|                                                                   |
|         METHOD_CORR, SUITES_I = [6, 5, 6], G_X, C_I, AD_1         |
+------------------------------------------------------------------>|
|                             message_1                             |
]]></artwork></figure>

<t>In <xref target="fig-error2"/>, the Responder supports cipher suite 7 but not cipher suites 5 and 6.</t>

<figure title="Example use of error message with SUITES_R." anchor="fig-error2"><artwork align="center"><![CDATA[
Initiator                                                   Responder
|         METHOD_CORR, SUITES_I = [5, 5, 6], G_X, C_I, AD_1         |
+------------------------------------------------------------------>|
|                             message_1                             |
|                                                                   |
|                  C_I, ERR_MSG, SUITES_R = [7, 9]                  |
|<------------------------------------------------------------------+
|                               error                               |
|                                                                   |
|        METHOD_CORR, SUITES_I = [7, 5, 6, 7], G_X, C_I, AD_1       |
+------------------------------------------------------------------>|
|                             message_1                             |
]]></artwork></figure>

<t>As the Initiator’s list of supported cipher suites and order of preference is fixed, and the Responder only accepts message_1 if the selected cipher suite is the first cipher suite in SUITES_I that the Responder supports, the parties can verify that the selected cipher suite is the most preferred (by the Initiator) cipher suite supported by both parties. If the selected cipher suite is not the first cipher suite in SUITES_I that the Responder supports, the Responder will discontinue the protocol.</t>

</section>
</section>
</section>
<section anchor="transfer" title="Transferring EDHOC and Deriving an OSCORE Context">

<section anchor="coap" title="Transferring EDHOC in CoAP">

<t>It is recommended to transport EDHOC as an exchange of CoAP <xref target="RFC7252"/> messages. CoAP is a reliable transport that can preserve packet ordering and handle message duplication. CoAP can also perform fragmentation and protect against denial of service attacks. It is recommended to carry the EDHOC messages in Confirmable messages, especially if fragmentation is used.</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"/>. By default, EDHOC is transferred in POST requests and 2.04 (Changed) responses to the Uri-Path: “/.well-known/edhoc”, but an application may define its own path that can be discovered e.g. using resource directory <xref target="I-D.ietf-core-resource-directory"/>.</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.</t>

<t>An example of a successful EDHOC exchange using CoAP is shown in <xref target="fig-coap1"/>. In this case the CoAP Token enables the Initiator to correlate message_1 and message_2 so the correlation parameter corr = 1.</t>

<figure title="Transferring EDHOC in CoAP" anchor="fig-coap1"><artwork align="center"><![CDATA[
Client    Server
  |          |
  +--------->| Header: POST (Code=0.02)
  |   POST   | Uri-Path: "/.well-known/edhoc"
  |          | Content-Format: application/edhoc
  |          | Payload: 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"
  |          | Content-Format: application/edhoc
  |          | Payload: EDHOC message_3
  |          |
  |<---------+ Header: 2.04 Changed
  |   2.04   | 
  |          |
]]></artwork></figure>

<t>The exchange in <xref target="fig-coap1"/> protects the client identity against active attackers and the server identity against passive attackers. 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"/>. In this case the CoAP Token enables the Responder to correlate message_2 and message_3 so the correlation parameter corr = 2.</t>

<figure title="Transferring EDHOC in CoAP" anchor="fig-coap2"><artwork align="center"><![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"
  |          | Content-Format: application/edhoc
  |          | Payload: 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"/>. 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"/>.</t>

<section anchor="oscore" title="Deriving an OSCORE Context from EDHOC">

<t>When EDHOC is used to derive parameters for OSCORE <xref target="RFC8613"/>, the parties  make sure that the EDHOC connection identifiers are unique, i.e. C_R MUST NOT be equal to C_I. The CoAP client and server MUST be able to retrieve the OSCORE protocol state using its chosen connection identifier and optionally other information such as the 5-tuple. In case that the CoAP client is the Initiator and the CoAP server is the Responder:</t>

<t><list style="symbols">
  <t>The client’s OSCORE Sender ID is C_R and the server’s OSCORE Sender ID is C_I, as defined in this document</t>
  <t>The AEAD Algorithm and the hash algorithm are the application AEAD and hash algorithms in the selected cipher suite.</t>
  <t>The Master Secret and Master Salt are derived as follows where length is the key length (in bytes) of the application AEAD Algorithm.</t>
</list></t>

<figure><artwork><![CDATA[
   Master Secret = EDHOC-Exporter( "OSCORE Master Secret", length )
   Master Salt   = EDHOC-Exporter( "OSCORE Master Salt", 8 )
]]></artwork></figure>

</section>
</section>
</section>
<section anchor="security" title="Security Considerations">

<section anchor="sec-prop" title="Security Properties">

<t>EDHOC inherits its security properties from the theoretical SIGMA-I protocol <xref target="SIGMA"/>. Using the terminology from <xref target="SIGMA"/>, EDHOC provides perfect forward secrecy, mutual authentication with aliveness, consistency, peer awareness. As described in <xref target="SIGMA"/>, peer awareness is provided to the Responder, but not to the Initiator.</t>

<t>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"/>, EDHOC adds an explicit method type and expands the message authentication coverage to additional elements such as algorithms, auxiliary data, and previous messages. This protects against an attacker replaying messages or injecting messages from another session.</t>

<t>EDHOC also adds negotiation 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"/>, IETF protocols need to mitigate pervasive monitoring when possible. One way to mitigate pervasive monitoring is to use a key exchange that provides perfect forward secrecy. EDHOC therefore only supports methods with perfect forward secrecy. 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.</t>

<t>If supported by the device, it is RECOMMENDED that at least the long-term private keys is stored in a Trusted Execution Environment (TEE) and that sensitive operations using these keys are performed inside the TEE. To achieve even higher security additional operation such as ephemeral key generation, all computations of shared secrets, and storage of the PRK keys can be done inside the TEE. Optimally, the whole EDHOC protocol can be implemented inside the TEE. Typically an adversary with physical access to a device can be assumed to gain access to all information outside of the TEE, but none of the information inside the TEE.</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 protocol run.</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>

</section>
<section anchor="cryptographic-considerations" title="Cryptographic Considerations">
<t>The security of the SIGMA protocol requires the MAC to be bound to the identity of the signer. 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. EDHOC implements SIGMA-I using the same Sign-then-MAC approach as TLS 1.3.</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 reused, and both parties SHALL generate fresh random ephemeral key pairs.</t>

<t>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 data rates in many IoT deployments are very limited. Given that the application keys are protected as well as the long-term authentication keys they can often be used for years or even decades before the cryptographic limits are reached. If the application keys established through EDHOC need to be renewed, the communicating parties can derive application keys with other labels or run EDHOC again.</t>

</section>
<section anchor="cipher-suites" title="Cipher Suites">

<t>Cipher suite number 0 (AES-CCM-16-64-128, SHA-256, X25519, EdDSA, Ed25519, AES-CCM-16-64-128, SHA-256) is mandatory to implement. Implementations only need to implement the algorithms needed for their supported methods. For many constrained IoT devices it is problematic to support more than one cipher suites, so some deployments with P-256 may not support the mandatory cipher suite. This is not a problem for local deployments.</t>

<t>The HMAC algorithm HMAC 256/64 (HMAC w/ SHA-256 truncated to 64 bits) SHALL NOT be supported for use in EDHOC.</t>

</section>
<section anchor="unprotected-data" title="Unprotected Data">

<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 AD_1, ID_CRED_R, AD_2, and ERR_MSG. Using the same AD_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 AD_1 and ERR_MSG.</t>

</section>
<section anchor="denial-of-service" title="Denial-of-Service">

<t>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 <xref target="I-D.ietf-core-echo-request-tag"/> that forces the initiator to demonstrate reachability at its apparent network address.</t>

</section>
<section anchor="implementation-considerations" title="Implementation Considerations">

<t>The availability of a secure pseudorandom number generator and truly random seeds are 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. As each pseudorandom number must only be used once, an implementation need to get a new truly random seed after reboot, or continuously store state in nonvolatile memory, see (<xref target="RFC8613"/>, Appendix B.1.1) for issues and solution approaches for writing to nonvolatile memory. If ECDSA is supported, “deterministic ECDSA” as specified in <xref target="RFC6979"/> is RECOMMENDED.</t>

<t>The referenced processing instructions in <xref target="SP-800-56A"/> must be complied with, including deleting the intermediate computed values along with any ephemeral ECDH secrets after the key derivation is completed. The ECDH shared secret, keys, and IVs MUST be secret. Implementations should provide countermeasures to side-channel attacks such as timing attacks. Depending on the selected curve, the parties should perform various validations of each other’s public keys, see e.g. Section 5 of <xref target="SP-800-56A"/>.</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.</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"/>). 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>The Responder MUST finish the verification step of message_3 before passing AD_3 to the application.</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>

</section>
<section anchor="other-documents-referencing-edhoc" title="Other Documents Referencing EDHOC">

<t>EDHOC has been analyzed in several other documents. A formal verification of EDHOC was done in <xref target="SSR18"/>, an analysis of EDHOC for certificate enrollment was done in <xref target="Kron18"/>, the use of EDHOC in LoRaWAN is analyzed in <xref target="LoRa1"/> and <xref target="LoRa2"/>, the use of EDHOC in IoT bootstrapping is analyzed in <xref target="Perez18"/>, and the use of EDHOC in 6TiSCH is described in <xref target="I-D.ietf-6tisch-dtsecurity-zerotouch-join"/>.</t>

</section>
</section>
<section anchor="iana" title="IANA Considerations">

<section anchor="edhoc-cipher-suites-registry" title="EDHOC Cipher Suites Registry">

<t>IANA has created a new registry titled “EDHOC Cipher Suites” under the new heading “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>

<figure><artwork><![CDATA[
Value: -24
Algorithms: N/A
Desc: Reserved for Private Use
Reference: [[this document]]
]]></artwork></figure>

<figure><artwork><![CDATA[
Value: -23
Algorithms: N/A
Desc: Reserved for Private Use
Reference: [[this document]]
]]></artwork></figure>

<figure><artwork><![CDATA[
Value: 0
Array: 10, 5, 4, -8, 6, 10, 5
Desc: AES-CCM-16-64-128, SHA-256, X25519, EdDSA, Ed25519,
      AES-CCM-16-64-128, SHA-256
Reference: [[this document]]
]]></artwork></figure>

<figure><artwork><![CDATA[
Value: 1
Array: 30, 5, 4, -8, 6, 10, 5
Desc: AES-CCM-16-128-128, SHA-256, X25519, EdDSA, Ed25519,
      AES-CCM-16-64-128, SHA-256
Reference: [[this document]]
]]></artwork></figure>

<figure><artwork><![CDATA[
Value: 2
Array: 10, 5, 1, -7, 1, 10, 5
Desc: AES-CCM-16-64-128, SHA-256, P-256, ES256, P-256,
      AES-CCM-16-64-128, SHA-256
Reference: [[this document]]
]]></artwork></figure>

<figure><artwork><![CDATA[
Value: 3
Array: 30, 5, 1, -7, 1, 10, 5
Desc: AES-CCM-16-128-128, SHA-256, P-256, ES256, P-256,
      AES-CCM-16-64-128, SHA-256
Reference: [[this document]]
]]></artwork></figure>

</section>
<section anchor="method-types" title="EDHOC Method Type Registry">

<t>IANA has created a new registry titled “EDHOC Method Type” under the new heading “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:</t>

<figure title="Method Types" anchor="fig-method-types"><artwork align="center"><![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="the-well-known-uri-registry" title="The Well-Known URI Registry">

<t>IANA has added the well-known URI ‘edhoc’ to the Well-Known URIs registry.</t>

<t><list style="symbols">
  <t>URI suffix: edhoc</t>
  <t>Change controller: IETF</t>
  <t>Specification document(s): [[this document]]</t>
  <t>Related information: None</t>
</list></t>

</section>
<section anchor="media-types-registry" title="Media Types Registry">

<t>IANA has added the media type ‘application/edhoc’ to the Media Types registry.</t>

<t><list style="symbols">
  <t>Type name: application</t>
  <t>Subtype name: edhoc</t>
  <t>Required parameters: N/A</t>
  <t>Optional parameters: N/A</t>
  <t>Encoding considerations: binary</t>
  <t>Security considerations: See Section 7 of this document.</t>
  <t>Interoperability considerations: N/A</t>
  <t>Published specification: [[this document]] (this document)</t>
  <t>Applications that use this media type: To be identified</t>
  <t>Fragment identifier considerations: N/A</t>
  <t>Additional information:  <list style="symbols">
      <t>Magic number(s): N/A</t>
      <t>File extension(s): N/A</t>
      <t>Macintosh file type code(s): N/A</t>
    </list></t>
  <t>Person &amp; email address to contact for further information: See “Authors’ Addresses” section.</t>
  <t>Intended usage: COMMON</t>
  <t>Restrictions on usage: N/A</t>
  <t>Author: See “Authors’ Addresses” section.</t>
  <t>Change Controller: IESG</t>
</list></t>

</section>
<section anchor="coap-content-formats-registry" title="CoAP Content-Formats Registry">

<t>IANA has added the media type ‘application/edhoc’ to the CoAP Content-Formats registry.</t>

<t><list style="symbols">
  <t>Media Type: application/edhoc</t>
  <t>Encoding:</t>
  <t>ID: TBD42</t>
  <t>Reference: [[this document]]</t>
</list></t>

</section>
<section anchor="expert-review-instructions" title="Expert Review Instructions">

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

<t><list style="symbols">
  <t>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’s 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.</t>
  <t>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.</t>
  <t>Specifications are recommended. When specifications are not provided, the description provided needs to have sufficient information to verify the points above.</t>
</list></t>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>

&I-D.ietf-cose-x509;
&I-D.ietf-core-echo-request-tag;
&I-D.ietf-lake-reqs;
&RFC2119;
&RFC5116;
&RFC5869;
&RFC6090;
&RFC6979;
&RFC7252;
&RFC7748;
&RFC7049;
&RFC7959;
&RFC8152;
&RFC8174;
&RFC8376;
&RFC8610;
&RFC8613;
&RFC8742;


    </references>

    <references title='Informative References'>

<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></organization>
    </author>
    <author initials="L." surname="Chen">
      <organization></organization>
    </author>
    <author initials="A." surname="Roginsky">
      <organization></organization>
    </author>
    <author initials="A." surname="Vassilev">
      <organization></organization>
    </author>
    <author initials="R." surname="Davis">
      <organization></organization>
    </author>
    <date year="2018" month="April"/>
  </front>
  <seriesInfo name="NIST" value="Special Publication 800-56A Revision 3"/>
</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></organization>
    </author>
    <date year="2003" month="June"/>
  </front>
</reference>
&I-D.ietf-6tisch-dtsecurity-zerotouch-join;
&I-D.ietf-ace-oauth-authz;
&I-D.ietf-core-resource-directory;
&I-D.ietf-lwig-security-protocol-comparison;
&I-D.ietf-tls-dtls13;
&I-D.selander-ace-ake-authz;
&RFC7228;
&RFC7258;
&RFC7296;
&RFC8446;
<reference anchor="LoRa1" target="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6021899/pdf/sensors-18-01833.pdf">
  <front>
    <title>Enhancing LoRaWAN Security through a Lightweight and Authenticated Key Management Approach</title>
    <author initials="R." surname="Sanchez-Iborra">
      <organization></organization>
    </author>
    <author initials="J." surname="Sánchez-Gómez">
      <organization></organization>
    </author>
    <author initials="S." surname="Pérez">
      <organization></organization>
    </author>
    <author initials="P.J." surname="Fernández">
      <organization></organization>
    </author>
    <author initials="J." surname="Santa">
      <organization></organization>
    </author>
    <author initials="J.L." surname="Hernández-Ramos">
      <organization></organization>
    </author>
    <author initials="A.F." surname="Skarmeta">
      <organization></organization>
    </author>
    <date year="2018" month="June"/>
  </front>
</reference>
<reference anchor="LoRa2" target="https://ants.inf.um.es/~josesanta/doc/GIoTS1.pdf">
  <front>
    <title>Internet Access for LoRaWAN Devices Considering Security Issues</title>
    <author initials="R." surname="Sanchez-Iborra">
      <organization></organization>
    </author>
    <author initials="J." surname="Sánchez-Gómez">
      <organization></organization>
    </author>
    <author initials="S." surname="Pérez">
      <organization></organization>
    </author>
    <author initials="P.J." surname="Fernández">
      <organization></organization>
    </author>
    <author initials="J." surname="Santa">
      <organization></organization>
    </author>
    <author initials="J.L." surname="Hernández-Ramos">
      <organization></organization>
    </author>
    <author initials="A.F." surname="Skarmeta">
      <organization></organization>
    </author>
    <date year="2018" month="June"/>
  </front>
</reference>
<reference anchor="Kron18" target="https://www.nada.kth.se/~ann/exjobb/alexandros_krontiris.pdf">
  <front>
    <title>Evaluation of Certificate Enrollment over Application Layer Security</title>
    <author initials="A." surname="Krontiris">
      <organization></organization>
    </author>
    <date year="2018" month="May"/>
  </front>
</reference>
<reference anchor="SSR18" 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></organization>
    </author>
    <author initials="T." surname="Sahl Jørgensen">
      <organization></organization>
    </author>
    <author initials="T." surname="Grønbech Petersen">
      <organization></organization>
    </author>
    <author initials="C." surname="Schürmann">
      <organization></organization>
    </author>
    <date year="2018" month="November"/>
  </front>
</reference>
<reference anchor="Perez18" target="http://www.anastacia-h2020.eu/publications/Architecture_of_security_association_establishment_based_on_bootstrapping_technologies_for_enabling_critical_IoT_infrastructures.pdf">
  <front>
    <title>Architecture of security association establishment based on bootstrapping technologies for enabling critical IoT K</title>
    <author initials="S." surname="Pérez">
      <organization></organization>
    </author>
    <author initials="D." surname="Garcia-Carrillo">
      <organization></organization>
    </author>
    <author initials="R." surname="Marín-López">
      <organization></organization>
    </author>
    <author initials="J." surname="Hernández-Ramos">
      <organization></organization>
    </author>
    <author initials="R." surname="Marín-Pérez">
      <organization></organization>
    </author>
    <author initials="A." surname="Skarmeta">
      <organization></organization>
    </author>
    <date year="2018" month="October"/>
  </front>
</reference>
<reference anchor="CborMe" target="http://cbor.me/">
  <front>
    <title>CBOR Playground</title>
    <author initials="C." surname="Bormann">
      <organization></organization>
    </author>
    <date year="2018" month="May"/>
  </front>
</reference>


    </references>


<section anchor="CBORandCOSE" title="Use of CBOR, CDDL and COSE in EDHOC">

<t>This Appendix is intended to simplify for implementors not familiar with CBOR <xref target="RFC7049"/>, CDDL <xref target="RFC8610"/>, COSE <xref target="RFC8152"/>, and HKDF <xref target="RFC5869"/>.</t>

<section anchor="CBOR" title="CBOR and CDDL">

<t>The Concise Binary Object Representation (CBOR) <xref target="RFC7049"/> 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"/> provides a way to express structures for protocol messages and APIs that use CBOR. <xref target="RFC8610"/> 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 (e.g. null), 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"/> of data items. Some examples are given below. For a complete specification and more examples, see <xref target="RFC7049"/> and <xref target="RFC8610"/>. We recommend implementors to get used to CBOR by using the CBOR playground <xref target="CborMe"/>.</t>

<figure><artwork align="center"><![CDATA[
Diagnostic          Encoded              Type
------------------------------------------------------------------
1                   0x01                 unsigned integer    
24                  0x1818               unsigned integer
-24                 0x37                 negative integer
-25                 0x3818               negative integer 
null                0xf6                 simple value 
h'12cd'             0x4212cd             byte string
'12cd'              0x4431326364         byte string
"12cd"              0x6431326364         text string
{ 4 : h'cd' }       0xa10441cd           map                 
<< 1, 2, null >>    0x430102f6           byte string
[ 1, 2, null ]      0x830102f6           array      
( 1, 2, null )      0x0102f6             sequence
1, 2, null          0x0102f6             sequence
------------------------------------------------------------------
]]></artwork></figure>

</section>
<section anchor="COSE" title="COSE">

<t>CBOR Object Signing and Encryption (COSE) <xref target="RFC8152"/> 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.</t>

</section>
</section>
<section anchor="vectors" title="Test Vectors">

<t>This appendix provides detailed test vectors to ease implementation and ensure interoperability. In addition to hexadecimal, all CBOR data items and sequences are given in CBOR diagnostic notation. The test vectors use the default mapping to CoAP where the Initiator acts as CoAP client (this means that corr = 1).</t>

<t>A more extensive test vector suite covering more combinations of authentication method used between Initiator and Responder and related code to generate them can be found at https://github.com/EricssonResearch/EDHOC/tree/master/Test%20Vectors .</t>

<section anchor="test-vectors-for-edhoc-authenticated-with-signature-keys-x5t" title="Test Vectors for EDHOC Authenticated with Signature Keys (x5t)">

<t>EDHOC with signature authentication and X.509 certificates is used. In this test vector, the hash value ‘x5t’ is used to identify the certificate.</t>

<figure><artwork><![CDATA[
method (Signature Authentication)
0
]]></artwork></figure>

<t>CoAP is used as transport and the Initiator acts as CoAP client:</t>

<figure><artwork><![CDATA[
corr (the Initiator can correlate message_1 and message_2)
1
]]></artwork></figure>

<t>From there, METHOD_CORR has the following value:</t>

<figure><artwork><![CDATA[
METHOD_CORR (4 * method + corr) (int)
1
]]></artwork></figure>

<t>No unprotected opaque auxiliary data is sent in the message exchanges.</t>

<t>The list of supported cipher suites of the Initiator in order of preference is the following:</t>

<figure><artwork><![CDATA[
Supported Cipher Suites (4 bytes)
00 01 02 03
]]></artwork></figure>

<t>The cipher suite selected by the Initiator is the most preferred:</t>

<figure><artwork><![CDATA[
Selected Cipher Suite (int)
0
]]></artwork></figure>

<t>The mandatory-to-implement cipher suite 0 is supported by both the Initiator and the Responder, see <xref target="cipher-suites"/>.</t>

<section anchor="message1" title="Message_1">

<figure><artwork><![CDATA[
X (Initiator's ephemeral private key) (32 bytes)
8f 78 1a 09 53 72 f8 5b 6d 9f 61 09 ae 42 26 11 73 4d 7d bf a0 06 9a 2d 
f2 93 5b b2 e0 53 bf 35
]]></artwork></figure>

<figure><artwork><![CDATA[
G_X (Initiator's ephemeral public key) (32 bytes)
89 8f f7 9a 02 06 7a 16 ea 1e cc b9 0f a5 22 46 f5 aa 4d d6 ec 07 6b ba 
02 59 d9 04 b7 ec 8b 0c
]]></artwork></figure>

<t>The Initiator chooses a connection identifier C_I:</t>

<figure><artwork><![CDATA[
Connection identifier chosen by Initiator (0 bytes)

]]></artwork></figure>

<t>Since no unprotected opaque auxiliary data is sent in the message exchanges:</t>

<figure><artwork><![CDATA[
AD_1 (0 bytes)
]]></artwork></figure>

<t>Since the list of supported cipher suites needs to contain the selected cipher suite, the initiator truncates the list of supported cipher suites to one cipher suite only, 00.</t>

<t>Because one single selected cipher suite is conveyed, it is encoded as an int instead of an array:</t>

<figure><artwork><![CDATA[
SUITES_I (int)
0
]]></artwork></figure>

<t>With SUITES_I = 0, message_1 is constructed, as the CBOR Sequence of the CBOR data items above.</t>

<figure><artwork><![CDATA[
message_1 =
(
  1,
  0,
  h'898ff79a02067a16ea1eccb90fa52246f5aa4dd6ec076bba0259d904b7ec8b0c',
  h''
)
]]></artwork></figure>

<figure><artwork><![CDATA[
message_1 (CBOR Sequence) (37 bytes)
01 00 58 20 89 8f f7 9a 02 06 7a 16 ea 1e cc b9 0f a5 22 46 f5 aa 4d d6 
ec 07 6b ba 02 59 d9 04 b7 ec 8b 0c 40 
]]></artwork></figure>

</section>
<section anchor="message2" title="Message_2">

<t>Since METHOD_CORR mod 4 equals 1, C_I is omitted from data_2.</t>

<figure><artwork><![CDATA[
Y (Responder's ephemeral private key) (32 bytes)
fd 8c d8 77 c9 ea 38 6e 6a f3 4f f7 e6 06 c4 b6 4c a8 31 c8 ba 33 13 4f 
d4 cd 71 67 ca ba ec da
]]></artwork></figure>

<figure><artwork><![CDATA[
G_Y (Responder's ephemeral public key) (32 bytes)
71 a3 d5 99 c2 1d a1 89 02 a1 ae a8 10 b2 b6 38 2c cd 8d 5f 9b f0 19 52 
81 75 4c 5e bc af 30 1e 
]]></artwork></figure>

<t>From G_X and Y or from G_Y and X the ECDH shared secret is computed:</t>

<figure><artwork><![CDATA[
G_XY (ECDH shared secret) (32 bytes)
2b b7 fa 6e 13 5b c3 35 d0 22 d6 34 cb fb 14 b3 f5 82 f3 e2 e3 af b2 b3 
15 04 91 49 5c 61 78 2b 
]]></artwork></figure>

<t>The key and nonce for calculating the ciphertext are calculated as follows, as specified in <xref target="key-der"/>.</t>

<t>HKDF SHA-256 is the HKDF used (as defined by cipher suite 0).</t>

<t>PRK_2e = HMAC-SHA-256(salt, G_XY)</t>

<t>Salt is the empty byte string.</t>

<figure><artwork><![CDATA[
salt (0 bytes)
]]></artwork></figure>

<t>From there, PRK_2e is computed:</t>

<figure><artwork><![CDATA[
PRK_2e (32 bytes)
ec 62 92 a0 67 f1 37 fc 7f 59 62 9d 22 6f bf c4 e0 68 89 49 f6 62 a9 7f 
d8 2f be b7 99 71 39 4a
]]></artwork></figure>

<figure><artwork><![CDATA[
SK_R (Responders's private authentication key) (32 bytes)
df 69 27 4d 71 32 96 e2 46 30 63 65 37 2b 46 83 ce d5 38 1b fc ad cd 44 
0a 24 c3 91 d2 fe db 94
]]></artwork></figure>

<t>Since neither the Initiator nor the Responder authenticates with a static Diffie-Hellman key, PRK_3e2m = PRK_2e</t>

<figure><artwork><![CDATA[
PRK_3e2m (32 bytes)
ec 62 92 a0 67 f1 37 fc 7f 59 62 9d 22 6f bf c4 e0 68 89 49 f6 62 a9 7f 
d8 2f be b7 99 71 39 4a 
]]></artwork></figure>

<t>The Responder chooses a connection identifier C_R.</t>

<figure><artwork><![CDATA[
Connection identifier chosen by Responder (1 byte)
2b
]]></artwork></figure>

<t>Note that since C_R is a byte string of length one, it is encoded as the corresponding integer subtracted by 24 (see bstr_identifier in <xref target="bstr_id"/>). Thus 0x2b = 43, 43 - 24 = 19, and 19 in CBOR encoding is equal to 0x13.</t>

<figure><artwork><![CDATA[
C_R (1 byte)
13
]]></artwork></figure>

<t>Data_2 is constructed, as the CBOR Sequence of G_Y and C_R.</t>

<figure><artwork><![CDATA[
data_2 =
(
  h'71a3d599c21da18902a1aea810b2b6382ccd8d5f9bf0195281754c5ebcaf301e',
  h'13'
)
]]></artwork></figure>

<figure><artwork><![CDATA[
data_2 (CBOR Sequence) (35 bytes)
58 20 71 a3 d5 99 c2 1d a1 89 02 a1 ae a8 10 b2 b6 38 2c cd 8d 5f 9b f0 
19 52 81 75 4c 5e bc af 30 1e 13
]]></artwork></figure>

<t>From data_2 and message_1, compute the input to the transcript hash TH_2 = H( message_1, data_2 ), as a CBOR Sequence of these 2 data items.</t>

<figure><artwork><![CDATA[
Input to calculate TH_2 (CBOR Sequence) (72 bytes)
01 00 58 20 89 8f f7 9a 02 06 7a 16 ea 1e cc b9 0f a5 22 46 f5 aa 4d d6 
ec 07 6b ba 02 59 d9 04 b7 ec 8b 0c 40 58 20 71 a3 d5 99 c2 1d a1 89 02 
a1 ae a8 10 b2 b6 38 2c cd 8d 5f 9b f0 19 52 81 75 4c 5e bc af 30 1e 13 
]]></artwork></figure>

<t>And from there, compute the transcript hash TH_2 = SHA-256( message_1, data_2 )</t>

<figure><artwork><![CDATA[
TH_2 (32 bytes)
b0 dc 6c 1b a0 ba e6 e2 88 86 10 fa 0b 27 bf c5 2e 31 1a 47 b9 ca fb 60 
9d e4 f6 a1 76 0d 6c f7
]]></artwork></figure>

<t>The Responder’s subject name is the empty string:</t>

<figure><artwork><![CDATA[
Responders's subject name (text string)
""
]]></artwork></figure>

<t>CRED_R is the certificate (X509_R) encoded as a CBOR byte string:</t>

<figure><artwork><![CDATA[
X509_R (110 bytes)
47 62 4d c9 cd c6 82 4b 2a 4c 52 e9 5e c9 d6 b0 53 4b 71 c2 b4 9e 4b f9
03 15 00 ce e6 86 99 79 c2 97 bb 5a 8b 38 1e 98 db 71 41 08 41 5e 5c 50
db 78 97 4c 27 15 79 b0 16 33 a3 ef 62 71 be 5c 22 5e b2 8f 9c f6 18 0b
5a 6a f3 1e 80 20 9a 08 5c fb f9 5f 3f dc f9 b1 8b 69 3d 6c 0e 0d 0f fb 
8e 3f 9a 32 a5 08 59 ec d0 bf cf f2 c2 18
]]></artwork></figure>

<figure><artwork><![CDATA[
CRED_R (112 bytes)
58 6e 47 62 4d c9 cd c6 82 4b 2a 4c 52 e9 5e c9 d6 b0 53 4b 71 c2 b4 9e 
4b f9 03 15 00 ce e6 86 99 79 c2 97 bb 5a 8b 38 1e 98 db 71 41 08 41 5e 
5c 50 db 78 97 4c 27 15 79 b0 16 33 a3 ef 62 71 be 5c 22 5e b2 8f 9c f6 
18 0b 5a 6a f3 1e 80 20 9a 08 5c fb f9 5f 3f dc f9 b1 8b 69 3d 6c 0e 0d 
0f fb 8e 3f 9a 32 a5 08 59 ec d0 bf cf f2 c2 18
]]></artwork></figure>

<t>And because certificates are identified by a hash value with the ‘x5t’ parameter, ID_CRED_R is the following:</t>

<t>ID_CRED_R = { 34 : COSE_CertHash }. In this example, the hash algorithm used is SHA-2 256-bit with hash truncated to 64-bits (value -15). The hash value is calculated over the certificate X509_R.</t>

<figure><artwork><![CDATA[
ID_CRED_R =
{
  34: [-15, h'FC79990F2431A3F5']
}
]]></artwork></figure>

<figure><artwork><![CDATA[
ID_CRED_R (14 bytes)
a1 18 22 82 2e 48 fc 79 99 0f 24 31 a3 f5 
]]></artwork></figure>

<t>Since no unprotected opaque auxiliary data is sent in the message exchanges:</t>

<figure><artwork><![CDATA[
AD_2  (0 bytes)
]]></artwork></figure>

<t>The Plaintext is defined as the empty string:</t>

<figure><artwork><![CDATA[
P_2m (0 bytes)
]]></artwork></figure>

<t>The Enc_structure is defined as follows: [ “Encrypt0”, « ID_CRED_R », « TH_2, CRED_R » ]</t>

<figure><artwork><![CDATA[
A_2m =
[
  "Encrypt0", 
  h'A11822822E48FC79990F2431A3F5', 
  h'5820B0DC6C1BA0BAE6E2888610FA0B27BFC52E311A47B9CAFB609DE4F6A1760D6CF
  7586E47624DC9CDC6824B2A4C52E95EC9D6B0534B71C2B49E4BF9031500CEE6869979
  C297BB5A8B381E98DB714108415E5C50DB78974C271579B01633A3EF6271BE5C225EB
  28F9CF6180B5A6AF31E80209A085CFBF95F3FDCF9B18B693D6C0E0D0FFB8E3F9A32A5
  0859ECD0BFCFF2C218'
  ]
]]></artwork></figure>

<t>Which encodes to the following byte string to be used as Additional Authenticated Data:</t>

<figure><artwork><![CDATA[
A_2m (CBOR-encoded) (173 bytes)
83 68 45 6e 63 72 79 70 74 30 4e a1 18 22 82 2e 48 fc 79 99 0f 24 31 a3 
f5 58 92 58 20 b0 dc 6c 1b a0 ba e6 e2 88 86 10 fa 0b 27 bf c5 2e 31 1a 
47 b9 ca fb 60 9d e4 f6 a1 76 0d 6c f7 58 6e 47 62 4d c9 cd c6 82 4b 2a 
4c 52 e9 5e c9 d6 b0 53 4b 71 c2 b4 9e 4b f9 03 15 00 ce e6 86 99 79 c2 
97 bb 5a 8b 38 1e 98 db 71 41 08 41 5e 5c 50 db 78 97 4c 27 15 79 b0 16 
33 a3 ef 62 71 be 5c 22 5e b2 8f 9c f6 18 0b 5a 6a f3 1e 80 20 9a 08 5c 
fb f9 5f 3f dc f9 b1 8b 69 3d 6c 0e 0d 0f fb 8e 3f 9a 32 a5 08 59 ec d0 
bf cf f2 c2 18 
]]></artwork></figure>

<t>info for K_2m is defined as follows:</t>

<figure><artwork><![CDATA[
info for K_2m =
[
  10,
  h'B0DC6C1BA0BAE6E2888610FA0B27BFC52E311A47B9CAFB609DE4F6A1760D6CF7', 
  "K_2m",
  16
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for K_2m (CBOR-encoded) (42 bytes)
84 0a 58 20 b0 dc 6c 1b a0 ba e6 e2 88 86 10 fa 0b 27 bf c5 2e 31 1a 47 
b9 ca fb 60 9d e4 f6 a1 76 0d 6c f7 64 4b 5f 32 6d 10 
]]></artwork></figure>

<t>From these parameters, K_2m is computed. Key K_2m is the output of HKDF-Expand(PRK_3e2m, info, L), where L is the length of K_2m, so 16 bytes.</t>

<figure><artwork><![CDATA[
K_2m (16 bytes)
b7 48 6a 94 a3 6c f6 9e 67 3f c4 57 55 ee 6b 95
]]></artwork></figure>

<t>info for IV_2m is defined as follows:</t>

<figure><artwork><![CDATA[
info for IV_2m =
[
  10,
  h'B0DC6C1BA0BAE6E2888610FA0B27BFC52E311A47B9CAFB609DE4F6A1760D6CF7', 
  "IV_2m",
  13
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for IV_2m (CBOR-encoded) (43 bytes)
84 0a 58 20 b0 dc 6c 1b a0 ba e6 e2 88 86 10 fa 0b 27 bf c5 2e 31 1a 47 
b9 ca fb 60 9d e4 f6 a1 76 0d 6c f7 65 49 56 5f 32 6d 0d 
]]></artwork></figure>

<t>From these parameters, IV_2m is computed. IV_2m is the output of HKDF-Expand(PRK_3e2m, info, L), where L is the length of IV_2m, so 13 bytes.</t>

<figure><artwork><![CDATA[
IV_2m (13 bytes)
c5 b7 17 0e 65 d5 4f 1a e0 5d 10 af 56 
]]></artwork></figure>

<t>Finally, COSE_Encrypt0 is computed from the parameters above.</t>

<t><list style="symbols">
  <t>protected header = CBOR-encoded ID_CRED_R</t>
  <t>external_aad = A_2m</t>
  <t>empty plaintext = P_2m</t>
</list></t>

<figure><artwork><![CDATA[
MAC_2 (8 bytes)
cf 99 99 ae 75 9e c0 d8 
]]></artwork></figure>

<t>To compute the Signature_or_MAC_2, the key is the private authentication key of the Responder and 
the message M_2 to be signed = [ “Signature1”, « ID_CRED_R », « TH_2, CRED_R, ? AD_2 », MAC_2 ]</t>

<figure><artwork><![CDATA[
M_2 = 
[
  "Signature1",
  h'A11822822E48FC79990F2431A3F5',
  h'5820B0DC6C1BA0BAE6E2888610FA0B27BFC52E311A47B9CAFB609DE4F6A1760D6CF
  7586E47624DC9CDC6824B2A4C52E95EC9D6B0534B71C2B49E4BF9031500CEE6869979
  C297BB5A8B381E98DB714108415E5C50DB78974C271579B01633A3EF6271BE5C225EB
  28F9CF6180B5A6AF31E80209A085CFBF95F3FDCF9B18B693D6C0E0D0FFB8E3F9A32A5
  0859ECD0BFCFF2C218', 
  h'CF9999AE759EC0D8'
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
M_2 (184 bytes)
84 6a 53 69 67 6e 61 74 75 72 65 31 4e a1 18 22 82 2e 48 fc 79 99 0f 24 
31 a3 f5 58 92 58 20 b0 dc 6c 1b a0 ba e6 e2 88 86 10 fa 0b 27 bf c5 2e 
31 1a 47 b9 ca fb 60 9d e4 f6 a1 76 0d 6c f7 58 6e 47 62 4d c9 cd c6 82 
4b 2a 4c 52 e9 5e c9 d6 b0 53 4b 71 c2 b4 9e 4b f9 03 15 00 ce e6 86 99 
79 c2 97 bb 5a 8b 38 1e 98 db 71 41 08 41 5e 5c 50 db 78 97 4c 27 15 79 
b0 16 33 a3 ef 62 71 be 5c 22 5e b2 8f 9c f6 18 0b 5a 6a f3 1e 80 20 9a 
08 5c fb f9 5f 3f dc f9 b1 8b 69 3d 6c 0e 0d 0f fb 8e 3f 9a 32 a5 08 59 
ec d0 bf cf f2 c2 18 48 cf 99 99 ae 75 9e c0 d8
]]></artwork></figure>

<t>From there Signature_or_MAC_2 is a signature (since method = 0):</t>

<figure><artwork><![CDATA[
Signature_or_MAC_2 (64 bytes)
45 47 81 ec ef eb b4 83 e6 90 83 9d 57 83 8d fe 24 a8 cf 3f 66 42 8a a0 
16 20 4a 22 61 84 4a f8 4f 98 b8 c6 83 4f 38 7f dd 60 6a 29 41 3a dd e3 
a2 07 74 02 13 74 01 19 6f 6a 50 24 06 6f ac 0e 
]]></artwork></figure>

<t>CIPHERTEXT_2 is the ciphertext resulting from XOR encrypting a plaintext constructed from the following parameters and the key K_2e.</t>

<t><list style="symbols">
  <t>plaintext = CBOR Sequence of the items ID_CRED_R and Singature_or_MAC_2, in this order.</t>
</list></t>

<t>The plaintext is the following:</t>

<figure><artwork><![CDATA[
P_2e (CBOR Sequence) (80 bytes)
a1 18 22 82 2e 48 fc 79 99 0f 24 31 a3 f5 58 40 45 47 81 ec ef eb b4 83 
e6 90 83 9d 57 83 8d fe 24 a8 cf 3f 66 42 8a a0 16 20 4a 22 61 84 4a f8 
4f 98 b8 c6 83 4f 38 7f dd 60 6a 29 41 3a dd e3 a2 07 74 02 13 74 01 19 
6f 6a 50 24 06 6f ac 0e 
]]></artwork></figure>

<t>K_2e = HKDF-Expand( PRK, info, length ), where length is the length of the plaintext, so 80.</t>

<figure><artwork><![CDATA[
info for K_2e =
[
  10,
  h'B0DC6C1BA0BAE6E2888610FA0B27BFC52E311A47B9CAFB609DE4F6A1760D6CF7',
  "K_2e",
  80
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for K_2e (CBOR-encoded) (43 bytes)
84 0a 58 20 b0 dc 6c 1b a0 ba e6 e2 88 86 10 fa 0b 27 bf c5 2e 31 1a 47 
b9 ca fb 60 9d e4 f6 a1 76 0d 6c f7 64 4b 5f 32 65 18 50
]]></artwork></figure>

<t>From there, K_2e is computed:</t>

<figure><artwork><![CDATA[
K_2e (80 bytes)
38 cd 1a 83 89 6d 43 af 3d e8 39 35 27 42 0d ac 7d 7a 76 96 7e 85 74 58 
26 bb 39 e1 76 21 8d 7e 5f e7 97 60 14 c9 ed ba c0 58 ee 18 cd 57 71 80 
a4 4d de 0b 83 00 fe 8e 09 66 9a 34 d6 3e 3a e6 10 12 26 ab f8 5c eb 28 
05 dc 00 13 d1 78 2a 20
]]></artwork></figure>

<t>Using the parameters above, the ciphertext CIPHERTEXT_2 can be computed:</t>

<figure><artwork><![CDATA[
CIPHERTEXT_2 (80 bytes)
99 d5 38 01 a7 25 bf d6 a4 e7 1d 04 84 b7 55 ec 38 3d f7 7a 91 6e c0 db 
c0 2b ba 7c 21 a2 00 80 7b 4f 58 5f 72 8b 67 1a d6 78 a4 3a ac d3 3b 78 
eb d5 66 cd 00 4f c6 f1 d4 06 f0 1d 97 04 e7 05 b2 15 52 a9 eb 28 ea 31 
6a b6 50 37 d7 17 86 2e
]]></artwork></figure>

<t>message_2 is the CBOR Sequence of data_2 and CIPHERTEXT_2, in this order:</t>

<figure><artwork><![CDATA[
message_2 =
(
 data_2,
 h'99d53801a725bfd6a4e71d0484b755ec383df77a916ec0dbc02bba7c21a200807b4f
585f728b671ad678a43aacd33b78ebd566cd004fc6f1d406f01d9704e705b21552a9eb
28ea316ab65037d717862e'
) 
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
message_2 (CBOR Sequence) (117 bytes)
58 20 71 a3 d5 99 c2 1d a1 89 02 a1 ae a8 10 b2 b6 38 2c cd 8d 5f 9b f0 
19 52 81 75 4c 5e bc af 30 1e 13 58 50 99 d5 38 01 a7 25 bf d6 a4 e7 1d 
04 84 b7 55 ec 38 3d f7 7a 91 6e c0 db c0 2b ba 7c 21 a2 00 80 7b 4f 58 
5f 72 8b 67 1a d6 78 a4 3a ac d3 3b 78 eb d5 66 cd 00 4f c6 f1 d4 06 f0 
1d 97 04 e7 05 b2 15 52 a9 eb 28 ea 31 6a b6 50 37 d7 17 86 2e
]]></artwork></figure>

</section>
<section anchor="message3" title="Message_3">

<t>Since corr equals 1, C_R is not omitted from data_3.</t>

<figure><artwork><![CDATA[
SK_I (Initiator's private authentication key) (32 bytes)
2f fc e7 a0 b2 b8 25 d3 97 d0 cb 54 f7 46 e3 da 3f 27 59 6e e0 6b 53 71 
48 1d c0 e0 12 bc 34 d7
]]></artwork></figure>

<t>HKDF SHA-256 is the HKDF used (as defined by cipher suite 0).</t>

<t>PRK_4x3m = HMAC-SHA-256 (PRK_3e2m, G_IY)</t>

<figure><artwork><![CDATA[
PRK_4x3m (32 bytes)
ec 62 92 a0 67 f1 37 fc 7f 59 62 9d 22 6f bf c4 e0 68 89 49 f6 62 a9 7f 
d8 2f be b7 99 71 39 4a 
]]></artwork></figure>

<t>data 3 is equal to C_R.</t>

<figure><artwork><![CDATA[
data_3 (CBOR Sequence) (1 bytes)
13 
]]></artwork></figure>

<t>From data_3, CIPHERTEXT_2, and TH_2, compute the input to the transcript hash TH_3 = H(TH_2 , CIPHERTEXT_2, data_3), as a CBOR Sequence of these 3 data items.</t>

<figure><artwork><![CDATA[
Input to calculate TH_3 (CBOR Sequence) (117 bytes)
58 20 b0 dc 6c 1b a0 ba e6 e2 88 86 10 fa 0b 27 bf c5 2e 31 1a 47 b9 ca 
fb 60 9d e4 f6 a1 76 0d 6c f7 58 50 99 d5 38 01 a7 25 bf d6 a4 e7 1d 04 
84 b7 55 ec 38 3d f7 7a 91 6e c0 db c0 2b ba 7c 21 a2 00 80 7b 4f 58 5f 
72 8b 67 1a d6 78 a4 3a ac d3 3b 78 eb d5 66 cd 00 4f c6 f1 d4 06 f0 1d 
97 04 e7 05 b2 15 52 a9 eb 28 ea 31 6a b6 50 37 d7 17 86 2e 13 
]]></artwork></figure>

<t>And from there, compute the transcript hash TH_3 = SHA-256(TH_2 , CIPHERTEXT_2, data_3)</t>

<figure><artwork><![CDATA[
TH_3 (32 bytes)
a2 39 a6 27 ad a3 80 2d b8 da e5 1e c3 92 bf eb 92 6d 39 3e f6 ee e4 dd 
b3 2e 4a 27 ce 93 58 da 
]]></artwork></figure>

<t>The initiator’s subject name is the empty string:</t>

<figure><artwork><![CDATA[
Initiator's subject name (text string)
""
]]></artwork></figure>

<t>CRED_I is the certificate (X509_I) encoded as a CBOR byte string:</t>

<figure><artwork><![CDATA[
X509_I (101 bytes)
fa 34 b2 2a 9c a4 a1 e1 29 24 ea e1 d1 76 60 88 09 84 49 cb 84 8f fc 79 
5f 88 af c4 9c be 8a fd d1 ba 00 9f 21 67 5e 8f 6c 77 a4 a2 c3 01 95 60 
1f 6f 0a 08 52 97 8b d4 3d 28 20 7d 44 48 65 02 ff 7b dd a6 32 c7 88 37 
00 16 b8 96 5b db 20 74 bf f8 2e 5a 20 e0 9b ec 21 f8 40 6e 86 44 2b 87 
ec 3f f2 45 b7
]]></artwork></figure>

<figure><artwork><![CDATA[
CRED_I (103 bytes)
58 65 fa 34 b2 2a 9c a4 a1 e1 29 24 ea e1 d1 76 60 88 09 84 49 cb 84 8f 
fc 79 5f 88 af c4 9c be 8a fd d1 ba 00 9f 21 67 5e 8f 6c 77 a4 a2 c3 01 
95 60 1f 6f 0a 08 52 97 8b d4 3d 28 20 7d 44 48 65 02 ff 7b dd a6 32 c7 
88 37 00 16 b8 96 5b db 20 74 bf f8 2e 5a 20 e0 9b ec 21 f8 40 6e 86 44 
2b 87 ec 3f f2 45 b7 
]]></artwork></figure>

<t>And because certificates are identified by a hash value with the ‘x5t’ parameter, ID_CRED_I is the following:</t>

<t>ID_CRED_I = { 34 : COSE_CertHash }. In this example, the hash algorithm used is SHA-2 256-bit with hash truncated to 64-bits (value -15). The hash value is calculated over the certificate X509_I.</t>

<figure><artwork><![CDATA[
ID_CRED_I =
{
  34: [-15, h'FC79990F2431A3F5']
}
]]></artwork></figure>

<figure><artwork><![CDATA[
ID_CRED_I (14 bytes)
a1 18 22 82 2e 48 5b 78 69 88 43 9e bc f2
]]></artwork></figure>

<t>Since no opaque auxiliary data is exchanged:</t>

<figure><artwork><![CDATA[
AD_3 (0 bytes)
]]></artwork></figure>

<t>The Plaintext of the COSE_Encrypt is the empty string:</t>

<figure><artwork><![CDATA[
P_3m (0 bytes)
]]></artwork></figure>

<t>The external_aad is the CBOR Sequence od CRED_I and TH_3, in this order:</t>

<figure><artwork><![CDATA[
A_3m (CBOR-encoded) (164 bytes)
83 68 45 6e 63 72 79 70 74 30 4e a1 18 22 82 2e 48 5b 78 69 88 43 9e bc 
f2 58 89 58 20 a2 39 a6 27 ad a3 80 2d b8 da e5 1e c3 92 bf eb 92 6d 39 
3e f6 ee e4 dd b3 2e 4a 27 ce 93 58 da 58 65 fa 34 b2 2a 9c a4 a1 e1 29 
24 ea e1 d1 76 60 88 09 84 49 cb 84 8f fc 79 5f 88 af c4 9c be 8a fd d1 
ba 00 9f 21 67 5e 8f 6c 77 a4 a2 c3 01 95 60 1f 6f 0a 08 52 97 8b d4 3d 
28 20 7d 44 48 65 02 ff 7b dd a6 32 c7 88 37 00 16 b8 96 5b db 20 74 bf 
f8 2e 5a 20 e0 9b ec 21 f8 40 6e 86 44 2b 87 ec 3f f2 45 b7 
]]></artwork></figure>

<t>Info for K_3m is computed as follows:</t>

<figure><artwork><![CDATA[
info for K_3m =
[
  10,
  h'A239A627ADA3802DB8DAE51EC392BFEB926D393EF6EEE4DDB32E4A27CE9358DA',
  "K_3m",
  16
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for K_3m (CBOR-encoded) (42 bytes)
84 0a 58 20 a2 39 a6 27 ad a3 80 2d b8 da e5 1e c3 92 bf eb 92 6d 39 3e 
f6 ee e4 dd b3 2e 4a 27 ce 93 58 da 64 4b 5f 33 6d 10 
]]></artwork></figure>

<t>From these parameters, K_3m is computed. Key K_3m is the output of HKDF-Expand(PRK_4x3m, info, L), where L is the length of K_2m, so 16 bytes.</t>

<figure><artwork><![CDATA[
K_3m (16 bytes)
3d bb f0 d6 01 03 26 e8 27 3f c6 c6 c3 b0 de cd 
]]></artwork></figure>

<t>Nonce IV_3m is the output of HKDF-Expand(PRK_4x3m, info, L), where L = 13 bytes.</t>

<t>Info for IV_3m is defined as follows:</t>

<figure><artwork><![CDATA[
info for IV_3m =
[
  10,
  h'A239A627ADA3802DB8DAE51EC392BFEB926D393EF6EEE4DDB32E4A27CE9358DA',
  "IV_3m",
  13
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for IV_3m (CBOR-encoded) (43 bytes)
84 0a 58 20 a2 39 a6 27 ad a3 80 2d b8 da e5 1e c3 92 bf eb 92 6d 39 3e 
f6 ee e4 dd b3 2e 4a 27 ce 93 58 da 65 49 56 5f 33 6d 0d 
]]></artwork></figure>

<t>From these parameters, IV_3m is computed:</t>

<figure><artwork><![CDATA[
IV_3m (13 bytes)
10 b6 f4 41 4a 2c 91 3c cd a1 96 42 e3 
]]></artwork></figure>

<t>MAC_3 is the ciphertext of the COSE_Encrypt0:</t>

<figure><artwork><![CDATA[
MAC_3 (8 bytes)
5e ef b8 85 98 3c 22 d9
]]></artwork></figure>

<t>Since the method = 0, Signature_or_Mac_3 is a signature:</t>

<t><list style="symbols">
  <t>The message M_3 to be signed = [ “Signature1”, « ID_CRED_I », « TH_3, CRED_I », MAC_3 ]</t>
  <t>The signing key is the private authentication key of the Initiator.</t>
</list></t>

<figure><artwork><![CDATA[
M_3 =
[
  "Signature1", 
  h'A11822822E485B786988439EBCF2', 
  h'5820A239A627ADA3802DB8DAE51EC392BFEB926D393EF6EEE4DDB32E4A27CE9358D
  A5865FA34B22A9CA4A1E12924EAE1D1766088098449CB848FFC795F88AFC49CBE8AFD
  D1BA009F21675E8F6C77A4A2C30195601F6F0A0852978BD43D28207D44486502FF7BD
  DA632C788370016B8965BDB2074BFF82E5A20E09BEC21F8406E86442B87EC3FF245
  B7',
  h'5EEFB885983C22D9']
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
M_3 (175 bytes)
84 6a 53 69 67 6e 61 74 75 72 65 31 4e a1 18 22 82 2e 48 5b 78 69 88 43 
9e bc f2 58 89 58 20 a2 39 a6 27 ad a3 80 2d b8 da e5 1e c3 92 bf eb 92 
6d 39 3e f6 ee e4 dd b3 2e 4a 27 ce 93 58 da 58 65 fa 34 b2 2a 9c a4 a1 
e1 29 24 ea e1 d1 76 60 88 09 84 49 cb 84 8f fc 79 5f 88 af c4 9c be 8a 
fd d1 ba 00 9f 21 67 5e 8f 6c 77 a4 a2 c3 01 95 60 1f 6f 0a 08 52 97 8b 
d4 3d 28 20 7d 44 48 65 02 ff 7b dd a6 32 c7 88 37 00 16 b8 96 5b db 20 
74 bf f8 2e 5a 20 e0 9b ec 21 f8 40 6e 86 44 2b 87 ec 3f f2 45 b7 48 5e 
ef b8 85 98 3c 22 d9 
]]></artwork></figure>

<t>From there, the signature can be computed:</t>

<figure><artwork><![CDATA[
Signature_or_MAC_3 (64 bytes)
b3 31 76 33 fa eb c7 f4 24 9c f3 ab 95 96 fd ae 2b eb c8 e7 27 5d 39 9f 
42 00 04 f3 76 7b 88 d6 0f fe 37 dc f3 90 a0 00 d8 5a b0 ad b0 d7 24 e3 
a5 7c 4d fe 24 14 a4 1e 79 78 91 b9 55 35 89 06
]]></artwork></figure>

<t>Finally, the outer COSE_Encrypt0 is computed.</t>

<t>The Plaintext is the following CBOR Sequence: 
plaintext = ( ID_CRED_I , Signature_or_MAC_3 )</t>

<figure><artwork><![CDATA[
P_3ae (CBOR Sequence) (80 bytes)
a1 18 22 82 2e 48 5b 78 69 88 43 9e bc f2 58 40 b3 31 76 33 fa eb c7 f4 
24 9c f3 ab 95 96 fd ae 2b eb c8 e7 27 5d 39 9f 42 00 04 f3 76 7b 88 d6 
0f fe 37 dc f3 90 a0 00 d8 5a b0 ad b0 d7 24 e3 a5 7c 4d fe 24 14 a4 1e 
79 78 91 b9 55 35 89 06 
]]></artwork></figure>

<t>The Associated data A is the following:
Associated data A = [ “Encrypt0”, h’’, TH_3 ]</t>

<figure><artwork><![CDATA[
A_3ae (CBOR-encoded) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 a2 39 a6 27 ad a3 80 2d b8 da e5 
1e c3 92 bf eb 92 6d 39 3e f6 ee e4 dd b3 2e 4a 27 ce 93 58 da 
]]></artwork></figure>

<t>Key K_3ae is the output of HKDF-Expand(PRK_3e2m, info, L).</t>

<t>info is defined as follows:</t>

<figure><artwork><![CDATA[
info for K_3ae = 
[
  10,
  h'A239A627ADA3802DB8DAE51EC392BFEB926D393EF6EEE4DDB32E4A27CE9358DA',
  "K_3ae",
  16
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for K_3ae (CBOR-encoded) (43 bytes)
84 0a 58 20 a2 39 a6 27 ad a3 80 2d b8 da e5 1e c3 92 bf eb 92 6d 39 3e 
f6 ee e4 dd b3 2e 4a 27 ce 93 58 da 65 4b 5f 33 61 65 10 
]]></artwork></figure>

<t>L is the length of K_3ae, so 16 bytes.</t>

<t>From these parameters, K_3ae is computed:</t>

<figure><artwork><![CDATA[
K_3ae (16 bytes)
58 b5 2f 94 5b 30 9d 85 4c a7 36 cd 06 a9 62 95 
]]></artwork></figure>

<t>Nonce IV_3ae is the output of HKDF-Expand(PRK_3e2m, info, L).</t>

<t>info is defined as follows:</t>

<figure><artwork><![CDATA[
info for IV_3ae =
[
  10,
  h'A239A627ADA3802DB8DAE51EC392BFEB926D393EF6EEE4DDB32E4A27CE9358DA',
  "IV_3ae", 
  13
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for IV_3ae (CBOR-encoded) (44 bytes)
84 0a 58 20 a2 39 a6 27 ad a3 80 2d b8 da e5 1e c3 92 bf eb 92 6d 39 3e 
f6 ee e4 dd b3 2e 4a 27 ce 93 58 da 66 49 56 5f 33 61 65 0d 
]]></artwork></figure>

<t>L is the length of IV_3ae, so 13 bytes.</t>

<t>From these parameters, IV_3ae is computed:</t>

<figure><artwork><![CDATA[
IV_3ae (13 bytes)
cf a9 a5 85 58 10 d6 dc e9 74 3c 3b c3 
]]></artwork></figure>

<t>Using the parameters above, the ciphertext CIPHERTEXT_3 can be computed:</t>

<figure><artwork><![CDATA[
CIPHERTEXT_3 (88 bytes)
2d 88 ff 86 da 47 48 2c 0d fa 55 9a c8 24 a4 a7 83 d8 70 c9 db a4 78 05 
e8 aa fb ad 69 74 c4 96 46 58 65 03 fa 9b bf 3e 00 01 2c 03 7e af 56 e4 
5e 30 19 20 83 9b 81 3a 53 f6 d4 c5 57 48 0f 6c 79 7d 5b 76 f0 e4 62 f5 
f5 7a 3d b6 d2 b5 0c 32 31 9f 34 0f 4a c5 af 9a 
]]></artwork></figure>

<t>From the parameter above, message_3 is computed, as the CBOR Sequence of the following items: (C_R, CIPHERTEXT_3).</t>

<figure><artwork><![CDATA[
message_3 =
(
  h'13',
  h''
)
]]></artwork></figure>

<t>Which encodes to the following byte string:</t>

<figure><artwork><![CDATA[
message_3 (CBOR Sequence) (91 bytes)
13 58 58 2d 88 ff 86 da 47 48 2c 0d fa 55 9a c8 24 a4 a7 83 d8 70 c9 db 
a4 78 05 e8 aa fb ad 69 74 c4 96 46 58 65 03 fa 9b bf 3e 00 01 2c 03 7e 
af 56 e4 5e 30 19 20 83 9b 81 3a 53 f6 d4 c5 57 48 0f 6c 79 7d 5b 76 f0 
e4 62 f5 f5 7a 3d b6 d2 b5 0c 32 31 9f 34 0f 4a c5 af 9a 
]]></artwork></figure>

</section>
</section>
<section anchor="test-vectors-for-edhoc-authenticated-with-static-diffie-hellman-keys" title="Test Vectors for EDHOC Authenticated with Static Diffie-Hellman Keys">

<t>EDHOC with static Diffie-Hellman keys is used.</t>

<figure><artwork><![CDATA[
method (Static DH Based Authentication)
3
]]></artwork></figure>

<t>CoAP is used as transport and the Initiator acts as CoAP client:</t>

<figure><artwork><![CDATA[
corr (the Initiator can correlate message_1 and message_2)
1
]]></artwork></figure>

<t>From there, METHOD_CORR has the following value:</t>

<figure><artwork><![CDATA[
METHOD_CORR (4 * method + corr) (int)
13
]]></artwork></figure>

<t>No unprotected opaque auxiliary data is sent in the message exchanges.</t>

<t>The list of supported cipher suites of the Initiator in order of preference is the following:</t>

<figure><artwork><![CDATA[
Supported Cipher Suites (4 bytes)
00 01 02 03
]]></artwork></figure>

<t>The cipher suite selected by the Initiator is the most preferred:</t>

<figure><artwork><![CDATA[
Selected Cipher Suite (int)
0
]]></artwork></figure>

<t>The mandatory-to-implement cipher suite 0 is supported by both the Initiator and the Responder, see <xref target="cipher-suites"/>.</t>

<section anchor="dh-ss-m1" title="Message_1">

<figure><artwork><![CDATA[
X (Initiator's ephemeral private key) (32 bytes)
ae 11 a0 db 86 3c 02 27 e5 39 92 fe b8 f5 92 4c 50 d0 a7 ba 6e ea b4 ad 
1f f2 45 72 f4 f5 7c fa
]]></artwork></figure>

<figure><artwork><![CDATA[
G_X (Initiator's ephemeral public key) (32 bytes)
8d 3e f5 6d 1b 75 0a 43 51 d6 8a c2 50 a0 e8 83 79 0e fc 80 a5 38 a4 44 
ee 9e 2b 57 e2 44 1a 7c
]]></artwork></figure>

<t>The Initiator chooses a connection identifier C_I:</t>

<figure><artwork><![CDATA[
Connection identifier chosen by Initiator (1 bytes)
16
]]></artwork></figure>

<t>Note that since C_I is a byte strings of length one, it is encoded as the corresponding integer - 24 (see bstr_identifier in <xref target="bstr_id"/>), i.e. 0x16 = 22, 22 - 24 = -2, and -2 in CBOR encoding is equal to 0x21.</t>

<figure><artwork><![CDATA[
C_I (1 byte)
21
]]></artwork></figure>

<t>Since no unprotected opaque auxiliary data is sent in the message exchanges:</t>

<figure><artwork><![CDATA[
AD_1 (0 bytes)
]]></artwork></figure>

<t>Since the list of supported cipher suites needs to contain the selected cipher suite, the initiator truncates the list of supported cipher suites to one cipher suite only, 00.</t>

<t>Because one single selected cipher suite is conveyed, it is encoded as an int instead of an array:</t>

<figure><artwork><![CDATA[
SUITES_I (int)
0
]]></artwork></figure>

<t>With SUITES_I = 0, message_1 is constructed, as the CBOR Sequence of the CBOR data items above.</t>

<figure><artwork><![CDATA[
message_1 =
(
  13,
  0,
  h'8D3EF56D1B750A4351D68AC250A0E883790EFC80A538A444EE9E2B57E2441A7C',
  -2
)
]]></artwork></figure>

<figure><artwork><![CDATA[
message_1 (CBOR Sequence) (37 bytes)
0d 00 58 20 8d 3e f5 6d 1b 75 0a 43 51 d6 8a c2 50 a0 e8 83 79 0e fc 80 
a5 38 a4 44 ee 9e 2b 57 e2 44 1a 7c 21 
]]></artwork></figure>

</section>
<section anchor="dh-ss-m2" title="Message_2">

<t>Since METHOD_CORR mod 4 equals 1, C_I is omitted from data_2.</t>

<figure><artwork><![CDATA[
Y (Responder's ephemeral private key) (32 bytes)
c6 46 cd dc 58 12 6e 18 10 5f 01 ce 35 05 6e 5e bc 35 f4 d4 cc 51 07 49 
a3 a5 e0 69 c1 16 16 9a
]]></artwork></figure>

<figure><artwork><![CDATA[
G_Y (Responder's ephemeral public key) (32 bytes)
52 fb a0 bd c8 d9 53 dd 86 ce 1a b2 fd 7c 05 a4 65 8c 7c 30 af db fc 33 
01 04 70 69 45 1b af 35 
]]></artwork></figure>

<t>From G_X and Y or from G_Y and X the ECDH shared secret is computed:</t>

<figure><artwork><![CDATA[
G_XY (ECDH shared secret) (32 bytes)
de fc 2f 35 69 10 9b 3d 1f a4 a7 3d c5 e2 fe b9 e1 15 0d 90 c2 5e e2 f0 
66 c2 d8 85 f4 f8 ac 4e
]]></artwork></figure>

<t>The key and nonce for calculating the ciphertext are calculated as follows, as specified in <xref target="key-der"/>.</t>

<t>HKDF SHA-256 is the HKDF used (as defined by cipher suite 0).</t>

<t>PRK_2e = HMAC-SHA-256(salt, G_XY)</t>

<t>Salt is the empty byte string.</t>

<figure><artwork><![CDATA[
salt (0 bytes)
]]></artwork></figure>

<t>From there, PRK_2e is computed:</t>

<figure><artwork><![CDATA[
PRK_2e (32 bytes)
93 9f cb 05 6d 2e 41 4f 1b ec 61 04 61 99 c2 c7 63 d2 7f 0c 3d 15 fa 16 
71 fa 13 4e 0d c5 a0 4d 
]]></artwork></figure>

<figure><artwork><![CDATA[
SK_R (Responders's private authentication key) (32 bytes)
bb 50 1a ac 67 b9 a9 5f 97 e0 ed ed 6b 82 a6 62 93 4f bb fc 7a d1 b7 4c 
1f ca d6 6a 07 94 22 d0 
]]></artwork></figure>

<t>Since the Responder authenticates with a static Diffie-Hellman key, PRK_3e2m = HKDF-Extract( PRK_2e, G_RX ), where G_RX is the ECDH shared secret calculated from G_R and X, or G_X and R.</t>

<figure><artwork><![CDATA[
R (Responder's private authentication key) (32 bytes)
bb 50 1a ac 67 b9 a9 5f 97 e0 ed ed 6b 82 a6 62 93 4f bb fc 7a d1 b7 4c 
1f ca d6 6a 07 94 22 d0 
]]></artwork></figure>

<figure><artwork><![CDATA[
G_R (Responder's public authentication key) (32 bytes)
a3 ff 26 35 95 be b3 77 d1 a0 ce 1d 04 da d2 d4 09 66 ac 6b cb 62 20 51 
b8 46 59 18 4d 5d 9a 32
]]></artwork></figure>

<t>From the Responder’s authentication key and the Initiator’s ephemeral key (see <xref target="dh-ss-m1"/>), the ECDH shared secret G_RX is calculated.</t>

<figure><artwork><![CDATA[
G_RX (ECDH shared secret) (32 bytes)
21 c7 ef f4 fb 69 fa 4b 67 97 d0 58 84 31 5d 84 11 a3 fd a5 4f 6d ad a6 
1d 4f cd 85 e7 90 66 68
]]></artwork></figure>

<figure><artwork><![CDATA[
PRK_3e2m (32 bytes)
75 07 7c 69 1e 35 01 2d 48 bc 24 c8 4f 2b ab 89 f5 2f ac 03 fe dd 81 3e 
43 8c 93 b1 0b 39 93 07 
]]></artwork></figure>

<t>The Responder chooses a connection identifier C_R.</t>

<figure><artwork><![CDATA[
Connection identifier chosen by Responder (1 byte)
20
]]></artwork></figure>

<t>Note that since C_R is a byte strings of length one, it is encoded as the corresponding integer - 24 (see bstr_identifier in <xref target="bstr_id"/>), i.e. 0x20 = 32, 32 - 24 = 8, and 8 in CBOR encoding is equal to 0x08.</t>

<figure><artwork><![CDATA[
C_R (1 byte)
08
]]></artwork></figure>

<t>Data_2 is constructed, as the CBOR Sequence of G_Y and C_R.</t>

<figure><artwork><![CDATA[
data_2 =
(
  h'52FBA0BDC8D953DD86CE1AB2FD7C05A4658C7C30AFDBFC3301047069451BAF35',
  08
)
]]></artwork></figure>

<figure><artwork><![CDATA[
data_2 (CBOR Sequence) (35 bytes)
58 20 52 fb a0 bd c8 d9 53 dd 86 ce 1a b2 fd 7c 05 a4 65 8c 7c 30 af db 
fc 33 01 04 70 69 45 1b af 35 08 
]]></artwork></figure>

<t>From data_2 and message_1, compute the input to the transcript hash TH_2 = H( message_1, data_2 ), as a CBOR Sequence of these 2 data items.</t>

<figure><artwork><![CDATA[
Input to calculate TH_2 (CBOR Sequence) (72 bytes)
0d 00 58 20 8d 3e f5 6d 1b 75 0a 43 51 d6 8a c2 50 a0 e8 83 79 0e fc 80 
a5 38 a4 44 ee 9e 2b 57 e2 44 1a 7c 21 58 20 52 fb a0 bd c8 d9 53 dd 86 
ce 1a b2 fd 7c 05 a4 65 8c 7c 30 af db fc 33 01 04 70 69 45 1b af 35 08  
]]></artwork></figure>

<t>And from there, compute the transcript hash TH_2 = SHA-256( message_1, data_2 )</t>

<figure><artwork><![CDATA[
TH_2 (32 bytes)
6a 28 78 e8 4b 2c c0 21 cc 1a eb a2 96 52 53 ef 42 f7 fa 30 0c af 9c 49 
1a 52 e6 83 6a 25 64 ff 
]]></artwork></figure>

<t>The Responder’s subject name is the empty string:</t>

<figure><artwork><![CDATA[
Responders's subject name (text string)
""
]]></artwork></figure>

<t>ID_CRED_R is the following:</t>

<figure><artwork><![CDATA[
ID_CRED_R =
{
  4: h'07'
}
]]></artwork></figure>

<figure><artwork><![CDATA[
ID_CRED_R (4 bytes)
a1 04 41 07
]]></artwork></figure>

<t>CRED_R is the following COSE_Key:</t>

<figure><artwork><![CDATA[
{
  1: 1,
  -1: 4,
  -2: h'A3FF263595BEB377D1A0CE1D04DAD2D40966AC6BCB622051B84659184D5D9A32',
  "subject name": ""
}
]]></artwork></figure>

<t>Which encodes to the following byte string:</t>

<figure><artwork><![CDATA[
CRED_R (54 bytes)
a4 01 01 20 04 21 58 20 a3 ff 26 35 95 be b3 77 d1 a0 ce 1d 04 da d2 d4 
09 66 ac 6b cb 62 20 51 b8 46 59 18 4d 5d 9a 32 6c 73 75 62 6a 65 63 74 
20 6e 61 6d 65 60 
]]></artwork></figure>

<t>Since no unprotected opaque auxiliary data is sent in the message exchanges:</t>

<figure><artwork><![CDATA[
AD_2  (0 bytes)
]]></artwork></figure>

<t>The Plaintext is defined as the empty string:</t>

<figure><artwork><![CDATA[
P_2m (0 bytes)
]]></artwork></figure>

<t>The Enc_structure is defined as follows: [ “Encrypt0”, « ID_CRED_R », « TH_2, CRED_R » ]</t>

<figure><artwork><![CDATA[
A_2m =
[
  "Encrypt0", 
  h'A1044107', 
  h'58206A2878E84B2CC021CC1AEBA2965253EF42F7FA300CAF9C491A52E6836A2564FFA401012004215820A3FF263595BEB377D1A0CE1D04DAD2D40966AC6BCB622051B84659184D5D9A326C7375626A656374206E616D6560'
]
]]></artwork></figure>

<t>Which encodes to the following byte string to be used as Additional Authenticated Data:</t>

<figure><artwork><![CDATA[
A_2m (CBOR-encoded) (105 bytes)
83 68 45 6e 63 72 79 70 74 30 44 a1 04 41 07 58 58 58 20 6a 28 78 e8 4b 
2c c0 21 cc 1a eb a2 96 52 53 ef 42 f7 fa 30 0c af 9c 49 1a 52 e6 83 6a 
25 64 ff a4 01 01 20 04 21 58 20 a3 ff 26 35 95 be b3 77 d1 a0 ce 1d 04 
da d2 d4 09 66 ac 6b cb 62 20 51 b8 46 59 18 4d 5d 9a 32 6c 73 75 62 6a 
65 63 74 20 6e 61 6d 65 60 
]]></artwork></figure>

<t>info for K_2m is defined as follows:</t>

<figure><artwork><![CDATA[
info for K_2m =
[
  10, 
  h'6A2878E84B2CC021CC1AEBA2965253EF42F7FA300CAF9C491A52E6836A2564FF', 
  "K_2m", 
  16
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for K_2m (CBOR-encoded) (42 bytes)
84 0a 58 20 6a 28 78 e8 4b 2c c0 21 cc 1a eb a2 96 52 53 ef 42 f7 fa 30 
0c af 9c 49 1a 52 e6 83 6a 25 64 ff 64 4b 5f 32 6d 10 
]]></artwork></figure>

<t>From these parameters, K_2m is computed. Key K_2m is the output of HKDF-Expand(PRK_3e2m, info, L), where L is the length of K_2m, so 16 bytes.</t>

<figure><artwork><![CDATA[
K_2m (16 bytes)
81 2a 48 87 d1 90 ff ed 2b 10 0b a7 a5 c2 5e 67
]]></artwork></figure>

<t>info for IV_2m is defined as follows:</t>

<figure><artwork><![CDATA[
info for IV_2m =
[
  10, 
  h'6A2878E84B2CC021CC1AEBA2965253EF42F7FA300CAF9C491A52E6836A2564FF', 
  "IV_2m", 
  13
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for IV_2m (CBOR-encoded) (43 bytes)
84 0a 58 20 6a 28 78 e8 4b 2c c0 21 cc 1a eb a2 96 52 53 ef 42 f7 fa 30 
0c af 9c 49 1a 52 e6 83 6a 25 64 ff 65 49 56 5f 32 6d 0d
]]></artwork></figure>

<t>From these parameters, IV_2m is computed. IV_2m is the output of HKDF-Expand(PRK_3e2m, info, L), where L is the length of IV_2m, so 13 bytes.</t>

<figure><artwork><![CDATA[
IV_2m (13 bytes)
92 3c 0f 94 31 51 5b 69 21 30 49 2b 7f 
]]></artwork></figure>

<t>Finally, COSE_Encrypt0 is computed from the parameters above.</t>

<t><list style="symbols">
  <t>protected header = CBOR-encoded ID_CRED_R</t>
  <t>external_aad = A_2m</t>
  <t>empty plaintext = P_2m</t>
</list></t>

<figure><artwork><![CDATA[
MAC_2 (8 bytes)
64 21 0d 2e 18 b9 28 cd 
]]></artwork></figure>

<t>From there Signature_or_MAC_2 is the MAC (since method = 3):</t>

<figure><artwork><![CDATA[
Signature_or_MAC_2 (8 bytes)
64 21 0d 2e 18 b9 28 cd 
]]></artwork></figure>

<t>CIPHERTEXT_2 is the ciphertext resulting from XOR encrypting a plaintext constructed from the following parameters and the key K_2e.</t>

<t><list style="symbols">
  <t>plaintext = CBOR Sequence of the items ID_CRED_R and the CBOR encoded Signature_or_MAC_2, in this order. Note that since ID_CRED_R contains a single ‘kid’ parameter, i.e., ID_CRED_R = { 4 : kid_R }, only the byte string kid_R is conveyed in the plaintext encoded as a bstr_identifier. kid_R is encoded as the corresponding integer - 24 (see bstr_identifier in <xref target="bstr_id"/>), i.e. 0x07 = 7, 7 - 24 = -17, and -17 in CBOR encoding is equal to 0x30.</t>
</list></t>

<t>The plaintext is the following:</t>

<figure><artwork><![CDATA[
P_2e (CBOR Sequence) (10 bytes)
30 48 64 21 0d 2e 18 b9 28 cd 
]]></artwork></figure>

<t>K_2e = HKDF-Expand( PRK, info, length ), where length is the length of the plaintext, so 80.</t>

<figure><artwork><![CDATA[
info for K_2e =
[
  10, 
  h'6A2878E84B2CC021CC1AEBA2965253EF42F7FA300CAF9C491A52E6836A2564FF', 
  "K_2e", 
  10
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for K_2e (CBOR-encoded) (42 bytes)
84 0a 58 20 6a 28 78 e8 4b 2c c0 21 cc 1a eb a2 96 52 53 ef 42 f7 fa 30 
0c af 9c 49 1a 52 e6 83 6a 25 64 ff 64 4b 5f 32 65 0a 
]]></artwork></figure>

<t>From there, K_2e is computed:</t>

<figure><artwork><![CDATA[
K_2e (10 bytes)
ec be 9a bd 5f 62 3a fc 65 26 
]]></artwork></figure>

<t>Using the parameters above, the ciphertext CIPHERTEXT_2 can be computed:</t>

<figure><artwork><![CDATA[
CIPHERTEXT_2 (10 bytes)
dc f6 fe 9c 52 4c 22 45 4d eb 
]]></artwork></figure>

<t>message_2 is the CBOR Sequence of data_2 and CIPHERTEXT_2, in this order:</t>

<figure><artwork><![CDATA[
message_2 =
(
 data_2,
 h'DCF6FE9C524C22454DEB'
) 
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
message_2 (CBOR Sequence) (46 bytes)
58 20 52 fb a0 bd c8 d9 53 dd 86 ce 1a b2 fd 7c 05 a4 65 8c 7c 30 af db 
fc 33 01 04 70 69 45 1b af 35 08 4a dc f6 fe 9c 52 4c 22 45 4d eb 
]]></artwork></figure>

</section>
<section anchor="message3-1" title="Message_3">

<t>Since corr equals 1, C_R is not omitted from data_3.</t>

<figure><artwork><![CDATA[
SK_I (Initiator's private authentication key) (32 bytes)
2b be a6 55 c2 33 71 c3 29 cf bd 3b 1f 02 c6 c0 62 03 38 37 b8 b5 90 99 
a4 43 6f 66 60 81 b0 8e 
]]></artwork></figure>

<figure><artwork><![CDATA[
G_I (Initiator's public authentication key) (32 bytes)
2c 44 0c c1 21 f8 d7 f2 4c 3b 0e 41 ae da fe 9c aa 4f 4e 7a bb 83 5e c3 
0f 1d e8 8a db 96 ff 71
]]></artwork></figure>

<t>HKDF SHA-256 is the HKDF used (as defined by cipher suite 0).</t>

<t>From the Initiator’s authentication key and the Responder’s ephemeral key (see <xref target="dh-ss-m2"/>), the ECDH shared secret G_IY is calculated.</t>

<figure><artwork><![CDATA[
G_IY (ECDH shared secret) (32 bytes)
cb ff 8c d3 4a 81 df ec 4c b6 5d 9a 57 2e bd 09 64 45 0c 78 56 3d a4 98 
1d 80 d3 6c 8b 1a 75 2a 
]]></artwork></figure>

<t>PRK_4x3m = HMAC-SHA-256 (PRK_3e2m, G_IY).</t>

<figure><artwork><![CDATA[
PRK_4x3m (32 bytes)
ec 62 92 a0 67 f1 37 fc 7f 59 62 9d 22 6f bf c4 e0 68 89 49 f6 62 a9 7f 
d8 2f be b7 99 71 39 4a 
]]></artwork></figure>

<t>data 3 is equal to C_R.</t>

<figure><artwork><![CDATA[
data_3 (CBOR Sequence) (1 bytes)
08 
]]></artwork></figure>

<t>From data_3, CIPHERTEXT_2, and TH_2, compute the input to the transcript hash TH_3 = H(TH_2 , CIPHERTEXT_2, data_3), as a CBOR Sequence of these 3 data items.</t>

<figure><artwork><![CDATA[
Input to calculate TH_3 (CBOR Sequence) (46 bytes)
58 20 6a 28 78 e8 4b 2c c0 21 cc 1a eb a2 96 52 53 ef 42 f7 fa 30 0c af 
9c 49 1a 52 e6 83 6a 25 64 ff 4a dc f6 fe 9c 52 4c 22 45 4d eb 08 
]]></artwork></figure>

<t>And from there, compute the transcript hash TH_3 = SHA-256(TH_2 , CIPHERTEXT_2, data_3)</t>

<figure><artwork><![CDATA[
TH_3 (32 bytes)
51 dd 22 43 a6 b8 3f 13 16 dc 53 29 1a e1 91 cd 93 b4 44 cc e4 80 16 07 
03 ee d9 c4 a1 bc b6 11 
]]></artwork></figure>

<t>The initiator’s subject name is the empty string:</t>

<figure><artwork><![CDATA[
Initiator's subject name (text string)
""
]]></artwork></figure>

<t>And its credential is:</t>

<figure><artwork><![CDATA[
ID_CRED_I =
{
  4: h'24'
}
]]></artwork></figure>

<figure><artwork><![CDATA[
ID_CRED_I (4 bytes)
a1 04 41 24
]]></artwork></figure>

<t>CRED_I is the following COSE_Key:</t>

<figure><artwork><![CDATA[
{
  1: 1, 
  -1: 4,
   -2: h'2C440CC121F8D7F24C3B0E41AEDAFE9CAA4F4E7ABB835EC30F1DE88ADB96FF71', 
   "subject name": ""
 }
]]></artwork></figure>

<t>Which encodes to the following byte string:</t>

<figure><artwork><![CDATA[
CRED_I (54 bytes)
a4 01 01 20 04 21 58 20 2c 44 0c c1 21 f8 d7 f2 4c 3b 0e 41 ae da fe 9c 
aa 4f 4e 7a bb 83 5e c3 0f 1d e8 8a db 96 ff 71 6c 73 75 62 6a 65 63 74 
20 6e 61 6d 65 60  
]]></artwork></figure>

<t>Since no opaque auxiliary data is exchanged:</t>

<figure><artwork><![CDATA[
AD_3 (0 bytes)
]]></artwork></figure>

<t>The Plaintext of the COSE_Encrypt is the empty string:</t>

<figure><artwork><![CDATA[
P_3m (0 bytes)
]]></artwork></figure>

<t>The external_aad is the CBOR Sequence of CRED_I and TH_3, in this order:</t>

<figure><artwork><![CDATA[
A_3m (CBOR-encoded) (105 bytes)
83 68 45 6e 63 72 79 70 74 30 44 a1 04 41 24 58 58 58 20 51 dd 22 43 a6 
b8 3f 13 16 dc 53 29 1a e1 91 cd 93 b4 44 cc e4 80 16 07 03 ee d9 c4 a1 
bc b6 11 a4 01 01 20 04 21 58 20 2c 44 0c c1 21 f8 d7 f2 4c 3b 0e 41 ae 
da fe 9c aa 4f 4e 7a bb 83 5e c3 0f 1d e8 8a db 96 ff 71 6c 73 75 62 6a 
65 63 74 20 6e 61 6d 65 60 
]]></artwork></figure>

<t>Info for K_3m is computed as follows:</t>

<figure><artwork><![CDATA[
info for K_3m =
[
  10, 
  h'51DD2243A6B83F1316DC53291AE191CD93B444CCE480160703EED9C4A1BCB611', 
  "K_3m", 
  16
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for K_3m (CBOR-encoded) (42 bytes)
84 0a 58 20 51 dd 22 43 a6 b8 3f 13 16 dc 53 29 1a e1 91 cd 93 b4 44 cc 
e4 80 16 07 03 ee d9 c4 a1 bc b6 11 64 4b 5f 33 6d 10  
]]></artwork></figure>

<t>From these parameters, K_3m is computed. Key K_3m is the output of HKDF-Expand(PRK_4x3m, info, L), where L is the length of K_2m, so 16 bytes.</t>

<figure><artwork><![CDATA[
K_3m (16 bytes)
84 85 31 8a a3 08 6f d5 86 7a 02 8e 99 e2 40 30 
]]></artwork></figure>

<t>Nonce IV_3m is the output of HKDF-Expand(PRK_4x3m, info, L), where L = 13 bytes.</t>

<t>Info for IV_3m is defined as follows:</t>

<figure><artwork><![CDATA[
info for IV_3m =
[
  10, 
  h'51DD2243A6B83F1316DC53291AE191CD93B444CCE480160703EED9C4A1BCB611', 
  "IV_3m", 
  13
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for IV_3m (CBOR-encoded) (43 bytes)
84 0a 58 20 51 dd 22 43 a6 b8 3f 13 16 dc 53 29 1a e1 91 cd 93 b4 44 cc 
e4 80 16 07 03 ee d9 c4 a1 bc b6 11 65 49 56 5f 33 6d 0d  
]]></artwork></figure>

<t>From these parameters, IV_3m is computed:</t>

<figure><artwork><![CDATA[
IV_3m (13 bytes)
1e 10 5b 88 50 0e d5 ae b0 5d 00 6b ea 
]]></artwork></figure>

<t>MAC_3 is the ciphertext of the COSE_Encrypt0:</t>

<figure><artwork><![CDATA[
MAC_3 (8 bytes)
1f b7 5a c1 aa d2 34 25 
]]></artwork></figure>

<t>Since the method = 3, Signature_or_Mac_3 is the MAC_3:</t>

<figure><artwork><![CDATA[
Signature_or_MAC_3 (8 bytes)
1f b7 5a c1 aa d2 34 25 
]]></artwork></figure>

<t>Finally, the outer COSE_Encrypt0 is computed.</t>

<t>The Plaintext is the following CBOR Sequence: 
plaintext = ( ID_CRED_I , Signature_or_MAC_3 ).  Note that since ID_CRED_I contains a single ‘kid’ parameter, i.e., ID_CRED_I = { 4 : kid_I }, only the byte string kid_I is conveyed in the plaintext encoded as a bstr_identifier. kid_I is encoded as the corresponding integer - 24 (see bstr_identifier in <xref target="bstr_id"/>), i.e. 0x24 = 36, 36 - 24 = 12, and 12 in CBOR encoding is equal to 0x0c.</t>

<figure><artwork><![CDATA[
P_3ae (CBOR Sequence) (10 bytes)
0c 48 1f b7 5a c1 aa d2 34 25 
]]></artwork></figure>

<t>The Associated data A is the following:
Associated data A = [ “Encrypt0”, h’’, TH_3 ]</t>

<figure><artwork><![CDATA[
A_3ae (CBOR-encoded) (45 bytes)
83 68 45 6e 63 72 79 70 74 30 40 58 20 51 dd 22 43 a6 b8 3f 13 16 dc 53 
29 1a e1 91 cd 93 b4 44 cc e4 80 16 07 03 ee d9 c4 a1 bc b6 11 
]]></artwork></figure>

<t>Key K_3ae is the output of HKDF-Expand(PRK_3e2m, info, L).</t>

<t>info is defined as follows:</t>

<figure><artwork><![CDATA[
info for K_3ae = 
[
  10, 
  h'51DD2243A6B83F1316DC53291AE191CD93B444CCE480160703EED9C4A1BCB611', 
  "K_3ae", 
  16
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for K_3ae (CBOR-encoded) (43 bytes)
84 0a 58 20 51 dd 22 43 a6 b8 3f 13 16 dc 53 29 1a e1 91 cd 93 b4 44 cc 
e4 80 16 07 03 ee d9 c4 a1 bc b6 11 65 4b 5f 33 61 65 10  
]]></artwork></figure>

<t>L is the length of K_3ae, so 16 bytes.</t>

<t>From these parameters, K_3ae is computed:</t>

<figure><artwork><![CDATA[
K_3ae (16 bytes)
bf 29 0b 7e e0 4b 86 5d e1 01 0a 81 1b 36 00 64 
]]></artwork></figure>

<t>Nonce IV_3ae is the output of HKDF-Expand(PRK_3e2m, info, L).</t>

<t>info is defined as follows:</t>

<figure><artwork><![CDATA[
info for IV_3ae =
[
  10, 
  h'51DD2243A6B83F1316DC53291AE191CD93B444CCE480160703EED9C4A1BCB611', 
  "IV_3ae", 
  13
]
]]></artwork></figure>

<t>Which as a CBOR encoded data item is:</t>

<figure><artwork><![CDATA[
info for IV_3ae (CBOR-encoded) (44 bytes)
84 0a 58 20 51 dd 22 43 a6 b8 3f 13 16 dc 53 29 1a e1 91 cd 93 b4 44 cc 
e4 80 16 07 03 ee d9 c4 a1 bc b6 11 66 49 56 5f 33 61 65 0d 
]]></artwork></figure>

<t>L is the length of IV_3ae, so 13 bytes.</t>

<t>From these parameters, IV_3ae is computed:</t>

<figure><artwork><![CDATA[
IV_3ae (13 bytes)
0e 74 45 0a fc ec e9 73 af 64 e9 4d 46 
]]></artwork></figure>

<t>Using the parameters above, the ciphertext CIPHERTEXT_3 can be computed:</t>

<figure><artwork><![CDATA[
CIPHERTEXT_3 (18 bytes)
53 c3 99 19 99 a5 ff b8 69 21 e9 9b 60 7c 06 77 70 e0 
]]></artwork></figure>

<t>From the parameter above, message_3 is computed, as the CBOR Sequence of the following items: (C_R, CIPHERTEXT_3).</t>

<figure><artwork><![CDATA[
message_3 =
(
  h'08',
  h'53C3991999A5FFB86921E99B607C067770E0'
)
]]></artwork></figure>

<t>Which encodes to the following byte string:</t>

<figure><artwork><![CDATA[
message_3 (CBOR Sequence) (20 bytes)
08 52 53 c3 99 19 99 a5 ff b8 69 21 e9 9b 60 7c 06 77 70 e0 
]]></artwork></figure>

</section>
</section>
</section>
<section numbered="no" anchor="acknowledgments" title="Acknowledgments">

<t>The authors want to thank Alessandro Bruni, Karthikeyan Bhargavan, Martin Disch, Theis Grønbech Petersen, Dan Harkins, Klaus Hartke, Russ Housley, Alexandros Krontiris, Ilari Liusvaara, Karl Norrman, Salvador Pérez, Eric Rescorla, Michael Richardson, Thorvald Sahl Jørgensen, Jim Schaad, Carsten Schürmann, Ludwig Seitz, Stanislav Smyshlyaev, Valery Smyslov, Rene Struik, Vaishnavi Sundararajan, Erik Thormarker, and Michel Veillette 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>

</section>


  </back>

<!-- ##markdown-source:
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
rKcpptmgVTE5Hg73BAgdIzPEwkOLZGmOVwuNz9DX0eTShMKO6gEWgAgyf10o
mP6P0b40k2RKkZzCoPJZcoDgchEB1xOgDzn1tNwkt3ALAxxpaYhIunI5h+lV
Pbc9B5UuzS8wjFSBpi9WVAYu4rQWXOJL25rHZX07d4gsn1Q843V5qd+U2RBO
VRHMKOFUVUtqbbqmVUtqbbqmVUtqVazpmhB7NB7fdfsclWItHK0Iqz29581y
ieX1azo0OXtQX0g5XZ55K9NtGL8QTTWz1TAtsXlWonSyTL7eE1ksgrgoq2Z2
qPrCr5ag9r174iY/riu+Sgyez9mY+uKSMWh17vhKL5keZ9lNrnbbTXPUGk/T
zKWmAacucuOhhtpSnE4NGEViyKsukpQeMo/IttfVkc9c6meQ5PJnD+U2Q5Tt
ozrOq4RZP48we4ueM8tzrfO8uihrKtBqnUDPZKihm80iPSvh6kFc6UwLGMAs
OVxEJ2EestLvIg3frfOzt4Mvqu3gi/DEp644rRtdkO1LlmrGSAfNeC+abrIU
6AQODewAhw9ow4hrsHkKrt1I8Uc6rgXt0jwAAVMvhUh4/Nyw4D0AhwoXQbDt
QSYy2Jxzu2Dtxi8pYE2LIjeSCwQHFFMqOQXQOwXKTLGHRMIDHlAXkFMapiis
/xCWPAwghjLQV5DeAP8E/ecbmPupB8o+UjqiC8ueTCEyZchdoc+T8NHXGS7E
WG90z1ZnsjgT1J2al516gtyZ/chIl0vadagMm1+gvzXgy1VTyjSpmvDcNucb
aAAyXIG2CedRR8CmBPaOsmVNhWtH2bKmwrWjbFlT4dqfbG3WBWIlIyQ6Qiz2
gqgijpxr+9CgUcO0lXXLIJO83K6hhqLupV3DmnYNNXP30q9h4tW99Gt40q/B
/vOb7Pp8PD6/lZ/22LuBzBkp4bKT2iVlTRYLLQ9ZZWTMwfFnvlsy70jr0Wtd
VFQKqOyUeaFzg/osUs5AWBUBLrR/0Kwmu6SaNwdxbNG7IWPH2OVcZIrwKVms
5I65EtZYYIB0dzkuQccJKX/S7SJH1JGsV8N4TZSvkAFC6xByCIROAlAFa0Ar
/dPr3TA7cCtDXqs4ba+ecNqOdyC1PW9KZEvfepFfgIvWI//fcc4QvyqJbM9L
zPG5s47I1pG1RLZXc0S/Ner+paXFS0uLY7a0UPM9LRJy/10vkS3fFZFWrky8
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

-->

</rfc>

