<?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.11 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

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

<rfc ipr="trust200902" docName="draft-ietf-core-oscore-edhoc-01" category="std">

  <front>
    <title abbrev="EDHOC + OSCORE">Combining EDHOC and OSCORE</title>

    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson</organization>
      <address>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>SE-16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="R." surname="Hoeglund" fullname="Rikard Hoeglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>SE-16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <author initials="S." surname="Hristozov" fullname="Stefan Hristozov">
      <organization>Fraunhofer AISEC</organization>
      <address>
        <email>stefan.hristozov@aisec.fraunhofer.de</email>
      </address>
    </author>
    <author initials="G." surname="Selander" fullname="Goeran Selander">
      <organization>Ericsson</organization>
      <address>
        <email>goran.selander@ericsson.com</email>
      </address>
    </author>

    <date year="2021" month="July" day="12"/>

    <area>Internet</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines an optimization approach for combining the lightweight authenticated key exchange protocol EDHOC run over CoAP with the first subsequent OSCORE transaction. This combination reduces the number of round trips required to set up an OSCORE Security Context and to complete an OSCORE transaction using that Security Context.</t>



    </abstract>


  </front>

  <middle>


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

<t>Ephemeral Diffie-Hellman Over COSE (EDHOC) <xref target="I-D.ietf-lake-edhoc"/> is a lightweight authenticated key exchange protocol, especially intended for use in constrained scenarios. In particular, EDHOC messages can be transported over the Constrained Application Protocol (CoAP) <xref target="RFC7252"/> and used for establishing a Security Context for Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/>.</t>

<t>This document defines an optimization approach that combines EDHOC run over CoAP with the first subsequent OSCORE transaction. This allows for a minimum number of round trips necessary to setup the OSCORE Security Context and complete an OSCORE transaction, for example when an IoT device gets configured in a network for the first time.</t>

<t>This optimization is desirable, since the number of protocol round trips impacts on the minimum number of flights, which in turn can have a substantial impact on the latency of conveying the first OSCORE request, when using certain radio technologies.</t>

<t>Without this optimization, it is not possible, not even in theory, to achieve the minimum number of flights. This optimization makes it possible also in practice, since the last message of the EDHOC protocol can be made relatively small (see Section 1 of <xref target="I-D.ietf-lake-edhoc"/>), thus allowing additional OSCORE protected CoAP data within target MTU sizes.</t>

<section anchor="terminology" title="Terminology">

<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>The reader is expected to be familiar with terms and concepts defined in CoAP <xref target="RFC7252"/>, CBOR <xref target="RFC8949"/>, CBOR sequences <xref target="RFC8742"/>, OSCORE <xref target="RFC8613"/> and EDHOC <xref target="I-D.ietf-lake-edhoc"/>.</t>

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

<t>The EDHOC protocol allows two peers to agree on a cryptographic secret, in a mutually-authenticated way and by using Diffie-Hellman ephemeral keys to achieve perfect forward secrecy. The two peers are denoted as Initiator and Responder, as the one sending or receiving the initial EDHOC message_1, respectively.</t>

<t>After successful processing of EDHOC message_3, both peers agree on a cryptographic secret that can be used to derive further security material, and especially to establish an OSCORE Security Context <xref target="RFC8613"/>. The Responder can also send an optional EDHOC message_4 to achieve key confirmation, e.g., in deployments where no protected application message is sent from the Responder to the Initiator.</t>

<t>Appendix A.3 of <xref target="I-D.ietf-lake-edhoc"/> specifies how to transport EDHOC over CoAP. That is, the EDHOC data (referred to as “EDHOC messages”) are transported in the payload of CoAP requests and responses. The default message flow consists in the CoAP Client acting as Initiator and the CoAP Server acting as Responder. Alternatively, the two roles can be reversed. In the rest of this document, EDHOC messages are considered to be transported over CoAP.</t>

<t><xref target="fig-non-combined"/> shows a Client and Server running EDHOC as Initiator and Responder, respectively. That is, the Client sends a POST request with payload EDHOC message_1 to a reserved resource at the CoAP Server, by default at Uri-Path “/.well-known/edhoc”. This triggers the EDHOC exchange at the Server, which replies with a 2.04 (Changed) Response with payload EDHOC message_2. Finally, the Client sends a CoAP POST request to the same resource used for EDHOC message_1, with payload EDHOC message_3. The Content-Format of these CoAP messages may be set to “application/edhoc”.</t>

