<?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  (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-amsuess-t2trg-onion-coap-01" category="exp" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="Onion CoAP">Using onion routing with CoAP</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-t2trg-onion-coap-01"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440</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="2023" month="July" day="04"/>
    <workgroup>t2trg</workgroup>
    <keyword>tor</keyword>
    <keyword>onion</keyword>
    <keyword>coap</keyword>
    <keyword>oscore</keyword>
    <keyword>edhoc</keyword>
    <keyword>hidden</keyword>
    <abstract>
      <t>The CoAP protocol was designed with direct connections and proxies in mind.
This document defines mechanisms by which chains of proxies can be set up.
In combination, they enable the operation of hidden services
and client similar to how Tor (The Onion Router) enables it for TCP based protocols.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Thing-to-Thing Research Group mailing list (t2trg@irtf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/search/?email_list=t2trg"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://gitlab.com/chrysn/onion-coap"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>[ See also abstract. ]</t>
      <section anchor="components-overview">
        <name>Components overview</name>
        <t>This document introduces separate mechanisms that in combination enable setups similar to how Tor is used for anonymous web access.
Some of the mechanisms need no new protocol components, but merely describe which existing steps are used to obtain the desired results.</t>
        <ul spacing="normal">
          <li>A client can use EDHOC to establish a unilaterally authenticated OSCORE context with proxies (see <xref target="client-chain"/>).</li>
          <li>A server can use EDHOC to establish a unilaterally authenticated OSCORE context to establish a reverse proxy address (see <xref target="server-chain"/>).</li>
          <li>A discovery mechanism for proxies (see <xref target="proxy-discovery"/>).</li>
          <li>A naming and discovery mechanism for hidden services (see <xref target="naming"/>).</li>
        </ul>
        <t>Note that these mechanisms should be largely independent:
A server that does not intend to hide its position can still advertise a cryptographic name at its real network coordinates,
and thus be available both to clients that do hide their location (even if their proxies do not work as “exit nodes” in Tor terminology)
and to clients on a local network.</t>
        <t><xref target="fig-topo"/> illustrates an example topology,
and <xref target="fig-layers"/> illustrates a cross-section of the OSCORE layers along one path.</t>
        <figure anchor="fig-topo">
          <name>Example topology of an onion style CoAP network showing two routes in separate graphs. Note that the hop P4--&gt;P2 is present in both chains, and can be pooled into one TLS connection</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="560" viewBox="0 0 560 400" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 176,48 L 176,128" fill="none" stroke="black"/>
                <path d="M 272,256 L 272,288" fill="none" stroke="black"/>
                <path d="M 352,320 L 352,352" fill="none" stroke="black"/>
                <path d="M 360,48 L 360,144" fill="none" stroke="black"/>
                <path d="M 416,256 L 416,288" fill="none" stroke="black"/>
                <path d="M 456,80 L 480,80" fill="none" stroke="black"/>
                <path d="M 272,256 L 328,256" fill="none" stroke="black"/>
                <path d="M 376,256 L 416,256" fill="none" stroke="black"/>
                <path d="M 456,304 L 480,304" fill="none" stroke="black"/>
                <path d="M 280,320 L 352,320" fill="none" stroke="black"/>
                <path d="M 192,368 L 344,368" fill="none" stroke="black"/>
                <path d="M 136,320 L 152,352" fill="none" stroke="black"/>
                <path d="M 136,96 L 152,128" fill="none" stroke="black"/>
                <path d="M 192,48 L 212,88" fill="none" stroke="black"/>
                <path d="M 144,288 L 152,272" fill="none" stroke="black"/>
                <path d="M 200,240 L 208,224" fill="none" stroke="black"/>
                <path d="M 328,80 L 344,48" fill="none" stroke="black"/>
                <path d="M 392,144 L 416,96" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="488,304 476,298.4 476,309.6" fill="black" transform="rotate(0,480,304)"/>
                <polygon class="arrowhead" points="488,80 476,74.4 476,85.6" fill="black" transform="rotate(0,480,80)"/>
                <polygon class="arrowhead" points="424,288 412,282.4 412,293.6" fill="black" transform="rotate(90,416,288)"/>
                <polygon class="arrowhead" points="424,96 412,90.4 412,101.6" fill="black" transform="rotate(296.565051177078,416,96)"/>
                <polygon class="arrowhead" points="368,144 356,138.4 356,149.6" fill="black" transform="rotate(90,360,144)"/>
                <polygon class="arrowhead" points="352,368 340,362.4 340,373.6" fill="black" transform="rotate(0,344,368)"/>
                <polygon class="arrowhead" points="352,48 340,42.4 340,53.6" fill="black" transform="rotate(296.565051177078,344,48)"/>
                <polygon class="arrowhead" points="336,256 324,250.4 324,261.6" fill="black" transform="rotate(0,328,256)"/>
                <polygon class="arrowhead" points="288,320 276,314.4 276,325.6" fill="black" transform="rotate(180,280,320)"/>
                <polygon class="arrowhead" points="220,88 208,82.4 208,93.6" fill="black" transform="rotate(63.43494882292201,212,88)"/>
                <polygon class="arrowhead" points="208,240 196,234.4 196,245.6" fill="black" transform="rotate(116.56505117707799,200,240)"/>
                <polygon class="arrowhead" points="184,48 172,42.4 172,53.6" fill="black" transform="rotate(270,176,48)"/>
                <polygon class="arrowhead" points="160,352 148,346.4 148,357.6" fill="black" transform="rotate(63.43494882292201,152,352)"/>
                <polygon class="arrowhead" points="160,128 148,122.4 148,133.6" fill="black" transform="rotate(63.43494882292201,152,128)"/>
                <polygon class="arrowhead" points="152,288 140,282.4 140,293.6" fill="black" transform="rotate(116.56505117707799,144,288)"/>
                <g class="text">
                  <text x="180" y="36">P1</text>
                  <text x="356" y="36">P2</text>
                  <text x="28" y="84">Client</text>
                  <text x="64" y="84">1</text>
                  <text x="84" y="84">-&gt;</text>
                  <text x="108" y="84">P3</text>
                  <text x="268" y="84">P4</text>
                  <text x="428" y="84">P5</text>
                  <text x="516" y="84">Server</text>
                  <text x="552" y="84">1</text>
                  <text x="252" y="100">(published</text>
                  <text x="308" y="100">as</text>
                  <text x="244" y="116">server</text>
                  <text x="300" y="116">addr.)</text>
                  <text x="172" y="148">P6</text>
                  <text x="364" y="164">P7</text>
                  <text x="252" y="228">Client</text>
                  <text x="288" y="228">2</text>
                  <text x="180" y="260">P1</text>
                  <text x="356" y="260">P2</text>
                  <text x="132" y="308">P3</text>
                  <text x="268" y="308">P4</text>
                  <text x="428" y="308">P5</text>
                  <text x="516" y="308">Server</text>
                  <text x="172" y="372">P6</text>
                  <text x="364" y="372">P7</text>
                  <text x="380" y="388">(published</text>
                  <text x="436" y="388">as</text>
                  <text x="476" y="388">server</text>
                  <text x="532" y="388">addr.)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                     P1                    P2
                     ^ \                  ^ |
                     |  \                /  |
Client 1 -> P3       |   v      P4      /   |       P5  ---> Server 1
                \    |    (published as     |      ^
                 \   |     server addr.)    |     /
                  v  |                      |    /
                    P6                      v   /
                                            P7



                         /  Client 2
                        v
                     P1          +------>  P2 -----+
                  /              |                 |
                 v               |                 v
               P3               P4                  P5  ---> Server
                \                 <--------+
                 \                         |
                  v                        |
                    P6 -------------------> P7
                                          (published as server addr.)
]]></artwork>
          </artset>
        </figure>
        <figure anchor="fig-layers">
          <name>Cross section of the Client 1 --&gt; Server 1 connection of [ TBD reference from label ]. Numbers indicate the sequence in which EDHOC is performed, and are placed on the side of the initiator. Not depicted at step 8: Server 1 and/or P4 (TBD) publishes P4 as the public address of the hidden service; 9: client obtains the list of available proxies. 15: Client 1 looks up the introduction point of Server 1 through the proxy chain up to P1 to discover P4.</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="792" viewBox="0 0 792 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 152,48 L 168,48" fill="none" stroke="black"/>
                <path d="M 200,48 L 216,48" fill="none" stroke="black"/>
                <path d="M 248,48 L 264,48" fill="none" stroke="black"/>
                <path d="M 288,48 L 304,48" fill="none" stroke="black"/>
                <path d="M 336,48 L 352,48" fill="none" stroke="black"/>
                <path d="M 384,48 L 400,48" fill="none" stroke="black"/>
                <path d="M 56,64 L 480,64" fill="none" stroke="black"/>
                <path d="M 56,80 L 264,80" fill="none" stroke="black"/>
                <path d="M 288,80 L 472,80" fill="none" stroke="black"/>
                <path d="M 56,96 L 216,96" fill="none" stroke="black"/>
                <path d="M 336,96 L 472,96" fill="none" stroke="black"/>
                <path d="M 56,112 L 168,112" fill="none" stroke="black"/>
                <path d="M 384,112 L 472,112" fill="none" stroke="black"/>
                <path d="M 56,128 L 120,128" fill="none" stroke="black"/>
                <path d="M 432,128 L 472,128" fill="none" stroke="black"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="64" y="36">1</text>
                  <text x="132" y="36">P3</text>
                  <text x="180" y="36">P6</text>
                  <text x="228" y="36">P1</text>
                  <text x="276" y="36">P4</text>
                  <text x="324" y="36">P2</text>
                  <text x="372" y="36">P7</text>
                  <text x="420" y="36">P5</text>
                  <text x="508" y="36">Server</text>
                  <text x="544" y="36">1</text>
                  <text x="140" y="52">11</text>
                  <text x="188" y="52">13</text>
                  <text x="236" y="52">16</text>
                  <text x="312" y="52">6</text>
                  <text x="360" y="52">4</text>
                  <text x="408" y="52">2</text>
                  <text x="664" y="52">TLS</text>
                  <text x="728" y="52">connections</text>
                  <text x="44" y="68">18</text>
                  <text x="692" y="68">End-to-end</text>
                  <text x="764" y="68">OSCORE</text>
                  <text x="44" y="84">17</text>
                  <text x="480" y="84">7</text>
                  <text x="44" y="100">14</text>
                  <text x="480" y="100">5</text>
                  <text x="44" y="116">12</text>
                  <text x="480" y="116">3</text>
                  <text x="44" y="132">10</text>
                  <text x="480" y="132">1</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Client 1       P3    P6    P1    P4    P2    P7    P5       Server 1
                11--- 13--- 16---  ---6  ---4  ---2                              TLS connections
    18------------------------------------------------------                     End-to-end OSCORE
    17---------------------------  ------------------------7
    14---------------------              ------------------5
    12---------------                          ------------3
    10---------                                      ------1
]]></artwork>
          </artset>
        </figure>
      </section>
    </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="mechanisms">
      <name>Mechanisms</name>
      <section anchor="client-chain">
        <name>Client proxy chain</name>
        <t>A client can pick one or more proxies to hide its position in the network.</t>
        <t>Without OSCORE proxies, only one proxy hop can be chosen, because the CoAP requests contains at most two addresses:
