<?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.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusdtls-bis-05" category="std" consensus="true" submissionType="IETF" obsoletes="6614, 7360" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="RADIUS over (D)TLS">(Datagram) Transport Layer Security ((D)TLS) Encryption for RADIUS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-radext-radiusdtls-bis-05"/>
    <author initials="J.-F." surname="Rieckers" fullname="Jan-Frederik Rieckers">
      <organization abbrev="DFN">Deutsches Forschungsnetz | German National Research and Education Network</organization>
      <address>
        <postal>
          <street>Alexanderplatz 1</street>
          <city>Berlin</city>
          <code>10178</code>
          <country>Germany</country>
        </postal>
        <email>rieckers@dfn.de</email>
        <uri>www.dfn.de</uri>
      </address>
    </author>
    <author initials="S." surname="Winter" fullname="Stefan Winter">
      <organization abbrev="RESTENA">Fondation Restena | Restena Foundation</organization>
      <address>
        <postal>
          <street>2, avenue de l'Université</street>
          <city>Esch-sur-Alzette</city>
          <code>4365</code>
          <country>Luxembourg</country>
        </postal>
        <email>stefan.winter@restena.lu</email>
        <uri>www.restena.lu</uri>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <area>Security</area>
    <workgroup>RADIUS EXTensions</workgroup>
    <keyword>RADIUS</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 48?>

