<?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-rfc version 1.6.24 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-marin-yang-edhoc-oscore-00" category="std" consensus="true" submissionType="IETF" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="yang-edhoc-oscore">A YANG data model for SDN-based key management with EDHOC and OSCORE</title>
    <seriesInfo name="Internet-Draft" value="draft-marin-yang-edhoc-oscore-00"/>
    <author initials="R." surname="Marin-Lopez(Ed.)" fullname="Rafa Marin-Lopez">
      <organization abbrev="University of Murcia">University of Murcia</organization>
      <address>
        <postal>
          <street>Murcia  30100</street>
          <country>Spain</country>
        </postal>
        <email>rafa@um.es</email>
      </address>
    </author>
    <author initials="G." surname="Lopez-Millan" fullname="Gabriel Lopez-Millan">
      <organization abbrev="University of Murcia">University of Murcia</organization>
      <address>
        <postal>
          <street>Murcia  30100</street>
          <country>Spain</country>
        </postal>
        <email>gabilm@um.es</email>
      </address>
    </author>
    <author initials="L." surname="Toutain" fullname="Laurent Toutain">
      <organization abbrev="IMT">Institut Mines Telecom Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie CS 17607 35576 Cesson-Sevigne Cedex</street>
          <country>France</country>
        </postal>
        <email>laurent.toutain@imt-atlantique.fr</email>
      </address>
    </author>
    <author initials="A." surname="Fernandez" fullname="Alex Fernandez">
      <organization abbrev="IMT">Institut Mines Telecom Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie CS 17607 35576 Cesson-Sevigne Cedex</street>
          <country>France</country>
        </postal>
        <email>javier-alejandro.fernandez-cordova@imt-atlantique.net</email>
      </address>
    </author>
    <date year="2023" month="February" day="28"/>
    <area>SEC</area>
    <workgroup>CORE Working Group</workgroup>
    <abstract>
      <t>This document defines YANG data models which allow a Software-Defined Networking (SDN) Controller (Controller) using NETCONF, RESTCONF or CORECONF to provide configuration and monitoring Internet-of-Things devices (Things) that support Ephemeral Diffie-Hellman Over COSE (EDHOC) and/or OSCORE. In particular, a YANG data model defines the required configuration parameters to perform EDHOC between two Things (EDHOC case). Another YANG data model is to configure the OSCORE contexts directly into the Thing (OSCORE case). The service described in this document allows the configuration and monitoring of Things that supports EDHOC and OSCORE or only OSCORE by allowing a protected Thing-to-Thing communication based on CoAP.</t>
      <t>This document focuses on providing YANG data models for configuring EDHOC or OSCORE. This allows OSCORE establishment with minimal intervention by the network administrator.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>Software-Defined Networking (SDN) is an architecture that enables administrators to directly program, orchestrate, control, and manage network resources through software. The SDN paradigm relocates the control of network resources to a centralized entity, namely the SDN Controller (from now on, the Controller). Controllers configure and manage distributed network resources and provide an abstracted view of the network resources to SDN applications. SDN applications can customize and automate the operations (including management) of the abstracted network resources in a programmable manner via this interface <xref target="RFC7149"/> <xref target="ITU-T.Y.3300"/> <xref target="ONF-SDN-Architecture"/> <xref target="ONF-OpenFlow"/>.</t>
      <t>Ephemeral Diffie-Hellman Over COSE (EDHOC, <xref target="I-D.ietf-lake-edhoc"/>) is a very compact and lightweight authenticated key exchange protocol designed for highly constrained devices. The main objective for EDHOC is to be a matching security handshake protocol to Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/>, i.e., to provide authentication and session key establishment for IoT use cases such as those built on Constrained Application Protocol (CoAP) <xref target="RFC7252"/> involving 'Things' with embedded microcontrollers, sensors, and actuators. EDHOC reuses the same lightweight primitives as Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613"/>, Concise Binary Object Representation (CBOR) <xref target="RFC8949"/> and CBOR Object Signing and Encryption (COSE) <xref target="RFC9052"/>, and specifies the use of CoAP, but is not bound to a particular transport protocol.</t>
      <t>OSCORE is a method for application-layer protection (integrity and confidentiality) of CoAP, using COSE. OSCORE provides end-to-end protection between Things communicating using CoAP or CoAP-mappable HTTP.</t>
      <t>With the growth of SDN-based scenarios where network resources are deployed and managed in an autonomous and dynamic manner, a mechanism to configure EDHOC and OSCORE from a centralized entity (the Controller) may become more relevant in the industry. Nowadays, this security association management has been standardized with IKEv2 and IPsec <xref target="RFC9061"/>, even for contrained devices.</t>
      <!-- I miss a little more motivation than just It can be done like this-->

<t>This document defines two YANG data models for two different cases: EDHOC case, where the Thing supports EDHOC (and OSCORE); and OSCORE case, where the Thing only supports OSCORE and not EDHOC. An external entity, such as the Controller can configure parameters into the EDHOC and/or OSCORE implementation that allow protecting CoAP messages between Things.</t>
      <t>In summary, the objectives of this document are:</t>
      <ul spacing="normal">
        <li>To describe the architecture for SDN-based key management for EDHOC and OSCORE, which allows the establishment and management of OSCORE contexts from the Controller in order to protect specific CoAP exchanges in a Thing-to-Thing communication.</li>
        <li>To define the interfaces required to manage and monitor EDHOC and OSCORE in the Thing from an SDN Controller. YANG data models are defined for configuration and state data for EDHOC and OSCORE. The YANG data models can be used via existing protocols, such as the Network Configuration Protocol (NETCONF) <xref target="RFC6241"/>, RESTCONF <xref target="RFC8040"/>, or CORECONF <xref target="I-D.ietf-core-comi"/> (<bcp14>RECOMMENDED</bcp14>). Thus, this document defines two YANG modules (see Section <xref target="yang-dm"/>) but does not define any new protocol.
<!--Rafa: So far we have not paid attention to the state data -->
        </li>
      </ul>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="overview">
      <name>SDN-based key management for EDHOC and OSCORE</name>
      <t>As mentioned in Section <xref target="intro"/>, two cases are considered, depending on whether the Thing ships both EDHOC and OSCORE, or only OSCORE: the EDHOC case and the OSCORE case, respectively.</t>
      <!-- Gabi:  similar to IPsec RFC, the objetive is protect communication using IPsec/OSCORE so we assume that IPsec/OSCORE is always in the thing, so cases could be EHDOC case and EHDOC-less case. It sounds odd anyway. -->

<!--Rafa: Think about this , we can postpone the decision to later on -->

<section anchor="edhoc-sect">
        <name>EDHOC Case: EDHOC+OSCORE in the Things</name>
        <t>In this case, the Thing implements EDHOC and OSCORE. The Controller is in charge of managing and applying EDHOC connection information, determining which Thing will act as EDHOC Initiator or EDHOC responder; identifying the resources to be protected with OSCORE, deriving and delivering EDHOC identities, credentials, etc.) and other EDHOC configuration parameters (e.g., cryptographic algorithms) to the Thing, necessary for EDHOC negotiation.</t>
        <t>With this information, the EDHOC implementation can operate to establish the OSCORE contexts. The Administrator establishes the general security requirements (through the Northbound Interface), and the Controller translates these requirements into EDHOC configuration that will be installed into the Thing (through the Southbound Interface). With that information, the device can just run EDHOC with other Things to establish OSCORE contexts (when the access to the resource mandates so). <xref target="edhoc-case"/> shows the different layers and corresponding functionality.</t>
        <!-- Rafa: I believe this figure could be replaced by the Fig. with two nodes so that we can simplify eveything.-->
<figure anchor="edhoc-case">
          <name>EDHOC Case: EDHOC+OSCORE in the Thing</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="480" viewBox="0 0 480 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 8,160" fill="none" stroke="black"/>
                <path d="M 8,208 L 8,272" fill="none" stroke="black"/>
                <path d="M 176,72 L 176,104" fill="none" stroke="black"/>
                <path d="M 176,168 L 176,200" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,64" fill="none" stroke="black"/>
                <path d="M 360,112 L 360,160" fill="none" stroke="black"/>
                <path d="M 360,208 L 360,272" fill="none" stroke="black"/>
                <path d="M 8,32 L 360,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 360,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 360,112" fill="none" stroke="black"/>
                <path d="M 8,160 L 360,160" fill="none" stroke="black"/>
                <path d="M 8,208 L 360,208" fill="none" stroke="black"/>
                <path d="M 16,240 L 352,240" fill="none" stroke="black"/>
                <path d="M 8,272 L 360,272" fill="none" stroke="black"/>
                <g class="text">
                  <text x="120" y="52">Key</text>
                  <text x="180" y="52">Management</text>
                  <text x="252" y="52">System</text>
                  <text x="424" y="52">Administrator</text>
                  <text x="236" y="84">Northbound</text>
                  <text x="232" y="100">Interface</text>
                  <text x="144" y="132">EDHOC</text>
                  <text x="224" y="132">Configuration</text>
                  <text x="384" y="132">SDN</text>
                  <text x="196" y="148">Generation</text>
                  <text x="412" y="148">Controller</text>
                  <text x="236" y="180">Southbound</text>
                  <text x="232" y="196">Interface</text>
                  <text x="368" y="196">(CORECONF,RESTCONF,...)</text>
                  <text x="192" y="228">EDHOC</text>
                  <text x="392" y="228">Thing</text>
                  <text x="196" y="260">OSCORE</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
         +-------------------------------------------+
         |            Key Management System          | Administrator
         +-------------------------------------------+
                              |  Northbound
                              |  Interface
         +-------------------------------------------+
         |              EDHOC Configuration          | SDN
         |                  Generation               | Controller
         +-------------------------------------------+
                              |  Southbound
                              |  Interface (CORECONF,RESTCONF,...)
         +-------------------------------------------+
         |                    EDHOC                  | Thing
         |-------------------------------------------| 
         |                    OSCORE                 | 
         +-------------------------------------------+
]]></artwork>
          </artset>
        </figure>
        <t>To support this case, a YANG data model for EDHOC configuration data and state data needs to be defined for the Southbound Interface (see <xref target="yang-dm"/>).</t>
      </section>
      <section anchor="oscore-sect">
        <name>OSCORE case: only OSCORE in the Things</name>
        <t>In this case, the Thing does not deploy EDHOC and, therefore, the Controller has to provide the OSCORE contexts and to manage them.</t>
        <t>As shown in <xref target="oscore-case"/>, when an Administrator enforces protection policies through the Northbound Interface, the Controller translates these requirements directly into OSCORE contexts, which are installed in the Thing.</t>
        <figure anchor="oscore-case">
          <name>OSCORE Case: only OSCORE (No EDHOC) in the Thing</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="288" width="464" viewBox="0 0 464 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 8,160" fill="none" stroke="black"/>
                <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
                <path d="M 168,72 L 168,104" fill="none" stroke="black"/>
                <path d="M 168,168 L 168,216" fill="none" stroke="black"/>
                <path d="M 344,32 L 344,64" fill="none" stroke="black"/>
                <path d="M 344,112 L 344,152" fill="none" stroke="black"/>
                <path d="M 344,224 L 344,256" fill="none" stroke="black"/>
                <path d="M 8,32 L 344,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 344,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 344,112" fill="none" stroke="black"/>
                <path d="M 8,160 L 272,160" fill="none" stroke="black"/>
                <path d="M 288,160 L 352,160" fill="none" stroke="black"/>
                <path d="M 8,224 L 344,224" fill="none" stroke="black"/>
                <path d="M 16,256 L 336,256" fill="none" stroke="black"/>
                <g class="text">
                  <text x="96" y="52">Key</text>
                  <text x="156" y="52">Management</text>
                  <text x="228" y="52">System</text>
                  <text x="408" y="52">Administrator</text>
                  <text x="228" y="84">Northbound</text>
                  <text x="224" y="100">Interface</text>
                  <text x="172" y="132">OSCORE</text>
                  <text x="368" y="132">SDN</text>
                  <text x="132" y="148">contexts</text>
                  <text x="212" y="148">generation</text>
                  <text x="396" y="148">Controller</text>
                  <text x="280" y="164">s</text>
                  <text x="228" y="180">Southbound</text>
                  <text x="224" y="196">Interface</text>
                  <text x="360" y="196">(CORECONF,RESTCONF,...)</text>
                  <text x="172" y="244">OSCORE</text>
                  <text x="376" y="244">Thing</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
         +-----------------------------------------+
         |         Key Management System           | Administrator
         +-----------------------------------------+
                             |  Northbound
                             |  Interface
         +-----------------------------------------+
         |                 OSCORE                  | SDN
         |           contexts generation           | Controller
         +---------------------------------s--------+
                             |  Southbound
                             |  Interface (CORECONF,RESTCONF,...)
                             |
         +-----------------------------------------+
         |                 OSCORE                  | Thing
         |-----------------------------------------| 
]]></artwork>
          </artset>
        </figure>
        <t>In order to support the OSCORE case, a YANG data model for OSCORE configuration data and state data <bcp14>MUST</bcp14> be defined for the Southbound Interface (see <xref target="yang-dm"/>). Specifically, the OSCORE case assumes that the Controller has to perform some security functions that EDHOC typically does, specifically the OSCORE context generation and management.</t>
      </section>
    </section>
    <section anchor="edhoc-vs-oscore">
      <name>EDHOC case vs OSCORE case</name>
      <t>In principle, the EDHOC case offloads the Controller the tasks of monitoring, generating and configuring specific OSCORE contexts, including cryptographic material generation. However, the Things require more resources, such as memory for the EDHOC implementation and computation because it involves Diffie-Hellman (DH) exchanges. Beside, if Things run EDHOC, the data plane network traffic between Things increases due to the additional EDHOC protocol exchange, so it should be taken in account in very constrained data plane networks.</t>
      <!-- On the other hand, if the Thing has enough resources,  -->

<!--, and, additionally. the network data plane is not overloaded with the EDHOC traffic. -->

