<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.6 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tiloca-core-oscore-capable-proxies-02" category="std" updates="8613" obsoletes="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.9.1 -->
  <front>
    <title abbrev="OSCORE-capable Proxies">OSCORE-capable Proxies</title>
    <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-capable-proxies-02"/>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="R." surname="Höglund" fullname="Rikard Höglund">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440</code>
          <country>Sweden</country>
        </postal>
        <email>rikard.hoglund@ri.se</email>
      </address>
    </author>
    <date year="2022" month="March" day="07"/>
    <area>Internet</area>
    <workgroup>CoRE Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>Object Security for Constrained RESTful Environments (OSCORE) can be used to protect CoAP messages end-to-end between two endpoints at the application layer, also in the presence of intermediaries such as proxies. This document defines how to use OSCORE for protecting CoAP messages also between an origin application endpoint and an intermediary, or between two intermediaries. Also, it defines how to secure a CoAP message by applying multiple, nested OSCORE protections, e.g., both end-to-end between origin application endpoints, as well as between an application endpoint and an intermediary or between two intermediaries. Thus, this document updates RFC 8613. The same approach can be seamlessly used with Group OSCORE, for protecting CoAP messages when group communication with intermediaries is used.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
  Constrained RESTful Environments Working Group mailing list (core@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://gitlab.com/crimson84/draft-tiloca-core-oscore-to-proxies"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The Constrained Application Protocol (CoAP) <xref target="RFC7252" format="default"/> supports the presence of intermediaries, such as forward-proxies and reverse-proxies, which assist origin clients by performing requests to origin servers on their behalf, and forwarding back the related responses.</t>
      <t>CoAP supports also group communication scenarios <xref target="I-D.ietf-core-groupcomm-bis" format="default"/>, where clients can send a one-to-many request targeting all the servers in the group, e.g., by using IP multicast. Like for one-to-one communication, group settings can also rely on intermediaries <xref target="I-D.tiloca-core-groupcomm-proxy" format="default"/>.</t>
      <t>The protocol Object Security for Constrained RESTful Environments (OSCORE) <xref target="RFC8613" format="default"/> can be used to protect CoAP messages between two endpoints at the application layer, especially achieving end-to-end security in the presence of (non-trusted) intermediaries. When CoAP group communication is used, the same can be achieved by means of the protocol Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm" format="default"/>.</t>
      <t>For a number of use cases (see <xref target="sec-use-cases" format="default"/>), it is required and/or beneficial that communications are secured also between an application endpoint (i.e., a CoAP origin client/server) and an intermediary, as well as between two adjacent intermediaries in a chain. This especially applies to the communication leg between the CoAP origin client and the adjacent intermediary acting as next hop towards the CoAP origin server.</t>
      <t>In such cases, and especially if the origin client already uses OSCORE to achieve end-to-end security with the origin server, it would be convenient that OSCORE is used also to secure communications between the origin client and its next hop. However, the original specification <xref target="RFC8613" format="default"/> does not define how OSCORE can be used to protect CoAP messages in such communication leg, which would require to consider also the intermediary as an "OSCORE endpoint".</t>
      <t>This document fills this gap, and updates <xref target="RFC8613" format="default"/> as follows.</t>
      <ul spacing="normal">
        <li>It defines how to use OSCORE for protecting a CoAP message in the communication leg between: i) an origin client/server and an intermediary; or ii) two adjacent intermediaries in an intermediary chain. That is, besides origin clients/servers, it allows also intermediaries to be possible "OSCORE endpoints".</li>
        <li>It admits a CoAP message to be secured by multiple, nested OSCORE protections applied in sequence, as an "OSCORE-in-OSCORE" process. For instance, this is the case when the message is OSCORE-protected end-to-end between the origin client and origin server, and the result is further OSCORE-protected over the leg between the current and next hop (e.g., the origin client and the adjacent intermediary acting as next hop towards the origin server).</li>
      </ul>
      <t>This document does not specify any new signaling method to guide the message processing on the different endpoints. In particular, every endpoint is always able to understand what steps to take on an incoming message depending on the presence of the OSCORE Option, as exclusively included or instead combined together with CoAP options intended for an intermediary.</t>
      <t>The approach defined in this document can be seamlessly adopted also when Group OSCORE is used, for protecting CoAP messages in group communication scenarios that rely on intermediaries.</t>
      <section anchor="terminology" numbered="true" toc="default">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals, as shown here.</t>
        <t>Readers are expected to be familiar with the terms and concepts related to CoAP <xref target="RFC7252" format="default"/>; OSCORE <xref target="RFC8613" format="default"/> and Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm" format="default"/>. This document especially builds on concepts and mechanics related to intermediaries such as CoAP forward-proxies.</t>
        <t>In addition, this document uses the following terms.</t>
        <ul spacing="normal">
          <li>Source application endpoint: an origin client producing a request, or an origin server producing a response.</li>
          <li>Destination application endpoint: an origin server intended to consume a request, or an origin client intended to consume a response.</li>
          <li>Application endpoint: a source or destination application endpoint.</li>
          <li>Source OSCORE endpoint: an endpoint protecting a message with OSCORE or Group OSCORE.</li>
          <li>Destination OSCORE endpoint: an endpoint unprotecting a message with OSCORE or Group OSCORE.</li>
          <li>OSCORE endpoint: a source/destination OSCORE endpoint. An OSCORE endpoint is not necessarily also an application endpoint with respect to a certain message.</li>
          <li>Proxy-related option: the Proxy-URI Option, the Proxy-Scheme Option, or any of the Uri-* Options.</li>
          <li>OSCORE-in-OSCORE: the process by which a message protected with (Group) OSCORE is further protected with (Group) OSCORE. This means that, if such a process is used, a successful decryption/verification of an OSCORE-protected message might yield an OSCORE-protected message.</li>
        </ul>
      </section>
    </section>
    <section anchor="sec-use-cases" numbered="true" toc="default">
      <name>Use Cases</name>
      <t>The approach proposed in this document has been motivated by a number of use cases, which are summarized below.</t>
      <section anchor="ssec-uc1" numbered="true" toc="default">
        <name>CoAP Group Communication with Proxies</name>
        <t>CoAP supports also one-to-many group communication, e.g., over IP multicast <xref target="I-D.ietf-core-groupcomm-bis" format="default"/>, which can be protected end-to-end between origin client and origin servers by using Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm" format="default"/>.</t>
        <t>This communication model can be assisted by intermediaries such as a CoAP forward-proxy or reverse-proxy, which relays a group request to the origin servers. If Group OSCORE is used, the proxy is intentionally not a member of the OSCORE group. Furthermore, <xref target="I-D.tiloca-core-groupcomm-proxy" format="default"/> defines a signaling protocol between origin client and proxy, to ensure that responses from the different origin servers are forwarded back to the origin client within a time interval set by the client, and that they can be distinguished from one another.</t>
        <t>In particular, it is required that the proxy identifies the origin client as allowed-listed, before forwarding a group request to the servers (see <xref section="4" sectionFormat="of" target="I-D.tiloca-core-groupcomm-proxy" format="default"/>). This requires a security association between the origin client and the proxy, which would be convenient to provide with a dedicated OSCORE Security Context between the two, since the client is possibly using also Group OSCORE with the origin servers.</t>
      </section>
      <section anchor="ssec-uc2" numbered="true" toc="default">
        <name>CoAP Observe Notifications over Multicast</name>
        <t>The Observe extension for CoAP <xref target="RFC7641" format="default"/> allows a client to register its interest in "observing" a resource at a server. The server can then send back notification responses upon changes to the resource representation, all matching with the original observation request.</t>
        <t>In some applications, such as pub-sub <xref target="I-D.ietf-core-coap-pubsub" format="default"/>, multiple clients are interested to observe the same resource at the same server. Hence, <xref target="I-D.ietf-core-observe-multicast-notifications" format="default"/> defines a method that allows the server to send a multicast notification to all the observer clients at once, e.g., over IP multicast. To this end, the server synchronizes the clients by providing them with a common "phantom observation request", against which the following multicast notifications will match.</t>
        <t>In case the clients and the server use Group OSCORE for end-to-end security and a proxy is also involved, an additional step is required (see <xref section="10" sectionFormat="of" target="I-D.ietf-core-observe-multicast-notifications" format="default"/>). That is, clients are in turn required to provide the proxy with the obtained "phantom observation request", thus enabling the proxy to receive the multicast notifications from the server.</t>
        <t>Therefore, it is preferable to have a security associations also between each client and the proxy, to especially ensure the integrity of that information provided to the proxy (see <xref section="13.3" sectionFormat="of" target="I-D.ietf-core-observe-multicast-notifications" format="default"/>). Like for the use case in <xref target="ssec-uc1" format="default"/>, this would be conveniently achieved with a dedicated OSCORE Security Context between a client and the proxy, since the client is also using Group OSCORE with the origin server.</t>
      </section>
      <section anchor="ssec-uc3" numbered="true" toc="default">
        <name>LwM2M Client and External Application Server</name>
        <t>The Lightweight Machine-to-Machine (LwM2M) protocol <xref target="LwM2M-Core" format="default"/> enables a LwM2M Client device to securely bootstrap and then register at a LwM2M Server, with which it will perform most of its following communication exchanges. As per the transport bindings specification of LwM2M <xref target="LwM2M-Transport" format="default"/>, the LwM2M Client and LwM2M Server can use CoAP and OSCORE to secure their communications at the application layer, including during the device registration process.</t>
        <t>Furthermore, Section 5.5.1 of <xref target="LwM2M-Transport" format="default"/> specifies that: "OSCORE MAY also be used between LwM2M endpoint and non-LwM2M endpoint, e.g., between an Application Server and a LwM2M Client via a LwM2M server. Both the LwM2M endpoint and non-LwM2M endpoint MUST implement OSCORE and be provisioned with an OSCORE Security Context."</t>
        <t>In such a case, the LwM2M Server can practically act as forward-proxy between the LwM2M Client and the external Application Server. At the same time, the LwM2M Client and LwM2M Server must continue protecting communications on their leg using their Security Context. Like for the use case in <xref target="ssec-uc1" format="default"/>, this also allows the LwM2M Server to identify the LwM2M Client, before forwarding its request outside the LwM2M domain and towards the external Application Server.</t>
      </section>
      <section anchor="further-use-cases" numbered="true" toc="default">
        <name>Further Use Cases</name>
        <t>The approach proposed in this document can be useful also in the following use cases relying on a proxy.</t>
        <ul spacing="normal">
          <li>
            <t>A server aware of a suitable cross proxy can rely on it as a third-party service, in order to indicate transports for CoAP available to that server (see see <xref section="4" sectionFormat="of" target="I-D.amsuess-core-transport-indication" format="default"/>).  </t>
            <t>
