<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.14 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC6347 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6347.xml">
<!ENTITY RFC7049 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7049.xml">
<!ENTITY RFC8366 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8366.xml">
<!ENTITY I-D.ietf-anima-bootstrapping-keyinfra SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-anima-bootstrapping-keyinfra.xml">
<!ENTITY I-D.ietf-ace-coap-est SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-coap-est.xml">
<!ENTITY I-D.ietf-core-multipart-ct SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-multipart-ct.xml">
<!ENTITY I-D.ietf-6tisch-enrollment-enhanced-beacon SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-6tisch-enrollment-enhanced-beacon.xml">
<!ENTITY I-D.ietf-anima-constrained-voucher SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-anima-constrained-voucher.xml">
<!ENTITY I-D.ietf-anima-grasp SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-anima-grasp.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC6763 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6763.xml">
<!ENTITY I-D.richardson-anima-state-for-joinrouter SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.richardson-anima-state-for-joinrouter.xml">
<!ENTITY RFC6690 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6690.xml">
<!ENTITY RFC7030 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7030.xml">
<!ENTITY RFC7228 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7228.xml">
<!ENTITY I-D.kumar-dice-dtls-relay SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.kumar-dice-dtls-relay.xml">
<!ENTITY RFC4944 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4944.xml">
<!ENTITY RFC7252 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
<!ENTITY RFC6775 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6775.xml">
]>

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

<rfc ipr="trust200902" docName="draft-anima-constrained-join-proxy-00" category="std">

  <front>
    <title abbrev="Join-Proxy">Constrained Join Proxy for Bootstrapping Protocols</title>

    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <author initials="P." surname="van der Stok" fullname="Peter van der Stok">
      <organization>vanderstok consultancy</organization>
      <address>
        <email>consultancy@vanderstok.org</email>
      </address>
    </author>
    <author initials="P." surname="Kampanakis" fullname="Panos Kampanakis">
      <organization>Cisco Systems</organization>
      <address>
        <email>pkampana@cisco.com</email>
      </address>
    </author>

    <date year="2020" month="November" day="27"/>

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

    <abstract>


<t>This document defines a protocol to securely assign a pledge to a domain, represented by an EST server, using an intermediary node between pledge and EST server. This intermediary node is known as a “constrained Join Proxy”.</t>

<t>This document extends the work of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> by replacing the Circuit-proxy by a stateless/stateful constrained (CoAP) Join Proxy.
It transports join traffic from the pledge to the Registrar without requiring per-client state.</t>



    </abstract>


  </front>

  <middle>


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

<t>Enrolment of new nodes into networks with enrolled nodes present is described in
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> (“BRSKI”) and makes use of Enrolment over Secure Transport (EST) <xref target="RFC7030"/>
with <xref target="RFC8366"/> vouchers to securely enroll devices.
BRSKI connects new devices (“pledges”) to extended EST servers (“Registrars”) via a Join Proxy.</t>

<t>The specified solutions use https and may be too large in terms of code space or bandwidth required for constrained devices.
Constrained devices possibly part of constrained networks <xref target="RFC7228"/> typically implement the IPv6 over Low-Power Wireless personal Area Networks (6LoWPAN) <xref target="RFC4944"/> and Constrained Application Protocol (CoAP) <xref target="RFC7252"/>.</t>

<t>CoAP can be run with the Datagram Transport Layer Security (DTLS) <xref target="RFC6347"/> as a security protocol for authenticity and confidentiality of the messages.
This is known as the “coaps” scheme.
A constrained version of EST, using Coap and DTLS, is described in <xref target="I-D.ietf-ace-coap-est"/>. The {I-D.ietf-anima-constrained-voucher} describes the BRSKI extensions to the EST server.</t>

<t>DTLS is a client-server protocol relying on the underlying IP layer to perform the routing between the DTLS Client and the DTLS Server.
However, the new “joining” device will not be IP routable until it is authenticated to the network.
A new “joining” device can only initially use a link-local IPv6 address to communicate with a neighbour node using  neighbour discovery <xref target="RFC6775"/> until it receives the necessary network configuration parameters.
However, before the device can receive these configuration parameters, it needs to authenticate itself to the network to which it connects.
IPv6 routing is necessary to establish a connection between joining device and the extended EST server.</t>