<t>After this exchange takes place, and after successful verifications as specified in the EDHOC protocol, the Client and Server can derive an OSCORE Security Context, as defined in Appendix A.2 of <xref target="I-D.ietf-lake-edhoc"/>. After that, they can use OSCORE to protect their communications.</t>

<figure title="EDHOC and OSCORE run sequentially" anchor="fig-non-combined"><artwork align="center"><![CDATA[
   CoAP Client                                  CoAP Server
(EDHOC Initiator)                            (EDHOC Responder)
        | ------------- EDHOC message_1 ------------> |
        |          Header: POST (Code=0.02)           |
        |       Uri-Path: "/.well-known/edhoc"        |
        |      Content-Format: application/edhoc      |
        |                                             |
        | <------------ EDHOC message_2 ------------- |
        |            Header: 2.04 Changed             |
        |      Content-Format: application/edhoc      |
        |                                             |
EDHOC verification                                    |
        |                                             |
        | ------------- EDHOC message_3 ------------> |
        |          Header: POST (Code=0.02)           |
        |        Uri-Path: "/.well-known/edhoc"       |
        |      Content-Format: application/edhoc      |
        |                                             |
        |                                    EDHOC verification
        |                                             +
OSCORE Sec Ctx                                OSCORE Sec Ctx
  Derivation                                     Derivation
        |                                             |
        | ------------- OSCORE Request -------------> |
        |          Header: POST (Code=0.02)           |
        |                                             |
        | <------------ OSCORE Response ------------- |
        |            Header: 2.04 Changed             |
        |                                             |
]]></artwork></figure>

<t>As shown in <xref target="fig-non-combined"/>, this purely-sequential way of first running EDHOC and then using OSCORE takes three round trips to complete.</t>

<t><xref target="edhoc-in-oscore"/> defines an optimization for combining EDHOC with the first subsequent OSCORE transaction. This reduces the number of round trips required to set up an OSCORE Security Context and to complete an OSCORE transaction using that Security Context.</t>

</section>
<section anchor="edhoc-in-oscore" title="EDHOC Combined with OSCORE">

<t>This section defines an optimization for combining the EDHOC exchange with the first subsequent OSCORE transaction, thus minimizing the number of round trips between the two peers.</t>

<t>This approach can be used only if the default EDHOC message flow is used, i.e., when the Client acts as Initiator and the Server acts as Responder, while it cannot be used in the case with reversed roles.</t>

<t>When running the purely-sequential flow of <xref target="overview"/>, the Client has all the information to derive the OSCORE Security Context already after receiving EDHOC message_2 and before sending EDHOC message_3.</t>

<t>Hence, the Client can potentially send both EDHOC message_3 and the subsequent OSCORE Request at the same time. On a semantic level, this requires sending two REST requests at once, as in <xref target="fig-combined"/>.</t>

<figure title="EDHOC and OSCORE combined" anchor="fig-combined"><artwork align="center"><![CDATA[
   CoAP Client                                  CoAP Server
(EDHOC Initiator)                            (EDHOC Responder)
        | ------------- EDHOC message_1 ------------> |
        |          Header: POST (Code=0.02)           |
        |       Uri-Path: "/.well-known/edhoc"        |
        |      Content-Format: application/edhoc      |
        |                                             |
        | <------------ EDHOC message_2 ------------- |
        |            Header: 2.04 Changed             |
        |      Content-Format: application/edhoc      |
        |                                             |
EDHOC verification                                    |
        +                                             |
  OSCORE Sec Ctx                                      |
    Derivation                                        |
        |                                             |
        | ---- EDHOC message_3 + OSCORE Request ----> |
        |          Header: POST (Code=0.02)           |
        |                                             |
        |                                    EDHOC verification
        |                                             +
        |                                     OSCORE Sec Ctx
        |                                        Derivation
        |                                             |
        | <------------ OSCORE Response ------------- |
        |            Header: 2.04 Changed             |
        |                                             |
]]></artwork></figure>

<t>To this end, the specific approach defined in this section consists of sending EDHOC message_3 inside an OSCORE protected CoAP message.</t>

<t>The resulting EDHOC + OSCORE request is in practice the OSCORE Request from <xref target="fig-non-combined"/>, as still sent to a protected resource and with the correct CoAP method and options, but with the addition that it also transports EDHOC message_3.</t>

