<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-piraux-tcp-ao-tls-02" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="Opp-TCP-AO">Opportunistic TCP-AO with TLS</title>
    <seriesInfo name="Internet-Draft" value="draft-piraux-tcp-ao-tls-02"/>
    <author initials="M." surname="Piraux" fullname="Maxime Piraux">
      <organization>UCLouvain &amp; WELRI</organization>
      <address>
        <email>maxime.piraux@uclouvain.be</email>
      </address>
    </author>
    <author initials="O." surname="Bonaventure" fullname="Olivier Bonaventure">
      <organization>UCLouvain &amp; WELRI</organization>
      <address>
        <email>olivier.bonaventure@uclouvain.be</email>
      </address>
    </author>
    <author initials="T." surname="Wirtgen" fullname="Thomas Wirtgen">
      <organization>UCLouvain &amp; WELRI</organization>
      <address>
        <email>thomas.wirtgen@uclouvain.be</email>
      </address>
    </author>
    <date year="2024" month="October" day="21"/>
    <area>Transport</area>
    <workgroup>TCPM</workgroup>
    <keyword>tcp</keyword>
    <keyword>tls</keyword>
    <keyword>tcp-ao</keyword>
    <abstract>
      <?line 60?>

<t>This document specifies an opportunistic mode for TCP-AO. In this mode, the TCP
connection starts with a well-known authentication key which is later replaced
by a secure key derived from the TLS handshake.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://obonaventure.github.io/draft-tcp-ao-tls/draft-piraux-tcp-ao-tls.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-piraux-tcp-ao-tls/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        TCPM Working Group mailing list (<eref target="mailto:tcpm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tcpm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tcpm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/obonaventure/draft-tcp-ao-tls"/>.</t>
    </note>
  </front>
  <middle>
    <?line 67?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The TCP Authentication Option (TCP-AO) <xref target="RFC5925"/> provides integrity
protection for long-lived TCP connections. It assumes that the communicating
hosts share a Master Key Tuple (MKT). This MKT is used to derive traffic
keys to authenticate the TCP packets exchanged by the two hosts.
TCP-AO supports different authentication algorithms <xref target="RFC5926"/>.</t>
      <t>TCP-AO protects the integrity of all the packets exchanged during a TCP
connection, including the SYNs. Such a protection is important for some specific
services, but many applications would benefit from the integrity protection
offered by TCP-AO, notably against RST attacks that can happen later in the
connection. Unfortunately, from a deployment
viewpoint, for many applications that use long-lived TCP connections,
having an existing MKT on the client and the server before establishing a
connection is a severe limitation.</t>
      <t>This document proposes a way to derive a MKT from the TLS secure handshake <xref target="RFC8446"/>.
Before the TLS handshake completes, this document defines default keys which
offer a limited protection to the first TCP packets of the connection.
These default keys are then replaced by secure keys to protect the integrity of
subsequent packets past the TLS handshake. This
prevents packet injection attacks that could result in the failure of the TLS
connection.</t>
      <t>This mechanism can be used to authenticate the TCP transport of BGP sessions when TLS
is used to secure their BGP messages as discussed in <xref target="CONEXT24"/>.</t>
      <t>This document is organised as follows. We provide a brief overview of
Opportunistic TCP-AO in section <xref target="overview"/>. Then section <xref target="format"/> discusses the
required changes to TCP-AO and TLS.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="notational-conventions">
        <name>Notational conventions</name>
        <t>This document uses network byte order (that is, big endian) values.
Fields are placed starting from the high-order bits of each byte.</t>
      </section>
    </section>
    <section anchor="overview">
      <name>An overview of Opportunistic TCP-AO</name>
      <t>In a nutshell, an opportunistic TCP-AO connection starts like a TCP-AO
connection, i.e. the SYNs and all subsequent packets are authenticated,
but using a MKT with a default key specified in this document.
Then, during the TLS handshake,
both endpoints announce the parameters they will use for their MKT. When the
TLS handshake completes, they can use their MKT to protect the TCP packets they
send and use their peer MKT to verify the TCP packets they receive.
Thus, the beginning of the connection is not protected against
packet modifications and packet injection attacks. The real protection only
starts once the TLS handshake finishes.</t>
      <t>Figure <xref target="fig-overview-handshake"/> illustrates the establishment of an