<t>A DTLS connection is required between Pledge and EST server.</t>

<t>This document specifies a new form of Join Proxy and protocol to act as intermediary between joining device and EST server to establish a connection between joining device and EST server.</t>

<t>This document is very much inspired by text published earlier in <xref target="I-D.kumar-dice-dtls-relay"/>.
<xref target="I-D.richardson-anima-state-for-joinrouter"/> outlined the various options for building a join proxy.
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> adopted only the Circuit Proxy method (1), leaving the other methods as future work.
This document standardizes the CoAP/DTLS (method 4).</t>

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

<t>The following terms are defined in <xref target="RFC8366"/>, and are used
identically as in that document: artifact, imprint, domain, Join
Registrar/Coordinator (JRC), Manufacturer Authorized Signing Authority
(MASA), pledge, Trust of First Use (TOFU), and Voucher.</t>

</section>
<section anchor="reqlang" title="Requirements Language">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL
NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”,
“MAY”, and “OPTIONAL” in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
<section anchor="join-proxy-functionality" title="Join Proxy functionality">

<t>As depicted in the <xref target="fig-net"/>, the joining Device, or pledge (P), in an LLN mesh
can be more than one hop away from the EST server (E) and not yet authenticated into the network.</t>

<t>In this situation, it can only communicate one-hop to its nearest neighbour, the Join Proxy (J) using their link-local  IPv6 addresses.
However, the Pledge (P) needs to communicate with end-to-end security with a Registrar hosting the EST server (E) to authenticate and get the relevant system/network parameters.
If the Pledge (P) initiates a DTLS connection to the EST server whose IP address has been pre-configured, then the packets are dropped at the Join Proxy (J) since the Pledge (P) is not yet admitted to the network or there is no IP routability to Pledge (P) for any returned messages.</t>

<figure title="multi-hop enrolment." align="left" anchor="fig-net"><artwork><![CDATA[
          ++++ multi-hop
          |E |---- mesh  +--+        +--+
          |  |    \      |J |........|P |
          ++++     \-----|  |        |  |
       EST server        +--+        +--+
       Registrar       Join Proxy   Pledge
                                    "Joining" Device

]]></artwork></figure>

<t>Without routing the Pledge (P) cannot establish a secure connection to the EST server (E) in the network assuming   appropriate credentials are exchanged out-of-band, e.g. a hash of the Pledge (P)’s raw public key could be provided to the EST server (E).</t>

<t>Furthermore, the Pledge (P) may be unaware of the IP address of the EST server (E) to initiate a DTLS connection and perform authentication.</t>

<t>To overcome the problems with non-routability of DTLS packets and/or discovery of the destination address of the EST  Server to contact, the Join Proxy is introduced.
This Join Proxy functionality is configured into all authenticated devices in the network which may act as the Join Proxy for newly joining nodes.
The Join Proxy allows for routing of the packets from the Pledge using IP routing to the intended EST Server.</t>

</section>
<section anchor="join-proxy-specification" title="Join Proxy specification">

<t>A Join Proxy can operate in two modes:</t>

<t><list style="symbols">
  <t>Statefull mode</t>
  <t>Stateless mode</t>
</list></t>

<section anchor="statefull-join-proxy" title="Statefull Join Proxy">

<t>In stateful mode, the joining node forwards the DTLS messages to the EST server.</t>

<t>Assume that the Pledge does not know the IP address of the EST Server it needs to contact.
In that situation, the Join Proxy must know the (configured or discovered) IP address of a EST server.
(Discovery can be based upon <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> section 4.3, or via DNS-SD service discovery <xref target="RFC6763"/>)
The Pledge initiates its request as if the Join Proxy is the intended EST server.
The Join Proxy changes the IP packet (without modifying the DTLS message) by modifying both  the source and destination addresses to forward the message to the intended EST Server.
The Join Proxy maintains a 4-tuple array to translate the DTLS messages received from the EST Server and forward it to the EST Client.
This is a form of Network Address translation, where the Join Proxy acts as a forward proxy.
In <xref target="fig-statefull2"/> the various steps of the message flow are shown, with 5684 being the standard coaps port:</t>