The address in the IP header, and the address in the Uri-Host option.
With the mechanisms introduced in <xref target="I-D.tiloca-core-oscore-capable-proxies"/>,
CoAP request can contain a Uri-Host option in each layer of OSCORE,
effectively building a source routing chain.</t>
        <t>To build the chain,
the client first chooses its first proxy hop,
and runs EDHOC to establish an OSCORE context.
In this process, the proxy authenticates with its long-term credentials,
whereas the client uses an ephemeral key (a plain CWT Cliams Set, <xref target="RFC8392"/>).
The process can take as little as one round-trip per proxy;
when message 3 of EDHOC is sent along with the OSCORE message (see <xref target="I-D.ietf-core-oscore-edhoc"/>) that contains the next hop’s message 1,</t>
        <t>Once one proxy context is established,
EDHOC can be run through that proxy with the next proxy,
until a chain of sufficient length has been established.
Care has to be taken to never use one of the later proxies
with any chain other than the chain through which the connection was established,
for otherwise the client can be deanonymized mor easily.</t>
        <t>When forwarding messages, every forward proxy strips off a layer of OSCORE from the request,
and adds one to the response.</t>
        <t>Possible optimizations:</t>
        <ul spacing="normal">
          <li>Can EDHOC be run without transmitting two public keys (<tt>G_X</tt> and <tt>G_I</tt>) for the client?
