<?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-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="03"/>

    <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:
H4sIAEu9GmAAA+082XIbR5LvHeF/qKUiRuQYAA+JlIQZzRomJYsyJWFIahwO
j0NRaDSINhvd2D5IYUTtt+y37JdtXnX0AZLyamL2YRE6gO46svLOrKzq9/tB
GZdJNFSHWVqUuY7TaKpeZ3Gqxnn2caVmWa6+z7IS3y2XcXqBz8sszJIi0JNJ
Hl0NqXmfmgfTLEz1Aoab5npW9nUaL3Q/dEP3f8O2S2zb39kLggeqKHU6/aCT
LIVeZV5FQRAvc/palHs7O8+gmc4jPVTHaRnlaVQG1xdDRSOrn7L8EmH6Ic+q
ZXB57Rr1jxCAINTlEKaYBkGwjIcKPg9UqFNVFZHSea5XajOeKZ0kahUVWwoW
O9fFXM2jPAqUgnUO8QV8LbK8zKNZMaQhptFMV0lZQAvzfrXg1/gz0FU5z/Ih
zNpXcQpP3wzUaRzOdT4tshSaM5Le4KMoqb/KcljeGSAlShYA6Vk2K68BAbRW
nCla6DgZqkWYfxtH5ey7wjQdhNrONx6oK+g8jXJ1VmaXdsZxBOhpvqIZr3CY
vIAnCukFq9NpuHLzeQ+/c20H0Nef9Ee9WOpUX8aFm1KnWVF/QRMexkWYqbNV
UUYLb13LS275XYjvB2G2CII0yxe6jK+iIbQ7fXl48OjxE/n6ZOfxM/n69NHB
AX497h8NEDPCfROfe/uX0SpOZ7muNwwjYFK97EdFWXsRZnnUX8Cy46XOy35Y
f3tQAojzfpTmWZIsorSEr3NAELD5JNKAsA5ofFm4yqoQOK2j1UWui+UwAEib
K39y8Mi0zy3XSC8QpTLqQxeSMhCJkgfHfgfPdizGHtmve3tPzWiX1ULn/WkM
qJiWSdHPo0SvpN3jZ48f2y77exaWJ/vA4v1+X+kJLiosg+B8HhcKtECF+EA5
gZUWSqulaA2UmCIKKxh+pXRRxBcpvk2i6UWE7zR0BkZIeyqPlnlUwCigkCbQ
Vp1GFzFOk/dAfFHqgYtjFPdFNI11vlJpNo3UJCqvoyg1QwKnuo4DReC1O8HD
yzS7BlAQ1o2wUxduDJrLiz6WUToFLTCP1DWIp8pm6tOne/Hf58+4KFhjokNc
Cw5xGOdhFZesHnnNRNIkKopt+jarEuUDt3mYjcZbHoyD4LgE1anTYgkKq1DI
CPh7NotDNcuzBU3k0I2/LHrUdQxqqyoBrP+o4hzBWkZ5P0xiXCwBMGB6L+Lp
NIlQfYO+zbNpFZYxKK/gBYoCoQYwkUbXhF1CeAY/S8RRQbMoFhpYArcQUiMh
4GeYxxN4FafB/bG5ufH96dmPxxtbRPKFvoRRUcsDIB5UV6j1iP3UucGS2nxx
dr4FhBPh+Pw5IBDpASoVGF1EtaixL68BAL4CqSkGAQGA9EmjEHCP65d3AB3j
vAD4YIgNi/NiQ13FGijt0xDYLFLFMgrjWQx4KLKkQvzyguZluSxkkcAlSMZM
JToHgiKtgbMLXHSIfF0sQbWhVZtA++t4Cqti2sKoaNl9XrLLOGw/VMsMRHUC
a0Y9yMO7RpayjEJQKoCxcrWMQzCsKxUvYO2EfuS24/HVAdPhJLvuj7Nr+PYT
AIRMjuwG6kwnagQWX701424enGQ/jUdvhUiojmAGRIEP62i5TGBKxJR1UoyE
CGT7e58/A3rxGbkBgL28SpkjEbgjXWrQvQuPOU70yvBMXIK7cHR+cibjoRlC
OFBnFKaBVXSIX/QDYOFxiG8QXkDbLJ7iI53gM8AkzruAxesLRD4rKE8d4esN
NE7AKWBtAJGDYFRDP+CywDUjp5+dG+V4CF1oSgS41xSsmpryrB+gRyHzNcWu
w2x9tgMykMz9pBILYtamegHEIywIilasVPpFlCMrWKShXCH0sBzsW6GfwU+O
x8DkSAoYFtgEDSM1QTOH743eJzLiNIesthAF9tkZTTcIXgHbwZcevUE53UBF
CcNsCMcDS4Bkp1mJLAJT4yx6kiBEZZyomDSVpa5GGyXLFWFAInUOjGyXpSgW
aYxcAN/IGVVJnF72kwxkhmVET6c5ygSMC07QokppHuZVDWPHF/NJVuVswJjm
3tMpek+wxJWwKthqYFULfR6FEXgVhYAcIv+hMWTgmU0vqpyFCWQePDnQLIWH
uUkEJIiov7cyGRcfw6LWDdNDENIomtLqfDTCiyJKZg1k4s/rObg72M/oVzB1
iCZD/7jw1gHtgZmBYHGByJIuCIRhEyGLgd1wic+sI+YZrzPMYdWnGWjc5Wc0
HQWjywui3LUi7gV59QItHMB3ksCbQvGv+Sq3AO+M+O9a+3rQ4Tux0aJC9INS
5NUDjkHU1bKieeBJpHMQuNzplk6HEtUvv76X9wosC/8npOaQPFc6j7MK7NuS
7SHq2EkVJ1NyB9nbWbINvb/noKcwHExAUun5YUIYYNl5Bq7W7lZPJZG+Mt5a
Bv/k8rZAUs2qEv0Klv4G/THIhdXG/xCRQwu0Tey1KeM/3hqgP3UO1I7TLMku
Vsp+Pj3wHn9m92AGrkd2TcCQyccQkd1t0e/WeekRhfE9KJppwOaHTTMxGACk
SwsrhNZ5Gc+A/XpoucELhC/GJ0d+DSyvbB9mGawp1SWQYfP16SFg6I1OK+wM
mMjViMJgWPRUnYGjj8DKo3IVbL4ZnY2gBztGPTC5EPCjULyMIbRU70F/bJ6/
e/l+i+H/G1sdQtIpCyGCW4CBTi8qMJ6AJRDOBH4JhoDESAwgzsab92fnGz3+
X719R99PX/z1/fHpiyP8fvZqdHJivwTS4uzVu/cnR+6b63n47s2bF2+PuDM8
VbVHwcab0c8bDPbGu/H58bu3o5MNxrTPFUgSkNZJxFIOPjCyoS6CmqX+/nD8
3/+1+xgo+m9A0r3d3WfAs/zj6e4TdISuQX3ybMTC/BO4bBUAs4Nc4iiY4gj1
Mi51AuoX6F7M0cHARAegFHDq53yqlBQGuSigB9F1AGeuZHiQfT99Ar3eB+2M
3IUPjEo5IpXSQ5dTgozNMRAQAUjVyclb9HTmgbheCzYgZBDBr83AX7kGl9aG
KU6nbZ6yW48GeRWVDctL4UXN9gbHgusiLiuyPmRyrO31DSrM3ce5YYyYvHYg
S1E6U8oL9NCz+XpL7C28iHPfcNcsd1Q0HI2xxYgzfi3TDgFlv8z68J/zKcXm
O3zMs6I0eqiOpaY9RaxdROx6o5N9pVEdUdJl21hX374fz5qgsp9Sku1qGsR2
BAmQkcNkvJc5sNqE4vEcvUz2B6IpIYR5CUKUy6gUBZZnwLEgA2UX0gHnYdQC
r3BcMV3EZdsVQ2ZEXR1xW+fOxeSCQ2NvOPLaU4zMQYWhLnWuefCf8AkCp5a/
hY+i7BAykPfi5lTd9ClOBm6Hdv3+t7YPfPdb0h+l/i4/X6ubgXxuxuqmORk1
xZH7pqMZxGvZ+Kyb3RGNPx6ylWBk/aDeZ+O18XBZ+AVPn4bqgSgJRSnm5w8t
qjhyRh04eAiaCUzD840kmpUboLl/MjkI8esa5AYRRnL7Hg7H47eyJUqGqC7D
FLooqgU5zQq0JPBdjkyuQmBODs+YI6OP4KakF+geVGU/m/Uxku6paHAxgKkp
WZw1ReYhuIn6mn2jkMxQmFUJuozonFyBAZ52gggs9rLKkVVRM7Z0hoT7Vaop
HyzTerImT1oKwUhwhwCT1ynRlKc34BU6ghkF6qCiWOoAeAiBFpLBScFz8+UI
ZqfRrTyn0+3MD0QEPDBuJfoMNH0dcghflcRorBvTkvyQhi7gFB6lnaKpuFrr
zBc2dmqHTQXawroFMWmOBo9wzIF4F2+8AQgqC3DnwaAY+0fZrAG5H75vj64a
e6uGrWXFBlnW5gm92b6IpiIxYH5BRyFF/vEd9prxllCDiYhBjPeO7B+QmwIt
WOp1BjYYAB6iVvujOpMUY0JP3SNKzdAjmOuB18wNTRbXpiixbd0voCAV1n+N
Lr+Lx41y7coVjFBAI3ZOPcxMs4g1PmZI7pQAP84UdmpRB02UNVM2L4lZufpY
kr8pwPkEzgGiIwRFEwSSqIyTZPUlUWJFVjEjH9fIBveCwJfyhpQQAgNf00t+
enDzyMqUeFITDZ69qpZZ+gX550J0wOPBI3LYcMVHb8/6Z0cK0zIYGrayCAeP
Pn/eYgzKSpx7gN4ThsfoPWFgMeuQ2zU8rBokqaUnhEnQKdAWIkrGkOnZIHS3
qMpq25KHBU1tmhQ3sGg8WxkD4zPjFga37vUE4jxFjQpwBiVc7tBhzMTC4jW4
bxHdBswYZJXwF12tx/2yAhdadilxDExJJsgLbfERfE27fGeE14AF4iDQoKrl
DJnLOWqbl5DMqxqZHJTMTY70NflSDdpq5FwtY9BcEocfpxItGO2Q7GF22Avm
wRddFo1MqJqBxiQDTHFKj03O/sHTx8DuhmomqlaUHiU2GIr38W3f+6z/0fhV
fxXcWEeInCxvtTc19+nGOUNvBHzrmtEgZL7FU8Nfr7fsDzTR8uosDz8cj4ek
PG7UUVGaXze/czn1hoGA2e8z3V9FYJX6/b+0HDpsdzz+AHN/GOMv+P5aw4/X
djnNT8eQMsjrCXac0CCnQ6LfukE6Pjfrf60Z5M/9PvsPAoqDRGa/8aC6C5Lh
F0LSMXlrEIfMGw/JHZAM1/z4IpzcNcjQ/TJvv/Yg/f5LMBGYInS81sbJFzBb
x5D/ImYjijtQPEjuYLZWtzYk9+WT4bpfN7UnN7UfwS1q7/76xIL1XJ34exed
rpCJY7ytma3AYeq5+iHJJu3uTrPjIFbnBowe+OfWyTkfLJ09Z9VQ5XSyfmLe
Pap1JotWj26dUTNBrr8zZ99aP7hm3simeYZapuetP7DTns/XCpONH06+ue+H
n7NhbL1ROl6QiwJBb7yI/xFJSsjLpMqmW3f1g8RIg8BNy6EE+kAyDKVXFhFE
rysTSrUG6KkJul8YUyVFBj0xiuOc+Pg9Zpy9UEs2KKzLj64878DrPMQdW4iO
LuamTELRDh0m/2aYbaxSKiGDHsJ7FEnYFCBuunmZO0E+0uhap6UfMMD4ZiSv
BKW1Y4QeVHdGk3KPha0U8V03447Vdv9/wtSYtjtLZRktluUt6TfXmWaqCnHG
k27B4JfwxDi0/EL8QANYLF6fpNS8LKm3+Yjo2nTTb1GcNwje47atoqqtRIW4
m7JAXw0i7B6nZc0k1yYv0kj8NXY3W4k/L+nnb85meS0d2NyeRRJ4IadwTy1x
bPO1Er14G6rMi/OOLEAt3xClCMqUKEGbWN1ERxI41sGCinlG4tWMCVyNkU+c
VOhwjXUWlAsyr3Bjxxfcn4FA45+3XBRFkSaOCAB25MoMBOOfbZelXiWZ5uAX
GrGvfp1RLYjJHbyKNNJ889UWxLZRMh2a1l6yQ/itLXWtoHns7R3AO5rhMMMA
CmbfPPTnwHjJbsnl8UWM5SM+tmFB78zGtGnora7XkOI8KvM4MrGnXaagxdtm
ReGIORFQlFkuHQQPBJ+y9XuYTqt3JyHlnUBZFnfB3duPUVhJmOc61LjMY9Rr
k0f3l7AE68W77KRkDQ8h09UY0Ra+zOtgYz2SxwA1nplAJN2lturrcztmnGkV
9SubMNOIypM8hL3EmVlRzkkpFFg2RBVyEfejhQKal1mK2708ofQWPijqXHB/
fpO9Khs9W+KKZSECuz1uo/sbtKtB8cUsWEt/rOHB49IxTo3TgB6kbNq6xozl
5QbaLOdkzt87C0GXQYje4xxIO6vQgBot6rr0jJEfLxWALsTnz7K1WM/0kHc0
jakUqzOivzUIXh/VYwxMOWapDWoF9d1hfSOoNz64Ceo7ono/rvfC+pv1Qf0X
rKj2/d5RPcPmhVo2wtDrw3pg0l9ebZpOWz0a2I9qbsiFB09a3xFqHW568G39
Wg+wat/XBvZtYAQWAeDmnpH94aYXpSMod8PSGdk3P17wqm/uH7O1RrkDli8Y
pR2Z3z8cvtcoXcF9xyj/Qq4z8BGd/7Vc1wDlXlx3W5rA9Px6XNdF6fumCm7X
Ul+UK3DWKHB4Xheo12L8ZoKA+Ox/kyF4vT5D0NErYGbZ6h1uApGf11L7vscl
3tYrs6WE1lgdBh2pBYqz12UW6GVXZuGOdIGxZzBaRZVabZefd025AdUk4SEN
CQNoCVSS2KfgQ9uy6+1wkuVBIJ6J1Gd7rgZG1Re4v02ZfQyRsYNscQAq91XE
leIcVajdQc0xrfn7Wh1+/+5U+krt/mMsjbI+rTh1VJKDHKBO6j4glSHj/JMV
uXgYzfa8ng8L9f5ozHROq8UEwS7MvLibc2EKezzOmOlFDG4rKIyrx9s49ZY3
ke1kvCfKKD3EvbIYQuaPGMByWSEX6c3Q2Zxx+YpazlcFlu0xQDCoPyTvoNW9
eI6EyRmM0jBfYZHjgPC6NzCEWRNI1TtZyrvleygTzw758MPSbDPjzODkY39v
wNZ4gAYMqNOMkl5ML1EA9hAL1eBMcTcWmG2gSEqoMAX49YPh1+ff0KNfvjEl
K/HSaD08mtSzzwl59BwLG+1jIVvzMVNFHrsxBHwemx//ynAZ4Q2n08TI7eHR
0Yk7zcQJM9QbTtxa4nrOaThHIS5GadBSgadO1EBXOcWSsBBJzjNwdQED2rBh
v/a4vD3JskuIji6joUMq4HD+EFouH/YUtO0JZnrMkT01f4hA9AW4h79Sx+DF
R42HPAq3Y8c1qJE8p1MXD4DpFhDIxAUjwOkwii9rxQeFl8jEigLbwtYi4Agu
AWmEpLatfxUFJVXo6SmWvVHWh3Zv48I9GSg+FGZ2wyX85DQO6KsAjxKhAFN+
pnbMwNZPyP67YF1f6Tih3pwzCoDwFIny7Ka4xB7JGXRGOLfa3bUvMR6A5QNe
Sqw29/yKM784wzf69RKPTqv/+2GhwY2P0chscWGGdUDeZn6+BNWXwAIejvf8
BjRtzIkQCssln2ZGMVvoUqNuZmx6QzemHXTgY82GsDQKpzS8YJBhbY1C5G76
BGIrbijlWJpDElKAoNqe2U09CcG2AcsoGRZW6gPV+KwbxSuq8F42e7tRvhKl
x7y8AjcWmNL0VYCSmgAgCgbE6160aOSlonFAvYjMzkDt5SS+uMCKMcy7d+DF
pINMMqZJQNOgh6d60jCpQKJbo6xDIL30WdIViXTAcusonUUlg69IozO/NOx2
aXwbXdf8QSNhsKIwQ5X+EXPd9aXX8+D4EkyVXhYVFa34Sam2HGVWcCXj5r2s
Jxa9F81RPPXBLhZX8QiN2gmr7lFuKfVRN2hUEBkVH4A3g7ZHcVVBwum0fnlZ
87TBFubotXXBAhw9LeZogOy2RQ1p4G/hkScVlx5Xfz3tPaYzxDLqWmahFdUP
MllytSVgXYYQX9L+Xq3BGhqpWz43tbyj/+Ir4aUepoXOpzH+nntijMotfkw7
VLPVfQHme7EuixLoU86g+6WekV7gOMnK1BVTpEFb5h3HvryTatzGMxXHdDwP
HEgQ1lzSv9Kdz6hHhVcvuPdFB90lQHC1hHx0qSD/iYq/bLR37sxgXNx1KqTW
3JVSYpuOlH+rNFQ3T8R2H4gdqJcyM27q0g6FhX9uTr0aObznmOaMbhtMUPjf
SIRWx8VtZ2W0O9nR2KC+EyutHEjtILoPAyFgzcqnVR65IzG3YN8bm5b5iKfo
rFeow14DskbIb4Jvgne4P6w9dJkyXqIXFhsY44Qkaq6wYy+XIxmIEtCRLjgD
gpQlwk4izLGQzEAAHMYwbWsLpz5QNptFuRQVaz4TzPqpZ481rSloHKgR7uDV
WZeGqw/kjsiWNYS6I5FeBYJnf1oYqB8mpQNzGNBRv+gjPPRIIZ6u7MzJxpzZ
TxpcR0nSp2KWbbxHxdUGC6vbnafasre9taPiyCNfdYS6kCgTn1U4ypC6uTY9
xfeyeL1wTT+cjs7G7tmAcmLjuvJY1XOIfpkzDuFjCbnDqOX6KS6kMSUcTxqC
jTM+oJOfbsKmahTmbuhnoy+aC/UjHHMigQXU6OqDpqbuOOtvj+zjSszoSkIb
49wxvcE+u8DKMdnSlHc3rhj4bdnH8Tj6h7WPqjJLswUW/UqFsew2SrbjI6sg
18rcLNESL7sLevT+5ERo++bDy5N3746As7H2Oy4WVKySplmF2oEPlg/wJgex
YruD3S+7sMWwnBRjYPCY0alb8FuT5ga4mbgwR9qZhKPDMZ6ipmoYnJ1B53du
AebIWRthDgkY37N4VkuiToPDa7zM+svRxqv9/zIcCCWbItbBx25u4ZelOdoi
pDOXJSm+LImtp5Hqxh0Vd161JDzWlOh6bdw6HvTMHGE0AcAjTirVWauFJ7qo
ie4iYWpLIR1LcTb5DdF8FQ3VxujtB3OJ0BloNIP/Ojfenwwm38W8156xU9mo
Tw+MRHbKHesXe/hJTkp08KBwXK/Lp2vqc9AcSRyuamdGqATEKBrf40BWQTPF
CX7Pj6Cjg6D8Sz8iHYHo0wrfUhKOT8mKw/Hy5c7ecPjyaKDe0PVdXB2WZnLf
ELoEUksiqXMAOZFapYXpwS0KSdyRRpwAeCy57iWv3cnU7/GOW/5N/dyMwRZp
38Ch6IcX59au4r1C202ruyEpDW5uMpFcNbaZl1uBPfzrNk6udFJBbDbJi8uY
L6PakPM/B892EOL3eNCoqEL0eXtSR4rHZb0toiQxewp1902WK4lhdqXIwZCK
z6YlvAUvJm+q1OmLvw4JFchww+3tXwz1f23h49/z8rm3sIB6nw3B4d7ZN5si
8OzPZIFxqOPxB+GpX4d8eSEA85c/KRinhiE5HTx2flHR9BIm5roUujzQtto/
ePqIGIwqoflaJrm7h/0A5DQWa9xZEjYr1O7e4IBawZcnzHP2kiP2ydCvtNl4
JhPz7CA48qPsZRPoqqjofgh7ChqhqhUomYy2DPyHpPwTuGqzP1yUf3JnG5kZ
AGKn8PbbRrfmkmyxGu+MA5xFsVyxTs3lRs2tDS9qOuj2CKOulf6ZIudux/w6
EjfuPIi4Xm48Zv/nSo63UBEc33/4v8iUwQN3CRjeOhZPZe+poDSNbBuBiIPQ
AWxyRk7qmUOzDS5Q0K7dAoS8KkwAkV5FZmnWiDX2Q1Cc8YqgKKSd3NrdEi4C
kcb+RpWL7LScLsidY4jhqXX4kzzS05Ucqef9DNmuxNfiGvQURKTYDwG6ivFi
OLLHkb6KCqrkRtbnSyYw7BkBa9rABqxnnhbNK8jue1J1Fw/FJuJNLJ03gSXk
5gwkHt/U4HPQ4cLR279/MMv3XLTaACQ7dCiAhEZ3Xjtlj6RqFNZ42nU9IJ89
sBv72969GJrJJx6PXFlg8UnJFViGLkvcR8nlwgA+w8qIs4USPViwy7W4qxyp
ut1c9UiRD5cScEm+wFXgLU6msNPEc2yaxKmzd3Ngya3haeAKvJcP6Ww8T0Yq
Uj112/xeSYZc0anIfwPUXkQpHTyf4lW5CyxKpasRmmETTykXr2nDWOAtxKk5
sYLX0PIpkrhsnw2ZAiYy/0xrmS3x7sssr1/QhHdXjt6OWrJcv7jJHR4HFNAN
CiI5fPgf73aI06l/d4AR7YFSNbVwAcxDvAWq3xWAwA+2KyjoVaK9Dscvzl+q
2pYNmcZTY0/O0Z4YaATu2uF/eUnqk44K1LuCKXq+xYUx53h7JHj6JVBlQkcW
ZDEb9+6i/oYWDO8orCYWRbRLwgP5FzWC2TjHZPiL9CrOs3QhVf3Z6YstNbZ3
0WzYxQ3MpStNn0vuc+VMpDW0cWHVKlhpSf+wZpVxWBKE3U0ic52P6ab2jNY/
a+b6tQ6j0JbFEJKC4A3eTYNp4MvCSiKqfkIhKL7v8xjUyKHOl3hxLtdgvSgu
M3UU/3YpNRgpkyzLYTy6Zzpaqh/xsraeOltFWBUC/PhjlM2ZTd8VIcjlDzoP
Y91/k+XhHLOosqsdZn2+69qaNr74u/Pyt/4Op7XjnFtR7Q/dACmlRRNdxGZd
nhRiDIeJTYxTzTaAHYMq1ZZ4TWom14ZwX3zJCyYlmmQX5Fju7GKTnT2kB/79
ozryQ461iVDaTOIRdmiE3YC71450oFDTqSIMnDHNA9ZU7uXkhXK10B/Vi8US
Fk83o3lJNm92YoqGg1ODSAaqllO+wcQlO8OQbmW7SFaNNp1+MOaCucRAWrsH
XjqPHFUsZDLwS/xGpzT4llqOV/KcvBMfUzuCKSETUdDdIH7HHfH7fOEwHjqB
MV2timBJvDlTZwSuvy05qgWahUtio9qyPurus73B7sHTwe5gb2fn1+H+s4P9
bXD5tsOcjwDq5naTYMZZM+NnedeNes5VKut1j9CWSFO/VkqSiDRHo/oulBuq
bTSH3iivzsQhNIdHVJjE8SWWeRWNOq+n+7dtocrnAZvyzf0tU/q2v3N3HywN
LDZ3D2wn+Ox0fF7C53Bn9HRn9/ApdDOtd5+p749GT26dokrx3vBouvn46f7+
rp1oZ3Q3dLbr7o7rd49V2X6u2/5TtXd0RzdGxmPB4J9DTYzVILBQ8S9cS2eK
+o5sUZ9XnvfL/OFduHzYU4SWntrd6Sn4w+DOH94xu6nlO/fyBMB2/88zX41n
9p+B4Tm4Y0KDjIPdp3aytZRjKjUYZ/pVGecWvpHZDeMEwf8ASeEs3U9kAAA=

-->

</rfc>

