<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.6 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-core-oscore-edhoc-02" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.9.1 -->
  <front>
    <title abbrev="Profiling EDHOC for CoAP and OSCORE">Profiling EDHOC for CoAP and OSCORE</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-edhoc-02"/>
    <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>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>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="October" day="25"/>
    <area>Internet</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The lightweight authenticated key exchange protocol EDHOC can be run over CoAP and used by two peers to establish an OSCORE Security Context. This document further profiles this use of the EDHOC protocol, by specifying a number of additional and optional mechanisms. These especially include an optimization approach for combining the execution of EDHOC 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>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  Constrained RESTful Environments Working Group mailing list (core@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/core-wg/oscore-edhoc"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Ephemeral Diffie-Hellman Over COSE (EDHOC) <xref target="I-D.ietf-lake-edhoc" format="default"/> 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" format="default"/> and used for establishing a Security Context for Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613" format="default"/>.</t>
      <t>This document profiles this use of the EDHOC protocol, and specifies a number of additional and optional mechanisms. These especially include an optimization approach, that combines the EDHOC execution with the first subsequent OSCORE transaction (see <xref target="edhoc-in-oscore" format="default"/>). This allows for a minimum number of round trips necessary to setup the OSCORE Security Context and complete an OSCORE transaction, e.g., 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 <xref section="1.3" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>), thus allowing additional OSCORE protected CoAP data within target MTU sizes.</t>
      <t>Furthermore, this document defines:</t>
      <ul spacing="normal">
        <li>A method for deterministically converting an OSCORE Sender/Recipient ID to a corresponding EDHOC connection identifier (see <xref target="conversion" format="default"/>). While this method is required to be used when using the optimization above, it is recommended in general, since it ensures that an OSCORE Sender/Recipient ID is always converted to the EDHOC identifier with the smallest size.</li>
        <li>A number of parameters corresponding to different information elements of an EDHOC applicability statement (see <xref target="web-linking" format="default"/>). These can be specified as target attributes in the link to an EDHOC resource associated to that applicability statement, thus enabling an enhanced discovery of such resource for CoAP clients.</li>
      </ul>
      <section anchor="terminology" numbered="true" toc="default">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>The reader is expected to be familiar with terms and concepts defined in CoAP <xref target="RFC7252" format="default"/>, CBOR <xref target="RFC8949" format="default"/>, CBOR sequences <xref target="RFC8742" format="default"/>, OSCORE <xref target="RFC8613" format="default"/> and EDHOC <xref target="I-D.ietf-lake-edhoc" format="default"/>.</t>
      </section>
    </section>
    <section anchor="overview" numbered="true" toc="default">
      <name>EDHOC Overview</name>
      <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" format="default"/>. 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><xref section="A.3" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/> specifies how to transfer 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 transferred over CoAP.</t>
      <t><xref target="fig-non-combined" format="default"/> shows a CoAP Client and Server running EDHOC as Initiator and Responder, respectively. That is, the Client sends a POST request to a reserved EDHOC resource at the Server, by default at the Uri-Path "/.well-known/edhoc". The request payload consists of the CBOR simple value "true" (0xf5) concatenated with EDHOC message_1, which also includes the EDHOC connection identifier C_I of the Client.</t>
      <t>This triggers the EDHOC exchange at the Server, which replies with a 2.04 (Changed) response. The response payload consists of EDHOC message_2, which also includes the EDHOC connection identifier C_R of the Server. The Content-Format of the response may be set to "application/edhoc".</t>
      <t>Finally, the Client sends a POST request to the same EDHOC resource used earlier to send EDHOC message_1. The request payload consists of the EDHOC connection identifier C_R, concatenated with EDHOC message_3.</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 <xref section="A.2" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>. After that, they can use OSCORE to protect their communications as per <xref target="RFC8613" format="default"/>.</t>
      <t>The Client and Server are required to agree in advance on certain information and parameters describing how they should use EDHOC. These are specified in an applicability statement see <xref section="3.9" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>, associated to the used EDHOC resource.</t>
      <figure anchor="fig-non-combined">
        <name>EDHOC and OSCORE run sequentially</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
   CoAP Client                                       CoAP Server
(EDHOC Initiator)                                 (EDHOC Responder)
        |                                                  |
        |                                                  |
        | ----------------- EDHOC Request ---------------> |
        |   Header: 0.02 (POST)                            |
        |   Uri-Path: "/.well-known/edhoc"                 |
        |   Payload: true, EDHOC message_1                 |
        |                                                  |
        | <---------------- EDHOC Response---------------- |
        |              Header: 2.04 (Changed)              |
        |              Content-Format: application/edhoc   |
        |              Payload: EDHOC message_2            |
        |                                                  |