opportunistic TCP-AO connection. The client sends a SYN packet using
the default MKT defined in this document. The TCP-AO option in the SYN
packet indicates the use of this default MKT. The server validates the TCP-AO
option and replies with an integrity protected SYN+ACK.
The client confirms the establishment
of the TCP-AO connection with an ACK and sends a TLS ClientHello containing
the AO Extension defined in this document. This
extension specifies the authentication algorithms that the client will use when
sending TCP packets on the connection and whether TCP options will be protected.
At this point the server can derive the TLS keys and the TCP-AO keys to use
for validating clients packet.
The server replies with TLS ServerHello and TLS EncryptedExtensions
messages that are sent in packets using the default TCP-AO MKT.
To finish the setting up of TCP-AO, the server includes the AO Extension in
in the sent EncryptedExtensions to announce the parameters it will use to
protect the packets it will send.
It then installs the new key in its TCP-AO MKT.
Upon reception of these messages, the client can derive the TLS and
TCP-AO keys. It installs the TCP-AO keys in its MKT and sends the Finished
message protected with the new MKT. All the packets exchanged after the
Finished are protected using the MKT derived from the secure TLS handshake.</t>
      <figure anchor="fig-overview-handshake">
        <name>Starting an opportunistic TCP-AO connection with TLS. The messages between brackets are authenticated using the TCP-AO MKT derived from the TLS handshake.</name>
        <artwork><![CDATA[
Client                                   Server
 |            SYN (KeyID=0, RNextID=0)       |
 |------------------------------------------>|
 |          SYN+ACK (KeyID=0, RNextID=0)     |
 |<------------------------------------------|
 |       ACK, TLS ClientHello + AO           |
 |          (KeyID=0, RNextID=0)             |
 |------------------------------------------>|
 |  TLS ServerHello, TLS Enc.Extensions + AO |
 |          (KeyID=0, RNextID=x)             |
 |<------------------------------------------|
 |              [TLS Finished]               |
 |           (KeyID=x, RNextID=y)            |
 |------------------------------------------>|
 |              [TLS records]                |
 |           (KeyID=y, RNextID=x)            |
 |<----------------------------------------->|
]]></artwork>
      </figure>
    </section>
    <section anchor="format">
      <name>Opportunistic TCP-AO</name>
      <section anchor="the-tcpao-tls-extension">
        <name>The TCPAO TLS Extension</name>
        <t>This document specifies one TLS extension to support the opportunistic
utilization of TCP-AO with keys derived from the TLS secure handshake.
The extension is used by endpoints to specify the parameters of the MKT
they will use to protect the TCP packets they send.</t>
        <artwork><![CDATA[
enum {
    tcp_ao(TBD),
    (65535)
} ExtensionType;
]]></artwork>
        <t>The format for the "tcp_ao" extension is defined by:</t>
        <artwork><![CDATA[
   enum {
      tcp_option_protection_disabled(0),
      tcp_option_protection_enabled(1),
      (255)
   } TCPAOOptionProt;

   enum {
      HMAC-SHA-1-96(0),
      AES-128-CMAC-96(1),
      (255)
   } TCPAOAuth;

   enum {
      KDF_HMAC_SHA1(0),
      KDF_AES_128_CMAC(1),
      (255)
   } TCPAOKDF;

   struct {
      TCPAOOptionProt prot;
      TCPAOAuth auth;
      TCPAOKDF kdf;
   } TCPAO;
]]></artwork>
        <t>The TCPAOOptionProt indicates whether the endpoint will protect the integrity
of TCP options or not. The TCPAOAuth specifies
the authentication algorithm defined in <xref target="RFC5926"/> that will be
used to protect the packets. The TCPAOKDF specifies the key derivation
function defined in <xref target="RFC5926"/> and that the endpoint will use to derive its
keys.</t>
      </section>
      <section anchor="the-initial-mkt">
        <name>The initial MKT</name>
        <t>To support the establishment of opportunistics TCP-AO connections, the
