<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusdtls-bis-13" category="std" consensus="true" submissionType="IETF" obsoletes="6614, 7360" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="RadSec: RADIUS over TLS and DTLS">RadSec: RADIUS over Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-radext-radiusdtls-bis-13"/>
    <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="M." surname="Cullen" fullname="Margaret Cullen" role="editor">
      <organization>Painless Security</organization>
      <address>
        <postal>
          <street>4 High Street, Suite 206</street>
          <city>North Andover, MA</city>
          <code>01845</code>
          <country>USA</country>
        </postal>
        <email>margaret@painless-security.com</email>
      </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="2026" month="February" day="03"/>
    <area>Security</area>
    <workgroup>RADIUS EXTensions</workgroup>
    <keyword>RADIUS</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 56?>

<t>This document defines transport profiles for running RADIUS over Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS), allowing the secure and reliable transport of RADIUS messages.
RADIUS/TLS and RADIUS/DTLS are collectively referred to as RadSec.</t>
      <t>This document obsoletes RFC6614 and RFC7360, which specified experimental versions of RADIUS over TLS and DTLS.</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 62?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines transport profiles for running RADIUS over Transport Layer Security (TLS) <xref target="RFC8446"/> <xref target="RFC5446"/> over TCP, and Datagram Transport Layer Security (DTLS) <xref target="RFC9147"/> <xref target="RFC6347"/> over UDP, allowing secure and reliable transport of RADIUS messages.
RADIUS/TLS and RADIUS/DTLS are collectively referred to as RadSec.  This document obsoletes <xref target="RFC6614"/> and <xref target="RFC7360"/>, which specified experimental versions of RADIUS over TLS and DTLS.</t>
      <t>RADIUS is a widely deployed Authentication, Authorization and Accounting (AAA) protocol defined in <xref target="RFC2865"/>, <xref target="RFC2866"/>, and <xref target="RFC5176"/>, among others.
Deployment experience has shown several shortcomings, such as dependency on the unreliable transport protocol, UDP, and a lack of confidentiality for large parts of RADIUS messages.
Additionally, the confidentiality and integrity mechanisms in RADIUS rely on the MD5 algorithm <xref target="RFC1321"/>, which does not meet modern security expectations.
Although RadSec does not remove the MD5-based mechanisms, it adds confidentiality and integrity protection through the TLS layer.
For an experimental version of RadSec without the need for MD5 see <xref target="RFC9765"/>.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</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>The following terminology is used in this document:</t>
      <dl>
        <dt>RadSec:</dt>
        <dd>
          <t>A collective term for RADIUS/TLS and RADIUS/DTLS.</t>
        </dd>
        <dt>RADIUS/TLS:</dt>
        <dd>
          <t>A RADIUS exchange transmitted using TLS over TCP.</t>
        </dd>
        <dt>RADIUS/DTLS:</dt>
        <dd>
          <t>A RADIUS exchange transmitted using DTLS over UDP.</t>
        </dd>
        <dt>RADIUS/UDP:</dt>
        <dd>
          <t>RADIUS transported over UDP as defined in <xref target="RFC2865"/>.</t>
        </dd>
        <dt>RADIUS packet:</dt>
        <dd>
          <t>As defined in <xref section="3" sectionFormat="comma" target="RFC2865"/>.</t>
        </dd>
        <dt>RADIUS packet type:</dt>
        <dd>
          <t>As defined in <xref section="4" sectionFormat="comma" target="RFC2865"/>.</t>
        </dd>
        <dt>(D)TLS handshake message:</dt>
        <dd>
          <t>As defined in TLS <xref target="RFC8446"/> and DTLS <xref target="RFC9147"/>.</t>
        </dd>
        <dt>TLS record:</dt>
        <dd>
          <t>As defined in TLS <xref target="RFC8446"/>.</t>
        </dd>
        <dt>DTLS record:</dt>
        <dd>
          <t>As defined in DTLS <xref target="RFC9147"/>.  A DTLS record is always contained in one UDP datagram.</t>
        </dd>
        <dt>(D)TLS connection:</dt>
        <dd>
          <t>A single (D)TLS communication channel (with DTLS this is a synonym for association).</t>
        </dd>
        <dt>UDP datagram:</dt>
        <dd>
          <t>A UDP packet, including the header and data.</t>
        </dd>
        <dt>UDP (datagram) data:</dt>
        <dd>
          <t>The data payload of a UDP datagram.</t>
        </dd>
        <dt>RadSec client:</dt>
        <dd>
          <t>A RadSec instance that initiates a new connection.</t>
        </dd>
        <dt>RadSec server:</dt>
        <dd>
          <t>A RadSec instance that listens on a RADIUS-over-(D)TLS port and accepts new connections.</t>
        </dd>
        <dt>RadSec endpoint:</dt>
        <dd>
          <t>A RadSec client or server</t>
        </dd>
        <dt>RadSec peer:</dt>
        <dd>
          <t>A RadSec endpoint connected to the RadSec endpoint that is the primary subject of discussion.</t>
        </dd>
      </dl>
      <t>Whenever "(D)TLS", "RADIUS/(D)TLS" or "RadSec" is mentioned, the specification applies for both RADIUS/TLS and RADIUS/DTLS.
Where "TLS" or "RADIUS/TLS" is mentioned, the specification applies only for RADIUS/TLS.  Where "DTLS" or "RADIUS/DTLS" is mentioned, it only applies to RADIUS/DTLS.</t>
    </section>
    <section anchor="radsec-packet-and-connection-handling">
      <name>RadSec Packet and Connection Handling</name>
      <t>This section defines the behavior of RadSec endpoints for the handling of establishment of a (D)TLS connection and sending and receiving RADIUS packets.</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 anchor="portusage">
        <name>RadSec Packet Format, Default ports and shared secrets</name>
        <t>The format of RADIUS packets in RadSec is unchanged from the format specified in <xref target="RFC2865"/>, <xref target="RFC2866"/> and <xref target="RFC5176"/>.</t>
        <t>IANA has reserved server ports for RADIUS/TLS and RADIUS/DTLS.
Since authentication of peers, confidentiality, and integrity protection are provided by the (D)TLS layer, the shared secret for the RADIUS packets is set to a static string, which is different for each of TLS and DTLS.
The calculation of security-related fields such as Response-Authenticator, Message-Authenticator or encrypted attributes <bcp14>MUST</bcp14> be performed using the static shared secret.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Protocol</th>
              <th align="left">Server 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>RadSec does not use separate ports for authentication, accounting and dynamic authorization changes.
The client source port used for a RadSec connections is not fixed -- it is typically an ephemeral port picked by the client Operating System.
For considerations regarding the multi-purpose use of one port for authentication and accounting see <xref target="radius_packets"/>.</t>
        <t>RadSec endpoints <bcp14>MUST NOT</bcp14> use the old RADIUS/UDP or RADIUS/TCP ports for RADIUS/DTLS or RADIUS/TLS.</t>
      </section>
      <section anchor="dtls-requirements">
        <name>(D)TLS requirements</name>
        <t>RadSec clients <bcp14>MUST</bcp14> establish a (D)TLS session immediately upon connecting to a new server.
All data received over a TCP or UDP port assigned for RadSec is opaque for the RADIUS client or server application and must be handled by the TLS or DTLS implementation.
Closing TLS connections and discarding invalid UDP datagrams are done by the (D)TLS implementation.</t>
        <t>RadSec does not provide for negotiation of (D)TLS in ongoing RADIUS communication.
 Instead, a server port is configured to always require (D)TLS.  Connection attempts to a (D)TLS port which do not use (D)TLS are not accepted by the server.
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 therefore 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 TLS versions, recommended cipher suites, and TLS session resumption.
Additionally, the following requirements have to be met for the (D)TLS connection:</t>
        <ul spacing="normal">
          <li>
            <t>Negotiation of a cipher suite providing for confidentiality as well as integrity protection is <bcp14>REQUIRED</bcp14>.</t>
          </li>
          <li>
            <t>The endpoints <bcp14>MUST NOT</bcp14> negotiate compression.</t>
          </li>
          <li>
            <t>The connection <bcp14>MUST</bcp14> be mutually authenticated (see <xref target="mutual_auth"/>).</t>
          </li>
        </ul>
        <t>The use of the 0-RTT feature of (D)TLS is <bcp14>NOT RECOMMENDED</bcp14>.
RADIUS packets may contain confidential data that should be protected by forward secrecy, which 0-RTT cannot provide.
If 0-RTT is used, implementations <bcp14>MUST</bcp14> also implement protection mechanisms against replay attacks.</t>
      </section>
      <section anchor="mutual_auth">
        <name>Mutual authentication</name>
        <t>RadSec servers <bcp14>MUST</bcp14> authenticate clients, and RadSec clients <bcp14>MUST</bcp14> authenticate servers.
RADIUS is designed to be used by mutually trusted systems.
Allowing anonymous clients would ensure privacy for RadSec 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 modes of mutual authentication, which will be further specified in this section:</t>
        <ul spacing="normal">
          <li>
            <t>TLS-X.509-PKIX</t>
          </li>
          <li>
            <t>TLS-PSK</t>
          </li>
        </ul>
        <t>Independent of the chosen mode of authentication, the mutual authentication <bcp14>MUST</bcp14> be performed during the initial handshake.
Alternative methods, such as post-handshake certificate-based client authentication (see <xref section="4.6.2" sectionFormat="comma" target="RFC8446"/>) with TLS 1.3 or renegotiation with TLS 1.2, <bcp14>MUST NOT</bcp14> be used to achieve mutual authentication.</t>
        <section anchor="tlsx509pkix">
          <name>Authentication using X.509 certificates with PKIX trust model (TLS-X.509-PKIX)</name>
          <t>All RadSec server implementations <bcp14>MUST</bcp14> implement this model.
RadSec client implementations <bcp14>SHOULD</bcp14> implement this model, but <bcp14>MUST</bcp14> implement either this model or TLS-PSK.</t>
          <t>If implemented, the following rules apply:</t>
          <ul spacing="normal">
            <li>
              <t>Implementations <bcp14>MUST</bcp14> allow the configuration of a trust base (i.e. a set of trusted Certificate Authorities (CAs)<xref target="RFC5280"/>) for new TLS connections.  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>MAY</bcp14> indicate their trust anchors when opening or accepting TLS connections.
See <xref section="7.4.4" sectionFormat="comma" target="RFC5246"/> and <xref section="6" sectionFormat="comma" target="RFC6066"/> for TLS 1.2 and <xref section="4.2.4" sectionFormat="comma" target="RFC8446"/> for TLS 1.3.</t>
            </li>
            <li>
              <t>When the configured trust base changes (e.g., removal of a CA from the set of trust anchors; issuance of a new CRL for a CA in the set of trust anchors), implementations <bcp14>SHOULD</bcp14> reassess the continued validity of the certificate path of all connected peers.  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>
            <li>
              <t>Implementations <bcp14>SHOULD NOT</bcp14> keep a connection open for longer than the validity span of the peer certificate.  At the time the peer certificate expires, the connection <bcp14>SHOULD</bcp14> be closed and then possibly re-opened with updated credentials.</t>
            </li>
          </ul>
          <t>RadSec endpoints <bcp14>SHOULD NOT</bcp14> be pre-configured with a set of trusted CAs by the vendor or manufacturer that are enabled by default.
Instead, the endpoints <bcp14>SHOULD</bcp14> start off with an empty CA set as the trust base.
The addition of a CA <bcp14>SHOULD</bcp14> be done only when manually configured by the administrator.
This does not preclude vendors or manufacturers including their set of trusted CAs in their products, but the enabling of those lists should require an explicit act by an administrator.</t>
          <t>RadSec clients <bcp14>MUST</bcp14> follow <xref target="RFC9525"/> when validating RadSec server identities. RadSec servers also follow <xref target="RFC9525"/> when validating RadSec client identities with some additional rules.</t>
          <t>Specific details are provided below:</t>
          <ul spacing="normal">
            <li>
              <t>Certificates <bcp14>MAY</bcp14> include a single wildcard in the identifiers of DNS names and realm names, but only as the complete, left-most label.</t>
            </li>
            <li>
              <t>RadSec clients validate the server's identity to match their local configuration, accepting the identity on the first match:
              </t>
              <ul spacing="normal">
                <li>
                  <t>If the expected RadSec 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 section="2.2" sectionFormat="comma" target="RFC7585"/>.</t>
                </li>
                <li>
                  <t>If the expected RadSec 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 RadSec 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>The Common Name RDN <bcp14>MUST NOT</bcp14> be used to identify a server.</t>
                </li>
                <li>
                  <t>Clients <bcp14>MAY</bcp14> use other attributes of the certificate to validate the server's identity, but they <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>RadSec servers validate the certificate of the RadSec 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"/>.</t>
                </li>
                <li>
                  <t>Some servers <bcp14>MAY</bcp14> be configured to accept a client coming from a range or set of IP addresses.  In this case, the server <bcp14>MUST</bcp14> verify that the client IP address of the current connection is a member of the range or set of IP addresses, and the server <bcp14>MUST</bcp14> match the client IP address of the current connection against the presented identifiers of any subjectAltName entry of type iPAddress <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>Implementations <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 client's authorization <bcp14>MUST</bcp14> then be validated using a certificate policy extension <xref section="4.2.1.4" sectionFormat="comma" target="RFC5280"/> unless both endpoints 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="tlspsk">
          <name>Authentication using TLS-PSK (TLS-PSK)</name>
          <t>RadSec server implementations <bcp14>MUST</bcp14> support the use of TLS-PSK.
RadSec client implementations <bcp14>SHOULD</bcp14> support the use of TLS-PSK, but <bcp14>MUST</bcp14> implement either this model or TLS-X.509-PKIX.</t>
          <t>Further guidance on the usage of TLS-PSK in RadSec is given in <xref target="RFC9813"/>.</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, as the shared secret is associated with the origin IP address.
With RadSec, the shared secret has a fixed value and multiple distinct RadSec clients can connect from the same IP address.
This requires changing the method of identifying individual clients from RADIUS/UDP.</t>
        <t>Depending on the trust model used, the RadSec client identity is determined as follows.</t>
        <t>With TLS-PSK, a client is uniquely identified by its TLS-PSK identifier (<xref section="6.2" sectionFormat="comma" target="RFC9813"/>).</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>In practice, identification of unique clients is not always necessary and could be based on the subject of the presented certificate or a subjectAltName entry.
While this identification technique could match multiple distinct certificates and therefore distinct clients, it is often sufficient, e.g. for the purpose of applying policies.</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 addresses or ranges.
One example of this can be to restrict clients configured by DNS name to only the IP address(es) that this DNS name resolves to.</t>
        <t>A client connecting from outside the allowed 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 handshake 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>See <xref section="6.2.1" sectionFormat="comma" target="RFC9813"/> for further discussion on this topic.</t>
      </section>
      <section anchor="tls_session_resumption">
        <name>TLS Session Resumption</name>
        <t>Session resumption lowers the time and effort required to start a (D)TLS connection and increases network responsiveness.
This is especially helpful when using short idle timeouts.</t>
        <t>RadSec clients and servers <bcp14>SHOULD</bcp14> implement session resumption.
Implementations supporting session resumption <bcp14>MUST</bcp14> cache data during the initial full handshake, sufficient to allow authorization decisions to be made during resumption.
For RadSec servers, this should preferably be done using stateless session resumption as specified in <xref target="RFC5077"/> for TLS 1.2 or <xref target="RFC8446"/> for TLS 1.3, to reduce the resource usage for cached data.</t>
        <t>When establishing a (D)TLS connection with session resumption, both client and server <bcp14>MUST</bcp14> re-authorize the connection by using the original, cached data.
In particular, this includes the X.509 certificate (when using a PKIX trust model) as well as any policies associated with that identity such as restrictions on source IP address.
The re-authorization <bcp14>MUST</bcp14> give the same result as if a full handshake was performed at the time of resumption.</t>
        <t>If cached data cannot be retrieved securely, resumption <bcp14>MUST NOT</bcp14> be done, by either immediately closing the connection or reverting to a full handshake.
If a connection that used session resumption is closed immediately after being established, the RadSec client <bcp14>MUST NOT</bcp14> re-attempt session resumption but perform a full TLS handshake instead.</t>
      </section>
      <section anchor="radius_packets">
        <name>RADIUS packets</name>
        <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 RadSec specification does not change the client/server architecture of RADIUS.
RadSec clients transmit the same packet types on the connection they initiated as a RADIUS/UDP client would, and RadSec servers transmit the same packet types on the connections the server has accepted as a RADIUS/UDP server would.
As noted in <xref target="portusage"/>, RadSec uses the same port for Authentication and Accounting packets.
As non-exhaustive example, a RadSec client can transmit packets of type Access-Request, Accounting-Request, Status-Server, Disconnect-ACK over the same connection, and a RadSec server can transmit packets of type Access-Accept, Access-Reject, Access-Challenge, Accounting-Response, Disconnect-Request.</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 RadSec uses the same connection for all RADIUS packets.
Due to the use of one single port for all packet types, clients might send packets to the server which it cannot process.
Without a response from the server, the client has to wait for the requests to time out before reusing the request id, leading to resource exhaustion of the limited id space.</t>
        <t>A server <bcp14>MAY</bcp14> therefore respond with a Protocol-Error packet as defined in <xref section="4" sectionFormat="comma" target="RFC7930"/>, to alleviate this situation and signal that it was unable to process a packet.
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>RadSec clients <bcp14>MUST</bcp14> accept Protocol-Error as a valid response and thus stop any retransmission of the original packet over the current connection.
Further details of handling the Protocol-Error reply on the client side are outside of the scope of this document, see <xref target="I-D.dekok-protocol-error"/> for a more detailed description of Protocol-Error.</t>
        <t>Note that sending Protocol-Error in response to unwanted packets replaces the use of CoA-NAK, Disconnect-NAK and Accounting-Response in these situations as specified in <xref target="RFC6614"/>.
