<?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-ietf-anima-constrained-join-proxy-02" 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="2021" month="February" day="04"/>

    <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.
The Join Proxy has has been enrolled via the Registrar and consequently knows the IP address and port of the Registrar. The Pledge first discovers and selects the most appropriate Join Proxy.
(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 receives the message at a discoverable “Join” port.
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:p_J  |
|                    --ClientHello-->   |   IP_Jb:p_Jb| IP_R:5684  |
|                                       |             |            |
|                    <--ServerHello--   |   IP_R:5684 | IP_Jb:p_Jb |
|                            :          |             |            |
|       <--ServerHello--     :          |   IP_Ja:p_J | IP_P:p_P   |
|               :            :          |             |            |
|               :            :          |       :     |    :       |
|               :            :          |       :     |    :       |
|        --Finished-->       :          |   IP_P:p_P  | IP_Ja:p_J  |
|                      --Finished-->    |   IP_Jb:p_Jb| IP_R:5684  |
|                                       |             |            |
|                      <--Finished--    |   IP_R:5684 | IP_Jb:p_Jb |
|        <--Finished--                  |   IP_Ja:p_J | 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:P_J = Link-local IP address and join port of Join Proxy
IP_Jb:p_Rb = Global IP address and client 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>If an untrusted Pledge that can only use link-local addressing wants to contact a trusted Registrar, and the Registrar is more than one hop away, it sends the DTLS message to the Join Proxy.</t>

<t>When a Pledge attempts a DTLS connection to the Join Proxy, 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 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 its Registrar of choice.</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>In this scenario, both the Registrar and the Join Proxy use discoverable “Join” ports.</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 media-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.          |
+-------------+----------------------------+------------------------+
| Ports       | Join Proxy needs           |Join Proxy and Registrar|
|             | discoverable "Join" port   |need discoverable       |
|             |                            | "Join" ports           |
+-------------+----------------------------+------------------------+

]]></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 and join port of a Join Proxy. The pledge then follows the BRSKI procedure using the link-local address of the Join Proxy.</t>
  <t>The stateless Join Proxy discovers the join port of the Registrar</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"/>.</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 join port of the Join Proxy is 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 join port.</t>

<t>The example below shows the discovery of the join port of the Join Proxy.</t>

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

  RES: 2.05 Content
  <coaps://[IP_address]:join-port>; 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 anchor="join-proxy-discovers-registrar-join-port" title="Join Proxy discovers Registrar join port">

<section anchor="jr-disc" title="CoAP discovery">

<t>The stateless Join Proxy can discover the join port of the Registrar by sending a GET request to “/.well-known/core” including a resource type (rt)
parameter with the value “join-proxy” <xref target="RFC6690"/>.
Upon success, the return payload will contain the join Port of the Registrar.</t>

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

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

<t>The 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 port of the Join Proxy.

  rt="join-proxy". This BRSKI resource is used to query and return
  the supported BRSKI port of the Registrar.
]]></artwork></figure>

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

<t>Many thanks for the comments by Brian Carpenter and Esko Dijk.</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-02" title="01 to 02">

<t><list style="symbols">
  <t>Discovery of Join Proxy and Registrar ports</t>
</list></t>

</section>
<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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
Uz5YpvVkTZ60FIKR4A4BJq9ToilPb8ArdAQzCtRBRbHUAfAQAi0kg5OC5+bL
EcxOo1t5TqfbmR+ICHhg3Er0GWj6OuQQviqJ0Vg3piX5IQ1dwCk8SjtFU3G1
1pkvbOzUDpsKtIV1C2LSHA0e4ZgD8S7eeAMQVBbgzoNBMfaPslkDcj983x5d
NfZWDVvLig2yrM0TerN9EU1FYsD8go5CivzjO+w14y2hBhMRgxjvHdk/IDcF
WrDU6wxsMAA8RK32R3UmKcaEnrpHlJqhRzDXA6+ZG5osrk1RYtu6X0BBKqz/
Gl1+F48b5dqVKxihgEbsnHqYmWYRa3zMkNwpAX6cKezUog6aKGumbF4Ss3L1
sSR/U4DzCZwDREcIiiYIJFEZJ8nqS6LEiqxiRj6ukQ3uBYEv5Q0pIQQGvqaX
/PTg5pGVKfGkJho8e1Uts/QL8s+F6IDHg0fksOGKj96e9c+OFKZlMDRsZREO
Hn3+vMUYlJU49wC9JwyP0XvCwGLWIbdreFg1SFJLTwiToFOgLUSUjCHTs0Ho
blGV1bYlDwua2jQpbmDReLYyBsZnxi0Mbt3rCcR5ihoV4AxKuNyhw5iJhcVr
cN8iug2YMcgq4S+6Wo/7ZQUutOxS4hiYkkyQF9riI/iadvnOCK8BC8RBoEFV
yxkyl3PUNi8hmVc1MjkomZsc6WvypRq01ci5WsaguSQOP04lWjDaIdnD7LAX
zIMvuiwamVA1A41JBpjilB6bnP2Dp4+B3Q3VTFStKD1KbDAU7+PbvvdZ/6Px
q/4quLGOEDlZ3mpvau7TjXOG3gj41jWjQch8i6eGv15v2R9oouXVWR5+OB4P
SXncqKOiNL9ufudy6g0DAbPfZ7q/isAq9ft/aTl02O54/AHm/jDGX/D9tYYf
r+1ymp+OIWWQ1xPsOKFBTodEv3WDdHxu1v9aM8if+332HwQUB4nMfuNBdRck
wy+EpGPy1iAOmTcekjsgGa758UU4uWuQoftl3n7tQfr9l2AiMEXoeK2Nky9g
to4h/0XMRhR3oHiQ3MFsrW5tSO7LJ8N1v25qT25qP4Jb1N799YkF67k68fcu
Ol0hE8d4WzNbgcPUc/VDkk3a3Z1mx0Gszg0YPfDPrZNzPlg6e86qocrpZP3E
vHtU60wWrR7dOqNmglx/Z86+tX5wzbyRTfMMtUzPW39gpz2frxUmGz+cfHPf
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

-->

</rfc>