(I.e., Can <tt>G_X</tt> be re-used as <tt>G_I</tt> without harm to EDHOC (likely not), and how would that be communicated?)</li>
          <li>
            <t>For hops that are only ever used with a single next-hop,
as is typical with all but the first proxy (see guidance below):
Can default values for Proxy-Scheme and Uri-Host be communicated during EDHOC,
values that would later be elided?
Otherwise, every request would contain explicit addresses of the full chain.
If taken to the extreme, this might be setting up a SCHC context that also compresses parts of the OSCORE option,
where the client tells each proxy what the KID used with the next proxy is,
and uses the same sender sequence number for the hops.
(This has own security considerations; might be necessary to apply offsets, at which point it gets overly complex).  </t>
            <t>
Effectively, setting a default value for Proxy-Scheme and Uri-Host
makes that (originally forward) proxy a reverse proxy.</t>
          </li>
        </ul>
        <section anchor="guidance-for-setting-up-proxy-chains">
          <name>Guidance for setting up proxy chains</name>
          <t>TBD: This section should contain guidance distilled from Tor operations.
In particular, it might recommend that a client pick one proxy hop as a long-term first hop,
while building the remaining chain individually for each new origin server.</t>
          <t>Following common tor practice, it is expected that typical chain lengths are around 3 hops.