<t>Alternatively, the OSCORE case may benefit of the deployment in more resource-constrained Things, because EDHOC does not need to be performed between two Things. Additionally, the network data plane is not overloaded with the EDHOC traffic. On the contrary, the complexity of creating and managing OSCORE contexts, including cryptographic material, is shifted to the Controller since EDHOC is not in the Thing. As a consequence, this may result in a more complex implementation in the Controller side in comparison with the EDHOC case. This complexity may create some scalability and performance issues when the number of Things is high.</t>
      <t>Nevertheless, literature around SDN-based network management using a centralized controller is aware of scalability and performance issues, and solutions have been already provided and discussed (e.g., hierarchical controllers, having multiple replicated controllers, dedicated high-speed management networks, etc.).</t>
      <t>Another way to reduce the overhead and the potential scalability and performance issues in the Controller is to apply the EDHOC case described in this document since the OSCORE contexts are managed between Things without the involvement of the Controller, except by the initial configuration provided.</t>
      <t>In terms of security, the EDHOC case provides better security properties than the OSCORE case, as discussed in Section <xref target="security"/>. The main reason is that the Things generate the session keys and not the Controller.</t>
    </section>
    <section anchor="interaction">
      <name>Entities interaction</name>
      <section anchor="edhoc-overview">
        <name>EDHOC case overview</name>
        <t><xref target="edhoc-case-overview"/> describes the application of the EDHOC case when a CoAP exchange needs to be protected in the path between Thing A and Thing B, and Things support EDHOC and OSCORE:</t>
        <figure anchor="edhoc-case-overview">
          <name>EDHOC case overview</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="512" width="488" viewBox="0 0 488 512" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,384 L 8,448" fill="none" stroke="black"/>
                <path d="M 40,32 L 40,64" fill="none" stroke="black"/>
                <path d="M 40,144 L 40,288" fill="none" stroke="black"/>
                <path d="M 64,208 L 64,256" fill="none" stroke="black"/>
                <path d="M 64,368 L 64,376" fill="none" stroke="black"/>
                <path d="M 120,128 L 120,200" fill="none" stroke="black"/>
                <path d="M 144,384 L 144,448" fill="none" stroke="black"/>
                <path d="M 192,208 L 192,256" fill="none" stroke="black"/>
                <path d="M 240,208 L 240,256" fill="none" stroke="black"/>
                <path d="M 248,264 L 248,352" fill="none" stroke="black"/>
                <path d="M 288,384 L 288,448" fill="none" stroke="black"/>
                <path d="M 296,264 L 296,352" fill="none" stroke="black"/>
                <path d="M 328,368 L 328,376" fill="none" stroke="black"/>
                <path d="M 360,208 L 360,256" fill="none" stroke="black"/>
                <path d="M 368,32 L 368,64" fill="none" stroke="black"/>
                <path d="M 376,144 L 376,288" fill="none" stroke="black"/>
                <path d="M 424,384 L 424,448" fill="none" stroke="black"/>
                <path d="M 40,32 L 368,32" fill="none" stroke="black"/>
                <path d="M 40,64 L 368,64" fill="none" stroke="black"/>
                <path d="M 40,144 L 112,144" fill="none" stroke="black"/>
                <path d="M 128,144 L 376,144" fill="none" stroke="black"/>
                <path d="M 64,208 L 192,208" fill="none" stroke="black"/>
                <path d="M 240,208 L 360,208" fill="none" stroke="black"/>
                <path d="M 200,224 L 232,224" fill="none" stroke="black"/>
                <path d="M 64,256 L 192,256" fill="none" stroke="black"/>
                <path d="M 240,256 L 360,256" fill="none" stroke="black"/>
                <path d="M 40,288 L 240,288" fill="none" stroke="black"/>
                <path d="M 256,288 L 288,288" fill="none" stroke="black"/>
                <path d="M 304,288 L 376,288" fill="none" stroke="black"/>
                <path d="M 72,352 L 248,352" fill="none" stroke="black"/>
                <path d="M 296,352 L 320,352" fill="none" stroke="black"/>
                <path d="M 8,384 L 144,384" fill="none" stroke="black"/>
                <path d="M 288,384 L 424,384" fill="none" stroke="black"/>
                <path d="M 152,400 L 280,400" fill="none" stroke="black"/>
                <path d="M 160,432 L 272,432" fill="none" stroke="black"/>
                <path d="M 8,448 L 144,448" fill="none" stroke="black"/>
                <path d="M 288,448 L 424,448" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="336,376 324,370.4 324,381.6" fill="black" transform="rotate(90,328,376)"/>
                <polygon class="arrowhead" points="288,400 276,394.4 276,405.6" fill="black" transform="rotate(0,280,400)"/>
                <polygon class="arrowhead" points="280,432 268,426.4 268,437.6" fill="black" transform="rotate(0,272,432)"/>
                <polygon class="arrowhead" points="240,224 228,218.4 228,229.6" fill="black" transform="rotate(0,232,224)"/>
                <polygon class="arrowhead" points="160,400 148,394.4 148,405.6" fill="black" transform="rotate(180,152,400)"/>
                <polygon class="arrowhead" points="128,200 116,194.4 116,205.6" fill="black" transform="rotate(90,120,200)"/>
                <polygon class="arrowhead" points="72,376 60,370.4 60,381.6" fill="black" transform="rotate(90,64,376)"/>
                <g class="text">
                  <text x="128" y="52">Key</text>
                  <text x="188" y="52">Management</text>
                  <text x="260" y="52">System</text>
                  <text x="120" y="84">|</text>
                  <text x="40" y="100">(1)</text>
                  <text x="124" y="100">Security</text>
                  <text x="292" y="100">Northbound</text>
                  <text x="92" y="116">Protection</text>
                  <text x="164" y="116">Policy</text>
                  <text x="288" y="116">Interface</text>
                  <text x="196" y="180">Controller</text>
                  <text x="216" y="212">(2)</text>
                  <text x="104" y="228">Translate</text>
                  <text x="164" y="228">into</text>
                  <text x="304" y="228">CORECONF/</text>
                  <text x="88" y="244">EDHOC</text>
                  <text x="132" y="244">Conf</text>
                  <text x="300" y="244">RESTCONF</text>
                  <text x="148" y="308">Southbound</text>
                  <text x="144" y="324">Interface</text>
                  <text x="272" y="340">(3)</text>
                  <text x="64" y="356">|</text>
                  <text x="328" y="356">|</text>
                  <text x="184" y="388">(4)</text>
                  <text x="224" y="388">EDHOC</text>
                  <text x="80" y="404">EDHOC</text>
                  <text x="360" y="404">EDHOC</text>
                  <text x="76" y="420">OSCORE</text>
                  <text x="220" y="420">(5)CoAP+OSCORE</text>
                  <text x="356" y="420">OSCORE</text>
                  <text x="60" y="436">CoAP</text>
                  <text x="108" y="436">Client</text>
                  <text x="332" y="436">CoAP</text>
                  <text x="380" y="436">Server</text>
                  <text x="64" y="468">Thing</text>
                  <text x="96" y="468">A</text>
                  <text x="336" y="468">Thing</text>
                  <text x="368" y="468">B</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
        +----------------------------------------+
        |         Key Management System          |
        +----------------------------------------+
                  |
       (1)     Security            Northbound
          Protection Policy        Interface
                  |
        +---------|-------------------------------+
        |         |                               |
        |         |    Controller                 |
        |         V                               |
        |  +---------------+ (2) +--------------+ |
        |  |Translate into |---->|   CORECONF/  | |
        |  |EDHOC Conf     |     |   RESTCONF   | |
        |  +---------------+     +--------------+ |
        |                         |     |         |
        +-------------------------|-----|---------+
                 Southbound       |     |
                 Interface        |     |
                                  | (3) |
           |----------------------+     +---|
           V                                V                 
    +----------------+   (4) EDHOC     +----------------+
    |      EDHOC     |<--------------->|      EDHOC     |
    |     OSCORE     |  (5)CoAP+OSCORE |     OSCORE     |
    |    CoAP Client | --------------> |   CoAP Server  |
    +----------------+                 +----------------+       
         Thing A                           Thing B

]]></artwork>
          </artset>
        </figure>
        <ol spacing="normal" type="1"><li>The network administrator establishes the general security protection policies, including security policies for protecting resources between A and B.  The Controller looks for the involved Things (A and B).</li>
          <li>The Controller translates these policies into EDHOC configuration for the specific Things (connection identifiers, authentication credentials, cipher suites, authorization data, etc.), following the requirements described in <xref target="I-D.ietf-lake-edhoc"/><xref target="I-D.ietf-core-oscore-edhoc"/>.</li>
          <li>The Controller sends these EDHOC configurations to both Thing A and Thing B. Due to one may have the role of EDHOC responder (e.g. Thing B) and the other the role of EDHOC initiator (e.g. Thing A), it is advised to send configurations first to the EDHOC responder and, once it is successfully finished, to the EDHOC initiator.  If some of the operations described above fail (e.g., Things A reports an error when the Controller is trying to install the EDHOC configuration), the Controller <bcp14>MAY</bcp14> perform a rollback operation by deleting any previous EDHOC configuration that had been successfully installed in the other Thing (e.g. Thing B) and stop the process. Note that the Controller <bcp14>MAY</bcp14> retry several times before giving up. NOTE: It is assumed that a security association has been previously setup between the Controller and each Thing.</li>
          <li>If the previous steps are successful, the EDHOC initiator can start the EDHOC exchange. It is worth noting that EDHOC may be started by the initiator either only when the traffic need to be protected or just after the EDHOC configuration is applied in the Thing, instructed by the Controller.</li>
        </ol>
        <!-- Rafa: Need to check if we included autostart -->
<ol spacing="normal" type="1"><li>After completion of the EDHOC exchange, OSCORE contexts are created in Things A and B, and the CoAP traffic can be protected. Finally, the Controller may associate a lifetime to renew OSCORE contexts, as described in <xref target="renewal"/>.</li>
        </ol>
        <!--Rafa: We should consider the possibility to keep the EDHOC conf. in the Thing A to avoid extra signalling for the rollback. However, it is a tradeoff: the Thing B could try to access Thing A, thinking that Thing B is ready. In any case, since the server is configured first, if it fails the process stops. If it is a success, the controller will proceed to configur the client. If it fails, the Controller may leave the server configured with that OSCORE context that has not been used to try to configure only the client in the future. -->