From a security point of view, it would be convenient if the proxy could provide suitable credentials to the client, as a general trusted proxy for the system. However, in order for OSCORE to be an applicable security mechanism for this, it has to be terminated at the proxy. That is, it would be required for the client and the proxy to share a dedicated OSCORE Security Context and to use it for protecting their communication leg.</t>
          </li>
          <li>A proxy may be deployed to act as an entry point to a firewalled network, which only authenticated clients can join. In particular, authentication can rely on the used secure communication association between a client and the proxy. If the proxy could share a dedicated OSCORE Security Context with each client, the proxy can rely on it to identify the client, before forwarding its messages to any other member of the firewalled network.</li>
          <li>The approach proposed in this document does not pose a limit to the number of OSCORE protections applied to the same CoAP message. This enables more privacy-oriented scenarios based on proxy chains, where the origin endpoint protects a message using first the OSCORE Security Context shared with the origin server, and then the dedicated OSCORE Security Context shared with each of the different chain hops. Once received at a chain hop, a message would be stripped of the OSCORE protection associated with that hop before being forwarded to the next one.</li>
        </ul>
      </section>
    </section>
    <section anchor="sec-message-processing" numbered="true" toc="default">
      <name>Message Processing</name>
      <t>As mentioned in <xref target="intro" format="default"/>, this document introduces the following two main deviations from the original OSCORE specification <xref target="RFC8613" format="default"/>.</t>
      <ol spacing="normal" type="1"><li>
          <t>An "OSCORE endpoint", i.e., a producer/consumer of an OSCORE Option can be not only an application endpoint (i.e., an origin client or server), but also an intermediary such as a proxy.  </t>
          <t>