<t>This document specifies a transport profile for RADIUS using Transport Layer Security (TLS) over TCP or Datagram Transport Layer Security (DTLS) over UDP as the transport protocol.
This enables encrypting the RADIUS traffic as well as dynamic trust relationships between RADIUS servers.
The specification obsoletes the experimental specifications in RFC 6614 (RADIUS/TLS) and RFC 7360 (RADIUS/DTLS) and combines them in this specification.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-radext-radiusdtls-bis/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        RADIUS EXTensions Working Group mailing list (<eref target="mailto:radext@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/radext/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/radext/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 54?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The RADIUS protocol is a widely deployed authentication, authorization and accounting solution.
It is defined in <xref target="RFC2865"/>, <xref target="RFC2866"/>, <xref target="RFC5176"/> and others.
The deployment experience has shown several shortcomings, such as its dependency on the unreliable transport protocol UDP and the lack of confidentiality for large parts of its packet payload.
Additionally the confidentiality and integrity mechanisms rely on the MD5 algorithm, which has been proven to be insecure.
Although RADIUS/(D)TLS does not remove the MD5-based mechanisms, it adds confidentiality and integrity protection through the TLS layer.
For an updated version of RADIUS/(D)TLS without need for MD5 see <xref target="I-D.ietf-radext-radiusv11"/></t>
      <section anchor="purpose-of-radiusdtls">
        <name>Purpose of RADIUS/(D)TLS</name>
        <t>The main focus of RADIUS/TLS and RADIUS/DTLS is to provide means to secure communication between RADIUS peers using TLS or DTLS.
The most important use of this specification lies in roaming environments where RADIUS packets need to be sent across insecure or untrusted networks.
An example for a worldwide roaming environment that uses RADIUS over TLS to secure communication is eduroam as described in <xref target="RFC7593"/></t>
      </section>
      <section anchor="changes-from-rfc6614-radiustls-and-rfc7360-radiusdtls">
        <name>Changes from RFC6614 (RADIUS/TLS) and RFC7360 (RADIUS/DTLS)</name>
        <ul spacing="normal">
          <li>
            <t><xref target="RFC6614"/> referenced <xref target="RFC6613"/> for TCP-related specification, RFC6613 on the other hand had some specification for RADIUS/TLS.
These specifications have been merged into this document.</t>
          </li>
          <li>
            <t>RFC6614 marked TLSv1.1 or later as mandatory, this specification requires TLSv1.2 as minimum and recommends usage of TLSv1.3.</t>
          </li>
          <li>
            <t>RFC6614 allowed usage of TLS compression, this document forbids it.</t>
          </li>
          <li>
            <t>RFC6614 only requires support for the trust model "certificates with PKIX" (<xref section="2.3" sectionFormat="comma" target="RFC6614"/>). This document changes this. For servers, TLS-X.509-PKIX (<xref target="tlsx509pkix"/>, equivalent to "certificates with PKIX" in RFC6614) and TLS-PSK (<xref target="tlspsk"/>) is now mandated and clients must implement at least one of the two.</t>
          </li>
          <li>
            <t>The mandatory-to-implement cipher suites are not referenced directly, this is replaced by a pointer to the TLS BCP.</t>
          </li>
          <li>
            <t>The specification regarding steps for certificate verification has been updated.</t>
          </li>
          <li>
            <t><xref target="RFC6613"/> mandated the use of Status-Server as watchdog algorithm, <xref target="RFC7360"/> only recommended it. This specification mandates the use of Status-Server for both RADIUS/TLS and RADIUS/DTLS.</t>
          </li>
          <li>
            <t><xref target="RFC6613"/> only included limited text around retransmissions, this document now gives more guidance on how to handle retransmissions, especially across different transports.</t>
          </li>
          <li>
            <t>The rules for verifying the peer certificate have been updated to follow guidance provided in <xref target="RFC9525"/>. Using the Common Name RDN for validation is now forbidden.</t>
          </li>
          <li>
            <t>The response to unwanted packets has changed. Nodes should now reply with a Protocol-Error packet that is connection-specific and should not be proxied.</t>
          </li>
        </ul>
        <t>The rationales behind some of these changes are outlined in <xref target="design_decisions"/>.</t>
      </section>
    </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?>

<t>Within this document we will use the following terms:</t>
      <dl>
        <dt>RADIUS/(D)TLS node:</dt>
        <dd>
          <t>a RADIUS-over-(D)TLS client or server</t>
        </dd>
        <dt>RADIUS/(D)TLS client:</dt>
        <dd>
          <t>a RADIUS-over-(D)TLS instance that initiates a new connection</t>
        </dd>
        <dt>RADIUS/(D)TLS server:</dt>
        <dd>
          <t>a RADIUS-over-(D)TLS instance that listens on a RADIUS-over-(D)TLS port and accepts new connections</t>
        </dd>
        <dt>RADIUS/UDP:</dt>
        <dd>
          <t>a classic RADIUS transport over UDP as defined in <xref target="RFC2865"/></t>
        </dd>
      </dl>
      <t>Whenever "(D)TLS" or "RADIUS/(D)TLS" is mentioned, the specification applies for both RADIUS/TLS and RADIUS/DTLS.
Where "TLS" or "RADIUS/TLS" is mentioned, the specification only applies to RADIUS/TLS, where "DTLS" or "RADIUS/DTLS" is mentioned it only applies to RADIUS/DTLS.</t>
      <t>Server implementations <bcp14>MUST</bcp14> support both RADIUS/TLS and RADIUS/DTLS.
Client implementations <bcp14>SHOULD</bcp14> implement both, but <bcp14>MUST</bcp14> implement at least one of RADIUS/TLS or RADIUS/DTLS.</t>
    </section>
    <section anchor="changes-to-radius">
      <name>Changes to RADIUS</name>
      <t>This section discusses the needed changes to the RADIUS packet format (<xref target="pktformat"/>), port usage and shared secrets (<xref target="portusage"/>).</t>
      <section anchor="pktformat">
        <name>Packet format</name>
        <t>The RADIUS packet format is unchanged from <xref target="RFC2865"/>, <xref target="RFC2866"/> and <xref target="RFC5176"/>.
Specifically, all of the following portions of RADIUS <bcp14>MUST</bcp14> be unchanged when using RADIUS/(D)TLS:</t>
        <ul spacing="normal">
          <li>
            <t>Packet format</t>
          </li>
          <li>
            <t>Permitted codes</t>
          </li>
          <li>
            <t>Request Authenticator calculation</t>
          </li>
          <li>
            <t>Response Authenticator calculation</t>
          </li>
          <li>
            <t>Minimum packet length</t>
          </li>
          <li>
            <t>Maximum packet length</t>
          </li>
          <li>
            <t>Attribute format</t>
          </li>
          <li>
            <t>Vendor-Specific Attribute (VSA) format</t>
          </li>
          <li>
            <t>Permitted data types</t>
          </li>
          <li>
            <t>Calculation of dynamic attributes such as CHAP-Challenge, or Message-Authenticator</t>
          </li>
          <li>
            <t>Calculation of "encrypted" attributes such as Tunnel-Password.</t>
          </li>
        </ul>
        <t>The use of (D)TLS transport does not change the calculation of security-related fields (such as the Response-Authenticator) in RADIUS <xref target="RFC2865"/> or RADIUS Dynamic Authorization <xref target="RFC5176"/>.
Calculation of attributes such as User-Password <xref target="RFC2865"/> or Message-Authenticator <xref target="RFC3579"/> also does not change.</t>
        <t>The changes to RADIUS implementations required to implement this specification are largely limited to the portions that send and receive packets on the network and the establishment of the (D)TLS connection.</t>
        <t>The requirement that RADIUS remain largely unchanged ensures the simplest possible implementation and widest interoperability of the specification.
This includes the usage of the outdated security mechanisms in RADIUS that are based on shared secrets and MD5.
This is not considered a security issue, since integrity and confidentiality are provided by the (D)TLS layer. See <xref target="security_considerations"/> of this document or <xref target="I-D.ietf-radext-radiusv11"/> for more details.</t>
        <t>We note that for RADIUS/DTLS the DTLS encapsulation of RADIUS means that RADIUS packets have an additional overhead due to DTLS.
This is discussed further in <xref target="dtls_spec"/>.</t>
      </section>
      <section anchor="portusage">
        <name>Default ports and shared secrets</name>
        <t>IANA has reserved ports for RADIUS/TLS and RADIUS/DTLS.
Since authentication of peers, confidentiality, and integrity protection is achieved on the (D)TLS layer, the shared secret for the RADIUS packets is set to a static string, depending on the method.
The calculation of security-related fields such as Response-Authenticator, Message-Authenticator or encrypted attributes <bcp14>MUST</bcp14> be performed using this shared secret.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Protocol</th>
              <th align="left">Port</th>
              <th align="left">Shared Secret</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">RADIUS/TLS</td>
              <td align="left">2083/tcp</td>
              <td align="left">"radsec"</td>
            </tr>
            <tr>
              <td align="left">RADIUS/DTLS</td>
              <td align="left">2083/udp</td>
              <td align="left">"radius/dtls"</td>
            </tr>
          </tbody>
        </table>
        <t>RADIUS/(D)TLS does not use separate ports for authentication, accounting and dynamic authorization changes.
The source port is arbitrary.
For considerations regarding the multi-purpose use of one port for authentication and accounting see <xref target="radius_datagrams"/>.</t>
        <t>RADIUS/TLS servers <bcp14>MUST</bcp14> immediately start the TLS negotiation when a new connection to the RADIUS/TLS port is opened.
They <bcp14>MUST</bcp14> close the connection and discard any data sent if the connecting client does not start a TLS negotiation or if the TLS negotiation fails at any point.</t>
        <t>RADIUS/DTLS servers <bcp14>MUST</bcp14> silently discard any packet they receive over the RADIUS/DTLS port that is not a new DTLS negotiation or a packet sent over a DTLS session established earlier.</t>
        <t>RADIUS/(D)TLS peers <bcp14>MUST NOT</bcp14> use the old RADIUS/UDP or RADIUS/TCP ports for RADIUS/DTLS or RADIUS/TLS.</t>
      </section>
      <section anchor="detecting-live-servers">
        <name>Detecting Live Servers</name>
        <t>As RADIUS is a "hop-by-hop" protocol, a RADIUS proxy shields the client from any information about downstream servers.
While the client may be able to deduce the operational state of the local server (i.e., proxy), it cannot make any determination about the operational state of the downstream servers.</t>
        <t>Within RADIUS, proxies typically only forward traffic between the NAS and RADIUS servers, and they do not generate their own response.
As a result, when a NAS does not receive a response to a request, this could be the result of packet loss between the NAS and proxy, a problem on the proxy, loss between the RADIUS proxy and server, or a problem with the server.</t>
        <t>The absence of a reply can cause a client to deduce (incorrectly) that the proxy is unavailable.
The client could then fail over to another server or conclude that no "live" servers are available (OKAY state in <xref target="RFC3539"/>, Appendix A).
This situation is made even worse when requests are sent through a proxy to multiple destinations.
Failures in one destination may result in service outages for other destinations, if the client erroneously believes that the proxy is unresponsive.</t>
        <t>RADIUS/(D)TLS implementations <bcp14>MUST</bcp14> utilize the existence of a TCP/DTLS connection along with the application-layer watchdog defined in <xref section="3.4" sectionFormat="comma" target="RFC3539"/> to determine the liveliness of the server.</t>
        <t>RADIUS/(D)TLS clients <bcp14>MUST</bcp14> mark a connection DOWN if one or more of the following conditions are met:</t>
        <ul spacing="normal">
          <li>
            <t>The administrator has marked the connection administrative DOWN.</t>
          </li>
          <li>
            <t>The network stack indicates that the connection is no longer viable.</t>
          </li>
          <li>
            <t>The application-layer watchdog algorithm has marked it DOWN.</t>
          </li>
        </ul>
        <t>RADIUS/(D)TLS clients <bcp14>MUST</bcp14> implement the Status-Server extension as described in <xref target="RFC5997"/> as the application level watchdog to detect the liveliness of the peer in the absence of responses.
Since RADIUS has a limitation of 256 simultaneous "in flight" packets due to the length of the ID field (<xref target="RFC3539"/>, Section 2.4), it is <bcp14>RECOMMENDED</bcp14> that RADIUS/(D)TLS clients reserve ID zero (0) on each session for Status-Server packets.
This value was picked arbitrary, as there is no reason to choose any other value over another for this use.</t>
        <t>For RADIUS/TLS, the peers <bcp14>MAY</bcp14> send TCP keepalives as described in <xref section="3.8.4" sectionFormat="comma" target="RFC9293"/>.
For RADIUS/DTLS connections, the peers <bcp14>MAY</bcp14> send periodic keepalives as defined in <xref target="RFC6520"/>.
This is a way of proactively and rapidly triggering a connection DOWN notification from the network stack.
These liveliness checks are essentially redundant in the presence of an application-layer watchdog, but may provide more rapid notifications of connectivity issues.</t>
      </section>
    </section>
    <section anchor="packet-connection-handling">
      <name>Packet / Connection Handling</name>
      <t>This section defines the behaviour for RADIUS/(D)TLS peers for handling of incoming packets and establishment of a (D)TLS session.</t>
      <section anchor="dtls-requirements">
        <name>(D)TLS requirements</name>
        <t>As defined in <xref target="portusage"/>, RADIUS/(D)TLS clients <bcp14>MUST</bcp14> establish a (D)TLS session immediately upon connecting to a new server.</t>
        <t>RADIUS/(D)TLS has no notion of negotiating (D)TLS in an ongoing communication.
As RADIUS has no provisions for capability signaling, there is also no way for a server to indicate to a client that it should transition to using TLS or DTLS.
Servers and clients need to be preconfigured to use RADIUS/(D)TLS for a given endpoint.
This action has to be taken by the administrators of the two systems.</t>
        <t>Implementations <bcp14>MUST</bcp14> follow the recommendations given in <xref target="RFC9325"/>, especially in regards to recommended cipher suites and TLS session resumption.
Additionally, the following requirements have to be met for the (D)TLS session:</t>
        <ul spacing="normal">
          <li>
            <t>Support for TLS 1.2 <xref target="RFC5248"/> / DTLS 1.2 <xref target="RFC6347"/> is <bcp14>REQUIRED</bcp14>, support for TLS 1.3 <xref target="RFC8446"/> / DTLS 1.3 <xref target="RFC9147"/> or higher is <bcp14>RECOMMENDED</bcp14>.</t>
          </li>
          <li>
            <t>Negotiation of a cipher suite providing for confidentiality as well as integrity protection is <bcp14>REQUIRED</bcp14>.</t>
          </li>
          <li>
            <t>The peers <bcp14>MUST NOT</bcp14> negotiate compression.</t>
          </li>
          <li>
            <t>The session <bcp14>MUST</bcp14> be mutually authenticated (see <xref target="mutual_auth"/>)</t>
          </li>
        </ul>
      </section>
      <section anchor="mutual_auth">
        <name>Mutual authentication</name>
        <t>RADIUS/(D)TLS servers <bcp14>MUST</bcp14> authenticate clients, and RADIUS/(D)TLS clients <bcp14>MUST</bcp14> authenticate the server.
RADIUS is designed to be used by mutually trusted systems.
Allowing anonymous clients would ensure privacy for RADIUS/(D)TLS traffic, but would negate all other security aspects of the protocol, including security aspects of RADIUS itself, due to the fixed shared secret.</t>
        <t>RADIUS/(D)TLS allows for the following different modes of mutual authentication, which will be further specified in this section:
* TLS-X.509-PKIX
* TLS-X.509-FINGERPRINT
* TLS-RAW-PUBLIC-KEY
* TLS-PSK</t>
        <section anchor="tlsx509pkix">
          <name>Authentication using X.509 certificates with PKIX trust model (TLS-X.509-PKIX)</name>
          <t>All RADIUS/(D)TLS server implementations <bcp14>MUST</bcp14> implement this model.
RADIUS/(D)TLS client implementations <bcp14>SHOULD</bcp14> implement this model, but <bcp14>MUST</bcp14> implement either this or TLS-PSK</t>
          <t>If implemented it <bcp14>MUST</bcp14> use the following rules:</t>
          <ul spacing="normal">
            <li>
              <t>Implementations <bcp14>MUST</bcp14> allow the configuration of a trust anchor (i.e. a list of trusted Certificate Authorities (CAs)<xref target="RFC5280"/>) for new TLS sessions. This list <bcp14>SHOULD</bcp14> be application specific and not use a global system trust store.</t>
            </li>
            <li>
              <t>Certificate validation <bcp14>MUST</bcp14> include the verification rules as per <xref target="RFC5280"/>.</t>
            </li>
            <li>
              <t>Implementations <bcp14>SHOULD</bcp14> indicate their trust anchors when opening or accepting TLS sessions.
See <xref target="RFC5246"/>, Section 7.4.4 and <xref target="RFC6066"/>, Section 6 for TLS 1.2 and <xref target="RFC8446"/>, Section 4.2.4 for TLS 1.3.</t>
            </li>
            <li>
              <t>When the configured trust base changes (e.g., removal of a CA from the trust anchor; issuance of a new CRL for a given CA), implementations <bcp14>SHOULD</bcp14> reassess all connected peer's continued validity of the certificate path. This can either be done by caching the peer's certificate for the duration of the connection and re-evaluating the cached certificate or by renegotiating the (D)TLS connection, either directly or by opening a new (D)TLS connection and closing the old one.</t>
            </li>
          </ul>
          <t>RADIUS/(D)TLS clients and server <bcp14>MUST</bcp14> follow <xref target="RFC9525"/> when validating peer identities. Specific details are provided below:</t>
          <ul spacing="normal">
            <li>
              <t>The Common Name RDN <bcp14>MUST NOT</bcp14> be used to identify peers</t>
            </li>
            <li>
              <t>Certificates <bcp14>MAY</bcp14> use wildcards in the identifiers of DNS names and realm names, but only as the complete, left-most label.</t>
            </li>
            <li>
              <t>RADIUS/(D)TLS clients validate the servers identity to match their local configuration, accepting the identity on the first match:
              </t>
              <ul spacing="normal">
                <li>
                  <t>If the expected RADIUS/(D)TLS server is associated with a specific NAI realm, e.g. by dynamic discovery <xref target="RFC7585"/> or static configuration, that realm is matched against the presented identifiers of any subjectAltName entry of type otherName whose name form is NAIRealm as defined in <xref target="RFC7585"/>.</t>
                </li>
                <li>
                  <t>If the expected RADIUS/(D)TLS server was configured as a hostname, or the hostname was yielded by a dynamic discovery procedure, that name is matched against the presented identifiers of any subjectAltName entry of type dNSName <xref target="RFC5280"/>. Since a dynamic discovery might by itself not be secured, implementations <bcp14>MAY</bcp14> require the use of DNSSEC <xref target="RFC4033"/> to ensure the authenticity of the DNS result before considering this identity as valid.</t>
                </li>
                <li>
                  <t>If the expected RADIUS/(D)TLS server was configured as an IP address, the configured IP address is matched against the presented identifier in any subjectAltName entry of type iPAddress <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>Clients <bcp14>MAY</bcp14> use other attributes of the certificate to validate the servers identity, but it <bcp14>MUST NOT</bcp14> accept any certificate without validation.</t>
                </li>
                <li>
                  <t>Clients which also act as servers (i.e. proxies) may be susceptible to security issues when a ClientHello is mirrored back to themselves. More details on this issue are discussed in <xref target="security_considerations"/>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>RADIUS/(D)TLS servers validate the certificate of the RADIUS/(D)TLS client against a local database of acceptable clients.
The database may enumerate acceptable clients either by IP address or by a name component in the certificate.
              </t>
              <ul spacing="normal">
                <li>
                  <t>For clients configured by DNS name, the configured name is matched against the presented identifiers of any subjectAltName entry of type dNSName <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>For clients configured by their source IP address, the configured IP address is matched against the presented identifiers of any subjectAltName entry of type iPAddress <xref target="RFC5280"/>.
For clients configured by IP range, the certificate <bcp14>MUST</bcp14> be valid for the IP address the client is currently using.</t>
                </li>
                <li>
                  <t>Implementation <bcp14>MAY</bcp14> consider additional subjectAltName extensions to identify a client.</t>
                </li>
                <li>
                  <t>If configured by the administrator, the identity check <bcp14>MAY</bcp14> be omitted after a successful <xref target="RFC5280"/> trust chain check, e.g. if the client used dynamic lookup there is no configured client identity to verify. The clients authorization <bcp14>MUST</bcp14> then be validated using a certificate policy OID unless both peers are part of a trusted network.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Implementations <bcp14>MAY</bcp14> allow configuration of a set of additional properties of the certificate to check for a peer's authorization to communicate (e.g. a set of allowed values presented in  subjectAltName entries of type uniformResourceIdentifier <xref target="RFC5280"/> or a set of allowed X.509v3 Certificate Policies).</t>
            </li>
          </ul>
        </section>
        <section anchor="authentication-using-x509-certificate-fingerprints-tls-x509-fingerprint">
          <name>Authentication using X.509 certificate fingerprints (TLS-X.509-FINGERPRINT)</name>
          <t>RADIUS/(D)TLS implementations <bcp14>SHOULD</bcp14> allow the configuration of a list of trusted certificates, identified via fingerprint of the DER encoded certificate bytes.
When implementing this model, support for SHA-1 as hash algorithm for the fingerprint is <bcp14>REQUIRED</bcp14>, and support for the more contemporary hash function SHA-256 is <bcp14>RECOMMENDED</bcp14>.</t>
        </section>
        <section anchor="authentication-using-raw-public-keys-tls-raw-public-keys">
          <name>Authentication using Raw Public Keys (TLS-RAW-PUBLIC-KEYS)</name>
          <t>RADIUS/(D)TLS implementations <bcp14>SHOULD</bcp14> support using Raw Public Keys <xref target="RFC7250"/> for mutual authentication.</t>
        </section>
        <section anchor="tlspsk">
          <name>Authentication using TLS-PSK (TLS-PSK)</name>
          <t>RADIUS/(D)TLS server implementations <bcp14>MUST</bcp14> support the use of TLS-PSK.
RADIUS/(D)TLS client implementations <bcp14>SHOULD</bcp14> support the use of TLS-PSK, but <bcp14>MUST</bcp14> implement either this or the TLS-X.509-PKIX trust model.</t>
          <t>Further guidance on the usage of TLS-PSK in RADIUS/(D)TLS is given in <xref target="I-D.ietf-radext-tls-psk"/>.</t>
        </section>
      </section>
      <section anchor="connecting-client-identity">
        <name>Connecting Client Identity</name>
        <t>In RADIUS/UDP, clients are uniquely identified by their IP addresses.
Since the shared secret is associated with the origin IP address, if more than one RADIUS client is associated with the same IP address, then those clients also must utilize the same shared secret, a practice that is inherently insecure, as noted in <xref target="RFC5247"/>.</t>
        <t>Depending on the trust model used, the RADIUS/(D)TLS client identity can be determined differently.</t>
        <t>With TLS-PSK, a client is uniquely identified by its TLS-PSK identifier.</t>
        <t>With TLS-RAW-PUBLIC-KEY, a client is uniquely identified by the Raw public key.</t>
        <t>With TLS-X.509-FINGERPRINT, a client is uniquely identified by the fingerprint of the presented client certificate.</t>
        <t>With TLS-X.509-PKIX, a client is uniquely identified by the tuple of the serial number of the presented client certificate and the issuer.</t>
        <t>Note well: having identified a connecting entity does not mean the server necessarily wants to communicate with that client.
For example, if the Issuer is not in a trusted set of Issuers, the server may decline to perform RADIUS transactions with this client.</t>
        <t>Additionally, a server <bcp14>MAY</bcp14> restrict individual or groups of clients to certain IP ranges.
A client connecting from outside this range would be rejected, even if the mutual authentication otherwise would have been successful.
To reduce server load and to prevent probing the validity of stolen credentials, the server <bcp14>SHOULD</bcp14> abort the (D)TLS negotiation immediately with a TLS alert access_denied(49) after the client transmitted identifying information, i.e. the client certificate or the PSK identifier, and the server recognizes that the client connects from outside the allowed IP range.</t>
        <t>There are numerous trust models in PKIX environments, and it is beyond the scope of this document to define how a particular deployment determines whether a client is trustworthy.
Implementations that want to support a wide variety of trust models should expose as many details of the presented certificate to the administrator as possible so that the trust model can be implemented by the administrator.
As a suggestion, at least the following parameters of the X.509 client certificate should be exposed:</t>
        <ul spacing="normal">
          <li>
            <t>Originating IP address</t>
          </li>
          <li>
            <t>Certificate Fingerprint</t>
          </li>
          <li>
            <t>Issuer</t>
          </li>
          <li>
            <t>Subject</t>
          </li>
          <li>
            <t>all X.509v3 Extended Key Usage</t>
          </li>
          <li>
            <t>all X.509v3 Subject Alternative Name</t>
          </li>
          <li>
            <t>all X.509v3 Certificate Policy</t>
          </li>
        </ul>
        <t>In TLS-PSK operation at least the following parameters of the TLS connection should be exposed:</t>
        <ul spacing="normal">
          <li>
            <t>Originating IP address</t>
          </li>
          <li>
            <t>TLS-PSK Identifier</t>
          </li>
        </ul>
      </section>
      <section anchor="radius_datagrams">
        <name>RADIUS Datagrams</name>
        <t>The RADIUS/(D)TLS specification does not change the client/server architecture of RADIUS.
RADIUS/(D)TLS clients transmit the same packet types on the connection they initiated as a RADIUS/UDP client would, and RADIUS/(D)TLS servers transmit the same packet types on the connections the server has accepted as a RADIUS/UDP server would.</t>
        <t>However, special considerations apply for mixing Authentication and Accounting packets over the same connection.
Traditional RADIUS/UDP uses different ports for Authentication and Accounting, where RADIUS/(D)TLS uses the same connection for all RADIUS packets.
Due to the use of one single port for all packet types, it is required that a RADIUS/(D)TLS server has a means to signal which types of packets are supported on the server to a connecting peer.</t>
        <t>Since the number of outstanding RADIUS packets is limited, it is important to reply to packets of a packet type which the RADIUS/(D)TLS server does not process or, in a proxy setup, does not forward.
Otherwise, these outstanding packets would impact the performance of the connection.
The reply, however, must clearly indicate that the server did not process this packet to prevent the client from falsely assuming the server processed the packet.</t>
        <t>For every unwanted packet, a RADIUS/(D)TLS server <bcp14>SHOULD</bcp14> respond with a Protocol-Error packet as defined in <xref section="4" sectionFormat="comma" target="RFC7930"/>.
The Error-Cause attribute of this packet <bcp14>SHOULD</bcp14> be set to the value 406 ("Unsupported Extension"), if the server does not support the packet type, or the value 502 ("Request Not Routable (Proxy)"), if the request cannot be routed.
Future specifications may recommend other Error-Cause attribute values for specific scenarios.</t>
        <t>The RADIUS/(D)TLS client <bcp14>SHOULD NOT</bcp14> assume that the configured server is not able to handle all packets of the packet type based on the Protocol-Error response.
In proxy scenarios, a RADIUS proxy may be unable to forward accounting packets for one realm, but able to forward them for another.</t>
        <t>The previous specification of RADIUS/TLS in <xref target="RFC6614"/> recommended to send a different reply.
For unwanted CoA-Requests or Disconnect-Requests, the servers should respond with a CoA-NAK or Disconnect-NAK, respectively.
For unwanted Accounting-Requests, the servers should respond with an Accounting-Response containing an Error-Cause attribute with the value 406 ("Unsupported Extension").
It was also recommended that a RADIUS/TLS client observing this Accounting-Response should stop sending Accounting-Request packets to this server.
This behavior, however, could lead to problems, especially in proxy fabrics, since the RADIUS client cannot determine whether the reply came from the correct server or a RADIUS proxy along the way.
Other than the other responses (CoA-NAK, Disconnect-NAK and Accounting-Response), the Protocol-Error packet is explicitly only applicable to one RADIUS hop and must not be forwarded, which gives the RADIUS client the opportunity to re-route the unwanted packet to a different RADIUS server.
This also is backwards compatible with existing implementations, since RADIUS clients must ignore any incoming RADIUS packets with an unknown packet type.</t>
        <t>Since proxying of RADIUS packets is a general issue in RADIUS and not specific to RADIUS/(D)TLS, the details of handling the Protocol-Error reply on the client side are outside of the scope of this document.</t>
      </section>
      <section anchor="forwarding-radius-packets-between-udp-and-tcp-based-transports">
        <name>Forwarding RADIUS packets between UDP and TCP based transports</name>
        <t>When proxy forwards packets, it is possible that the incoming and outgoing links have substantially different properties.  This issue is most notable in UDP to TCP proxying, but there are still possible issues even when the same transport is used on both incoming and outgoing links.  <xref section="1.2" sectionFormat="comma" target="RFC2866"/> noted this issue many years ago:</t>
        <artwork><![CDATA[
A forwarding server may either perform its forwarding function in a
pass through manner, where it sends retransmissions on as soon as it
gets them, or it may take responsibility for retransmissions, for
example in cases where the network link between forwarding and remote
server has very different characteristics than the link between NAS
and forwarding server.
]]></artwork>
        <t>These differences are most notable in throughput, and in differing retransmission requirements.</t>
        <section anchor="throughput-differences-lead-to-network-collapse">
          <name>Throughput Differences lead to Network Collapse</name>
          <t>An incoming link to the proxy may have substantially lower throughput than the outgoing link.  Perhaps the network characteristics on the two links are different, or perhaps the home server is slow.  In both situations, the proxy is left with a difficult choice about what to do with the incoming packets.</t>
          <t>As RADIUS does not provide for connection-based congestion control, there is no way for the proxy to signal on the incoming link that the client should slow its rate of sending packets.  As a result, the proxy must simply accept the packets, buffer them, and hope that they can be be sent outbound before the client gives up on the request.</t>
          <t>The situation is made worse by the sub-optimal behavior of Accounting-Request packets.  <xref section="5.2" sectionFormat="comma" target="RFC2866"/> defines the Acct-Delay-Time attribute, which is supposed to be updated on retransmissions.  However, when the value of the attribute is updated, changing the Acct-Delay-Time causes the Identifier to change.  The "retransmitted" packet is therefore not, in fact, retransmitted, but is instead a brand new packet.  This behavior increases the number of packets handled by proxies, which leads to congestive collapse.  This design also violates the "end-to-end" principles discussed in <xref section="2.8" sectionFormat="comma" target="RFC3539"/> which discusses congestion avoidance:</t>
          <artwork><![CDATA[
With Relays, Proxies or Store and Forward proxies, two separate and
de-coupled transport connections are used.  One connection operates
between the AAA client and agent, and another between the agent and
server.  Since the two transport connections are de-coupled,
transport layer ACKs do not flow end-to-end, and self-clocking does
not occur.
]]></artwork>
          <t>In order to avoid congestive collapse, is is <bcp14>RECOMMENDED</bcp14> that RADIUS/TLS clients which originate Accounting-Request packets (i.e. not proxies) do not include Acct-Delay-Time in those packets.  Instead, those clients <bcp14>SHOULD</bcp14> include Event-Timestamp, which is the time at which the original event occurred.  The Event-Timestamp <bcp14>MUST NOT</bcp14> be updated on any retransmissions, as that would both negate the meaning of Event-Timestamp, and also create the same problem as with Acct-Delay-Time.</t>
          <t>This change is imperfect, but will at least help to avoid congestive collapse.</t>
        </section>
        <section anchor="differing-retransmission-requirements">
          <name>Differing Retransmission Requirements</name>
          <t>Due to the lossy nature of UDP, RADIUS/UDP and RADIUS/DTLS transports are required to perform retransmissions as per <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/>.  In contrast, RADIUS/TCP and RADIUS/TLS transports are reliable, and do not perform retransmissions.  These requirements lead to an issue for proxies when they send packets across protocol boundaries with differing retransmission behaviors.</t>
          <t>When a proxy receives packets on an unreliable transport, and forwards them across a reliable transport, it receives retransmissions from the client, but <bcp14>MUST NOT</bcp14> forward those retransmissions across the reliable transport.  The proxy <bcp14>MAY</bcp14> log information about these retransmissions, but it does not perform any other action.</t>
          <t>When a proxy receives packets on a reliable transport, and forwards them across an unreliable transport, the proxy <bcp14>MUST</bcp14> perform retransmissions across the unreliable transport as per <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/>.  That is, the proxy takes responsibility for the retransmissions.  Implementations <bcp14>MUST</bcp14> take care to not completely decouple the two transports in this situation.</t>
          <t>That is, if an incoming connection on a reliable transport is closed, there may be pending retransmissions on an outgoing unreliable transport.  Those retransmissions <bcp14>MUST</bcp14> be stopped, as there is nowhere to send the reply.  Similarly, if the proxy sees that the client has given up on a request (such as by re-using an Identifier before the proxy has sent a response), the proxy <bcp14>MUST</bcp14> stop all retransmissions, and discard the old request.</t>
          <t>The above requirements are a logical extension of the common practice where a client stops retransmission of a packet once it decides to "give up" on the packet and discard it.  Whether this discard process is due to internal client decisions, or interaction with incoming connections is irrelevant.  When the client cannot do anything with responses to a request, it <bcp14>MUST</bcp14> stop retransmitting that request.</t>
          <t>In an ideal world, a proxy could also apply the suggestion of the previous section, by discarding Acct-Delay-Time from Accounting-Request packets, and replacing it with Event-Timestamp.  However, this process is fragile and is not known to succeed in the general case.</t>
        </section>
      </section>
      <section anchor="session-limits-and-timeout">
        <name>Session limits and timeout</name>
        <t>While RADIUS/UDP could be implemented mostly stateless (except for the requests in flight), both TCP/TLS as well as DTLS require state tracking of the underlying TLS connection and are thus subject to potential resource exhaustion. This is aggravated by the fact that radius client/servers are often statically configured and thus form long-running peer relationships with long-running connections.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> have configurable limits on the number of open connections. When this maximum is reached and a new session is started, the server <bcp14>MUST</bcp14> either drop an old session in order to open the new one or not create a new session.</t>
        <t>The close notification of (D)TLS or underlying connections are not fully reliable, or they might be unnecessarily kept alive by heartbeat or watchdog traffic, occupying resources.
Therefore, both RADIUS/(D)TLS clients and servers <bcp14>MAY</bcp14> close connections after they have been idle for some time (no traffic except application layer watchdog). This idle timeout <bcp14>SHOULD</bcp14> be configurable within reasonable limits and <bcp14>SHOULD</bcp14> allow to disable idle timeout completely.</t>
        <t>On the server side, this mostly helps avoid resource exhaustion. For clients, proactively closing sessions can also help mitigate situations where watchdog mechanisms are unavailable or fail to detect non-functional connections. Some scenarios or RADIUS protocol extensions could also require that a connection be kept open at all times, so clients <bcp14>MAY</bcp14> immediately re-open the connection. These scenarios could be related to monitoring the infrastructure or to allow the server to proactively send packets to the clients without a preceding request.</t>
        <t>The value of the idle timeout to use depends on the exact deployment and is a trade-of between resource usage on clients/servers and the overhead of opening new connections. Very short timeouts that are at or below the timeouts used for application layer watchdogs, typically in the range of 30-60s can be considered unreasonable. In contrast, the upper limit is much more difficult to define but may be in the range of 10 to 15min, depending on the available resources, or never (disabling idle timeout) in scenarios where a permanently open connection is required.</t>
      </section>
      <section anchor="malformed-packets-and-unknown-clients">
        <name>Malformed Packets and Unknown clients</name>
        <t>The RADIUS specifications say that an implementation should "silently discard" a packet in a number of circumstances.
This action has no further consequences for UDP based transports, as the "next" packet is completely independent of the previous one.</t>
        <t>When TLS is used as transport, decoding the "next" packet on a connection depends on the proper decoding of the previous packet.
As a result the behavior with respect to discarded packets has to change, since a malformed RADIUS packet could impact the decoding of succeeding packets.</t>
        <t>With DTLS, the "next" packet does not depend on proper decoding of the previous packet, since the RADIUS packets are sent in independent DTLS records.
However, since both TLS and DTLS provide integrity protection and ensure that the packet was sent by the peer, a protocol violation at this stage implies that the peer is misbehaving.</t>
        <t>Implementations of this specification <bcp14>SHOULD</bcp14> treat the "silently discard" texts in the RADIUS specification referenced above as "silently discard and close the connection".
That is, the implementation <bcp14>SHOULD</bcp14> send a TLS close notification and, in the case of RADIUS/TLS, the underlying TCP connection <bcp14>MUST</bcp14> be closed if any of the following circumstances are seen:</t>
        <ul spacing="normal">
          <li>
            <t>Connection from an unknown client</t>
          </li>
          <li>
            <t>Packet where the RADIUS "Length" field is less than the minimum RADIUS packet length</t>
          </li>
          <li>
            <t>Packet where the RADIUS "Length" field is more than the maximum RADIUS packet length</t>
          </li>
          <li>
            <t>Packet where an Attribute "Length" field has the value of zero or one (0 or 1)</t>
          </li>
          <li>
            <t>Packet where the attributes do not exactly fill the packet</t>
          </li>
          <li>
            <t>Packet where the Request Authenticator fails validation (where validation is required)</t>
          </li>
          <li>
            <t>Packet where the Response Authenticator fails validation (where validation is required)</t>
          </li>
          <li>
            <t>Packet where the Message-Authenticator attribute fails validation (when it occurs in a packet)</t>
          </li>
        </ul>
        <t>After applying the above rules, there are still two situations where the previous specifications allow a packet to be "silently discarded" upon receipt:</t>
        <ul spacing="normal">
          <li>
            <t>Packet with an invalid code field</t>
          </li>
          <li>
            <t>Response packets that do not match any outstanding request</t>
          </li>
        </ul>
        <t>In these situations, the (D)TLS connections <bcp14>MAY</bcp14> remain open, or they <bcp14>MAY</bcp14> be closed, as an implementation choice. However, the invalid packet <bcp14>MUST</bcp14> be silently discarded.</t>
        <t>These requirements reduce the possibility for a misbehaving client or server to wreak havoc on the network.</t>
      </section>
    </section>
    <section anchor="radiustls-specific-specifications">
      <name>RADIUS/TLS specific specifications</name>
      <t>This section discusses all specifications that are only relevant for RADIUS/TLS.</t>
      <section anchor="duplicates-and-retransmissions">
        <name>Duplicates and Retransmissions</name>
        <t>As TCP is a reliable transport, RADIUS/TLS peers <bcp14>MUST NOT</bcp14> retransmit RADIUS packets over a given TCP connection.
However, if the TLS session or TCP connection is closed or broken, retransmissions over new connections are permissible.
RADIUS request packets that have not yet received a response <bcp14>MAY</bcp14> be transmitted by a RADIUS/TLS client over a new connection.
As this procedure involves using a new session, the ID of the packet <bcp14>MAY</bcp14> change.
If the ID changes, any security attributes such as Message-Authenticator <bcp14>MUST</bcp14> be recalculated.</t>
        <t>If a TLS session or the underlying TCP connection is closed or broken, any cached RADIUS response packets (<xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>) associated with that connection <bcp14>MUST</bcp14> be discarded.
A RADIUS server <bcp14>SHOULD</bcp14> stop the processing of any requests associated with that TLS session.
No response to these requests can be sent over the TLS connection, so any further processing is pointless.
This requirement applies not only to RADIUS servers, but also to proxies.
When a client's connection to a proxy is closed, there may be responses from a home server that were supposed to be sent by the proxy back over that connection to the client.
Since the client connection is closed, those responses from the home server to the proxy server <bcp14>SHOULD</bcp14> be silently discarded by the proxy.</t>
        <t>Despite the above discussion, RADIUS/TLS servers <bcp14>SHOULD</bcp14> still perform duplicate detection on received packets, as described in <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>.
This detection can prevent duplicate processing of packets from non-conforming clients.</t>
        <t>RADIUS packets <bcp14>SHOULD NOT</bcp14> be retransmitted to the same destination IP and numerical port, but over a different transport protocol.
There is no guarantee in RADIUS that the two ports are in any way related.
This requirement does not, however, forbid the practice of putting multiple servers into a failover or load-balancing pool.
In that situation, RADIUS requests <bcp14>MAY</bcp14> be retransmitted to another server that is known to be part of the same pool.</t>
      </section>
      <section anchor="tcp-applications-are-not-udp-applications">
        <name>TCP Applications Are Not UDP Applications</name>
        <t>Implementors should be aware that programming a robust TCP-based application can be very different from programming a robust UDP-based application.</t>
        <t>Additionally, differences in the transport like Head of Line (HoL) blocking should be considered.</t>
        <t>When using RADIUS/UDP or RADIUS/DTLS, there is no ordering of packets.
If a packet sent by a peer is lost, that loss has no effect on subsequent packets sent by that peer.</t>
        <t>Unlike UDP, TCP is subject to issues related to Head of Line blocking.
This occurs when a TCP segment is lost and a subsequent TCP segment arrives out of order.
While the RADIUS peers can process RADIUS packets out of order, the semantics of TCP makes this impossible.
This limitation can lower the maximum packet processing rate of RADIUS/TLS.</t>
      </section>
    </section>
    <section anchor="dtls_spec">
      <name>RADIUS/DTLS specific specifications</name>
      <t>This section discusses all specifications that are only relevant for RADIUS/DTLS.</t>
      <section anchor="radius-packet-lengths">
        <name>RADIUS packet lengths</name>
        <t>The DTLS encryption adds an additional overhead to each packet sent.
RADIUS/DTLS implementations <bcp14>MUST</bcp14> support sending and receiving RADIUS packets of 4096 bytes in length, with a corresponding increase in the maximum size of the encapsulated DTLS packets.
This larger packet size may cause the UDP packet to be larger than the Path MTU (PMTU), which causes the packet to be fragmented..
Implemententors and operators should be aware of the possibility of fragmented UDP packets.</t>
        <t>RADIUS/DTLS nodes <bcp14>MUST</bcp14> send exactly one RADIUS packet per DTLS record.
This ensures that the RADIUS packets do not get fragmented at a point where a re-ordering of UDP packets would result in decoding failures.
The DTLS specification mandates that a DTLS record must not span multiple UDP packets.
We note that a single UDP datagram may, however, contain multiple DTLS records.
RADIUS/DTLS nodes <bcp14>MAY</bcp14> use this behavior to send multiple RADIUS packets in one UDP packet.</t>
        <t>For the receiving RADIUS/DTLS node, the length checks defined in <xref section="3" sectionFormat="comma" target="RFC2865"/> still apply, but <bcp14>MUST</bcp14> use the length of the decrypted DTLS record instead of the UDP packet length.
Exaclty one RADIUS packet is encapsulated in a DTLS record, and any decrypted octets outside the range of the RADIUS length field within a single DTLS record <bcp14>MUST</bcp14> be treated as padding and be ignored.
For UDP packets containing multiple DTLS records, each DTLS record <bcp14>MUST</bcp14> be parsed individually and padding at the end of each DTLS record <bcp14>MUST</bcp14> be ignored, instead of treating it as the beginning of a new packet, as it would be treated with RADIUS/TLS.</t>
      </section>
      <section anchor="server-behavior">
        <name>Server behavior</name>
        <t>When a RADIUS/DTLS server receives packets on the configured RADIUS/DTLS port, all packets <bcp14>MUST</bcp14> be treated as being DTLS.
RADIUS/UDP packets <bcp14>MUST NOT</bcp14> be accepted on this port.</t>
        <t>Some servers maintain a list of allowed clients per destination port.
Others maintain a global list of clients that are permitted to send packets to any port.
Where a client can send packets to multiple ports, the server <bcp14>MUST</bcp14> maintain a "DTLS Required" flag per client.</t>
        <t>This flag indicates whether or not the client is required to use DTLS.
When set, the flag indicates that the only traffic accepted from the client is over the RADIUS/DTLS port.
When packets are received from a client with the "DTLS Required" flag set on non-DTLS ports, the server <bcp14>MUST</bcp14> silently discard these packets, as there is no RADIUS/UDP shared secret available.</t>
        <t>This flag will often be set by an administrator.
However, if the server receives DTLS traffic from a client, it <bcp14>SHOULD</bcp14> notify the administrator that DTLS is available for that client.
It <bcp14>MAY</bcp14> mark the client as "DTLS Required".</t>
        <t>Allowing RADIUS/UDP and RADIUS/DTLS from the same client exposes the traffic to downbidding attacks and is <bcp14>NOT RECOMMENDED</bcp14>.</t>
      </section>
      <section anchor="client-behavior">
        <name>Client behavior</name>
        <t>When a RADIUS/DTLS client sends packet to the assigned RADIUS/DTLS port, all packets <bcp14>MUST</bcp14> be DTLS.
RADIUS/UDP packets <bcp14>MUST NOT</bcp14> be sent to this port.</t>
        <t>RADIUS/DTLS clients <bcp14>SHOULD NOT</bcp14> probe servers to see if they support DTLS transport.
Instead, clients <bcp14>SHOULD</bcp14> use DTLS as a transport layer only when administratively configured.</t>
      </section>
      <section anchor="session-management">
        <name>Session Management</name>
        <t>Where RADIUS/TLS can rely on the TCP state machine to perform session tracking, RADIUS/DTLS cannot.
As a result, implementations of RADIUS/DTLS may need to perform session management of the DTLS session in the application layer.
This subsection describes logically how this tracking is done.
Implementations may choose to use the method described here, or another, equivalent method.</t>
        <t>RADIUS/DTLS implementations <bcp14>SHOULD</bcp14> implement DTLS session resumption, preferably stateless session resumption as given in <xref target="RFC5077"/>.
This practice lowers the time and effort required to start a DTLS session with a server and increases network responsiveness.</t>
        <t>We note that <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>, already mandates a duplicate detection cache.
The session tracking described below can be seen as an extension of that cache, where entries contain DTLS sessions instead of RADIUS/UDP packets.</t>
        <t><xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>, describes how duplicate RADIUS/UDP requests result in the retransmission of a previously cached RADIUS/UDP response.
Due to DTLS sequence window requirements, a server <bcp14>MUST NOT</bcp14> retransmit a previously sent DTLS packet.
Instead, it should cache the RADIUS response packet, and re-process it through DTLS to create a new RADIUS/DTLS packet, every time it is necessary to retransmit a RADIUS response.</t>
        <section anchor="server-session-management">
          <name>Server Session Management</name>
          <t>A RADIUS/DTLS server <bcp14>MUST</bcp14> track ongoing DTLS sessions for each client, based on the following 4-tuple:</t>
          <ul spacing="normal">
            <li>
              <t>source IP address</t>
            </li>
            <li>
              <t>source port</t>
            </li>
            <li>
              <t>destination IP address</t>
            </li>
            <li>
              <t>destination port</t>
            </li>
          </ul>
          <t>Note that this 4-tuple is independent of IP address version (IPv4 or IPv6).</t>
          <t>Each 4-tuple points to a unique session entry, which usually contains the following information:</t>
          <dl>
            <dt>DTLS Session:</dt>
            <dd>
              <t>Any information required to maintain and manage the DTLS session.</t>
            </dd>
            <dt>DTLS Data:</dt>
            <dd>
              <t>An implementation-specific variable that may contain information about the active DTLS session.
This variable may be empty or nonexistent.</t>
            </dd>
            <dt/>
            <dd>
              <t>This data will typically contain information such as idle timeouts, session lifetimes, and other implementation-specific data.</t>
            </dd>
          </dl>
          <section anchor="session-opening-and-closing">
            <name>Session Opening and Closing</name>
            <t>Session tracking is subject to Denial-of-Service (DoS) attacks due to the ability of an attacker to forge UDP traffic.
RADIUS/DTLS servers <bcp14>SHOULD</bcp14> use the stateless cookie tracking technique described in <xref section="4.2.1" sectionFormat="comma" target="RFC6347"/>.
DTLS sessions <bcp14>SHOULD NOT</bcp14> be tracked until a ClientHello packet has been received with an appropriate Cookie value.
Server implementation <bcp14>SHOULD</bcp14> have a way of tracking DTLS sessions that are partially set up.
Servers <bcp14>MUST</bcp14> limit both the number and impact on resources of partial sessions.</t>
            <t>Sessions (both 4-tuple and entry) <bcp14>MUST</bcp14> be deleted when the DTLS session is closed for any reason.
When a session is deleted due to it failing security requirements, the DTLS session <bcp14>MUST</bcp14> be closed, any TLS session resumption parameters for that session <bcp14>MUST</bcp14> be discarded, and all tracking information <bcp14>MUST</bcp14> be deleted.</t>
            <t>Since UDP is stateless, the potential exists for the client to initiate a new DTLS session using a particular 4-tuple, before the server has closed the old session.
For security reasons, the server <bcp14>MUST</bcp14> keep the old session active until either it has received secure notification from the client that the session is closed or the server decides to close the session based on idle timeouts.
Taking any other action would permit unauthenticated clients to perform a DoS attack, by reusing a 4-tuple and thus causing the server to close an active (and authenticated) DTLS session.</t>
            <t>As a result, servers <bcp14>MUST</bcp14> ignore any attempts to reuse an existing 4-tuple from an active session.
This requirement can likely be reached by simply processing the packet through the existing session, as with any other packet received via that 4-tuple.
Non-compliant, or unexpected packets will be ignored by the DTLS layer.</t>
          </section>
        </section>
        <section anchor="client-session-management">
          <name>Client Session Management</name>
          <t>RADIUS/DTLS clients <bcp14>SHOULD</bcp14> use PMTU discovery <xref target="RFC6520"/> to determine the PMTU between the client and server, prior to sending any RADIUS traffic.</t>
          <t>RADIUS/DTLS clients <bcp14>SHOULD NOT</bcp14> send both RADIUS/UDP and RADIUS/DTLS packets to different servers from the same source socket.
This practice causes increased complexity in the client application and increases the potential for security breaches due to implementation issues.</t>
        </section>
      </section>
    </section>
    <section anchor="security_considerations">
      <name>Security Considerations</name>
      <t>As this specification relies on the existing TLS and DTLS specifications, all security considerations for these protocols also apply to the (D)TLS portions of RADIUS/(D)TLS.</t>
      <t>For RADIUS however, many security considerations raised in the RADIUS documents are related to RADIUS encryption and authorization.
Those issues are largely mitigated when (D)TLS is used as a transport method, since encryption and authorization is achieved on the (D)TLS layer.
The issues that are not mitigated by this specification are related to the RADIUS packet format and handling, which is unchanged in this specification.</t>
      <t>A few remaining security considerations and notes to administrators deploying RADIUS/(D)TLS are listed below.</t>
      <section anchor="radius-proxies">
        <name>RADIUS Proxies</name>
        <t>RADIUS/(D)TLS provides authentication, integrity and confidentiality protection for RADIUS traffic between two RADIUS peers.
In the presence of proxies, these intermediate proxies can still inspect the individual RADIUS packets, i.e., "end-to-end" encryption on the RADIUS layer is not provided.
Where intermediate proxies are untrusted, it is desirable to use other RADIUS mechanisms to prevent RADIUS packet payload from inspection by such proxies.
One common method to protect passwords is the use of the Extensible Authentication Protocol (EAP) and EAP methods that utilize TLS.</t>
        <t>Additionally, when RADIUS proxies are used, the RADIUS client has no way of ensuring that the complete path of the RADIUS packet is protected, since RADIUS routing is done hop-by-hop and any intermediate proxy may be configured, after receiving a RADIUS packet via RADIUS/(D)TLS from one peer, to forward this packet to a different peer using the RADIUS/UDP transport profile.
There is no technical solution to this problem with the current specification.
Where the confidentiality of the contents of the RADIUS packet across the whole path is required, organizational solutions need to be in place, that ensure that every intermediate RADIUS proxy is configured to forward the RADIUS packets using RADIUS/(D)TLS as transport.</t>
        <t>One possible way to reduce the attack surface is to reduce the number of proxies in the overall proxy chain.
For this, dynamic discovery as defined in <xref target="RFC7585"/> can be used.</t>
        <section anchor="loopback-attack-on-peers-acting-as-server-and-client">
          <name>Loopback-Attack on Peers acting as Server and Client</name>
          <t>RADIUS/(D)TLS nodes that are configured to act both as client and server, typically in a proxy configuration, may be vulnerable to attacks where an attacker mirrors back all traffic to the node.
Therefore, nodes that are capable of acting as both client and server <bcp14>SHOULD</bcp14> implement mitigations to avoid accepting connections from itself.
One example of a potentially vulnerable configuration is a setup where the RADIUS/(D)TLS server is accepting incoming connections from any address (or a wide address range).
Since the server may not be able to verify the certificate subject or subject alternate names, the trust is based on the certificate issuer or certificate OID.
However, in this case, the client certificate which the RADIUS/(D)TLS node uses for outgoing connections on the client side might also satisfy the trust check of the server side.
Other scenarios where the identification of an outgoing connection satisfies the trust check of an incoming one are possible, but are not enumerated here.</t>
          <t>Either through misconfiguration, erroneous or spoofed dynamic discovery, or an attacker rerouting TLS packets, a proxy might thus open a connection to itself, creating a loop.
Such attacks have been described for TLS-PSK <xref target="RFC9257"/>, dubbed a selfie-attack, but are much broader in the RADIUS/(D)TLS case. In particular, as described above, they also apply to certificate based authentication.</t>
          <t>Implementations <bcp14>SHOULD</bcp14> therefore detect connections from itself, and reject them.
There is currently no detection method that works universally for all use-cases and TLS implementations.
Some possible detection methods are listed below:</t>
          <ul spacing="normal">
            <li>
              <t>Comparing client or server random used in the TLS handshake. While this is a very effective method, it requires access to values which are normally private to the TLS implementation.</t>
            </li>
            <li>
              <t>Sending a custom random number in an extension in the TLS client hello. Again, this is verify effective, but requires extension of the TLS implementation.</t>
            </li>
            <li>
              <t>Comparing the incoming server certificate to all server certificates configured on the proxy. While in some scenarios this can be a valid detection method, using the same server certificate on multiple servers would keep these servers from connecting with each other, even when this connection is legitimate.</t>
            </li>
          </ul>
          <t>The application layer RADIUS protocol also offers some loop detection, e.g. using a Proxy-State attribute.
However, these methods are not capable of reliably detecting and suppressing these attacks in every case and are outside the scope of this document.</t>
        </section>
      </section>
      <section anchor="usage-of-null-encryption-cipher-suites-for-debugging">
        <name>Usage of null encryption cipher suites for debugging</name>
        <t>For debugging purposes, some TLS implementations offer cipher suites with NULL encryption, to allow inspection of the plaintext with packet sniffing tools.
Since with RADIUS/(D)TLS the RADIUS shared secret is set to a static string ("radsec" for RADIUS/TLS, "radius/dtls" for RADIUS/DTLS), using a NULL encryption cipher suite will also result in complete disclosure of the whole RADIUS packet, including the encrypted RADIUS attributes, to any party eavesdropping on the conversation.
Following the recommendations in <xref section="4.1" sectionFormat="comma" target="RFC9325"/>, this specification forbids the usage of NULL encryption cipher suites for RADIUS/(D)TLS.</t>
        <t>For cases where administrators need access to the decrypted RADIUS/(D)TLS traffic, we suggest using different approaches, like exporting the key material from TLS libraries according to <xref target="I-D.ietf-tls-keylogfile"/>.</t>
      </section>
      <section anchor="possibility-of-denial-of-service-attacks">
        <name>Possibility of Denial-of-Service attacks</name>
        <t>Both RADIUS/TLS and RADIUS/DTLS have a considerable higher amount of data that the server needs to store in comparison to RADIUS/UDP.
Therefore, an attacker could try to exhaust server resources.</t>
        <t>With RADIUS/UDP, any bogus RADIUS packet would fail the cryptographic checks and the server would silently discard the bogus packet.
For RADIUS/(D)TLS, the server needs to perform at least a partial TLS handshake to determine whether or not the client is authorized.
Performing a (D)TLS handshake is more complex than the cryptographic check of a RADIUS packet.
An attacker could try to trigger a high number of (D)TLS handshakes at the same time, resulting in a high server load and potentially a Denial-of-Service.
To prevent this attack, a RADIUS/(D)TLS server <bcp14>SHOULD</bcp14> have configurable limits on new connection attempts.</t>
        <t>Both TLS and DTLS need to store session information for each open (D)TLS session.
Especially with DTLS, a bogus or misbehaving client could open an excessive number of DTLS sessions.
This session tracking could lead to a resource exhaustion on the server side, triggering a Denial-of-Service.
Therefore, RADIUS/(D)TLS servers <bcp14>MUST</bcp14> limit the absolute number of sessions they can track and <bcp14>SHOULD</bcp14> expose this limit as configurable option to the administrator.
When the total number of sessions tracked is going to exceed the configured limit, servers <bcp14>MAY</bcp14> free up resources by closing the session that has been idle for the longest time.
Doing so may free up idle resources that then allow the server to accept a new session.</t>
        <t>RADIUS/DTLS servers <bcp14>MUST</bcp14> limit the number of partially open DTLS sessions and <bcp14>SHOULD</bcp14> expose this limit as configurable option to the administrator.</t>
        <t>To prevent resource exhaustion by partially opening a large number of DTLS sessions, RADIUS/DTLS servers <bcp14>SHOULD</bcp14> have a timeout on partially open DTLS sessions.
We recommend a limit of a few seconds, implementations <bcp14>SHOULD</bcp14> expose this timeout as configurable option to the administrator.
If a DTLS session is not established within this timeframe, it is likely that this is a bogus connection.
In contrast, an established session might not send packets for longer periods of time, but since the peers are mutually authenticated this does not pose a problem other than the problems mentioned before.</t>
        <t>A different means of prevention is IP filtering.
If the IP range that the server expects clients to connect from is restricted, then the server can simply reject or drop all connection attempts from outside those ranges.
If every RADIUS/(D)TLS client is configured with an IP range, then the server does not even have to perform a partial TLS handshake if the connection attempt comes from outside every allowed range, but can instead immediately drop the connection.
To perform this lookup efficiently, RADIUS/(D)TLS servers <bcp14>SHOULD</bcp14> keep a list of the accumulated permitted IP address ranges, individually for each transport.</t>
      </section>
      <section anchor="session-closing">
        <name>Session Closing</name>
        <t>If malformed RADIUS packets are received or the packets fail the authenticator checks, this specification requires that the (D)TLS session be closed.
The reason is that the session is expected to be used for transport of RADIUS packets only.</t>
        <t>Any non-RADIUS traffic on that session means the other party is misbehaving and is potentially a security risk.
Similarly, any RADIUS traffic failing authentication vector or Message-Authenticator validation means that two parties do not have a common shared secret.
Since the shared secret is static, this again means the other party is misbehaving.</t>
        <t>We wish to avoid the situation where a third party can send well-formed RADIUS packets to a RADIUS proxy that cause a (D)TLS session to close.
Therefore, in other situations, the session <bcp14>SHOULD</bcp14> remain open in the face of non-conforming packets.
Any malformed RADIUS packets sent by a third party will go through the security checks of the RADIUS proxy upon reception and will not be forwarded.
Well-formed RADIUS packets with portions that the proxy does not understand do not pose a security risk to the security properties of the RADIUS/(D)TLS session and can be forwarded.
This ensures forward compatibility with future RADIUS extensions.</t>
      </section>
      <section anchor="migrating-from-radiusudp-to-radiusdtls">
        <name>Migrating from RADIUS/UDP to RADIUS/(D)TLS</name>
        <t>Since RADIUS/UDP security relies on the MD5 algorithm, which is considered insecure, using RADIUS/UDP over insecure networks is risky.
We therefore recommend to migrate from RADIUS/UDP to RADIUS/(D)TLS.
Within this migration process, however, there are a few items that need to be considered by administrators.</t>
        <t>Firstly, administrators may be tempted to simply migrate from RADIUS/UDP to RADIUS/(D)TLS with (D)TLS-PSK and reuse the RADIUS shared secret as (D)TLS-PSK.
While this may seem like an easy way to upgrade RADIUS/UDP to RADIUS/(D)TLS, the cryptographic problems with the RADIUS/UDP shared secret render the shared secret potentially compromised.
Using a potentially compromised shared secret as TLS-PSK compromises the whole TLS connection.
Therefore, any shared secret used with RADIUS/UDP before <bcp14>MUST NOT</bcp14> be used with RADIUS/(D)TLS and (D)TLS-PSK.
Implementers <bcp14>MUST NOT</bcp14> reuse the configuration option for the RADIUS/UDP shared secret for the (D)TLS-PSK to prevent accidental reuse.</t>
        <t>When upgrading from RADIUS/UDP to RADIUS/(D)TLS, there may be a period of time, where the connection between client and server is configured for both transport profiles.
If the old RADIUS/UDP configuration is left configured, but not used in normal operation, e.g. due to a fail-over configuration that prefers RADIUS/(D)TLS, an attacker could disrupt the RADIUS/(D)TLS communication and force a downgrade to RADIUS/UDP.
To prevent this it is <bcp14>RECOMMENDED</bcp14> that, when the migration to RADIUS/(D)TLS is completed, the RADIUS/UDP configuration is removed.
RADIUS/(D)TLS clients <bcp14>MUST NOT</bcp14> fall back to RADIUS/UDP if the RADIUS/(D)TLS communication fails, unless explicitly configured this way.</t>
      </section>
      <section anchor="client-subsystems">
        <name>Client Subsystems</name>
        <t>Many traditional clients treat RADIUS as subsystem-specific.
That is, each subsystem on the client has its own RADIUS implementation and configuration.
These independent implementations work for simple systems, but break down for RADIUS when multiple servers, fail-over and load-balancing are required.
With (D)TLS enabled, these problems are expected to get worse.</t>
        <t>We therefore recommend in these situations to use a local proxy that arbitrates all RADIUS traffic between the client and all servers.
This proxy will encapsulate all knowledge about servers, including security policies, fail-over and load-balancing.
All client subsystems should communicate with this local proxy, ideally over a loopback address.</t>
        <t>The benefit of this configuration is that there is one place in the client that arbitrates all RADIUS traffic.
Subsystems that do not implement RADIUS/(D)TLS can remain unaware of (D)TLS.
(D)TLS sessions opened by the proxy can remain open for a long period of time, even when client subsystems are restarted.
The proxy can do RADIUS/UDP to some servers and RADIUS/(D)TLS to others.</t>
        <t>Delegation of responsibilities and separation of tasks are important security principles.
By moving all RADIUS/(D)TLS knowledge to a (D)TLS-aware proxy, security analysis becomes simpler, and enforcement of correct security becomes easier.</t>
      </section>
    </section>
    <section anchor="design_decisions">
      <name>Design Decisions</name>
      <t>Many of the design decisions of RADIUS/TLS and RADIUS/DTLS can be found in <xref target="RFC6614"/> and <xref target="RFC7360"/>.
This section will discuss the rationale behind significant changes from the experimental specification.</t>
      <section anchor="design_supported_transports">
        <name>Mandatory-to-implement transports</name>
        <t>With the merging of RADIUS/TLS and RADIUS/DTLS the question of mandatory-to-implement transports arose.
In order to avoid incompatibilities, there were two possibilities: Either mandate one of the transports for all implementations or mandate the implementation of both transports for either the server or the client.
As of the time writing, RADIUS/TLS is widely adapted for some use cases (see <xref target="lessons_learned"/>).
However, TLS has some serious drawbacks when used for RADIUS transport.
Especially the sequential nature of the connection and the connected issues like Head-of-Line blocking could create problems.</t>
        <t>Therefore, the decision was made that RADIUS servers must implement both transports.
For RADIUS clients, that may run on more constrained nodes, the implementations can choose to implement only the transport, that is better suited for their needs.</t>
      </section>
      <section anchor="design_trust_profiles">
        <name>Mandatory-to-implement trust profiles</name>
        <t><xref target="RFC6614"/> mandates the implementation of the trust profile "certificate with PKIX trust model" for both clients and servers.
The experience of the deployment of RADIUS/TLS as specified in <xref target="RFC6614"/> has shown that most actors still rely on RADIUS/UDP.
Since dealing with certificates can create a lot of issues, both for implementers and administrators, for the re-specification we wanted to create an alternative to insecure RADIUS transports like RADIUS/UDP that can be deployed easily without much additional administrative overhead.</t>
        <t>As with the supported transports, the assumption is that RADIUS servers are generally believed to be less constrained than RADIUS clients.
Since some client implementations already support using certificates for mutual authentication and there are several use cases, where pre-shared keys are not usable (e.g. a dynamic federation with changing members), the decision was made that, analog to the supported transports, RADIUS servers must implement both certificates with PKIX trust model and TLS-PSK as means of mutual authentication.
RADIUS clients again can choose which method is better suited for them, but must, for compatibility reasons, implement at least one of the two.</t>
      </section>
      <section anchor="design_changes_in_tls">
        <name>Changes in application of TLS</name>
        <t>The original specification of RADIUS/TLS does not forbid the usage of compression in the TLS layer.
As per <xref section="3.3" sectionFormat="comma" target="RFC9325"/>, compression should not be used due to the possibility of compression-related attacks, unless the application protocol is proven to be not open to such attacks.
Since some attributes of the RADIUS packets within the TLS tunnel contain values that an attacker could at least partially choose (i.e. username, MAC address or EAP message), there is a possibility for compression-related attacks, that could potentially reveal data in other RADIUS attributes through length of the TLS record.
To circumvent this attack, this specification forbids the usage of TLS compression.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Upon approval, IANA should update the Reference to radsec in the Service Name and Transport Protocol Port Number Registry:</t>
      <ul spacing="normal">
        <li>
          <t>Service Name: radsec</t>
        </li>
        <li>
          <t>Port Number: 2083</t>
        </li>
        <li>
          <t>Transport Protocol: tcp/udp</t>
        </li>
        <li>
          <t>Description: Secure RADIUS Service</t>
        </li>
        <li>
          <t>Assignment notes: The TCP port 2083 was already previously assigned by IANA for "RadSec", an early implementation of RADIUS/TLS, prior to issuance of the experimental RFC 6614.
[RFCXXXX] updates RFC 6614 (RADIUS/TLS) and RFC 7360 (RADIUS/DTLS).</t>
        </li>
        <li>
          <t>Reference: [RFCXXXX] (this document)</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2865">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="S. Willens" initials="S." surname="Willens"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying authentication, authorization, and configuration information between a Network Access Server which desires to authenticate its links and a shared Authentication Server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2865"/>
          <seriesInfo name="DOI" value="10.17487/RFC2865"/>
        </reference>
        <reference anchor="RFC2866">
          <front>
            <title>RADIUS Accounting</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying accounting information between a Network Access Server and a shared Accounting Server. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2866"/>
          <seriesInfo name="DOI" value="10.17487/RFC2866"/>
        </reference>
        <reference anchor="RFC5176">
          <front>
            <title>Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="M. Chiba" initials="M." surname="Chiba"/>
            <author fullname="G. Dommety" initials="G." surname="Dommety"/>
            <author fullname="M. Eklund" initials="M." surname="Eklund"/>
            <author fullname="D. Mitton" initials="D." surname="Mitton"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a currently deployed extension to the Remote Authentication Dial In User Service (RADIUS) protocol, allowing dynamic changes to a user session, as implemented by network access server products. This includes support for disconnecting users and changing authorizations applicable to a user session. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5176"/>
          <seriesInfo name="DOI" value="10.17487/RFC5176"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </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>
        <reference anchor="RFC3579">
          <front>
            <title>RADIUS (Remote Authentication Dial In User Service) Support For Extensible Authentication Protocol (EAP)</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun"/>
            <date month="September" year="2003"/>
            <abstract>
              <t>This document defines Remote Authentication Dial In User Service (RADIUS) support for the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication mechanisms. In the proposed scheme, the Network Access Server (NAS) forwards EAP packets to and from the RADIUS server, encapsulated within EAP-Message attributes. This has the advantage of allowing the NAS to support any EAP authentication method, without the need for method- specific code, which resides on the RADIUS server. While EAP was originally developed for use with PPP, it is now also in use with IEEE 802. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3579"/>
          <seriesInfo name="DOI" value="10.17487/RFC3579"/>
        </reference>
        <reference anchor="RFC3539">
          <front>
            <title>Authentication, Authorization and Accounting (AAA) Transport Profile</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Wood" initials="J." surname="Wood"/>
            <date month="June" year="2003"/>
            <abstract>
              <t>This document discusses transport issues that arise within protocols for Authentication, Authorization and Accounting (AAA). It also provides recommendations on the use of transport by AAA protocols. This includes usage of standards-track RFCs as well as experimental proposals. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3539"/>
          <seriesInfo name="DOI" value="10.17487/RFC3539"/>
        </reference>
        <reference anchor="RFC5997">
          <front>
            <title>Use of Status-Server Packets in the Remote Authentication Dial In User Service (RADIUS) Protocol</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document describes a deployed extension to the Remote Authentication Dial In User Service (RADIUS) protocol, enabling clients to query the status of a RADIUS server. This extension utilizes the Status-Server (12) Code, which was reserved for experimental use in RFC 2865. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5997"/>
          <seriesInfo name="DOI" value="10.17487/RFC5997"/>
        </reference>
        <reference anchor="RFC9293">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="RFC9325">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="November" year="2022"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
              <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="9325"/>
          <seriesInfo name="DOI" value="10.17487/RFC9325"/>
        </reference>
        <reference anchor="RFC5248">
          <front>
            <title>A Registry for SMTP Enhanced Mail System Status Codes</title>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="June" year="2008"/>
            <abstract>
              <t>The specification for enhanced mail system status codes, RFC 3463, establishes a new code model and lists a collection of status codes. While it anticipated that more codes would be added over time, it did not provide an explicit mechanism for registering and tracking those codes. This document specifies an IANA registry for mail system enhanced status codes, and initializes that registry with the codes so far established in published standards-track documents, as well as other codes that have become established in the industry. 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="138"/>
          <seriesInfo name="RFC" value="5248"/>
          <seriesInfo name="DOI" value="10.17487/RFC5248"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </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="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC7585">
          <front>
            <title>Dynamic Peer Discovery for RADIUS/TLS and RADIUS/DTLS Based on the Network Access Identifier (NAI)</title>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="M. McCauley" initials="M." surname="McCauley"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document specifies a means to find authoritative RADIUS servers for a given realm. It is used in conjunction with either RADIUS over Transport Layer Security (RADIUS/TLS) or RADIUS over Datagram Transport Layer Security (RADIUS/DTLS).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7585"/>
          <seriesInfo name="DOI" value="10.17487/RFC7585"/>
        </reference>
        <reference anchor="RFC4033">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System. This document introduces these extensions and describes their capabilities and limitations. This document also discusses the services that the DNS security extensions do and do not provide. Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4033"/>
          <seriesInfo name="DOI" value="10.17487/RFC4033"/>
        </reference>
        <reference anchor="RFC7250">
          <front>
            <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="J. Gilmore" initials="J." surname="Gilmore"/>
            <author fullname="S. Weiler" initials="S." surname="Weiler"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). The new certificate type allows raw public keys to be used for authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7250"/>
          <seriesInfo name="DOI" value="10.17487/RFC7250"/>
        </reference>
        <reference anchor="RFC5247">
          <front>
            <title>Extensible Authentication Protocol (EAP) Key Management Framework</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="D. Simon" initials="D." surname="Simon"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, enables extensible network access authentication. This document specifies the EAP key hierarchy and provides a framework for the transport and usage of keying material and parameters generated by EAP authentication algorithms, known as "methods". It also provides a detailed system-level security analysis, describing the conditions under which the key management guidelines described in RFC 4962 can be satisfied. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5247"/>
          <seriesInfo name="DOI" value="10.17487/RFC5247"/>
        </reference>
        <reference anchor="RFC7930">
          <front>
            <title>Larger Packets for RADIUS over TCP</title>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The RADIUS-over-TLS experiment described in RFC 6614 has opened RADIUS to new use cases where the 4096-octet maximum size limit of a RADIUS packet proves problematic. This specification extends the RADIUS-over-TCP experiment (RFC 6613) to permit larger RADIUS packets. This specification compliments other ongoing work to permit fragmentation of RADIUS authorization information. This document registers a new RADIUS code, an action that required IESG approval.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7930"/>
          <seriesInfo name="DOI" value="10.17487/RFC7930"/>
        </reference>
        <reference anchor="RFC5080">
          <front>
            <title>Common Remote Authentication Dial In User Service (RADIUS) Implementation Issues and Suggested Fixes</title>
            <author fullname="D. Nelson" initials="D." surname="Nelson"/>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="December" year="2007"/>
            <abstract>
              <t>This document describes common issues seen in Remote Authentication Dial In User Service (RADIUS) implementations and suggests some fixes. Where applicable, ambiguities and errors in previous RADIUS specifications are clarified. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5080"/>
          <seriesInfo name="DOI" value="10.17487/RFC5080"/>
        </reference>
        <reference anchor="RFC5077">
          <front>
            <title>Transport Layer Security (TLS) Session Resumption without Server-Side State</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="H. Zhou" initials="H." surname="Zhou"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a mechanism that enables the Transport Layer Security (TLS) server to resume sessions and avoid keeping per-client session state. The TLS server encapsulates the session state into a ticket and forwards it to the client. The client can subsequently resume a session using the obtained ticket. This document obsoletes RFC 4507. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5077"/>
          <seriesInfo name="DOI" value="10.17487/RFC5077"/>
        </reference>
        <reference anchor="RFC6520">
          <front>
            <title>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension</title>
            <author fullname="R. Seggelmann" initials="R." surname="Seggelmann"/>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="M. Williams" initials="M." surname="Williams"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes the Heartbeat Extension for the Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols.</t>
              <t>The Heartbeat Extension provides a new protocol for TLS/DTLS allowing the usage of keep-alive functionality without performing a renegotiation and a basis for path MTU (PMTU) discovery for DTLS. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6520"/>
          <seriesInfo name="DOI" value="10.17487/RFC6520"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-radext-radiusv11">
          <front>
            <title>RADIUS/1.1, Leveraging ALPN to remove MD5</title>
            <author fullname="Alan DeKok" initials="A." surname="DeKok">
              <organization>FreeRADIUS</organization>
            </author>
            <date day="18" month="October" year="2024"/>
            <abstract>
              <t>   This document defines Application-Layer Protocol Negotiation
   Extensions for use with RADIUS/TLS and RADIUS/DTLS.  These extensions
   permit the negotiation of an application protocol variant of RADIUS,
   called "RADIUS/1.1".  No changes are made to RADIUS/UDP or RADIUS/
   TCP.  The extensions allow the negotiation of a transport profile
   where the RADIUS shared secret is no longer used, and all MD5-based
   packet authentication and attribute obfuscation methods are removed.

   This document updates RFC2865, RFC2866, RFC5176, RFC6613, RFC6614,
   and RFC 7360.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-radext-radiusv11-11"/>
        </reference>
        <reference anchor="RFC7593">
          <front>
            <title>The eduroam Architecture for Network Roaming</title>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="T. Wolniewicz" initials="T." surname="Wolniewicz"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This document describes the architecture of the eduroam service for federated (wireless) network access in academia. The combination of IEEE 802.1X, the Extensible Authentication Protocol (EAP), and RADIUS that is used in eduroam provides a secure, scalable, and deployable service for roaming network access. The successful deployment of eduroam over the last decade in the educational sector may serve as an example for other sectors, hence this document. In particular, the initial architectural choices and selection of standards are described, along with the changes that were prompted by operational experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7593"/>
          <seriesInfo name="DOI" value="10.17487/RFC7593"/>
        </reference>
        <reference anchor="RFC6614">
          <front>
            <title>Transport Layer Security (TLS) Encryption for RADIUS</title>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="M. McCauley" initials="M." surname="McCauley"/>
            <author fullname="S. Venaas" initials="S." surname="Venaas"/>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <date month="May" year="2012"/>
            <abstract>
              <t>This document specifies a transport profile for RADIUS using Transport Layer Security (TLS) over TCP as the transport protocol. This enables dynamic trust relationships between RADIUS servers. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6614"/>
          <seriesInfo name="DOI" value="10.17487/RFC6614"/>
        </reference>
        <reference anchor="RFC6613">
          <front>
            <title>RADIUS over TCP</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="May" year="2012"/>
            <abstract>
              <t>The Remote Authentication Dial-In User Server (RADIUS) protocol has, until now, required the User Datagram Protocol (UDP) as the underlying transport layer. This document defines RADIUS over the Transmission Control Protocol (RADIUS/TCP), in order to address handling issues related to RADIUS over Transport Layer Security (RADIUS/TLS). It permits TCP to be used as a transport protocol for RADIUS only when a transport layer such as TLS or IPsec provides confidentiality and security. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6613"/>
          <seriesInfo name="DOI" value="10.17487/RFC6613"/>
        </reference>
        <reference anchor="RFC7360">
          <front>
            <title>Datagram Transport Layer Security (DTLS) as a Transport Layer for RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="September" year="2014"/>
            <abstract>
              <t>The RADIUS protocol defined in RFC 2865 has limited support for authentication and encryption of RADIUS packets. The protocol transports data in the clear, although some parts of the packets can have obfuscated content. Packets may be replayed verbatim by an attacker, and client-server authentication is based on fixed shared secrets. This document specifies how the Datagram Transport Layer Security (DTLS) protocol may be used as a fix for these problems. It also describes how implementations of this proposal can coexist with current RADIUS systems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7360"/>
          <seriesInfo name="DOI" value="10.17487/RFC7360"/>
        </reference>
        <reference anchor="I-D.ietf-radext-tls-psk">
          <front>
            <title>Operational Considerations for RADIUS and TLS-PSK</title>
            <author fullname="Alan DeKok" initials="A." surname="DeKok">
              <organization>InkBridge Networks</organization>
            </author>
            <date day="21" month="January" year="2025"/>
            <abstract>
              <t>   This document provides implementation and operational considerations
   for using TLS-PSK with RADIUS/TLS (RFC6614) and RADIUS/DTLS
   (RFC7360).  The purpose of the document is to help smooth the
   operational transition from the use of the RADIUS/UDP to RADIUS/TLS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-radext-tls-psk-12"/>
        </reference>
        <reference anchor="RFC9257">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
        <reference anchor="I-D.ietf-tls-keylogfile">
          <front>
            <title>The SSLKEYLOGFILE Format for TLS</title>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="4" month="February" year="2025"/>
            <abstract>
              <t>   A format that supports the logging information about the secrets used
   in a TLS connection is described.  Recording secrets to a file in
   SSLKEYLOGFILE format allows diagnostic and logging tools that use
   this file to decrypt messages exchanged by TLS endpoints.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-keylogfile-03"/>
        </reference>
      </references>
    </references>
    <?line 809?>