See further details in <xref target="unwanted_packet_handling"/> below.</t>
      </section>
      <section anchor="detecting-live-servers">
        <name>Detecting Live Servers</name>
        <t>RadSec implementations <bcp14>MUST</bcp14> utilize the existence of a TCP, TLS or DTLS connection where applicable in addition to the application-layer watchdog defined in <xref section="3.4" sectionFormat="comma" target="RFC3539"/> when determining the liveness of each connection.</t>
        <t>As RADIUS is a "hop-by-hop" protocol, proxies hide information about the topology downstream to the client.
While the client may be able to deduce the operational state of the next-hop (i.e. proxy), it is unable to determine the operational state of any hops beyond it.
This is particularly problematic for topologies that aggregate multiple routes for differing realms behind a proxy where the absence of a reply could lead to a client to incorrectly deduce that the proxy is unavailable when the cause was an unresponsive downstream hop for a single realm.
A similar effect may also be seen on home servers that uses different credential backends for each realm they service.</t>
        <t>To avoid these issues, RadSec clients <bcp14>MUST</bcp14> only mark a connection 'DOWN' (as labelled by <xref section="3.4" sectionFormat="comma" target="RFC3539"/>) if one or more of the following conditions are met:</t>
        <ul spacing="normal">
          <li>
            <t>The network stack indicates that the connection is no longer viable; such as the destination being no longer routable or the underlying TCP connection being closed by the peer.</t>
          </li>
          <li>
            <t>The transport layer, D(TLS), provides no usable connection</t>
          </li>
          <li>
            <t>The application-layer watchdog algorithm has marked it 'DOWN'.</t>
          </li>
        </ul>
        <t>When a client opens multiple connections to a server, it is also possible that only one of the connections is unresponsive, e.g. because the server deleted the DTLS connection shared state or the connection was load balanced on the server side to a backend server that is now unresponsive.
Therefore, the liveness check <bcp14>MUST</bcp14> be done on a per-connection basis, and a failure on one connection <bcp14>MUST NOT</bcp14> lead to all connections to this server being marked down.</t>
        <t>RadSec clients <bcp14>MUST</bcp14> implement the Status-Server extension as described in <xref target="RFC5997"/> as the application level watchdog to detect the liveness of the peer in the absence of responses.
RadSec servers <bcp14>MUST</bcp14> be able to answer to Status-Server requests.
Since RADIUS has a limitation of 256 simultaneous "in flight" packets due to the length of the ID field (<xref section="2.4" sectionFormat="comma" target="RFC3539"/>), it is <bcp14>RECOMMENDED</bcp14> that RadSec clients reserve ID zero (0) on each connection for Status-Server packets.
This value was picked arbitrarily, as there is no reason to choose any other value over another for this use.</t>
        <t>For RADIUS/TLS, the endpoints <bcp14>MAY</bcp14> send TCP keepalives as described in <xref section="3.8.4" sectionFormat="comma" target="RFC9293"/>.
For RADIUS/DTLS connections, the endpoints <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 anchor="client-timers">
        <name>Client Timers</name>
        <t>RadSec clients may need to reconnect to a server that rejected their connection attempt and retry RADIUS packets which did not get an answer.
The following sections define the client behavior.</t>
        <section anchor="reconnection-attempts">
          <name>Reconnection attempts</name>
          <t>RadSec endpoints establish a (D)TLS connection before transmitting any RADIUS packets.
Therefore, in addition to retransmission of RADIUS packets, RadSec clients also have to perform connection retries.</t>
          <t>Except in cases where a connection attempt with session resumption was closed by the RadSec server, RadSec clients <bcp14>MUST NOT</bcp14> immediately reconnect to a server after a failed connection attempt.
A connection attempt is treated as failed if it fails at any point until a (D)TLS connection is established successfully.
Typical reconnections <bcp14>MUST</bcp14> have a lower bound for the time in between retries.
The lower bound <bcp14>SHOULD</bcp14> be configurable, but <bcp14>MUST NOT</bcp14> be less than 0.5 seconds.
In cases where the server closes the connection on an attempted TLS session resumption, the client <bcp14>MUST NOT</bcp14> use TLS session resumption for the following connection attempt.</t>
          <t>RadSec clients <bcp14>MUST</bcp14> implement an algorithm for handling the timing of such reconnection attempts that includes an exponential back-off.
Using an algorithm similar to the retransmission algorithm defined in <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/> is <bcp14>RECOMMENDED</bcp14>.
If a different algorithm is used, it <bcp14>SHOULD</bcp14> include a configurable lower and upper bound for the time between retries, a configurable timeout after which the client gives up reconnecting, and a jitter.</t>
          <t>When a reconnection attempt is queued on a reconnection timer, adding subsequent RADIUS packets to be sent <bcp14>SHOULD NOT</bcp14> trigger an immediate reconnection attempt or reset the reconnection timer.
Instead, the algorithm <bcp14>SHOULD</bcp14> continue as it would have without the new RADIUS packet.
However, a client <bcp14>MAY</bcp14> reset the timeout for giving up reconnecting when a new RADIUS packet is queued.</t>
          <t>Where the connection to a RadSec server is configured to be static and always kept open, the reconnect algorithm <bcp14>SHOULD</bcp14> have an upper limit for the time between retries (e.g. 60 seconds) and not give up trying to reconnect.</t>
        </section>
        <section anchor="client_retransmission_timers">
          <name>RADIUS packet retransmission</name>
          <t>RadSec clients <bcp14>MUST</bcp14> implement retransmission timers for retransmitting RADIUS packets such as the ones defined in <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/>.
Other algorithms than the one defined in <xref target="RFC5080"/> are possible, but any timer implementations <bcp14>MUST</bcp14> have similar properties of including jitter, exponential backoff and a maximum retransmission count (MRC) or maximum retransmission duration (MRD).</t>
          <t>As TLS is a reliable transport, RADIUS/TLS clients can only retry a packet if a connection closes without that packet receiving a reply, therefore the timers <bcp14>MUST NOT</bcp14> result in retransmission of any packet.
A retry is the re-sending of the same content in a newly constructed RADIUS packet, where a retransmission is the re-sending of the exact same packet over the same connection to deal with packet loss on transport.
Instead, the timers, MRC or MRD specifically, can be used to determine that a packet will most likely not receive an answer ever, for example because a packet loss has occurred in a later RADIUS hop or the home server ignores the RADIUS packet.</t>
          <t>See <xref target="duplicates_retransmissions"/> for more discussion on retransmission behavior.</t>
        </section>
      </section>
      <section anchor="dtls-connection-limits-and-timeout">
        <name>(D)TLS connection limits and timeout</name>
        <t>While RADIUS/UDP could be implemented mostly stateless (except for the requests in flight and possibly <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/> deduplication), both TCP/TLS as well as DTLS require additional state tracking of the underlying (D)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 (D)TLS connection is needed, the server <bcp14>MUST</bcp14> either drop an old connection in order to open the new one or else not create a new connection.</t>
        <t>The close notification of (D)TLS or underlying connections are not fully reliable, or connections might be unnecessarily kept alive by heartbeat or watchdog traffic, occupying resources.
Therefore, both RadSec 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 it <bcp14>SHOULD</bcp14> be possible to disable idle timeouts completely.</t>
        <t>On the server side, this mostly helps avoid resource exhaustion.
For clients, proactively closing connections 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="behavior-on-dtls-connection-closure-of-incoming-connections">
        <name>Behavior on (D)TLS connection closure of incoming connections</name>
        <t>If an incoming (D)TLS connection or the underlying transport channel is closed or broken, then there is no way to send a RADIUS response packet to the client.
The RadSec server behavior then depends on the types of packets being processed, and on the role of the server.</t>
        <t>A RadSec server <bcp14>MUST</bcp14> discard or stop all requests that are associated with the closed connection.  This requirement also applies to proxied requests which are associated with the incoming request.
As no response can be sent over the now-closed (D)TLS connection, any further processing of those requests is pointless.
A discarded request may have a cached RADIUS response packet (<xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>), in which case the cached response also <bcp14>MUST</bcp14> be discarded.
If there is no cached response packet, then the request might still be processed by the home server.
The RADIUS proxy <bcp14>MUST</bcp14> discard any response to these requests and <bcp14>SHOULD</bcp14> stop processing the requests.</t>
        <t>A home server which receives Access-Request packets <bcp14>MUST</bcp14> behave as defined above for a proxy and discard those requests and stop processing them.
Where a RADIUS packet is part of a multi-packet authentication session (e.g. EAP), the underlying authentication session could be continued, or the underlying authentication session data could be discarded.
The server may be able to receive and process another packet for that authentication session via a different incoming connection.
It is difficult to make more recommendations for managing partially processed authentication sessions, as such recommendations depend strongly on the authentication method being used.
As a result, further behavior is implementation defined and outside the scope of this specification.</t>
        <t>A home server which receives other kinds of packets (for example Accounting-Request, CoA-Request, Disconnect-Request) <bcp14>MAY</bcp14> finish processing outstanding requests, and then discard any response.
This behavior ensures that the desired action is still taken, even if the home server cannot inform the client of the result of that action.</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 (see <xref target="radius_packet_handling"/>).
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>Subject to the discussion below, implementations of this specification <bcp14>SHOULD</bcp14> treat the text on "silently discard" packets in the RADIUS specification referenced above as "silently discard the packet 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 <tt>Length</tt> field is less than the minimum RADIUS packet length</t>
          </li>
          <li>
            <t>Packet where the RADIUS <tt>Length</tt> field is more than the maximum RADIUS packet length</t>
          </li>
          <li>
            <t>Packet where an Attribute <tt>Length</tt> 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 situations where the previous specifications allow a packet to be "silently discarded" upon receipt, but in which it is reasonable that a connection <bcp14>MAY</bcp14> remain open:</t>
        <ul spacing="normal">
          <li>
            <t>Packet with an invalid code field (see <xref target="radius_packets"/> for details)</t>
          </li>
          <li>
            <t>Response packets that do not match any outstanding request</t>
          </li>
          <li>
            <t>A server lacking the resources to process a request</t>
          </li>
        </ul>
        <t>These requirements reduce the possibility for a misbehaving client or server to wreak havoc on the network.</t>
      </section>
      <section anchor="cross-protocol-considerations">
        <name>Cross Protocol Considerations</name>
        <t>A client may be configured to use multiple servers, and therefore needs to be able to distinguish servers from one another.  Those servers may use different transport protocols, in any combination.  For example, a client may be configured with a RADIUS/UDP server, and RADIUS/DTLS server, and a RADIUS/TLS server all at the same time.  These servers may share IP addresses, but not the same UDP or TCP ports.  These considerations also affect RADIUS servers.</t>
        <t>RADIUS implementations <bcp14>MUST</bcp14> be able to distinguish servers by at least the 3-tuple of:</t>
        <ul spacing="normal">
          <li>
            <t>protocol (one of RADIUS/UDP, RADIUS/DTLS, or RADIUS/TLS)</t>
          </li>
          <li>
            <t>server IP,</t>
          </li>
          <li>
            <t>server port.</t>
          </li>
        </ul>
        <t>Implementations <bcp14>MUST NOT</bcp14> exchange both insecure and secure traffic on the same UDP or TCP port.  It is <bcp14>RECOMMENDED</bcp14> that implementations make it impossible for such a configuration to be created.</t>
        <t>Where a server accepts packets on multiple different 3-tuples (protocol, server IP, server port), it <bcp14>MUST</bcp14> track clients independently for each 3-tuple combination.  A RADIUS client has no way of knowing if different 3-tuple combinations are all managed by the same RADIUS server.  Therefore, the server behavior has to be compatible with the clients expectations.</t>
        <t>When a server receives a packet from a source IP address on a 3-tuple, it <bcp14>MUST</bcp14> process that packet according to the profile for that 3-tuple.  This requirement means that (for example), a server can be configured to accept RADIUS/UDP traffic on multiple UDP ports, and then have a completely different (and non-overlapping) set of clients configured for each port.</t>
        <t>While this behavior is not required by previous specifications, it codifies long-standing practices.  As such, existing server implementations likely do not need to do anything in order to support the requirements of this section.</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="sending-and-receiving-radius-traffic">
        <name>Sending and receiving RADIUS traffic</name>
        <t>The TLS layer of RADIUS/TLS provides a stream-based communication between the two peers instead of the traditional packet-based communication as with RADIUS/UDP.
As a result, the way RADIUS packets are sent and received has to change.</t>
        <t>Instead of relying on the underlying transport protocol to indicate the start of a new packet, the RADIUS/TLS endpoints have to keep track of the packet borders by examining the header of the received RADIUS packets.</t>
        <t>After the TLS connection is established, a RADIUS/TLS endpoint <bcp14>MUST NOT</bcp14> send any data except for RADIUS packets over the connection.
Since the RADIUS packet header contains a <tt>Length</tt> field, the end of the current RADIUS packet can be deduced.
The next RADIUS packet <bcp14>MUST</bcp14> be sent directly after the current RADIUS packet, that is, the endpoints <bcp14>MUST NOT</bcp14> add padding before, between, or after RADIUS packets.</t>
        <t>When receiving RADIUS packets, a RADIUS/TLS endpoint <bcp14>MUST</bcp14> determine the borders of RADIUS packet based on the <tt>Length</tt> field in the RADIUS header.
Note that, due to the stream architecture of TLS, it is possible that a RADIUS packet is first received only partially, and the remainder of the packet is contained in following fragments.
Therefore, RADIUS/TLS endpoints <bcp14>MUST NOT</bcp14> assume that the packet length is invalid solely based on the currently available data in the stream.  More data may come at a later time.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that RADIUS/TLS implementations pass a RADIUS packet to the TLS library as one unit, instead of in multiple fragments.  This behavior avoids unnecessary overhead when sending or receiving (especially if every new write generates a new TLS record) and wait times on the other endpoint.</t>
      </section>
      <section anchor="duplicates_retransmissions">
        <name>Duplicates and Retransmissions</name>
        <t>As TCP is a reliable transport, RADIUS/TLS endpoints <bcp14>MUST NOT</bcp14> retransmit RADIUS packets over a given TCP connection.
However, if the TLS connection or TCP connection is closed or broken, retries 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 connection, 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>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 clients <bcp14>MUST NOT</bcp14> perform retries by sending a packet on a different protocol or connection (i.e. switching from TLS to DTLS or vice versa).  However, when a connection fails, a RADIUS client <bcp14>MAY</bcp14> send packets associated with that connection over a different configured connection or server.
This requirement does not, therefore, forbid the practice of putting servers with the same IP address and port but different protocols into a failover or load-balancing pool.
In that situation, RADIUS requests <bcp14>MAY</bcp14> be sent to another server that is known to be part of the same pool.</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_handling">
        <name>RADIUS packet handling</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.
Implementers and operators should be aware of the possibility of fragmented UDP packets.
For details about issues with fragmentation see <xref target="RFC8900"/>.</t>
        <t>RADIUS/DTLS endpoints <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 datagrams.
We note that a single UDP datagram may, however, contain multiple DTLS records.
RADIUS/DTLS endpoints <bcp14>MAY</bcp14> use this behavior to send multiple RADIUS packets in one UDP packet.</t>
        <t>For the receiving RADIUS/DTLS endpoint, the length checks defined in <xref section="3" sectionFormat="comma" target="RFC2865"/> still apply.
That is, a receiving RADIUS/DTLS endpoint <bcp14>MUST</bcp14> perform all the length checks, but <bcp14>MUST</bcp14> use the length of the decrypted payload of the DTLS record instead of the UDP packet length.
Exactly one RADIUS packet is encapsulated in a DTLS record, and any data outside the range of the RADIUS length field within the decrypted payload of a single DTLS record <bcp14>MUST</bcp14> be treated as padding, as it would be with a RADIUS/UDP packet, and be ignored.  RADIUS implementations <bcp14>MUST NOT</bcp14> discard packets simply due to the existence of padding.
For UDP datagrams containing multiple DTLS records, each DTLS record <bcp14>MUST</bcp14> be parsed individually.</t>
        <t>If a RADIUS packet needs to be re-transmitted, either as retransmission due to a missing response by the client or as retransmission of a cached response by the server, the RADIUS/DTLS endpoints <bcp14>MUST</bcp14> re-process the RADIUS packet through DTLS.
That is, for the purpose of retransmissions, RADIUS/DTLS endpoints cache the RADIUS packet, as a RADIUS/UDP endpoint would, and do not cache the DTLS record that contains the RADIUS packet.</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 received packets <bcp14>MUST</bcp14> be treated as being RADIUS/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.
As such, a RADIUS/DTLS server <bcp14>MUST</bcp14> maintain a "DTLS Required" flag per client.</t>
        <t>This flag indicates whether or not that 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.  All non-DTLS traffic <bcp14>MUST</bcp14> be silently discarded.</t>
        <t>This flag is normally 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.