Hence, OSCORE can also be used between an origin client/server and a proxy, as well as between two proxies in an intermediary chain.</t>
        </li>
        <li>
          <t>A CoAP message can be secured by multiple OSCORE protections applied in sequence. Therefore, the final result is a message with nested OSCORE protections, as the output of an "OSCORE-in-OSCORE" process. Hence, following a decryption, the resulting message might legitimately include an OSCORE Option, and thus have in turn to be decrypted.  </t>
          <t>
The most common case is expected to consider a message protected with up to two OSCORE layers, i.e.: i) an inner layer, protecting the message end-to-end between the origin client and the origin server acting as application endpoints; and ii) an outer layer, protecting the message between a certain OSCORE endpoint and the other OSCORE endpoint adjacent in the intermediary chain.  </t>
          <t>
However, a message can also be protected with a higher arbitrary number of nested OSCORE layers, e.g., in scenarios relying on a longer chain of intermediaries. For instance, the origin client can sequentially apply multiple OSCORE layers to a request, each of which to be consumed and removed by one of the intermediaries in the chain, until the origin server is reached and it consumes the innermost OSCORE layer.</t>
        </li>
      </ol>
      <section anchor="general-rules" numbered="true" toc="default">
        <name>General Rules on Protecting Options</name>
        <t>When a sender endpoint protects an outgoing message by applying the i-th OSCORE layer in sequence, the following CoAP options are also protected, in addition to those already specified as class I or class E in the document defining them.</t>
        <ul spacing="normal">
          <li>An OSCORE Option which is present as the result of the j-th OSCORE layer immediately previously applied, i.e., j = (i-1). Such an OSCORE Option is protected like an option of class E.</li>
          <li>
            <t>Any option such that both the following conditions hold.  </t>
            <ol spacing="normal" type="1"><li>The option is intended to be consumed by the other OSCORE endpoint X sharing the OSCORE Security Context used for applying the i-th OSCORE layer.</li>
              <li>The option does not play a role at the other OSCORE endpoint X for correctly processing the message before having removed the i-th OSCORE layer.</li>
            </ol>
            <t>
Examples of such options are:  </t>
            <ul spacing="normal">
              <li>The proxy-related options Proxy-Uri, Proxy-Scheme and Uri-* defined in <xref target="RFC7252" format="default"/>.</li>
              <li>Listen-To-Multicast-Notifications defined in <xref target="I-D.ietf-core-observe-multicast-notifications" format="default"/>.</li>
              <li>Multicast-Timeout, Response-Forwarding and Group-ETag defined in <xref target="I-D.tiloca-core-groupcomm-proxy" format="default"/>.</li>
            </ul>
          </li>
        </ul>
        <t>One the other hand, when applying the i-th OSCORE layer, an option intended to the endpoint X is not protected if it plays a role for removing the i-th OSCORE layer at that endpoint. Examples of such options are:</t>
        <ul spacing="normal">
          <li>Clearly, and consistently with <xref target="RFC8613" format="default"/>, the OSCORE option added to the outgoing message as a result of applying the i-th OSCORE layer.</li>
          <li>The EDHOC option defined in <xref target="I-D.ietf-core-oscore-edhoc" format="default"/>, to signal to the endpoint X that part of the message payload has to be extracted and used to complete an ongoing execution of the EDHOC key establishment protocol <xref target="I-D.ietf-lake-edhoc" format="default"/>, before the i-th OSCORE layer can be removed.</li>
        </ul>
      </section>
      <section anchor="outgoing-requests" numbered="true" toc="default">
        <name>Processing an Outgoing Request</name>
        <t>The rules from <xref target="general-rules" format="default"/> apply when processing an outgoing request message, with the following addition.</t>
        <t>When an application endpoint applies multiple OSCORE layers in sequence to protect an outgoing request, and it uses an OSCORE Security Context shared with the other application endpoint, then the first OSCORE layer MUST be applied by using that Security Context.</t>
      </section>
      <section anchor="incoming-requests" numbered="true" toc="default">
        <name>Processing an Incoming Request</name>
        <t>The recipient endpoint performs the following actions on the received request REQ, depending on which of the following three conditions apply.</t>
        <ul spacing="normal">
          <li>
            <t>A - REQ includes visible proxy-related options.  </t>
            <t>
If the endpoint is not configured to be a proxy, it MUST stop processing the request and MUST respond with a 5.05 (Proxying Not Supported) error response to (the previous hop towards) the origin client, as per <xref section="5.10.2" sectionFormat="of" target="RFC7252" format="default"/>. This may result in protecting the error response over that communication leg, as per <xref target="outgoing-responses" format="default"/>.  </t>
            <t>