<figure title="constrained statefull joining message flow with EST server address known to Join Proxy." align="left" anchor="fig-statefull2"><artwork><![CDATA[
+------------+------------+-------------+--------------------------+
| EST Client | Join Proxy | EST Server  |          Message         |
|    (P)     |     (J)    |    (E)      | Src_IP:port | Dst_IP:port|
+------------+------------+-------------+-------------+------------+
|      --ClientHello-->                 |   IP_P:p_P  | IP_Ja:5684 |
|                    --ClientHello-->   |   IP_Jb:p_Jb| IP_E:5684  |
|                                       |             |            |
|                    <--ServerHello--   |   IP_E:5684 | IP_Jb:p_Jb |
|                            :          |             |            |
|       <--ServerHello--     :          |   IP_Ja:5684| IP_P:p_P   |
|               :            :          |             |            |
|               :            :          |       :     |    :       |
|               :            :          |       :     |    :       |
|        --Finished-->       :          |   IP_P:p_P  | IP_Ja:5684 |
|                      --Finished-->    |   IP_Jb:p_Jb| IP_E:5684  |
|                                       |             |            |
|                      <--Finished--    |   IP_E:5684 | IP_Jb:p_Jb |
|        <--Finished--                  |   IP_Ja:5684| IP_P:p_P   |
|              :             :          |      :      |     :      |
+---------------------------------------+-------------+------------+
IP_P:p_P = Link-local IP address and port of Pledge (DTLS Client)
IP_E:5684 = Global IP address and coaps port of EST Server
IP_Ja:5684 = Link-local IP address and coaps port of Join Proxy
IP_Jb:p_Rb = Global IP address and port of Join proxy
]]></artwork></figure>

</section>
<section anchor="stateless-join-proxy" title="Stateless Join Proxy">

<t>The Join Proxy is stateless to minimize the requirements on the constrained Join Proxy device.
Stateless operation requires no memory in the Join Proxy device, but may also reduce the CPU impact as the device does not need to search through a state table.</t>

<t>When a client joining device attempts a DTLS connection to the EST server, it uses its link-local IP address as its IP source address.
This message is transmitted one-hop to a neighbouring (join proxy) node.
Under normal circumstances, this message would be dropped at the neighbour node since the joining device is not yet IP routable or it is not yet authenticated to send messages through the network.
However, if the neighbour device has the Join Proxy functionality enabled, it routes the DTLS message to a specific EST server.
Additional security mechanisms need to exist to prevent this routing functionality being used by rogue nodes to bypass any network authentication procedures.</t>

<t>If an untrusted DTLS Client that can only use link-local addressing wants to contact a trusted end-point EST server, it sends the DTLS message to the Join Proxy.</t>

<t>The Join Proxy extends this message into a new type of message called Join ProxY (JPY) message and sends it on to the EST server.</t>

<t>The JPY message payload consists of two parts:</t>

<t><list style="symbols">
  <t>Header (H) field: consisting of the source link-local address and port of the Pledge (P), and</t>
  <t>Contents (C) field: containing the original DTLS message.</t>
</list></t>

<t>On receiving the JPY message, the EST server retrieves the two parts.</t>

<t>The EST server transiently stores the Header field information.
The EST server uses the Contents field to execute the EST server functionality.
However, when the EST server replies, it also extends its DTLS message with the header field in a JPY message and sends it back to the Join Proxy.
The EST server SHOULD NOT assume that it can decode the Header Field, it should simply repeat it when responding.
The Header contains the original source link-local address and port of the DTLS Client from the transient state stored earlier (which can now be discarded) and the Contents field contains the DTLS message.</t>

<t>On receiving the JPY message, the Join Proxy retrieves the two parts.
It uses the Header field to route the DTLS message retrieved from the Contents field to the Pledge.</t>

<t>The <xref target="fig-stateless"/> depicts the message flow diagram:</t>