EDHOC verification                                         |
        |                                                  |
        | ----------------- EDHOC Request ---------------> |
        |   Header: 0.02 (POST)                            |
        |   Uri-Path: "/.well-known/edhoc"                 |
        |   Payload: C_R, EDHOC message_3                  |
        |                                                  |
        |                                         EDHOC verification
        |                                                  +
OSCORE Sec Ctx                                      OSCORE Sec Ctx
  Derivation                                          Derivation
        |                                                  |
        | ---------------- OSCORE Request ---------------> |
        |   Header: 0.02 (POST)                            |
        |                                                  |
        | <--------------- OSCORE Response --------------- |
        |                         Header: 2.04 (Changed)   |
        |                                                  |
]]></artwork>
      </figure>
      <t>As shown in <xref target="fig-non-combined" format="default"/>, this purely-sequential flow where EDHOC is run first and then OSCORE is used takes three round trips to complete.</t>
      <t><xref target="edhoc-in-oscore" format="default"/> 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" numbered="true" toc="default">
      <name>EDHOC Combined with OSCORE</name>
      <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" format="default"/>, 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" format="default"/>.</t>
      <figure anchor="fig-combined">
        <name>EDHOC and OSCORE combined</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
   CoAP Client                                       CoAP Server
(EDHOC Initiator)                                 (EDHOC Responder)
        |                                                  |
        | ----------------- EDHOC Request ---------------> |
        |   Header: 0.02 (POST)                            |
        |   Uri-Path: "/.well-known/edhoc"                 |
        |   Payload: true, EDHOC message_1                 |
        |                                                  |
        | <---------------- EDHOC Response---------------- |
        |              Header: Changed (2.04)              |
        |              Content-Format: application/edhoc   |
        |              Payload: EDHOC message_2            |
        |                                                  |