Otherwise, the endpoint consumes the proxy-related options and forwards REQ to (the next hop towards) the origin server. This may result in (further) protecting REQ over that communication leg, as per <xref target="outgoing-requests" format="default"/>.</t>
          </li>
          <li>
            <t>B - REQ does not include proxy-related options and does not include an OSCORE Option.  </t>
            <t>
If the endpoint does not have an application to handle REQ, it MUST stop processing the request and MAY respond with a 4.00 (Bad Request) error response to (the previous hop towards) the origin client. This may result in protecting the error response over that communication leg, as per <xref target="outgoing-responses" format="default"/>.  </t>
            <t>
Otherwise, the endpoint delivers REQ to the application.</t>
          </li>
          <li>
            <t>C - REQ does not include proxy-related options and includes an OSCORE Option.  </t>
            <t>
The endpoint decrypts REQ using the OSCORE Security Context indicated by the OSCORE Option, i.e., REQ* = dec(REQ). After that, the possible presence of an OSCORE Option in the decrypted request REQ* is not treated as an error situation.  </t>
            <t>
If the OSCORE processing results in an error, the endpoint MUST stop processing the request and performs error handling as per <xref section="8.2" sectionFormat="of" target="RFC8613" format="default"/> or Sections <xref target="I-D.ietf-core-oscore-groupcomm" section="8.2" sectionFormat="bare" format="default"/> and <xref target="I-D.ietf-core-oscore-groupcomm" section="9.4" sectionFormat="bare" format="default"/> of <xref target="I-D.ietf-core-oscore-groupcomm" format="default"/>, in case OSCORE or Group OSCORE is used, respectively. In case the endpoint sends an error response to (the previous hop towards) the origin client, this may result in protecting the error response over that communication leg, as per <xref target="outgoing-responses" format="default"/>.  </t>
            <t>
Otherwise, REQ takes REQ*, and the endpoint evaluates which of the three conditions (A, B, C) applies to REQ, thus performing again the algorithm defined in this section.</t>
          </li>
        </ul>
      </section>
      <section anchor="outgoing-responses" numbered="true" toc="default">
        <name>Processing an Outgoing Response</name>
        <t>The rules from <xref target="general-rules" format="default"/> apply when processing an outgoing response message, with the following additions.</t>
        <t>When an application endpoint applies multiple OSCORE layers in sequence to protect an outgoing response, and it uses an OSCORE Security Context shared with the other application endpoint, then the first OSCORE layer MUST be applied by using that Security Context.</t>
        <t>The sender endpoint protects the response by applying the same OSCORE layers that it removed from the corresponding incoming request, but in the reverse order than the one they were removed.</t>
        <t>In case the response is an error response, the sender endpoint protects it by applying the same OSCORE layers that it successfully removed from the corresponding incoming request, but in the reverse order than the one they were removed.</t>
      </section>
      <section anchor="incoming-responses" numbered="true" toc="default">
        <name>Processing an Incoming Response</name>
        <t>The recipient endpoint removes the same OSCORE layers that it added when protecting the corresponding outgoing request, but in the reverse order than the one they were removed.</t>
        <t>When doing so, the possible presence of an OSCORE Option in the decrypted response following the removal of an OSCORE layer is not treated as an error situation, unless it occurs after having removed as many OSCORE layers as were added in the outgoing request. In such a case, the endpoint MUST stop processing the response.</t>
      </section>
    </section>
    <section anchor="sec-example" numbered="true" toc="default">
      <name>Example</name>
      <t>TODO: add example with message exchange.</t>
    </section>
    <section anchor="sec-response-caching" numbered="true" toc="default">
      <name>Caching of OSCORE-Protected Responses</name>
      <t>Although not possible as per the original OSCORE specification <xref target="RFC8613" format="default"/>, cacheability of OSCORE-protected responses at proxies can be achieved. To this end, the approach defined in <xref target="I-D.amsuess-core-cachable-oscore" format="default"/> can be used, as based on Deterministic Requests protected with the pairwise mode of Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm" format="default"/> used end-to-end between an origin client and an origin server. The applicability of this approach is limited to requests that are safe (in the RESTful sense) to process and do not yield side effects at the origin server.</t>
      <t>In particular, both the origin client and the origin server are required to have already joined the correct OSCORE group. Then, starting from the same plain CoAP request, different clients in the OSCORE group are able to deterministically generate a same request protected with Group OSCORE, which is sent to a proxy for being forwarded to the origin server. The proxy can now effectively cache the resulting OSCORE-protected response from the server, since the same plain CoAP request will result again in the same Deterministic Request and thus will produce a cache hit.</t>
      <t>If the approach defined in <xref target="I-D.amsuess-core-cachable-oscore" format="default"/> is used, the following also applies in addition to what is defined in <xref target="sec-message-processing" format="default"/>, when processing incoming messages at a proxy that implements caching of responses.</t>
      <ul spacing="normal">
        <li>
          <t>Upon receiving a request from (the previous hop towards) the origin client, the proxy checks if specifically the message available during the execution of alternative A in <xref target="incoming-requests" format="default"/> produces a cache hit.  </t>
          <t>
That is, such a message: i) is exactly the one to be forwarded to (the next hop towards) the origin server if no cache hit is made; and ii) is the result of an OSCORE decryption at the proxy, if OSCORE is used on the communication leg between the proxy and (the previous hop towards) the origin client.</t>
        </li>
        <li>
          <t>Upon receiving a response from (the next hop towards) the origin server, the proxy first removes the same OSCORE layers that it added when protecting the corresponding outgoing request, as defined in <xref target="incoming-responses" format="default"/>.  </t>
          <t>