<figure title="constrained stateless joining message flow." align="left" anchor="fig-stateless"><artwork><![CDATA[
+--------------+------------+---------------+-----------------------+
| EST  Client  | Join Proxy |    EST server |        Message        |
|     (P)      |     (J)    |      (E)      |Src_IP:port|Dst_IP:port|
+--------------+------------+---------------+-----------+-----------+
|      --ClientHello-->                     | IP_P:p_P  |IP_Ja:p_Ja |
|                    --JPY[H(IP_P:p_P),-->  | IP_Jb:p_Jb|IP_E:p_Ea  |
|                          C(ClientHello)]  |           |           |
|                    <--JPY[H(IP_P:p_P),--  | IP_E:p_Ea |IP_Jb:p_Jb |
|                         C(ServerHello)]   |           |           |
|      <--ServerHello--                     | IP_Ja:p_Ja|IP_P:p_P   |
|              :                            |           |           |
|              :                            |     :     |    :      |
|                                           |     :     |    :      |
|      --Finished-->                        | IP_P:p_P  |IP_Ja:p_Ja |
|                    --JPY[H(IP_P:p_P),-->  | IP_Jb:p_Jb|IP_E:p_Ea  |
|                          C(Finished)]     |           |           |
|                    <--JPY[H(IP_P:p_P),--  | IP_E:p_Ea |IP_Jb:p_Jb |
|                         C(Finished)]      |           |           |
|      <--Finished--                        | IP_Ja:p_Ja|IP_P:p_P   |
|              :                            |     :     |    :      |
+-------------------------------------------+-----------+-----------+
IP_P:p_P = Link-local IP address and port of the Pledge
IP_E:p_Ea = Global IP address and join port of EST Server
IP_Ja:p_Ja = Link-local IP address and join port of Join Proxy
IP_Jb:p_Jb = Global IP address and port of Join Proxy

JPY[H(),C()] = Join Proxy message with header H and content C

]]></artwork></figure>

</section>
<section anchor="stateless-message-structure" title="Stateless Message structure">

<t>The JPY message is constructed as a payload with media-type application/multipart-core specified in <xref target="I-D.ietf-core-multipart-ct"/>.</t>

<t>Header and Contents fields use different media formats:</t>

<t><list style="numbers">
  <t>header field: application/cbor containing a CBOR array <xref target="RFC7049"/> with the pledge IPv6 Link Local address as a 16-byte binary value, the pledge’s UDP port number, if different from 5684, as a CBOR integer, and the proxy’s ifindex or other identifier for the physical port on which the pledge is connected. Header is not DTLS encrypted.</t>
  <t>Content field: Any of the media types specified in <xref target="I-D.ietf-ace-coap-est"/> and <xref target="I-D.ietf-anima-constrained-voucher"/> dependent on the function that is requested:</t>
</list></t>

<figure><artwork><![CDATA[
 * application/pkcs7-mime; smime-type=server-generated-key
 * application/pkcs7-mime; smime-type=certs-only
 * application/voucher-cms+cbor
 * application/voucher-cose+cbor
 * application/pkcs8
 * application/csrattrs
 * application/pkcs10
 * application/pkix-cert
]]></artwork></figure>

<t>(XXX- add CDDL for CBOR array above)</t>