client and the server must be configured with a default MKT. This default
MKT is used to authenticate the packets until the derivation of the secure
MKT from the TLS keying material. This document defines the following default MKT:</t>
        <ul spacing="normal">
          <li>
            <t>TCP connection identifier: selected by the TCP stack.</t>
          </li>
          <li>
            <t>TCP option flag. The default MKT assumes that TCP options are not included
in the MAC calculation.</t>
          </li>
          <li>
            <t>The current values for the SendID and RecvID are set to 0.</t>
          </li>
          <li>
            <t>The Master secret is set to 0x1cebb1ff.</t>
          </li>
          <li>
            <t>The default key derivation function is KDF_HMAC_SHA1.</t>
          </li>
          <li>
            <t>The default message authentication code is HMAC-SHA-1-96.</t>
          </li>
        </ul>
        <t>Given that the TCP-AO KeyID is a local field and has no global meaning,
hosts have no guarantee that a KeyID of 0 will be unequivocally recognised as
designating the default MKT specified in this document.
<xref section="7.5.1" sectionFormat="of" target="RFC5925"/> indicates that hosts receiving SYN segments with
TCP-AO enabled and no matching MKT should remove the option and accept them.
A client initiating a TCP connection in the opportunistic mode of TCP-AO
<bcp14>MUST</bcp14> check that the server accepted the use of TCP-AO in this mode by replying
using the default MKT before deriving a secure MKT as described in this
document.</t>
      </section>
      <section anchor="derivation-of-the-secure-tcp-ao-mkt">
        <name>Derivation of the secure TCP AO MKT</name>
        <t>The Master key for the MKT to protect the TCP packets after the transmission
of the Finished messages are derived from the Exporter Master Secret using
Keying Material Exporters <xref target="RFC5705"/>:</t>
        <artwork><![CDATA[
struct {
   TCPAO ao;
   uint8 key_id;
} TCPAOKeyExporterContext;
]]></artwork>
        <artwork><![CDATA[
TLS-Exporter("tcp-ao", TCPAOKeyExporterContext, 32)
   = tcp_ao_secret
]]></artwork>
        <t>The TLS-Exporter function receives the label "tcp-ao", with the parameters of
the MKT and the KeyID as context as defined in the TCPAO structure within
<xref target="the-tcpao-tls-extension"/>. It generates a 32-byte secret.</t>
        <t>The client and server can decide the value of the KeyID independently and
announce it in the AO TCP Option as defined in <xref target="RFC5925"/>.
The KeyID <bcp14>MUST</bcp14> be different than the default KeyID of 0.</t>
        <t>The traffic keys used by the client and the server can then be derived
from this secret using the procedures defined in <xref target="RFC5925"/> and
<xref target="RFC5926"/>.</t>
        <t>After the traffic keys are installed, the client and server stop using the
initial MKT defined in <xref target="the-initial-mkt"/>.</t>
      </section>
      <section anchor="current-limitations">
        <name>Current limitations</name>
        <t>This version of the document does not specifiy how to do key updates for MKTs.
It is left for later versions of this document to fill this gap.
One way would be to derive a new tcp_ao_secret from the previous tcp_ao_secret
and use a new KeyID. However, this could expose the key update
event to on-path attackers. Further guidance is required on the severity of
this issue and how it could be mitigated.</t>
        <t>Later versions of this document will also specify the interactions between this
mode of enabling TCP-AO and other TLS mechanisms, such as using pre-shared keys
and 0-RTT data, as well as other TCP extensions, such as TCP Fast Open.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TCP-AO provides a protection against the injection of TCP RST. This can impact
legitimate connectionless resets, e.g. when an endpoint loses the required state
to send TCP-AO segments. <xref section="7.7" sectionFormat="of" target="RFC5925"/> provides recommendations to
mitigate this effect.</t>
      <t>Using TCP-AO with TLS can also inhibits the triggering of the "bad_record_mac"