Then, the proxy stores specifically that resulting response message in its cache. That is, such a message is exactly the one to be forwarded to (the previous hop towards) the origin client.</t>
        </li>
      </ul>
      <t>The specific rules about serving a request with a cached response are defined in <xref section="5.6" sectionFormat="of" target="RFC7252" format="default"/>, as well as in <xref section="7" sectionFormat="of" target="I-D.tiloca-core-groupcomm-proxy" format="default"/> for group communication scenarios.</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has no actions for IANA.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author initials="Z." surname="Shelby" fullname="Z. Shelby">
              <organization/>
            </author>
            <author initials="K." surname="Hartke" fullname="K. Hartke">
              <organization/>
            </author>
            <author initials="C." surname="Bormann" fullname="C. Bormann">
              <organization/>
            </author>
            <date year="2014" month="June"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author initials="G." surname="Selander" fullname="G. Selander">
              <organization/>
            </author>
            <author initials="J." surname="Mattsson" fullname="J. Mattsson">
              <organization/>
            </author>
            <author initials="F." surname="Palombini" fullname="F. Palombini">
              <organization/>
            </author>
            <author initials="L." surname="Seitz" fullname="L. Seitz">
              <organization/>
            </author>
            <date year="2019" month="July"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE).  OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration.  Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-oscore-groupcomm.xml" target="https://www.ietf.org/archive/id/draft-ietf-core-oscore-groupcomm-14.txt">
          <front>
            <title>Group OSCORE - Secure Group Communication for CoAP</title>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuss Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Jiye Park">
              <organization>Universitaet Duisburg-Essen</organization>
            </author>
            <date month="March" day="7" year="2022"/>
            <abstract>
              <t>   This document defines Group Object Security for Constrained RESTful
   Environments (Group OSCORE), providing end-to-end security of CoAP
   messages exchanged between members of a group, e.g., sent over IP
   multicast.  In particular, the described approach defines how OSCORE
   is used in a group communication setting to provide source
   authentication for CoAP group requests, sent by a client to multiple
   servers, and for protection of the corresponding CoAP responses.
   Group OSCORE also defines a pairwise mode where each member of the
   group can efficiently derive a symmetric pairwise key with any other
   member of the group for pairwise OSCORE communication.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-14"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7641" target="https://www.rfc-editor.org/info/rfc7641" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7641.xml">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author initials="K." surname="Hartke" fullname="K. Hartke">
              <organization/>
            </author>
            <date year="2015" month="September"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks.  The state of a resource on a CoAP server can change over time.  This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time.  The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="I-D.ietf-core-groupcomm-bis" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-groupcomm-bis.xml" target="https://www.ietf.org/archive/id/draft-ietf-core-groupcomm-bis-06.txt">
          <front>
            <title>Group Communication for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Esko Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <author fullname="Chonggang Wang">
              <organization>InterDigital</organization>
            </author>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date month="March" day="7" year="2022"/>
            <abstract>
              <t>   This document specifies the use of the Constrained Application
   Protocol (CoAP) for group communication, including the use of UDP/IP
   multicast as the default underlying data transport.  Both unsecured
   and secured CoAP group communication are specified.  Security is
   achieved by use of the Group Object Security for Constrained RESTful
   Environments (Group OSCORE) protocol.  The target application area of
   this specification is any group communication use cases that involve
   resource-constrained devices or networks that support CoAP.  This
   document replaces RFC 7390, while it updates RFC 7252 and RFC 7641.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-groupcomm-bis-06"/>
        </reference>
        <reference anchor="I-D.tiloca-core-groupcomm-proxy" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.tiloca-core-groupcomm-proxy.xml" target="https://www.ietf.org/archive/id/draft-tiloca-core-groupcomm-proxy-06.txt">
          <front>
            <title>Proxy Operations for CoAP Group Communication</title>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Esko Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date month="March" day="7" year="2022"/>
            <abstract>
              <t>   This document specifies the operations performed by a proxy, when
   using the Constrained Application Protocol (CoAP) in group
   communication scenarios.  Such a proxy processes a single request
   sent by a client over unicast, and distributes the request over IP
   multicast to a group of servers.  Then, the proxy collects the
   individual responses from those servers and relays those responses
   back to the client, in a way that allows the client to distinguish
   the responses and their origin servers through embedded addressing
   information.  This document updates RFC7252 with respect to caching
   of response messages at proxies.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-groupcomm-proxy-06"/>
        </reference>
        <reference anchor="I-D.ietf-core-observe-multicast-notifications" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-observe-multicast-notifications.xml" target="https://www.ietf.org/archive/id/draft-ietf-core-observe-multicast-notifications-03.txt">
          <front>
            <title>Observe Notifications as CoAP Multicast Responses</title>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Christian Amsüss">
	 </author>
            <author fullname="Francesca Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date month="March" day="7" year="2022"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP) allows clients to
   "observe" resources at a server, and receive notifications as unicast
   responses upon changes of the resource state.  In some use cases,
   such as based on publish-subscribe, it would be convenient for the
   server to send a single notification addressed to all the clients
   observing a same target resource.  This document updates RFC7252 and
   RFC7641, and defines how a server sends observe notifications as
   response messages over multicast, synchronizing all the observers of
   a same resource on a same shared Token value.  Besides, this document
   defines how Group OSCORE can be used to protect multicast
   notifications end-to-end between the server and the observer clients.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-observe-multicast-notifications-03"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pubsub" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-coap-pubsub.xml" target="https://www.ietf.org/archive/id/draft-ietf-core-coap-pubsub-09.txt">
          <front>
            <title>Publish-Subscribe Broker for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Michael Koster">
              <organization>SmartThings</organization>
            </author>
            <author fullname="Ari Keranen">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Jaime Jimenez">
              <organization>Ericsson</organization>
            </author>
            <date month="September" day="30" year="2019"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP), and related extensions
   are intended to support machine-to-machine communication in systems
   where one or more nodes are resource constrained, in particular for
   low power wireless sensor networks.  This document defines a publish-
   subscribe Broker for CoAP that extends the capabilities of CoAP for
   supporting nodes with long breaks in connectivity and/or up-time.

   There is work in progress to resolve some of the transfer layer
   issues by using a more RESTful approach.

   Please see https://github.com/core-wg/pubsub/blob/master/proposal.txt

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pubsub-09"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-edhoc" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-oscore-edhoc.xml" target="https://www.ietf.org/archive/id/draft-ietf-core-oscore-edhoc-03.txt">
          <front>
            <title>Profiling EDHOC for CoAP and OSCORE</title>
            <author fullname="Francesca Palombini">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Rikard Hoeglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Stefan Hristozov">
              <organization>Fraunhofer AISEC</organization>
            </author>
            <author fullname="Goeran Selander">
              <organization>Ericsson</organization>
            </author>
            <date month="March" day="7" 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-03"/>
        </reference>
        <reference anchor="I-D.ietf-lake-edhoc" target="https://www.ietf.org/archive/id/draft-ietf-lake-edhoc-12.txt">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date month="October" day="20" year="2021"/>
            <abstract>
              <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-12"/>
        </reference>
        <reference anchor="I-D.amsuess-core-transport-indication" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.amsuess-core-transport-indication.xml" target="https://www.ietf.org/archive/id/draft-amsuess-core-transport-indication-03.txt">
          <front>
            <title>CoAP Protocol Indication</title>
            <author fullname="Christian Amsüss">
	 </author>
            <date month="March" day="3" year="2022"/>
            <abstract>
              <t>   The Constrained Application Protocol (CoAP, [RFC7252]) is available
   over different transports (UDP, DTLS, TCP, TLS, WebSockets), but
   lacks a way to unify these addresses.  This document provides
   terminology and provisions based on Web Linking [RFC8288] to express
   alternative transports available to a device, and to optimize
   exchanges using these.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-transport-indication-03"/>
        </reference>
        <reference anchor="I-D.amsuess-core-cachable-oscore" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.amsuess-core-cachable-oscore.xml" target="https://www.ietf.org/archive/id/draft-amsuess-core-cachable-oscore-04.txt">
          <front>
            <title>Cacheable OSCORE</title>
            <author fullname="Christian Amsüss">
	 </author>
            <author fullname="Marco Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date month="March" day="6" year="2022"/>
            <abstract>
              <t>   Group communication with the Constrained Application Protocol (CoAP)
   can be secured end-to-end using Group Object Security for Constrained
   RESTful Environments (Group OSCORE), also across untrusted
   intermediary proxies.  However, this sidesteps the proxies' abilities
   to cache responses from the origin server(s).  This specification
   restores cacheability of protected responses at proxies, by
   introducing consensus requests which any client in a group can send
   to one server or multiple servers in the same group.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-cachable-oscore-04"/>
        </reference>
        <reference anchor="LwM2M-Core" target="http://www.openmobilealliance.org/release/LightweightM2M/V1_2-20201110-A/OMA-TS-LightweightM2M_Core-V1_2-20201110-A.pdf">
          <front>
            <title>Lightweight Machine to Machine Technical Specification - Core, Approved Version 1.2, OMA-TS-LightweightM2M_Core-V1_2-20201110-A</title>
            <author>
              <organization>Open Mobile Alliance</organization>
            </author>
            <date year="2020" month="November"/>
          </front>
        </reference>
        <reference anchor="LwM2M-Transport" target="http://www.openmobilealliance.org/release/LightweightM2M/V1_2-20201110-A/OMA-TS-LightweightM2M_Transport-V1_2-20201110-A.pdf">
          <front>
            <title>Lightweight Machine to Machine Technical Specification - Transport Bindings, Approved Version 1.2, OMA-TS-LightweightM2M_Transport-V1_2-20201110-A</title>
            <author>
              <organization>Open Mobile Alliance</organization>
            </author>
            <date year="2020" month="November"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="onion-forwarding" numbered="true" toc="default">
      <name>OSCORE-protected Onion Forwarding</name>
      <t>TODO: better elaborate on the listed points below.</t>
      <ul spacing="normal">
        <li>The client can hide its position in the network from the origin server, while still possibly protecting communications end-to-end with OSCORE.</li>
        <li>Use the method defined in <xref target="sec-message-processing" format="default"/> to achieve OSCORE-protected onion forwarding, through a chain of proxies (at least three are expected). Every message generated by or intended to the origin client must traverse the whole chain of proxies until the intended other endpoint (typically, the origin server). The chain of proxies has to be known in advance by the client, i.e., the exact proxies and their order in the chain.</li>
        <li>
          <t>The typical case addressed in this document considers an origin client that, at most, shares one OSCORE Security Context with the origin server and one OSCORE Security Context with the first proxy in the chain.  </t>
          <t>