EDHOC verification                                         |
        +                                                  |
  OSCORE Sec Ctx                                           |
    Derivation                                             |
        |                                                  |
        | ------------ EDHOC + OSCORE Request -----------> |
        |   Header: 0.02 (POST)                            |
        |                                                  |
        |                                         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 a single EDHOC + OSCORE request, which conveys the pair (C_R, EDHOC message_3) within an OSCORE protected CoAP message.</t>
      <t>That is, the EDHOC + OSCORE request is in practice the OSCORE Request from <xref target="fig-non-combined" format="default"/>, as still sent to a protected resource and with the correct CoAP method and options intended for accessing that resource. At the same time, the EDHOC + OSCORE request also transports the pair (C_R, EDHOC message_3) required for completing the EDHOC exchange.</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" format="default"/>) in the EDHOC + OSCORE request. The processing of the EDHOC + OSCORE request is specified in <xref target="client-processing" format="default"/> for the Client side and in <xref target="server-processing" format="default"/> for the Server side.</t>
      <section anchor="edhoc-option" numbered="true" toc="default">
        <name>EDHOC Option</name>
        <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" format="default"/>, which extends Table 4 of <xref target="RFC7252" format="default"/>. 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" format="default"/>.</t>
        <figure anchor="fig-edhoc-option">
          <name>The EDHOC Option.</name>
          <artwork align="center" name="" type="" alt=""><![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" format="default"/>, before the rest of the message can be processed.</t>
        <t><xref target="fig-edhoc-opt" format="default"/> 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 anchor="fig-edhoc-opt">
          <name>CoAP message for EDHOC and OSCORE combined - signalled with the EDHOC Option</name>
          <artwork align="center" name="" type="" alt=""><![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" numbered="true" toc="default">
        <name>Client Processing</name>
        <t>The Client prepares an EDHOC + OSCORE request as follows.</t>
        <ol spacing="normal" type="1"><li>Compose EDHOC message_3 as per <xref section="5.4.2" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>.</li>
          <li>
            <t>Encrypt the original CoAP request as per <xref section="8.1" sectionFormat="of" target="RFC8613" format="default"/>, using the new OSCORE Security Context established after receiving EDHOC message_2.  </t>
            <t>
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" format="default"/>.</t>
          </li>
          <li>
            <t>Build a CBOR sequence <xref target="RFC8742" format="default"/> composed of two CBOR byte strings in the following order.  </t>
            <ul spacing="normal">
              <li>The first CBOR byte string is the EDHOC message_3 resulting from step 1.</li>
              <li>The second CBOR byte string has as value the OSCORE ciphertext of the OSCORE protected CoAP request resulting from step 2.</li>
            </ul>
          </li>
          <li>
            <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>
Note that the new payload includes EDHOC message_3, but it does not include the EDHOC connection identifier C_R. As the Client is the EDHOC Initiator, C_R encodes the OSCORE Sender ID of the Client, which is already specified as 'kid' in the OSCORE Option of the request from step 2, hence of the EDHOC + OSCORE request.</t>
          </li>
          <li>Signal the usage of this approach, by including the new EDHOC Option defined in <xref target="edhoc-option" format="default"/> into the EDHOC + OSCORE request.</li>
        </ol>
      </section>
      <section anchor="server-processing" numbered="true" toc="default">
        <name>Server Processing</name>
        <t>When receiving a request containing the EDHOC option, i.e., an EDHOC + OSCORE request, the Server MUST perform the following steps.</t>
        <ol spacing="normal" type="1"><li>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 reply with a 4.00 (Bad Request) error response.</li>
          <li>Extract EDHOC message_3 from the payload of the EDHOC + OSCORE request, as the first CBOR byte string in the CBOR sequence.</li>
          <li>Take the value of 'kid' from the OSCORE option of the EDHOC + OSCORE request (i.e., the OSCORE Sender ID of the Client), and use it to rebuild the EDHOC connection identifier C_R, as per <xref target="oscore-to-edhoc-id" format="default"/>.</li>
          <li>
            <t>Retrieve the correct EDHOC session by using the connection identifier C_R rebuilt at step 3.  </t>
            <t>
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>
Otherwise, perform the EDHOC processing on the EDHOC message_3 extracted at step 2 as per <xref section="5.4.3" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>, based on the protocol state of the retrieved EDHOC session.  </t>
            <t>
The applicability statement used in the EDHOC session is the same one associated to the EDHOC resource where the server received the request conveying EDHOC message_1 that started the session. This is relevant in case the server provides multiple EDHOC resources, which may generally refer to different applicability statements.</t>
          </li>
          <li>Establish a new OSCORE Security Context associated to the client as per <xref section="A.2" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>, using the EDHOC output from step 4.</li>
          <li>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.</li>
          <li>Rebuild the OSCORE protected CoAP request as the EDHOC + OSCORE request, where the payload is replaced with the OSCORE ciphertext extracted at step 6.</li>
          <li>Decrypt and verify the OSCORE protected CoAP request rebuilt at step 7, as per <xref section="8.2" sectionFormat="of" target="RFC8613" format="default"/>, by using the OSCORE Security Context established at step 5.</li>
          <li>Deliver the CoAP request resulting from step 8 to the application.</li>
        </ol>
        <t>If steps 4 (EDHOC processing) and 8 (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 <xref section="5.4.2" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>). The usage of EDHOC message_4 as defined in <xref section="5.5" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/> 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 <xref section="5.4.3" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/> and responds with an EDHOC error message with error code 1, formatted as defined in <xref section="6.2" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>. In particular, the CoAP response conveying the EDHOC error message MUST have Content-Format set to application/edhoc defined in <xref section="9.12" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>.</t>
        <t>If step 4 (EDHOC processing) is successfully completed but step 8 (OSCORE processing) fails, the same OSCORE error handling as defined in <xref section="8.2" sectionFormat="of" target="RFC8613" format="default"/> applies.</t>
      </section>
      <section anchor="example" numbered="true" toc="default">
        <name>Example of EDHOC + OSCORE Request</name>
        <t><xref target="fig-edhoc-opt-2" format="default"/> shows an example of EDHOC + OSCORE Request. In particular, the example assumes that:</t>
        <ul spacing="normal">
          <li>The used OSCORE Partial IV is 0, consistently with the first request protected with the new OSCORE Security Context.</li>
          <li>
            <t>The OSCORE Sender ID of the Client is 0x01.  </t>
            <t>
As per <xref target="oscore-to-edhoc-id" format="default"/>, this corresponds to the numeric EDHOC connection identifier C_R with value 1. When using the purely-sequential flow shown in <xref target="fig-non-combined" format="default"/>, this would be prepended to EDHOC message_3 as the CBOR integer 1 (0x01 in CBOR encoding), in the payload of the second EDHOC request.</t>
          </li>
          <li>The EDHOC option is registered with CoAP option number 21.</li>
        </ul>
        <figure anchor="fig-edhoc-opt-2">
          <name>Example of CoAP message with EDHOC and OSCORE combined</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
o  OSCORE option value: 0x090001 (3 bytes)

o  EDHOC option value: - (0 bytes)

o  EDHOC message_3: 0x52d5535f3147e85f1cfacd9e78abf9e0a81bbf (19 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 090001              ; OSCORE Option
     c0                     ; EDHOC Option
     ff 52d5535f3147e85f1cfacd9e78abf9e0a81bbf
        4d612f1092f1776f1c1668b3825e
   (57 bytes)
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="conversion" numbered="true" toc="default">
      <name>Conversion from OSCORE to EDHOC Identifiers</name>
      <t><xref section="A.1" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/> defines how an EDHOC connection identifier is converted to an OSCORE Sender/Recipient ID.</t>
      <t>In the following, <xref target="oscore-to-edhoc-id" format="default"/> defines a method for converting from OSCORE Sender/Recipient ID to EDHOC connection identifier.</t>
      <t>When running EDHOC through a certain EDHOC resource, the Client and Server MUST both use the conversion method defined in <xref target="oscore-to-edhoc-id" format="default"/> and MUST perform the additional message processing specified in <xref target="oscore-edhoc-message-processing" format="default"/>, if at least one of the following conditions hold.</t>
      <ul spacing="normal">
        <li>The applicability statement associated to the EDHOC resource indicates that the server supports the EDHOC + OSCORE request defined in <xref target="edhoc-in-oscore" format="default"/>.</li>
        <li>The applicability statement associated to the EDHOC resource indicates that the conversion method defined in <xref target="oscore-to-edhoc-id" format="default"/> is the one to use.</li>
      </ul>
      <t>Instead, if none of the above conditions hold, the Client and the Server can independently use any consistent conversion method, such as the one defined in <xref target="oscore-to-edhoc-id" format="default"/> or different ones defined in separate specifications. In particular, the Client and Server are not required to use the same conversion method. In fact, as per <xref section="A.1" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>, it is sufficient that the two connection identifiers C_I and C_R exchanged during an EDHOC execution are different and not "equivalent", hence not convertible to the same OSCORE Sender/Recipient ID.</t>
      <t>Even in case none of the above conditions hold, it is RECOMMENDED for the Client and Server to use the conversion method defined in <xref target="oscore-to-edhoc-id" format="default"/>, since it ensures that an OSCORE Sender/Recipient ID is always converted to the EDHOC identifier with the smallest size among the two equivalent ones.</t>
      <section anchor="oscore-to-edhoc-id" numbered="true" toc="default">
        <name>Conversion Method</name>
        <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 <xref section="A.1" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>.</t>
        <t>An OSCORE Sender/Recipient ID, OSCORE_ID, is converted to an EDHOC connection identifier, EDHOC_ID, as follows.</t>
        <ul spacing="normal">
          <li>If OSCORE_ID is 0 bytes in size, it is converted to the empty byte string EDHOC_ID (0x40 in CBOR encoding).</li>
          <li>
            <t>If OSCORE_ID has a size in bytes different than 0, 1, 2, 3, 5 or 9, it is converted to a byte-valued EDHOC_ID, i.e., a CBOR byte string with value OSCORE_ID.  </t>
            <t>
For example, the OSCORE_ID 0x001122334455 is converted to the byte-valued EDHOC_ID 0x001122334455 (0x46001122334455 in CBOR encoding).</t>
          </li>
          <li>
            <t>If OSCORE_ID has a size in bytes equal to 1, 2, 3, 5 or 9 the following applies.  </t>
            <ul spacing="normal">
              <li>
                <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.      </t>
                <t>
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>
              </li>
              <li>
                <t>If OSCORE_ID is <em>not</em> a valid CBOR encoding for an integer value (i.e., it <em>cannot</em> be correctly decoded as a CBOR integer), then it is converted to a byte-valued EDHOC_ID having OSCORE_ID as its value.      </t>
                <t>
For example, the OSCORE_ID 0xFF is converted to the byte-valued EDHOC_ID 0xFF (0x41FF in CBOR encoding).</t>
              </li>
            </ul>
            <t>
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" format="default"/>.</t>
          </li>
        </ul>
        <t>When performing the conversions above, the two peers MUST always refer to Deterministically Encoded CBOR as specified in <xref section="4.2.1" sectionFormat="of" target="RFC8949" format="default"/>, consistently with what is required by the EDHOC protocol <xref target="I-D.ietf-lake-edhoc" format="default"/>.</t>
      </section>
      <section anchor="oscore-edhoc-message-processing" numbered="true" toc="default">
        <name>Additional Processing of EDHOC Messages</name>
        <t>This section specifies additional EDHOC message processing compared to what is specified in <xref section="5" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>.</t>
        <section anchor="initiator-processing-of-message-1" numbered="true" toc="default">
          <name>Initiator Processing of Message 1</name>
          <t>The Initiator selects C_I as follows.</t>
          <ol spacing="normal" type="1"><li>The Initiator initializes a set ID_SET as the empty set.</li>
            <li>The Initiator selects an available OSCORE Recipient ID, ID*, which is not included in ID_SET.</li>
            <li>The Initiator converts ID* to the EDHOC connection identifier C_I, as per <xref target="oscore-to-edhoc-id" format="default"/>.</li>
            <li>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.</li>
          </ol>
        </section>
        <section anchor="responder-processing-of-message-1" numbered="true" toc="default">
          <name>Responder Processing of Message 1</name>
          <t>The Responder MUST discontinue the protocol and reply with an EDHOC error message with error code 1, formatted as defined in <xref section="6.2" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>, 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" format="default"/> when converting its (to be) OSCORE Recipient ID to C_I.</t>
        </section>
        <section anchor="responder-processing-of-message-2" numbered="true" toc="default">
          <name>Responder Processing of Message 2</name>
          <t>The Responder selects C_R as follows.</t>
          <ol spacing="normal" type="1"><li>The Responder initializes a set ID_SET as the empty set.</li>
            <li>The Responder selects an available OSCORE Recipient ID, ID*, which is not included in ID_SET.</li>
            <li>The Responder converts ID* to the EDHOC connection identifier C_R, as per <xref target="oscore-to-edhoc-id" format="default"/>.</li>
            <li>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.</li>
          </ol>
        </section>
        <section anchor="initiator-processing-of-message-2" numbered="true" toc="default">
          <name>Initiator Processing of Message 2</name>
          <t>If any of the following conditions holds, the Initiator MUST discontinue the protocol and reply with an EDHOC error message with error code 1, formatted as defined in <xref section="6.2" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>.</t>
          <ul spacing="normal">
            <li>C_R is equal byte-by-byte to the C_I that was specified in EDHOC message_1.</li>
            <li>
              <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).  </t>
              <t>
In fact, this would mean that the Responder has not followed the conversion rule in <xref target="oscore-to-edhoc-id" format="default"/> when converting its (to be) OSCORE Recipient ID to C_R.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="app-statements" numbered="true" toc="default">
      <name>Extension and Consistency of Applicability Statement</name>
      <t>The applicability statement referred by the Client and Server can include the information elements introduced below, in accordance with the specified consistency rules.</t>
      <t>If the Server supports the EDHOC + OSCORE request within an EDHOC execution started at a certain EDHOC resource, then the applicability statement associated to that resource:</t>
      <ul spacing="normal">
        <li>MUST NOT specify that EDHOC message_4 shall be sent.</li>
        <li>SHOULD explicitly specify support for the EDHOC + OSCORE request.</li>
        <li>
          <t>SHOULD explicitly specify that the method to convert from EDHOC to OSCORE identifiers is the one defined in <xref target="conversion" format="default"/> and MUST NOT specify any other method than that.  </t>
          <t>
If the support for the EDHOC + OSCORE request is explicitly specified and the method defined in <xref target="conversion" format="default"/> is not explicitly specified, then the Client and Server MUST use it as conversion method.</t>
        </li>
      </ul>
      <t>If the Server does not support the EDHOC + OSCORE request within an EDHOC execution started at a certain EDHOC resource, then the applicability statement associated to that resource MAY specify a method to convert from EDHOC to OSCORE identifiers. In such a case, the Client and Server MUST use the specified conversion method, which MAY be the one defined in <xref target="conversion" format="default"/>.</t>
    </section>
    <section anchor="web-linking" numbered="true" toc="default">
      <name>Web Linking</name>
      <t><xref section="9.13" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/> registers the resource type "core.edhoc", which can be used as target attribute in a web link <xref target="RFC8288" format="default"/> to an EDHOC resource, e.g., using a link-format document <xref target="RFC6690" format="default"/>. This enables Clients to discover the presence of EDHOC resources at a Server, possibly using the resource type as filter criterion.</t>
      <t>At the same time, the applicability statement associated to an EDHOC resource provides a number of information describing how the EDHOC protocol can be used through that resource. While a Client may become aware of the applicability statement through several means, it would be convenient to obtain its information elements upon discovering the EDHOC resources at the Server. This might aim at discovering especially the EDHOC resources whose associated applicability statement denotes a way of using EDHOC which is most suitable to the Client, e.g., with EDHOC cipher suites or authentication methods that the Client also supports or prefers.</t>
      <t>That is, it would be convenient that a Client discovering an EDHOC resource contextually obtains relevant pieces of information from the applicability statement associated to that resource. The resource discovery can occur by means of a direct interaction with the Server, or instead by means of the CoRE Resource Directory <xref target="I-D.ietf-core-resource-directory" format="default"/>, where the Server may have registered the links to its resources.</t>
      <t>In order to enable the above, this section defines a number of parameters, each of which can be optionally specified as a target attribute with the same name in the link to the respective EDHOC resource, or as filter criteria in a discovery request from the Client. When specifying these parameters in a link to an EDHOC resource, the target attribute rt="core.edhoc" MUST be included, and the same consistency rules defined in <xref target="app-statements" format="default"/> for the corresponding information elements of an applicability statement MUST be followed.</t>
      <t>The following parameters are defined.</t>
      <ul spacing="normal">
        <li>'method', specifying an authentication method supported by the Server. This parameter MUST specify a single value, which is taken from the 'Value' column of the "EDHOC Method Type" registry defined in <xref section="9.3" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>. This parameter MAY occur multiple times, with each occurrence specifying a different authentication method.</li>
        <li>'csuite', specifying an EDHOC ciphersuite supported by the Server. This parameter MUST specify a single value, which is taken from the 'Value' column of the "EDHOC Cipher Suites" registry defined in <xref section="9.2" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>. This parameter MAY occur multiple times, with each occurrence specifying a different authentication method.</li>
        <li>'cred_t', specifying type of authentication credentials supported by the Server. This parameter MAY occur multiple times, with each occurrence specifying a different authentication credential type. Possible values are: "x509", for X.509 certificate <xref target="RFC5280" format="default"/>; "c509", for C509 certificate <xref target="I-D.ietf-cose-cbor-encoded-cert" format="default"/>; "cwt" for CWT <xref target="RFC8392" format="default"/>; "ccs" for CWT Claims Set (CCS) <xref target="RFC8392" format="default"/>.</li>
        <li>
          <t>'idcred_t', specifying the type of identifiers supported by the Server for identifying authentication credentials. This parameter MUST specify a single value, which is taken from the 'Label' column of the "COSE Headers Parameters" registry <xref target="COSE.Header.Parameters" format="default"/>. This parameter MAY occur multiple times, with each occurrence specifying a different type of identifier for authentication credentials.  </t>
          <t>
Note that the values in the 'Label' column of the "COSE Headers Parameters" registry are strongly typed. On the contrary, Link Format is weakly typed and thus does not distinguish between, for instance, the string value "-10" and the integer value -10. Thus, if responses in Link Format are returned, string values which look like an integer are not supported. Therefore, such values MUST NOT be used in the 'idcred_t' parameter.</t>
        </li>
        <li>
          <t>'ead_1', 'ead_2', 'ead_3' and 'ead_4', specifying if the Server supports the use of external authorization data EAD_1, EAD_2, EAD_3 and EAD_4, respectively (see <xref section="3.8" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>). For each of these parameters, the following applies.  </t>
          <ul spacing="normal">
            <li>It MUST occur at most once, with its presence denoting support from the server for the respective external authorization data.</li>
            <li>It MUST specify a single value, which is taken from the 'Label' column of the "EDHOC External Authorization Data" registry defined in <xref section="9.5" sectionFormat="of" target="I-D.ietf-lake-edhoc" format="default"/>.</li>
          </ul>
        </li>
        <li>'comb_req', specifying whether the server supports the EDHOC + OSCORE request defined in <xref target="edhoc-in-oscore" format="default"/>, with its presence denoting support from the server. A value MUST NOT be given to this parameter and any present value MUST be ignored by parsers.</li>
        <li>'conv_osc_id', specifying the method used to convert from OSCORE to EDHOC identifiers. If such a method is the one defined in <xref target="conversion" format="default"/>, this parameter MUST take value 0.</li>
      </ul>
      <t>The example in <xref target="fig-web-link-example" format="default"/> shows how a Client discovers one EDHOC resource at a Server, obtaining information elements from the applicability statement. The Link Format notation from <xref section="5" sectionFormat="of" target="RFC6690" format="default"/> is used.</t>
      <figure anchor="fig-web-link-example">
        <name>The Web Link</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
REQ: GET /.well-known/core

RES: 2.05 Content
    </sensors/temp>;osc,
    </sensors/light>;if="sensor",
    </.well-known/edhoc>;rt="core.edhoc";csuite="0";csuite="2";
    method="0";cred_t="c509";cred_t="ccs";idcred_t="4";comb_req
]]></artwork>
      </figure>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The same security considerations from OSCORE <xref target="RFC8613" format="default"/> and EDHOC <xref target="I-D.ietf-lake-edhoc" format="default"/> hold for this document.</t>
      <t>TODO: more considerations</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <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" numbered="true" toc="default">
        <name>CoAP Option Numbers Registry</name>
        <t>IANA is asked to enter the following option number to the "CoAP Option Numbers" registry within the "CoRE Parameters" registry group.</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" format="default"/>, and they both allow the EDHOC Option to always result in an overall size of 1 byte. This is because:</t>
        <ul spacing="normal">
          <li>The EDHOC option is always empty, i.e., with zero-length value; and</li>
          <li>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.</li>
        </ul>
        <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>
        <artwork align="center" name="" type="" alt=""><![CDATA[
+--------+-------+-------------------+
| Number | Name  | Reference         |
+--------+-------+-------------------+
| TBD21  | EDHOC | [[this document]] |
+--------+-------+-------------------+
]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC6690" target="https://www.rfc-editor.org/info/rfc6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links.  Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type.  "RESTful" refers to the Representational State Transfer (REST) architecture.  A well-known URI is defined as a default entry point for requesting the links hosted by a server.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2014"/>
            <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 fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8288" target="https://www.rfc-editor.org/info/rfc8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson">
              <organization/>
            </author>
            <author fullname="F. Palombini" initials="F." surname="Palombini">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <date month="July" year="2019"/>
            <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 fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes the Concise Binary Object Representation (CBOR) Sequence format and associated media type "application/cbor-seq".  A CBOR Sequence consists of any number of encoded CBOR data items, simply concatenated in sequence.</t>
              <t>Structured syntax suffixes for media types allow other media types to build on them and make it explicit that they are built on an existing media type as their foundation.  This specification defines and registers "+cbor-seq" as a structured syntax suffix for CBOR Sequences.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8742"/>
          <seriesInfo name="DOI" value="10.17487/RFC8742"/>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="I-D.ietf-core-resource-directory" target="https://www.ietf.org/archive/id/draft-ietf-core-resource-directory-28.txt">
          <front>
            <title>CoRE Resource Directory</title>
            <author fullname="Christian Amsüss">
	 </author>
            <author fullname="Zach Shelby">
              <organization>ARM</organization>
            </author>
            <author fullname="Michael Koster">
              <organization>SmartThings</organization>
            </author>
            <author fullname="Carsten Bormann">
              <organization>Universitaet Bremen TZI</organization>
            </author>
            <author fullname="Peter van der Stok">
              <organization>consultant</organization>
            </author>
            <date day="7" month="March" year="2021"/>
            <abstract>
              <t>   In many IoT applications, direct discovery of resources is not
   practical due to sleeping nodes, or networks where multicast traffic
   is inefficient.  These problems can be solved by employing an entity
   called a Resource Directory (RD), which contains information about
   resources held on other servers, allowing lookups to be performed for
   those resources.  The input to an RD is composed of links and the
   output is composed of links constructed from the information stored
   in the RD.  This document specifies the web interfaces that an RD
   supports for web servers to discover the RD and to register,
   maintain, lookup and remove information on resources.  Furthermore,
   new target attributes useful in conjunction with an RD are defined.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-resource-directory-28"/>
        </reference>
        <reference anchor="I-D.ietf-lake-edhoc" target="https://www.ietf.org/archive/id/draft-ietf-lake-edhoc-12.txt">
          <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 day="20" month="October" 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,
   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-12"/>
        </reference>
        <reference anchor="COSE.Header.Parameters" target="https://www.iana.org/assignments/cose/cose.xhtml#header-parameters">
          <front>
            <title>COSE Header Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC8392" target="https://www.rfc-editor.org/info/rfc8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones">
              <organization/>
            </author>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem">
              <organization/>
            </author>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties.  The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection.  A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value.  CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert" target="https://www.ietf.org/archive/id/draft-ietf-cose-cbor-encoded-cert-02.txt">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed">
              <organization>Nexus Group</organization>
            </author>
            <date day="12" month="July" year="2021"/>
            <abstract>
              <t>   This document specifies a CBOR encoding of X.509 certificates.  The
   resulting certificates are called C509 Certificates.  The CBOR
   encoding supports a large subset of RFC 5280 and all certificates
   compatible with the RFC 7925, IEEE 802.1AR (DevID), CNSA, RPKI, GSMA
   eUICC, and CA/Browser Forum Baseline Requirements profiles.  When
   used to re-encode DER encoded X.509 certificates, the CBOR encoding
   can in many cases reduce the size of RFC 7925 profiled certificates
   with over 50%.  The CBOR encoded structure can alternatively be
   signed directly ("natively signed"), which does not require re-
   encoding for the signature to be verified.  The document also
   specifies C509 COSE headers, a C509 TLS certificate type, and a C509
   file format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cbor-encoded-cert-02"/>
        </reference>
      </references>
    </references>
    <section anchor="sec-cbor-numeric-check" numbered="true" toc="default">
      <name>Checking CBOR Encoding of Numeric Values</name>
      <t>A binary string of N bytes in size is a valid CBOR encoding of an integer value if and only if both the following conditions hold, with reference to the table below.</t>
      <ul spacing="normal">
        <li>The size N is one of the values specified in the "Size" column.</li>
        <li>The first byte of the binary string is equal to one of the byte values specified in the "First byte" column, exactly for the row having N as value of the "Size" column.</li>
      </ul>
      <artwork align="center" name="" type="" alt=""><![CDATA[
+------+-----------------------+
| Size | First byte            |
+------+-----------------------+
| 1    | 0x00-0x17 , 0x20-0x37 |
+------+-----------------------+
| 2    | 0x18 , 0x38           |
+------+-----------------------+
| 3    | 0x19 , 0x39           |
+------+-----------------------+
| 5    | 0x1A , 0x3A           |
+------+-----------------------+
| 9    | 0x1B , 0x3B           |
+------+-----------------------+
]]></artwork>
    </section>
    <section anchor="sec-document-updates" numbered="true" toc="default">
      <name>Document Updates</name>
      <t>RFC Editor: Please remove this section.</t>
      <section anchor="sec-01-02" numbered="true" toc="default">
        <name>Version -01 to -02</name>
        <ul spacing="normal">
          <li>New title, abstract and introduction.</li>
          <li>Restructured table of content.</li>
          <li>Alignment with latest format of EDHOC messages.</li>
          <li>Guideline on ID conversions based on applicability statement.</li>
          <li>Clarifications, extension and consistency on applicability statement.</li>
          <li>Section on web-linking.</li>
          <li>RFC8126 terminology in IANA considerations.</li>
          <li>Revised Appendix "Checking CBOR Encoding of Numeric Values".</li>
        </ul>
      </section>
      <section anchor="sec-00-01" numbered="true" toc="default">
        <name>Version -00 to -01</name>
        <ul spacing="normal">
          <li>Improved background overview of EDHOC.</li>
          <li>Added explicit rules for converting OSCORE Sender/Recipient IDs to EDHOC connection identifiers following the removal of bstr_identifier from EDHOC.</li>
          <li>Revised section organization.</li>
          <li>Recommended number for EDHOC option changed to 21.</li>
          <li>Editorial improvements.</li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank Christian Amsuess, Klaus Hartke, Jim Schaad and Malisa Vucinic for their feedback and comments.</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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
8VvdmqtzKiQqZegJA3tivJphpu0GyPj0LA3Di+DqIFLUsbwO6Ngrl384kwFe
riPUenPU+4u4Cp456o6hbHXYF4QRnWzyz9QuQVXOKuvEHjNbaenW0aWIq7b9
q2r2XbtaqZWyAEvX0bfbANeulZPNdtkjpaWRecUKs3CJ7HyGQsYKrdXmWpCv
BGdNs62+7jr/7QJoez1xLNnnQalAqdPbtYxKX9Q96zR5RsOKZ+TJ0bUcIzX8
DoC6j6DGke1Yco+Nu6epzalfgGFAGpMBIbZ15YuVXZuEhD3dc8T/BtBOkSZ7
1IWO/nNFXViXv66Kb8jmad1OJyTJj6kmEVYcrqw2TVjt2/JpdmtXVhXJsiM0
O72d5YcplR2kRUQsHXQ3Z1H1MUG7Cc17gOpIuZ9KotHBd9C0SSlzX/Q/UIM4
py3D3OyNSvuRyaUjI/Qd/wldCDHoqFhk0RAI1ZPvrjxz1JAJU0SskvB+C5Em
qIiwqCtJ5cSaOppWL9VphHO/N1gZCVm5PRgGaGQBcuoU6zVxkLuvqErVI7zC
GexMrA6nNsJclSa8Vqk6HZx8DOiIpKHuWlnLE0ym8VN3tZhzd2jPmiZC3jdY
417qt0DdAZmzzUbdQ5j3pImvvcUXwdc7/QFx2e/osgLYTi0wrH1uEnJGcJgH
Vujcnp53tW1N83/sq5DH4SpbWZU92gYcueb3BFabReN7j10S3KxGB9jFxGtO
sqQsdZ1i8Bs6A0c5BbnglFmR1sxPpVZJNWNqbQpQDfAQbX9APRrw7xQtQFLt
NJzadvS+Nqe048yo9uLJpJSnuKmZ3jLidfW1KkkeDhozC2k1Xk1YO8Ct2u/3
AeCNLRUgb+Gz3sTq0S4srf6MQQeOtTMMd3a2diZbg+1ncm9nMhhPgnG4L5/t
BaPJvuwHe4PRaCI2BvvuQDXDAofaHQwng/4+/N+zZ7sw0GB3d2+0tTfckfC6
hfWVMr0yeUBjvW22LbTsUNBuHhB19j9ub/eHO+FgUkmlPOe3t7tkiXGvQU7Y
Aa76W/vPtmsvUMKBn9naF7vj3cnu1u4A/t3bnTzbwheeUwXpa8zxcmzlQLSx
pWc8gz+1+dXdLaH2ozK8Fx7iZ8dNySJ81o3f8KOTiVhva0yR1Xa4fAPwoY2d
Z3oP1kgUdIemusrKQS9r4BwXfljp1ROUT6qXEVtq9ritit8ZmZGTxHZ6H/lt
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
59cT7JkAAA==

-->

</rfc>