<t>As EDHOC message_3 may be too large to be included in a CoAP Option, e.g., if containing a large public key certificate chain, it has to be transported in the CoAP payload of the EDHOC + OSCORE request.</t>

<t>The rest of this section specifies how to transport the data in the EDHOC + OSCORE request and their processing order. In particular, the use of this approach is explicitly signalled by including an EDHOC Option (see <xref target="edhoc-option"/>) in the EDHOC + OSCORE request. The processing of the EDHOC + OSCORE request is specified in <xref target="client-processing"/> for the Client side and in <xref target="server-processing"/> for the Server side.</t>

<section anchor="edhoc-option" title="EDHOC Option">

<t>This section defines the EDHOC Option. The option is used in a CoAP request, to signal that the request payload conveys both an EDHOC message_3 and OSCORE protected data, combined together.</t>

<t>The EDHOC Option has the properties summarized in <xref target="fig-edhoc-option"/>, which extends Table 4 of <xref target="RFC7252"/>. The option is Critical, Safe-to-Forward, and part of the Cache-Key. The option MUST occur at most once and is always empty. If any value is sent, the value is simply ignored. The option is intended only for CoAP requests and is of Class U for OSCORE <xref target="RFC8613"/>.</t>

<figure title="The EDHOC Option." anchor="fig-edhoc-option"><artwork align="center"><![CDATA[
+-------+---+---+---+---+-------+--------+--------+---------+
| No.   | C | U | N | R | Name  | Format | Length | Default |
+-------+---+---+---+---+-------+--------+--------+---------+
| TBD21 | x |   |   |   | EDHOC | Empty  |   0    | (none)  |
+-------+---+---+---+---+-------+--------+--------+---------+
       C=Critical, U=Unsafe, N=NoCacheKey, R=Repeatable
]]></artwork></figure>

<t>The presence of this option means that the message payload contains also EDHOC data, that must be extracted and processed as defined in <xref target="server-processing"/>, before the rest of the message can be processed.</t>

<t><xref target="fig-edhoc-opt"/> shows the format of a CoAP message containing both the EDHOC data and the OSCORE ciphertext, using the newly defined EDHOC option for signalling.</t>