Note that the amount of processing on the peer side is independent of the length of the chain chosen by a host.
If a client deems a one-hop setup sufficient and only has resources for maintaining one extra OSCORE context,
it can still use a server that is hidden behind a 3 long proxy chain.</t>
        </section>
      </section>
      <section anchor="server-chain">
        <name>Server proxy chain</name>
        <t>A server can pick one or more proxies to hide its position in the network.</t>
        <t>Unlike forward proxies,
which are configured per request,
this requires a dedicated mechanism.</t>
        <t>TBD:
This document does not yet specify such a mechanism,
but may draw upon the reverse proxy request of <xref section="2" sectionFormat="of" target="I-D.amsuess-core-resource-directory-extensions"/>.</t>
        <t>When forwarding messages, every reverse proxy adds a layer of OSCORE to the request,
and removes one from the response.</t>
      </section>
      <section anchor="proxy-discovery">
        <name>Proxy discovery</name>
        <t>A mechanism for discovering forward proxies is already described in <xref target="I-D.ietf-core-transport-indication"/>;
discovery of reverse proxies suitable for servers will depend on the precise mechanism used.</t>
        <t>Both proxies’ discovery process may need to be augmented with metadata
that indicates whether the proxy is willing to proxy to arbitrary locations on the Internet,
or merely to hidden peers.
That distinction in forwrd proxies would be similar to how Tor distinguishes relay and exit nodes.
In reverse proxies, there is an analogous distinction that is not so much based on policy
but rather on the structure of the authority component used by that reverse proxy:
If the name is resolvable on regular CoAP stacks (i.e., DNS can resolve it to a global IP address),
then regular CoAP clients can use the introduction address as an entry point.
It is still up to the hidden server’s policy to decide
whether to allow access that is merely protected by the chain of hidden proxies,
but not end-to-end.
Note that the server will be unable to tell whether the client used just one layer of EDHOC and OSCORE
to reach the introduction point,
or has built its own client chain --
the former is merely a client proxy chain of zero length.</t>
        <t>Along with discovering the addresses of proxies,
a well-maintained Tor-like network
would provide authentication information for them.
This would allow participants to trust that the proxy chain they are building
is not all controlled by a single entity,
but have been around independently for some time.</t>
        <t>TBD: Such a service is not specified yet.</t>
      </section>
      <section anchor="naming">
        <name>Naming and name resolution</name>
        <t>The mechanisms discussed in <xref target="I-D.amsuess-t2trg-rdlink"/> can be used by hidden services to come up with names for their services.
(That document will need to be updated to use mechanisms from <xref target="I-D.ietf-core-transport-indication"/>).
Unlike described there, they would not enter their network address into the distributed directory,
but the address of their most remote reverse proxy (the introduction point).</t>
        <t>Along with the service’s public key (that is announced as part of the name),
the published record may also include the public key of the introduction point,
as that will allow the client to establish an extra layer with the introduction point.
TBD: The benefits of this layer are yet unclear, as is whether this needs to be a layer of OSCORE,
or whether the mechanisms of <xref target="I-D.selander-lake-authz"/> could be used to roll that into the end-to-end establishment.
(Likely, an extra layer is needed, for even if that mechanism is used for some kind of encrypted origin indication,
the later OSOCRE phase will need some origin indication at the introduction point
to distinguish multiple hidden services behind the introduction point in such a way that an observer of the introduction’s ingress point can not tell which services are being used).</t>
      </section>
      <section anchor="establishing-tls-connections-between-proxies">
        <name>Establishing TLS connections between proxies</name>
        <t>Proxy-to-proxy requests,