</section>
      <section anchor="oscore-overview">
        <name>OSCORE case overview</name>
        <t><xref target="oscore-case-overview"/> describes the application of the OSCORE case when a CoAP exchange needs to be protected in the path between Thing A and Thing B, and Things support OSCORE, but does not support EDHOC:</t>
        <figure anchor="oscore-case-overview">
          <name>OSCORE case overview</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="488" viewBox="0 0 488 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,384 L 8,432" fill="none" stroke="black"/>
                <path d="M 40,32 L 40,64" fill="none" stroke="black"/>
                <path d="M 40,144 L 40,288" fill="none" stroke="black"/>
                <path d="M 64,208 L 64,256" fill="none" stroke="black"/>
                <path d="M 64,368 L 64,376" fill="none" stroke="black"/>
                <path d="M 120,128 L 120,200" fill="none" stroke="black"/>
                <path d="M 144,384 L 144,432" fill="none" stroke="black"/>
                <path d="M 192,208 L 192,256" fill="none" stroke="black"/>
                <path d="M 240,208 L 240,256" fill="none" stroke="black"/>
                <path d="M 248,264 L 248,352" fill="none" stroke="black"/>
                <path d="M 288,384 L 288,432" fill="none" stroke="black"/>
                <path d="M 296,264 L 296,352" fill="none" stroke="black"/>
                <path d="M 328,368 L 328,376" fill="none" stroke="black"/>
                <path d="M 360,208 L 360,256" fill="none" stroke="black"/>
                <path d="M 368,32 L 368,64" fill="none" stroke="black"/>
                <path d="M 376,144 L 376,288" fill="none" stroke="black"/>
                <path d="M 424,384 L 424,432" fill="none" stroke="black"/>
                <path d="M 40,32 L 368,32" fill="none" stroke="black"/>
                <path d="M 40,64 L 368,64" fill="none" stroke="black"/>
                <path d="M 40,144 L 112,144" fill="none" stroke="black"/>
                <path d="M 128,144 L 376,144" fill="none" stroke="black"/>
                <path d="M 64,208 L 192,208" fill="none" stroke="black"/>
                <path d="M 240,208 L 360,208" fill="none" stroke="black"/>
                <path d="M 200,224 L 232,224" fill="none" stroke="black"/>
                <path d="M 64,256 L 192,256" fill="none" stroke="black"/>
                <path d="M 240,256 L 360,256" fill="none" stroke="black"/>
                <path d="M 40,288 L 240,288" fill="none" stroke="black"/>
                <path d="M 256,288 L 288,288" fill="none" stroke="black"/>
                <path d="M 304,288 L 376,288" fill="none" stroke="black"/>
                <path d="M 72,352 L 248,352" fill="none" stroke="black"/>
                <path d="M 296,352 L 320,352" fill="none" stroke="black"/>
                <path d="M 8,384 L 144,384" fill="none" stroke="black"/>
                <path d="M 288,384 L 424,384" fill="none" stroke="black"/>
                <path d="M 152,416 L 280,416" fill="none" stroke="black"/>
                <path d="M 8,432 L 144,432" fill="none" stroke="black"/>
                <path d="M 288,432 L 424,432" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="336,376 324,370.4 324,381.6" fill="black" transform="rotate(90,328,376)"/>
                <polygon class="arrowhead" points="288,416 276,410.4 276,421.6" fill="black" transform="rotate(0,280,416)"/>
                <polygon class="arrowhead" points="240,224 228,218.4 228,229.6" fill="black" transform="rotate(0,232,224)"/>
                <polygon class="arrowhead" points="160,416 148,410.4 148,421.6" fill="black" transform="rotate(180,152,416)"/>
                <polygon class="arrowhead" points="128,200 116,194.4 116,205.6" fill="black" transform="rotate(90,120,200)"/>
                <polygon class="arrowhead" points="72,376 60,370.4 60,381.6" fill="black" transform="rotate(90,64,376)"/>
                <g class="text">
                  <text x="128" y="52">Key</text>
                  <text x="188" y="52">Management</text>
                  <text x="260" y="52">System</text>
                  <text x="120" y="84">|</text>
                  <text x="40" y="100">(1)</text>
                  <text x="124" y="100">Security</text>
                  <text x="292" y="100">Northbound</text>
                  <text x="92" y="116">Protection</text>
                  <text x="164" y="116">Policy</text>
                  <text x="288" y="116">Interface</text>
                  <text x="196" y="180">Controller</text>
                  <text x="216" y="212">(2)</text>
                  <text x="104" y="228">Translate</text>
                  <text x="164" y="228">into</text>
                  <text x="304" y="228">CORECONF/</text>
                  <text x="92" y="244">OSCORE</text>
                  <text x="156" y="244">Contexts</text>
                  <text x="300" y="244">RESTCONF</text>
                  <text x="148" y="308">Southbound</text>
                  <text x="144" y="324">Interface</text>
                  <text x="272" y="340">(3)</text>
                  <text x="64" y="356">|</text>
                  <text x="328" y="356">|</text>
                  <text x="76" y="404">OSCORE</text>
                  <text x="220" y="404">(4)CoAP+OSCORE</text>
                  <text x="356" y="404">OSCORE</text>
                  <text x="52" y="420">CoAP</text>
                  <text x="100" y="420">Client</text>
                  <text x="332" y="420">CoAP</text>
                  <text x="380" y="420">Server</text>
                  <text x="64" y="452">Thing</text>
                  <text x="96" y="452">A</text>
                  <text x="336" y="452">Thing</text>
                  <text x="368" y="452">B</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
        +----------------------------------------+
        |         Key Management System          |
        +----------------------------------------+
                  |
       (1)     Security            Northbound
          Protection Policy        Interface
                  |
        +---------|-------------------------------+
        |         |                               |
        |         |    Controller                 |
        |         V                               |
        |  +---------------+ (2) +--------------+ |
        |  |Translate into |---->|   CORECONF/  | |
        |  |OSCORE Contexts|     |   RESTCONF   | |
        |  +---------------+     +--------------+ |
        |                         |     |         |
        +-------------------------|-----|---------+
                 Southbound       |     |
                 Interface        |     |
                                  | (3) |
           |----------------------+     +---|
           V                                V
    +----------------+                 +----------------+
    |     OSCORE     |  (4)CoAP+OSCORE |     OSCORE     |
    |   CoAP Client  |<--------------->|   CoAP Server  |
    +----------------+                 +----------------+       
         Thing A                           Thing B
]]></artwork>
          </artset>
        </figure>
        <ol spacing="normal" type="1"><li>The network administrator establishes the general security protection policies, including security policies for protecting resources between A and B.  The Controller looks for the involved Things (A and B).</li>
          <li>The Controller translates these policies into specific OSCORE contexts (Common, Sender and Recipient) for the specific CoAP service. Following the requirements described in <xref target="RFC8613"/>. It generates the cryptographic keys and salts using random values.</li>
          <li>The Controller sends these OSCORE contexts to both Thing A and Thing B. Due to one may have the role of CoAP server (e.g. Thing B) and the other the role of CoAP client (e.g. Thing A), it is advised to send the contexts first to the CoAP server and, once it is successfully finished, to send the contexts to the CoAP client. If some of the operations described above fail (e.g., Things A reports an error when the Controller is trying to install the OSCORE contexts), the Controller <bcp14>MAY</bcp14> perform a rollback operation by deleting any OSCORE context that had been successfully installed in the other Thing (e.g. Thing B) and stop the process. Note that the Controller <bcp14>MAY</bcp14> retry several times before giving up.</li>
          <li>If the steps 1 to 3 are successful, the CoAP exchanges between Thing A and Thing B are protected with OSCORE. It is worth mentioning that the Controller associates a lifetime to the new OSCORE contexts. When this lifetime expires, the Controller will update the OSCORE contexts.</li>
        </ol>
        <!--Rafa: We should consider the possibility to keep the OSCORE context in the Thing A to avoid extra signalling for the rollback. It would imply that OSCORE context should expire and be removed by Thing B. However, it is a tradeoff: the Thing B could try to access Thing A, thinking that Thing B is ready. In any case, since the server is configured first, if it fails the process stops. If it is a success, the controller will proceed to configur the client. If it fails, the Controller may leave the server configured with that OSCORE context that has not been used to try to configure only the client in the future. -->

</section>
      <section anchor="renewal">
        <name>Renewal of the OSCORE security context</name>
        <t>In this version of the document we have only considered four ways to configure the renewal of the OSCORE contexts. Two of them are possible for the EDHOC case and another two for the OSCORE case.</t>
        <ul spacing="normal">
          <li>
            <t>EDHOC case:
            </t>
            <ul spacing="normal">
              <li>OSCORE contexts are renewed after a full EDHOC re-run. The Controller can configure the Thing to perform the EDHOC re-run each certain time (reauth time).</li>
              <li>An SDN-based renewal where the Controller sends a context to the Things used for the EDHOC_KeyUpdate (Appendix I in <xref target="I-D.ietf-lake-edhoc"/>). With this context, the Things can call EDHOC_KeyUpdate to generate a new PRK and, therefore, new keys for the OSCORE context.</li>
            </ul>
          </li>
          <li>
            <t>OSCORE case:
            </t>
            <ul spacing="normal">
              <li>An SDN-based renewal where the Controller is in charge of sending new OSCORE contexts periodically following an internal policy (e.g. each 8 hours). The cryptographic material generated for the OSCORE contexts is completely fresh and separated from previous contexts.</li>
              <li>The mechanism explained in OSCORE <xref target="RFC8613"/> (section B.2. Security Context Derived Multiple Times) where the Controller only sets the length of the nonces R1, R2, and R3 in each Thing.</li>
            </ul>
          </li>
        </ul>
        <t>Editor's note: Future updates of this document will include extensions to the model to support OSCORE KUDOS. At this point, the model assumes that the Controller is in charge or renewing the OSCORE contexts periodically following an internal policy.</t>
      </section>
      <section anchor="thing-to-non">
        <name>Thing to non constrained devices communication</name>
        <t>Although the architecture described in this document insists on the communication between Things, it is also common the communication between a Thing and a non-so constrained device. Two main situation are envisaged:</t>
        <ul spacing="normal">
          <li>If both entities (the Thing and the non-so constrained device) are under the management of the Controller. The solution described here applies with no change. The only comment here is that the protocol for carrying the configuration to the non-so constrained device can be less constrained (e.g. NETCONF or RESTCONF).</li>
          <li>Only the Thing is managed by the Controller, then it is assumed that the non-so constrained device is configured somehow (out of scope this document) and the Controller only configures the Thing to communicate securely with this non-so constrained device. The YANG data models are still applicable in this case.</li>
        </ul>
      </section>
      <section anchor="discovery">
        <name>Thing bootstrapping, registration and discovery</name>
        <t>Initial security setup (bootstrapping) for a Thing refers to any process that takes place before a device can become operational <xref target="I-D.irtf-t2trg-secure-bootstrapping"/>. The initial security setup process, among other processes, involves network discovery and selection, access authentication, configuration of necessary credentials and parameters.</t>
        <t>Thus, bootstrapping is the process to provide the Thing with the required information (i.e. credentials) to authenticate to the IoT network. We assume that the Thing is preconfigured with the required information and credentials to carry out the bootstrap process. It enables the Thing to run an authenticated registration process with the Controller in order to enable the management in the particular domain under the Controller.</t>
        <t>The assumption in this document is that, before a Thing can operate in the IoT network, it <bcp14>MUST</bcp14> be registered in the Controller.  In this way, when the Thing starts, it establishes a security association with the Controller. This security association, which can be based on DTLS, EDHOC+OSCORE, or only OSCORE, allows the protected exchange of information between the Controller and the Thing. After the bootstrapping process, the Thing is valid for joining the Controller's security domain.</t>
        <t>The Controller <bcp14>MUST</bcp14> discover certain capabilities of this Thing, such as the supported cryptographic suites, the authentication method, the support of the EDHOC case and/or the OSCORE case, resources, network addressing, etc. This information is incorporated into a list of Things under its control.</t>
        <!--Rafa: discovery refers to SDN controller discovery, discovery of the thing? -->

<t>The registration and discovery processes are out of the scope of this document.</t>
      </section>
      <section anchor="state-loss">
        <name>Thing state loss</name>
        <t>If one of the Thing restarts, it may lose the OSCORE state (affected Thing). By default, the Controller can assume that all the state has been lost and, therefore, it will have to send new configuration information for EDHOC to the affected Thing in the EDHOC case, and new OSCORE contexts in the OSCORE case.</t>
        <t>In both cases, the Controller is aware of the affected Thing (e.g., by using some keep alive mechanism such as the "CoAP Ping" or because the TCP connection is broken with the affected Thing). The Controller keeps a list of Things registered and can determine what are the affected ones.</t>
        <!--In the OSCORE case, the Controller can know what are the exact affected OSCORE contexts. In this case, the Controller SHOULD delete from the non-failing Things the old OSCORE contexts established with the affected Thing. Once the affected Thing restarts, the Controller MUST take the necessary actions to reestablish the OSCORE contexts between the failed Thing and those others having security associations with the affected Thing. How the Controller implements an algorithm for managing a potential Thing state loss is out of the scope of this document.-->

<!-- Gabi: not in the EDHOC case, unless we define state data in the model -->