A server <bcp14>MAY</bcp14> automatically mark the client as "DTLS Required".</t>
      </section>
      <section anchor="client-behavior">
        <name>Client behavior</name>
        <t>When a RADIUS/DTLS client sends packet to a 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>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>This section discusses topics related to the internal behavior of RadSec implementations that should be considered by RadSec implementers.</t>
      <section anchor="radius-implementation-changes">
        <name>RADIUS Implementation Changes</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 remain unchanged when using RadSec:</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 to the establishment of the (D)TLS connection.
The fact that RADIUS remain largely unchanged ensures the simplest possible implementation and widest interoperability of the specification.
This reuse includes the usage of the outdated security mechanisms in RADIUS that are based on shared secrets and MD5.
The use of MD5 here 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="RFC9765"/> for more details.  See also <xref section="1" sectionFormat="comma" target="RFC9765"/> for a discussion of issues related to the continued use of MD5, even in situations where its use is known to be safe.</t>
        <t>We note that for RADIUS/DTLS the DTLS encapsulation of RADIUS means that UDP datagrams include an additional overhead due to DTLS.
This is discussed further in <xref target="dtls_spec"/>.</t>
        <section anchor="unwanted_packet_handling">
          <name>Differences from RFC 6614 unwanted RADIUS packet handling</name>
          <t>The previous specification of RADIUS/TLS in <xref target="RFC6614"/> recommends to send a reply to unwanted RADIUS packets that depends on the request type:</t>
          <ul spacing="normal">
            <li>
              <t>For unwanted CoA-Requests or Disconnect-Requests, the servers should respond with a CoA-NAK or Disconnect-NAK, respectively.</t>
            </li>
            <li>
              <t>For unwanted Accounting-Requests, the servers should respond with an Accounting-Response containing an Error-Cause attribute with the value 406 ("Unsupported Extension").</t>
            </li>
          </ul>
          <t><xref target="RFC6614"/> also recommends 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.</t>
          <t>Compared to the <xref target="RFC6614"/> recommended replies (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.
Therefore these <xref target="RFC6614"/> recommended reply message types are now replaced with the Protocol-Error packet type.</t>
        </section>
      </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 a RADIUS 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 different 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 may be left with a difficult choice about what to do with the incoming packets, if the rate of incoming packets exceeds throughput on the outgoing link.</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 generally will accept the packets, buffer them, and hope that they can be be sent outbound before the client gives up on the request.  Other courses of action are possible, but are implementation specific.  See <xref target="I-D.dekok-protocol-error"/> for more discussion on this topic.</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 RADIUS 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.
See <xref target="radius_packet_handling"/> for details on retransmitting RADIUS packets over DTLS.</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 of the old request and discard it.</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>
        </section>
        <section anchor="acct-delay-time-and-event-timestamp">
          <name>Acct-Delay-Time and Event-Timestamp</name>
          <t>In order to avoid congestive collapse, it is <bcp14>RECOMMENDED</bcp14> that RadSec clients which originate Accounting-Request packets (i.e. not proxies) do not include Acct-Delay-Time (<xref section="5.2" sectionFormat="comma" target="RFC2866"/>) in those packets.
Instead, those clients <bcp14>SHOULD</bcp14> include Event-Timestamp (<xref section="5.3" sectionFormat="comma" target="RFC2869"/>), 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 create the same problem as with Acct-Delay-Time.</t>
          <t>Not using Acct-Delay-Time allows for RADIUS Accounting-Request packets to be retransmitted without change.
In contrast, updating Acct-Delay-Time would require that the client create and send a new Accounting-Request packet without signaling the server that the previous packet is no longer considered active.
This process can occur repeatedly, which leads to multiple different packets containing effectively the same information (except for Acct-Delay-Time).
This duplication contributes to congestive collapse of the network, if one or more RADIUS proxies performs retransmission to the next hop for each of those packets independently.</t>
          <t>Additionally, the different properties of the RADIUS/TLS transport as well as cross-protocol proxying change the assumption of a negligible transmission time of the RADIUS packet, on which the value of Acct-Delay-Time is based.
While a single UDP packet may have a negligible transmission time, application data sent via TLS could arrive at the server with a significant delay due to the underlying TCP retransmission mechanism.
If the packet is proxied from RADIUS/TLS to RADIUS/DTLS or RADIUS/UDP, the proxy has to retransmit on its own without changing the value of Acct-Delay-Time, which again introduces non-negligible transmission delays.</t>
          <t>Using Event-Timestamp instead of Acct-Delay-Time also removes an ambiguity around retransmitted packets for RADIUS/TLS.
Since there is no change to the packet contents when a retransmission timer expires, no new packet ID is allocated, and therefore no new packet is created.</t>
          <t>Where RadSec clients do include Acct-Delay-Time in RADIUS packets, the client <bcp14>SHOULD</bcp14> use timers to detect packet loss, as described in <xref target="client_retransmission_timers"/>.
Where RadSec clients do include Acct-Delay-Time in RADIUS packets, the client can rely on the Event-Timestamp to signal delays, and therefore <bcp14>SHOULD NOT</bcp14> update the Acct-Delay-Time. If the timer has determined that the original packet has been completely lost, the client <bcp14>SHOULD</bcp14> then create a new RADIUS packet with the same information, but and <bcp14>MAY</bcp14> update Acct-Delay-Time.
This behavior ensures that there is no congestive collapse, since a new packet is only created if following hops have also given up on retransmission.
The Event-Timestamp is then interpreted as the time at which the event occurred.  Where Acct-Delay-Time exists, it is then interpreted as the delay between the event and when the packet was sent. Systems <bcp14>MUST NOT</bcp14> subtract the Acct-Delay-Time from Event-Timestamp to derive a time at which the event occurred; that time is exactly Event-Timestamp.  The existence of Acct-Delay-Time instead serves as an additional indication of delays in sending the packet.
Leaving the Acct-Delay-Time static reduces the granularity of Acct-Delay-Time to the retransmission timeout, compared to the different approach of updating the Acct-Delay-Time on each retransmission.</t>
        </section>
      </section>
      <section anchor="additional-verification-of-peers">
        <name>Additional Verification of Peers</name>
        <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 information from the TLS connection and 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>Similar to the PKIX trust model, clients using TLS-PSK may have additional policies to determine whether a client should be allowed to connect.
Therefore, In TLS-PSK operation, at least the following information from 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="tcp-applications-are-not-udp-applications">
        <name>TCP Applications Are Not UDP Applications</name>
        <t>Implementers 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 blocking and the possibility of increased transmission times should be considered.</t>
        <t>When using RADIUS/UDP or RADIUS/DTLS, there is no ordering of packets.
If a packet sent by a endpoint is lost, that loss has no effect on subsequent packets sent by that endpoint.</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 endpoints 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.
Additionally, due to the architecture of TCP as reliable stream transport, TCP retransmissions can occur significantly later, even multiple seconds, after the original data was passed to the network stack by the application.
In contrast, RADIUS/UDP packets are usually received either quickly, or not at all, in which case the RADIUS/UDP stack triggers a retransmission of the packet on the application layer.</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 <bcp14>MAY</bcp14> choose to use the method described here, or another, equivalent method.
When implementations do not use the 5-tuple described below, note that IP address based policies <bcp14>MUST</bcp14> still be applied for all incoming packets, similar to the mandated behavior for TLS Session Resumption in <xref target="tls_session_resumption"/>.</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>
        <section anchor="server-session-management">
          <name>Server Session Management</name>
          <t>A RADIUS/DTLS server using the 5-tuple method <bcp14>MUST</bcp14> track ongoing DTLS sessions for each client, based on the following 5-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>
            <li>
              <t>protocol (fixed to <tt>UDP</tt>)</t>
            </li>
          </ul>
          <t>Note that this 5-tuple is independent of IP address version (IPv4 or IPv6).</t>
          <t>Each 5-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"/> for DTLS 1.2 and <xref section="5.1" sectionFormat="comma" target="RFC9147"/> for DTLS 1.3.
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 5-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 5-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 5-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 5-tuple from an active session.
This requirement can generally be reached by simply processing the packet through the existing DTLS session, as with any other packet received via that 5-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 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>
          <t>RADIUS/DTLS clients <bcp14>MAY</bcp14> use PMTU discovery <xref target="RFC6520"/> to determine the PMTU between the client and server, prior to sending any RADIUS traffic.
While a RADIUS client has limited to no possibilities to reduce the size of an outgoing RADIUS packet without unwanted side effects, it gives the RADIUS client the possibility to determine whether or not the RADIUS packet can even be sent over the connection.
IP fragmentation may not be functioning, so by determining the PMTU, the RADIUS client can preemptively select a different RADIUS server to send the RADIUS packet to.
Further discussion of this problem is deemed outside of the scope of this document.</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 RadSec.</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 RadSec are listed below.</t>
      <section anchor="mixing-secure-and-insecure-traffic">
        <name>Mixing Secure and Insecure Traffic</name>
        <t>It is <bcp14>RECOMMENDED</bcp14> that servers do not accept both secure and insecure traffic from the same source IP address.  Allowing RADIUS/UDP and RADIUS/DTLS from the same client exposes the traffic to downbidding attacks and is <bcp14>NOT RECOMMENDED</bcp14>.</t>
        <t>Administrators of a client can place servers into a load-balance or fail-over pools, no matter what the combination of values in the 3-tuple which identifies a server. However, administrators should limit these pools to servers with a similar security profile, e.g. all UDP, or all (D)TLS. Mixing insecure traffic with secure traffic will likely create security risks.</t>
      </section>
      <section anchor="radius-proxies">
        <name>RADIUS Proxies</name>
        <t>RadSec provides authentication, integrity and confidentiality protection for RADIUS traffic for a single hop between two RADIUS endpoints.
In the presence of proxies, 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 critical RADIUS attributes from inspection by such proxies.
One common method is to protect user credentials by using the Extensible Authentication Protocol (EAP) and EAP methods that utilize TLS.
However, in typical use cases there still remain attributes potentially containing confidential data (such as personally identifiable information or cryptographic keys) which cannot be protected from inspection by proxies.</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 RadSec from one endpoint, to forward this packet to a different endpoint using the RADIUS/UDP transport profile.
There is no technical solution to this problem with the current specification.
However, if the confidentiality of the full 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 RadSec 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-endpoints-acting-as-server-and-client">
          <name>Loopback-Attack on endpoints acting as Server and Client</name>
          <t>RadSec endpoints 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 endpoint.
Therefore, endpoints 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 RadSec 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 and/or on the contents of the certificate policies extension <xref section="4.2.1.4" sectionFormat="comma" target="RFC5280"/>.
However, in this case, the client certificate which the RadSec endpoint 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 RadSec case.
In particular, as described above, they also apply to certificate based authentication.</t>
          <t>Server 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 very 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>Some TLS implementations offer cipher suites with NULL encryption, to allow inspection of the plaintext with packet sniffing tools.
Since with RadSec 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 RadSec.</t>
        <t>For cases where administrators need access to the decrypted RadSec 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 invalid RADIUS packet would fail the cryptographic checks and the server would silently discard the that packet.
For RadSec, 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 RadSec server <bcp14>SHOULD</bcp14> have configurable limits on new connection attempts, and where configured, <bcp14>MUST</bcp14> enforce those limits.</t>
        <t>Both TLS and DTLS need to store connection information for each open (D)TLS connection.
Especially with DTLS, a bogus or misbehaving client could open an excessive number of DTLS connections.
This connection tracking could lead to a resource exhaustion on the server side, triggering a Denial-of-Service.
Therefore, RadSec servers <bcp14>SHOULD</bcp14> have a configurable limit of the number of connections they can track, and where configured, <bcp14>MUST</bcp14> enforce those limits.
When the total number of connections tracked is going to exceed the configured limit, servers <bcp14>MAY</bcp14> free up resources by closing the connection that has been idle for the longest time.
Doing so may free up idle resources that then allow the server to accept a new connection.</t>
        <t>RadSec servers <bcp14>MUST</bcp14> limit the number of partially open (D)TLS connections 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 (D)TLS connections, RadSec servers <bcp14>SHOULD</bcp14> have a timeout on partially open (D)TLS connections.
We recommend a limit of a few seconds, implementations <bcp14>SHOULD</bcp14> expose this timeout as configurable option to the administrator.
If a (D)TLS connection is not established within this timeframe, it is likely that this connection is either not from a valid client, or it is from a valid client with unreliable connectivity.
In contrast, an established connection might not send packets for longer periods of time, but since the endpoints are mutually authenticated, leaving a connection available 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 RadSec 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, RadSec servers <bcp14>SHOULD</bcp14> keep a list of the accumulated permitted IP address ranges, individually for each transport.</t>
      </section>
      <section anchor="tls-connection-lifetime-and-key-rotation">
        <name>TLS Connection Lifetime and Key Rotation</name>
        <t>The RadSec TLS connections may have a long lifetime.
Especially when dealing with high volume of RADIUS traffic, the encryption keys have to be rotated regularly, depending on both the amount of data which was transferred, and on the encryption method.
See <xref section="5.5" sectionFormat="comma" target="RFC8446"/> and <xref target="I-D.irtf-cfrg-aead-limits"/> for more information.</t>
        <t>Implementers <bcp14>SHOULD</bcp14> be aware of this issue and determine whether the underlying TLS library automatically rotates encryption keys or not.
If the underlying TLS library does not perform the rotation automatically, RadSec implementations <bcp14>SHOULD</bcp14> perform this rotation manually, either by a key update of the existing TLS connection or by closing the TLS connection and opening a new one.</t>
      </section>
      <section anchor="connection-closing-on-malformed-packets">
        <name>Connection Closing On Malformed Packets</name>
        <t>If malformed RADIUS packets are received or the packets fail the authenticator checks, this specification requires that the (D)TLS connection be closed.
The reason is that the connection is expected to be used for transport of RADIUS packets only.</t>
        <t>Any non-RADIUS traffic on that connection 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>On the other hand, we want to avoid situations in which a third party can trigger such a connection closure, e.g. by sending a RADIUS packet with attributes the RadSec server does not understand.
If a RadSec endpoint would close the connection when receiving such packets, an attacker could repeatedly send such packets to disrupt the RadSec connection.
Leaving the connection open and ignoring unknown attributes also ensures forward compatibility.</t>
      </section>
      <section anchor="migrating-from-radiusudp-to-radsec">
        <name>Migrating from RADIUS/UDP to RadSec</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 RadSec.
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 RadSec 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 RadSec, 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, as defined in <xref section="4.1.3" sectionFormat="comma" target="RFC9813"/>, any shared secret used with RADIUS/UDP before <bcp14>MUST NOT</bcp14> be used with RadSec and (D)TLS-PSK.
We also strongly recommend implementers to not reuse the configuration option for the RADIUS/UDP shared secret in the existing user interfaces for the (D)TLS-PSK too.
Instead, these should be separate input fields in order to prevent accidental reuse of an existing shared secret when switching to (D)TLS-PSK.</t>
        <t>When upgrading from RADIUS/UDP to RadSec, 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 RadSec, an attacker could disrupt the RadSec communication and force a downgrade to RADIUS/UDP.
To prevent this it is <bcp14>RECOMMENDED</bcp14> that, when the migration to RadSec is completed, the RADIUS/UDP configuration is removed.
RadSec clients <bcp14>MUST NOT</bcp14> fall back to RADIUS/UDP if the RadSec communication fails, unless explicitly configured this way.</t>
        <t>Special considerations apply for clients behind a NAT, where some clients use RADIUS/UDP and others use RadSec.
A RADIUS server might not be able to detect if a RadSec client falls back to RADIUS/UDP, they will appear with the same source IP address to the server and use the same shared secret.
It is therefore <bcp14>NOT RECOMMENDED</bcp14> to use both RADIUS/UDP and RadSec clients behind a NAT at the same time.</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 the client 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, perhaps via an internal API, or 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.
So long as the proxy implements RadSec, other subsystems that do not implement RadSec do not need to be updated to support it.  They can instead leverage the functionality of the local proxy to leverage the benefits of (D)TLS.
(D)TLS connections opened by the proxy can remain open for a long period of time, even when client subsystems are restarted.
The proxy can be configured to do RADIUS/UDP to some servers and RadSec to others.</t>
        <t>Delegation of responsibilities and separation of tasks are important security principles.
By moving all RadSec 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.
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 hardware, implementers 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 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, RadSec servers must implement both certificates with PKIX trust model and TLS-PSK as means of mutual authentication.
RadSec 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 and the Assignment Notes to radsec in the Service Name and Transport Protocol Port Number Registry:</t>
      <t>For TCP:
* Service Name: radsec
* Port Number: 2083
* Transport Protocol: tcp
* Description: Secure RADIUS Service
* 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).
* Reference: [RFCXXXX] (this document)</t>
      <t>For UDP:
* Service Name: radsec
* Port Number: 2083
* Transport Protocol: udp
* Description: Secure RADIUS Service
* Assignment notes: The UDP port 2083 was already previously assigned by IANA for "RadSec", an early implementation of RADIUS/DTLS, prior to issuance of the experimental RFC 7360. [RFCXXXX] updates RFC 7360 (RADIUS/DTLS).
* Reference: [RFCXXXX] (this document)</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC5446">
          <front>
            <title>Service Selection for Mobile IPv4</title>
            <author fullname="J. Korhonen" initials="J." surname="Korhonen"/>
            <author fullname="U. Nilsson" initials="U." surname="Nilsson"/>
            <date month="February" year="2009"/>
            <abstract>
              <t>In some Mobile IPv4 deployments, identifying the mobile node or the mobility service subscriber is not enough to distinguish among the multiple services possibly provisioned to the mobile node. The capability to specify different services in addition to the mobile node's identity can be leveraged to provide flexibility for mobility service providers to provide multiple services within a single mobility service subscription. This document describes a Service Selection extension for Mobile IPv4 that is intended to assist home agents to make specific service selections for their mobility service subscriptions during the registration procedure. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5446"/>
          <seriesInfo name="DOI" value="10.17487/RFC5446"/>
        </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="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="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="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="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="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="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="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="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="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="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="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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="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="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest"/>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. This memo provides information for the Internet community. It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC9765">
          <front>
            <title>RADIUS/1.1: Leveraging Application-Layer Protocol Negotiation (ALPN) to Remove MD5</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This document defines Application-Layer Protocol Negotiation (ALPN) 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.</t>
              <t>This document updates RFCs 2865, 2866, 5176, 6613, 6614, and 7360.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9765"/>
          <seriesInfo name="DOI" value="10.17487/RFC9765"/>
        </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="RFC9813">
          <front>
            <title>Operational Considerations for Using TLS Pre-Shared Keys (TLS-PSKs) with RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="July" year="2025"/>
            <abstract>
              <t>This document provides implementation and operational considerations for using TLS Pre-Shared Keys (TLS-PSKs) with RADIUS/TLS (RFC 6614) and RADIUS/DTLS (RFC 7360). The purpose of the document is to help smooth the operational transition from the use of RADIUS/UDP to RADIUS/TLS.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="243"/>
          <seriesInfo name="RFC" value="9813"/>
          <seriesInfo name="DOI" value="10.17487/RFC9813"/>
        </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="I-D.dekok-protocol-error">
          <front>
            <title>Standardising Protocol-Error</title>
            <author fullname="Alan DeKok" initials="A." surname="DeKok">
              <organization>InkBridge Networks</organization>
            </author>
            <date day="24" month="June" year="2025"/>
            <abstract>
              <t>   We extend and standardise the Protocol-Error packet Code, first
   defined in RFC 7930 for the Remote Authentication Dial In User
   Service (RADIUS) protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekok-protocol-error-00"/>
        </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="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>
        <reference anchor="RFC8900">
          <front>
            <title>IP Fragmentation Considered Fragile</title>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="O. Troan" initials="O." surname="Troan"/>
            <author fullname="F. Gont" initials="F." surname="Gont"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes IP fragmentation and explains how it introduces fragility to Internet communication.</t>
              <t>This document also proposes alternatives to IP fragmentation and provides recommendations for developers and network operators.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="230"/>
          <seriesInfo name="RFC" value="8900"/>
          <seriesInfo name="DOI" value="10.17487/RFC8900"/>
        </reference>
        <reference anchor="RFC2869">
          <front>
            <title>RADIUS Extensions</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="W. Willats" initials="W." surname="Willats"/>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes additional attributes for carrying authentication, authorization and accounting information between a Network Access Server (NAS) and a shared Accounting Server using the Remote Authentication Dial In User Service (RADIUS) protocol described in RFC 2865 and RFC 2866. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2869"/>
          <seriesInfo name="DOI" value="10.17487/RFC2869"/>
        </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="9" month="June" year="2025"/>
            <abstract>
              <t>   A format that supports 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.  This
   format is intended for use in systems where TLS only protects test
   data.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-keylogfile-05"/>
        </reference>
        <reference anchor="I-D.irtf-cfrg-aead-limits">
          <front>
            <title>Usage Limits on AEAD Algorithms</title>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization>IBM Research Europe - Zurich</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="4" month="December" year="2025"/>
            <abstract>
              <t>   An Authenticated Encryption with Associated Data (AEAD) algorithm
   provides confidentiality and integrity.  Excessive use of the same
   key can give an attacker advantages in breaking these properties.
   This document provides simple guidance for users of common AEAD
   functions about how to limit the use of keys in order to bound the
   advantage given to an attacker.  It considers limits in both single-
   and multi-key settings.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-11"/>
        </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>
      </references>
    </references>
    <?line 1018?>

<section anchor="changes-from-rfc6614-radiustls-and-rfc7360-radiusdtls">
      <name>Changes from RFC6614 (RADIUS/TLS) and RFC7360 (RADIUS/DTLS)</name>
      <t>The following list contains the most important changes from the previous specifications in <xref target="RFC6613"/> (RADIUS/TCP), <xref target="RFC6614"/> (RADIUS/TLS) and <xref target="RFC7360"/> (RADIUS/DTLS).</t>
      <ul spacing="normal">
        <li>
          <t>The protocols RADIUS/TLS and RADIUS/DTLS are now collectively referred to as RadSec.</t>
        </li>
        <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, and therefore removes <xref target="RFC6613"/> as normative reference.</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 use 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 recommendation for TLS-X509-FINGERPRINT (<xref section="2.3" sectionFormat="comma" target="RFC6614"/>) is removed since the model has not been implemented by any known implementation of the experimental RADIUS/(D)TLS specifications.</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 of server certificates is now forbidden.</t>
        </li>
        <li>
          <t>The response to unwanted packets has changed. Endpoints should now reply with a Protocol-Error packet, which 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 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>
      <t>Thanks to the following people for their feedback and suggested text changes: Alex Clouter, Mark Donnelly, Fabian Mauchle, Valery Smyslov, Heikki Vatiainen, Paul Wouters.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+2965LbSJYm+J9PgY0ym4poI1m6Z0o9M92sCKlTm5IyViFV