<section anchor="lessons_learned">
      <name>Lessons learned from deployments of the Experimental <xref target="RFC6614"/></name>
      <t>There are at least two major (world-scale) deployments of <xref target="RFC6614"/>.
This section will discuss lessens learned from these deployments, that influenced this document.</t>
      <section anchor="eduroam">
        <name>eduroam</name>
        <t>eduroam is a globally operating Wi-Fi roaming consortium exclusively for persons in Research and Education. For an extensive background on eduroam and its authentication fabric architecture, refer to <xref target="RFC7593"/>.</t>
        <t>Over time, more than a dozen out of 100+ national branches of eduroam used RADIUS/TLS in production to secure their country-to-country RADIUS proxy connections. This number is big enough to attest that the protocol does work, and scales. The number is also low enough to wonder why RADIUS/UDP continued to be used by a majority of country deployments despite its significant security issues.</t>
        <t>Operational experience reveals that the main reason is related to the choice of PKIX certificates for securing the proxy interconnections. Compared to shared secrets, certificates are more complex to handle in multiple dimensions:</t>
        <ul spacing="normal">
          <li>
            <t>Lifetime: PKIX certificates have an expiry date, and need administrator attention and expertise for their renewal</t>
          </li>
          <li>
            <t>Validation: The validation of a certificate (both client and server) requires contacting a third party to verify the revocation status. This either takes time during session setup (OCSP checks) or requires the presence of a fresh CRL on the server - this in turn requires regular update of that CRL.</t>
          </li>
          <li>
            <t>Issuance: PKIX certificates carry properties in the Subject and extensions that need to be vetted. Depending on the CA policy, a certificate request may need significant human intervention to be verified. In particular, the authorisation of a requester to operate a server for a particular NAI realm needs to be verified. This rules out public "browser-trusted" CAs; eduroam is operating a special-purpose CA for eduroam RADIUS/TLS purposes.</t>
          </li>
          <li>
            <t>Automatic failure over time: CRL refresh and certificate renewal must be attended to regularly. Failure to do so leads to failure of the authentication service. Among other reasons, employee churn with incorrectly transferred or forgotten responsibilities is a risk factor.</t>
          </li>
        </ul>
        <t>It appears that these complexities often outweigh the argument of improved security; and a fallback to RADIUS/UDP is seen as the more appealing option.</t>
        <t>It can be considered an important result of the experiment in <xref target="RFC6614"/> that providing less complex ways of operating RADIUS/TLS are required. The more thoroughly specified provisions in the current document towards TLS-PSK and raw public keys are a response to this insight.</t>
        <t>On the other hand, using RADIUS/TLS in combination with Dynamic Discovery as per <xref target="RFC7585"/> necessitates the use of PKIX certificates. So, the continued ability to operate with PKIX certificates is also important and cannot be discontinued without sacrificing vital functionality of large roaming consortia.</t>
      </section>
      <section anchor="wireless-broadband-alliances-openroaming">
        <name>Wireless Broadband Alliance's OpenRoaming</name>
        <t>OpenRoaming is a globally operating Wi-Fi roaming consortium for the general public, operated by the Wireless Broadband Alliance (WBA). With its (optional) settled usage of hotspots, the consortium requires both RADIUS authentication as well as RADIUS accounting.</t>
        <t>The consortium operational procedures were defined in the late 2010s when <xref target="RFC6614"/> and <xref target="RFC7585"/> were long available. The consortium decided to fully base itself on these two RFCs.</t>
        <t>In this architecture, using PSKs or raw public keys is not an option. The complexities around PKIX certificates as discussed in the previous section are believed to be controllable: the consortium operates its own special-purpose CA and can rely on a reliable source of truth for operator authorisation (becoming an operator requires a paid membership in WBA); expiry and revocation topics can be expected to be dealt with as high-priority because of the monetary implications in case of infrastructure failure during settled operation.</t>
      </section>
      <section anchor="participating-in-more-than-one-roaming-consortium">
        <name>Participating in more than one roaming consortium</name>
        <t>It is possible for a RADIUS/TLS (home) server to participate in more than one roaming consortium, i.e. to authenticate its users to multiple clients from distinct consortia, which present client certificates from their respective consortium's CA; and which expect the server to present a certificate from the matching CA.</t>
        <t>The eduroam consortium has chosen to cooperate with (the settlement-free parts of) OpenRoaming to allow eduroam users to log in to (settlement-free) OpenRoaming hotspots.