<t>In the EDHOC case, the Controller may need to configure the affected Thing with the new EDHOC information. Alternatively, EDHOC configuration <bcp14>MAY</bcp14> be made permanent between Thing reboots without compromising security by means of non-volatile memory in the Thing. This way, each time an Thing reboots, it will use that configuration for each rebooting. It would imply avoiding contact with the Controller. Finally, the Controller may also need to send new parameters (e.g., a new authentication credentials, etc.) to the Things that had security associations with the affected Thing.</t>
        <t>In the OSCORE case, the Controller <bcp14>SHOULD</bcp14> delete the old OSCORE contexts in the non-failed Things established with the affected Thing. Once the affected Thing restarts, the Controller <bcp14>MUST</bcp14> take the necessary actions to reestablish the OSCORE contexts between the failed Thing and those others having security associations with the affected one. How the Controller implements an algorithm for managing a potential Thing state loss is out of the scope of this document.</t>
      </section>
    </section>
    <section anchor="yang-dm">
      <name>YANG Data Models</name>
      <t>In order to support the EDHOC case and the OSCORE case, YANG data models are provided for the different parameters and values that must be configured to manage EDHOC and OSCORE. Specifically, the EDHOC case requires modeling EDHOC configuration parameters such as Thing's identity and authentication information, and when to run EDHOC, besides parameters to define how the OSCORE context should be established.  The OSCORE case requires configuration YANG data models for the definition of OSCORE contexts. Two modules have been defined: ietf-core-edhoc (Section 5.2, case EDHOC), and ietf-core-oscore (Section 5.3, case OSCORE).</t>
      <section anchor="edhoc-case-dm">
        <name>EDHOC case</name>
        <section anchor="edhoc-dm-ovr">
          <name>Data model overview</name>
          <t>The YANG data model defines the configuration data for EDHOC. The model provides four lists: 'auth-entry', 'connection', 'target resource' and 'local resource'.</t>
          <ul spacing="normal">
            <li>The list 'auth-entry' contains a set of leafs that contain authentication information for running EDHOC in this Thing (such as Thing credential identity, preferred authentication method and public and private key credentials). Each Thing may be configured with several 'auth-entry' elements. Each element in the list may be used by one or more 'connections' defined to other Things.</li>
            <li>The list 'connection' contains a list of containers and leafs that specifies different connections between this Thing (local) and a peer (remote), for example, another Thing. This list specifies the local credentials that will be used for this Thing with the remote peer (with a reference to an entry in the list 'auth-entry'), and the credentials that will be required to authenticate the remote peer. For the local Thing, it also specifies the connection identifier, cipher suites, and authorization data depending on the role defined by this Thing (EDHOC initiator or responder). Additionally, other EDHOC parameters may be defined, such as EDHOC key confirmation option, the automatically establishment of an OSCORE context between local and remote Things, or rekey management options and lifetimes.</li>
            <li>The list 'target-resource' stores policies (bypass, discard, protect) related with the target resource (URI) that this Thing can access. In case OSCORE protection is required, an entry in this list defines a reference to a list 'connection' entry to run EDHOC.</li>
            <li>The list 'local-resource' stores policies related with the local resources provided by this Thing.</li>
          </ul>
          <figure anchor="edhoc-tree">
            <name>EDHOC data model tree</name>
            <artset>
              <artwork type="svg" align="left"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="624" width="352" viewBox="0 0 352 624" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                  <path d="M 32,64 L 32,544" fill="none" stroke="black"/>
                  <path d="M 56,80 L 56,144" fill="none" stroke="black"/>
                  <path d="M 56,176 L 56,432" fill="none" stroke="black"/>
                  <path d="M 56,496 L 56,528" fill="none" stroke="black"/>
                  <path d="M 56,560 L 56,592" fill="none" stroke="black"/>
                  <path d="M 80,208 L 80,272" fill="none" stroke="black"/>
                  <path d="M 80,336 L 80,368" fill="none" stroke="black"/>
                  <path d="M 80,448 L 80,464" fill="none" stroke="black"/>
                  <path d="M 104,288 L 104,304" fill="none" stroke="black"/>
                  <path d="M 8,48 L 24,48" fill="none" stroke="black"/>
                  <path d="M 32,64 L 48,64" fill="none" stroke="black"/>
                  <path d="M 56,80 L 72,80" fill="none" stroke="black"/>
                  <path d="M 56,96 L 72,96" fill="none" stroke="black"/>
                  <path d="M 56,112 L 72,112" fill="none" stroke="black"/>
                  <path d="M 56,128 L 72,128" fill="none" stroke="black"/>
                  <path d="M 56,144 L 72,144" fill="none" stroke="black"/>
                  <path d="M 32,160 L 48,160" fill="none" stroke="black"/>
                  <path d="M 56,176 L 72,176" fill="none" stroke="black"/>
                  <path d="M 56,192 L 72,192" fill="none" stroke="black"/>
                  <path d="M 80,208 L 96,208" fill="none" stroke="black"/>
                  <path d="M 80,224 L 96,224" fill="none" stroke="black"/>
                  <path d="M 80,240 L 96,240" fill="none" stroke="black"/>
                  <path d="M 80,256 L 96,256" fill="none" stroke="black"/>
                  <path d="M 80,272 L 96,272" fill="none" stroke="black"/>
                  <path d="M 104,288 L 120,288" fill="none" stroke="black"/>
                  <path d="M 104,304 L 120,304" fill="none" stroke="black"/>
                  <path d="M 56,320 L 72,320" fill="none" stroke="black"/>
                  <path d="M 80,336 L 96,336" fill="none" stroke="black"/>
                  <path d="M 80,352 L 96,352" fill="none" stroke="black"/>
                  <path d="M 80,368 L 96,368" fill="none" stroke="black"/>
                  <path d="M 56,384 L 72,384" fill="none" stroke="black"/>
                  <path d="M 56,400 L 72,400" fill="none" stroke="black"/>
                  <path d="M 56,416 L 72,416" fill="none" stroke="black"/>
                  <path d="M 56,432 L 72,432" fill="none" stroke="black"/>
                  <path d="M 80,448 L 96,448" fill="none" stroke="black"/>
                  <path d="M 80,464 L 96,464" fill="none" stroke="black"/>
                  <path d="M 32,480 L 48,480" fill="none" stroke="black"/>
                  <path d="M 56,496 L 72,496" fill="none" stroke="black"/>
                  <path d="M 56,512 L 72,512" fill="none" stroke="black"/>
                  <path d="M 56,528 L 72,528" fill="none" stroke="black"/>
                  <path d="M 32,544 L 48,544" fill="none" stroke="black"/>
                  <path d="M 56,560 L 72,560" fill="none" stroke="black"/>
                  <path d="M 56,576 L 72,576" fill="none" stroke="black"/>
                  <path d="M 56,592 L 72,592" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="32" y="36">module:</text>
                    <text x="128" y="36">ietf-core-edhoc</text>
                    <text x="36" y="52">rw</text>
                    <text x="72" y="52">edhoc</text>
                    <text x="60" y="68">rw</text>
                    <text x="120" y="68">auth-entry*</text>
                    <text x="196" y="68">[name]</text>
                    <text x="84" y="84">rw</text>
                    <text x="116" y="84">name</text>
                    <text x="244" y="84">string</text>
                    <text x="84" y="100">rw</text>
                    <text x="136" y="100">id-cred-x</text>
                    <text x="244" y="100">binary</text>
                    <text x="84" y="116">rw</text>
                    <text x="148" y="116">auth-method?</text>
                    <text x="272" y="116">auth-method-t</text>
                    <text x="84" y="132">rw</text>
                    <text x="124" y="132">cred-x</text>
                    <text x="244" y="132">binary</text>
                    <text x="84" y="148">rw</text>
                    <text x="144" y="148">private-key</text>
                    <text x="244" y="148">binary</text>
                    <text x="60" y="164">rw</text>
                    <text x="120" y="164">connection*</text>
                    <text x="196" y="164">[name]</text>
                    <text x="84" y="180">rw</text>
                    <text x="116" y="180">name</text>
                    <text x="300" y="180">string</text>
                    <text x="84" y="196">rw</text>
                    <text x="120" y="196">local</text>
                    <text x="108" y="212">rw</text>
                    <text x="172" y="212">autostartup?</text>
                    <text x="288" y="212">boolean</text>
                    <text x="108" y="228">rw</text>
                    <text x="176" y="228">auth-cred-ref</text>
                    <text x="284" y="228">string</text>
                    <text x="108" y="244">rw</text>
                    <text x="140" y="244">c-x?</text>
                    <text x="284" y="244">binary</text>
                    <text x="108" y="260">rw</text>
                    <text x="160" y="260">suites-x?</text>
                    <text x="284" y="260">binary</text>
                    <text x="108" y="276">rw</text>
                    <text x="144" y="276">ead-x</text>
                    <text x="132" y="292">rw</text>
                    <text x="172" y="292">ead-a?</text>
                    <text x="244" y="292">binary</text>
                    <text x="132" y="308">rw</text>
                    <text x="172" y="308">ead-b?</text>
                    <text x="244" y="308">binary</text>
                    <text x="84" y="324">rw</text>
                    <text x="124" y="324">remote</text>
                    <text x="108" y="340">rw</text>
                    <text x="160" y="340">id-cred-x</text>
                    <text x="268" y="340">binary</text>
                    <text x="108" y="356">rw</text>
                    <text x="172" y="356">auth-method?</text>
                    <text x="296" y="356">auth-method-t</text>
                    <text x="108" y="372">rw</text>
                    <text x="148" y="372">cred-x</text>
                    <text x="268" y="372">binary</text>
                    <text x="84" y="388">rw</text>
                    <text x="168" y="388">key-confirmation?</text>
                    <text x="304" y="388">boolean</text>
                    <text x="84" y="404">rw</text>
                    <text x="144" y="404">set-oscore?</text>
                    <text x="304" y="404">boolean</text>
                    <text x="84" y="420">rw</text>
                    <text x="176" y="420">key-update-context?</text>
                    <text x="300" y="420">binary</text>
                    <text x="84" y="436">rw</text>
                    <text x="144" y="436">reauth-time</text>
                    <text x="108" y="452">rw</text>
                    <text x="144" y="452">soft?</text>
                    <text x="212" y="452">uint32</text>
                    <text x="108" y="468">rw</text>
                    <text x="144" y="468">hard?</text>
                    <text x="212" y="468">uint32</text>
                    <text x="60" y="484">rw</text>
                    <text x="140" y="484">target-resource*</text>
                    <text x="244" y="484">[target]</text>
                    <text x="84" y="500">rw</text>
                    <text x="124" y="500">target</text>
                    <text x="228" y="500">inet:uri</text>
                    <text x="84" y="516">rw</text>
                    <text x="128" y="516">policy?</text>
                    <text x="228" y="516">policy-t</text>
                    <text x="84" y="532">rw</text>
                    <text x="136" y="532">conn-ref?</text>
                    <text x="220" y="532">string</text>
                    <text x="60" y="548">rw</text>
                    <text x="136" y="548">local-resource*</text>
                    <text x="232" y="548">[local]</text>
                    <text x="84" y="564">rw</text>
                    <text x="120" y="564">local</text>
                    <text x="228" y="564">inet:uri</text>
                    <text x="84" y="580">rw</text>
                    <text x="128" y="580">policy?</text>
                    <text x="228" y="580">policy-t</text>
                    <text x="84" y="596">rw</text>
                    <text x="136" y="596">conn-ref?</text>
                    <text x="220" y="596">string</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="left"><![CDATA[
  module: ietf-core-edhoc
  +--rw edhoc
     +--rw auth-entry* [name]
     |  +--rw name           string
     |  +--rw id-cred-x      binary
     |  +--rw auth-method?   auth-method-t
     |  +--rw cred-x         binary
     |  +--rw private-key    binary
     +--rw connection* [name]    
     |  +--rw name                  string
     |  +--rw local
     |  |  +--rw autostartup?     boolean
     |  |  +--rw auth-cred-ref    string
     |  |  +--rw c-x?             binary
     |  |  +--rw suites-x?        binary
     |  |  +--rw ead-x
     |  |     +--rw ead-a?   binary
     |  |     +--rw ead-b?   binary
     |  +--rw remote
     |  |  +--rw id-cred-x      binary
     |  |  +--rw auth-method?   auth-method-t
     |  |  +--rw cred-x         binary
     |  +--rw key-confirmation?     boolean
     |  +--rw set-oscore?           boolean
     |  +--rw key-update-context?   binary
     |  +--rw reauth-time
     |     +--rw soft?   uint32
     |     +--rw hard?   uint32
     +--rw target-resource* [target]
     |  +--rw target      inet:uri
     |  +--rw policy?     policy-t
     |  +--rw conn-ref?   string
     +--rw local-resource* [local]
        +--rw local       inet:uri
        +--rw policy?     policy-t
        +--rw conn-ref?   string
]]></artwork>
            </artset>
          </figure>
          <t>NOTE: Although EDHOC is independent of OSCORE, the EDHOC model considers the fact that OSCORE will be used after running EDHOC. In any case, the model has incoporated a flag 'set-oscore' when EDHOC is configured and OSCORE is not required (e.g. for example, EDHOC could be used to derive key material to protect the link-layer). Nevertheless, the list of policies ('target-resource' and 'local-resource') defined in the model only considered the case when the access with CoAP to a particular URI is required. To include additional uses cases this policy should be extended to consider, for example, MAC addresses or IP addresses (TBD).</t>
        </section>
        <section anchor="edhoc-dm">
          <name>YANG module</name>
          <t>The detailed YANG module for the EDHOC case is described in Appendix A.</t>
        </section>
        <section anchor="edhoc-example">
          <name>Example usage</name>
          <t>Appendix B shows an example of an EDHOC case configuration.</t>
        </section>
      </section>
      <section anchor="oscore-case-dm">
        <name>OSCORE case</name>
        <t>This version includes the YANG data model taking into account the information in OSCORE. The model contains three main lists: 'context', 'target-resource', 'local-resource'.</t>
        <ul spacing="normal">
          <li>The list 'context' stores the OSCORE contexts in this Thing. Each node in the list 'context' contains three specific contexts: common ('common-ctx'), sender ('sender-ctx') and recipient ('recipient-ctx'). 'common-ctx' defines the common context ID, authentication encryption algorithms, key derivation function, master key and master salt used by this OSCORE context. 'sender-ctx' defines the sender context ID, and 'recipient-ctx' defines the recipient context ID and the replay-window value, as described in <xref target="RFC8613"/>. For each OSCORE context this container also defines how the context renew has to be carried out by the Things. As described in section <xref target="renewal"/>, two options are included in this model, SDN-based and OSCORE-based.</li>
          <li>The list 'target-resource' stores policies (bypass,discard,protect) related with the target resource that this Thing can access. In case of protection with OSCORE, a node in the list has a reference to a node in the list 'context'.</li>
          <li>The list 'local-resource' stores policies related with the local resources provided by this Thing, acting as server of a particular resource.</li>
        </ul>
        <figure anchor="oscore-tree">
          <name>OSCORE data model tree</name>
          <artset>
            <artwork type="svg" align="left"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="560" width="360" viewBox="0 0 360 560" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 32,64 L 32,480" fill="none" stroke="black"/>
                <path d="M 56,80 L 56,272" fill="none" stroke="black"/>
                <path d="M 56,432 L 56,464" fill="none" stroke="black"/>
                <path d="M 56,496 L 56,528" fill="none" stroke="black"/>
                <path d="M 80,112 L 80,176" fill="none" stroke="black"/>
                <path d="M 80,240 L 80,256" fill="none" stroke="black"/>
                <path d="M 104,304 L 104,384" fill="none" stroke="black"/>
                <path d="M 152,336 L 152,368" fill="none" stroke="black"/>
                <path d="M 8,48 L 24,48" fill="none" stroke="black"/>
                <path d="M 32,64 L 48,64" fill="none" stroke="black"/>
                <path d="M 56,80 L 72,80" fill="none" stroke="black"/>
                <path d="M 56,96 L 72,96" fill="none" stroke="black"/>
                <path d="M 80,112 L 96,112" fill="none" stroke="black"/>
                <path d="M 80,128 L 96,128" fill="none" stroke="black"/>
                <path d="M 80,144 L 96,144" fill="none" stroke="black"/>
                <path d="M 80,160 L 96,160" fill="none" stroke="black"/>
                <path d="M 80,176 L 96,176" fill="none" stroke="black"/>
                <path d="M 56,192 L 72,192" fill="none" stroke="black"/>
                <path d="M 80,208 L 96,208" fill="none" stroke="black"/>
                <path d="M 56,224 L 72,224" fill="none" stroke="black"/>
                <path d="M 80,240 L 96,240" fill="none" stroke="black"/>
                <path d="M 80,256 L 96,256" fill="none" stroke="black"/>
                <path d="M 56,272 L 72,272" fill="none" stroke="black"/>
                <path d="M 80,288 L 96,288" fill="none" stroke="black"/>
                <path d="M 104,304 L 120,304" fill="none" stroke="black"/>
                <path d="M 128,320 L 144,320" fill="none" stroke="black"/>
                <path d="M 152,336 L 168,336" fill="none" stroke="black"/>
                <path d="M 152,352 L 168,352" fill="none" stroke="black"/>
                <path d="M 152,368 L 168,368" fill="none" stroke="black"/>
                <path d="M 104,384 L 120,384" fill="none" stroke="black"/>
                <path d="M 128,400 L 144,400" fill="none" stroke="black"/>
                <path d="M 32,416 L 48,416" fill="none" stroke="black"/>
                <path d="M 56,432 L 72,432" fill="none" stroke="black"/>
                <path d="M 56,448 L 72,448" fill="none" stroke="black"/>
                <path d="M 56,464 L 72,464" fill="none" stroke="black"/>
                <path d="M 32,480 L 48,480" fill="none" stroke="black"/>
                <path d="M 56,496 L 72,496" fill="none" stroke="black"/>
                <path d="M 56,512 L 72,512" fill="none" stroke="black"/>
                <path d="M 56,528 L 72,528" fill="none" stroke="black"/>
                <g class="text">
                  <text x="32" y="36">module:</text>
                  <text x="132" y="36">ietf-core-oscore</text>
                  <text x="36" y="52">rw</text>
                  <text x="76" y="52">oscore</text>
                  <text x="60" y="68">rw</text>
                  <text x="108" y="68">context*</text>
                  <text x="188" y="68">[id-entry]</text>
                  <text x="84" y="84">rw</text>
                  <text x="132" y="84">id-entry</text>
                  <text x="260" y="84">binary</text>
                  <text x="84" y="100">rw</text>
                  <text x="140" y="100">common-ctx</text>
                  <text x="108" y="116">rw</text>
                  <text x="136" y="116">id?</text>
                  <text x="268" y="116">binary</text>
                  <text x="108" y="132">rw</text>
                  <text x="160" y="132">aead-alg?</text>
                  <text x="268" y="132">uint32</text>
                  <text x="108" y="148">rw</text>
                  <text x="160" y="148">hkdf-alg?</text>
                  <text x="268" y="148">uint32</text>
                  <text x="108" y="164">rw</text>
                  <text x="168" y="164">master-key?</text>
                  <text x="268" y="164">binary</text>
                  <text x="108" y="180">rw</text>
                  <text x="172" y="180">master-salt?</text>
                  <text x="268" y="180">binary</text>
                  <text x="84" y="196">rw</text>
                  <text x="140" y="196">sender-ctx</text>
                  <text x="108" y="212">rw</text>
                  <text x="136" y="212">id?</text>
                  <text x="196" y="212">binary</text>
                  <text x="84" y="228">rw</text>
                  <text x="152" y="228">recipient-ctx</text>
                  <text x="108" y="244">rw</text>
                  <text x="136" y="244">id?</text>
                  <text x="284" y="244">binary</text>
                  <text x="108" y="260">rw</text>
                  <text x="180" y="260">replay-window?</text>
                  <text x="284" y="260">uint64</text>
                  <text x="84" y="276">rw</text>
                  <text x="136" y="276">renew-ctx</text>
                  <text x="108" y="292">rw</text>
                  <text x="160" y="292">(method)?</text>
                  <text x="192" y="308">:(multiple-times)</text>
                  <text x="156" y="324">rw</text>
                  <text x="228" y="324">ctx-derivation</text>
                  <text x="180" y="340">rw</text>
                  <text x="236" y="340">r1-length?</text>
                  <text x="324" y="340">uint64</text>
                  <text x="180" y="356">rw</text>
                  <text x="236" y="356">r2-length?</text>
                  <text x="324" y="356">uint64</text>
                  <text x="180" y="372">rw</text>
                  <text x="236" y="372">r3-length?</text>
                  <text x="324" y="372">uint64</text>
                  <text x="172" y="388">:(sdn-based)</text>
                  <text x="156" y="404">rw</text>
                  <text x="212" y="404">sdn-based?</text>
                  <text x="336" y="404">empty</text>
                  <text x="60" y="420">rw</text>
                  <text x="140" y="420">target-resource*</text>
                  <text x="244" y="420">[target]</text>
                  <text x="84" y="436">rw</text>
                  <text x="124" y="436">target</text>
                  <text x="260" y="436">inet:uri</text>
                  <text x="84" y="452">rw</text>
                  <text x="128" y="452">policy?</text>
                  <text x="260" y="452">policy-t</text>
                  <text x="84" y="468">rw</text>
                  <text x="152" y="468">id-entry-ref?</text>
                  <text x="252" y="468">binary</text>
                  <text x="60" y="484">rw</text>
                  <text x="136" y="484">local-resource*</text>
                  <text x="232" y="484">[local]</text>
                  <text x="84" y="500">rw</text>
                  <text x="120" y="500">local</text>
                  <text x="260" y="500">inet:uri</text>
                  <text x="84" y="516">rw</text>
                  <text x="128" y="516">policy?</text>
                  <text x="260" y="516">policy-t</text>
                  <text x="84" y="532">rw</text>
                  <text x="152" y="532">id-entry-ref?</text>
                  <text x="252" y="532">binary</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="left"><![CDATA[
  module: ietf-core-oscore
  +--rw oscore
     +--rw context* [id-entry]
     |  +--rw id-entry         binary
     |  +--rw common-ctx
     |  |  +--rw id?            binary
     |  |  +--rw aead-alg?      uint32
     |  |  +--rw hkdf-alg?      uint32
     |  |  +--rw master-key?    binary
     |  |  +--rw master-salt?   binary
     |  +--rw sender-ctx
     |  |  +--rw id?   binary
     |  +--rw recipient-ctx
     |  |  +--rw id?              binary
     |  |  +--rw replay-window?   uint64
     |  +--rw renew-ctx
     |     +--rw (method)?
     |        +--:(multiple-times)
     |        |  +--rw ctx-derivation
     |        |     +--rw r1-length?   uint64
     |        |     +--rw r2-length?   uint64
     |        |     +--rw r3-length?   uint64
     |        +--:(sdn-based)
     |           +--rw sdn-based?        empty
     +--rw target-resource* [target]
     |  +--rw target          inet:uri
     |  +--rw policy?         policy-t
     |  +--rw id-entry-ref?   binary
     +--rw local-resource* [local]
        +--rw local           inet:uri
        +--rw policy?         policy-t
        +--rw id-entry-ref?   binary
]]></artwork>
          </artset>
        </figure>
        <section anchor="oscore-dm">
          <name>YANG module</name>
          <t>The detailed YANG module for the EDHOC case is described in Appendix C.</t>
        </section>
        <section anchor="oscore-example">
          <name>Example usage</name>
          <t>Appendix D shows an example of an EDHOC case configuration.</t>
        </section>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>First of all, this document shares all the security issues of SDN that are specified in the Security Considerations sections of <xref target="ITU-T.Y.3300"/> and <xref target="RFC7426"/>.</t>
      <t>On the one hand, it is important to note that there <bcp14>MUST</bcp14> exist a security association providing confidentiality and integrity between the Controller and the Things to protect the critical information (cryptographic keys, configuration parameter, etc.) exchanged between these entities. The nature of and means to create that security association is out of the scope of this document (i.e., it is part of device provisioning or bootstrapping).</t>
      <t>On the other hand, the default policy <bcp14>MUST</bcp14> be to drop (DISCARD) CoAP messages to prevent information leaks. This default policy <bcp14>MUST</bcp14> be preconfigured in the non-volatile memory in the Thing before the Thing contacts the Controller. Moreover, the non-volatile memory <bcp14>MUST</bcp14> be also preconfigured with the required ALLOW policies that allow the Thing and the Controller to communicate each other. This preconfiguration step is not carried out by the Controller but by some other entity before the Thing deployment. In this manner, when the Thing starts/reboots, it will always first apply the configuration in the non-volatile memory before contacting the Controller.</t>
      <t>Finally, this section is divided in two parts in order to analyze different security considerations for both cases: Thing with EDHOC+OSCORE (EDHOC case) and Thing without EDHOC (OSCORE case). In general, the Controller, as typically happens in the SDN paradigm, is a target for different type of attacks, see <xref target="SDNSecServ"/> and <xref target="SDNSecurity"/>. Thus, the Controller is a key entity in the infrastructure and <bcp14>MUST</bcp14> be protected accordingly. In particular, the Controller will handle cryptographic material; thus, the attacker may try to access this information. The impact is different depending on the EDHOC case or the OSCORE case.</t>
      <section anchor="edhoc-sec">
        <name>EDHOC case</name>
        <t>In the EDHOC case, the Controller <bcp14>MAY</bcp14> send EDHOC credentials (public/private keys, certificates, etc.) to the Things using the security association between the Controller and Things. The Controller <bcp14>MUST NOT</bcp14> store the EDHOC credentials after distributing them. Moreover, the Controller <bcp14>MUST NOT</bcp14> allow the reading of these values once they have been applied into the Thing (i.e., write-only operations). One option is to always return the same value (i.e., all 0s) if a read operation is carried out.</t>
        <t>If the attacker has access to the Controller during the period of time that key material is generated, it might have access to the key material. Since these values are used during authentication in EDHOC, it may impersonate the affected Things. Several recommendations are important:</t>
        <ul spacing="normal">
          <li>In the EDHOC case, the Controller <bcp14>MAY</bcp14> generate both public key and private key for the authentication process. In such a case, the Controller <bcp14>MUST</bcp14> remove the associated private key immediately after distributing them to the Things.</li>
          <li>Alternatively, the Thing <bcp14>MAY</bcp14> generate the private key and export only the public key to the Controller. How the Thing generates these cryptographic materials (public key/ private keys) and exports the public key is out of scope of this document.</li>
          <li>If certificates are used, the Thing <bcp14>MAY</bcp14> generate the private key and export the public key for certification to the Controller. How the Thing generates these cryptographic material (public key/ private keys) and exports the public key is out of scope of this document.</li>
        </ul>
      </section>
      <section anchor="oscore-sec">
        <name>OSCORE case</name>
        <t>In the OSCORE case, the Controller sends the OSCORE contexts that includes the session keys required for integrity and encryption. The Controller <bcp14>MUST NOT</bcp14> store these keys after distributing them. Moreover, the Thing receiving the OSCORE context <bcp14>MUST NOT</bcp14> allow the reading of these keys by any other entity (including the Controller itself) once they have been applied (i.e., write-only operations) into the Thing. Nevertheless, if the attacker has access to the Controller during the period of time that key material is generated, it may obtain these values. In other words, the attacker might be able to observe the CoAP traffic and decrypt, or even modify and re-encrypt, the CoAP exchanges between Things.</t>
        <t>Finally, the security association between the Controller and the Things <bcp14>MUST</bcp14> provide, at least, the same degree of protection as the one achieved by the session keys used in the OSCORE contexts. In particular, the security association between the Controller and the Things <bcp14>MUST</bcp14> provide forward secrecy if this property is to be achieved in the OSCORE contexts that the Controller configures into the Things. Similarly, the encryption algorithms used in the security association between the Controller and the Things <bcp14>MUST</bcp14> have, at least, the same strength (minimum strength of a 128-bit key) as the algorithms used to establish the OSCORE contexts.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <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="RFC6241" target="https://www.rfc-editor.org/info/rfc6241" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <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="I-D.ietf-lake-edhoc" target="https://datatracker.ietf.org/doc/html/draft-ietf-lake-edhoc-19" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-edhoc.xml">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="3" month="February" year="2023"/>
            <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-19"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-edhoc" target="https://datatracker.ietf.org/doc/html/draft-ietf-core-oscore-edhoc-06" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-oscore-edhoc.xml">
          <front>
            <title>Profiling EDHOC for CoAP and OSCORE</title>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Stefan Hristozov" initials="S." surname="Hristozov">
              <organization>Fraunhofer AISEC</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson</organization>
            </author>
            <date day="23" month="November" year="2022"/>
            <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-edhoc-06"/>
        </reference>
        <reference anchor="I-D.ietf-core-comi" target="https://datatracker.ietf.org/doc/html/draft-ietf-core-comi-11" xml:base="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-core-comi.xml">
          <front>
            <title>CoAP Management Interface (CORECONF)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>consultant</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>Acklio</organization>
            </author>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Ivaylo Petrov" initials="I." surname="Petrov">
              <organization>Acklio</organization>
            </author>
            <date day="17" month="January" year="2021"/>
            <abstract>
              <t>This document describes a network management interface for constrained devices and networks, called CoAP Management Interface (CORECONF). The Constrained Application Protocol (CoAP) is used to access datastore and data node resources specified in YANG, or SMIv2 converted to YANG. CORECONF uses the YANG to CBOR mapping and converts YANG identifier strings to numeric identifiers for payload size reduction. CORECONF extends the set of YANG based protocols, NETCONF and RESTCONF, with the capability to manage constrained devices and networks.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-comi-11"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <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="RFC8949" target="https://www.rfc-editor.org/info/rfc8949" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <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="RFC7149" target="https://www.rfc-editor.org/info/rfc7149" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7149.xml">
          <front>
            <title>Software-Defined Networking: A Perspective from within a Service Provider Environment</title>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="C. Jacquenet" initials="C." surname="Jacquenet"/>
            <date month="March" year="2014"/>
            <abstract>
              <t>Software-Defined Networking (SDN) has been one of the major buzz words of the networking industry for the past couple of years. And yet, no clear definition of what SDN actually covers has been broadly admitted so far. This document aims to clarify the SDN landscape by providing a perspective on requirements, issues, and other considerations about SDN, as seen from within a service provider environment.</t>
              <t>It is not meant to endlessly discuss what SDN truly means but rather to suggest a functional taxonomy of the techniques that can be used under an SDN umbrella and to elaborate on the various pending issues the combined activation of such techniques inevitably raises. As such, a definition of SDN is only mentioned for the sake of clarification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7149"/>
          <seriesInfo name="DOI" value="10.17487/RFC7149"/>
        </reference>
        <reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC9061" target="https://www.rfc-editor.org/info/rfc9061" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9061.xml">
          <front>
            <title>A YANG Data Model for IPsec Flow Protection Based on Software-Defined Networking (SDN)</title>
            <author fullname="R. Marin-Lopez" initials="R." surname="Marin-Lopez"/>
            <author fullname="G. Lopez-Millan" initials="G." surname="Lopez-Millan"/>
            <author fullname="F. Pereniguez-Garcia" initials="F." surname="Pereniguez-Garcia"/>
            <date month="July" year="2021"/>
            <abstract>
              <t>This document describes how to provide IPsec-based flow protection (integrity and confidentiality) by means of an Interface to Network Security Function (I2NSF) Controller. It considers two main well-known scenarios in IPsec: gateway-to-gateway and host-to-host. The service described in this document allows the configuration and monitoring of IPsec Security Associations (IPsec SAs) from an I2NSF Controller to one or several flow-based Network Security Functions (NSFs) that rely on IPsec to protect data traffic.</t>
              <t>This document focuses on the I2NSF NSF-Facing Interface by providing YANG data models for configuring the IPsec databases, namely Security Policy Database (SPD), Security Association Database (SAD), Peer Authorization Database (PAD), and Internet Key Exchange Version 2 (IKEv2). This allows IPsec SA establishment with minimal intervention by the network administrator. This document defines three YANG modules, but it does not define any new protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9061"/>
          <seriesInfo name="DOI" value="10.17487/RFC9061"/>
        </reference>
        <reference anchor="RFC7426" target="https://www.rfc-editor.org/info/rfc7426" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7426.xml">
          <front>
            <title>Software-Defined Networking (SDN): Layers and Architecture Terminology</title>
            <author fullname="E. Haleplidis" initials="E." role="editor" surname="Haleplidis"/>
            <author fullname="K. Pentikousis" initials="K." role="editor" surname="Pentikousis"/>
            <author fullname="S. Denazis" initials="S." surname="Denazis"/>
            <author fullname="J. Hadi Salim" initials="J." surname="Hadi Salim"/>
            <author fullname="D. Meyer" initials="D." surname="Meyer"/>
            <author fullname="O. Koufopavlou" initials="O." surname="Koufopavlou"/>
            <date month="January" year="2015"/>
            <abstract>
              <t>Software-Defined Networking (SDN) refers to a new approach for network programmability, that is, the capacity to initialize, control, change, and manage network behavior dynamically via open interfaces.  SDN emphasizes the role of software in running networks through the introduction of an abstraction for the data forwarding plane and, by doing so, separates it from the control plane.  This separation allows faster innovation cycles at both planes as experience has already shown.  However, there is increasing confusion as to what exactly SDN is, what the layer structure is in an SDN architecture, and how layers interface with each other.  This document, a product of the IRTF Software-Defined Networking Research Group (SDNRG), addresses these questions and provides a concise reference for the SDN research community based on relevant peer-reviewed literature, the RFC series, and relevant documents by other standards organizations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7426"/>
          <seriesInfo name="DOI" value="10.17487/RFC7426"/>
        </reference>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8392.xml">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <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="RFC9052" target="https://www.rfc-editor.org/info/rfc9052" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9052.xml">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC5869" target="https://www.rfc-editor.org/info/rfc5869" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5869.xml">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications.  The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions.  This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cbor-encoded-cert" target="https://datatracker.ietf.org/doc/html/draft-ietf-cose-cbor-encoded-cert-05" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-cose-cbor-encoded-cert.xml">
          <front>
            <title>CBOR Encoded X.509 Certificates (C509 Certificates)</title>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Shahid Raza" initials="S." surname="Raza">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Joel Höglund" initials="J." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Martin Furuhed" initials="M." surname="Furuhed">
              <organization>Nexus Group</organization>
            </author>
            <date day="10" month="January" year="2023"/>
            <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-05"/>
        </reference>
        <reference anchor="I-D.irtf-t2trg-secure-bootstrapping" target="https://datatracker.ietf.org/doc/html/draft-irtf-t2trg-secure-bootstrapping-03" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.irtf-t2trg-secure-bootstrapping.xml">
          <front>
            <title>Terminology and processes for initial security setup of IoT devices</title>
            <author fullname="Mohit Sethi" initials="M." surname="Sethi">
              <organization>Aalto University</organization>
            </author>
            <author fullname="Behcet Sarikaya" initials="B." surname="Sarikaya">
              <organization>Denpel Informatique</organization>
            </author>
            <author fullname="Dan Garcia-Carrillo" initials="D." surname="Garcia-Carrillo">
              <organization>University of Oviedo</organization>
            </author>
            <date day="26" month="November" year="2022"/>
            <abstract>
              <t>This document provides an overview of terms that are commonly used when discussing the initial security setup of Internet of Things (IoT) devices. This document also presents a brief but illustrative survey of protocols and standards available for initial security setup of IoT devices. For each protocol, we identify the terminology used, the entities involved, the initial assumptions, the processes necessary for completetion, and the knowledge imparted to the IoT devices after the setup is complete.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-secure-bootstrapping-03"/>
        </reference>
        <reference anchor="ONF-OpenFlow" target="https://opennetworking.org/wp-content/uploads/2014/10/openflow-switch-v1.4.1.pdf">
          <front>
            <title>OpenFlow Switch Specification, Version 1.4.1 (Wire Protocol 0x05)</title>
            <author>
              <organization/>
            </author>
            <date year="2015" month="March"/>
          </front>
        </reference>
        <reference anchor="ONF-SDN-Architecture" target="https://www.opennetworking.org/wp-content/uploads/2013/02/TR_SDN_ARCH_1.0_06062014.pdf">
          <front>
            <title>SDN architecture, Issue 1</title>
            <author>
              <organization/>
            </author>
            <date year="2014" month="June"/>
          </front>
        </reference>
        <reference anchor="ITU-T.Y.3300" target="https://www.itu.int/rec/T-REC-Y.3300/en">
          <front>
            <title>Y.3300:Framework of software-defined networking</title>
            <author>
              <organization/>
            </author>
            <date year="2014" month="June"/>
          </front>
        </reference>
        <reference anchor="SDNSecServ" target="https://doi.org/10.1109/SDN4FNS.2013.6702553">
          <front>
            <title>SDN Security A Survey</title>
            <author initials="S." surname="Scott-Hayward">
              <organization/>
            </author>
            <author initials="G. O." surname="Callaghan">
              <organization/>
            </author>
            <author initials="P." surname="Sezer">
              <organization/>
            </author>
            <date year="2013" month="November"/>
          </front>
        </reference>
        <reference anchor="SDNSecurity" target="https://doi.org/10.1145/2491185.2491199">
          <front>
            <title>Towards secure and dependable software-defined networks</title>
            <author initials="D." surname="Kreutz">
              <organization/>
            </author>
            <author initials="F." surname="Ramos">
              <organization/>
            </author>
            <author initials="P." surname="Verissimo">
              <organization/>
            </author>
            <date year="2013" month="August"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="appendix-a">
      <name>YANG data model for EDHOC case</name>
      <artwork><![CDATA[
module ietf-core-edhoc {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-core-edhoc";
  prefix edhoc;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types.";
  }
  
  import ietf-netconf-acm {
    prefix nacm;
    reference
      "RFC 8341: Network Configuration Access Control
                 Model.";
  }

  organization
    "IETF CORE Working Group";
  contact
    "WG Web:  <https://datatracker.ietf.org/wg/core/>
     WG List: <mailto:core@ietf.org>

     Author: Rafael Marin-Lopez
               <mailto:rafa@um.es>
     Author: Gabriel Lopez-Millan
               <mailto:gabilm@um.es>
    ";
  description
    "This module contains the EDHOC Case YANG model for the
     SDN-based Key Management for EDHOC.

     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
     (RFC 2119) (RFC 8174) when, and only when, they appear
     in all capitals, as shown here.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (http://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

  revision 2022-11-28 {
    description
      "Initial version. The YANG data model defines the
      configuration data for EDHOC. The model provides four lists
      'auth-entry', 'connection', 'target resource' and 'local
      resource'. 
  
      The list 'auth-entry' contains a
      set of nodes that contain authentication information for
      EDHOC run for this local Thing.
  
      The list 'connection' contains a set of nodes that specifies
      different connections between this Thing and a peer Thing.
      This list specifies what credentials will be used for the
      local Thing (with a 
      reference to an entry in the list 'auth-entry' and the
      credential that will be required to authenticate the remote
      Thing).
  
      The list 'target-resource' stores policies
      (bypass,discard,protect) related with the target resource
      that this Thing can access. In case of protection, a node in
      the list has a reference to a node in the list 'connection'
      to run EDHOC.
  
      The list 'local-resource' stores policies related with the
      local resources provided by this Thing.";

    reference 
      ".";  

  }

  typedef auth-method-t {
    type enumeration {
  
      enum signature-key {
        description
          "Authentication Key is a Signature Key.";
      }
      enum static-dh-key {
        description
          "Authentication Key is a Static DH Key.";
      }
     
    }
    description
      "The authentication method can include Signature Key or 
      Static Diffie-Hellman Key.";
  }
  
  typedef policy-t {
    type enumeration {
      enum protect {
        description
          "PROTECT the traffic with OSCORE.";
      }
      enum bypass {
        description
          "The CoAP resource does not require
          OSCORE protection";
      }
      enum discard {
        description
          "The CoAP message to a resource is
          discarded.";
        }
      }
      description
        "The policy applicable to access a CoAP resource. 
        There are three possible values: BYPASS 
        (the CoAP message is unprotected), PROTECT 
        (the CoAP message MUST be protected with OSCORE), 
        and DISCARD (the CoAP message is discarded).";
  }
  
  grouping auth-cred-grouping {
  
    leaf id-cred-x {
      type binary;
      mandatory true;
      description
        "ID_CRED_X, X=I or R. 
        COSE header maps and contains one or more
        COSE header parameters";     
    }
       
    leaf auth-method {
      type auth-method-t;
      default "signature-key";
      description
        "Type of authentication method
        (signature key, static DH key).";
    }

    leaf cred-x {
      type binary;
      mandatory true;
      description 
        "X.509 certificates [RFC5280], C509 certificates
        [I-D.ietf-cose-cbor-encoded-cert], CWTs [RFC8392]
        and CWT Claims Sets (CCS) [RFC8392]. Static DH Public 
        and RPK are also included here. If this information is
        associated to the other peer , it contains the information
        required to verify the Signature_or_MAC field.";
    }
    description 
      "This grouping contains the ID_CRED_X for a particular 
      entity X=I or X=R and authentication method and the public
      information of the CRED_X information about the
      authentication credential";
   
  } /*grouping auth-cred-grouping*/

  container edhoc {     
    
    description
      "EDHOC configuration for a Thing. It includes authentication
      credentials for this Thing. EDHOC connection information that
      is a represented with a list of 'connection'. Each connection
      contains information about the remote EDHOC peer and the
      information to authentication against that node.";
      
    list auth-entry {
      key "name";
      ordered-by user;
      description
        "Authentication information entry for the Thing.  
        It is a list of entries ordered by the
        Controller, and each entry is
        unequivocally identified by a name.";

      leaf name {
        type string;
        description
          "Unique name to identify this entry.";
      }
       
      uses auth-cred-grouping;       
        
      leaf private-key {
        nacm:default-deny-all;
        type binary;
    mandatory true;
        description
          "The private key used for this auth-entry associated to
          the public key contained in the Authentication 
          Credential. This value can be set either by the
          Controller or the node can generate it so that 
          it is not known by the Controller.";
      }           
    } /*list auth-entry*/               
 
    list connection {
    
      key "name";
      ordered-by user;
      description
        "List of connections defined between and the Thing A 
        (local peer) and B (remote peer). The list is ordered 
        by the Controller, and each entry is 
        unequivocally identified by a name.";
    
      leaf name {
        type string;
        description
          "Unique name to identify this entry.";
      }
   
      container local {
    
        leaf autostartup {
          type boolean;
          default 'false';
          description 
            "True: the EDHOC implementation starts immediately 
            after setting the configuration of this connection.";
        }
    
        leaf auth-cred-ref {
          type string;
          mandatory true;
          description
            "Local peer authentication information.
            This node points to a specific entry in
            the list 'auth-entry' where the authentication
            information about this peer is stored.  
            It MUST match a 'name' in the list."; 
        }
    
        leaf c-x {
          type binary;
          description
            "Connection identifier. This value is optional since,
            in general, the connection identifier can be generated
            by the node.";
        }
      
        leaf suites-x {
          type binary;
          description 
            "Array of cipher suites which the peer acting as
            Initiator or Responder supports. In case the node acts
            as Initiator (X=I) the array is in order of preference, 
            the first cipher suite in network byte order is the
            most preferred by the Initiator, the last is the one
            selected by the Initiator for this session. The order
            of the cipher suites in SUITES_R has no significance.
            If the most preferred cipher suite is selected then
            SUITES_I contains only that cipher suite and is encoded
            as an int. Since the controller has information
            about the nodes in the connection can set the suitable
            cipher suite to avoid any crypto suite negotiation.";
        }
       
        container ead-x { 
          leaf ead-a {
            type binary;
            description
              "This value contains the EAD 1 when the peer acts 
              as the initiator or EAD 2 when it is the responder.";
          } 
      
          leaf ead-b {
            type binary;
            description
              "This value is EAD 3 when the peer is the initiator
              or EAD 4 when it is the responder.";
          }
          description "To set the EAD in EDHOC (if any).";
        }
 
        description
          "Local node authentication information.";
 
      } /*container local*/
     
      container remote {
        uses auth-cred-grouping;
        description 
          "Remote node authentication information.";   
      } /*container remote*/
     
      leaf key-confirmation {
        type boolean;
        default 'false';
        description 
          "True: message 4 will be sent (if the node is acting as 
         initiator or it has to be received is if the initiator)";
      }
 
      leaf set-oscore {
        type boolean;
        default 'true';
        description 
          "True when after EDHOC we require to establish an 
          OSCORE Security Context.";
      }
  
      leaf key-update-context {
        type binary;
        description
          "The controller sets a context so that EDHOC-KeyUpdate
          can be performed. Each time this value is update the
          EDHOC-KeyUpdate is performed.";
        reference 
          "Appendix I. Ephemeral Diffie-Hellman Over COSE (EDHOC)
          draft-ietf-lake-edhoc-19.";
      }
  
      container reauth-time {
        leaf soft {
          type uint32;
          units "seconds";
          default "0";
          description
            "Soft lifetime. After reaching this time the EDHOC
            re-authentication will start.";
        }
        leaf hard {
          type uint32;
          units "seconds";
          default "0";
          description 
            "Hard lifetime. After reaching this time the EDHOC
            session will be removed.";
        }
        description ".";
    
      } /*container reauth-time*/
    } /* list connection */

    list target-resource  {
  
      description
        "This list contains the resources that this peer 
        (acting as CoAP client) will access and that requires
        OSCORE protection (depending on the policy) in the other
        peer (acting as a CoAP server). They may be discovered by
        some other means by the Thing but installing them allows
        the device to protect immediately the CoAP
        message. The list is ordered by the controller. An node in
        the list is evaluated before the next node in the list. 
        If there is a match the evaluation is stopped and the
        policy applied. That is nodes at the beginning of the list
        has more priority that final nodes.";
  
      key "target";
      ordered-by user;
  
      leaf target {
        type inet:uri;
        description
          "URI to the target resource to be protected with this
          OSCORE Sender Context. If the URI is an empty string it
          means ANY";
      }

      leaf policy {
        type policy-t;
        default 'protect';
        description
          "The policy applied to this resource. Default policy is
          protect. If there is no common context to protect the
          CoAP message is discarded. If the list is empty is not
          possible to access to any resource.";
      }

      leaf conn-ref {
        when "../policy = 'protect'";
        type string;
        description
          "Byte string used to identify the connection in the list 
          'connection' that must be used to protect this message.
          The Thing will act as EDHOC initiator. If the EDHOC 
          session is already set and cryptographic material is
          available the message will be protected.";
      } 
    } /*list target-resources*/
  
    list local-resource {

      description
        "This list contains the resources that may require
        protection (depending of the policy) in this peer (acting
        as a CoAP server).";
  
      key "local";
      ordered-by user;
  
      leaf local {
        type inet:uri;
        description
          "URI of the local resources to be protected with 
          this OSCORE Recipient Context.";
      }

      leaf policy {
        type policy-t;
        default 'protect';
        description 
          "The policy applied to this resource. Default policy is
          protect. If there is no common context to protect the
          CoAP message is discarded.";
      }

      leaf conn-ref {
        when "../policy = 'protect'";
        type string;
        description
          "Byte string used to identify the connection in the list 
          'connection' that must be used to protect this resource.
          The Thing will act as EDHOC responder. If the EDHOC 
          session is already set and cryptographic material 
          is available the message will be protected.";
      }
    } /*list local-resource*/    
  } /* container edhoc */
} /* module ietf-core-edhoc */
]]></artwork>
    </section>
    <section anchor="appendix-b">
      <name>EDHOC case example usage</name>
      <!-- CBOR example? -->