<figure title="CoAP message for EDHOC and OSCORE combined - signalled with the EDHOC Option" anchor="fig-edhoc-opt"><artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| T |  TKL  |      Code     |          Message ID           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Token (if any, TKL bytes) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  OSCORE option  |   EDHOC option  | Other options (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1|    Payload
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="client-processing" title="Client Processing">

<t>The Client prepares an EDHOC + OSCORE request as follows.</t>

<t><list style="numbers">
  <t>Compose EDHOC message_3 as per Section 5.4.2 of <xref target="I-D.ietf-lake-edhoc"/>.  <vspace blankLines='1'/>
Since the Client is the EDHOC Initiator, the EDHOC message_3 always includes the connection identifier C_R and CIPHERTEXT_3. Note that C_R is the OSCORE Sender ID of the Client, encoded as per <xref target="oscore-to-edhoc-id"/>.</t>
  <t>Encrypt the original CoAP request as per Section 8.1 of <xref target="RFC8613"/>, using the new OSCORE Security Context established after receiving EDHOC message_2.  <vspace blankLines='1'/>
Note that the OSCORE ciphertext is not computed over EDHOC message_3, which is not protected by OSCORE. That is, the result of this step is the OSCORE Request as in <xref target="fig-non-combined"/>.</t>
  <t>Build a CBOR sequence <xref target="RFC8742"/> composed of two CBOR byte strings in the following order.  <list style="symbols">
      <t>The first CBOR byte string is the CIPHERTEXT_3 of the EDHOC message_3 resulting from step 3.</t>
      <t>The second CBOR byte string has as value the OSCORE ciphertext of the OSCORE protected CoAP request resulting from step 2.</t>
    </list></t>
  <t>Compose the EDHOC + OSCORE request, as the OSCORE protected CoAP request resulting from step 2, where the payload is replaced with the CBOR sequence built at step 3.</t>
  <t>Signal the usage of this approach within the EDHOC + OSCORE request, by including the new EDHOC Option defined in <xref target="edhoc-option"/>.</t>
</list></t>

</section>
<section anchor="server-processing" title="Server Processing">

<t>When receiving a request containing the EDHOC option, i.e., an EDHOC + OSCORE request, the Server MUST perform the following steps.</t>

<t><list style="numbers">
  <t>Check that the payload of the EDHOC + OSCORE request is a CBOR sequence composed of two CBOR byte strings. If this is not the case, the Server MUST stop processing the request and MUST respond with a 4.00 (Bad Request) error message.</t>
  <t>Extract CIPHERTEXT_3 from the payload of the EDHOC + OSCORE request, as the first CBOR byte string in the CBOR sequence.</t>
  <t>Rebuild EDHOC message_3, as a CBOR sequence composed of two CBOR byte strings in the following order.  <list style="symbols">
      <t>The first CBOR byte string is the ‘kid’ of the Client indicated in the OSCORE option of the EDHOC + OSCORE request (i.e., the OSCORE Sender ID of the Client), encoded as per <xref target="oscore-to-edhoc-id"/>.</t>
      <t>The second CBOR byte string is the CIPHERTEXT_3 retrieved at step 2.</t>
    </list></t>
  <t>Perform the EDHOC processing on the EDHOC message_3 rebuilt at step 3, including verifications as per Section 5.4.3 of <xref target="I-D.ietf-lake-edhoc"/> and the OSCORE Security Context derivation as per Appendix A.2 of <xref target="I-D.ietf-lake-edhoc"/>.  <vspace blankLines='1'/>
If the applicability statement used in the EDHOC session specifies that EDHOC message_4 shall be sent, the Server MUST stop the EDHOC processing and consider it failed, as due to a client error.</t>
  <t>Extract the OSCORE ciphertext from the payload of the EDHOC + OSCORE request, as the value of the second CBOR byte string in the CBOR sequence.</t>
  <t>Rebuild the OSCORE protected CoAP request as the EDHOC + OSCORE request, where the payload is replaced with the OSCORE ciphertext resulting from step 5.</t>
  <t>Decrypt and verify the OSCORE protected CoAP request resulting from step 6, as per Section 8.2 of <xref target="RFC8613"/>, by using the new OSCORE Security Context established at step 4.</t>
  <t>Process the CoAP request resulting from step 7.</t>
</list></t>

<t>If steps 4 (EDHOC processing) and 7 (OSCORE processing) are both successfully completed, the Server MUST reply with an OSCORE protected response, in order for the Client to achieve key confirmation (see Section 5.4.2 of <xref target="I-D.ietf-lake-edhoc"/>). The usage of EDHOC message_4 as defined in Section 5.5 of <xref target="I-D.ietf-lake-edhoc"/> is not applicable to the approach defined in this document.</t>

<t>If step 4 (EDHOC processing) fails, the server discontinues the protocol as per Section 5.4.3 of <xref target="I-D.ietf-lake-edhoc"/> and responds with an EDHOC error message, formatted as defined in Section 6.2 of <xref target="I-D.ietf-lake-edhoc"/>. In particular, the CoAP response conveying the EDHOC error message MUST have Content-Format set to application/edhoc defined in Section 8.9 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

<t>If step 4 (EDHOC processing) is successfully completed but step 7 (OSCORE processing) fails, the same OSCORE error handling applies as defined in Section 8.2 of <xref target="RFC8613"/>.</t>

</section>
<section anchor="example" title="Example of EDHOC + OSCORE Request">

<t><xref target="fig-edhoc-opt-2"/> shows an example of EDHOC + OSCORE Request, based on the OSCORE test vector from Appendix C.4 of <xref target="RFC8613"/> and the EDHOC test vector from Appendix D.2 of <xref target="I-D.ietf-lake-edhoc"/>. In particular, the example assumes that:</t>

<t><list style="symbols">
  <t>The used OSCORE Partial IV is 0, consistently with the first request protected with the new OSCORE Security Context.</t>
  <t>The OSCORE Sender ID of the Client is 0x00. This corresponds to the numeric EDHOC connection identifier C_R with value 0, which in EDHOC message_3 is encoded as the CBOR integer 0, hence as 0x00.</t>
  <t>The EDHOC option is registered with CoAP option number 21.</t>
</list></t>

<figure title="Example of CoAP message with EDHOC and OSCORE combined" anchor="fig-edhoc-opt-2"><artwork align="center"><![CDATA[
   o  OSCORE option value: 0x090020 (3 bytes)

   o  EDHOC option value: - (0 bytes)

   o  C_R: 0x00 (1 byte)

   o  CIPHERTEXT_3: 0x52d5535f3147e85f1cfacd9e78abf9e0a81bbf
      (19 bytes)

   o  EDHOC message_3: 0x00 52d5535f3147e85f1cfacd9e78abf9e0a81bbf
      (20 bytes)

   o  OSCORE ciphertext: 0x612f1092f1776f1c1668b3825e (13 bytes)

   From there:

   o  Protected CoAP request (OSCORE message):

      0x44025d1f               ; CoAP 4-byte header
        00003974               ; Token
        39 6c6f63616c686f7374  ; Uri-Host Option: "localhost"
        63 090020              ; OSCORE Option
        C0                     ; EDHOC Option
        ff 52d5535f3147e85f1cfacd9e78abf9e0a81bbf
           4d612f1092f1776f1c1668b3825e
      (57 bytes)
]]></artwork></figure>

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

<t>The same security considerations from OSCORE <xref target="RFC8613"/> and EDHOC <xref target="I-D.ietf-lake-edhoc"/> hold for this document.</t>

<t>TODO (more considerations)</t>

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

<t>RFC Editor: Please replace “[[this document]]” with the RFC number of this document and delete this paragraph.</t>

<t>This document has the following actions for IANA.</t>

<section anchor="iana-coap-options" title="CoAP Option Numbers Registry">

<t>IANA is asked to enter the following option numbers to the “CoAP Option Numbers” registry defined in <xref target="RFC7252"/> within the “CoRE Parameters” registry.</t>

<t>[</t>

<t>The CoAP option numbers 13 and 21 are both consistent with the properties of the EDHOC Option defined in <xref target="edhoc-option"/>, and they both allow the EDHOC Option to always result in an overall size of 1 byte. This is because:</t>

<t><list style="symbols">
  <t>The EDHOC option is always empty, i.e., with zero-length value; and</t>
  <t>Since the OSCORE option with option number 9 is always present in the CoAP request, the EDHOC option would be encoded with a maximum delta of 4 or 12, depending on its option number being 13 or 21.</t>
</list></t>

<t>At the time of writing, the CoAP option numbers 13 and 21 are both unassigned in the “CoAP Option Numbers” registry, as first available and consistent option numbers for the EDHOC option.</t>

<t>This document suggests 21 (TBD21) as option number to be assigned to the new EDHOC option, since both 13 and 21 are consistent for the use case in question, but different use cases or protocols may make better use of the option number 13.</t>

<t>]</t>

<figure><artwork align="center"><![CDATA[
+--------+-------+-------------------+
| Number | Name  |     Reference     |
+--------+-------+-------------------+
| TBD21  | EDHOC | [[this document]] |
+--------+-------+-------------------+
]]></artwork></figure>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference  anchor="RFC7252" target='https://www.rfc-editor.org/info/rfc7252'>
<front>
<title>The Constrained Application Protocol (CoAP)</title>
<author initials='Z.' surname='Shelby' fullname='Z. Shelby'><organization /></author>
<author initials='K.' surname='Hartke' fullname='K. Hartke'><organization /></author>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t><t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t></abstract>
</front>
<seriesInfo name='RFC' value='7252'/>
<seriesInfo name='DOI' value='10.17487/RFC7252'/>
</reference>



<reference  anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference  anchor="RFC8613" target='https://www.rfc-editor.org/info/rfc8613'>
<front>
<title>Object Security for Constrained RESTful Environments (OSCORE)</title>
<author initials='G.' surname='Selander' fullname='G. Selander'><organization /></author>
<author initials='J.' surname='Mattsson' fullname='J. Mattsson'><organization /></author>
<author initials='F.' surname='Palombini' fullname='F. Palombini'><organization /></author>
<author initials='L.' surname='Seitz' fullname='L. Seitz'><organization /></author>
<date year='2019' month='July' />
<abstract><t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE).  OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t><t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration.  Therefore, this document updates RFC 7252.</t></abstract>
</front>
<seriesInfo name='RFC' value='8613'/>
<seriesInfo name='DOI' value='10.17487/RFC8613'/>
</reference>