which are the majority of transmitted request,
are transmitted between unconstrained devices across the Internet.
As such, protecting those connections with an extra layer of TLS (as specified in <xref target="RFC8323"/>) is desirable, because</t>
        <ul spacing="normal">
          <li>it profits from TCP's flow control,</li>
          <li>it hides more request metadata (even though none of the metadata visible at this point should be linkable to the server or the client, with the exception of message length), and</li>
          <li>it allows requests to be mixed across MTU and thus to hide their length and number (provided there is sufficient traffic on the link to ensure that multiple messages are processed within one Nagle interval).</li>
        </ul>
        <t>[ TBD:
Explore whether coercing traffic through specific pairs of nodes instead of random node pairings would make sense.
If it is dangerous, maybe servers might pair up on their own to ensure that it is hard to monitor their ingress and egress traffic for correlation.
]</t>
        <t>A challenge in establishing TLS connections on that link is that
proxies are advertised with EDHOC credentials in the network’s discovery area.
The tools of <xref target="I-D.tschofenig-tls-cwt"/> may help bridging that gap.</t>
      </section>
      <section anchor="other-tricks">
        <name>Other tricks</name>
        <t>TBD. Current ideas:</t>
        <ul spacing="normal">
          <li>For increased privacy, it may make sense to spool requests and responses in proxies for "as long as practical".
Those setting up the proxy may indicate that in the security context.
While it increases the proxy's memory requirements a lot to keep several seconds of traffic around,
it is not expected that these proxies will be operating at network capacity limits.</li>
          <li>Add chatter between proxies.
With the stark contrast between constrained device bandwidths and Internet bandwidths,
this can be tolerable.</li>
          <li>Access point assistance:
While all of this is aimed at constrained devices as defined in <xref target="RFC7228"/>,
devices of Class 1 may not be capable of using the full proxy discovery service
or setting up security contexts with all the hops in the chain.
Instead, they may only provide end-to-end encryption,
and use a service provided by a local node (e.g. the border router in a 6LoWPAN network <xref target="RFC8138"/>) to set up the hops.
Such a setup can also be used to defer policy decisions to the network,
which may decide to advertise its own address as an introduction point,
or use a suitable length of reverse proxies.</li>
          <li>The introduction point would be the only suitable location to place a caching proxy when <xref target="I-D.amsuess-core-cachable-oscore"/> is used.
As the server is be aware that cacheable OSCORE is used,
it can select a reverse proxy that was advertised with caching capabilities
(with that metadatum still TBD).</li>
        </ul>
      </section>
      <section anchor="overhead-and-optimizations">
        <name>Overhead and optimizations</name>
        <t>TBD. Main points:</t>
        <ul spacing="normal">
          <li>Establishing a default Uri-Host likely gives most savings.</li>
          <li>For intermediate hops, using a shorter AEAD tag might be an option.</li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <ul spacing="normal">
        <li>
          <t>When using proxy chains, only contact a proxy through the one chain it is set up with,
and only accept messages into a context if they were transported in the hop they are expected to be received from.  </t>
          <t>
It is of utmost importance to not have observably different behavior between messages with an unknown context
and messages whose context is known but not expected at this point.
For example,
if an attacker controls a server’s introduction point and intends to deanonymize clients,
it may attempt to send responses directly to the suspected address of the client.  </t>
          <t>