If onion forwarding is used, the origin client shares an OSCORE Security Context with the origin server, and a dedicated OSCORE Security Context with each of the proxies in the chain.</t>
        </li>
        <li>
          <t>The origin client protects a request by applying first the OSCORE layer intended to the origin server, then the OSCORE layer intended to the last proxy in the chain, then the OSCORE layer intended to the second from last proxy in the chain and so on, until it applies the OSCORE layer intended to the first proxy in the chain.  </t>
          <t>
Before protecting a request with the OSCORE layer to be consumed by a certain proxy in the chain, the origin client also adds proxy-related options intended to that proxy, as indications to forward the request to (the next hop towards) the origin server.  </t>
          <t>
Other than the actions above from the client, there should be no difference from the basic approach defined in <xref target="sec-message-processing" format="default"/>. Each proxy in the chain would process and remove one OSCORE layer from the received request and then forward it to (the next hop towards) the origin server.</t>
        </li>
        <li>
          <t>The exact way used by the client to establish OSCORE Security Contexts with the proxies and the origin server is out of scope.  </t>
          <t>
However, if EDHOC is used, it is most convenient for the client to run it with the first proxy in the chain, then with the second proxy in the chain through the first one and so on, and finally with the origin server by traversing the whole chain of proxies.  </t>
          <t>