<t>The content fields are DTLS encrypted. In CBOR diagnostic notation the payload JPY[H(IP_P:p_P), with cf is content-format of DTLS-content, will look like:</t>

<figure><artwork><![CDATA[
      [ 60, [IP_p, p_P, ident]
        cf, h'DTLS-content']
]]></artwork></figure>

<t>Examples are shown in <xref target="examples"/>.</t>

</section>
</section>
<section anchor="comparison-of-stateless-and-statefull-modes" title="Comparison of stateless and statefull modes">

<t>The stateful and stateless mode of operation for the Join Proxy have
their advantages and disadvantages.  This section should enable to
make a choice between the two modes based on the available device
resources and network bandwidth.</t>

<figure title="Comparison between stateful and stateless mode" align="left" anchor="fig-comparison"><artwork><![CDATA[
+-------------+----------------------------+------------------------+
| Properties  |         Stateful mode      |     Stateless mode     |
+-------------+----------------------------+------------------------+
| State       |The Join Proxy needs        | No information is      |
| Information |additional storage to       | maintained by the Join |
|             |maintain mapping between    | Proxy                  |
|             |the address and port number |                        |
|             |of the pledge and those     |                        |
|             |of the EST server.          |                        |
+-------------+----------------------------+------------------------+
|Packet size  |The size of the forwarded   |Size of the forwarded   |
|             |message is the same as the  |message is bigger than  |
|             |original message.           |the original,it includes|
|             |                            |additional source and   |
|             |                            |destination addresses.  |
+-------------+----------------------------+------------------------+
|Specification|The Join Proxy needs        |New JPY message to      |
|complexity   |additional functionality    |encapsulate DTLS message|
|             |to maintain state           |The EST server          |
|             |information, and modify     |and the Join Proxy      |
|             |the source and destination  |have to understand the  |
|             |addresses of the DTLS       |JPY message in order    |
|             |handshake messages          |to process it.          |
+-------------+----------------------------+------------------------+
]]></artwork></figure>

</section>
<section anchor="discovery" title="Discovery">

<t>It is assumed that Join Proxy seamlessly provides a coaps connection between Pledge and coaps EST server. In particular this section replaces section 4.2 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.</t>

<t>The discovery follows two steps:</t>

<t><list style="numbers">
  <t>The pledge is one hop away from the EST server. The pledge discovers the link-local address of the EST_server as described in {I-D.ietf-ace-coap-est}. From then on, it follows the BRSKI process as described in {I-D.ietf-ace-coap-est}, using link-local addresses.</t>
  <t>The pledge is more than one hop away from a relevant EST server, and discovers the link-local address of a Join Proxy. The pledge then follows the BRSKI procedure using the link-local address of the Join Proxy.</t>
</list></t>

<t>Once a pledge is enrolled, it may function as Join Proxy. The Join Proxy functions are advertised as descibed below. Usually, the Join Proxy functions are offered via a “join” port, and not the standard coaps port. The Join Proxy MUST show the join port number when reponding to the .well-known/core request addressed to the standard coap/coaps port.</t>

<t>Three discovery cases are discussed: coap discovery, 6tisch discovery and GRASP discovery.</t>

<section anchor="pledge-discovery-of-join-proxy" title="Pledge discovery of Join Proxy">

<t>The pledge and Join Proxy are assumed to communicate via Link-Local addresses.</t>

<section anchor="coap-discovery" title="CoAP discovery">

<t>The discovery of the coaps EST server, using coap discovery, by the Join Proxy follows section 6 of <xref target="I-D.ietf-ace-coap-est"/>.</t>

</section>
<section anchor="autonomous-network" title="Autonomous Network">

<t>In the context of autonomous networks, the Join Proxy uses the DULL GRASP M_FLOOD mechanism to announce itself. Section 4.1.1 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> discusses this in more detail.
The Registrar announces itself using ACP instance of GRASP using M_FLOOD messages.
Autonomous Network Join Proxies MUST support GRASP discovery of EST server as decribed in section 4.3 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> .</t>

</section>
<section anchor="tisch-discovery" title="6tisch discovery">

<t>The discovery of EST server by the pledge uses the enhanced beacons as discussed in <xref target="I-D.ietf-6tisch-enrollment-enhanced-beacon"/>.</t>

</section>
</section>
<section anchor="join-proxy-discovers-est-server" title="Join Proxy discovers EST server">

<section anchor="autonomous-network-1" title="Autonomous Network">

<t>The pledge MUST listen for GRASP M_FLOOD <xref target="I-D.ietf-anima-grasp"/> announcements of the objective: “AN_Proxy”.
See section Section 4.1.1 <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> for the details of the objective.</t>

</section>
<section anchor="coap-discovery-1" title="CoAP discovery">

<t>In the context of a coap network without Autonomous Network support, discovery follows the standard coap policy.
The Pledge can discover a Join Proxy by sending a link-local multicast message to ALL CoAP Nodes with address FF02::FD. Multiple or no nodes may respond. The handling of multiple responses and the absence of responses follow section 4 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.</t>

<t>The presence and location of (path to) the Join Proxy resource are discovered by
sending a GET request to “/.well-known/core” including a resource type (rt)
parameter with the value “brski-proxy” <xref target="RFC6690"/>.
Upon success, the return payload will contain the root resource of the Join Proxy resources.
It is up to the implementation to choose its root resource; throughout this document the
example root resource /jp is used.
The example below shows the discovery of the presence and location of Join Proxy resources.</t>

<figure><artwork><![CDATA[
  REQ: GET coap://[FF02::FD]/.well-known/core?rt=brski-proxy

  RES: 2.05 Content
  <coaps://[IP_address]:jp-port/jp>; rt="brski-proxy";ct=62
]]></artwork></figure>

<t>Port numbers are assumed to be the default numbers 5683 and 5684 for coap and coaps respectively (sections 12.6 and 12.7 of <xref target="RFC7252"/> when not shown in the response.
Discoverable port numbers are usually returned for Join Proxy resources in the &lt;href&gt; of the payload (see section 5.1 of <xref target="I-D.ietf-ace-coap-est"/>).</t>

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

<t>It should be noted here that the contents of the CBOR map used to convey return address information is not protected.
However, the communication is between the Proxy and a known registrar are over the already secured portion of the network, so are not visible to eavesdropping systems.</t>

<t>All of the concerns in <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> section 4.1 apply.
The pledge can be deceived by malicious AN_Proxy announcements.
The pledge will only join a network to which it receives a valid <xref target="RFC8366"/> voucher.</t>

<t>If the proxy/Registrar was not over a secure network, then an attacker could change the cbor array, causing the pledge to send traffic to another node.
If the such scenario needed to be supported, then it would be reasonable for the Proxy to encrypt the CBOR array using a locally generated symmetric key.
The Registrar would not be able to examine the result, but it does not need to do so.
This is a topic for future work.</t>

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

<t>This document needs to create a registry for key indices in the CBOR map.  It should be given a name, and the amending formula should be IETF Specification.</t>

<section anchor="resource-type-registry" title="Resource Type registry">

<t>This specification registers a new Resource Type (rt=) Link Target Attributes in the “Resource Type (rt=) Link Target Attribute Values” subregistry under the “Constrained RESTful Environments (CoRE) Parameters” registry.</t>

<figure><artwork><![CDATA[
  rt="brski-proxy". This EST resource is used to query and return
  the supported EST resource of a Join Proxy placed between Pledge
  and EST server.
]]></artwork></figure>

</section>
</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>Many thanks for the comments by Brian Carpenter.</t>

</section>
<section anchor="contributors" title="Contributors">

<t>Sandeep Kumar, Sye loong Keoh, and Oscar Garcia-Morchon are the co-authors of the draft-kumar-dice-dtls-relay-02. Their draft has served as a basis for this document. Much text from their draft is copied over to this draft.</t>

</section>
<section anchor="changelog" title="Changelog">

<section anchor="to-05" title="04 to 05">

<t><list style="symbols">
  <t>Terminology updated</t>
  <t>Emphasized new Join Proxy port</t>
</list></t>

</section>
<section anchor="to-02" title="01 to 02">

<t><list style="symbols">
  <t>extended the discovery section</t>
  <t>removed inconsistencies from the the flow diagrams</t>
  <t>Improved readability of the examples.</t>
  <t>stateful configurations reduced to one</t>
</list></t>

</section>
<section anchor="to-01" title="00 to 01">

<t><list style="symbols">
  <t>Added Contributors section</t>
  <t>Adapted content-formats to est-coaps formats</t>
  <t>Aligned examples with est-coaps examples</t>
  <t>Added statefull Proxy to stateless proxy</t>
</list></t>

</section>
<section anchor="to-00" title="00 to 00">

<t><list style="symbols">
  <t>added payload examples in appendix</t>
  <t>discovery for three cases: AN, 6tisch and coaps</t>
</list></t>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC6347;
&RFC7049;
&RFC8366;
&I-D.ietf-anima-bootstrapping-keyinfra;
&I-D.ietf-ace-coap-est;
&I-D.ietf-core-multipart-ct;
&I-D.ietf-6tisch-enrollment-enhanced-beacon;
&I-D.ietf-anima-constrained-voucher;
&I-D.ietf-anima-grasp;
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References'>

&RFC6763;
&I-D.richardson-anima-state-for-joinrouter;
&RFC6690;
&RFC7030;
&RFC7228;
&I-D.kumar-dice-dtls-relay;
&RFC4944;
&RFC7252;
&RFC6775;


    </references>


<section anchor="examples" title="Stateless Proxy payload examples">

<figure><artwork><![CDATA[
Examples need to be redone
]]></artwork></figure>

<t>Examples are extensions of two examples shown in <xref target="I-D.ietf-ace-coap-est"/>.
The following content formats are used:</t>

<t><list style="symbols">
  <t>60:  application/cbor</t>
  <t>62:  application/multipart</t>
  <t>281: application/pkcs7-mime; smime-type=certs-only</t>
  <t>284: application/pkcs8</t>
  <t>286: application/pkcs10</t>
</list></t>

<t>For presentation purposes the payloads are abbreviated as follows:</t>

<t>cacrts request payload:</t>

<figure><artwork><![CDATA[
   <cacrts request payload> = <empty>
]]></artwork></figure>

<t>cacrts response payload:</t>

<figure><artwork><![CDATA[
   <cacrts response payload> =
   DTLS_encrypt(
   3082027b06092a864886f70d010702a082026c308202680201013100300b
   06092a864886f70d010701a082024e3082024a308201f0a0030201020209
   009189bcdf9c99244b300a06082a8648ce3d0403023067310b3009060355
   040613025553310b300906035504080c024341310b300906035504070c02
   4c4131143012060355040a0c0b4578616d706c6520496e63311630140603
   55040b0c0d63657274696669636174696f6e3110300e06035504030c0752
   6f6f74204341301e170d3139303130373130343034315a170d3339303130
   323130343034315a3067310b3009060355040613025553310b3009060355
   04080c024341310b300906035504070c024c4131143012060355040a0c0b
   4578616d706c6520496e6331163014060355040b0c0d6365727469666963
   6174696f6e3110300e06035504030c07526f6f742043413059301306072a
   8648ce3d020106082a8648ce3d03010703420004814994082b6e8185f3df
   53f5e0bee698973335200023ddf78cd17a443ffd8ddd40908769c55652ac
   2ccb75c4a50a7c7ddb7c22dae6c85cca538209fdbbf104c9a38184308181
   301d0603551d0e041604142495e816ef6ffcaaf356ce4adffe33cf492abb
   a8301f0603551d230418301680142495e816ef6ffcaaf356ce4adffe33cf
   492abba8300f0603551d130101ff040530030101ff300e0603551d0f0101
   ff040403020106301e0603551d1104173015811363657274696679406578
   616d706c652e636f6d300a06082a8648ce3d0403020348003045022100da
   e37c96f154c32ec0b4af52d46f3b7ecc9687ddf267bcec368f7b7f135327
   2f022047a28ae5c7306163b3c3834bab3c103f743070594c089aaa0ac870
   cd13b902caa1003100
   )
]]></artwork></figure>

<t>serverkeygen request payload:</t>

<figure><artwork><![CDATA[
   <serverkeygen request payload> =
   DTLS_encrypt(
   3081cf3078020100301631143012060355040a0c0b736b67206578616d70
   6c653059301306072a8648ce3d020106082a8648ce3d030107034200041b
   b8c1117896f98e4506c03d70efbe820d8e38ea97e9d65d52c8460c5852c5
   1dd89a61370a2843760fc859799d78cd33f3c1846e304f1717f8123f1a28
   4cc99fa000300a06082a8648ce3d04030203470030440220387cd4e9cf62
   8d4af77f92ebed4890d9d141dca86cd2757dd14cbd59cdf6961802202f24
   5e828c77754378b66660a4977f113cacdaa0cc7bad7d1474a7fd155d090d
   )
]]></artwork></figure>

<t>serverkeygen response payload:</t>

<figure><artwork><![CDATA[
   <serverkeygen response payload> =
   DTLS_encrypt(
   84                                   # array(4)
   19 011C                              # unsigned(284)
   58 8A                                # bytes(138)
   308187020100301306072a8648ce3d020106082a8648ce3d030107046d30
   6b02010104200b9a67785b65e07360b6d28cfc1d3f3925c0755799deeca7
   45372b01697bd8a6a144034200041bb8c1117896f98e4506c03d70efbe82
   0d8e38ea97e9d65d52c8460c5852c51dd89a61370a2843760fc859799d78
   cd33f3c1846e304f1717f8123f1a284cc99f
   19 0119                              # unsigned(281)
   59 01D3                              # bytes(467)
   308201cf06092a864886f70d010702a08201c0308201bc0201013100300b
   06092a864886f70d010701a08201a23082019e30820143a0030201020208
   126de8571518524b300a06082a8648ce3d04030230163114301206035504
   0a0c0b736b67206578616d706c65301e170d313930313039303835373038
   5a170d3339303130343038353730385a301631143012060355040a0c0b73
   6b67206578616d706c653059301306072a8648ce3d020106082a8648ce3d
   030107034200041bb8c1117896f98e4506c03d70efbe820d8e38ea97e9d6
   5d52c8460c5852c51dd89a61370a2843760fc859799d78cd33f3c1846e30
   4f1717f8123f1a284cc99fa37b307930090603551d1304023000302c0609
   6086480186f842010d041f161d4f70656e53534c2047656e657261746564
   204365727469666963617465301d0603551d0e04160414494be598dc8dbc
   0dbc071c486b777460e5cce621301f0603551d23041830168014494be598
   dc8dbc0dbc071c486b777460e5cce621300a06082a8648ce3d0403020349
   003046022100a4b167d0f9add9202810e6bf6a290b8cfdfc9b9c9fea2cc1
   c8fc3a464f79f2c202210081d31ba142751a7b4a34fd1a01fcfb08716b9e
   b53bdaadc9ae60b08f52429c0fa1003100
   )
]]></artwork></figure>

<section anchor="cacerts" title="cacerts">

<t>The request from Join Proxy to EST server looks like:</t>

<figure><artwork><![CDATA[
    Get coaps://192.0.2.1/est/crts
    (Accept: 62)
    (Content-format: 62)
    payload =
    82                    # array(2)
    18 3C                 # unsigned(60)
    83                    # array(3)
    69                    # text(9)
         464538303A3A414238 # "FE80::AB8"
    19 237D               # unsigned(9085)
    65                    # text(5)
         6964656E74       # "ident"
]]></artwork></figure>

<t>In CBOR Diagnostic:</t>

<figure><artwork><![CDATA[
    payload = [60, ["FE80::AB8", 9085, "ident"]]
]]></artwork></figure>

<t>The response will then be:</t>

<figure><artwork><![CDATA[
     2.05 Content
     (Content-format: 62)
       Payload =
     84                                # array(4)
     18 3C                             # unsigned(60)
     83                                # array(3)
     69                                # text(9)
         464538303A3A414238            # "FE80::AB8"
     19 237D                           # unsigned(9085)
     65                                # text(5)
         6964656E74                    # "ident"
     19 0119                           # unsigned(281)
     59 027F                           # bytes(639)
     <cacrts response payload>
     ]
]]></artwork></figure>

<t>In CBOR diagnostic:</t>

<figure><artwork><![CDATA[
    payload = [60, ["FE80::AB8", 9085, "ident"],
               62, h'<cacrts response payload>']
]]></artwork></figure>

</section>
<section anchor="serverkeygen" title="serverkeygen">

<t>The request from Join Proxy to EST server looks like:</t>

<figure><artwork><![CDATA[
    Get coaps://192.0.2.1/est/skg
    (Accept: 62)
    (Content-Format: 62)
      Payload =
    83                                # array(4)
    18 3C                             # unsigned(60)
    83                                # array(3)
    69                                # text(9)
         464538303A3A414238           # "FE80::AB8"
    19 237D                           # unsigned(9085)
    65                                # text(5)
         6964656E74                   # "ident"
    19 011E                           # unsigned(286)
    58 D2                             # bytes(210)
    <serverkeygen request payload>
]]></artwork></figure>

<t>In CBOR diagnostic:</t>

<figure><artwork><![CDATA[
    payload = [60, ["FE80::AB8", 9085, "ident"],
               286, h'<serverkeygen request payload>']
]]></artwork></figure>

<t>The response will then be:</t>

<figure><artwork><![CDATA[
     2.05 Content
     (Content-format: 62)
       Payload =
     83                                # array(4)
     18 3C                             # unsigned(60)
     83                                # array(3)
     69                                # text(9)
         464538303A3A414238            # "FE80::AB8"
     19 237D                           # unsigned(9085)
     65                                # text(5)
         6964656E74                    # "ident"
     19 011E                           # unsigned(286)
     59 0269                           # bytes(617)
     <serverkeygen response payload>
]]></artwork></figure>

<t>In CBOR diagnostic:</t>

<figure><artwork><![CDATA[
    payload = [60, ["FE80::AB8", 9085, "ident"],
               286, h'<serverkeygen response payload>']
]]></artwork></figure>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
VHcAAA==

-->

</rfc>

