<?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-01" 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="December" day="01"/>

    <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 a Registrar, using an intermediary node between pledge and Registrar. 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 “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 Registrar.</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 Registrar.</t>

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

<t>This document specifies a new form of Join Proxy and protocol to act as intermediary between joining device and Registrar to establish a connection between joining device and Registrar.</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 Registrar (R) 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 Registrar (R) to authenticate and get the relevant system/network parameters.
If the Pledge (P) initiates a DTLS connection to the Registrar 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
          |R |---- mesh  +--+        +--+
          |  |    \      |J |........|P |
          ++++     \-----|  |        |  |
                         +--+        +--+
       Registrar       Join Proxy   Pledge
                                    "Joining" Device

]]></artwork></figure>

<t>Without routing the Pledge (P) cannot establish a secure connection to the Registrar (R) 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 Registrar (R).</t>

<t>Furthermore, the Pledge (P) may be unaware of the IP address of the Registrar (R) 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 Registrar.</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 Registrar.</t>

<t>Assume that the Pledge does not know the IP address of the Registrar it needs to contact.
In that situation, the Join Proxy must know the (configured or discovered) IP address of a Registrar.
(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 Registrar.
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 Registrar.
The Join Proxy maintains a 4-tuple array to translate the DTLS messages received from the Registrar 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 Registrar address known to Join Proxy." align="left" anchor="fig-statefull2"><artwork><![CDATA[
+------------+------------+-------------+--------------------------+
|   Pledge   | Join Proxy |  Registrar  |          Message         |
|    (P)     |     (J)    |    (R)      | Src_IP:port | Dst_IP:port|
+------------+------------+-------------+-------------+------------+
|      --ClientHello-->                 |   IP_P:p_P  | IP_Ja:5684 |
|                    --ClientHello-->   |   IP_Jb:p_Jb| IP_R:5684  |
|                                       |             |            |
|                    <--ServerHello--   |   IP_R: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_R:5684  |
|                                       |             |            |
|                      <--Finished--    |   IP_R: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_R:5684 = Global IP address and coaps port of Registrar
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 stateless Join Proxy aims 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 Registrar, 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 pledge 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 Registrar.
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 pledge that can only use link-local addressing wants to contact a trusted Registrar, 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 Registrar.</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 Registrar retrieves the two parts.</t>

<t>The Registrar transiently stores the Header field information.
The Registrar uses the Contents field to execute the Registrar functionality.
However, when the Registrar replies, it also extends its DTLS message with the header field in a JPY message and sends it back to the Join Proxy.
The Registrar 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 pledge from the transient state stored earlier 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 |    Registrar  |        Message        |
|     (P)      |     (J)    |      (R)      |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_R:p_Ra  |
|                          C(ClientHello)]  |           |           |
|                    <--JPY[H(IP_P:p_P),--  | IP_R:p_Ra |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_R:p_Ra  |
|                          C(Finished)]     |           |           |
|                    <--JPY[H(IP_P:p_P),--  | IP_R:p_Ra |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_R:p_Ra = Global IP address and join port of Registrar
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 medi-type aplication/cbor</t>

<t>Header and Contents fields togther are one cbor array of 5 elements:</t>

<t><list style="numbers">
  <t>header field: containing a CBOR array <xref target="RFC7049"/> with the pledge IPv6 Link Local address as a cbor byte string, the pledge’s UDP port number as a CBOR integer, the IP address family (IPv4/IPv6) as a cbor integer, and the proxy’s ifindex or other identifier for the physical port as cbor integer. The header field is not DTLS encrypted.</t>
  <t>Content field: containing the DTLS encrypted payload as a CBOR byte string.</t>
</list></t>

<t>The join_proxy cannot decrypt the DTLS ecrypted payload and has no knowledge of the transported media type.</t>

<figure title="CDDL representation of JPY message" align="left" anchor="fig-cddl"><artwork><![CDATA[
    JPY_message =
    [
       ip      : bstr,
       port    : int,
       family  : int,
       index   : int
       payload : bstr
    ]

]]></artwork></figure>

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

<figure><artwork><![CDATA[
      [h'IP_p', p_P, family, ident, 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. Registrar needs |
|             |the address and port number | to store the packet    |
|             |of the pledge and those     | header.                |
|             |of the Registrar.           |                        |
+-------------+----------------------------+------------------------+
|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 Registrar           |
|             |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 Registrar. 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 Registrar. The pledge discovers the link-local address of the Registrar 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 Registrar, 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. In principle, the Join Proxy functions are offered via a “join” port, and not the standard coaps port. Also the Registrar offer a “join” port to which the stateless join proxy sends the JPY message. The Join Proxy and Registrar MUST show the extra 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-registrar" title="Pledge discovery of Registrar">

<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 Registrar, using coap discovery, by the Join Proxy follows section 6 of <xref target="I-D.ietf-ace-coap-est"/>. The extension to discover the additional port needed by the stateless proxy is described in <xref target="jp-disc"/> by using rt=brski-proxy.</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 Registrar 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 Registrar by the pledge uses the enhanced beacons as discussed in <xref target="I-D.ietf-6tisch-enrollment-enhanced-beacon"/>.</t>

</section>
</section>
<section anchor="pledge-discovers-join-proxy" title="Pledge discovers Join Proxy">

<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="jp-disc" 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"
]]></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 BRSKI resource is used to query and return
  the supported BRSKI resource using the additional BRSKI port of 
  Join Proxy or Registrar.
]]></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-01" title="00 to 01">

<t><list style="symbols">
  <t>Registrar used throughout instead of EST server</t>
  <t>Emphasized additional Join Proxy port for Join Proxy and Registrar</t>
  <t>updated discovery accordingly</t>
  <t>updated stateless Join Proxy JPY header</t>
  <t>JPY header described with CDDL</t>
  <t>Example simplified and corrected</t>
</list></t>

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

<t><list style="symbols">
  <t>copied from vanderstok-anima-constrained-join-proxy-05</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">

<t>The examples show the get coaps://[192.168.1.200]:5965/est/crts to a Registrar. The header generated between Client and registrar and from registrar to client are shown in detail. The DTLS encrypted code is not shown.</t>

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

<figure><artwork><![CDATA[
   85                                   # array(5)
      50                                # bytes(16)
         00000000000000000000FFFFC0A801C8 # 
      19 BDA7                           # unsigned(48551)
      0A                                # unsigned(10)
      00                                # unsigned(0)
      58 2D                             # bytes(45)
   <cacrts DTLS encrypted request>
]]></artwork></figure>

<t>In CBOR Diagnostic:</t>

<figure><artwork><![CDATA[
    [h'00000000000000000000FFFFC0A801C8', 48551, 10, 0, 
     h'<cacrts DTLS encrypted request>']
]]></artwork></figure>

<t>The response is:</t>

<figure><artwork><![CDATA[
   85                                   # array(5)
      50                                # bytes(16)
         00000000000000000000FFFFC0A801C8 # 
      19 BDA7                           # unsigned(48551)
      0A                                # unsigned(10)
      00                                # unsigned(0)
   59 026A                              # bytes(618)
      <cacrts DTLS encrypted response>
]]></artwork></figure>

<t>In CBOR diagnostic:</t>

<figure><artwork><![CDATA[
    [h'00000000000000000000FFFFC0A801C8', 48551, 10, 0, 
    h'<cacrts DTLS encrypted response>']
]]></artwork></figure>

</section>


  </back>

<!-- ##markdown-source:
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
wjcyu2WcIPg/54I3VB5gAAA=

-->

</rfc>