<reference  anchor="RFC8742" target='https://www.rfc-editor.org/info/rfc8742'>
<front>
<title>Concise Binary Object Representation (CBOR) Sequences</title>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<date year='2020' month='February' />
<abstract><t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type &quot;application/cbor-seq&quot;.  A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t><t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation.  This specification defines and registers &quot;+cbor-seq&quot; as a structured syntax suffix for CBOR Sequences.</t></abstract>
</front>
<seriesInfo name='RFC' value='8742'/>
<seriesInfo name='DOI' value='10.17487/RFC8742'/>
</reference>



<reference  anchor="RFC8949" target='https://www.rfc-editor.org/info/rfc8949'>
<front>
<title>Concise Binary Object Representation (CBOR)</title>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<date year='2020' month='December' />
<abstract><t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t><t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t></abstract>
</front>
<seriesInfo name='STD' value='94'/>
<seriesInfo name='RFC' value='8949'/>
<seriesInfo name='DOI' value='10.17487/RFC8949'/>
</reference>


<reference anchor="I-D.ietf-lake-edhoc">
   <front>
      <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
      <author fullname="Göran Selander">
	 <organization>Ericsson AB</organization>
      </author>
      <author fullname="John Preuß Mattsson">
	 <organization>Ericsson AB</organization>
      </author>
      <author fullname="Francesca Palombini">
	 <organization>Ericsson AB</organization>
      </author>
      <date month="April" day="21" year="2021" />
      <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 size can be kept very low.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-06" />
   <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-lake-edhoc-06.txt" />