<t>This example shows an XML representation of the configuration sent by the SDN Controller to establish an EDHOC-derived OSCORE context to Thing 't1' using "signature-key" authentication (RSA) when accessing the resource "coap://2001:db8:cafe:123::200/res1". (Some values are simplified for brevity with "base64encodedvalue==").</t>
      <artset>
        <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="408" viewBox="0 0 408 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
            <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
            <path d="M 80,160 L 80,192" fill="none" stroke="black"/>
            <path d="M 128,32 L 128,64" fill="none" stroke="black"/>
            <path d="M 208,72 L 208,112" fill="none" stroke="black"/>
            <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
            <path d="M 320,160 L 320,192" fill="none" stroke="black"/>
            <path d="M 392,160 L 392,192" fill="none" stroke="black"/>
            <path d="M 128,32 L 280,32" fill="none" stroke="black"/>
            <path d="M 128,64 L 280,64" fill="none" stroke="black"/>
            <path d="M 72,112 L 328,112" fill="none" stroke="black"/>
            <path d="M 8,160 L 80,160" fill="none" stroke="black"/>
            <path d="M 320,160 L 392,160" fill="none" stroke="black"/>
            <path d="M 88,174 L 136,174" fill="none" stroke="black"/>
            <path d="M 88,178 L 136,178" fill="none" stroke="black"/>
            <path d="M 256,174 L 304,174" fill="none" stroke="black"/>
            <path d="M 256,178 L 304,178" fill="none" stroke="black"/>
            <path d="M 8,192 L 80,192" fill="none" stroke="black"/>
            <path d="M 320,192 L 392,192" fill="none" stroke="black"/>
            <path d="M 336,112 L 356,152" fill="none" stroke="black"/>
            <path d="M 44,152 L 64,112" fill="none" stroke="black"/>
            <g class="text">
              <text x="168" y="52">SDN</text>
              <text x="228" y="52">Controller</text>
              <text x="156" y="84">Southbound</text>
              <text x="160" y="100">Interface</text>
              <text x="44" y="180">t1</text>
              <text x="196" y="180">EDHOC/OSCORE</text>
              <text x="332" y="180">t2</text>
              <text x="368" y="180">/res1</text>
              <text x="84" y="212">:100</text>
              <text x="316" y="212">:200</text>
              <text x="200" y="244">(2001:db8:cafe:123:/64)</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art" align="center"><![CDATA[
                              +------------------+
                              |   SDN Controller |
                              +------------------+
                             Southbound |
                              Interface |
                      /-----------------+---------------\
                     /                                   \
                    /                                     \
               +--------+                             +--------+ 
               |   t1   |======= EDHOC/OSCORE ======= |t2 /res1|
               +--------+                             +--------+ 
                       :100                         :200       

                            (2001:db8:cafe:123:/64)       
]]></artwork>
      </artset>
      <artset>
        <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="608" width="480" viewBox="0 0 480 608" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
            <path d="M 272,256 L 288,256" fill="none" stroke="black"/>
            <path d="M 352,272 L 368,272" fill="none" stroke="black"/>
            <path d="M 344,304 L 360,304" fill="none" stroke="black"/>
            <path d="M 344,320 L 360,320" fill="none" stroke="black"/>
            <path d="M 200,544 L 200,544" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="376,272 364,266.4 364,277.6" fill="black" transform="rotate(0,368,272)"/>
            <polygon class="arrowhead" points="368,320 356,314.4 356,325.6" fill="black" transform="rotate(0,360,320)"/>
            <polygon class="arrowhead" points="368,304 356,298.4 356,309.6" fill="black" transform="rotate(0,360,304)"/>
            <polygon class="arrowhead" points="296,256 284,250.4 284,261.6" fill="black" transform="rotate(0,288,256)"/>
            <g class="text">
              <text x="28" y="36">&lt;edhoc</text>
              <text x="264" y="36">xmlns="urn:ietf:params:xml:ns:yang:ietf-core-edhoc"</text>
              <text x="240" y="52">xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</text>
              <text x="84" y="68">&lt;auth-entry&gt;</text>
              <text x="172" y="84">&lt;name&gt;auth_entry_t1&lt;/name&gt;</text>
              <text x="240" y="100">&lt;id-cred-x&gt;base64encodedvalue==&lt;/id-cred-x&gt;</text>
              <text x="256" y="116">&lt;private-key&gt;base64encodedvalue==&lt;/private-key&gt;</text>
              <text x="228" y="132">&lt;auth-method&gt;signature-key&lt;/auth-method&gt;</text>
              <text x="216" y="148">&lt;cred-x&gt;base64encodedvalue==&lt;/cred-x&gt;</text>
              <text x="88" y="164">&lt;/auth-entry&gt;</text>
              <text x="84" y="180">&lt;connection&gt;</text>
              <text x="184" y="196">&lt;name&gt;edhoc_conn_t1_t2&lt;/name&gt;</text>
              <text x="96" y="212">&lt;local&gt;</text>
              <text x="224" y="228">&lt;autostartup&gt;true&lt;/autostartup&gt;</text>
              <text x="276" y="244">&lt;auth-cred-ref&gt;auth_entry_t1&lt;/auth-cred-ref&gt;</text>
              <text x="184" y="260">&lt;c-x&gt;Mzc=&lt;/c-x&gt;&lt;!--37</text>
              <text x="224" y="276">&lt;suites-x&gt;MDI=&lt;/suites-x&gt;&lt;!--02</text>
              <text x="132" y="292">&lt;ead-x&gt;\</text>
              <text x="240" y="308">&lt;ead-a&gt;MDE=&lt;/ead-a&gt;&lt;!--01</text>
              <text x="240" y="324">&lt;ead-b&gt;MDI=&lt;/ead-b&gt;&lt;!--02</text>
              <text x="132" y="340">&lt;/ead-x&gt;</text>
              <text x="100" y="356">&lt;/local&gt;</text>
              <text x="100" y="372">&lt;remote&gt;</text>
              <text x="272" y="388">&lt;id-cred-x&gt;base64encodedvalue==&lt;/id-cred-x&gt;</text>
              <text x="248" y="404">&lt;cred-x&gt;base64encodedvalue==&lt;/cred-x&gt;</text>
              <text x="104" y="420">&lt;/remote&gt;</text>
              <text x="232" y="436">&lt;key-confirmation&gt;true&lt;/key-confirmation&gt;</text>
              <text x="184" y="452">&lt;set-oscore&gt;true&lt;/set-oscore&gt;</text>
              <text x="152" y="468">&lt;key-update-context/&gt;</text>
              <text x="124" y="484">&lt;reauth-time/&gt;</text>
              <text x="88" y="500">&lt;/connection&gt;</text>
              <text x="104" y="516">&lt;target-resource&gt;</text>
              <text x="272" y="532">&lt;target&gt;coap://2001:db8:cafe:123::200/res1&lt;/target&gt;</text>
              <text x="132" y="548">&lt;policy&gt;protect&lt;</text>
              <text x="232" y="548">policy&gt;</text>
              <text x="216" y="564">&lt;conn-ref&gt;edhoc_conn_t1_t2&lt;/conn-ref&gt;</text>
              <text x="108" y="580">&lt;/target-resource&gt;</text>
              <text x="36" y="596">&lt;/edhoc&gt;</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art" align="center"><![CDATA[