alert that abruptly closes the TLS session when a decryption error occurs. For
instance, injected packets will fail the TCP-AO authentication and be ignored
by the receiver instead. This also prevents sessionless resets at the TLS level,
and similar recommendations to <xref section="7.7" sectionFormat="of" target="RFC5925"/> can apply.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to create a new "Opportunistic TCP-AO with TLS" heading for
the new registries defined in this section. New registrations under this heading
follow the "Specification Required" policy of <xref target="RFC8126"/>.</t>
      <t>IANA is requested to add the following entries to the existing "TLS
ExtensionType Values" registry.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Extension Name</th>
            <th align="left">TLS 1.3</th>
            <th align="left">Recommended</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD</td>
            <td align="left">tcp_ao</td>
            <td align="left">CH, EE</td>
            <td align="left">N</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
      <t>Note that "Recommended" is set to N as this extension is intended for
uses as described in this document.</t>
      <t>IANA is requested to create a new registry "Authentication Algorithms" under
the "Opportunistic TCP-AO with TLS" heading.</t>
      <t>The registry governs an 8-bit space. Entries in this registry must include a
"Algorithm name" field containing a short mnemonic for the algorithm. Its
initial content is presented in <xref target="the-tcpao-tls-extension"/> in
the TCPAOAuth enum. The registry has a "Reference" column. It is set to
<xref target="RFC5926"/> for the two initial algorithms.</t>
      <t>IANA is requested to create a new registry "Key Derivation Functions" under
the "Opportunistic TCP-AO with TLS" heading.</t>
      <t>The registry governs an 8-bit space. Entries in this registry must include a
"Key Derivation Function name" field containing a short mnemonic for the function. Its
initial content is presented in <xref target="the-tcpao-tls-extension"/> in
the TCPAOKDF enum. The registry has a "Reference" column. It is set to
<xref target="RFC5926"/> for the two initial functions.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank Dimitri Safonov for the TCP-AO implementation in Linux.
The authors thank Michael Tüxen, Yoshifumi Nishida and Alessandro Ghedini for
their questions and comments on the document during the TCPM meeting at IETF 118.</t>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change log</name>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5925">
          <front>
            <title>The TCP Authentication Option</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document specifies the TCP Authentication Option (TCP-AO), which obsoletes the TCP MD5 Signature option of RFC 2385 (TCP MD5). TCP-AO specifies the use of stronger Message Authentication Codes (MACs), protects against replays even for long-lived TCP connections, and provides more details on the association of security with TCP connections than TCP MD5. TCP-AO is compatible with either a static Master Key Tuple (MKT) configuration or an external, out-of-band MKT management mechanism; in either case, TCP-AO also protects connections when using the same MKT across repeated instances of a connection, using traffic keys derived from the MKT, and coordinates MKT changes between endpoints. The result is intended to support current infrastructure uses of TCP MD5, such as to protect long-lived connections (as used, e.g., in BGP and LDP), and to support a larger set of MACs with minimal other system and operational changes. TCP-AO uses a different option identifier than TCP MD5, even though TCP-AO and TCP MD5 are never permitted to be used simultaneously. TCP-AO supports IPv6, and is fully compatible with the proposed requirements for the replacement of TCP MD5. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5925"/>
          <seriesInfo name="DOI" value="10.17487/RFC5925"/>
        </reference>
        <reference anchor="RFC5705">
          <front>
            <title>Keying Material Exporters for Transport Layer Security (TLS)</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>A number of protocols wish to leverage Transport Layer Security (TLS) to perform key establishment but then use some of the keying material for their own purposes. This document describes a general mechanism for allowing that. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5705"/>
          <seriesInfo name="DOI" value="10.17487/RFC5705"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC5926">
          <front>
            <title>Cryptographic Algorithms for the TCP Authentication Option (TCP-AO)</title>
            <author fullname="G. Lebovitz" initials="G." surname="Lebovitz"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The TCP Authentication Option (TCP-AO) relies on security algorithms to provide authentication between two end-points. There are many such algorithms available, and two TCP-AO systems cannot interoperate unless they are using the same algorithms. This document specifies the algorithms and attributes that can be used in TCP-AO's current manual keying mechanism and provides the interface for future message authentication codes (MACs). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5926"/>
          <seriesInfo name="DOI" value="10.17487/RFC5926"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CONEXT24">
          <front>
            <title>The Multiple Benefits of a Secure Transport for BGP</title>
            <author initials="T." surname="Wirtgen">
              <organization/>
            </author>
            <author initials="N." surname="Rybowski">
              <organization/>
            </author>
            <author initials="C." surname="Pelsser">
              <organization/>
            </author>
            <author initials="O." surname="Bonaventure">
              <organization/>
            </author>
            <date year="2024" month="December"/>
          </front>
          <seriesInfo name="Proceedings of the 20th International Conference on emerging Networking EXperiments and Technologies (CoNEXT'24)" value=""/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