</reference>




    </references>



<section anchor="sec-use-with-OSCORE" title="Additional OSCORE/EDHOC-related Processing">

<t>Appendix A.1 in <xref target="I-D.ietf-lake-edhoc"/> defines a rule for converting from EDHOC connection identifier to OSCORE Sender/Recipient ID.</t>

<t>This appendix defines the rule for converting from OSCORE Sender/Recipient ID to EDHOC connection identifier, and related processing.</t>

<!--
Omitted text: 

## Establishing an OSCORE Security Context with EDHOC {#oscore-ctx}

The applicability statement associated to an EDHOC resource at the CoAP Server can specify that EDHOC is used (also) to establish an OSCORE Security Context.

In this case, what defined in this section applies when running EDHOC through such an EDHOC resource, with particular reference to the use of EDHOC connection identifiers and the actual derivation of the OSCORE Security Context.

-->

<section anchor="oscore-to-edhoc-id" title="From OSCORE to EDHOC Identifier">

<t>The process defined in this section ensures that every OSCORE Sender/Recipient ID is converted to only one of the two corresponding, equivalent EDHOC connection identifiers, see Appendix A.1 in <xref target="I-D.ietf-lake-edhoc"/>.</t>

<t>An OSCORE Sender/Recipient ID, OSCORE_ID, is converted to an EDHOC connection identifier, EDHOC_ID, as follows.</t>

<t><list style="symbols">
  <t>If OSCORE_ID is 0 bytes in size, it is converted to the empty byte string EDHOC_ID (0x40 in CBOR encoding).</t>
  <t>If OSCORE_ID is longer than 5 bytes in size, it is converted to a byte-valued EDHOC_ID, i.e., a CBOR byte string with value OSCORE_ID.  <vspace blankLines='1'/>
For example, the OSCORE_ID 0x001122334455 is converted to the byte-valued EDHOC_ID 0x001122334455 (0x46001122334455 in CBOR encoding).</t>
  <t>If OSCORE_ID is 1-5 bytes in size, the following applies.  <list style="symbols">
      <t>If OSCORE_ID is a valid CBOR encoding for an integer value (i.e., it can be correctly decoded as a CBOR integer), then it is converted to a numeric EDHOC_ID having OSCORE_ID as its CBOR encoded form.      <vspace blankLines='1'/>
For example, the OSCORE_ID 0x01 is converted to the numeric EDHOC_ID 1 (0x01 in CBOR encoding), while the OSCORE_ID 0x2B is converted to the numeric EDHOC_ID -12 (0x2B in CBOR encoding).</t>
      <t>If OSCORE_ID is <spanx style="emph">not</spanx> a valid CBOR encoding for an integer value (i.e., it <spanx style="emph">cannot</spanx> be correctly decoded as a CBOR integer), then it is converted to a byte-valued EDHOC_ID having OSCORE_ID as its value.      <vspace blankLines='1'/>
For example, the OSCORE_ID 0xFF is converted to the byte-valued EDHOC_ID 0xFF (0x41FF in CBOR encoding).</t>
    </list>
Implementations can easily determine which case holds for a given OSCORE_ID with no need to try to actually CBOR-decode it, e.g., by using the approach in <xref target="sec-cbor-numeric-check"/>.</t>
</list></t>