VtnYWDZIgiRKJMAGwAixqrTPMn/nNXZfbM/djzvAkHKmetZsbcvaOhUkATjc
jx8/l+98ZzKZjIqqK7vji1GW3bx88+pFdvZf3r+6/CP877+ejeCbbQEfvc+X
N8XiRfZ+dvX6401W3xZN9qHJq3ZfN132Jj/C3/CDQwN3ys4/vLm5yPJqmV3l
Xb5u8t09v73CH5+N8vm8KW5PPenNDd8O/nE2WuRdsa6b44us7ZajUT1v623R
Fe2L7Nmzh0/G2XePnz0YjZb1osp3MPZlk6+6SVl0q0mTL4vPHf6nPLTLbttO
5mU7efh41B7mu7Jty7rqjnu45vXLD69GMJrHo7wpchiVjvdsdFc3n9ZNfdjj
WHmML//4oajw4vZs9Kk4wi+WMJsTeQX8F4x7dFtUhwJn+Z6rs4yff/YzPKWs
1tm/4G/x811ebuFzfoN/xreZ1s36bDTKD92mbvC+k4xf+H/Pq8mrplgWTfkp
e18Wi09F08L3WQZXvMiuikPXLjZFm72qG/jHoVq3VdH9Jftb9i9Fs8ur7F3e
wXDybfa+aIu8WWxo8l8uDwv6IntXdDgLdMu2a4qie5HNtsVn+FXR7Lc53Osh
fbmolzCehw8efvc9/41ylv2+aLZlJT84VB2uJD/5SB8W/K6NjPyfl6tquizo
K5WSq1fv6G9YkxfZ3d3d1H6jk/A2b9awdl12edhuiyq8/nVeVtuibU0Eo9d4
kv1QrjfZDf05zm4OZVdkjx48c8N/B1K8yWbVEkVznL2duVd98PD7J0/jN/t4
M/NvtZNx/fNexjFpZRzTRb2jXzY1brliWXZ1497opitWsDg/l1VXNOF9XtXV
kpcFVqsrqhzWUf/1CgbBX0Yv+Wic5SSN2bLItr/9WJXwJm3Z/d//3b3Kk8fP
nrq3fgmSMmkPzWS2/UvRdUX8km8On4vdvD40a/+uLY14ekcj/ueGBzXdHqKl
fP/y5sPLd7N4Od1vR1UNotHBEF+MRmW1cn+NJpMJ3AdeK190o9GHTdlmsO0P
O9Bo8GqrsgIh70zz7Jt6VcKUZ3CPrDlUFW6wfyeFBjO83dZ3+IRuU2S0xgXd
oSm2ZT7fFm5g9UqHsQOByNdFOx3xB79TzSd/XtHfcKdFDVK9wHnYHuGWq6KB
DZ91dZa3GWvQaTohpiczUO+oKfnGry5RX46zu00JG73dF4tyVcK9is97UCB4
JSgCkg/QUG6oPcU8peXYlcvlthiN/vrizyuQABCJRfGfzkAlrWCAZ19Go99k
r0FmalAmJJf/7qv217/+b/CO3z958uzLF/njKf/BV19ej3/Vyso9nj988p3d
8Nlj+oNu+PHq2i3+/xsLn2WnFv6vf/0nWXsYLd6dP0AB+PLl7yICMvwMnp9n
d+USR7ks9tv6CPebwVGFxgYfI2P6u27Kv7D6wpvMFqRScObOZ7PZBa5+V8M7
i2Ass7KSOX/0/bOnOGj76xn+xS9Fi/zwO/5kV8PdanhyA7N7RWOhaeG3K6pF
kW1g8tpNfVfBesE7wdvCX00HChlG0o6z9oBnYItvUsAZVy2OGQwYN/ahGlhW
HfRYhAHGlGfbfPEJ525RVyuYF3jJfItShWK9hUOhyPZ507WDMjFbwmFAR/L2
OKbnpnfBZ6CaXZOk7orFJq/KdtfifMntGlwLGfbbq6cgo2BEld1mJ1Lw8PGj
h0EKljXIS1V3cC84RHdwJDRVpkcVzd2io3XD4W1hHQ9wbLIAhmubYgcyok+c
zPMWVjAMbpyVXZYvl+1XXgfnsyB1Abdq6El4S5S8LW7R6QgsGbhmUGBpQnlc
dyWOs6OLqwKGgnOPU9EWhUzC8+9Qqqaopi7r6hZHhDKP4/kAJkpZ1dt6fUSt
VWRg6mVo67XZ2duPNx/Oxvzf7N1P9O/3L/+Pj6/fv7zCf9/8MHvzxv4xkl/c
/PDTxzdX4V/hysuf3r59+e6KL4ZPs+ij0dnb2Z/OWLDOfrr+8Pqnd7M3Z7jU
XbTxUV+AZpgXNJfNHswOeOm8HS2LdtGUc95Ov7+8/r/+G5wGspEePnxueu37
h9+hpriDXctPqyuQIf4TJvE4yvd7MBDxLiCa2SLflzDzsK62n2DXFTCb//Bf
cGb+64vsP84X+4dP/rN8gC8cfahzFn1Ic9b/pHcxT+LARwOPsdmMPk9mOh7v
7E/R3zrv7sP/+E9g1xbZ5OH3//SfRywjq9rMgCA+qB0PLc9+tGJg04j7MwKL
2ul6uprE9fTxYMoXv+QbyM4vPuOOW4uK2pUdisGhxVHhffQcDDe4+hV3uLJb
gLILt4A/8A5yvelGuEx/ywrVaXVT6uEY2YPSBIsVhzL84zEez6QZHvevY2fq
Wy5+QhefX13gy8CbLttN/qlQDdy/Bf6MbiN2hR6A/CHbBmiAvUG1uyB/8Cu3
gF9f3ffz3t0zWB13BZ2427v8SMq0y/W6GgQSJ3sp5k14TfhZxa/PS42rCceY
fbvbHSo5qjNc/arYZueoQvmxJLh0zLfHqq6OLJ5529aLki66gEf5J/NT8BNe
HdD+1WJ7WKqNvCnAt21oKvESufpcL7+gT/EmuK/w33Cf47bOl6jh8/QlReUv
tiXtK5Jl/qis2i7HU7/b5B38BSdrjsZRDmfCnZuVcJO2aEBm77nJtkR3pcXT
NReRn6CYT2QyySogM2CxKPZwyMdPasOjwLzY12UyYn4JcPdkJPbrfZEMSy/X
m7NpiLOb/oBfvqXv9nBm5s0RzJz5n+EinM9l2S4OFBCBsf0MCh/touyM34fO
KN7m8gGOTSI3Z3jXHR+cxZKtFTEpRZjg0IAXYoN+DobZvTrtZzxBsrPwEPvt
tz+ITq1YecL2kTtfpbe+Grg32Cl0E70jTGqseX+jE3zNmgff49IWOPsB/oaz
YS3uTisfm7cDQ58Xm/y2hHEEe0UXi6eK9ojcB38ELjLYnWW7YSMf90BvZ9M4
WrgPXsNOyKIob50LxXsRJfCGZCsrd/ttQSYUmz50TreHPcnwV5frkkU1vYmc
w/Yx3WiczcEYo/uHL3A3FXnbkeIyW5geFhZQJz2d9VcUHBhnV8UqP2w72nds
vIE+Rz8JJh6MoBa80+w3+OUB1fsXParxYmd/y9SQCS27Hs7tik9CMB6bekeL
IhcGvyk+zcb2xzPzusw/gbd4PXs3Iw+kKWh7L2WXy+i/dujflKiG8si1wpdA
3QCWWGJZj0+b1mgtwp+38OtlNj/Sq4lAkZUtO8xPpMllOmMo4h15pVmLMrDA
2BNInXoXaPOUK3BeccnxJkUOn8KoY28Sl2WRbxeHrb2WuiATcGdy1G8w41sw
wdVFe1+AnVG1xcQ5mzWG6fgojz9GkQJvrjnuyTDuYIwgkoUIPdjN4E7g6pqx
QzMgL+QnApbxb9fqqv4tk610jVsG/uJf3vCU/W30t4n+L/zL/oCv/XL/LXv0
4PvHv+sWe/gnRn9b1LDuR1fuV4el/qo8tL/D+Db+dJR6ZWB6wrDB24T5c0KW
J955HnxxOpOPVb6D984jp503QytLxZufgz586JGZS3e3wywceygGOKBV+Rl+
NZmgmsUj6biHQWxR3YJLt9+AYkCXnF3rEiTMxFMe+BMsU04DvTnCQbxjfxAe
1IIsN6KCmmKdN2Zs7EA9lJP9odnXMBs4IyBbqHLoKf3p0NNbZ4Q9Rp7pX0Ts
2QBNVbf6OfQQfHS9tR2MNovb3pfX/T1/FWs+U3yyM5vi3w5lQ6qzTYweebQd
E+F8aAs62UHrgmSj8QNTfdjjasra4CTVYhCxMkInf8tWFx8hasjn6DngAMmw
IzsHbr6uZNmD4qz3+b8dilRjpKYNn7BuzncHOAvmcvKFlZdZodmJDxs8g2rz
bby0kRSDXSNiUFa3oBKXkeHYkhZcoiDEGjB9Rm9Tieak96uKdd2VprL0FmiM
r2t39kY29nSUvQajEozgMWrNcATg5JEWXx801Md2vqy93B8sGmdwgC4rdmhp
0jp6M1TDO6YK5Et8cfyITdQw07b+rQ4bz6qq5jfmkCC+NDj/+byk6A2uf74l
dd+RkUW+SYuPzGDkog/kFWGAJdgnmNTjwYpIsIHaYRzhADuGPMiSY0C1d14b
OStY5/Iq6wagp8PTJNzDsZA9Okx+OnESInNWBrgGKa9sJ0/ZdMt5fnEO+HYd
OIqVTla+BB+/xIQEnC4Uy8NPu7sanCTUTGhnvR4ysDhOQL/G4cHGlMRNK8Ow
uOfzx4/IqCjI3iA1Cd+xdqMx4QtosHYc7gbvuihBmcJOw6RWy5aAVwdgfxxA
ZkgW+xHHEMnwOgcm4laDTDtnEAz4mKN/yN7FGyOPRiRbCJ+wYvUdhwTb7K4A
HZS3w+YLrI1Gj6bwKDyPBpSwbk2MoO5AEsTF4d87u1kNgN2hO/BRFI4DmMlz
1v/87S/43ZcvF1O2I+UwwVl4MHn/Ada2yDtMAjhV0GZJqGk6SkyoHewTceSj
qWAdTJtDdgaJNE0Db1qYvDuQBbZMFkc1uXgsC/Djg7aajl6v5AsJSY2H7X/a
vcFId9PuQs35Oke3GORjDwYjqiB4l5aPq7c0U8mhSma4m8PsS+Jy69Pd3Ove
ZvEdOvCiX8t9pi4vsSzkfGKpJQsFps1WumvgyEHLTnfsTAU/pzhHfWjtgXe0
AuD6H8h4Lm/zxdGfe6AIVuCOsqfDPwYJxIFhvJSSEiGonuOO7kxrhCxCiJMM
/VbfrGuL7WqcLQ+F+vxsV6WGaqzqKFMVHMywyzHkT/ffDS2dStVdCe8Bs7g6
NPwy3gnqnK9L+x8eOPnj9OmD55PrH1//UT64vvkRlGKluZVO33+xAdOsonGQ
skiez1bcwNAGjPfloVHDj+M92xDko/RF0VSUVEYdtqmXLuUD9mE3CRHBRdF0
HGAoJJ0hx1UyBlEQEt5zgcbps+kj0BWUiyDt+3D6GA8x8ISccnTfPhoH7aXi
iufkYlMWtyemgPbcb5J8mxyaNP/+PVp+Gq4Iyz5N+ZbSp261Lmi3gk/xGT7Z
fyo/425FozDascPqI2gOEgm6/zS2Vr8eMgiXDgYOipIEMPwKZ1XkC0/dVfit
RovckXbADDPankcS1MEzOrcjWu0Hd5LxzKFIZOfltJiSgcOyLPrkMky5Zj47
jCWdX87aC8lZPvr+AQoHG5F3qQWrmV0MN+r8gEg4k3miATDSjmrhgSmzreeY
1SSVJmNtwUQp8OjzAyOT2G0jVj3suMDyhtiazFiLuyzzo58OTd/sT87I2xRl
I2PIK9jloOYxpQQeQkHJfTS+yAgdMOKniFKjrcVP9Hvru+mTaUhsU17+wTP3
PYZfViwUuK/c79I9+ojuE377GF8Ko6DR6uNGDKsunnB2XkzX0zGnPmHKSTgu
ZyFa5KVC3/8f4VxqDxRPpt/j2l++fyN2KFxdVievvegf2SIaTQGuGCKdZNAw
nwcYMy0xniGqZ93y7/OOwjCUzbMQMoWSVPgW6JTzXpsHV2mB+khULP78t210
Xz1elm7PdLHFxdHJSQHDO7AzTz+A+6KSdffCqPHR60v5ac/kHOs4l2CtLjrM
ftOlKmc8z8Mx04X4kOqww2sOCXbIL2afimKPFm24Dz6H0/vg95FqynkZbQXa
fW5TgbPm3xMTPJyq7spdMfgTzHfDq7XjdC6DbsD3wNAWvBKeBXicteWcoCMT
HB98R9r/sF+SYbtA3CAZmgNJieh92ZOauM1AN+qrPXAcxTsCP2bJQbddXh1W
4ErBdQ0bs+h+FhUCKcgaW3IEFwxU9Ym7yKCXgbRdTjCalTwcRBM8mCNuGRxG
zrIfdinHqXJxbmxzhvkiebYsN42TjEL3mkOu3lRhTBYNKFhv8iu36Tu3ce6r
bIZmjTc9fLdnuFTL5x5PBMZ0OA/QoZ1EZ0KrLoFGBhgSAYcD4iwWHQ4dPkpG
Phg1En9UXM6n6HLyjOgBgVGM+OAnucETbZolRjx5D7/ijmoR2B15ddt6F9YO
VCsdQZi40DNvWYC7tG2TSHYBj6VD/dLbPHwk8SLlmvsEa3aJ4SHVtzwCMGfZ
l796d0NYzFaUVb7d8d+8MJwhUnWLmqIrxtm2WHWTHViR2Tafo9nzD6nXIhNQ
uHALqE95+yMae7u8W2xEGLb1It/GFsjYnZdh2J2hfVZlg1Yd3gRxwqDGWOUw
iqdYpivZWhrX7Wqd5Hez1/zqoF7hpKPNKqFhDK5hUPAoq/zd0+9xlTG4xzHz
ZNS08Xka0WjD8aGuEjeSfaCiJYMtXYq8snQlmO/vYBFgT3QNH2rHfcG+FX1+
R/sD14kyNeR8z16/p8cOQBBw0MEWeITW+vQbJu0uj6J0OeaT4cEdPnecafpO
PqBfHzFxwfokH5hCEOBFAedlIfNE1/3dp2n57oY+jSw4MLE4qTQwrF253pAi
YX+TtN1cAa5D4QPYZ6qOuhAdga108/JSQFdPHjx+DHICgi6eNOlXdV6cqYIb
EKNUW3wmxfU0yM+iX7ptk8vG+h9cvCp7fY3KBkNEDnLHPwhf/ZoVIZjU1xak
vJ7JnWOjGl8Cz67LerdDCD5e+f7q3aBvKI88WpCVL79UBQ9LQstAxpHLeg0Y
hHC3+9WTnUnHMBTWRvSu/l4Kvws+RjwujijQYYGHFWLI5ABhjwp2xGc4DC4o
NoYyd2hJ6xH4sg6xEbSlC/Epcrn7DwWcPrRYZdPUdIwjHpMDJTuQ5Fs8t7K3
KFN6jNSVglzgfpwYYFSEagt94i9xqol9oOQMjGYxMmdXHp+h0QQRpVzUPQb9
yMvAPU2zS5BTOUFwGhUUQ7/CCSqqA+bNMNTUu8AM+KMXZbaOc9Y0eICBLYTH
cJWOmZeNcmxyv9g80nOyt2/+F+qwrwxRjC7OVP7dd/q3jfu+rX6Dto4FQWHD
zos0CSSbTEWGwcrsZ+ZZQ2i92uzK8B4k569FtBcgLWO3sXkPk6N/5GPHpVm9
qIimODRNEdBGEobPs12xmxeN/uq+sYzVNYkGYPbOr3r0v/+qDMU1dO97yzR9
wOdOKrwS7cxvZyfUV5yMcWzcgSSCBhPZqAWTma86Ssq2BxCPtl0dtoI2obcQ
T2ixoawCXi9GXLnys03niB7927r+dNiHRF5V+3HGpjoZqyw9U1ZJ/D2cFzFs
gFaZHNK5xZwMZJHHIYka/JdjmMPwPnHE5iHFbA5c20U4peAtkkPAnqKG6lAb
cRnbqYAVh/sGQn0ixm694WTa45BPnqG8VhzOkfBIPCH4G8sGFxxEco/CoXDo
Bk82J9xVNiTNOhCUZ7glmr3vC1Z2r4M54gVDMrLR0yj2e/s4ig9e42rgIXxf
iFmirhxBhn9Y6HjffurleO4HnDmT0WK53xQ3Pn2DXxc9DgFweONXkuVYH0Bg
KVonVSAILXKPiCFjLoFLJQbfP2Ss8m9+Yxl7mDRBzr2WnYQpEQcTGds5hrIM
a/pvB0RtmHJzh1qiXtsB2NaAh0eBrqZcl97wnY5+xu/4VYbwXxvyczjPRMIp
mI1tV8LMor0E7wa2XOLxYgxRFLcLjKL0+mdTSEV8h5bjqwbfoTQNzrhqU0Z0
LEtw+jEfok+iu4dpRJQ15ZkodlK56BAvOqdA+/aY6TfKHzKUnx0FDmtgGOJn
ydmwjNm5TJjBweUCDyoITNiW50FMXOyaskb+KUEwv+lh9KYHXBTRULD7MA8G
VqI7qoNmUavC7X09qckexsARSOgeSy/LBRgR+riAQOSR2FII2EvAK7D2iMhr
uNZnoZlszqnJyjg8cjK4OBycD57oiB0u0TUIbqGNrisWGxkdPZkNjr7cRmky
eX9BlITfaEKa0Ws1nMAVDAjzvviFnLAaAVfIGepZTDehIO5FqcKUvqvRUQJn
5QUiK0iowzKG6DJ8LgLp6rTyyhtSOsElxjLziqFA/oyRbZ93ZoaguVx8zlEp
jtUkeE2LrYuHHmxIkIs5R79oIzMSHZBlsaByGHisZGKjapBcUFkyjLK1YSTg
E0MKcSgBgaSLzu91GDWV1NOZZ9CfmhYvj/RZQU5OI5DFn6pCX5dFTLIbcxqz
Pel+Hwd/SoE/mix70jn6qWJAw23t1/Bdjb4mXIYvGox3W1fSWOAmo1HJNqAc
x2xG3+lOaYo/UygD5IuOl9U9GXHy9O/KVi8n0M68IDlVOxH0Lb708rCwVaTi
CpJ6RHvhYwj6MVct7DNJbVdv4X4ufxAJhJzK+VzP5F6tjQcjSsyR8QlFw6C0
tv0Fbg374PzJ8wsxdJ3R6iuT4kNBSsYx4khxBHdRokjwm1gb9/wTxFOtq/Iv
hNqP/SNZxPb0EoJ80CoS2r7ITij66UNJPiqoIhRjWEyiq/flgm0InKUbgXC9
NwgXmFxocf0i4K5fArjrCz48RXxlOMCmDfkmfO1itcLlkiOYxIATLqcqDUAf
YtIRNRLb1vgEhGOjBRTOdPg/h17bFNs9+ikUr2EDkqpvYRW2PBicyn6egksb
2EPugQWGMG2pkS8mIuNqehNCBiKlHxlyNYAhgVE7IMnYKX1GaaL/EJv5oBNL
cwQRXpYvC72zH+qrACGSVxzzukuCZ0+V3zkm8jRpJTPX4Q5CF2jglTCiFhcp
oPw9ffDdd0lmvG6i6jaXCB+zaiQtQb69uBViAjMQlGIkUsNFWXPDILN71xce
zu/0RjxmR06DYrbgvDhNMdHZLdIMKGjogNhnuzbfjuOxofkC0lxieUEj8ysp
Id4IPahMdu6ENO9BZi48SBEDDXqwD1jbuTMqFWukRw4JCLxELzzF6Uv33s6b
XpdSad3KOYNRcgRLossaSyrFuwM6KndpZtDkXg4RNuPmTOGDdPygm8nVKhj6
x5M63T0SlkbxHOOKiJPlNb3Ps/vUOSra26IJUPT4DQi4GCXbaUYpcDEg+GRc
UCLcP5uPkHlB1pRK6LD9b6+Dc8/Q6qHnoGOpto4MOTnkOJsttUsR4hMVdlJP
EOFJZdMElgGz/LQ0d/PNxTLnKnH0poMVMxeOOcAVM4VShOxKAkQxi0NU23QZ
D8elGnQAH2FDT65he2Ahffqg4ZodDss9fvod1qlTtiCZCcHhKiDHavV6oQJ/
sCU4s6SQEOx94mgAqdmWYGSEuko6QUihEyS3qJauzq4wOK94NHosqlHRq+Eb
BLLIC+mBEA1tUApIaH+nFRXNYlMiXFcwyDwZ0/Q4Vfsp6BBXRG0vEO244mjl
s5LxdHUtsnPI4IzAunpm/9oHtt4Mo8CDViqkj9asHj6aChdgfvTEC1V/X8Y6
okMrCp9HoRVAs34FkOMnscJJun81KT5vcjgJcNHNh8oTNYLehb22iYYE6mZk
407eg1CCWIzds8JnNyC6h3bCtQ7j7ArTsjQ/k9nlj1yQY+/hgVBMQRLH3b5l
MDOa4nEYG/oc9uflJkdurXWRDJb1STQ8eQOQ5B/A0KTBiwWY1mmRV0zzvys/
40R/0zKcfHc4MlGrSqDWCQkteihCDIVX9z4Pcc8YCB+UHLc5KNS73faqbK8C
OtsVnQn8JNSewZV+M4ToH6ffSc3om8vtVOi5vrJzSP+FRfIw+5qrTV54TCLL
k3NmpMDlLi9DUUfDi8iPJGvhYIn4pgj2lvwODByEv+RLOcTNVtStEnCAqlTL
JWLiFgX5xs7tD2EXHrzBUrTocvIS07o6aSmsg8Aozx8/iAgfxmKkF7cl52VR
7ZfdISw71zFlWomEVtOhyiXdLBOLAX16KNtmNIzJZU6wWz3uLLogwwtwM6mS
FWcaZOPJg2fZ+dnHSnwTeIGXmvg4u7CgjMyM6X4f7HZyY7gTvvfTB4/g3rIT
s3dw3XtYQHqfc5jHz8cL9whdQ2fxwY8L0KevDnSSRMcQ16tYrZFAC4YnQ5IY
KFQGKmoXRZU3ZT3g5jH0mpOdyWqT3uciPpNpPlkPLQYk9mSEo6VKWq5tncSp
T6DzZfqjn1icWtzfkAGrUIlPMYN4XFgAY+ArLYrFWADaERoX0DDsot4HAVEi
mLFSEr2eXE2Xxaf600TLQSYFPkO8shwcD0MsoJFOxD573VrxuDS8aJYKDj8Z
OpWSyVRiaVyFocMiKBuq7VmI0hMNdlnPJu9mP0b6Hv5ONKedCwIowCJk3W3t
gGtqRGVTipWskiWg3+jwxGL+RRcFZodgf2xnXxWdxNbe4OkshYImaIP5p0NX
btWtLD4TvYeCs4kxztefej+WDgcB5OPGwoCpok1lo3u4PhXWg2LpFptlve4r
rcdPHz93FDdTZWOyJIRK4FYiLEQMgbX0kfUYajcpPX+2qfeT+XEC/zlzZUaC
r8k2KJ4ubIZRO8Gdwp5iBqNlfVchnWS+09fS6K0G3U3yBa2jenMZggf1Xk59
TJl3DgxTIUsrjM4Bf44XGmAPKtgyMafvhgoAbtTCCI54bJRdiEEF539LcDu4
645ginTe8ZuWGufL1+uGK7csS0AKkRUZ2xEcxcm3O3zcpiSbi8YuckGrP2+D
KLGi4BQEHpRxASwWxi7qRrDrNm+5Ihzwxjwft7AlaFLurEaBlO4dI9mQpE7D
cH7lcIalFpcNEBr8FI9eOI9hXjACiAkYXELytOjIKigMufEIFfW+vUUVQsGE
tQJ90waqB0Z9kguB9yjpyP8Ab39bl0tRD4zjGg8W+VHIfZejK+X332+vfvr5
3W+zc3hvQtsKmvzkZrrA444g3w1rUhHAUBkEN+fty5nXHbJRSbmoOnMt1jla
fYuPC0ewmKrWQoBbIgz8x8x74aC5QUXxfuOQRPh9o8e0HOcH5Nnl1BEW3/uw
F10psQ7J+iHeQCtcQ/RAKD2uzpmtVODSNEpwjwgrZreVi+9RXIFLEO1GXBfU
Yp2sh4YBTbSx8qANGyny8WpL+OiGJ8mTwgXZALT8whCTeom0JYLAK0y54C3h
zadiS4R4+FGqyDXN3bnMgNfzKGCYHZnnWwQChJQl35oj//gqIvpW7S60S1V9
F42SrEc2ccexQheYj9Q0Sn0CwUiaiV/5vC1bdfRWoA/I22f+r7SuGQNZpm5C
pY/Ov5Rt0nhZoGRBUXWcMNB8+KSI3VQH3SG73FEPCsLq+XMMQMtG8AQQYJsX
2yBlovIXXe/IUzlXsKLTsmrOtNPB2mJ3MsHWuGNCgnj86vYo146jQcjZc7EI
16Onz1B3gmDnVYGFwmcwoNUWnbYzs6FchS56z1xxRenDKw7QIQSgp6+oJs0O
QVc6zjKVLIpwCeEt/1I0dXb+4AKlITENSB/HL2ueKp2S7DhQuJiJV/JmXoIS
wayyYksMFoapH4EybeqabPGjeAJ8HyYMqfgjdiq57ByhNRHHSVrugz4gOb2o
77DSKsfVbwcEijJqj54/9or++ymZke4RyXZvTz4P+URrUOy9hzpDjTh1nz4i
lOAHY8VDogukYWrqXOl6KTCY78slVZmX6zWbDHn2W8fcwScYTFKI8ZmfHp04
pDJa3geYaFddwQcVZrvp8KVaryXygAcsLyMpxAqp7lHsjJXC41/5TeiUpJeI
xtgKtS29xW1AYQvMidX+h3LnDW+LacDtlZ+DuDkIF+QOgkwKRf4sjHYEc/Kp
R4nIc+AVwZwJmYJwnvCYszXxs8l2nyY0na0qQl5ib8gqQ5tA394X/SG0AzVz
AwQ80YlNYQ3LXjPPQPoG0fGQ+BR9/za+tmdA0XmqvB2arnBD4tQOLt3Lz+R2
I1iUsrri3gzN/YkMHpdWRPZIpIWHrTs8oHymZlgqFOu6Yt+3Pyi0ZAeGiulz
0FUSOZarwQ7ESBfXj3WSvUOiRPRet4NLV7Y+beSgFNsjrBeTWIWhB9+Spj7n
jHs2R4p+i7BRVK1Eqeju0M62pUAh9Re4Ck8FqM4x4mzQRsm9bbn+F8T9wRR5
jtGcbSn16VfUWS60Vm1q71BATCewOEUbEwUQI96r4d8PsE4MLeJXDA4cmJmf
eMcoNAMzKnWSZG03Q5tWrDJN/XLVJBU/qPMyqVer6egj533989RRkvM82Yvh
d2mV2dMHHr/8SEAf8cEuSc7gUYXbBbYWiyaGYkYvESI0qBkP+/2wvCXCNk5v
IRAM2W+sS91Cr+lQPOzd3GKcnC3RPyMgpwkOwND849uAhXVgKzr5DT4cUThL
5j85gGEHv4XHJiq+E+e06nyRspyyuGamT4bHQGE7CsduioERJIXIYSXkYVpe
Txn3zsOsYtLxu3jc05AOMedIYG5FyMrj5bhia2buTKZaC516Nw/zyvPf9FAS
pE17xZ9xncncGA9pRRm9+QmPBfTixvF89SeGlV0l0kfW8r3SJ9D3Zw9UWV0Y
lQUhHLAUoTlaRkGeq0dy9PrxZsT8Os/wL/EXv9ACt1++pmeSvc1XcVeKIjq+
E8n0Xn6NbK/fpAumo5/ITLYJFTUudxm8CTpRWOkgrjKfBniS0ViHA520PqrF
4jqGUKLOu3jcU4tYeM/7fJd/Brdnl04SBX+z87fvLy+4BH7wV8YKAT+8uuB4
pdBk5QNtM8aeINNDyikqwAZgbnsgwYnI+RZ2Zd4FeVFuXInMjV3eSeW1aT0Y
hEA2ZTVgg5EBIXt8JoMSuuWmmGj0XZMAkj3sikowtrCZmXWg7ZoDV6x6qRqb
KZY8+eQjis9YU+nT7KcypuxmwwqTSSc/hlnjlLwuQqIQeWrGGaw0ITfeX4UE
EaF4BVirJao+dIvmlj6H+KS4Wr78hKYft5FgMIUZ7RmrzFXAK1t8J49GjD56
vaCUzpInFnEwBmHBAKiVZls4MyvXVd2IEZSoa8FtLg/sMRVtokxaSczs6lAu
KgZUslKRNzFgXZKqFNA5nwEjia17kIWigR23EU0fzFyAAp4XbMf38rgWnKDH
GDeI4gJTtfQIXg7D0OYtXghAD7xyJicO8Lcrx04alcZRRA07Nn1y0ukimsPI
UmplQWk9qQlA16XuRBcNZJadK75eN/lt7igtkYVDoiaehfR3xldBgWCC8dPJ
lzKAWI6RPCcM0k60MREFoQhthcKwKfcCcI9+FDO/n+CUIcUcm3IsEQolssIN
4pmJ7ilURVSxyhqXKmkYyMcKe5j6BgM54IkbnbpDWyqXTkNpVSLF8RciZm/J
0TMaj5o7Elwvti3Tiy7I8xoi2/+wEbqaOPgRoG9wGycnEbOrcJeS72UnBqW/
/c+EuwDFzVdHkDFDsR0UkE2RN928yMkkDKFHJfJDbbI/Cl6XhC52zpkh/TRS
mUpG6S2jF1A0+9Fh8wn/TGly1E1kLJ1XtQ4lk00dxUuj4M2F7gGHoz7hOJKQ
0jmGITwvbQTr9peFQHyNCo6znB6pbdwn6AaPfurFxQVpK1oK0d+tpH0Gt7Gr
4R5H0TSFjvp5XJBzhuENuC2sd1dSys4lmvnctHX19JVUWBdyaQjAh3+7qDPC
vFaHaiGqLNpyXLCtMAYHk7QOVq4KmNU2DTRwY9AxGEWGgplNIQlQrDjHSE5Y
ByMVeWyiUMnE9l+EguKMuw1wEepIGBqKNDN1hT0HA8x91eRsf1AyoQmodrek
DIWxVRmCJhlbpkGQkB+pWCqZLAPDPhhQRQ6FSG6Fp5dZIk0JslWzDE29SFxb
KlLKlzAVK+dfREh1MgVpWEHtCygTDSNsRqK6lZJxacOOPyAZCtcpmOAbkRUr
D4IgeCeudXToJ3ctxqKNAF3itVJBv8oeP5g8e2BVSoqcw8rpKmxdDu+ANYmr
x4rce1+499AlERMFdQlasSTmFPLUkO+86D3/4QP83cOnYLmNZS1cJWXYO6Yb
SQdz85Bz1hZc0xZWloDGQS7Vrt1TQ1BYn+0xPeCyUBYqSOrfW++MauBQQ0Uh
2FdMqO8SpUEgdwwQ6Hf9O/TzriGRqq1xAsYcl76pP4lzXEU5EswKEFcJAzK1
M5sgYxS7FSMqPqRB09ArpGMsSLQnBD67sl3IOTzBqxVL7eTFK1tHFaHEFTOa
JY+j81+Y05nNCW2A7dYBAk3yB8qKZVqcNhIqQUckLbQvob0Kg1GW4RHCDnPi
GbZ4pk9mkpOSqZUtQwEi83yq+m4ioxtgD0QXTmFHMnsR5Vowo1uOFW8JaDnT
qQqjp+0kYV8ppzix9OcnIgKPOPdXyTRg8FZwHnS3AH/DabRksY6DIoleDNPL
1KtUeQ0DZ7xpJzS/JkRqSju3SQTVTr3Px1hwGIsXsGUM8rBJzENUm+TLzbj3
WUg8vbPGEyIuYpugqG0PyJTwGoQQTD7H/oTCy0BDdk0C0mUmM64/tJ02Kcr7
4bdAOiENJwSfGkOMNTLOoa+Xs+uLcapvTlxhp7jRe44HlNWJi7miR+/ghOVD
ON0T8FbwxJcBACsJXXk3djLzky95W+ZRUHtAJYO4dtoixg6nHTVkYwhwTJC/
YnLFfM148EaynkFWh0cibQo1K+DvyBoVe9aA2xagnMl9hISA1Sue7KR0cgkL
jU13mLZGWzxy9oIcokZ2BaMxKjSC2n5tA/BigHO9jA6Bcx8sGSotQBSn/dFH
7l+QpblCNppNpA1h1F1eeVsukPpUg5tf3BKbFiZ9c7gpZGgnP9uOe1ZA1Goh
rnf2EyFQZUYu+gyF8hBxuI7+yju5u9DT51sphruW+cI3+Fh9qrCJpRiKI6/g
EvhzmwtfEmUaojWWks2zttyyOSNzcuaClBTyM4d+UTaLw44bzLX9vhOgv1W0
0AKkfMhCgIgYFGIOBbNQAgnIGeIqz5x6Cp4awtdSAnYs+S4RxELktxxUkLAs
2bF562OyS9hD1l4nfhJldZw5lRgsHHUON0gfb2HUsLnoByZAZAU0VFLciVsq
569Kv1QzcI3UGOGORG+4s2WPNTcrRVjHfKESGcZGeV52XkLztJ+1L+J44P0N
py96pa6+8Z11pL1AJHurrYSL/dq5lpCtstBHZYUOJH3h0k/8II7muR5chvsY
bhlWLQNlYx7VH9wRfV/VeRTimE9ZdofhPaUyUEkSQODXHMksvTZgXBdGb1pe
8WqNcdgQB6QFCqFWcrv6RJSDylQtDsIDsPUMC4cLNLBdXT+47oQiyKguuyBE
INsWMA29W/l5UrLpNDd3hvuesIJC+xUrFbWU2I/gREgvdAb3Hht9n7AHphir
01hStSK1cpZzGn2ArFdWIpYFt3twqCampUMoslep8Bvp3BdwCDKt//qGoHH/
Kog4ZL03KAP+DLHvGNiMNy7j6X7VbXec3dHbSrz0W24Ll8ysqiW58UZUrgU0
CIVHHmqRnT/Afz28GBqnq5GVHk0U48CSODoCTXIGX1Ks3rhglkEtjtn/nK9w
nziPenBUVrvxd7/zcI1vqBYafERFDTkxr9Py2clTcgGmEWOClFmHZpT2IZFF
az8qklIyKXqRwUgLJ4e8MDo4Nx22R293F6AqqJsamWRYPYkBFXPdOALjAq39
yB8jAHbIXYOhD9pLOnFCc67NyxbYHUVAo8M96bg+gatmcAXexz6fKFqRNeZB
on3et+vgYivK20r+RuwqDvbEZXF6lYQeo65RjkGC48ncOExKmoKi7/eHw5pE
mLxP6E7Xi6SuWtCGDab+rB3jZVRf6kh3xLdZ9JqBGTDduDdi6idMkSjiJA+h
cLSnD2gea0CReWCqQl0kinvUbSibwBFQVNO8oRBX0oOyHStvMFhrcykRgDtF
ZE356XeSQsleefQ4bSUafZ77HLvi7TCz58q1MYDHNI/JKxF4PuGhwz2AEmZX
S+9Da3pod0rrgSkwxHUoeuRqUyfr6jSEbPjK4iDVrfaaxUE9nig9Gu03s1PO
40a0xMXnZm0cN2fEHSbT9fp6HP7glPlw7zeEEliDdbLAyopJNSRzRP/UtI8W
GgzMIRK7DqPD0wkiZ7qkzzWdQ4kmgqoknJcs55y3C0iigMKUltaO6cDxqKlc
y+yCSRrqzcI8+VliiDsThGKWOPDHBStXCsQJza7rFu+OWZzaVb9JQNlog1Ac
etUfor8R2zMo9xRfCGEvmv1IGll8fQVHGqsNLQPR7cqZt9oFSYWZmRjKc00O
C2wukE+xk29nkND99phi2OeSVwozqtrZw16wq2mjNdrij63KbREiOXKbobAt
ss7J7XyE4cLRtoVkRZ+92GklJ98mP9pT1EcUNIwaXNewhOcMFauo+foWrAB4
qwvlqRvgcTMhku3pCAN90IYxKMIVMj+esg9omtGfW6H/Qhl/O0KVJxHV3Iyj
TmMuLGXQ+SATqkBg5GxWiPwSK1WO3YbJzULa3ReBR4eteT6Wav+N01ihZVT8
NmmrcqE+JysoNYws/C8IrG1xm0tj57Rv7c19zchFBjjQYo2nY7cllKphb2ms
Y9RGbL6bqqX9yKe7q7mHkfLvqBfTOWoI3g2D98oFxOF5RKNIH94LVcspH90x
wizjWASxaNqYkEbJ5dMG8012MEWNUzeF9cIRbIUL6fvZC3UJWgFAjYtY1WoU
ghXDnESLTkrc1qHYGJOjjt5bX6zXUX5mHH33IufHsbWhIwyHo7DqHDli7cBM
yXyHGn4XSr4ZjqDoSyy4xyauZuzCWUlQyjiehIpYu3F1rsTOMfiT/EwtEhIH
60flSAyHbi6dP8p+eZJ1WlhijIux0XNFoLDkk2HCD+gtDJ0qvd1n9SL3LEdc
cq0SktacxDSuqc8dhU94GaaBmSDqYCmFyimFEdld7EjFdaEDKRhufhOaVqOG
siRBoHdkf8uJtY+SkogwgjAEPlZNviYFG+F/BrdaWK+2Pez6wTIpAyT+Ofbr
2nqLqj+aR5ERlBtLtNOO0O5wNFnWxQK/4S6yO0IkKPaRzPbR6ISl6MafHkf7
vG17MywLRcq6nDdE6EsRY6T/7cZe45buZA+TJ0aFnbcEBWodROsYABnk+huw
tXEifO7bIa8IH3okNXjXYGvhdVFRL4xWlGMIkjK8nGhuCFyjk81plND8mYgk
DPXJvlOM/ESA+T24UEY1g6X+LajmAdEJIPNBtaftquMgngvwSsKkj2xIwn6D
OAYF59fMLBxhYRhzjlqBd6L12m2SHCzJF506aM4cC7crHSmRNDTwdK7UlaSH
+db3ToGEs5bNHWughJuKSXeVuDG+hLXr66tk5xNSTw7p11agK6xyjA4I7Xj7
zHbDgS09B+DNhRuPfKorePuyU4YIjFeFgHYkGAnhKQextIbPpE8AawY8llkO
Cr5XNnsKdKCN7ex+eN4pF3B4XgyP0AUn5wTNcTS562YXAjrOd+8V/unbqMzN
j7blze0h78aRd6lNFAE+hT2kBduNm1PSeIhEsebkRo1cDAvqbNrmF6CKbLdI
TY0vlcYAWjgbfbVOhHkbpPr0O46l1vFkuG4a0cYMsIrE6dJ8kqtPIDD8vJTU
gjgbtBaHzrkYbXA4E7p9QYCDBYmRmv7UUtf1Wqot6R1qJoieMAUC85jXWwKf
McOQhlZVgAOSQvZ4KzQniiBIOBI4U8AuswIpbOT8rODJXN3nymD7iSWxIcPn
2Ze/r2tzZb5NYmBKno2ePpyCy4Ti84p1/qI5ClHvctlyp0ZzT+wMxC5p5LLy
U1qCiPkw3r39NNr73C9HAvjkwfNnsPNQoZWV2CdjjSUSKQ3RsLEPyqTPaoZo
CqVF/iStPqkW+b5ldSd5xYhngMg1DUJCV5LpYpQdFAnwYXe5whI319i59u2H
j9n5Nfz/i7EBpYyiL7pc7Q/CRlnthIBAmUkI23ZK7h5DiXd5oIfxMWv4KNzM
jbNl6LL1pCQOJW1NhvOoVykoRfnAv3/+gKgEokVNDALSOJoYQmMrFj1MLbtE
sExyD2eRLLvEGdYUVrI34uoc8gBCzdGEDH9R9+6dpfAxFEZZglsoSaSUmePN
UeZ0lyP8xuiW/PjBbGw5ekwNc6PwEJq56ybfYdUDGRbmCQinkf8RCtU426iS
F8M+3NAnz6en5l+658VRIsV02q2SuS2ZiSVMlVBeBAc67MP4iUIHwx6CEDyk
xX9ImesIL758EcOA8mAukZx/5VkSJFQGY8k3Rs92Jea6N2MSE1hxVGNkbhyJ
I0ebN7oFTeIwbnfzzaajlyeFmyTZqRNKALqbSwJDwwUeVmU4Zif9Mnr2TaUM
4uR7mFT5l1GbzpEKiE8+jsqB58VAMkY9fRwzAq6p9GwJpsh9qQ00kxRLYGWm
+Mujd54j3joZESulaOPoNiCin6GdMOYDZ+iV4VjmbojajINqPqhsPV40nzID
9eGse+vSTQToSV2okCjRB1xyw06ChOFDdrB/Ma1WinPV8L3jO71Hy8JAQ8A8
FcNu09SHNU+L22IDfV4ST3B84pHca6D3oHGP3th2q+NWFt0d7uFXS01QDnT1
nqCB2ShdYamHfoYwpCESdmtnyfqr2LtlvHjsiQxtHYZTRrZVb7u4bTAvAg90
LUVvEs2PeihidIeUfU6tsn2fM/VAGJAVaNj4NlSGHV2/3tZg89ptjEBbLUXy
hTupqUnrYZhYpGE4G6cBBudY+iDaQ8/oy/eShTjLVtt8TSO2rjl0xtPHgYoO
TmzaW1iEUUvNY2gV5fnPUZnzbP/MQRY5eJIbmu3APW8kZ2MrYExF4SEWlE1F
AjMhIBPoH14Jsz3dzEKlPVxF/JLoAjU7ivhghmewt3ka/UgFOHqw5NJ46J5a
g0BVAw0ZeTautFTdgnKWONO1ibiM80NX76yslDgM3YwhXixe6ohC6d7tqVSz
BK4M5m5+Yjemm/CbNpv6bH6j9cfQehIOpNZ0VJE12bq8IEdzTHQletXlyQ1V
TlkrJnyGLJXsu4eFknJBU07kNsaZ+B5I5ISDSG13Wl8zR9g8dB3QSTNzEAPi
w+yy7BpvHG5fS7hAgNNrGOQQPMt00ByLinDJAYW/y4UulUNWsjldi4Wx/YFN
XvAUiZo33ET1+ygwPeyfNT8ICQDBLYWnuo4p/HoezsTDxL9NZyKiqSWc0hCW
zTW48Fim+370VpCCKZbvrfip6ecB02ej+wPsqLqZ6Iy4n5z/4WZ2MfQaZHtS
KRYCIeM+GNpadSBqePnD7Nrz6p/qgtG/6ZnED/BwGLjxBwyob63VxvT/7y3y
/9HeImPt2EYuwDf2F8F36rEiyFbWwYUtHQIJBbsdFOXXRFyCVKb0CubrO9aT
FFwJsRO6R1zfIvHOA4WUXDsm67JK9seh457BFoN3pdxBvMwos0xa1MCU4z1v
r55O/XaAv7NQLNd5JZ2H51EsR4HzAR7P7SzhrBHyY/qsKRS2YBAiWQU6t8AU
Yl6Rkx3lewzx1qPr+Xck0oF0hANOckuSYftdiBE8NAJ5T1Ky0gBVcsBZdZmb
Ia3DqfoY2pIrndMYbpuvqI7Eh2mSOGpwXYKLLyOTBXWAo9iLNf6z4bCp+JLq
rTE1iB7sSyuooYiKhYqlTe9vsiuJh1OZDbWUfXWZIT19YMi/J/h7iqZew7/D
eKIE9hKT4oeStdbVEzOfuOftT1nSCOsbl99omg4PKzqbXxHRhtzAlYURq0G/
Mixq9Ggh06RPh/QISO5AXQOkcIestGnv+f1StW95XjXYeMAFOuAXw90pLD/y
Df04YLR+SYTPIayLRyREics5cZ4TmqZsB4cqb0Xlphqz709FTLRgrM1JgV0U
8fRU88J5jwEelz2vpBJ2lc8bMHYHapBCNyMualJIiHqbLFVEbY+pmuAUMpm9
OkOkfqJ64RxBc4qmgtm9RKBkE/TQ4Aag+A7XDJ3/ylYUUmc73ESmJDAmNvDj
OCTiLkJjB2r7GlAsRIrjAtVzsh7vyG3VXAQTJfbnkY4zEi+ETBy5znZC3QX4
3IubcLBLFzJ0MQxVqgVRFFEE4AocRNvDnBr2MDFcdLmT7Cy9GAcnKYRhVbsp
065sP63z0SGDbnEwGXyt9v7lxPOcLDThM2CKn7tMGpC40v/h1eMnou/0itdh
YLCKEcSDJBdy6bR4MnG0dW/wPS0CNoxGYt9QJkpKfNc1/gHa/5Mg8JDSssuV
qjlKvAoXn51XcDRnwpyDQqYNRgg9WzMKHEdHgec5U05GxS7BRONTng5waxnB
mH5zAbTKE7GUjEk/+SLTkTmSzsIgujDuvNaF8e9Qeo5Fjqm2dQ3nzf8J/xvN
dEYdGhYTgBIa1owEGhbuh8rFQymAEcGTNCq7Q1KOZmwGiQRFklBsxuDOtub/
lt1ozadksSPXq+SCCqw71hiyL1XpBXbhw5HWWJd9il2l78ZJM+Fz78PG/Q6m
bOTa3BGUycEFwH4FS71ocP8uXEVcdNd3s5tRzkSv8bROecKlKGfp7Bpqb5GI
lkzn/iAZCszouVYnUcDdY47FbPpgl0cWlJ4/72Q+LuvtFoy9YjSaORoWep8A
Sf98DCwap/ZMGG6YlkhUpyPw0DfwrGg90imtA2yYN2reuFoGkoy9u01EHQjS
RI2HXsu2CcbxOHkTYmdeaUmXIztYbGoEb3DG+I4UCaG++2QnQfsIFFe63qQ/
IMwsJWDCBNWD0+NaBZnnqyXAqwhdY0hpdIQZGoSUQ1jY0SWEN5YToXdHc5Ub
q8kQkhVPumqrJYSld7j/9R3VKrJsew+RzY9j6N+WuopjSpQLDwIggDKauLSy
7VHMN8i+oAM5KsbX6GMOHbMozwM1aMqFHNvW4IwxmytYIE3L7DxS0D9A2Nr0
fGj1C8xP/FpfsAH6yaRtuPo0dCzGG/m928gj37EQKTWPWZUrDNfXQukZGjlz
dorSS/mQiAd5eYXMjYm1McgwMW7EbqXW9WX0+MGnKyugy5edGMZ0qGbROqZU
cpThRGvPLD1FEwK0fEG1iIZPI7nJCdZGu/mkMlXb3dUAsTgP5d6kxVMfUepO
AD7VdEDDANSyC7dPFybJ7CRM8/KQTBlzkkXlh/KGSB87FReY+IJmfwIhWw83
H+vfWCprXbjSoAvWecRYPoZnMUU+VSem5vRMnpr7oIEiUMU9czN0n7AhTu+H
iCdAdCxYLO2QycJrkAj7YFUiGT0L4l2V3LKruAJjnWrl9Jh0e60UVWMH31Q4
c0+xUPgC5Ygnd5BNm9KJArmzFy9jArekccHAggaUs55WciIro92QoViFw3Jo
qXAhhqTf8pmgfPdU7RK1zRHzUGI45jpj4QqRcmPypVy5tW2LqMdYqG9kADgf
PlZ+HeLxcyKHPGgPg9cUn1yVlPO3c4wfsVHyjoDLvuhJtGOBS+ZKIrTbwH/m
WbVKJXuUwnyvY6ncElUA9c4IjaOszdduR+Qpgm+1fiRiKnTY6W8IB2Kw4QU5
AyC/VEEGs34mrPJnxkYTeDn8iH+22IbEDQl7I+iQ0po6WSpQhoRPEl1F3TXh
Wzn4Sf8P8RFSGUijSFMj8y3SsIsrAzQCHGp0xQGCRrmctPaT1ivZXNJYRyk4
0SyYLRbd5KrY5scJ9uuhiXiJcG/6E8zu3R5r1kLdIXO3qh1IpMVszn9rryqO
jkhD1m6InSqwWBGiW4xSPHgv9CTX8G86/HMGVca+6VPi02NVVQcqhIjTnCh6
49yzPiOZDveM5/4Zj4mzT1gfWMUTiW/euSYa1oeWIfVKVi7dhJMH+UT8Yc/5
j7oa6HKrnE+5Yc/QF6m4gSU+FsPoAt9MHsJnndA0W1xAQoVWCplMM7eWlTRv
T4IwXdz6gr37I5nzwouphHrQCLBqDG8A0jwMPVahqI5f1+8i4aGmAntjxD45
MBsDuy5aCekR652P5IcYYmjj6NNIFO+WwI5qEWphgOuPJwDhoVD3s6ig8UmT
M1Bbr1Pnwtvct5OBD7aG3qrylPDJxClttON55+mW9CrWrvY3e2jdKlnIpLGm
C5+h9SvmUE9bi6dBFZTanpTQh8a6GRC1jg4AHVdL+kjjhsFYWgz+jP0ET19P
Vpn5VhZX8/lwquWzVssoP+st7GWzCXyjkARzqsi+unKawKiCUkGmOC7RC3J9
egRtFkFzBKP3jWMcEQ8TRoHOeSRl5JwwEVM3DZE8dl7GJUyB8k8pKjrcYIwe
cZqQSSVrawlaq6dyRJlC98rJNbc4deRRhmwh+Z6xxeJ7oVF8g9jy76pYf+jW
PTXduuPydU7Ual1TY2lvS0C1U3NLM4G+GreISvW2gzv3lSMljXb1LXeeynfz
cn3gpDEFGWJVaKVVSWm9VTkHileR1NrPtPQYabW+aainDWY9QGPCEQJ3CZXk
WPxWMgcSQgGXPVKc6MdoXyeMIcmpv6xPntkhfW8hGqe5HRBMGrIEhnbF8sDm
Hapyu7f/z5fp33mgqM+xol8ty1QqQiCMxSedUQeh48Oe7pKevJnsJV67Td6G
hNwyHExpu/sNIW2JVtu8Opi1bmimESAT922Ic91xSZk7ZbQB0ZKLJvgdepbD
/WSgQZ6HDEwlcowlj3J1In54DgXAGrUCZz2J+857TLFQDNtfbMVVbMfDWS+Q
5WHLLjHosoylK5UhSsRZAunU7VnVelILvj2ha9RBSKgXp9nNEfTOzgE428Mc
mR66IUli3TsgpFjpQyfL197xH2XV5NDS+qTklsyUE1cn9DcWK0w6eygqGMM6
BJCseDraPgRFEfc9zMZ09KbIb/Wz9DnS2YzpyHim1yAF2BNe8EnpFcON/oTL
fsxpVpexds379tQmgSwZs1mHxlRX2iI9FkhKZgYrJ/sDLIvHilwX1Fz1gyX9
qgNoBDRGuwazt7sa5olm6frH13+EjXZbNnVFfvdY23zQTjzWEoiIWYgNeRQ6
BWyEDg9MK8TiNb4Tg2mhgELPHSycxgSWYrc59gNQ7Ljk/CxFCOcEI4NzuykL
wY7595I8AbYoa4l2kzKNFlcyftWWy9oWaA+uhD2F1yrGducum9vWQZO6h2pi
wDdfmg/gxCU30R7WkioZx9RjQT95E90irgPtkPDjP06fPnhuZ417nYAu5slY
EqrnJ/Gv8TGh7BdxpO7SVyV6KvumJG7O1xjmRqipkK3CvzDeQw++fcxIGMzX
/1gcs4+Yq09+oBytsy0FRUh3v4MzIvmZH8B1DdbpcaTBL10aklg38wEWzi4n
Fv9e3/zozOCwT/Z4S+kq0Meq5EmeaV5YXQg7Otxe0KAL4+x1ZY/jQtH/2QX9
leulDw8BPNIMaHDPgnHfZjNQAeiUo5fgvxjFBa9piStTgzU1ouo435+B748z
D0+QpJ93ImQPJFlqetfBu8Bw+nfp+W8+MS0FeQ7rX35iEqJJvZpsqWUJGKWf
NIVOGz2u0NUa5WXfJWoH0fiaMBDgeshxxXjFONfpi2JDSMnFH5UQOQ81XFj8
LHZX7prWwd3YhyfIauh6atV+hVIrw1WOpeRjRZND3pGQjbiOaX105+Asik0m
BKviKuDd2oKqgnXQwhTphud/xF5ki0Fz6qTTEM+PUqyZL+wL4CqLhaRRf3cP
hf/tEACwINWOj91RyoORJsZqqOXliKsO4so9cSkMFtcAOBoLTTN7JysR0eD3
9viJMBvZhryD0Bi57FDfPfbxH+dko12ec/NNtFUdNSl1Rx07Dimz8cmvv8uZ
sSfYIlH3eDuo/CYcyqz6QiBqkdUepKm81PIJRuffDuXiE86L1Jpxx6qhniWe
ipSGIl16275DGjOyiB/V652kBYx8zVuiakQRNM/TITATn4wElloS7nIkCYl6
omvLCu1WGFduchw+wR0MsI77a3yr+/QpOxt3VDGtX5cnX55rlXATKr0+O72t
JlKwzRp1oiK7S5h7yaJDYv9e9o94b+qau7Rokbc0uwgONc4sc4wxewcIKIjA
bY5Fe/JryV2kcyIRe73zU+HdDLcWBveAEnc0JXx02JkumQ1pT8P9g6TD1nY7
AJRJ+nUL6cAy+J94KU67StP70K2cQggEDefvfgmdzAkoHgHbT1PqYC0VqIPl
MVAe5IPUPVTMq91YYklMJyu0Nyoq8ZaS5FkuxcEKiSsqZtdRDgQvaxFPYl8N
SKJICoaHtt0sEnoJIB6sl4+uuMiU43oFH5/yq/FoLAhs2ANPixaMLbkvmU89
RtTwGWpg+MuX+kY/S2uAIzbgVfmZt++/woz868UoENfx/tJ3K6MINU6kE2IE
rlMU/vX17RPcQ/DfZwgnf4lvqbeQY5GyeYeqhBPW5ABXz3IDqpGjCu9BExRm
5soJ94vRi2xGYN5gpHqQTig/RmgzrW9PL03llldw5vD9kv0eSHnQcwuM50xN
x/cfxHtIkiR5Gik7u5Nk7bGD+5EPnkriCmgMvWBqOT4OiT3fGusNPVkT5VE3
y7HN+bZcFdJ/kSCwdOqdeld8Ju+TcDD9JL0E8epLbl6J/YSTnR1bbFdwSb5F
Cw23G+a8z6/qmwssWMiJCcQZIcHczSv5AWdo4RXXnC2QUueY2yThFFO9HPoH
L+r6U+ma9oKC2rA8JvFVBG09e/zku6DznjBIhbYwPezh9FEoNX3+0P/2afrL
x9NRrAhcRHQu46Heh6D/scaEtMMPBQh+L8xp1ooC1CkcA44uqtxLfj/KCCBa
ZYCMN25nrzzSNiPxMAMTgDWjwgr1w15vLucW92Ok1CzZZ9wAiEIx3HqmDm0r
pZkT3c+eNDX5abNzuo/qDu7MAkriInSDK7YUUbRwYWxeGO0fHZ6UUcYWBdNA
QW0/1Dsp5qEjdh/GGEtxnEd1jPtPi3uLMJme/z6crPjO+a4gV9Xq6tPbGEOA
cL/gVrf95HZ4MhU4fRRAxq3BDWhY4iWzZP2lOUZrACqt28DEADgEIS4evaOS
Dbrw2FPl43aIG4f0lgVQ8IzpvFdEBmczi8sSFUHxezGPb3yt6lDeImKpl7wv
bEsIwXzUOiYlcrDwV19eZFJkKA5aE9ra6EV2bkcqFpR6Ls57jNqTFD7zaWBv
3lCr62g7nCmdZ6AcRfWNGfCkq+A3BvXuRmawNI2vY85t4ohRPHruRXr8RfZ/
6/e3q5eBMeEhJUnKAz/DanB0cNolRx4eH3qeARDNvQBsJsAEM90gWSITASX9
ExPWmk4j8Kn2GhvEI6yGXGsCg9liEggZN7L3Iskjdm7KBSB/qJjJ3uUs78RK
F44j9UCvQhksG5ZCdTFkWH6FaYKQHNyB+zQq2SFNQrwqatlhuSwxGNuaMwmC
1hDwmVDLhdASp9I+U21whNjyPhtXUfAlbaJmVn6fz3lJA7IsPo84lHOCfEM5
ypAKj5RjTeE5rrd6+ugBHLNRMJRCrPhbn2DSwVvzcmy/7bjOdMfG3O0BpNBv
wODK26vahegkOOuawih3oMdc9pOOaChacRyRfHHMjLNp95Xb+fDgYFjYCHNS
Yg3ceRSJ6TWTjfpXXif0fuT4S12gVC1RQKGtcRvo83Wz4lqMB4Yu5KuoSbTb
9hYNxZPlgBGuNCVuhoNFqp7jGnBlzyXAFx33BbbIUyI1LdofTA4Rt8qNynDC
qoK10Kcq3EfG25s2VKPKzrqKVVbUoy5tw0A0njqGpJ2MnOFt4ZhNrffwUW1p
Kc6P+E0IFSC0fVb2KXW1u4gNOHlkk5dMkuZXQSfMihM0Imth0cAGKkeQEWEo
0ljCuZ5BQlvei5kn7+E6NnrOHPa/NYt+3xMJ+bHYlMVt8LsjAgOKUsh4zPyl
jlI2IFL3g/QXCdvAIJMNleUIZtyBKgMpheHOe81SV8WdcFlEJmraZ4hahwjA
LUrftZLWDBQ2POXoZ0r8RbqIlp/xNzehd89rbeTzQTtbnKBd1/NHYmNSpcQV
ZOF21hcooqxKj6sQaGCKLQ4D3HMixncRXcO5qFZTL/Q4qkO7q+YldxxQJ5SG
1tIJ7F6McjrRNDIln1NlWMlrry78wo5TmNCD6FpQPxei/GVU0g7NqUZq4zZR
yx58CDlyljfSvj4iM5o1a61DzTTQPifrLpkh9tNEa+AgWK06QuXcAosmXtJF
Z5xRU2dUSZSUkcgkb56pikxvYemuvc+2W+0JI3Cc4BWU7aeYK+qakZZgILDI
hrYpURfj8VeoS1y3TwfgNfmjGn6BIyJe0wyIu7qX4BFqaM3CCy8lD5OHga1Y
S+ETJ5goSglHd2GGuL0r6hmjm+zBrxAfPkYupOWkqyfwnzOv1+pIBTNlWBkV
OS4VBDY4HMp/VJSHRl+TARPUrVg5AYgfhc5U4ysxVhpiXGDEzALmm0oc5FeO
vYg2o7wt+UxHDkzJGKajnyorhJAAaqmd9wgDB0NoUD5kEanwI7g6Ql+Bw53F
7aytYd45diBn3P/sWp4hWv0Aa4GmGaXDArlepZE1ev+FmrZWeC5MQu4tzegN
sTgpgzDp47idla+Aj9dy6s32sFQpB/8eC1RxrTHtvIftDj7xsb2w/FMlFpjM
lMJN48m2eU7SfXSeJihmzodJEdGAwRs6jhGszSouRGcR8A5kN5Dn9phubagJ
LwOyQ7gsDu69yfw4UR4KpmhIJNjKjgMVnqYPAy1wStyKvp5oEGtn6KiJa1f6
V8akg8EktWR3EEN3GkWtjVBlCtpCkuocbETZauvtoTOQuLNRQxM16aKT2AAp
C2Sq45TX7gCiagjZwRVx1Xp3m3ori+eoNFHBr2G/s9nkBt1a3m9OuFE++yR9
Hzooc+OSaOki4oky6l8WTX+Pc9qT7kXNukG2UYkYvAllNPa/+GQHxdOscJhl
6p+FXuW6FeSwxYOauCVptKD6Solf4YKNjfku+KR5n836u6ffI6OVpLQOLTM2
wsn2pq73yGgymfHwKBGi6AH0ylF+W01McZi95LgBT0L4tdmoaVs6MbooGtfz
f0P+oAy1pFG3xLHusdvDFsMzciyopWSNgy08vyuxbJuZWjRwqbYWeTyG7XAQ
pKH3yPf0MKks55mgV+m9h5UzGS2dGOkcvNaKLrZB0+I01pgdOJ4rPoqU74Lr
7JxadzMQN5Qs2fQCq8x3GOYVCjQK4fGDRXISKjtaTu2cTBGCCOpHRPd94VuA
OWoROQt0hW4RTSms0h5LJ6kYao7J/8wFzQa7IN9JT2HBpmmlhhEiuzuRc0RS
+TtqA62aKNI2/gLLcYdMLieVH/mkMiVYpk8wAR2dx6gf8SCOEenu9gHEm2yO
jMJaaNlZ6MVPfB1FhygisCvXm4696BaWuJV55Dkh2ngLGvD841XCrJy1i6LK
m7L2RCl6wAdwqw8EeegcPa40NyV6oC8Jpi68g1QL1GKboLLkg+IYMBHLoXKj
kyE6Kb/NkW2hKhBdi6IBXsEKEyKpehOARNjuTaEntwtFjk2X8ExSfBo7P8cd
aCjVghtvzOY/H9dbUIog4mQliZahJBWlvUJ+TnANhBzkcsXnj55+h2iE5WE+
F2bDLUzlxMLnMkE7vPW8qaldngYxpEQCBIys+pDjSMouqMaXZPCYhFm8LAoe
MLJHKbc12BYzlCVIoYQUf5xQU2Ph1fmzuA87Z1+ElmpV7ZAXYldL/WTzCeMM
JTUJ2krrWdTUsE8mbOsSeVS/9cqUKcjtnE0f0PbiCC9Go0nGrGdlNdD9GjTa
El7s4OJJ+FwMjLSb/FNBVQbWw5QULZ2yVg9oMZ/SWpqyqm1J84vnLBVQtDuE
YnvflLcOK91/2ymM3Jp7wsS2HQxUxivmAiEJnDpzb6BGMyZvMWqBxVdje4v4
HVg0bfS9KvHhsYVZZRdSFIM2qY3h4BxBTL+JbC8tF8d9a9OOJQjEBmRKTRQx
mTI597HvycHYGcYcyOkPqq56bcklPaZ5P9eEm6Rft4PWh3MZpUC1HPMXm5Su
/du2WIM9AC6Vst32MGfOJmWXkbZ2jfZ+yxOAWim8pwRBNBeHoYnj5IZgd+YT
uvOLX8bvEe5tYBaOACuP+gQBVWClQBNyXm1hGrGsxLImECJ5SE0RtQY5Hc7+
DWPb8bt3H9+88fGERbmnI+xQdnJkLov5Yb1mZAfOw1BDJpqn5FpaoeT2Y5FE
JD4KLqpCIrcIzsEyWbpUAcYVskjh62OYSi0fbl7LKtv5CRETLuW/1XWTspi2
o/1yftbkS/jVWVJ1OM7OmNPjd0iYGn2LYcWLsS34ffMmtExcBqltg8w5xpN0
W7eH0HuJ/a6kkJYL9HQPGRN2P7wyth4McGKBToGTsl02NXWKdkYZ6fpOku8a
QcXvjKZQ1lJ9luePHz31RtlDPFkHwt3cpS3hM/66WEXJB08rlwQsyccM6hyf
EvrYqASwgzHO7gotSZGF6hcr4YQRoByjwY2VLH0qMJaAhGmYtdSuetz/s+QD
JbQUF7aqsuhWE5CTCVy8rdfo6Au9bnYdg/X7mCfZxqPR711uV1NAPpJtzcEl
tI/6YgM2FRreO6zsp3IxomYPgIaGm1pKgxo4t5pCZRBep2XLKwQsIk/M23Zc
PN01ZN4Unzc5WqPWcUJgPIgTjXtJjyVaw2dDkuWkW2IInCUzCm5JMygtedA6
baZLS5pnsH0cur6zU84SMR6cB8NUaGFLbvCjyOT4av401HxpSgkd+mu+PesH
SSWFexLLZaNBss+ZsfkNzAB7nklHm9mpdRGsOVyBcuECGekYWqt/J15Mqgxn
BcU+qd5B5o06RHEPxeAC531ZBukJYWBSEGpv54kP7BFn5nygQFM6ghyxuI+p
gUzGWhbaxLE+AqUUGC8ldxhTiHyvqeysKKuq8SreEN5E8DVNxs+wD+lGnwl/
GZiF6Rjiqpk8m9dr9p3AtWLwdbB3ecHYAaqIuxD0w62POl3Fj1GKVO8sKf4r
pjzObSfqDnV5AeedjlVQWECHltH1fPbr1iZQwf7SGVWGvY73XDplHKQ3+B9Y
SuML6uoONuuJpwh2EiaNnWpSWYtC4GfOzqXbOmDT7E+g8Qvkn3HYxPmRkFN6
Pvh14Ka/AsMk3JfC6LZc0S0Nqa9oGG1NwRl9Av0+PEaVdiVmUYzdkqRpvyPw
KFkgB75MgpmG1xwWZ1a2sr5SadpZgREFDf1q1/sQru6VhHo9MCST82MyHHH3
MdHfV1tujF+RR0HdZXX19delnopm8lDrLJHfnLLqVoR0wkX3U6TP/VWTRMVz
vXFpzs66WxSuc588aoWoUU3RSdI0oPTjewkuEm8pPaD4LNZyA2YCLtuhb1mr
OT44vfUtWDNJRRUqMzdkNwiO+1CHS08fuaIeu0QeBMdxid4Q6g46i+ZERqSB
TRcHp5BNxyUBEXJxjFpQkjz+1AjN5I1GkUCQll+pJRaWm8tLtPEZLjjcoVAm
VEJbBCOSWzVQjoDEXGYbsVElxlCp0lA7a19Lc8bULmMUYevRnjJ2ifEQzSEo
a06SdcZmLS40JpAZECkRIHTSGmGuGzg7JctlniEx+lGzFxore5ERQ0iSk1GA
ub5Rf0w2zeSF07aMMKzDZlbIXSVDRiOpSMbNw9RCZhkHSsyCgqJc3FPuJMWE
ZiJOSYpi+xBGxVqurj+BUi7QfSjJvDylaygmETrt0c5egEstLTtDhzxXFNNI
Y3XfTDLYFz55hdXOMDeXYSreSG0G6WcsR39fsyqS3lg8yFSZO9IkajygFR6x
1bKhOCpzftHiktl3W28PO1chGtwq54Hi0DAFbYuMSF0cGZHcrw9C78hlQuKB
WjlA4rBwTO5O83iwxxrFuys4LjxU6++YeRObCj95EvHfPbWOX+ycNeCcLVbN
epJjQTCbEp5L2Nl806SAXJY87pFsfO/EozjYIcKTRZn3eEza4/Fstb0JZf/C
1MeJe/V4YcmFr7UzkX/S+FTDNnm9aCPYLXZ5deCr5Qyh4m50j4XtRvtfe9xi
3OU9MZ0GyB7C4Y+GDdVsUkfA8CupJsp+QrT0FscJAsYt1lpqx7qzT5McMcPv
BNetNN16+qjbmcfd1aQP8CBYU2KypsX7Z7dVfTBmkMsZmPrGkBHR4awwct4+
By1RCbCBsAcDjS9TwlVHYu1KQEtqlfrzV7oKFYZ4b6jDU+SdCMwtdvAiBFZE
2trHRluZTJzpyG5hFHVzuisZ2Rt5NFCcqruaj4rCYIPmchA6KIrvRVnQXuCP
4n2ypEx89i0zQjgC9xs8rCispNQtnEh2/aGsGBwDMCV1L8bbsrvDjjnjffzi
SABQgsjzY0CfDxFROZBRP69sCoEUBvYQWIqRmSZBOYwSSljceOhECIgZRmdZ
Jq8XeAhkjmzc+d9zEULbHISSXg0Ldwh7+iKvOdg7XnI1RUmcxNxyxU0ARVWV
UUuRItoJhuJtClxdN5xP9Px70leEx6SlUr54P5QkeYw2dk/Lt2sYVLfZOaiu
o79UuON4gF+DMn4KhxTKAkoC4QY7kkcSMn/BN8FyVXqL4vQ7TCn0pl4C/xzn
UkplXJ+kzkiU2NEpiUaLtp2D8cTNO+NQLMZqS5Aw0gRxkFYQImS8SYiFLdSv
vgBLOOtUyuRyZvMQESsk2xsMhnBB4N8oeRxtAfY9RXjROcnbo4KBDnsYy7IY
HMZ4IBRnToGBsbykRCNqsCa6GdBEMShwB7fclXRQfNRSuuEf9N9Y5yf8yIO2
BrofWjw3gSNRovz7h4+j2D4y+7J+jx9MZ9NdHN3VUr+Iujf8TsBZsIzRIgk/
HYgM2KVMtiFy7nvDKjN7kIAYaCOutcZbTi5ImRRXEIKUMGiI/gp1j07wurqO
2JKL0LOMCmOwahNBLxW2GpHOoKUjjdbIB3gFBPbIt/IWjNuwocQDJc3bwswt
NhKz8rMmjD0kuPfqsoTzPRfnOvjWAYkSGS4Mbe7jqWIHEGeLjfgU2NiavYol
mm5kPXwUNYbx8T703YQ0gyST8/KegIoOR6kVyx1qPr63sDsVlKnV2eifWYNn
0m53qHwZGwcfcyoJYGWR5kmSSPcwHfg4VCQHlRxUXtlaNjDC2Q5PHDOpgspI
SDxDpwr0+wlsFw1W3evBl8XJhNPhUFE1vGsK58GD+ILcte6GfcdegQkhX6iJ
jgwK7KiSwmrvZh9U6Ch7HsjNorc12gH5Rg61mSl+QbdZMMnh2wQjUzpbRwQZ
Z6QdmBJB7XB6dg82TJMwffbKTTSI1wYAppEJ0AWxQfpaGS/lME/qRxROP1jP
Ga+un8he2ibqn35zmLdMijkavUUN3qGyEKyuxZgQXWW5Y+bWoYuM38E13aDo
hP0igcdtqKsYsxAPNgoONRcqxdp7xrOHpD4p0ThRtSh9k8krsZrAwtFPtCl9
xQbtsRRBMnZ6Agfiam/owHVNe9h2Un+uqFCuTPPb4Y9XeIdtTTnMppW+r0OG
Gx8+eHwEN8HNIJVKZ8g5rKBigbzOS7SnyMjdpn7WiTLWgOppA/X6ZxHx0HCW
GACpcy284lobcdmUBaxBqPURqOb98wk7dWuNIUxirMoo6BzrQkoxN3vzsXUd
Q1B+XoVmE7Pr1xSl5gcT+IbxxFIGxlGweVGBadNZgKanPGPOXYRMMko9rmb+
+vwj7o0jasJeK9h1leJw8rDf6OaCG9RKSwfDJ8t2l8+dBa5NEBxNaNkxwewx
inVu0a5X/hqtwI3Q/5GI1fEFMnNtSLhMRwPJIfTJQl27oMOJcIzKX8hl44op
mpzU6gigrL6M8FYEh7XpNHIS7h+VdHCRXmL3tKFFXesVKHzFBwrS+BTbYm2A
26h3UCkYR7HrFIaUt9IbDwn3GmzI58vfYJ+groFb/x5cm5pDKCgr/Oiwv8hg
EUOOQ4gi7nazHJbq2BI5LQe7We81Y+E5IUtEmdNCl1mtpJeLwL0pmWQguyqQ
Yg/+I91ZqDR5SR/+Yi1bvsgRIQLCX4eOLkl/5hSKIguzIhL3pHmzRF6x1uHx
swfcw4nwV9oaBqZJarI5ZCnVJIWedJ6FX3vRWxUnKuCm3LFVnZbDordPtGN1
c8QSOdebPvQ8dbNhjY9/Cd9/EQwLmWxFsxbKy3smA39J7TREdHZfGwKy3wu2
OGk0Q8hNC2CUAsAHobkjm/0uIRZ4kQmUW8jWuCmFUKaHxxljXIrVCxfiFcnh
DfeJLX3hKlPwuJlCEXEMUQbqEKhTCVYDOnpBKdnGWgaMMS5zihPQeY/72Grs
HGSSc0WtbXRqQrJs8ru51p1UIXQatLWmVFy+g0dNdJ5oxIZuf2n2qVr6jwhL
QOXf97CzsnMhtatqNExH3gHnncZbjLIdO3IsNnnCbKAtiU12koWY+jp9MeyE
ZBXdvuZAqA8BGVUYmyGnHyzUJaqgcexo42YOnIjhocQ0H4kSP4JUFdUoE4hv
qS50KQCrr2xEfDP1Gf1mpG9+0W++xO3HjU1wWFA7K5CQ67OzqBwEN3RKs3wW
nFm1jYPby10SRdtoOS8vn5GAJ1rB8gVFTyWS8G7QaOU1InrZBVdhSw0ps3Z6
B5NDklFyLoZr565xwbam8bCUjvmt8PWihSYzMQrXjV3fvEmc7pBIt1BFa0Mh
KxAqb6UlmAQz020nW8Wf1EzTWDFHFc4i8qvCsSXoKbRDqRzD0Vu70eID0QTE
zcfERMFhs/714fG82VwbGzUBk41GRQrMAxc2CqEB4u2l6+Fc2J4+VepLtdY4
/hstGuUcCcCQ5kmsPQb3tCYLzZUcqwu9x4ViV5NyhQogP7TkDJ9zQb4V66wK
9dFFgrRLzK5AkE17cZ9SGpNtUq/N9R2c5yRJPqS5oikY3IxaZcKB3zbAKwYn
qxcB4bSOU2QcmA8l5IMKa8c+JY54LA2AXfYgkJGFtzG8qD9o72rxwsVWKauo
qAApk9/ceE0nRs0vJSi9LWo6VDVGcBxvw1jJWIqHodacHlakNcWDY0Jdx2Ey
c702Y0D3Yw75+svFa5MwC52tjowx4R93F06U7URAzRZX6pJKCyuuYD8VnQN2
evCR5EuQ1xPqvqL957JAQ5XMbQBM8RR0BzjGt8aLKYVA7Ov1woO2xgFBJkLF
DfowgFwR/urt7NKiQyA9TChAOc4Lx52eR/OlYnZywiR7S9xwLiOAoUalDUB3
q3M0DFFWkGv6tkW1DpX3OAcYlGiWFLdclM3isOuDdL8V0s+uob0DOR2vZ+9m
KSXS6OO+FjJKmPIx/0ZEyzX9eV8IG76ZXbMW9wntuHfKWsNlGirYCp7Hjgus
O8xGMaqHa/zrHYMJ3xdrPEaOL7jK4MPl9Qts/eDu8kKeAB+7C19kjx58/xgb
E/Tu/yLrFnv45orqAemQeaH0OLIwcn/4kXsj4uF5QW1ikKCb7okPId2rR4j2
2kMTmS5l15tmEEXojBXgGePuMCc/YBX5ahZjN0MTIXcGTeRQgW7I0GaZjjLQ
FP/h5uWbV2C+8Fq19m12Hu58MYW3sxV84a46j4qNLnjiwRD4O0z8Yfk/OfFE
+PzvPvFXv3Lm0V+enph3/M7m/erXTfxoMplQDBw36qX3qMVEjRaU/Vv23uMn
8kEVyJcJARcRM5NlGwImPe/dWkjGrGbeXn6Mb6DDubwGTeot6d5AmVSBAg3p
9KDwbDwV2j0+PJtRiKzebq25JGWSlDyhtZTEP0h4Q4bU6Bosw+ePBV6GXUVU
w0evPJapf6wx9QAygf+3FFc3VcVRwwYKBLZFOpWhPhqjF+SLKKWIikTai007
9PklIIIXAsVRG2N5RZI5kZld3iDIHsZy+3D6EA9A6uUg3YnY97sfSMWXPqIr
wMzHXhWc85fweRsdObfEmRyerwBQSawmh9I4fmU7yLDdcbgHubg2HrXb1Sfy
9unZsA17pv1x8XaeDR/741Ks1g9C9wMODb58ZbXPLQU5JtQ0aEK28Tmx8X+G
v/efys9on7kOBLCgJ8eDbft4OBeRUc033LefqDkwNecOHQIoUSO2dGLAnzR5
eXfFNYNWif9HfJFXr9/9y8v31+9fv/uAjz8xSy6z6TDfPOvMM9RJfUXciQqj
lwwKGo4HxOqVN47EteMto69yIm4XFyyqv+V2/bLEkOz2GEq6scl5vpBhMtV9
YW0ZcAC/v7zWp6Z7Y51zcWHbFXv2F30k49b3RbPKE8kUsGoKe9iWl603Wj4s
TD60E6WRwbRut9gs67WHNfnwre4RWeZiqUmI3r6OYjSDj7OAy2lNnL4DPV1a
VC4DySrWBqc9RLU5dLzxUc6ZLZXiYetDueRDuOK+ITUzL/Za28OGC3FDoUYK
8H8fi5ONcNiKf89sK8ZNXCTF7kFBuwQPH6phdMrYFqjnnz999PTLF5j5jwan
vWQoJNnA76/e8cMDnBKmf6jMX/Y+K8RlUYWdzC3WKTWtxLPqUBGDN5NRTrOX
Vo9hfuIdyfxRCQPVVJu8RAIgq2T2cDkJtYauAhR8i/xO6ZsrGT7LE1hKnA5J
3u0YJhHlKsXv24Bz6uU+qDQ3my00TUN5O/DQufKoWP6ns1W+bYszcs3z6pMl
/81J52pPTpOwVfx4HOxjsaDIaHuRzbY5ZmN+rMHFuumKFfz1M2kE8CAxRvZ2
cZmD8Bzx23Kd/aGo8pyDdT9u8V9/KFHm1vnUj2bWgARml4dmOQeFMfk9tnam
c8vtDCxUAHG4LUIdbbwf+3s/foYNnG4tadWWTDs05BCwnfZPZIgjNeElCjFp
eUV2TSl9C2mM1nWbNxtFC/3gBdHJPHAUe9fENzWggl8QAC30PZPdmKxYsFb3
Rb0PBXolaKOiWHImmYCrVCyuukWECRev+IwQ9AOvF9g82RUKL+HiX+XzMkdY
+mGxQdqdP4B0NsfsZndst/XtOPuhKD99KuFjcOJBHMEouYaVzn6mu+FY/x+J
5j3dokgBAA==

-->

</rfc>