<edhoc xmlns="urn:ietf:params:xml:ns:yang:ietf-core-edhoc"
    xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
    <auth-entry>
        <name>auth_entry_t1</name>
        <id-cred-x>base64encodedvalue==</id-cred-x>
        <private-key>base64encodedvalue==</private-key>
        <auth-method>signature-key</auth-method>
        <cred-x>base64encodedvalue==</cred-x>
    </auth-entry>
    <connection>
        <name>edhoc_conn_t1_t2</name>
        <local>
            <autostartup>true</autostartup>
            <auth-cred-ref>auth_entry_t1</auth-cred-ref>
            <c-x>Mzc=</c-x><!--37-->
            <suites-x>MDI=</suites-x><!--02-->
            <ead-x>\
                 <ead-a>MDE=</ead-a><!--01-->
                 <ead-b>MDI=</ead-b><!--02-->
            </ead-x>
        </local>
        <remote>
            <id-cred-x>base64encodedvalue==</id-cred-x>
            <cred-x>base64encodedvalue==</cred-x>
        </remote>
        <key-confirmation>true</key-confirmation>
        <set-oscore>true</set-oscore>
        <key-update-context/>
        <reauth-time/>
    </connection>
    <target-resource>
        <target>coap://2001:db8:cafe:123::200/res1</target>
        <policy>protect</policy>
        <conn-ref>edhoc_conn_t1_t2</conn-ref> 
    </target-resource>