</section>
<section anchor="oscore-edhoc-message-processing" title="EDHOC Message Processing">

<t>This section specifies additional EDHOC message processing in addition to what is specified in Section 5 of <xref target="I-D.ietf-lake-edhoc"/>.</t>

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

<t>The Initiator selects C_I as follows.</t>

<t><list style="numbers">
  <t>The Initiator initializes a set ID_SET as the empty set.</t>
  <t>The Initiator selects an available OSCORE Recipient ID, ID*, which is not included in ID_SET.</t>
  <t>The Initiator converts ID* to the EDHOC connection identifier C_I, as per <xref target="oscore-to-edhoc-id"/>.</t>
  <t>If the resulting C_I is already used, the Initiator adds ID* to ID_SET and moves back to step 2. Otherwise, it uses C_I as its EDHOC connection identifier.</t>
</list></t>

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

<t>The Responder MUST discontinue the protocol and reply with an EDHOC error message, if C_I is a CBOR byte string and it has as value a valid CBOR encoding of an integer value (e.g., C_I is CBOR encoded as 0x4100).</t>

<t>In fact, this would mean that the Initiator has not followed the conversion rule in <xref target="oscore-to-edhoc-id"/> when converting its (to be) OSCORE Recipient ID to C_I.</t>

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

<t>The Responder selects C_R as follows.</t>

<t><list style="numbers">
  <t>The Responder initializes a set ID_SET as the empty set.</t>
  <t>The Responder selects an available OSCORE Recipient ID, ID*, which is not included in ID_SET.</t>
  <t>The Responder converts ID* to the EDHOC connection identifier C_R, as per <xref target="oscore-to-edhoc-id"/>.</t>
  <t>If the resulting C_R is already used or it is equal byte-by-byte to the C_I specified in EDHOC message_1, the Initiator adds ID* to ID_SET and moves back to step 2. Otherwise, it uses C_R as its EDHOC connection identifier.</t>
</list></t>

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

<t>The Initiator MUST discontinue the protocol and reply with an EDHOC error message, if any of the following conditions holds.</t>

<t><list style="symbols">
  <t>C_R is equal byte-by-byte to the C_I that was specified in EDHOC message_1.</t>
  <t>C_R is a CBOR byte string and it has as value a valid CBOR encoding of an integer value (e.g., C_R is CBOR encoded as 0x4100).  <vspace blankLines='1'/>
In fact, this would mean that the Responder has not followed the conversion rule in <xref target="oscore-to-edhoc-id"/> when converting its (to be) OSCORE Recipient ID to C_R.</t>
</list></t>

</section>
</section>
<section anchor="sec-cbor-numeric-check" title="Checking CBOR Encoding of Numeric Values">

<t>Given a binary string of N bytes in size, it is a valid CBOR encoding of an integer value if and only if, for that size N, its first byte is equal to one of the byte values specified in the “First byte” column of the table below.</t>

<figure><artwork align="center"><![CDATA[
+---+-----------------------+
| N | First byte            |
+---+-----------------------+
| 1 | 0x00-0x17 , 0x20-0x37 |
+---+-----------------------+
| 2 | 0x18 , 0x38           |
+---+-----------------------+
| 3 | 0x19 , 0x39           |
+---+-----------------------+
| 4 | 0x1A , 0x3A           |
+---+-----------------------+
| 5 | 0x1B , 0x3B           |
+---+-----------------------+
]]></artwork></figure>

</section>
</section>
<section anchor="sec-document-updates" title="Document Updates">

<t>RFC Editor: Please remove this section.</t>

<section anchor="sec-00-01" title="Version -00 to -01">

<t><list style="symbols">
  <t>Improved background overview of EDHOC.</t>
  <t>Added explicit rules for converting OSCORE Sender/Recipient IDs to EDHOC connection identifiers following the removal of bstr_identifier from EDHOC.</t>
  <t>Revised section organization.</t>
  <t>Recommended number for EDHOC option changed to 21.</t>
  <t>Editorial improvements.</t>
</list></t>

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

<t>The authors sincerely thank Christian Amsuess, Klaus Hartke, Jim Schaad and Malisa Vucinic for their feedback and comments in the discussion leading up to this draft.</t>

<t>The work on this document has been partly supported by VINNOVA and the Celtic-Next project CRITISEC; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>

</section>


  </back>

<!-- ##markdown-source:
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
/Q/LM/zx3moAAA==

-->

</rfc>