eduroam RADIUS/TLS servers thus may be contacted by OpenRoaming clients expecting an OpenRoaming server certificate, and by eduroam clients expecting an eduroam server certificate.
It is therefore necessary to decide on the certificate to present during TLS session establishment. To make that decision, the availability of Trusted CA Indication in the client TLS message is important.
It can be considered a result of the experiment in <xref target="RFC6614"/> that Trusted CA Indication can be an asset for inter-connectivity of multiple roaming consortia.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to the original authors of RFC 6613, RFC 6614 and RFC 7360: Alan DeKok, Stefan Winter, Mike McCauley, Stig Venaas and Klaas Vierenga.</t>
      <t>Thanks to Arran Curdbard-Bell for text around keepalives and the Status-Server watchdog algorithm.</t>
      <t>Thanks to Alan DeKok for his constant review of this document over its whole process and his many text contributions, like text around forwarding issues between TCP and UDP based transports.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71963IbSZbefzxFmRPhIdcAWvduaXZ3Fk1K29zWhRal6ZnY
2OgoAAmwhoUqbF1IYbrlZ/Ffv4b9Yj7XzJNZRUodnvCEvS0Chay8nDzX75wz
m80mruqK7vBikmWXL1+/epEd/fv7V6d/hv/9x9EEvikdfHR8lnf5tsl3J9mH
Jq/afd102ev84Jrs0q36BgbIjo/PTj68vjzJXlar5rDvirrKNnWTvV+cnX+8
PJrky2XjbmAw/iCrb+DX/JujySrv3LZuDi+ytltPJvWyrUvXufZF9uzZwyfT
7NvHzx5MJut6VeU7mNC6yTfdrHDdZtbka/epw/8Ufbvuyna2LNrZg6eTtl/u
iraFaXSHPfzm/OWHVxN4/+NJ3rgc5qEzP5rc1s31tqn7fZjdyz9/cBX+uD2a
XLsDPLGGLZrJavBfMO/Jjat6h1t3z6+zjN9/9BO8pai22b/is/j5Li9K+JxX
8C+4mnndbI8mk7zvruoGx51lvOB/y6vZq8atXVNcZ+8Lt7p2TQvfZxn84kV2
5vquXV25NntVN/CPvtq2lev+lv2a/atrdnmVvc3xQPIye+9alzerqyyv1tnL
db+iL7K3rsNdoCHbrnGue5EtSvcJnnLNvsxhrIf05apew3wePnj47Xf8NxJP
9r1ryqKSB/qqw5PkNx/oQ8drbWTm/7LeVPO1o6+ULs5evaW/4UxeZLe3t3P/
jG7CZec2sJSfiqpzTVj8q7pa8yJgbZ2rcli1/usVTIa/jFb2aJrldHbZ2mXl
7z9WBRBjW3T/53+ZNT55/OypWeJL2NdZ2zezRfk313UuXuzr/pPbLeu+2dr1
tjTj+S3N+F8antS87KOFv395+eHl20W8ePPspKphIzuY4ovJpKg25q/JbDaD
cWBZ+aqbTD5cFW0Gl6TfwaXO2r1bFZsCiCLPOn9r9029KUpnrmbWt0iWd19s
utV0XT+cXsCeZ8oN7vnNWfjRx7OLLG+z7srF0+jqVV3OedKw1GXp8L/MO2A+
+LxMEH622RQrHOXWlSX+d30AmoCPuqZvu6xxJR1ye1Xs22wJtOxcpb9uXYOn
i29yuilC9Z7P0Nvcpz3cL9w7uCfRg21WwHCvTokbZcc88De0RLxG+A1yKP/N
mf9qVe+WRcUv2OEoHS43GnzOx7gr1uvSTSa/vPjrBigHSGnl/ukILv4G7v3R
58nkd9k50FoNV5bomZYjS9TdzAo87Nti7coDkPa+rA9unSE7QS7Pr5tmzF6K
v/Ee4CzzFREybjtsSM+zOu9wuLXbwPzXOPVffvkvsNJH3z17+vnzNPz1LPz1
9OG38BcNWcM7ddN5JkSUvMdwzC67gmNsr+rbCk4IDgj3HKbVwY7BPNpp1vbI
pWDrO5zF3gEnqlaHrK7osPoKDr1AqhmhKqY5mAU+Wear66zewFFUG9gZWGZe
Io3iDSjzZuuyfd7AO+ARfNUeHncwVH4o63w9nyzW64J5J+wpjpeOg+/BC74l
yt+51VVeFe2uRar0031z9jTLSxBxRXe1m2a3VwUsDndgiZQK8wZ2lHU1/Alj
tXiNHLy6hIPqt1dyzN+wtIQbDvRU1Uj2O/idjj9b5i0cVJjAFNaT5et1+4Up
4645IioYqqEX4pD4qhKv9XwCUgV+k/V74KXwCmKWeH02ycxuC5xwl1UOnsL9
xWW3zgF5/PF8djYfSuybhw8/I23/Lrvom33dusGgTOjAT1GdWPWteQBfSfcv
3DokWdhG3FBYMGwGkAZ+wFuK13HXV3r9E0axd7Au5YYwFHI6+C/T8K4GPlPs
kMxyoOOeZzq8zVmJHBcm29Q5EjKwtJuiqSukfmBfcCnCrSVKa3m3+OxbvCP5
qqnb1tMBzgOlDDA6eK5iQQ03a1HBbcp3e2HmcO/rplzj5R97N0w1p2m3mVXA
cJ13bQ/y5XWPYxHHde2qKZbKCv4I1/3bp88fy+mdAs1tYexNU++QH97JKId8
cjL5BxkPfwTso3Eb2CVgEevwObyHVgkSaEbcHr6M9n0qb32sN44YEFwxeO1V
Dg/Xu5T7BxH4DR1zlsFBty5l/VegKvA13TngFnRzaj55lbVzWIIuepc31/AQ
jHjzcP4wIyYD0h+3ENQhuECg5k7HCKdx/9kXIPflp4/oF0VV7PodbV7j8HiA
DSKN5luiP370sX0/8Kn6FiZgn8GD3cPQLW1UNHXchWWxRjZrR6kr4F1+Rm2/
J/6KO8ZyHKXuDtSkMjtauabjVcCTyAGyix/P/3yUHYdDnaJmQIt8NIeTPJln
saqyEurBmc1Rh1WhPcXZz/48f/rg+QxHxUFBx/8Ef++vi08oeXCON3lJJF7f
PRsW4DgZJkUc9+LyRxlw317DtJDiq/pWzgklJ0pwuNB4dXc9M4DS0ZThMpUu
h4/qSjgBbMttjXvI/EqOetbVs/CrVbFHqmz7AqcHhojwcU/wa9jvVVcqhRQo
RUD9xq+WwLezfU26ZEYUyDz6+9MLfWtKUNu8WZNQ7xzoRXh6ZnuQjYeHvSwS
Jj+nWxkun98TEr7M/S67vOvb2SWdFWlnebe6WtdbK+qEVcC1h1GErISQ8S51
Qgvx1OVt7d1vw8Us4Y7fIwvSJdDLi2pV9vjmstgVtB4QRnASaCjAzEiXELux
Ta8K0sYWNG8ghhqObtsX6xw1Gdw++ArOBNkN8OPBOI6WRyqEcPd1saFD74L6
0uoxNj3qwrhCOqKDqsMooKITDKxJRTPMYVMjBwizE1loVLjnTx+BCjfPPrY6
8ikcCFqBYGdl78/e8rtBV1h7SYBrZ1YBeoSfKKwL1ufwtX11C4IRXqNiDSmK
L/Z6nr0FXkHqXl+uaSwk6wNf0Dy7EL1t9rJp4M2igpHEKkh7qZh9zJRK6Kj9
aB2KTljmpwLplsR1I/auQ6q+KioRAHxRYcLKcfAKgsZSBh0X5llsq5/X8CI6
PNgo1L1P6+oGFSiUCPjyM9SLSTFs+Y3X7oASGDjp0ZuPlx+Opvzf7O07+vf7
l//94/n7l2f478sfFq9f+39M5InLH959fH0W/hV+efruzZuXb8/4x/BpFn00
OXqz+At8g7M6enfx4fzd28XrI29reOrFpaqGCSwE5AGxuHYSSXbgJv/7f4IA
EPX+4cPncHP4j+8efoviGXSYit9GF4r/hF09TPL93uUNjgKUnq3yfQGWFFC/
V/RR+4Hd/Id/x535jxfZPy5X+4dP/lk+wAVHH+qeRR/Sng0/GfyYN3Hko5HX
+N2MPk92Op7v4i/R37rv5sN//CNSVTZ7+N0f/xlM9Z+A1AdncuvgCsBeIYvD
e8h3l26la3YtmPixgl2hZ2LyAq4Mfz5DJW4mX7Kkyrz0TH/M39/5c9A3O2IY
fO+QuIkF56Bz3ppLmA7LL/vKYcsC/RotsszRp0nNEJPU7Uk5tu9u/cvBwuNX
rsocuOzK+ArEGLTOh8iK9UYsHAoQLxqf6OIkTyTu3lG0viNkQTu++m5NlJ4I
KyB7Uvq/SiT9RBbAUfqur3oR3Td9G1zl8NupWBZHZ+nAZ4OR0Sq8YySe4kRE
rFdbRBGmO6qq4BcXesrUmA4idzCoRDjQNFuC1Ujj361hmZcFxV1mHAwQvxhx
h7WieK6LFozHVlQKNLlgJ1bhR8bdJOKHHW2oIO6vO/4DdMQpkyhr1yyFgLGu
8T0NSj18HB6g71HTZdvWjjj55UX2uzBk7MiJXg3T7ysRoWxZGeKd+j/U5UJ/
swtmPrlUyilRmUR+LEpqYDE4TzoTv7l8BEtnXovsXWzi6Fq8QLMtXhf8DUyr
6FCsoAu1RXsC1HMHZ7gIPijUQvNy1bPLjp4RLeK+h96IJSQ7BPr+trvCz/NP
o58vug5kWt+5MLs/gcpZNzPdGfPI8Z8uFydjywD9Jyf/Pa7lNEwIt0xdkLkO
03qX1ekPi4sZUGSJ03FTpNc3YH0BScyiNQ4HPRIPqFsfjQ38oQdOWM4ugOWh
riHKjijIwkIDB/SOIj5M9l7F72vFY+uN6k3hStBhjvWNdC/kgOLJn5BNxXRj
6DJczuxMdmgRORwjMk2WP7LkjyBf/ILTF43uqqgrj59+i7oLaCB1uhOyb6uU
Zwy4lVjApFcHzjRivKNyRc5E4KvesmCu4q8ZCcDWVWs15x3YEl5dFreF+He8
9xIuT74EqXlFb5Y7rALdy0XVenm6wd8jy2oc+c90guF2gyjuG+GJLS0Q7uoe
7JMCHavxbtCU0L2EdjBqkPXeNfmyII+iTCxxbBMHFotLbTnxSpCLpu/YalEq
tN7TQFy0EtxgdnDCTBKeixN7c/ZU3ycnDVsOk8Xn8vACsMh6uJDAz1bOuEDZ
VZ84SRtjOy0PduPZLZpdkmdTx/5Z38i0gwS6SdQ9os17HKGkQpBtuXZdXpRg
EU5+Ih+BqE+bWPLRnOgfwDbyfWtukuydOEANLQTz7AYFGDqIxb9NGtOVy4Ht
9WQqqPeTN1UlKPCIviHnGttLXdn+jOfOhtLv0DLK+7Ijum9HRCTLPy8jJ5Pz
xdsFWYtAiah5rOWnsX9uqGFc0iHG0Q1cOvlxp+l5Tu/2emPUZHVVuBumrvSg
RRWzi/CesGRTSeEgRxTQHF6bFcYcQXhOJYSBclResXPAFdfsXf5Krqw8cZwh
T+9gh/D/vFSxHFaFPVxjFH3kM2SHAC7DLhcO9le10bNfswsULr9ml/zIJe/I
r5NfZ/q/X+3/nfxqT/HX7NGD7x5/06328E+MfcMbjjLz0Jl5ql/rU3BDvkFK
w0cT+8PzdhSDrdvnDbpGAgkNwl8h2IUU4cV4JKRENEjQkIJxrPghrTTLAoRs
c+DASHztjdeNDhluQjHbS2xDBDUqtN6fmtBvGo4jFsMb8PNa4q7skzCbKt5S
1aDhKNF0A04PNNh03lNYuW2NRh2+h/S61LSLFeFvvEEGiwZmXzmm1gO/Z1XW
YrWaAWhHgVHAFsC/D6xAUVSj2ETPwtrEXvXnx5PNB1OFTZIfp99skEeioYCv
Itdo2Jezwca0BXqJMTJqJuh9Te7gRTJZjmYfzvxGqEsKp8ubdzYy21xHpYXT
aHkm8yGPYJDqKIPzBjaimad0zeEodYx4F0FdejaIxq3hkacXQ8Z5FptLYi0h
k+7kFF7jitniA+t64cNDFEo+uqr3s+VhBv858tHVqTfdyekGVHbF7InOlw+V
rBXcXw9YQOJYYnBwXd9WCMTIdyE0/9MVYhLM73f5AVkTx3dBf3PrfiXr3zt1
7hGL9dpEWa/wI7Zdj4u5m095ficUCF3lFZ7aLr92TJkOXSxFZad27/hj81av
Dm/HVJyQLZoMbHqxpQ1bcIsEp0AGDTzisG8XVrSFwIcogDDRmshtC/ePOBt8
WABTv628+3WOx5bjn8Btpnq1cWATKmbSziOfbU4aIxCjeLpX5FBd8kbzcCRQ
xbZCv/XY1GmXkSrgH3BgO5Vw8vngdxHxkIJAi57K3ZFByDdMkpe+FRU3X7aE
HkBjQZzIcLLw//F+5Eo+gWSOQUmoGw6qnPD99VNjAzu/AS6ChCaimEfgrUDW
TFxGeAJsWcWBRaEz5v+k4PLgVZ0dlbDTR573oB7p35Edv/tx8RchLO+Qf/z0
8XO06Bd70hE+ZYsT0bvaouu9D34HCmPmECkAJgIslw5aTpDf07Lmz0H8XFYJ
syYxhJFi1N6F5oF8X8GsSP8vKhJK5lu6gUICRUWLKVaksudb8XXxRtgRp57L
8ya6poFh674t8TaXqGG1o2cgRAn7NmCDo16ovgOz429OYDvkU1SaADbIXM9K
pbIGTucJihxfLG9npOGFwFXqKMSTCdHLx3N0gBNxMfPgGeB5o6+3bb0dpCQ7
5oGVNWCgGCk2TPPs3U9vcQfJ4SWGwMBrA8+zws4nDlokuWLobqwxXoxoMFT7
rijiTMHoVEiH55An4Gs1oqPmJxDo6hp2YS2RVH9oZhiSgxluLezgTcFXSGZy
9w770KCdIPBnnsV9G2YNcJeEA8GQYsTlCFSBkEnPn3+LzoA2JYCsBKIsw/Tk
cFfdHSdLMbiC+ZjhRcpVWzVLhMfhGnP2CHjt/tHTZ2hsw83K6XJkR4htKYvt
VXfkLQkxwWgS5NPSCZyfsTWAnkbDOkKA/QnLOzgdE7ywJmC6uWJ24ch/A6s+
O35wghzcgU3kFRa87/GOy0SFT93kJUz4FlYLgg9P1CvJU9l0oFUmGJCgLaua
q6saVUiUxsxLeBRWmITPsqGFTALlHCnc1u2tRwIkgmwVnSuoB107sANKCtWO
08PzR88f23v9Hd7suR0+4SHt6LsQzFbDHRm8MOYiz54+eoDDqymdw06RzwRY
YL7CS1iyIGzyfbFGnFlTbOFWkY0y4BCwMwbEgopWl95cEmVtRL+rK7e6Zp4B
f7JZTMH4NUJkq06JGnEinptW99xkdtqjmPBoK2RYtIRojq2g72gRN94L05Lf
XlzI32CAVVf5A0bRYe2pC592lW/w0l3lNwXYZVbZjRTnTc3on5JM7g26oQhZ
6G8Y7vfAu5ZnPqpFhM/asnxm3GusKkfnbNz+0ztuGrEx/87ByyLTrd+jGRqs
JVLX0OK4Q7Ygp6lIVRQ2440S+LGPxeGRAsOuWZIYtNfcqP4yFB0rxcAZOpLv
1duHEfK8JLeGv9nkZ4VfIWUzHk1UJHSdihzhRaiORrZUp2F8clsXaoWOoPAu
VZ8yoBwDndsjrKTaFNte/LWoEMZbxNNCBAdwt2otBiPRWL7yKBgergM7oVK3
XyRYvSiA+5a1B9A9dkjK52N6imAxWJ0W1It8z9MIDOnxIwrqGKRIoRAempNF
zSQwIoYzeSpCrW23l0M16NVpoklYcmZ3IC99Z/xbMYGSpnFpwGD4HULVRMg+
evIdCNlv2NYNnz97/ASFL0kkjuhPI0gZP/1YYQZPnjyzo+jnzx/SKHitQVSi
FI4kHKoeb60djpfZbpSwKVz5htX22N0bwOV3OQl19qrlJBa6Xjhn4XYemiWH
o063XQ+KPeGBgv8HTvaYHT787c/43efPJ8SD3tBHibuIfKnm4ezzeHReZmnf
pXdoah2rY/wq+pFVboOjgDEz/ir2LXvM/RoVvOpvy0JpEMR8ddihEqTvvCVu
wIEJ2P/iJl8dRpi8mNIshPg3sP84RYp1io0mXv8cL1UXdDjvyODYBDvahs/q
ArvWlZupVck2xSe3HvhI4xkSELP1NyncuwD92hEqCt60GztchYkTQgS2Vd3u
mtixDvkETKMvkNYivGT0wavzt//68v3F+/O3H+Tz94ufZhcfv399fjr78eVf
5MOLyx+R4H5nw7FIucySaahsHGUZ4UKP45mcEKka7CaSKpBBNkau40ZfEoCj
18xHDYYvow7CCKPYA1fQTtNTzKB4W8434SE2W9gcHcB3CMJH7HJULuReLKjM
MkyLdzGvQD0WRxaZEC2H/+QqnRoYoMRXO/Q8HZ8u2hNlx989QFQrUiAqDoaR
t4K6pFFlc5axXRRB7dS9DtKzrJfoGaObLFNtQSqS6WcnZeCDvLneS5IgTxnt
iJaDazI78/nI7ulBeoWCnGF2x1p2i6C/mjS/RqBEqk/4HcCMR2K2IrqeWTPq
2/mT+RNBVZAIe/As+v5ZJP7Ccyy8wnNP5mCQWSGHi0LUUXT4yDlpCRjh9GHp
Yzffzqec5ZGXTBuni6Dx21X/gXTq3HtB8LxP37+OVJ7TBVqG4xuKRhnuDCP3
WOvEQBxIuN8TAhP2r8fUDzxVE/C1aNR93l0JXaFLTu7QEj2nlUN5sMIom8Gy
4sjm98op1+Y2jIQXGjdzaCjmPk0Mx0WtyIyFUCw0bqwSPBo5n+o8FXktP1X6
4a0c/Ey00NojaNEtD8u804MR3JyRZmgBuUy4em/QUiFfA+koeLfnmYeuSHg4
iVE7GNE7g1JIr1dTVECjXk5jbw6sycQXmK1cvPQgf9YrUkPFRJSfFY514bO3
l5Sh2crx5OWO/2bWylgziQ7USH6dm2al23QzSqop8yXy8X+4QweR/bCqR6ub
wr5NtEeFEXAMIOKpU3P/w+Q7n5m1KRqUWTgIZtwCy9mIW3HPd2BcQCHHautV
QVqbwJg9y3y7OOd9AOqCO4z0pGFGjD2hg+MgR//t0+8EyyLx4mTyZCXxnpIH
uCNSz7c54iqNwU7iKD4X9Ku0/fKvsIxF2REhOMxWpXt12EuKDH1+e4WOGDw0
QkHhq2AN7+m1qT8jzHr+9fuFniHD7cgrBu/s8JXk98ch9AN6+oBOLk17GO4e
UP0Ks5OcbBH97u++Q+u3l/RpJJYyAR6MzGqHTjycMuuMik3n9Kr1kPviFRMz
TOAxTm7U5ctTeeuTB48fs9dZlGKySFU3M7wY76F47JduU1M+F4emfVTfE38u
F+v/7Qir7PwCASRo60xTiRa++i3nwj6KLxxLcbGQkWN9AddyqraLcC82BQzs
YURywd7ey2aYkam2h0yUeQrN1A6kCZBB+YknxQo9uUryVUfAeHkV63kSPzzR
+Gfbt8S7JAwaw5hajfTx6D+A9VrTVheYRYFXB334bLHsgBxvUIS8MegiZoHk
koThSJgEkA/d9TuxTUN+rQuJNjISyRsbU4/1daWKXDg4wgZIF8JLSltNwTOR
CZKqF57C3XJVv+MA6fAHXhc5WKpkQZ8z60DJBPI7+EHN1PkMCesh4xkyhyFU
AA6uwP9HpvSFKbJ4FCDL3/3Sft2877612T0zhxk1OaFoU4JSVwpRnNcezQpM
JBJ10r5pGP9BlqxwvhjiiExDSd0i49J1abSpjbQodW16pjo4g9iTOI0VEvLQ
0xRgUbUgkPMNJY8i9GsFa9r0pQBoafPEBgCLoaj496JxxHFY0vdUWpV1fd3v
o5CMmaful1GwOAltnoXoeJugpegkKFa+9Iafh5PlsZFQg4V5yN6dn2V9VeIp
USYBu9JInUUQULCDQ8rzmDmIm8W29IgdjUg8/Ec4xj1hVslOHpcCfARsNImF
Eq8Un/Fuc8cmmnmV5N5SHKu1V6XKxu6GTgRvBwyJqtd7x5f0PEhEe97iWI/e
Rk6Wm8eR9X2B24ySZP5bfDmgDGMwdw8KA6YyjLqOTr4UoBeL8l4XR+rNsP6k
aWAsawwr20l5Vefle8Q01uvE7FseOkdwInSt67y89iP+Hut6vvxhMXuIcvgq
x4CMj017r515d+S/JnsuSYveic7VOawTkAPro1E3fcU2I74Mg7+p4/ruE3qf
32YX/RLOMvvRHeRIYq/d5dceiM52fGTR6x89faAw5DGX5H1z9RnV8g/v8du3
13f5pe/PMTIasYz529x9d4/zNU6/jgGHNvvc+DcxFi3+WJsH3FmMu+6IB4j5
E4rCP4PSGFjFijLSOfp4GoKAklR1Ltx5MjmvDBhwGthzQwzlP3uMJJrr5DWB
ICUDZKEboJxHrFzydTTFtoh1f5A3RP1gizGUSHznQfyODdQiI0y0EdxDNEb9
UlBZpuR7C/qhX0aTZfwZxvF8CiM6LK6cCH0tp0F4BETUW3TIIwwtwW6fpSBt
69FGKTq9W4cNcjwnOegxQuvg8S8PghkMhJibPbrjyLAsjaclLxfsSDFL+KpB
aR3ABPbMBK5dNLUB2//qMUe4dZCDCq6zunX6UrxpX/22rkdUW0BdFcCywBBY
IjTvyy/3WTZkAOGOvsVUC4wDvsCIKBKCeWdu4/Fy2B5hiZkWxngErQX1tbwp
MEc6R0pOdAe5BUCoqjWiEiwlXTyS7pxmpphjNI5DNI3VAH5CVHl5ORpEa7ei
BGQsh8MI/yhHliPerU6jaP00kqCxD+SzswLzGVYdeeBvijWKCJg11b9jnIdc
W1wsbHTOfKIRNP0iwCv9RpI/G4xmVLp5IvS0BPWWGDn/K7klpox9lI0ZlU9s
7d8Wrf48VEgICvR88qEm3MvK7xeWemJiQNgDvoaKSS3VaWjd3m1XlzDeCsvx
UfQ43npVf5YqeTR128SmLc5DfIccMXQIgKd5/gyDA80dP3l+IjaA0eelukRn
rDAqEmHA1kBA6FAwP0rc4/hNzFA85liXgpCDbQUs1+L/ovNr09NzXivVU2fc
bsPuBbLRMdpr+Cq5lUm82lJJkq5D93/pDrXObFXvQ+Uln1hFqD30UVIhjpyM
iAIzahpbfMxzZPKcsF/IsBmaE1ga3RWwwtTSoA3Ae0x+GFEsuNYaUAdo8uKH
s+sSZIv7RMkfXADoEJwvA/4U2yIDc5FiZJqb19bhTKyQEuFjo5RjpqdAxtt+
u0X8LrnJNd86jmRiPs0ON87PWMyGIVXJepdOlrymYMQ70hY4ohFkfRItfBWk
Bpp5xNIIa0I2E/wL41Jq6LxE8xtVf9Bcs4+obSUPyM8ysLVcUzHKFY2u5LGB
wcQKlYpanwnw9VuTBIl+44boi4PtR/qfZtNq9g/o1b8bZATZNHKvY0cpqqPZ
wHSI38h9x7qgBeJd+sZk3I/r3K1nQkEf01wazJdWBcomF2E2g9aVkBiAyWQR
giK+PQZKUQfjb31va1ka4XHJPzgyA3V04wyAbf0AfIzSEgSSlWZ6YbScoSm7
4hMe5mKYyrUIqVw+0Vezi1r2O4Yc3g94quKqMNOiom0BNBJyfO593zQqNqeb
2GsFhOTl7PPwcIyA7j0LoBeTvYYGX2mT2OCX9hQUgRzypymHdzywwBjpUKqP
wIXiKpcz3QTUJmY5MPsN2ZoBaRipaOjBwXIW3roJmiFKrC5nVX+YwykZ3LqK
UPaPcHh46qgn6HluQsIXeXJk5sPryLP095BCWOSHnrJiJ9lUDpTaaXhMkofm
k3eq25C+0bpoETobVntgxrlA2EX3U2hAfDfmkja+R0XvSumdrK1ViYlpBwu1
EHGj62CYr18GSWTdh6BGGaWBdIUNKEwEdwYev1P9SoaUoSRjgccS0Lej+FpS
ZGp6F0l5VAOi8tf3l5kajW8+f/zAgDgYu+0y+t3slHONfPUI1UZkvACnkVRg
USDhIj158Cw7PvpYBQJ+qZ7koxOv8qd0Yt0Yhs582JTHfvrgEYyt9TbAjsne
Y7IO5RxdUBqceYUkDWlSHCrZ8DDmd77qifsnNRA5GUgAqBJSG98McX0iU/Dh
8HblKlCR6nY+JqWEOEJxJiYNQ3DGPR3C75SCKXExKbsWuFDQrsy99OUDSPWN
aSGk0p1Xeg911oN8RwnO9ZW+X/P78iG3p0SpyikcAN1O6a8wPMdclHMeZJfw
AhWoKydFgKJKOD7DQEtnBpAwxQsxm9jIDrrpbGj6q3RaL2bvNYkM0dYYzSYG
4T+2Bo5Xa5PLhcO8XfyYjACfTOlJJ2kOycuDvPotL6vi30lCI3pewd5kWOkd
5OldT19xIakEMka9yQUVbW0kzWztrSUlyqnDeWyWsiCwIvd0PqQ4DHbB04+W
GlXQLcGrJPuhMTyb8xVLrN7A9W8xh7JN8eRMv5t8CTZ8q2UwgqTySj2zhZDl
puZSp9ICHkGsiELRJMXSZEUmV4Yz8PDR2/wgooydheRQpD99DlV2LMQ0TUgp
UXH8pp5Mx+603H0sY/sJcY1Fp/m4gnOUe2jclVdwKPgOkoDCGeWaojrAkp1L
QA53jVZCdNRXEjpr3IwYK+tPsfBidSXczSgBWNMSkPLwwOEXtwTBwjh1zoAA
omXKfiTbPzZY9XCjKWoV022FvlpOz5asmEQJ0nvWV9cVphobPuo1KjpZya4Z
6lC5ZCyXgi4I9VwUUOrlQyhAxiKBT9PYyT6PZ5Rz70OZbTkJckZIaUf6tzoI
R70H7GV/xcc8sheauqxFxTHBjGVJKN3JpeT0fvFQqhF4bdgb716y+e2ncop9
x4k5sNRrycho+yWqeJKsZYwAH8mcZ9mHgOGgKBfTLpF3wdOGHabyAHJiLIc6
75YBCkLR6ev+MLqEM40Vq0oGQ6gtxRl5JE4pgHvPSmCGvlRZUKoezh+BwGJH
vAGhkIvkAKonUNC2Bnv5f8D/JgvdU4bqex+nhGzUv1mwwNUHfeANtevJPicl
lXOj4TUVsk22kQquy9SmhVszzidta/5v0U22xJNBYJP2VXD+G+YKKfcqJEVq
Q6SZlIGFDydasxsD9nnrtCY4mSeSwoe75qnOrIfhlTvYsokxnUgxDpQB1j1G
QVyDfGHVBiYbjfp2cTnB4QbbOucNl/xBHXYlpVJT2pLt3PedlteRn3B+kV1+
lG4kccQP/ufA6MObVIpJUxJQLcoy37dugjXPPaHRerTGltfLRm4N+iMbM1Uj
dyydApleuOYKXhQdRrqfGhi6reWeMmxKtp/IYm+GuaK6415rbWEy8KJzuTU+
vV/TSzUlHuGxqlnh4OjMxLOtMbrFxSpuiYlgbbOg1aRJjnNb0cManpSvKWlQ
WlyXedoK87lbLoJTY8OJ0iT5mfy+MN1gs8veJEeUuI5VAUJ4AF7YRsBhqgzp
1LMsqmphjplyDlDeHRSHF1R9Ah3jYcgtpfrvyPV1Gj4+p+X2YS+XVP1ZQJNm
qizp+70uTMwmUdCHtRm4LIP4W4EIZ/W+K3Z56RU2XOfdyt44o3xKjNImv8II
3ezMlflh9qHYGfVWNZRCSra3ISVL6kPTPYy4ErzUO7o8s5dEbJaaQXtGps8D
TdmLqDI5nRGV4+DJGiALAWwoJsD4vSM/lY4KHgaFjQiOTgPolbwjG7iD0yz6
gaAyqVNChywjz5YNKRfuVp0HIhz9/gNpYqqDlgH1/qBQFQ0tSfKZCxZT9xSZ
ksTw+ILcoNrLjElfw3lwrLXB60pfwvwIaBsrwcN/sI4OzAKrcbQp3HJQcOLR
/DvKC8AJhAqm5ormNzWDD1RSUjD1PZ4EzPxCytFQ8j6rfGtVdML6KI9V62bB
E5O1mwGJ7kur4UQOVYIXtFjXO3tXRW5E9pm7dmLrvSwWPu5H5a22xCjpn5Ll
b5+mr2keIpGyLHjwcK53zylMfDoJT3Ha+uL0x1Zr6WyQ94QjETSPKzezVVmv
qEsXMssJPluvVr2XiudY32ktrkbc+jFqmGac5X9X+QXrROejrSUi4O6zBBkh
LPybUcKyHE2tSm9hoViKwF/O+apMsxhk4dOqeKCX6LmjMUCM7vaGrdAZMM8x
fk6Zf5mxy4+2rCHyIK9ZPFqciRL4Eip+A40p18gbB1JQZkqaJ8WAXV6JATKY
MpEXXkS88J1BjWh9oVysnGTX5lJ1QKIk7P4F/dIh/6FkU9SVfUToypX7e6lB
VJ0zrxa9j9Wi91FRAeNux7JJhwyoQqIxBPAxYYG0800wRugu2NKlqh+n6q1P
ukMMzIPvHljG82j+EHMdUFUhPSDHKlGm1Jh5/ejbuTkTn4PQ6R3TmGvjlSgh
XZXAvBLLAJUOra+lguogZTg0OMC9FXwbKJLrOcEs6ajv1E1VPlBJLwbVs64h
dbPa4Fes2Cwedp/ipXrbj7x6MqE8G3u86MLw6ckEzwrdUINXw4sTPId1O+g2
oS9lhSV9rdxJXh0iOso6wg2ESmjDkX0aRNAk5URDCZdc69F+eRtHN+XuPbxr
14NiSPtzJ62HXRntHfY1d+EDw8rsO9H2a8eMP97+lNBHs4HJflxJfwauXctp
ctTFjSXaUPq1If1bFVHiXTLFgsq3eFXcyujxvSeMPNZ0XKvCL35uhcSNGcdV
sKHGdpX2bIxGFbuPbtA9vjEuEiQ2sXiwvdeRVIFdUWJgyscyNGo2glJB85iB
lqzD+3p3ob41ZYnOBKleWW3VmAP8CmpYR7qJd1WeDMiP/LoYiBiKMlMak4Qm
ubWtQQFX7ybhglQ8Du8olhM0Va58JI+SPD3ukffNg1pwMilvieKVNZVBRk/v
qlhzJewj3DDYryNfxU/CZGb62LUHs5g7j5fVbzQYWPgKVlQqGnUDLfepjVXY
g4LfSvEVYtEjBEujFaBQlO4GjHp+deTvU381SotDRznGNFjwKMfFDjWTiw7L
2BRszlDCpZ7LORE5bA6GpLHB2tQzNXa5czIXQQHY6lNEjQH4SBxHM46XvgSp
OP8jrY1Y/9164FTcQNgVivy+4idIFCBr1nF0MpzMpsm3WG+TPDbMyNnLS9Am
sKi1tITzPlx0VbGf9FIKmVCMnFN+USEENjCRMp4W06H4F4tHQicS16YFDodT
OnafyIoPbFOiUb4uGtwz0v2wuB8h5UKxljNTmUnqKmI71GvRC5nfg8peHrQC
QJLFTXz3Cs9HUEOoMNUdY/uQhDhpyn26AqOWuGzm63htt01+kxuQ1YbD7khC
hNCJETbSb2jTIR6R0n3JQWWzKond9S2n4WLQZNb0VeWzweNOp3Tw0UPm1ozU
JBI1n3xkPisDGbYcptagDzCJvauiMfXqkceDOy8QzIMz8Gk7pUiVVLRquayv
b2hiUuA18b6hoAvxQ/8zY2fRHNgjd6ulEUlIsl4fvU8L+1Np4qhOWuiPQOFH
TxCpCUnmYc+V0VSFZbL02b1IUBbde02ZoFhqDangysFylzA1/FkoK6jlatA2
2h9YnDJlcZFpdndMo74qd5YQ4MQnXmW0AAWKHgzwtVhLh0jqgEXG23FV+1q0
cveikohRnTft1kfjyFU3IIeIjm65HC6X+LOUhXOPE4Nq5IHsR7YDB9UHzvJd
BO/BSI4wM2EhaHy1YnqNXlSTVjiNiu1p6QatBkJOQWLlZNDBnAuyMoODVmSr
P1HTqoCzLUKNV3gp1YwNtSSrupppNCIv4xt1SR5iBRuY9hnejDHphkbmhLxx
CkYbrrZ0TJN0c/BL4JS4vxgUrENxJyAhC0QGNchfNYMQ0qaYfoKrgMsutecc
KCFFVze+xkK1QXux6QVKyP4SnxAW4Fr2SCJLTmxg7yaRvOqcyry5tZYvC7pT
5LGMKEpKwXH9fc/j3Cfk1AYcLMKQemWvYSs23inlKUsSeyqdVuDqoqT6BgrC
OnGaSQOrefYnjNdQq2OdoiiupOsR26BKHt7XQk9QsI1AIndeVLRLfN1pkd8M
pYfpPH4we/agVd+3aY6Barve1nls7ZPs3KNVRLeY3NyoNnOHCh+VCOBrLQi5
dIP3P3yAzz18CrrdSC+EcHc8VyS2y825jplTcDZGOFlqQBPoUnXfPfWd56Sf
RH5ZSCJrM2/yUnofXJiykB8l6i3nHLVoSpBRLcb/6PSqtF+KBDqO0rrzR0H/
JthfELeroln1O+6X1g4rEwLX1hpgeIBI/xQvQ7JAbSsNSqtVlR1VwEKsf90Y
mEWlzbW7gcbKBW1I5EvaGpFh3lr7Gy1U3+8gfhOZXGb7kzvIQewwQPp6BQCa
OBA94L35XskXtU022MVNKH3YQTERORCpHnvceGuVoift3EQ1jsNr5G8/86CF
eP3eT8ILz8hU+5o1j0BzIgCs4zoF9uxED15hC8q5wS7TOKw8SxMVbmcgMcDR
WodUGlWLjeQR8vBWjWBReFErFZOIhRXHPQQ1z+4JLBlOl6OIyn87DomCXcoH
ijn5A5V1vMm2qBJYjZ8HG7lk2NjVlywau7yZ6bvLpjesbTCQr/SU9ro4mk8i
f1By+zUHlSF4rMcNtNIcgw9acCKPup97krLWy+mFvU7qRGGvDXt8fDUYUzHc
chWhH8e1PE3RXenY4BE/zPtCk7cAU5C9PHpNdamPpBw1Ba1bgzfQ3tXxDfMN
2r5+2JBYSsOK2fE1wyJQ0Acvk4GvhDd6xYFqXwta8/gB/uvhydg8TSkZ8WuT
LoGpABgZCHdldJGj/fC4j4mpmHfMv4hb8KrkGp3VHU30/g4jjzcVCkHh0VdU
1GUS40CtYNtp2JPJZMEFLdBhokJD/F5YB1BdjwGVRNHJVAuP/SqxRGY9M0Dy
Kf49uNYYb6YSy+Sa3ne2n6GC34qKS4tgnQGmGtut0KuqyASEErgWGd1Cg80X
TZWcSexYT3Efg/pyWhqK+rahFhOsUCkQoq5arsOUMB8GisytC8j55cjGeBfs
YGfmCv+JXJFN6MHCSLHg684tEx/0ocUjuAVOfY1Gab1KOt1RFXDby8ijxqNj
vbOdJxo3CQV4bVrajbPfMOknJn1wetampXhdHJvjIt/IdIu7Yji2U1JcDTi4
FVMJLg2B2DEds3QjuE3LI/WKYBXJWAJ4lz1ZDU19jYQy8NNzOvLtwNeBmnLB
mD9fzbdJ8ce4l+RMQPo+OB+zWtteMkKTNi+VSiuNIKR58fF0SMULXkos64bU
WpcEv2lDHUbZCabn87ME5U9OEWnweO67JUg5zSkXKPJlfoedJscZnV4TWLY0
aaMLcr4RqW4O535pPXpWVECMnWf+ABL+ciw1CgYxqUdY3HVYViHvxnQEc7kX
MdTYayroDBe1HJ1bop1yWF57zIy9LSqX/7YOK2AjvjUOXTE/Q18sJXFbkLMl
N743dcx0CEMLGisqGmIe2ZaX2tCYYBsVZ2mlbZUoAQPdJ+x9wGjyXGOVTKK/
tx3nOXDgYXmj8bEQZWAdKsL8MXrBadZaQGRFSjSNT+Xaav+jYVs2TdAPcJgk
m95SmUI8ktl1CSYxAlDGBDEqG6IpU8WMdl8IvILluLBmOsqRHnWe2ghyLMHa
tbJhcZhJmNKzmhD7GHTzuOtqCH2E8ZD2NCktvC8mdp+1g1uFTjv0btbNLoi1
1ld49Q+bzKWliXR2pgcsAU9sd6VzBlBQPjyF9licUL1U5pAB0RsitGpkicdY
EJnbPm8wscBi7ENu+G2dBViGFFe8pXQuYWWDa6RWq8kugT1YFpKVp7FG3K6e
Y2a+vZQvnFjRvUHVsJaEECyxMFvmJVghZEHXuAxSiLArrupD0yyWQ62KlsG2
Jo24tOKLD2QtQymxAP2hl6LcR968CJ60NlvA7mDSHPpR7BfGIq1DOhLWyr7N
1TyGY8EkbIa/Z029RIAqvEEQtdZjJwwwwWwTuY2OAtMZjjIo0WFh2oUWrvHw
t+LaZT+IV/I1uumOf6hfn2RLhbqFNQW3oLp9os7fcb9B7/TwhEghm/gmzVlQ
2n6IpBio8Q+sqpMKrtQmTtxcboN4K2r12y/Z0RVUksA5ce85x/djRcskjJQo
bCacJwkNxmEd7YfuhNwFMVukuCaO1rrtTopE4IQlzmWmZh/Km4agLuh7Rj8w
bortcKjcg9RFZkocmU3VRPN7DZ7tENS+Iq8IvnJH4BPOnthp+oaswvScwpco
CD4Y0HImhgEqEjtWkiOQ2V3aOZb68p2As89/X239zKvrY0a/uGe1DTL2uSXX
ynrd3tXfGGvpYncrQ5bzqG/ovWXJFKgeuniPJA3BNj558PwZV6TDS8mTnSqo
nzLmKKeRC7cwLFlvr55Ri/WuhIOFFs9OfXhRCy7q7u2z3uiXqKBwZ0QcAK9v
ZBTLL7xr5SKHqb358DE7voD/e6KwTwPmjn6OMAIO6c9NvRRhlJQGRGDgMbap
eruxI+GjMKCZaxC4fDQV9czgA0HfmjpfTBafUrZrrFdUtim0PBcJmRycb7fZ
2flQiI10Tx9nwHiZYXhmxoJWDd0Tvbd3Iw0X54FkY5ckXPB1aLiX2/mHpMR2
DwfmZW60VVG38FzrNOAjWioEiSLKG6Wk2TBc7Ece2Xmpq9xFuHqFavlh0oRA
rgoX5ipp/Qz3iO9QeBuzPel/Jw3M0t5qj7579tR0cvv8WVRL8jAZ3KTegrib
HpyMNMa2O60JBfKQuTj86/nkJVBd2Y1RHZGYuank/TKDK/D9YN5drzrh+L6M
kg+cGRKVqbP/UkLt/ozt/NXoI/84B2z2yAeFaWF4jlJA15yNbUnXJFGPksSU
OefY20Dd4kwGrQwmTe38qzvhY7Sxdw4jU5tGp4ALEbRTrh3gtkWl6O/c5HxM
OVUv1A/TXSDOmzqApJuhErLHrQ67SI+CWCUkoPCdtGH0NKpJMHIsS4crYAFn
tKzoF2JY+LI1WrWbAJaTyWWw5hCUU/B9DjVWtSCXxtL3cdNWGYYysqPfS6cX
HcaX/VFxTd4j1cbT4D035MaBf4ohiaiLpA97QpOoZQoUMpM6oq0VzPz6KNuU
+ZZW5IvXEZOnj0P3Uk1fF+SQsZyjGjUMFODDIDJonUTBk/G87GAvgyBp/AEl
4G1qn35XS3F5k43ueatX3AlaGEmT/Eb3oOVwK9qsfuyRrRxEt9hBY+1rq9Hb
4khRZVDTNNnsOKVGMLxNyp+gsl+lpcdSH2d6vzSdgXY12gSCboq9TYG0kdJm
fDpnErAOyIKNfqWkcs4eQ+rDa04Lg4DxDs8noWHZPQkY/ti5tpK0QKbCX63a
ZBvJd8dm4mBRC1/Elp2tIlDwuqflgbXw671sSkG/FGIPmhptUCsN2r6OQX0V
P2ql8J7lRcPpRO4RTL0JvIrYhhMiOHj1Ok5mQR+BpCwlA+pd5TJeaboX3Uw2
4aJuxxHcMka0vsmrfEs67ES4lnVf5+iOCpUGyOIjtOmOuhpFdTbVJ6xA1Gl8
ToRWTpq2pxZHMMPoN6jJa7PL9C07P29fHts6prVZcYob0g7jaMUqPIM9a60C
zhFiR0Akqo4ooFqqnIDAkDRUT9YGt/QVVkqmDLDeem28driz3OqdPTigUcA9
u8mRMcnTCSV9sZtbtN7Q/hIhfxjih+tv4cbDB7N80I/z6YNvv/VORO/zIiva
ZsGhAbLZINlZMUKQV1X79HXaJEhq7VG2vCajarJ56INekYs71ufvdnbiNYah
1odgQOSjTlWKNbD1kRKpOSLGn3lnvaskypjkHyAvxfG0jIKTkvZqU9jlt1ad
G3IWWOp9qwuUifQYFmYG8g7DYHaxcTGS/CCR4zKJvcg4WglKcvFkFQy2glOs
gHdHkVFbInck+he9r/XkqmaQZ2+hFS5Nyir+SUxIUwBmHtOP2ggXtmDuWcfo
6IjryxBcUI2omKF9CmmWwjVm/sksJKNRNOcx7rkYU5851amhIId0II4JBAU0
WQU+580W7Ap4liczqvpMEftBR5PwGQoD+Cv1uvvHUh1Yij+LbgcbIu/hDPMI
JGd6jKAkI9DD+cXNE+Rq8N9n2HXhJa5EhyDPgWShcDVrf/3w0hzU1dK3vWYE
4A1qk5WbPD1YPe3epXbmfZEtqJ5PyOSzHCmo0Gik01ENJMVchsRCozxewnln
3vuHFW9zX8mGGL/c+dFUwoxBvsnbpHG8jCTBNAcc+cCKekW1jVirfyEJ9jA1
1jID0nXszRrStXBRRD/73JWNE0B07uvZ3bVWfCeTfFAV3ml3QPj1KUPJwRBL
GWrshD6Dn+TlrN7M8OagNDk+qy9PvPpn2svmwSeG2jM9wLE6WOKWHRKiTMYu
miTIpjI4yL5VXV8XJkMG5MIV02MSVtO+zXErS0yDnMS3No5+0cCEKu6KMmlN
JSrpFZm9zkT3FG8DKkpT7xtqoXzKEyV0lvb+vgNiR+iEnIJa5CqQpcXTDGYr
loYmwkH7pN+HxuLEoBjpTHjJLqTCkLRmVGgdAOFSmJTG82+ae0Jos2MaR5kA
oyrhtp+EqLxDFO46FN6INTePGODqgAdJrPABa/OgjqRZdx35GjnFQSAPscwa
vC1GEzI0YVyvsoWPvVWVDuMjxpqKX5qLYa5qshW+uhjSOINHmXQl09InZhFz
CO2VtQZb7SsMi+yL1qhYElMfXE5navM9TXUlOQAy9kOCEvvNzM7isYyY29fO
7dPfKjPkKyJJUAXfC38luFdFDBZN3QqmIGtKL7IpWkk0ZHcGIKv+yAvZiFcC
d86vmcPFmd3iVmPnD2a9RO3LTfV/nxqeAZcTHjbldFs9BXsxKOkNIw1JSVg/
59xv3DHRk33vSSrHItMqaoFuat/BnFDatKzv9PwOX09PJ6e4WHl5LL1s2Jyi
bMU12ogUr2bNEhYspYpMoM2GUkRvI8+ovtvDnHJfiU9PQX7mCQUbJBEhyHwR
gYOwBURb51KPqq98Z8dQ3497iouzVVEdtI1iHZKSJ36HMSXvHlsf9xJDSINu
p8+ePnrAvSxDbUmKPOHDtgiMKRfDx4e2nAk0KGmGjhYsDL/kgSDXo82xG3Pk
GNdkiNErFcVeHtE125qV+dhalMCZmnlrSbv4RB0c43Ua4zy2DGOmt7FcZ8k0
FjKtY+nIQW+K4F7qT06jCuYUtb2rxePEY/JS0DxhrHwalZBslFwQR3jZx+Sn
nVRRFwbeOo9uaaOcataIBCCLenriHuFvJJzky3hqJesI85e8ucmLNmQ6+yJp
XBTSlzFRxIB8byPMwoZ8dzg8f2RVAjfAASjEWh58QqGI+tAHShNqrAeLnSCa
u3HfG8nDuboq3E0wlGRs7+Px8/EqECGV/YTo6g+OOVn9IFCasQTn+mpSntPU
Ceorhl2uQ5EKOzyy6GzjbgXhHKkpaZV9rhYqOfzW0dtK+p5xy8raaecLapJD
rowIPCBFsdKGZJIQ0yYdZaYmQ4YyQdB5KI1fkqyZgFjwnl7P0m49ARHuQ5BP
2v1D0FS+IBddByqNIOmZvvANhU8ovgnWIac9EbLbN+OJ467cBWYa1x8zBFVH
tM+e0yIqErjWCM7odDjzVRoSaZlTrILWaHHd0IJXXmLyZk2V+CRynx+oIw/x
Wlko6SoHtuw8cJOrj1ENDPEzMqyTkm6x4OdtTX3Lpe5L6yOqUuYZJ5l0UdDy
stnxy8XFCZ05/EOGl0uknciY8cRYLLrfpvax36ake5itUSJlFTEqiugEX4aC
o4ucqgfLCWHrQchZ1uzWSd1frD5snLZYCnG2PMy0zjGXAE4O1hc4D47yqaSW
h1B9nswB9ZD4QnFnoEpTxKKC51GnAIt1JFxYUAKNkI5QkJuCcU4hUsWGLCIp
27rsA2qW94YKfvkAmnSCTVnSTz61JL3koW9CR6Jh9BRMgaHbq7qUAzMBRtTF
tkD6zLrNTFvv2ufEWSztoX3NbRoeu+yi84qKbBdR79y4wnwKyIiAfco2Wxt3
ocvlawIjfXa+bVbHeVDoy4PpbfIVHUP8vSmuKNdAJC0qhBR14ioq2Lt2LmAQ
zKUbdlVPOzT4BvTqoqZahKywvq7rPQKpZwueHt5o7i3LPUFgrMvggWf1NhUF
DHTx4jLeU/QBkAKZt2NaapSBHSrFmA6oU71eN31ZOc8o1Q3kM9e824f7eXMR
cLWjNY5IGw3TjWpIpPPP91yWYGM2gZYwmP8wtCJ6QiG9jrnWAke60/IZzK2p
8T1zZi11zE53VWJha8zK4+awlGdDDVAGiYFp49DWzGK0aJAYbgfvqj2mTCXq
2KUfEcrmJGqAGYpLS/13PSBug8yMwDa9Eg8faubyz1zaTjlqAC5uAW7SRbXc
jVfbjsRNCHEg++m78zMbMRdtCpNFp9aCiLrQ39GABumCOwBRVwot3GU3rY7M
EkIjcdUTUslbOKVW9kA7T2PD5DqK4+OvtMR/mp5P2orU2AqVWWwZMds+i15X
+Oh59EJb3AylDPn2hFtJmoeour4zPMce0TevnV6lGDg1GbA31MGNqxylwGMf
k7reuPWQMUkUM9zUxqm8NWZkKBjFO0meDi7NkeR48N2ZcuyGhWwJ7AzIk9zZ
wiBCZZfgssXz1O5hv/zyR2CQzx89/ZYiZ/1ySblaOHThZt4RIxtEBR2WDWhb
eKmqEaqh0k9YGCI4zZI8DMr7mHIUPzbdot7MDGNP+wnfUaOo8xWApYTKHZxG
Y2F/FV14Z9SC0PG9qk0MVDVFrivaXFODUbTtiTdpOyu4JzMu0E41/4dh6Dkj
r7yETF/QDsyQF5PJDEzwHWzkaJ4kFi+GhfXGKsX3onnVXuXXDqsvMYpcyk9x
HgGD5dE5pYZj4cPRrbSTJAbGrXmYO/DlABOuJNdUcWO6Dg4XO4eJX6rbBfa1
7WCeMl2R8xRbMhFiswDVdDEKMM8W27yopn4Rwlb9Ipg0/fQHJe/GJxd2le0h
YQyysUlnRXZHpN9EylOoUPHpoNuO1UbiWj3CikkHyTkFekAGU6POsstoOKe6
GqbQsJ9VHcitix1QpssZtwHBaKPCKUzfhiJKZqMc/W2BNck7p0UHB/Vk0vJD
dKVr1NBb3gBkSmGd8ML5du5d69RranZJ0BifZGkkGC/GXhEq5hV0FEmzPegb
JMyG8KAm+E9b5xkinAtrxlRBQUu6WTDtfX0/Pmq37qoHsjC28arYkwTri04k
5tot++2WYn2v7J/Zvm8I5TXl/RnDrND+JWPSyb39+Pq1ee00lEoyhq/i5UsM
48KV4J8q1L/CUjy4LXVd+m7eFu0qnNyYAYM+363aYlyXLsM2vzDk8VGTr+Gp
oyR7epodcYG7bzDr4yjN1jiZenpI1hdtgdRS5mpWitrwBi/K2bJu+5AvwHZV
ZMlMpWi1XjF5U8inDYm+Uw9MBUEGHAfkaIvF5/amEBFcFpIEnQR5NPLOUBLp
ACVHqrbI88ePntow6UOUuyMuNU6iU1eEUN1929PabY38nLZzSOITI1MyMP0u
Arkn9KBF6W593Uo5tmCQU0yW3MxTziRDQGPT6Z5cY1m8vOPG28SZyPdYLBsu
u4wd0bjMJczFtrrHHvfw47Leoi2vre4v4oSQYchc7vxk8n0dgbkHPnwJCntn
IjKXK9C/0PDbYWlNHJ/gBGlfQ9xABidSyXyhSFhOy1pa8ElERpfVA7mMUMdQ
GqlHF1CuvuyfFOv343HMdVlv+yQZTIQBF5VDKsXjxGzBPchyTYxImjfzT8bw
vvIGBSC9SmlsOrobPp6nlc9zH/qOlJQ4uHMv8lpd2Wi8X/DwzDOEPsOYWgVG
AiiZT1ka2Qk2N6P9m2PjmPHTAeaw3VLCLVKHcVqkc2g1f4EbIRU7NxWmxRao
jpB2FLd2bz6kaGpGHnpl4q6Ihn5/a8v7anjGxRV8nHMutyYK1ajniYk9YEZD
gN7Dsshm8ZORMOjL0F/uNpTCyoXGqDfuoDIIHwCbQBUVoGwR8mg2P8JuKFA1
hdfELe/ysQqQSYNYqSDJR86kNnYg4VKPnUAEFGG0Djny7PwN7EQazjDwzZTB
lK7gnc/VJIeSPdB6b5P/Ewy9L4Hc1R1cwbFXCxQHxmfLmngRFff1Pk5Wdun1
Jk6++Auwcoe1/wzUZRmKZlr4gNQHaZNao/hIyc0Q6K7MJ2c0h7Ym14oOT8+H
dygrrkaLRUqvn7Tg6xj+KTkh2+dF0T9EfjFG6O93OvZSj5Hl8pDMRKx9jBbe
dQ1iEHmC9BJxpzUv6+relVKeYOjnmssSiXFuaHNhqZjrdQfy2u6OvvI37Q8l
hadYJ/LVtNhbrGivnM9w82/ZIOhIg0yCtAhoTbKHmevYwjJRQUvkNuYFHkBP
fhnKrLSZSRuqWlBtucFcgeYK6qHE+dFGDSX6OJeb3SmdJL5FuBixO7RrAuFZ
fFyi7qJmmNq7M8N9h+k57UxFQdOgmXHDbHKvE6HJLp5fYB2yjvhbKINzIQmF
qbLDwJDWAndk98TJQnhq4JgrLeEcMVQKRzK8RVwwtRZ0LssxGSRRIW+bUYUS
qs9Dc2U7bqz8cRLcUMigLmw4Nb/bZA7T/YhQSePKS5F2yNaZo+rhkunzbDW/
TuaBlLEi5yTD3W2JXdqZeHyW/zIrZjd1fQ2s0aFqXpDydpcckttIPoKQ70fX
bQUmriSghjw9A1tupCZSlKzpJb2NAhnUq0e6wkndUUEzyWDTPnF6o1SBzaMS
S6zAjtpM3g/kCTdWQAJgUVuZIxKPA75DdJyHQUlTNIVWhtjisJUpJhLhzasO
lFyXBPhVAnpWwl3sr5yHa6GpGVe51ESvWDMMYMKivUYj3ve5GOKcPLYz9qZm
N7C6mpTt8VpWpkifThQ3CUvE5NRMVLPfvfVEofXIWRAFSwZeBHIeyEnmW0os
/4od4USXW+DKIcZE4/sOe5p0DwNjlwkaw6eSYiuA2Tg1kmIYBUklbYXgfikx
Kdgw0gExdZ1jGUnRPv2Vbzbvi/Wp85MCo+haiisJ+ZwXJKo7L1IolmIXTR6T
bZ1Z3GCAzrAlmISnadm+1mFAEtFQaZNjVA3u3E32OikGK1RypTd4hksl0Kj4
oW/8xAIvInFfGkk/DC1t4wV8kxwSoXDY52pmHdV20Li3NktmhwLNfsP97RXN
5SurSznoYttw6IUYvYUfJD2KFaZsM2QDHNhC5N6cPQUZsQVDt7vaGYiUqcEN
soLwvtORejsU7KwUD8x5YqTt4CYeSJMLsZKg02HOBy3GfXEpc/JDqKbFvyKU
NwNWTbGIztfmZD2x6FBPITowCAazMCTfyD2F/quiaUmoJY4riYqTtBWblDWL
r10HHzD/myJhHBnSJIhRzydoreEHoUpPwdNpHahn5PVCzTFvDwqD6PdbrBJ/
32ymI/4Jr9p5KMqdCdYNZhs1I1zWSg2kb9iUgsTfR8W2jz8wXLhuU3jIolc+
RFX5ElfXIRmNJOlt7M1SQH3U7i99TpEncFL2HEI1mbikpp5ljBoQU0Ptzjv3
VB8wJGIgaKAzUWSamr70ra98zmf9NTwhqQuYi9kQrIZbizAK3RoYIzgEY8Qq
L86e81JSJFTr9XxMMzATHIArqK2whXWhtko8W2KOHBKUyj0huCMIY67oNiOe
FI8tddAcBYmSTRl6RtdF2/T7boTJI/vqKwuFhmVTyXbMmOdLl/pgE/8Z24dp
803T3DZwuAEHMaXxI7De+G5iL+4bvHpjBouh2w0aQ4TeiaauxsZ9O0DFlUEs
VJS9BfprCUZBF/cMolUDYwKCNaUCLvtle2iRQU8mb/DGYl8LrYTlzT0qoK6R
Ek4Gpx/59DdT5JxMA/9EAhW5oqIrIPRuPfoxwaN79Kxu4VyqDNvkytThQFnR
hHqnbzJZEhPukooKI2FY7C2dcxpOnRrKxYkk1Qhtw0wWh6oaOmqMsda4pefg
+AtrTmzJS98w2xgXycWw+rMiZBHoQVUgg4qaN8uiaziVu/S43gGwOM6VCJHt
1icj4Iik6pmyRPQglkqEpW21objfqhBRC8pZjYTnvrCPc6yT4cFDngB9XrMn
bacSkOxdv/IpN1pDnxUXwSwFzad2q8Ssl65ym6LzEd3BzVTVlHEgBEItCaQY
7diX9xmhN34VttB3AMilYJlKDYG+8rXOVM+KNVlGASUlVe0IZEpwfW30Qw3E
SQj0D7ecKVp6b7FtHMZf14kYa20NIRNK00BhzSZQSwVfS7f1yK2o8WXhtEkV
NZPWwHXeXkv10R1KrZySabzSr72w55PvQdWr2UD2B6EzCLRKYkgkOG+wkE4o
7Qwc7tBSdTJ22jDvaKaSgUkSRctlUB2+lZmR/gjUvYLToLIzbut9pp0Ludoh
ffizb2f4WdisLyxGv/Ffx3UVB+FKb9D0VQC5Pnv28Mnnz/Qsg7q+ffzsgS9K
oVU76G5LhUWOUwu+mBqlFHgeMBNyqWDshathhzQmZGJNsWPFJ03SoA45GPCu
mwPmDwSyD11m7G5IDRe3/jl8/1ninCR6XbOVkl33bAY+ScUchIJ2X5oCUBdZ
7cP23IQE8jZgERoMUElmLo7bBvJ9kQk0UMpocL85PlHzOsWIDUAe4YcEQ4oF
ILaUivQ3KXmgYETvuoxSWqlOjE4BqzXcApnamjKityCuFR1J65xrUGnDNxQv
DBc4xmo7v/yCmgRM9ufS5Q1wn8+fTww6h72hrWcI1GBh3eS3SwUnV8FtFnil
egtNNJDXQ+VR0c0a+lin/tVqbT+igBWlK/m6tRici+q0ihYpJS5UJLNsUBtF
cA8Fl17J0Z5bi/tbDUEtmUa4XE9VyRHZ+HhoJefLHjQ9xRglOF2hMUs4dYJg
j/WFYbxYKJMTXsy1xCyhyXuIk3WdokLWascUEp3/wj3F5amhYO8qffOzfvNZ
CrAIzzF1KMfouPN4XPl9dhQBkPG+X/x4/md5aAe7UR4FC2akoyGLKGZGmhDF
Z+g7tCVMw7uK3YBjEgVfUSFoOiiq2bviSqSUPKWVnKwdwf4c1D88qi5GB+K5
aVWVsqb5MKlK10ZcXmENV9LIIifH1PQ4ncWe7lvMsahEm9T3VB5LXtxIN13x
BKV3T+6LFevs6Kw4uR53EcZGqSahelT5CP1rKuTGtbJ8wVzOqPZOC8/lo15j
5NdvfY0A1cKS24YCW5rKUqJ0ybmLUpCWS1SEa0RBsfjy6UERh9LYUHLFtBiS
lhRjr1p0mngOHKxLnejCkLQJjaNslcBG1Yrf4wmye+HaHQKSseemlsdkN+ce
NL5xmtIopIVymKpsOoz2tif3sawp6TT11vtMRw/gK/hatAWjt1TRzuxAa0OU
cXSzfNsQf6PJ529YHLs7BXJ9FyfbsT2HM+YbEjtufXmFsBqPQrIC+raWYnmi
4xRVhG7FotmvLy0LFGXo5wK4Ydl+ZuOibgo4mFQZSriPd3abyvge00cOtbj6
msnIXZhG8zF08PH8MUIH7c/FchIvPUleUycmqZ9sfjjT3F0BzHkXQpdAfj3K
l21FtCj4LlITjb3TptA+/yC6f6aLylhOXBti+LwFHXbOLX3JHkGka//ExEvk
zzhAGYSojjGrFXejqQgS8GZx6iObQD2cr0kBsBNToT4f9C26d8OkCQdVuzAu
VXQ1AXEQdNCHhgZYUx+ficsNf3htqlHX0pltCP36WvCo+It0DWSsnC/eLtI8
/8lHjP4QlBO2fMrPCGn1e6+vvtd+eJTJR7hfpV/FX77NperdB++E9AmzF/jX
WwavvHdbFCMHKtJlf/xCBsZuW+H5F9mjB989hs+Gw77IutX+m369h2/PKOWE
5MsLLmrgCU7eAQ8tqNYlcQnKG8fSUVyvkcbFFxF3VSFhqrP5MplgkdMeIZEc
vc/X8K4jho9gSHZEIbLIaF+oArWD3OgykakFtz9DdWU+yYAX/NfLl69fgebC
p9H6b7PjMDInI+M3aAf6bwhvPafOZHJ8L8yAxxHk/WQymc1m5ItEWnnNpkAm
pgAbhUHj8pf6pZ24UbSIl6b2hKjh2s6WrzBaWrv8r7Avx7d1U65n7QoM1JP0
ZWbs+6xcfKVL582+NTOgqs/Vpuy5y+MI/B+bTdX5bjKRfzCj4NrHjJ2SgOBP
xexVkeEjkqXWYhy03yGmruxbLi2K9AK/aAUe/h5mlDfUEW6dvVz3IjSpLXVI
lsF0LjiQbUPGP6xVp0I4gS6tSJBt8mWD5YZh4AIzJChwSK53AVlTfuzzxwSq
fkfgOXIXhT6K6E3/m6u0xcTDBw/+W1ZpVvISriCVFcF0dJkJCR5rb5LggAWp
G120UrZKVoivZkNE/hnHoqN2yHTKmkME+kGxzVzFoW1KiiUEoYk0M68h+YvO
YXbqEDXRYM6MRYkFiCMMA97WFFa7vTpYVRnlUVH1MTCEQu9Es1688losza6l
/REek3WzeHeSr8LyTkMqVLvKmzksTkwwnTx/AcaS1ODgxn44G1LcBiotv1dL
DHFWOBoj0ZZzspTEWG2EDK5MNCIh2iLcdc3FPsiT6n3sa2QN5OUidv9aquu9
GJkjA0uQ9PcFbiV8yCfIaQtRHWc8/Mqr5LRnXdE6Y/4Ct3O3eQnv/JNHtjC7
N0gXQjVa6/R4PPf5JICNSD+R1KMIfRGnAcPZ1XInEfjSKzWrR4e7s6DPZs2H
ohAGznA+fnd6eSGYjRPUWwzYKa4MkiNgtr3KTt+/ThDNM4l5wYd9Y+BSjdtS
dTOR7lquFQZASXEugmnshFZ500RgDNUANLmZzsI3pE+D/zeo36/nIKqTFt+n
Cw4iYOA/Og7tOOhLHNt7dNXvCEvX4XIr5TbcQYlM/0FmqsLL4Nq2hgDkLcwj
mau7ULeVneymKtzbxTlewnIXEiCil3L1L+xYSkx03y9hadnRsqlvYciZVEQ5
glW3f8iMaAnyJM/EVzaT7DHcIfIHytOG3Wp+GZ7dou/qHaVoSTMRqS1PFw4J
BCQBEQvF26J9psvCduHS8fVa88EJuZQHkE0yKhUpR7w2AuxpA/z7Nn6TjVRq
BT6fLXYYq2C92FtubkcOCGRgSKdkeqJvlpzvXEO/akGCNQwaxDKXNc5vGGAg
+UwAog25dDCFmNKUQNIGNtp6nlUIoqhjeXfrCkFN5c22V79SsSPbZ+359h+k
xxOGbscit6iYcFlk4tlUUg6nQL4jxiPwxMQBYzAx3K1VAiGS9jZQEFOPlvYZ
uynoTomjhJnybX4gYR1oy7rJbGSTWKOoATXZJ1gG03vRaHwt1sziRiqlqM4E
24DAqoAdIYhNfqsXwHtCTG9QLcNSwA5sr7iwSBbwgFfUAzvCPYmGAetbaoFe
zi0RX8qZrQzibWkpCcJljLH1lYuq/gw43Ty7rKfqehbxr4VXDY8IXpKITap6
EY5ScGliqlORAB1W3W1tvkIGQiHnmwKV6U1frVgpECWDUwBSNZML0IIO2nAZ
1+8xYX+Jb1yUWOdv5X7fUlHa9/xDUjf0j9+u0qqTUhx1crpT3RMfsbxnPtnx
T98vTuYZhX5QOzrmW5GXJyj+uhKLxKode1V3QCzqRDQT8fLMlOwb+OtaAoDi
f/WBFalqDCz9EI9YGzXMN5ttORxkiszgPChQ/ujBwwcS9xjG5ALV0e8pSBs6
Y2TJq7kMJxfm6cn7SR2/qIyBSMmWY1IwLqqM5wLJizV9vipw+cjXkV4+yaPI
FRWlszC8MGdDY0jTWNRBOrX5TQhdtjVe07jUbUsJFnVJq36RHqHQTECHjIg9
hXSqW970WpbcGSrs24uTXfuKJXL+mEK3DLAOz4RCCCDfi7X6W6+KPS4RifQP
qo0yXtDrdF29x157wsET7DjGCbRTeEuZfzOy+yWEnJtaYyAPXYd11dFt4Nve
kZuUHwILFfNTmp5O2MtZrzTybfGUK6mypKwU+1zzD4N5hz7R4a0mcUSwcylY
wUqP4bnH2Bj2xGRc7f073Ne8gavNkd1msl/o4NFXF/f6UY8x+xyoiiRX+WCG
p0BZVoO7kTI3IYZNlgDnyt9Y2gOeeLpgSc6D8Rla/Znxf/SGWCv18XFq6Y7r
PF0IN1EFzRA5VQrGZBbGkNeR8Djm9+EpogydUfIbbi1K7RPLtkPuvzG8ed/Q
+1/Q6MfJUPEIykrnkxE90ndewRI0ocgb2jrM1O1IekC8aXKt7APDQhZsysE4
fovGxtAvh7+fC4kG9FTUlIAZ6FjpJHOMcmssYtznfJHbJ/tQU+NMwfNIwEUM
B2be3qP+gfV45FHn3P3J+PSFJPFN4m2mVgGqEMzvUP9+m843PgOtOYLSrxVk
KxlJMzX0b2QF/r6NqhTZYqXIGvJnTH55we4Tt/6nI9B9W3dE/ry8uvbVBHx8
hLkvI1vYXfl4GhyX1lf5AtSCHAE0P9bX0+yycxv46yea8DR7g3HLN6vTHKyp
A35bbLM/uSrPOYD6Y4n/+lOBrs1tPrezWTRgNWSnfQOqR7OefY9aAKkuWCFD
pBwmR4FydeNCgvwl2eozKQN3i/d7XW8DRj9+h584DS1os1aU95vC3Q7qighm
H6MfXAdQunRQqVRCliMaE+dIghMDBpxUQhFcO3nJY2AdjkARivtDdzaORzhr
KqxkIQuT/wtUWl4w2QsBAA==

-->

</rfc>