Then, it is especially convenient to use the optimized workflow defined in <xref target="I-D.ietf-core-oscore-edhoc" format="default"/> and based on the EDHOC + OSCORE request. This would basically allow the client to complete the EDHOC execution with an endpoint and start the EDHOC execution with the next endpoint in the chain, by means of a single message sent on the wire.</t>
        </li>
        <li>
          <t>Hop-by-hop security has to also be achieved between each pair of proxies in the chain. To this end, two adjacent proxies would better use TLS over TCP than OSCORE between one another (this should be acceptable for non-constrained proxies). This takes advantage of the TCP packet aggregation policies, and thus:  </t>
          <ul spacing="normal">
            <li>As request forwarding occurs in MTU-size bundles, the length of the origin request can be hidden as well.</li>
            <li>Requests and responses traversing the proxy chain cannot be correlated, e.g., by externally monitoring the timing of message forwarding (which would jeopardize the client's wish to hide itself from anything but the first proxy in the chain).</li>
          </ul>
        </li>
        <li>
          <t>Cacheability of responses can still happen, as per <xref target="sec-response-caching" format="default"/> and using the approach defined in <xref target="I-D.amsuess-core-cachable-oscore" format="default"/>.  </t>
          <t>
The last proxy in the chain would be the only proxy actually seeing the Deterministic Request originated by the client and then caching the corresponding responses from the origin server. It is good that other proxies are not able to do the same, thus preventing what might lead to request-response correlation, again opening for localization of the origin client.</t>
        </li>
        <li>
          <t>Possible optimizations along the proxy chains  </t>
          <ul spacing="normal">
            <li>In particular settings involving additional configuration on the client, some proxy in the chain might be a reverse-proxy. Then, such a proxy can be configured to map on one hand the OSCORE Security Context shared with the origin client (and used to remove a corresponding OSCORE layer from a received request to forward) and, on the other hand, the addressing information of the next hop in the chain where to forward the received request to. This would spare the origin client to add a set of proxy-related options for every single proxy in the chain.</li>
            <li>
              <t>It is mentioned above to additionally use TLS over TCP hop-by-hop between every two adjacent proxies in the chain. That said:      </t>
              <ul spacing="normal">
                <li>The OSCORE protection of the request has certainly to rely on authenticated encryption algorithms (as usual), when applying the OSCORE layer intended to the origin server (the first one applied by the origin client) and the OSCORE layer intended to the first proxy in the chain (the last one applied by the origin client).</li>
                <li>For any other OSCORE layer applied by the origin client (i.e., intended for any proxy in the chain but the first one), the OSCORE protection can better rely on an encryption-only algorithm not providing an authentication tag (as admitted in the group mode of Group OSCORE <xref target="I-D.ietf-core-oscore-groupcomm" format="default"/> and assuming the registration of such algorithms in COSE).</li>
                <li>This would be secure to do, since every pair of adjacent proxies in the chain relies on its TLS connection for the respective hop-by-hop communication anyway. The benefit is that it avoids transmitting several unneeded authentication tags from OSCORE.</li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments" toc="default">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank Christian Amsuess, Peter Blomqvist and Goeran Selander for their comments and feedback.</t>
      <t>The work on this document has been partly supported by VINNOVA and the Celtic-Next project CRITISEC; and by the H2020 project SIFIS-Home (Grant agreement 952652).</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAEFFJmIAA81d2XIbyZV951dkUA9D9qAgkS31QocjhqLYLcZIokxS7fGT
I4FKANkqVMGVBUKwgr/lH/CPzd1yqQVc2jO2+6EFAVWZN2/e5dwlU1mW7TW2
KcyJurw+u7w6z6Z6pSeFUR/r6os1bk9PJrW53flzXk1LvYTX81rPmqyxRTXV
2bSqTVY5+kPeyFb8Rlboxrhmb++Zco0u8z/roirh/aZem709u6rpo2uOX7z4
8cXxnq6NPlEXZWPq0jR7m/mJOquuztUfq/qzLefq57par/Y+b+Iz2RukZG+q
mxOYId9br3Kc8UT98N3Rt3t70yqH907UupllP+yt7ImC/56pqS7V2hml61pv
1YGdKV0UamvcoapqtdBuoRamBgqVaqrpCf4CH11VN7WZuRMaIzczvS4aB0/4
37dL/hn/uqfXzaKqT/YU/ZfJn0rZEp54P1Y3xLzwNfP1va6nVfenqoYVXF1c
n6vT1+FLB6QYWPSF07Nfqzp3cw0MVsfH4YmpbbYn6r8tMD5+V+Uwy/V5dvTd
y5cvkq/XZVPD09cbk5syfG+W2hYnaolUjXm3/6u2Y2eGV3U1Vm///rd5sS7z
zrqu7Gdd5/1f/+VLq4mw8aIiumRxe2VVL3Vjbw1u39VPZ8dHRz/Kx++PXx3L
xx+Ovn/pP4K04ceL7M3YGhC2VCfmKLXTark8AZEvZ52xv//u5VH/1fBONrHO
/5zqW3wAVW07MPnEmfrWZEsQUjvVrsnKqrEz+NjYqnT9F6aVXmWr9cStJzuX
YvIF6EP6a6E/d77WS7c2zvF7Ta1LtwLFyWyZy9yDD071dEGWg2fCZ95t3h+/
z87kb0q1NYpE53JlSvW+mlgwUqdFYXU5ZdkUM/fOzhfNxuD/QbemC1sa1Ff/
8cZMFyVQVajrlZkG5qhM4awjdboC5t6aXP1iaoc/HI2PR+ry/Wl2c50lYwOd
f8Y3sl+O/nycHb84fnF0dPQiOyVS0CCdKPwyOzpi4nQ9RwFfNM3q5PnzzWYz
rmAhS1qHlmWMYYHPawNfOPO8PdfzzjTPH0/ReJXPAmtv/Ob88/kbplavUTDK
uXsat8P7/14s30kW8X0vyzKlJ2Df9BR84uXkVzNt1LWZrmswaAosA8hdiT8D
83J1dX59M1sX6ry8tXVVLk0J3uaAXfMh+bCJQTeWI8uBdQ2OdladflRLUCs9
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
D+voxEpTa44f8ffNAgviPRpiR1IYkDMpsXOz2a7YDIz6m3HIAKg3bKwNfy7x
fiRy9bfYptW9JYCTxOzssDnejyDA1NYS/aaNVLR3NLHQxhkNsJag1MOnTERb
XB/ccyIatgIbrEacV3JknO5tXB8AzXRx1CNeYxcg52/by+IEdVeK2miqTb7Q
e0+m7L6G7af16cc7Vb90e9uCgveuZPLt5t4Kp0mjXtO57yMblO3EmZYPv1To
QSY/9nVQfyw8kQ3aMRRxkC5u8Z19NqZCH5zgfil4zd0NiVXr+LHe+P1+rtge
uoMNvetQEZznudtRTmqvQPIE3D0dTy6R3ovoqrQ48pQaaczlx6yX92XgbG6T
UCkB2xhQL/wBAPB+PqycJo9PtAOcMBzW7LL4YIrlOEhXADb+aFUI0xnYpXaA
dycQ0OswCOcmPNPsU3nFisfmc6PlovSWmeXT5NJfs0vRXZJaaRvhfrdqxe3k
EO2tTKdXGFA6N/UEoyX4n1u5wxm1zjktzI+sSz6h/ICdFBUOz4mqDuyPd75x
NL5sJqgtVfIt3+azw6wjI9mReuw97EpTNM0rTs7vt69sWYtPRsVa0nVSiHdm
gJMe37zFR3B1EgUx1//Tb2/IiN4kh/FR+rkRGiPyDv9Dw1YcLQag/nhvq8Wc
cjy7Hw8iHNtYWtuYXtaNFx6V8yLGFJSSkaVtbM33rr2tVtlkm6FKhIOEgjV8
V3q8Cjy9ZAGThSlAaVncTl4zvaHXP+8PFhHixf27eXfN1cqbs49spITv4ZKm
eK0RKrN1iXHSU7xekaJ9VAM8dj1NbneXSf09QlzFJPzUIGfEDePEK0DyBjM/
89rM5fh6Vdip9VdgY57Ht62expO/CbaQTDww5P3Np8yBOKrJGrs1HPuIwpTz
Jvh+0Q0/jqRxAcrnmDjl8Mi3mYbkLRtGn2DuaFNycg2HwyTnROJbcj/Jdf3+
GDK28ANGgkDVD4J6xOkcLz7JCg/S+5N+NdUKv/9remXEf6Dtc9Tl76MSU8zY
aOty21CuCAsz95mlQ27R6GTa47rpMAIFLQu8T7RMCtqDFYA76ab0a/ytubjY
6LELx4RTcxyWczT1hY7fr4nbzhhPxXBKUUoRTc/xBO/mM2795MXALWWdHOsF
mdN55a8LYqUKTqrm82chNxyPVvoSPRbSSkJRlGT0J5Z0mpYPGxBkjw8sUVIV
/+keyQYrjPAL+9dwzcVw6uijL9iIkQ/Xv1R9uXeiMK2Uffz3JfhunrQgjxGP
dAIKGWULDNGNUQMbzQuf8HWjyZV5IWcfLnn8Em5sa7ccLvVKVWzcFh4dPPHA
qEjGQdorLLBJd0SjD6F0H0BFvEn/7MHIMyNtOyf94fCQc8XxxhzZwQC12prB
B2m7iLZHQcvLupVun76NLhZLh5ouyxNf1EfZdGsThf7iEHeFCJnoRTxRytCY
p7HhlsKet1pEJxp8JE046Pk6npJuONA2Z6cSjkP0z9cKXz2P0EtLOFLI1Ut8
vLt9rh3Qekj++h4azJQglgRbdDh0guDxsSOj6gQJxqaP3nYdqo58Py2M46nI
4j440zjy8id/KWyTHHqRkwr3DOHP13ZuKt8OEdb2Y0DcYeuYQrKFbAEI8oTd
KpMtyvjIb+h1kvMYckuaLruXEAB6oa2kf12giVV8zon+1jIu5TEcRL2xmJ/c
5uMPcSTShDW0y+vzlO03rQur/AVD6Et8EY41xMPIe7UEmWX5MB6mN1H3wIiW
wlQf98Q+vFQhO3cxlFsI6DjHxv+KTMOVEykP3FY2d3wtCXKUOj+QUPAPa5jQ
oCT090AcbciDPlOnU0zTFSafc3kM0766/d3d3tcTOc9p8t/vl9W+v26X/hE/
x2wiMUE0/FmdLWrECHhXEcOTkfqI2EG9LqrlX26thL4///1vQD44j0KX/vqQ
JtytEe65m8FiMG0tGX/KD1c7r/VFL4qwxTexo878cvHhw+Uvp0Grzwwegso+
oN2HXaR/b+ns6uLm4vr8jOtUomhv8R/VC49cX/x0cZ29RQd78DNQjuC7Nnw5
0o+vjr97dQxy9b/NCMMq+HYAAA==

-->

</rfc>