In implementations, this can be mitigated
by first looking up the list of contexts depending on the outer layer,
and then looking up inside that list whether the security context is known and the message expected.</t>
        </li>
        <li>What are the effects of sequence numbers on correlation? Is it good or bad to use the same sequence number for all hops in a chain?</li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <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">
          <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-lake-edhoc">
          <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">
          <front>
            <title>Using EDHOC with 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="13" month="March" year="2023"/>
            <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 details 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 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-07"/>
        </reference>
        <reference anchor="I-D.amsuess-core-cachable-oscore">
          <front>
            <title>Cacheable OSCORE</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="11" month="January" year="2023"/>
            <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-06"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-groupcomm">
          <front>
            <title>Group Object Security for Constrained RESTful Environments (Group OSCORE)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Jiye Park" initials="J." surname="Park">
              <organization>Universitaet Duisburg-Essen</organization>
            </author>
            <date day="22" month="June" year="2023"/>
            <abstract>
              <t>   This document defines the security protocol 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 protocol
   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.
   Group OSCORE can be used between endpoints communicating with CoAP or
   CoAP-mappable HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-groupcomm-18"/>
        </reference>
        <reference anchor="I-D.tiloca-core-oscore-capable-proxies">
          <front>
            <title>OSCORE-capable Proxies</title>
            <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>
            <date day="5" month="April" year="2023"/>
            <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-capable-proxies-06"/>
        </reference>
        <reference anchor="I-D.tiloca-core-oscore-capable-proxies-06">
          <front>
            <title>OSCORE-capable Proxies</title>
            <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>
            <date day="5" month="April" year="2023"/>
            <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tiloca-core-oscore-capable-proxies-06"/>
        </reference>
        <reference anchor="RFC8392">
          <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="I-D.amsuess-core-resource-directory-extensions">
          <front>
            <title>CoRE Resource Directory Extensions</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   A collection of extensions to the Resource Directory [rfc9176] that
   can stand on their own, and have no clear future in specification
   yet.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Constrained RESTful
   Environments Working Group mailing list (core@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/core/.

   Source for this draft and an issue tracker can be found at
   https://gitlab.com/chrysn/resource-directory-extensions.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-core-resource-directory-extensions-08"/>
        </reference>
        <reference anchor="RFC8323">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="S. Lemay" initials="S." surname="Lemay"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan"/>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor"/>
            <date month="February" year="2018"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP. The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports. It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8323"/>
          <seriesInfo name="DOI" value="10.17487/RFC8323"/>
        </reference>
        <reference anchor="I-D.selander-lake-authz">
          <front>
            <title>Lightweight Authorization for 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="Mališa Vučinić" initials="M." surname="Vučinić">
              <organization>INRIA</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Aurelio Schellenbaum" initials="A." surname="Schellenbaum">
              <organization>Institute of Embedded Systems, ZHAW</organization>
            </author>
            <date day="21" month="April" year="2023"/>
            <abstract>
              <t>   This document describes a procedure for augmenting the lightweight
   authenticated Diffie-Hellman key exchange protocol EDHOC with third
   party assisted authorization, targeting constrained IoT deployments
   (RFC 7228).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-selander-lake-authz-02"/>
        </reference>
        <reference anchor="I-D.tschofenig-tls-cwt">
          <front>
            <title>Using CBOR Web Tokens (CWTs) in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Mathias Brossard" initials="M." surname="Brossard">
              <organization>Arm Limited</organization>
            </author>
            <date day="13" month="July" year="2020"/>
            <abstract>
              <t>   The TLS protocol supports different credentials, including pre-shared
   keys, raw public keys, and X.509 certificates.  For use with public
   key cryptography developers have to decide between raw public keys,
   which require out-of-band agreement and full-fletched X.509
   certificates.  For devices where the reduction of code size is
   important it is desirable to minimize the use of X.509-related
   libraries.  With the CBOR Web Token (CWT) a structure has been
   defined that allows CBOR-encoded claims to be protected with CBOR
   Object Signing and Encryption (COSE).

   This document registers a new value to the "TLS Certificate Types"
   sub-registry to allow TLS and DTLS to use CWTs.  Conceptually, CWTs
   can be seen as a certificate format (when with public key
   cryptography) or a Kerberos ticket (when used with symmetric key
   cryptography).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tschofenig-tls-cwt-02"/>
        </reference>
        <reference anchor="RFC7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Ersue" initials="M." surname="Ersue"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks. This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC8138">
          <front>
            <title>IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) Routing Header</title>
            <author fullname="P. Thubert" initials="P." role="editor" surname="Thubert"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="R. Cragie" initials="R." surname="Cragie"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>This specification introduces a new IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) dispatch type for use in 6LoWPAN route-over topologies, which initially covers the needs of Routing Protocol for Low-Power and Lossy Networks (RPL) data packet compression (RFC 6550). Using this dispatch type, this specification defines a method to compress the RPL Option (RFC 6553) information and Routing Header type 3 (RFC 6554), an efficient IP-in-IP technique, and is extensible for more applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8138"/>
          <seriesInfo name="DOI" value="10.17487/RFC8138"/>
        </reference>
        <reference anchor="I-D.amsuess-t2trg-rdlink">
          <front>
            <title>rdlink: Robust distributed links to constrained devices</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="23" month="September" year="2019"/>
            <abstract>
              <t>   Thing to thing communication in Constrained RESTful Environments
   (CoRE) relies on URIs to link to servers.  Next to hierarchical
   configuration and short-lived IP addresses, this document introduces
   a naming scheme for devices based on cryptographic identifiers.  A
   special purpose domain is reserved for expressing those identifiers,
   and mechanisms for constrained devices to announce their names and to
   look them up are described.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-amsuess-t2trg-rdlink-01"/>
        </reference>
        <reference anchor="I-D.ietf-core-transport-indication">
          <front>
            <title>CoAP Protocol Indication</title>
            <author fullname="Christian Amsüss" initials="C." surname="Amsüss">
         </author>
            <date day="13" month="March" year="2023"/>
            <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-ietf-core-transport-indication-02"/>
        </reference>
      </references>
    </references>
    <section anchor="change-log">
      <name>Change log</name>
      <t>Since -00:</t>
      <ul spacing="normal">
        <li>Shaped into separate sections on the bits and pieces involved.</li>
        <li>Added illustrations.</li>
        <li>Moved all points from the previous notes in with the new text.</li>
      </ul>
      <t>Since <xref target="I-D.tiloca-core-oscore-capable-proxies-06"/>:</t>
      <ul spacing="normal">
        <li>The main body of the text was moved here and will be absent from the -07 version of that document.</li>
        <li>An abstract was added.</li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TBD.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71b3XbbRpK+x1P0yheWMiRjyY7tKDPJKLIy1hnb0lryyc6J