fuv9HeXeGfzxjxmgTI92Xv3xZzKhR/rUVzGFTFpzWveOmkwzl1wSQARnhVUB
+R4zLjiKjm6uUZ06kz/RVyarLdKCN85mqUBZwDDO6ygGNIC9cPPFSIhNQ25s
DWI0bTImI9/Lu/6mt/rb3aPGyZRCcml0XlflAmnjcDMbDWs2s83MXVpJI6iC
72USYyBlTCLYzMiYtqAsp2IdTEuHitKGupQMhUJVyGk7YN+kzumGg3BoAAMh
x9nAb5D3IAfBc3gn3nJfUxEguVKBsg1+xbACt3DgmqI8JQECmOAIEEeoRMDz
QEDEcsJuWt2sXI9B3SjHzldaEhX+a5etrG3WQmdudrt1KaJMYqn6hwBqYQAo
gZImJzlshFCCb6RSkRvCEEmoVIhoqDQonTMtWN4X6hiksT0cohPNCVZUsBMf
5dsXF2EvbA52D8OfU0wCwLv5KJrmqJkKwIImaiqkKoH8NkFid6N8F+niw2Yr
jIa0iyRNyREMNJ6MjU4R8WhrJHZJZrZYmg4VDm3ipaoJIR40VSOtlO1amCat
sipc2d1DSIUEEFjg0mZF8K1An9RA6Q0VjeIW+WbiDF7BwB/29t+xM8QDQw5I
rZZbpKdiKrLh53EP0OK9o9BIj/tM9i0gw9OSCtYTxQcihzeVzSkHeVB+yKRs
M7Gth4nG/XVQW9zJwRonpSDGHkQW30sg83Xrp8NgOka5xg76K4XW1LaiHKu9
SvhmvOhm6uTdsS4Mti2JaEjogzhj7gkOFcFI0C/xKAeISaRoKxDvaZlIX/C4
iDvkNPowT4rbFbhspF2qJpljMRG8lpyt5Y00BFu7Zh44JUtUEx/8Mhy1Yk7r
FdltrME6QpCSMeisp3eXq+AOzMAWXjmfvQd+XUevlVdd0IzniFNI42N1VEn2
TxiGWCMM5QiBFC/ACIXK7jk/rHzOmCmeJS6AzaL8hl0T26Jq6EB1NMzth97e
XfWH/QlOWjeiSW8EAtOoto4Ps+bjIRgk9u6t6M2MCl0KSJGg5BANsVbnAmlr
jZ1QEqz3d/71/h8l7q+//COGq/Sn3iBQ9/E7e3t08NOzoT4/BQrQxyfh60+Y
PvrdPz9/6lEP4Hc/fZr+4+8n36EOssMN8PsD2X3702fmgUP+D466BgjDiAbj
jnMxW19i5maTmf+eZMLPX4iRaIN/XbOEtemBm5uWm9sn69O/WjIbzMDFqZ5b
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
FGq+XRxK/RfTbf88bzYAAA==

-->

</rfc>