</edhoc>
]]></artwork>
      </artset>
    </section>
    <section anchor="appendix-c">
      <name>YANG data model for OSCORE case</name>
      <artwork><![CDATA[
module ietf-core-oscore {
  
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-core-oscore";
  prefix oscore;
  
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types.";
  }
  
  import ietf-netconf-acm {
    prefix nacm;
    reference
      "RFC 8341: Network Configuration Access Control
                 Model.";
  }

  organization
    "IETF CORE Working Group";
  contact
    "WG Web:  <https://datatracker.ietf.org/wg/core/>
     WG List: <mailto:core@ietf.org>

     Author: Rafael Marin-Lopez
              <mailto:rafa@um.es>
     Author: Gabriel Lopez-Millan
              <mailto:gabilm@um.es>

    ";
  description
    "Data model for OSCORE case (RFC 8613) in the SDN-based
     OSCORE flow protection service.

     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
     (RFC 2119) (RFC 8174) when, and only when, they appear
     in all capitals, as shown here.

     Copyright (c) 2021 IETF Trust and the persons
     identified as authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD
     License set forth in Section 4.c of the IETF Trust's Legal 
     Provisions Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of ; see
     the RFC itself for full legal notices.";

  revision 2022-11-28 {
    description
      "Initial version. This version only includes the YANG Data 
      model taking into account the information in Object 
      Security for Constrained RESTful Environments (OSCORE).
  
      The model contains three main lists: context, 
      targer-resource and local-resource. 
      The list 'context' stores the OSCORE context in this 
      Thing. Each node in the list 'context' contains three 
      contexts: common ('common-ctx'), sender ('sender-ctx') and 
      recipient ('recipient-ctx') contexts.
  
      The list 'target-resource' stores policies (bypass, 
      discard, protect) related with the target resource that 
      this Thing can access'. In case of protection, a node in 
      the list has a reference to a node in the list 'context'.
  
      The list 'local-resource' stores policies related with the 
      local resources provided by this Thing.";
    reference ".";
  }

  typedef policy-t {
       type enumeration {
         enum protect {
           description
             "PROTECT the traffic with OSCORE.";
         }
         enum bypass {
           description
             "The CoAP resource does not require
             OSCORE protection";
         }
         enum discard {
           description
             "The CoAP message to a resource is
              discarded.";
         }
       }
       description
         "The policy applicable to access a CoAP resource. There 
         are three possible values: BYPASS (the CoAP message is 
         unprotected), PROTECT (the CoAP message MUST be 
         protected with OSCORE), and DISCARD (The CoAP message 
         is discarded).";
  }

  container oscore {

    description
      "Container for configuration of the OSCORE
      case. The container contains a list of OSCORE contexts. 
      Each node of the list contains three possible contexts. 
      Common Context, Sender  Context and Recipient Context. The 
      Controller configures at least the Common Context and 
      configure a Sender Context or a Recipient Context or 
      both.";

    list context {
  
      key "id-entry";
      ordered-by user;
  
      leaf id-entry {
        type binary;
        description
          "Unique name to identify this entry.";
      }

      container common-ctx {
        description
          "This container carries the
          configuration of an OSCORE Common Context.";
      
        leaf id {
          type binary;
          default 0x00;
          description
            "Optional variable-length byte string providing
            additional information to identify the Common 
            Context and to derive AEAD keys and Common IV. The 
            use of ID Context is described in Section 5.1 in RFC 
            8613";
        }
    
        leaf aead-alg {
          type uint32;
          default "10";
          description
            "The COSE AEAD algorithm to use for encryption.";
        }
      
        leaf hkdf-alg {
          type uint32;
          default "1";
          description
            "An HMAC-based key derivation function (HKDF,
            [RFC5869]) used to derive the Sender Key, Recipient 
            Key, and Common IV.";
        }
  
        leaf master-key {
          nacm:default-deny-all;
          type binary;
          description
            "Variable length, random byte string (see
            Section 12.3) in RFC 8613 used to derive AEAD keys 
            and Common IV.";
        }
  
        leaf master-salt {
          nacm:default-deny-all;
          type binary;
          description
            "Optional variable-length byte string 
            containing the salt used to derive AEAD 
            keys and Common IV.";
        }
        
      } /*container common-ctx*/
    
      container sender-ctx {
    
        description
          "This container carries the
          configuration of an OSCORE Sender Context.";

          leaf id {
            type binary;
            default 0x00;
            description
              "Byte string used to identify the Sender Context, 
              to derive AEAD keys and Common IV, and to 
              contribute to the uniqueness of AEAD nonces.  
              Maximum length is determined by the AEAD 
              Algorithm.";
          }

      } /*container sender-ctx*/
  
      container recipient-ctx {
   
        description
          "This container carries the
          configuration of an OSCORE Recipient Context.";

          leaf id {
            type binary;
            default 0x01;
            description
              "Byte string used to identify the Recipient 
              Context, to derive AEAD keys and Common IV, and to 
              contribute to the uniqueness of AEAD nonces.  
              Maximum length is determined by the
              AEAD Algorithm.";
          }

          leaf replay-window {
            type uint64;
            default "32";
            description
              "To set the anti-replay window size.
               The default value is set to 32,
               following the recommendation in RFC 8613.";
            reference
              "RFC 8613: Object Security for Constrained 
              RESTful Environments (OSCORE),
              Section 3.2.2.";
          }
     
      } /*container recipient-ctx*/ 
 
  
      container renew-ctx {
        description 
          "This container includes information to update the 
          OSCORE contexts.";
        
        choice method {
          default sdn-based;
          case multiple-times {
        
            container ctx-derivation {
              leaf r1-length {
                type uint64;
                default 8;
                description
                  "R1 length.";
              }
              leaf r2-length {
                type uint64;
                default 8;
                description
                  "R2 length.";
              }
              leaf r3-length {
                type uint64;
                default 8;
                description
                  "R3 length.";
              }
              description 
                "This container allow configuring the required 
                information so that the security context 
                derivation in Appendix B.2 is implemented. The
                Controller is in charge of providing the length 
                of R1, R2 and R3. If a node is acting as 
                initiator in this procedure, R1 and R3 lengths 
                are defined. If it is acting as responder R2 
                length applies.";
              reference 
                "Appendix B.2 Security Context Derived Multiple 
                Times - RFC 8613";
            } /*container ctx-derivation*/
      
            description 
              "Appendix B.2. protocol in RFC 8613 is used to 
              renew OSCORE context.";
          } /*case multiple-times*/
      
          case sdn-based {
            leaf sdn-based {
            type empty;
            description
              "The OSCORE context is updated by the Controller.";
            }
            description 
              "The Controller manages the OSCORE renewal time 
              and update the contexts when it decides so.";
          } /*case sdn-based*/
      
        description
        "Different methods to update OSCORE context according 
        to RFC 8613 and this document.";                    
       } /*choice method*/
     } /*container renew-ctx*/
  
      description
        "The OSCORE contexts is represented as a list of OSCORE 
        context entries, where each entry contains a OSCORE 
        common context, sender context and recipient context 
        associated to the OSCORE common context.";
   
    } /*list contexts*/
 
    list target-resource  {
      description
        "This list contains the resources that this peer (acting 
        as CoAP client) will access and that requires OSCORE 
        protection (depending on the policy) in the other peer 
        (acting as a CoAP server). They may be discovered by 
        some other means by the Thing but installing them allows 
        the device to protect immediately the CoAP message. The 
        list is ordered by the Controller. A node in the list is 
        evaluated before the next node in the list. If there is 
        a match the evaluation is stopped and the policy 
        applied. That is nodes at the beginning of the list has 
        more priority that final nodes.";
  
      key "target";
      ordered-by user;
  
      leaf target {
        type inet:uri;
        description
          "URI to the target resource to be protected with this 
          OSCORE Sender Context. If the URI is an empty string 
          it means ANY";
      }

      leaf policy {
        type policy-t;
        default 'protect';
        description
          "The policy applied to this resource. Default policy 
          is protect. If there is no common context to protect 
          the CoAP message is discarded. If the list is empty is 
          not possible to access to any resource.";
      }

      leaf id-entry-ref {
        when "../policy = 'protect'";
        type binary;
        description
          "Byte string used to identify the context in the list 
          'context' that will be used for this target source.";
      } 
    } /*list target-resources*/
  
    list local-resource {

      description
        "This list contains the resources that may require 
        OSCORE protection (depending of the policy) in this peer 
        (acting as a CoAP server).";
  
      key "local";
      ordered-by user;
  
      leaf local {
        type inet:uri;
        description
          "URI of the local resources to be protected with this 
          OSCORE Recipient Context.";
      }

      leaf policy {
        type policy-t;
        default 'protect';
        description 
          "The policy applied to this resource. Default policy 
          is protect. If there is no common context to protect 
          the CoAP message is discarded.";
      }

      leaf id-entry-ref {
        when "../policy = 'protect'";
        type binary;
        description
          "Byte string used to identify the context in the list 
          'context' that  will be used for this local source.";
      }
    } /*list local-resources*/ 
    
  } /*container oscore*/
 
} /*module ietf-core-oscore */
]]></artwork>
    </section>
    <section anchor="appendix-d">
      <name>OSCORE case example usage</name>
      <t>This example shows an XML representation of the configuration sent by the SDN Controller to establish an OSCORE context to Thing 't1' using "signature-key" authentication (RSA) when accessing the resource "coap://2001:db8:cafe:123::200/res1". (Some values are simplified for brevity with "base64encodedvalue==").</t>
      <artset>
        <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="408" viewBox="0 0 408 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
            <path d="M 8,160 L 8,192" fill="none" stroke="black"/>
            <path d="M 80,160 L 80,192" fill="none" stroke="black"/>
            <path d="M 128,32 L 128,64" fill="none" stroke="black"/>
            <path d="M 208,72 L 208,112" fill="none" stroke="black"/>
            <path d="M 280,32 L 280,64" fill="none" stroke="black"/>
            <path d="M 320,160 L 320,192" fill="none" stroke="black"/>
            <path d="M 392,160 L 392,192" fill="none" stroke="black"/>
            <path d="M 128,32 L 280,32" fill="none" stroke="black"/>
            <path d="M 128,64 L 280,64" fill="none" stroke="black"/>
            <path d="M 72,112 L 328,112" fill="none" stroke="black"/>
            <path d="M 8,160 L 80,160" fill="none" stroke="black"/>
            <path d="M 320,160 L 392,160" fill="none" stroke="black"/>
            <path d="M 88,174 L 168,174" fill="none" stroke="black"/>
            <path d="M 88,178 L 168,178" fill="none" stroke="black"/>
            <path d="M 240,174 L 304,174" fill="none" stroke="black"/>
            <path d="M 240,178 L 304,178" fill="none" stroke="black"/>
            <path d="M 8,192 L 80,192" fill="none" stroke="black"/>
            <path d="M 320,192 L 392,192" fill="none" stroke="black"/>
            <path d="M 336,112 L 356,152" fill="none" stroke="black"/>
            <path d="M 44,152 L 64,112" fill="none" stroke="black"/>
            <g class="text">
              <text x="168" y="52">SDN</text>
              <text x="228" y="52">Controller</text>
              <text x="156" y="84">Southbound</text>
              <text x="160" y="100">Interface</text>
              <text x="44" y="180">t1</text>
              <text x="204" y="180">OSCORE</text>
              <text x="352" y="180">t2/res1</text>
              <text x="84" y="212">:100</text>
              <text x="316" y="212">:200</text>
              <text x="200" y="244">(2001:db8:cafe:123:/64)</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art" align="center"><![CDATA[
                              +------------------+
                              |   SDN Controller |
                              +------------------+
                             Southbound |
                              Interface |
                      /-----------------+---------------\
                     /                                   \
                    /                                     \
               +--------+                             +--------+ 
               |   t1   |=========== OSCORE ========= |t2/res1 |
               +--------+                             +--------+ 
                       :100                         :200       

                            (2001:db8:cafe:123:/64)       
]]></artwork>
      </artset>
      <artset>
        <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="448" width="520" viewBox="0 0 520 448" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
            <path d="M 272,240 L 288,240" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="296,240 284,234.4 284,245.6" fill="black" transform="rotate(0,288,240)"/>
            <g class="text">
              <text x="40" y="36">&lt;oscore</text>
              <text x="244" y="52">xmlns="urn:ietf:params:xml:ns:yang:ietf-core-oscore"</text>
              <text x="240" y="68">xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;</text>
              <text x="72" y="84">&lt;context&gt;</text>
              <text x="156" y="100">&lt;name&gt;ctx-t1_t2&lt;/name&gt;</text>
              <text x="116" y="116">&lt;common-ctx&gt;</text>
              <text x="264" y="132">&lt;id&gt;Mzc6Y2I6ZjM6MjE6MDA6MTc6YTI6ZDM=&lt;/id&gt;</text>
              <text x="192" y="148">&lt;aead-alg&gt;10&lt;/aead-alg&gt;</text>
              <text x="220" y="164">&lt;hkdf-alg&gt;1&lt;/hkdf-alg&gt;</text>
              <text x="312" y="180">&lt;master-key&gt;base64encodedvalue==&lt;/master-key&gt;</text>
              <text x="320" y="196">&lt;master-salt&gt;base64encodedvalue==&lt;/master-salt&gt;</text>
              <text x="120" y="212">&lt;/common-ctx&gt;</text>
              <text x="116" y="228">&lt;sender-ctx&gt;</text>
              <text x="168" y="244">&lt;id&gt;MEY=&lt;/id&gt;&lt;!--</text>
              <text x="252" y="244">0F</text>
              <text x="152" y="260">&lt;/sender-ctx&gt;</text>
              <text x="128" y="276">&lt;recipient-ctx&gt;</text>
              <text x="152" y="292">&lt;id&gt;MDE=&lt;/id&gt;</text>
              <text x="132" y="308">&lt;/recipient-ctx&gt;</text>
              <text x="76" y="324">&lt;/context&gt;</text>
              <text x="104" y="340">&lt;target-resource&gt;</text>
              <text x="272" y="356">&lt;target&gt;coap://2001:db8:cafe:123::200/res1&lt;/target&gt;</text>
              <text x="164" y="372">&lt;policy&gt;protect&lt;/policy&gt;</text>
              <text x="188" y="388">&lt;name-ref&gt;ctx-t1_t2&lt;/name-ref&gt;</text>
              <text x="108" y="404">&lt;/target-resource&gt;</text>
              <text x="40" y="420">&lt;/oscore&gt;</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art" align="center"><![CDATA[
 <oscore
    xmlns="urn:ietf:params:xml:ns:yang:ietf-core-oscore"
    xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
    <context>
        <name>ctx-t1_t2</name>
        <common-ctx>
            <id>Mzc6Y2I6ZjM6MjE6MDA6MTc6YTI6ZDM=</id> 
            <aead-alg>10</aead-alg>
                <hkdf-alg>1</hkdf-alg>
                <master-key>base64encodedvalue==</master-key>   
                <master-salt>base64encodedvalue==</master-salt> 
        </common-ctx>
        <sender-ctx>
            <id>MEY=</id><!-- 0F -->
            </sender-ctx>
        <recipient-ctx>
            <id>MDE=</id> 
        </recipient-ctx>
    </context>
    <target-resource>
        <target>coap://2001:db8:cafe:123::200/res1</target>
        <policy>protect</policy>
        <name-ref>ctx-t1_t2</name-ref> 
    </target-resource>  