M0kTaJIdgWgMGhCtaJTLeYB9gn2KvdqrnTfZJ9n6qrrxQ1IZ79k9qwuKBNDd
1fX7VVVjPB4nta1zc6h23nlbzJUrrCtU5Zoav1a2Xqhjd3S+k+jptDLX9NwZ
PyEXM5cWekmjs0rP6rFe+sZ4P64P6mo+5qnGqdPl+NF+kurazF11c6jMhzJJ
bFkdqrpqfH3w6NHnjw6Slauu5rRuSZcxPLkyN3QtO0yUGqvaVfyf5+RvmFcu
+dRVhr+abOFS/rawWWaKJPG1LrIfdO4KIvLG+MQvdVX/8JfG1cbLldIequ9q
l46Ud1VdmZmnbzdLfPk+SXRTL1xFRIxpXqVkt8eLyvra6kIdLf3f/8N7vpe6
pqixwSPaVWU1XzRLbfNDlcYRvw88mqRuGSe1BZHyeqIube5S3Vvnta5S17/s
qvmhent6caKOvuYLtJAx9aE69Xr2E3HLzzXtWB0cCEW2JnL+SCvrQGFGs16c
jPefPnnyaEj0xcqAYz2al1h9UvPqv6/sxJsBwW8n6uXf/32eN0XWI/mtvdJV
Nrzz/0p1xQRMFo7XD3QnhauWurbX5pBUr5h1v5Q6Hb+YWFPPxrm+MmNWocFl
aNdYlGx4N2o730l1utDTPD557wys4iT7ZXxC+Dt4JtUlT1VW7oMlNaUnH6jL
hSEt0sXcqNzNVWFM5sksVOlsUeOLJq4UaWVqo8hQrRdD+bglxo+eYpW33xw/
f/z5wdYNVsa7pkrNOLOVSckeb8bmQ20KrOPbwQeP42BvcjI9UwlbYUY/t1v2
6cLNTGHn4zqn6Vd1GP/s4OB5nGr/8fN1OsStVFlui6tNBteVLnxJJjy2RWbJ
3RBhJO1kPB4rPSWV02mdJGAjfJeinZPRu1yttFeZ8XZemEwcnuwQ7CzoP/an
aCsq8Iq0Xy1piQnNZWmoS5ulIRFkZmYLur00EJP1S6+mN2q1sOkCgiObUW7W
TpKSvk+N8qZWTTlJTgtabjm1BZM9UvXC3ChTQEb4rlxpKr6FOcS50djq2qbk
wUBcmlsQ4e3S5rqCPizcSl26Su1iy+K035JbN9VemJh2UisyBXV5fK6m2pus
ZYqfCN+WtFJO5vNAnZK9uaxhdiTJ++/UhTFK5961vJ2o9+QvHzwg9i5L8rdF
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

-->

</rfc>