</oscore>

]]></artwork>
      </artset>
    </section>
    <section numbered="false" anchor="acks">
      <name>Acknowledgments</name>
      <t>Authors want to thank</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
OZfktmITxj0kujScHACoqTJlvA4jiSsRuniL1bi93tJ3VPvJ9NnwNzULMogu
da02csSnrjYk6pzo8UOMm0o9aA1MG/0LaTJuQyGm943S2Oq63RP64ZGjok7I
4FidKTEZxhgTtbQ0kycscC52UBYXuE1J3atMJlhMtFXtc3oBCxHSsqsIhlvY
VK2iHeYqfomcrwbDgXW6mVlxPTNR+01kKcpdusjJoLoymeIyh1y/zs4B6vCw
2UHE25sHruLoslqcIY8wIYqW4YCE9tNbY0GBeBBzhgrZmDJRAXuoQ/knJ2VK
At5mpqGHCSg4q7zVBNYxS5OcRDDSNSj0MAQW2+XUaT+989QqUOTFIQ9mEgzo
uCwzlaSORHpTc25AHQcHEnSQQeof4Bc3cFTlWhoriB4LsxyWzTdLqbFrclks
OZdo8z2r9vjtdrvCktEyPuYznTbGotfFsCJ3lv7n4zggJ/6d/Ib8Bexo2Kf6
E+xoeP+ZKSrRWvXipnqWUeeFTeg1zmRXv01QN/bHIQVMqzMMND5LpbfGlQVq
1mds1sAQsGrjtWKoMlmZMV610OgehF+wGHQ1xGtz74Tcel69PPydLbVCVlQ4
o3ILVXC3jebiF5oQ4seZZ6ncIDpORQbd2Mn5s4lXCr/QsiMz7ovocZapIeyS
s3VpkqFyiSN03qI2TPLtg/52lwHiAiuMizDPRL6/o9/XlceRLP2s2fcyhwnJ
En7/jEmW5VwjrXY86xWX5Qc2J5bdPeTjyi8brVOHqY1NUqYDQtQQq6G6hxTQ
w2z463tddc9pn/iN75qyNtk9QsM9vNVl6h7iXPkYhJRO2SELkCxnW5628jRN
JpWVS2SLttMgzQNIL3dkblwXWgP3iFtIDkvlXXQCwQ4t0wax65sSyL21AJoc
6VtfsMA9F3OWzqi+OrBHJyYdIXQumbgMDwepZoO6A/3ViBDCme6OTgxBJSBD
ruQyDWJFqnu2qg7GFdWuVGXfXwGxiHIFjE2gHxlGJVbEXUwhSvC78YUQcStA
1NDRpw7zFIOZME6hTim9q0QTYEY1bsxZsVRmCCT/OgymLs8TJwuDilNVC4Nw
7OHAGgp6mrA1n5LELSieCFfFw75cLVHRtBUEWSbed0/6IGAYWynmZDJHalaP
/GmPYnl2zVQ6zbL9dDq/1DNBgeFihljovMEtWJiWQ4dqOkmsExZPkXVxBcPX
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
6bUmAQA=

-->

</rfc>
