<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusdtls-bis-11" 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-11"/>
    <author initials="J.-F." surname="Rieckers" fullname="Jan-Frederik Rieckers">
      <organization abbrev="DFN">Deutsches Forschungsnetz | German National Research and Education Network</organization>
      <address>
        <postal>
          <street>Alexanderplatz 1</street>
          <city>Berlin</city>
          <code>10178</code>
          <country>Germany</country>
        </postal>
        <email>rieckers@dfn.de</email>
        <uri>www.dfn.de</uri>
      </address>
    </author>
    <author initials="S." surname="Winter" fullname="Stefan Winter">
      <organization abbrev="RESTENA">Fondation Restena | Restena Foundation</organization>
      <address>
        <postal>
          <street>2, avenue de l'Université</street>
          <city>Esch-sur-Alzette</city>
          <code>4365</code>
          <country>Luxembourg</country>
        </postal>
        <email>stefan.winter@restena.lu</email>
        <uri>www.restena.lu</uri>
      </address>
    </author>
    <date year="2025" month="November" day="21"/>
    <area>Security</area>
    <workgroup>RADIUS EXTensions</workgroup>
    <keyword>RADIUS</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 48?>

<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>
    </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 53?>

<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="RFC5246"/> over TCP <xref target="STD7"/> and Datagram Transport Layer Security (DTLS) <xref target="RFC6347"/>, <xref target="RFC9147"/> over UDP <xref target="STD6"/>, allowing secure and reliable transport of RADIUS messages.
RADIUS/TLS and RADIUS/DTLS are collectively referred to as RadSec.</t>
      <t>The RADIUS protocol is a widely deployed authentication, authorization and accounting solution defined in <xref target="RFC2865"/>, <xref target="RFC2866"/>, <xref target="RFC5176"/> and others.
Deployment experience has shown several shortcomings, such as its dependency on the unreliable transport protocol, UDP, and its 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 updated version of RadSec without 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 target="RFC2865"/>.</t>
        </dd>
        <dt>RADIUS packet type:</dt>
        <dd>
          <t>As defined in <xref target="RFC2865"/>.</t>
        </dd>
        <dt>(D)TLS handshake message:</dt>
        <dd>
          <t>As defined in TLS <xref target="RFC5246"/> and DTLS <xref target="RFC9147"/>.</t>
        </dd>
        <dt>TLS record:</dt>
        <dd>
          <t>As defined in TLS <xref target="RFC5246"/>.</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 RADIUS-over-(D)TLS 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="changes-to-radius">
      <name>Changes to RADIUS</name>
      <t>This section discusses the needed changes to the RADIUS packet format (<xref target="pktformat"/>), port usage and shared secrets (<xref target="portusage"/>).</t>
      <section anchor="pktformat">
        <name>Packet format</name>
        <t>The RADIUS packet format is unchanged from <xref target="RFC2865"/>, <xref target="RFC2866"/> and <xref target="RFC5176"/>.
Specifically, all of the following portions of RADIUS <bcp14>MUST</bcp14> be unchanged when using 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 the establishment of the (D)TLS connection.</t>
        <t>The requirement that RADIUS remain largely unchanged ensures the simplest possible implementation and widest interoperability of the specification.
This includes the usage of the outdated security mechanisms in RADIUS that are based on shared secrets and MD5.
This is not considered a security issue, since integrity and confidentiality are provided by the (D)TLS layer.  See <xref target="security_considerations"/> of this document or <xref target="RFC9765"/> for more details.</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>
      <section anchor="portusage">
        <name>Default ports and shared secrets</name>
        <t>IANA has reserved ports for RADIUS/TLS and RADIUS/DTLS.
Since authentication of peers, confidentiality, and integrity protection is achieved on the (D)TLS layer, the shared secret for the RADIUS packets is set to a static string, depending on the method.
The calculation of security-related fields such as Response-Authenticator, Message-Authenticator or encrypted attributes <bcp14>MUST</bcp14> be performed using this shared secret.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Protocol</th>
              <th align="left">Port</th>
              <th align="left">Shared Secret</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">RADIUS/TLS</td>
              <td align="left">2083/tcp</td>
              <td align="left">"radsec"</td>
            </tr>
            <tr>
              <td align="left">RADIUS/DTLS</td>
              <td align="left">2083/udp</td>
              <td align="left">"radius/dtls"</td>
            </tr>
          </tbody>
        </table>
        <t>RadSec does not use separate ports for authentication, accounting and dynamic authorization changes.
The source port is arbitrary.
For considerations regarding the multi-purpose use of one port for authentication and accounting see <xref target="radius_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="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 liveliness 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> 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 has been 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 liveliness 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>
    <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="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 has no notion of negotiating (D)TLS in an ongoing communication.
As RADIUS has no provisions for capability signaling, there is also no way for a server to indicate to a client that it should transition to using TLS or DTLS.
Servers and clients need to be preconfigured to use RADIUS/(D)TLS for a given endpoint.
This action has to be taken by the administrators of the two systems.</t>
        <t>Implementations <bcp14>MUST</bcp14> follow the recommendations given in <xref target="BCP195"/>, especially in regards to 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>Support for TLS 1.2 <xref target="RFC5248"/> / DTLS 1.2 <xref target="RFC6347"/> is <bcp14>REQUIRED</bcp14>, support for TLS 1.3 <xref target="RFC8446"/> / DTLS 1.3 <xref target="RFC9147"/> or higher is <bcp14>RECOMMENDED</bcp14>.</t>
          </li>
          <li>
            <t>Negotiation of a cipher suite providing for confidentiality as well as integrity protection is <bcp14>REQUIRED</bcp14>.</t>
          </li>
          <li>
            <t>The 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 0-RTT features 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.
See <xref section="8" sectionFormat="comma" target="I-D.ietf-tls-rfc8446bis-14"/> for more detail.</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 the server.
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>SHOULD</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 re-opened.</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 be a conscious decision by an administrator.</t>
          <t>RadSec endpoints <bcp14>MUST</bcp14> follow <xref target="RFC9525"/> when validating peer identities.
Specific details are provided below:</t>
          <ul spacing="normal">
            <li>
              <t>Certificates <bcp14>MAY</bcp14> use wildcards in the identifiers of DNS names and realm names, but only as the complete, left-most label.</t>
            </li>
            <li>
              <t>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 OID 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.</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>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>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="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"/>, 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 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 on Protocol-Error.</t>
        <section anchor="differences-from-rfc-6614-unwanted-radius-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 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 must simply accept the packets, buffer them, and hope that they can be be sent outbound before the client gives up on the request.</t>
        </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 packets to be retransmitted without change.
In contrast, updating Acct-Delay-Time would require that the client create and send a new 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 a RADIUS proxy 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 sender 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"/>.
RadSec clients <bcp14>SHOULD NOT</bcp14> update the Acct-Delay-Time, and therefore create a new RADIUS packet with the same information, until the timer has determined that the original packet has in fact been completely lost.
This ensures that there is no congestive collapse, since a new packet is only created if following hops have also given up on retransmission, while keeping the functionality of Acct-Delay-Time to determine how long ago the event occurred.
It only 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="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>In contrast to RADIUS/UDP, RadSec establishes a (D)TLS connection before transmitting any RADIUS packets.
Therefore, in addition to retransmission of RADIUS packets, RadSec clients also have to deal with 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>Where the connection to a RadSec server is established only when there is a RADIUS packet to be sent, adding a second RADIUS packet to be send <bcp14>SHOULD NOT</bcp14> trigger an immediate reconnection attempt.
Instead, the algorithm <bcp14>SHOULD</bcp14> continue as it would have without the new packet, but the client <bcp14>MAY</bcp14> reset the timeout for giving up reconnecting.</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), both TCP/TLS as well as DTLS require 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 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 acting as proxy <bcp14>MUST</bcp14> discard all requests associated with the closed connection.
As no response can be sent over the now-closed (D)TLS connection, any further processing of 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 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.
However, since both TLS and DTLS provide integrity protection and ensure that the packet was sent by the peer, a protocol violation at this stage implies that the peer is misbehaving.</t>
        <t>Implementations of this specification <bcp14>SHOULD</bcp14> treat the "silently discard" texts in the RADIUS specification referenced above as "silently discard and close the connection".
That is, the implementation <bcp14>SHOULD</bcp14> send a TLS close notification and, in the case of RADIUS/TLS, the underlying TCP connection <bcp14>MUST</bcp14> be closed if any of the following circumstances are seen:</t>
        <ul spacing="normal">
          <li>
            <t>Connection from an unknown client</t>
          </li>
          <li>
            <t>Packet where the RADIUS <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 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>
    <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 packet borders of 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 RADIUS packet can be deduced.
The next RADIUS packet <bcp14>MUST</bcp14> be sent directly after the RADIUS packet before, 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 bytes in the stream.</t>
        <t>As an implementation note, it is <bcp14>RECOMMENDED</bcp14> that RADIUS/TLS implementations do not pass a single RADIUS packet to the TLS library in multiple fragments and instead assemble the RADIUS packet and pass it as one unit, in order to avoid 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> retry sending a packet by altering the protocol (i.e. switching from TLS to DTLS or vice versa) of the configured server on its own.
This requirement does not, however, 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 retried with another server that is known to be part of the same pool.</t>
      </section>
      <section anchor="tcp-applications-are-not-udp-applications">
        <name>TCP Applications Are Not UDP Applications</name>
        <t>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>
    <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.
For UDP datagrams containing multiple DTLS records, each DTLS record <bcp14>MUST</bcp14> be parsed individually.</t>
        <t>If a RADIUS packet should 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 not 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 packets <bcp14>MUST</bcp14> be treated as being DTLS.
RADIUS/UDP packets <bcp14>MUST NOT</bcp14> be accepted on this port.</t>
        <t>Some servers maintain a list of allowed clients per destination port.
Others maintain a global list of clients that are permitted to send packets to any port.
Where a client can send packets to multiple ports, the server <bcp14>MUST</bcp14> maintain a "DTLS Required" flag per client.</t>
        <t>This flag indicates whether or not the client is required to use DTLS.
When set, the flag indicates that the only traffic accepted from the client is over the RADIUS/DTLS port.
When packets are received from a client with the "DTLS Required" flag set on non-DTLS ports, the server <bcp14>MUST</bcp14> silently discard these packets, as there is no RADIUS/UDP shared secret available.</t>
        <t>This flag will often be set by an administrator.
However, if the server receives DTLS traffic from a client, it <bcp14>SHOULD</bcp14> notify the administrator that DTLS is available for that client.
It <bcp14>MAY</bcp14> mark the client as "DTLS Required".</t>
        <t>Allowing RADIUS/UDP and RADIUS/DTLS from the same client exposes the traffic to downbidding attacks and is <bcp14>NOT RECOMMENDED</bcp14>.</t>
      </section>
      <section anchor="client-behavior">
        <name>Client behavior</name>
        <t>When a RADIUS/DTLS client sends packet to the assigned RADIUS/DTLS port, all packets <bcp14>MUST</bcp14> be DTLS.
RADIUS/UDP packets <bcp14>MUST NOT</bcp14> be sent to this port.</t>
        <t>RADIUS/DTLS clients <bcp14>SHOULD NOT</bcp14> probe servers to see if they support DTLS transport.
Instead, clients <bcp14>SHOULD</bcp14> use DTLS as a transport layer only when administratively configured.</t>
      </section>
      <section anchor="session-management">
        <name>Session Management</name>
        <t>Where RADIUS/TLS can rely on the TCP state machine to perform session tracking, RADIUS/DTLS cannot.
As a result, implementations of RADIUS/DTLS may need to perform session management of the DTLS session in the application layer.
This subsection describes logically how this tracking is done.
Implementations <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"/>.
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 likely be reached by simply processing the packet through the existing 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="radius-proxies">
        <name>RADIUS Proxies</name>
        <t>RadSec provides authentication, integrity and confidentiality protection for RADIUS traffic between two RADIUS endpoints.
In the presence of proxies, these intermediate proxies can still inspect the individual RADIUS packets, i.e., "end-to-end" encryption on the RADIUS layer is not provided.
Where intermediate proxies are untrusted, it is desirable to use other RADIUS mechanisms to prevent RADIUS packet payload from inspection by such proxies.
One common method to protect passwords is the use of the Extensible Authentication Protocol (EAP) and EAP methods that utilize TLS.</t>
        <t>Additionally, when RADIUS proxies are used, the RADIUS client has no way of ensuring that the complete path of the RADIUS packet is protected, since RADIUS routing is done hop-by-hop and any intermediate proxy may be configured, after receiving a RADIUS packet via 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.
Where the confidentiality of the contents of the RADIUS packet across the whole path is required, organizational solutions need to be in place, that ensure that every intermediate RADIUS proxy is configured to forward the RADIUS packets using 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 or certificate OID.
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>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>For debugging purposes, 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 bogus RADIUS packet would fail the cryptographic checks and the server would silently discard the bogus 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.</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.
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 is a bogus connection.
In contrast, an established connection might not send packets for longer periods of time, but since the endpoints are mutually authenticated this does not pose a problem other than the problems mentioned before.</t>
        <t>A different means of prevention is IP filtering.
If the IP range that the server expects clients to connect from is restricted, then the server can simply reject or drop all connection attempts from outside those ranges.
If every 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">
        <name>Connection Closing</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>We wish to avoid the situation where a third party can send well-formed RADIUS packets to a RADIUS proxy that cause a (D)TLS connection to close.
Therefore, in other situations, the connection <bcp14>SHOULD</bcp14> remain open in the face of non-conforming packets.
Any malformed RADIUS packets sent by a third party will go through the security checks of the RADIUS proxy upon reception and will not be forwarded.
Well-formed RADIUS packets with portions that the proxy does not understand do not pose a security risk to the security properties of the RadSec connection and can be forwarded.
This ensures forward compatibility with future RADIUS extensions.</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, any shared secret used with RADIUS/UDP before <bcp14>MUST NOT</bcp14> be used with RadSec and (D)TLS-PSK.
Implementers <bcp14>MUST NOT</bcp14> reuse the configuration option for the RADIUS/UDP shared secret for the (D)TLS-PSK to prevent accidental reuse.</t>
        <t>When upgrading from RADIUS/UDP to 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>RECOMMENDED</bcp14> to not use 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 to use a local proxy that arbitrates all RADIUS traffic between the client and all servers.
This proxy will encapsulate all knowledge about servers, including security policies, fail-over and load-balancing.
All client subsystems should communicate with this local proxy, ideally over a loopback address.</t>
        <t>The benefit of this configuration is that there is one place in the client that arbitrates all RADIUS traffic.
Subsystems that do not implement RadSec can remain unaware 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 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 generally believed to be less constrained than RADIUS clients.
Since some client implementations already support using certificates for mutual authentication and there are several use cases, where pre-shared keys are not usable (e.g. a dynamic federation with changing members), the decision was made that, analog to the supported transports, 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 to radsec in the Service Name and Transport Protocol Port Number Registry:</t>
      <ul spacing="normal">
        <li>
          <t>Service Name: radsec</t>
        </li>
        <li>
          <t>Port Number: 2083</t>
        </li>
        <li>
          <t>Transport Protocol: tcp/udp</t>
        </li>
        <li>
          <t>Description: Secure RADIUS Service</t>
        </li>
        <li>
          <t>Assignment notes: The TCP port 2083 was already previously assigned by IANA for "RadSec", an early implementation of RADIUS/TLS, prior to issuance of the experimental RFC 6614.
[RFCXXXX] updates RFC 6614 (RADIUS/TLS) and RFC 7360 (RADIUS/DTLS).</t>
        </li>
        <li>
          <t>Reference: [RFCXXXX] (this document)</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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="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>
        <referencegroup anchor="STD7" target="https://www.rfc-editor.org/info/std7">
          <reference anchor="RFC9293" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
        <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="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>
        <referencegroup anchor="STD6" target="https://www.rfc-editor.org/info/std6">
          <reference anchor="RFC0768" target="https://www.rfc-editor.org/info/rfc768">
            <front>
              <title>User Datagram Protocol</title>
              <author fullname="J. Postel" initials="J." surname="Postel"/>
              <date month="August" year="1980"/>
            </front>
            <seriesInfo name="STD" value="6"/>
            <seriesInfo name="RFC" value="768"/>
            <seriesInfo name="DOI" value="10.17487/RFC0768"/>
          </reference>
        </referencegroup>
        <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="RFC3579">
          <front>
            <title>RADIUS (Remote Authentication Dial In User Service) Support For Extensible Authentication Protocol (EAP)</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun"/>
            <date month="September" year="2003"/>
            <abstract>
              <t>This document defines Remote Authentication Dial In User Service (RADIUS) support for the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication mechanisms. In the proposed scheme, the Network Access Server (NAS) forwards EAP packets to and from the RADIUS server, encapsulated within EAP-Message attributes. This has the advantage of allowing the NAS to support any EAP authentication method, without the need for method- specific code, which resides on the RADIUS server. While EAP was originally developed for use with PPP, it is now also in use with IEEE 802. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3579"/>
          <seriesInfo name="DOI" value="10.17487/RFC3579"/>
        </reference>
        <reference anchor="RFC3539">
          <front>
            <title>Authentication, Authorization and Accounting (AAA) Transport Profile</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Wood" initials="J." surname="Wood"/>
            <date month="June" year="2003"/>
            <abstract>
              <t>This document discusses transport issues that arise within protocols for Authentication, Authorization and Accounting (AAA). It also provides recommendations on the use of transport by AAA protocols. This includes usage of standards-track RFCs as well as experimental proposals. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3539"/>
          <seriesInfo name="DOI" value="10.17487/RFC3539"/>
        </reference>
        <reference anchor="RFC5997">
          <front>
            <title>Use of Status-Server Packets in the Remote Authentication Dial In User Service (RADIUS) Protocol</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document describes a deployed extension to the Remote Authentication Dial In User Service (RADIUS) protocol, enabling clients to query the status of a RADIUS server. This extension utilizes the Status-Server (12) Code, which was reserved for experimental use in RFC 2865. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5997"/>
          <seriesInfo name="DOI" value="10.17487/RFC5997"/>
        </reference>
        <referencegroup anchor="BCP195" target="https://www.rfc-editor.org/info/bcp195">
          <reference anchor="RFC8996" target="https://www.rfc-editor.org/info/rfc8996">
            <front>
              <title>Deprecating TLS 1.0 and TLS 1.1</title>
              <author fullname="K. Moriarty" initials="K." surname="Moriarty"/>
              <author fullname="S. Farrell" initials="S." surname="Farrell"/>
              <date month="March" year="2021"/>
              <abstract>
                <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.</t>
                <t>This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
                <t>This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="8996"/>
            <seriesInfo name="DOI" value="10.17487/RFC8996"/>
          </reference>
          <reference anchor="RFC9325" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
        <reference anchor="RFC5248">
          <front>
            <title>A Registry for SMTP Enhanced Mail System Status Codes</title>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="June" year="2008"/>
            <abstract>
              <t>The specification for enhanced mail system status codes, RFC 3463, establishes a new code model and lists a collection of status codes. While it anticipated that more codes would be added over time, it did not provide an explicit mechanism for registering and tracking those codes. This document specifies an IANA registry for mail system enhanced status codes, and initializes that registry with the codes so far established in published standards-track documents, as well as other codes that have become established in the industry. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="138"/>
          <seriesInfo name="RFC" value="5248"/>
          <seriesInfo name="DOI" value="10.17487/RFC5248"/>
        </reference>
        <reference anchor="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="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="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="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="RFC7930">
          <front>
            <title>Larger Packets for RADIUS over TCP</title>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The RADIUS-over-TLS experiment described in RFC 6614 has opened RADIUS to new use cases where the 4096-octet maximum size limit of a RADIUS packet proves problematic. This specification extends the RADIUS-over-TCP experiment (RFC 6613) to permit larger RADIUS packets. This specification compliments other ongoing work to permit fragmentation of RADIUS authorization information. This document registers a new RADIUS code, an action that required IESG approval.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7930"/>
          <seriesInfo name="DOI" value="10.17487/RFC7930"/>
        </reference>
        <reference anchor="RFC5080">
          <front>
            <title>Common Remote Authentication Dial In User Service (RADIUS) Implementation Issues and Suggested Fixes</title>
            <author fullname="D. Nelson" initials="D." surname="Nelson"/>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="December" year="2007"/>
            <abstract>
              <t>This document describes common issues seen in Remote Authentication Dial In User Service (RADIUS) implementations and suggests some fixes. Where applicable, ambiguities and errors in previous RADIUS specifications are clarified. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5080"/>
          <seriesInfo name="DOI" value="10.17487/RFC5080"/>
        </reference>
        <reference anchor="RFC6520">
          <front>
            <title>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension</title>
            <author fullname="R. Seggelmann" initials="R." surname="Seggelmann"/>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="M. Williams" initials="M." surname="Williams"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes the Heartbeat Extension for the Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols.</t>
              <t>The Heartbeat Extension provides a new protocol for TLS/DTLS allowing the usage of keep-alive functionality without performing a renegotiation and a basis for path MTU (PMTU) discovery for DTLS. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6520"/>
          <seriesInfo name="DOI" value="10.17487/RFC6520"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="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="I-D.ietf-tls-rfc8446bis-14">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <date day="13" month="September" year="2025"/>
            <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.

   This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes
   RFCs 5077, 5246, 6961, 8422, and 8446.  This document also specifies
   new requirements for TLS 1.2 implementations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-14"/>
        </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="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="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="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="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="8" month="April" 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-10"/>
        </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="RFC6614">
          <front>
            <title>Transport Layer Security (TLS) Encryption for RADIUS</title>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="M. McCauley" initials="M." surname="McCauley"/>
            <author fullname="S. Venaas" initials="S." surname="Venaas"/>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <date month="May" year="2012"/>
            <abstract>
              <t>This document specifies a transport profile for RADIUS using Transport Layer Security (TLS) over TCP as the transport protocol. This enables dynamic trust relationships between RADIUS servers. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6614"/>
          <seriesInfo name="DOI" value="10.17487/RFC6614"/>
        </reference>
        <reference anchor="RFC6613">
          <front>
            <title>RADIUS over TCP</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="May" year="2012"/>
            <abstract>
              <t>The Remote Authentication Dial-In User Server (RADIUS) protocol has, until now, required the User Datagram Protocol (UDP) as the underlying transport layer. This document defines RADIUS over the Transmission Control Protocol (RADIUS/TCP), in order to address handling issues related to RADIUS over Transport Layer Security (RADIUS/TLS). It permits TCP to be used as a transport protocol for RADIUS only when a transport layer such as TLS or IPsec provides confidentiality and security. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6613"/>
          <seriesInfo name="DOI" value="10.17487/RFC6613"/>
        </reference>
      </references>
    </references>
    <?line 962?>

<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>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8W965IbR5Ym+B9PEZsym85sA1C8S+RcurMyyS6uKIpDUqVq
GxtTBwAHMopABDoikElUlfZZ9u++xu6Lzbn7cY9Akprpnm0razEBhIdfjp/7
+c5sNpuEuq/644tJUXx4+ebVi+Lsv71/dfUn+L//fjaBb7YBPnpfrj6E5Yvi
/eX1658+FM1taIuPbVl3+6btizflEf6GHxxaGKk4//jmw0VR1qviuuzLTVvu
7vntNf74bFIuFm24PfWmNx94OPjH2WRZ9mHTtMcXRdevJpNm0TXb0IfuRfHs
2cMn0+Lbx88eTCarZlmXO5j7qi3X/awK/XrWlqvwucf/VIdu1W+72aLqZg8f
TrrDYld1XdXU/XEPz7x++fHVBGbzeFK2oYRZ6XzPJndN+2nTNoc9zpXn+PJP
H0OND3dnk0/hCL9YwW7OZAn4L5j35DbUh4C7fM/TRcHvP/sZ3lLVm+Kf8Lf4
+a6stvA5r+AfcTXzpt2cTSblob9pWhx3VvCC/8+ynr1qwyq01afifRWWn0Lb
wfdFAU+8KK7Doe+WN6ErXjUt/ONQb7o69H8p/lb8U2h3ZV28LXuYTrkt3ocu
lO3yhjb/5eqwpC+Kt6HHXaAhu74NoX9RXG7DZ/hVaPfbEsZ6SF8umxXM5+GD
h99+x38jnRW/D+22quUHh7rHk+Q3H+nDwGttZeb/uFrX81Wgr5RKrl+9pb/h
TF4Ud3d3c/uNbsKHPqxhKT9XdR/auPhXTb3iRcDa+lCXsGr91yuYDH+ZrOzR
tCjp7IpVKLZ/91NdAUl2Vf///T9ujU8eP3vqlvgS9nXWHdrZ5fYvoe9Dutg3
h89ht2gO7cavt6MZz+9oxv/Y8qTm20Oy8PcvP3x8+fYyXbz77aRuYCN7mOKL
yaSq1+6vyWw2g3FgWeWyn0w+3lRdAZfksIP7D0tbVzWQRG/3dN8262oLH8EY
RXuoayTHf6frDzu83TZ3+Ib+JhQdfhtohDZsq3KxDW5izVqnsQtdV25CN5/w
B79TPiF/XtPfMNKy2W7DEvdhe4Qh16GF61H0TVF2BfObOW/PrlqttmEy+euL
P6/hROCIluE/n8GFWsMDZ79OJt8Ur+EMG7gKRCf/7rv417/+H8CMv3vy5Nmv
v07lr6eP8C95/Oodfvrh4/W38NFv2XMZ7NnjJ9/GoZ8/xL946J+udWh6t53Q
/z+n8xHoQgaGPe0beKiArS+Lu2qFz63Cftsc4TnkhyjRmFdNC+aP1V/41uP7
yyXdRFpLsz3Q53xyq6KqZScefffsadwX+MsfwMNvn8luN/CyFpZ4Ta8nIgif
98B5Q70MxQ2soLtp7mrYNNhS4KjwV9svmx28vJsW3QF5a1dUfYcLCMA/6+Wx
gPngNTjUI/uri5/i+UxpDvj0tlx+wr1fNvUaNgRWV27xrJHstmW7CcW+bOF3
Y8dzuVpVzPC3xym9OR+F3gJsaUP0swvLm7Kuul2H2yXDtXgIMvEfrp8CuYCI
rvqbHezZP8CePXz86CHu4N1NBWteNXAl6qaHsQL8P2Chbc2EhS/AHVz2dGA4
vS0c4GFzI7QQn23DDghV3zhblB0cYJzcFDamKFer7gvLwR0NdJ1hqJbehEMi
dW7x4swnICfhmeKwB+kAryD2D7/GveQp3VU4xb6oA3yNW4470IUga3/+LdLS
HLnHVVPf4kRgZTSNjyD3qrrZNpsj0zjoDwUqEF1x9sNPHz6eTfm/xdsf6d/v
X/7Xn16/f3mN//7wh8s3b+wfE/nFhz/8+NOb6/iv+OTVjz/88PLtNT8MnxbJ
R5OzHy7/+Ywp6uzHdx9f//j28s0ZnnCf8Di8sXA3F4G2sN23Afek7Car0C3b
asGX6PdX7/7f//vhE70+Dx8+hwsjzOzht0/gjzu4pfy2pgbS4T9h44+Tcr8H
rQNHAYosluW+6sstHKddJrhyAXbz7/8b7sx/f1H8p8Vy//DJf5EPcMHJh7pn
yYe0Z8NPBg/zJo58NPIa283k82yn0/le/nPyt+67+/A//QMoS6GYPfzuH/7L
hGlk3Zi0jOSD3PDQ8e4nJwaiX3TqCahpjtvS00Supxk0bHP8kgeQCx8+40Xb
CG/aVT2SwaHDWeE4Kp3iANe/YYRrGwK4XBwC/sAR5HljivCYSayyS3m5sXIb
BTgh6JU9TeVrf8xq+ReeOL++wGnDmlbdTfkpKIsdPoc/o2dFlKttwx+yEEaZ
9wb56pLMiS8MAb++vu/ng9ELOAf3BMnS7V15JG7Zl/pcA6SH27oSrSIuE35W
M9vkQ8VzA0ll3+52h1qEcIHnXIdtcY6Mkl9LJEoCvDvWTX1kQrzsumZZ0UMX
8Cr/Zn4LfsJHAuy9Xm4PK1UabwKYRi1tJT4iT5/r4xf0KQ6CNwj/DeMct025
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
ItfranMQRzPqYElcT6a1QX3HLrYw0jIqtjxcX4IypVtfrtD4xbTFvmlNCQAe
WXRHMNZ3eHdfj11aVvDp1zg9oHJJ7+xkGqya/P7q3cPnFIUK5PolbgpfsWuE
pmSPY1So2qNU6w4VRX1RVLm7BDz3sNvLmQ7yqqLJ4S8sLPxWc2p2zk03EmgH
Ff2DsCL8FX79cP4o5gV+BwrW7/g6xM85xY+VCc6EmRpDi6M8TnIN4yj6uaYG
tsUNaDnIKBPlBE2Pt0r0EghJ9kqECy5+zX6o1FPdFXdgy1E23Al3p85erZwR
b5JeO1SGdygAOezMv8/1Y9zuQ3+g83Z+LTjjc3Zk8be/4HegkSVxqgez9x+B
wgJoVBh7iJErmGeW8DOfZP5WlLSSZJFsg0TqKMLC15JuFm0BszzYuDugSXZw
Lo+aTceTWZY1+hVFhs8nr3WWkhg0HRdtxDqi/HFb7gIZ5abElAXyY6CLoEfd
BPVkznF7PbueU4I9ptS36yXSEGXWP4nq2XfDWAGLsB9olzPPIvnb3f4Xv05G
tXp/bsqY2DwaE4LJr6MdZydUkZbJYovv40EsbCOUvgVJhCaj8p5LvdIlpbGg
LaDvvKND5PgUZkbclsujF4fA0tagW7EewD+u2fVEQW7Sni3qUyJz6qMRZN68
mAYz9ltdWd+F7XrqTZJ19TmsBi7zlGlT0m9UvyL/wpRNGn83dnpKmHcVrAN2
UWMvElpzSWqd42zwwtmf5k8fPJ+9+/71n+SDdx++B/Zea3ashQ/B8gC9juZB
vCZ7P3uzR6Y2EkBYHVp1gHM6zzbmcFH6aWhrSqKX6IdL3N03XT+LCV/L0Iq2
HCQdVcRtNgfhL8Jt4x15Mn82f4QeK8qTUv6LmeOhdrzVfftoGpmfkivKeY4M
jW8BXbtvfKYCDspCn/bfr6Pjt+GJMO3Tlm8pPd2d1gVdWLj+n+GT/afqM15Y
1BWTSzvOgbKgNI0/T5XYLyvU8dFRtTpURIDxVwULPqQv1B/W8beaAOSE9QEz
+FElPRKhjmobpSkbqgk5Qcg7hyQhnu6SQm5Iy8JPruKWa65Bjz7p86vL7kLl
+3cPkDjwNqJKnim286IgbQqzyXR/Fqk7T0PbxCA1CAVK2bZZoC+dWJrMtQNl
K6Dk9BMjTdldI43I4qrheKMxKzvW4S0r/OznI9unZ2l66k2oWplGWcNFB2ZP
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
1L0iDSWVYIO6RHFR4Z21i+GuarYVuH2UW4c0zvUFTLoCL2v4HMQcOvNuaOez
xloaS8pFskbNxYjtwvV0ph5E3/VKkgMg03K7iszrFWXK2s7isYwYd5wFmT6r
zJCviLbS5nthV4J7caf1BLkRazbvkF5kU7TPaETLj7UO+pAJ4IRXAncuPyma
o2/EIe49djUgwEHMNHEeDacTlwVwOeFhU+5hoKfgLwZhn2AAI8fv1jmXtnHn
RE/+vRe5HEsU+c7fb9dxLsLnNTSpwLqWdLHTyWnphLw8lV4+WYOCrgwPRC5F
dvTBgqVVUFbrmjntKHCk75aXTC1rOJ5CggoF42PhJRGCzBeTHzH3BQtySmkt
dQBJumdAUgtdiJotLlh1Q15bwrRohmLljmmGX7AsyaXE8CWnDXTncoppFXpe
qfUuGl/XsKdQ4NklA0YiXzEDgmvgPuPl1Aoc8SU4o4sTCPmRLmMva3+/F3ya
sUlEKoc40HXC2NYQCkbqiCk2lEUiEvbpI8RHy6Cn5Mc+/Vxnb9AvCF7iYjEZ
8KopBwpRnuQ9EavRls3UHMYF+aogF8IKBzS26funDJGUUdWzvpIUhODcDu5k
eF+nSh9gTHZixEk4TJemjIFBuX9SdvwuCz+S6S4tNQV/hVwCXYP3QN+vFxXP
YjoydUlKQxaiWCVbAhs81Ukz6RGT57y6JsUOn0v7TkvzBpLzASsbv6oLMaUM
fFAivkr6tFOgXgn8l7SHO6eNjlTmYa5HcGgpwq6S2sM0pYC9WXaRsl7xIry7
4PLPCNyAm8iLNix4DWi/mSOGACUkrGiwaeLD3CVZktkr27Li6JA/Bd0wazSm
mUOWvhOzFUT2NG31l1KxcFA+SbQbB6BwPfYbFcAg0e9kHa7Q1jvJ2ILWms77
3khO1OVNFW6j5SxjmxvJ5mN6L1Ud2YSI3w/ON1v9kE5ZbeOmdpLW4RqkwF2i
RNVV7CE1qHFfhztJj0900+yUJIAkrXC8L7kTeB5iQgwrQluOlqJ4UJL8lHfc
ZsZgNGPlT1L2P3W1slQTih7JFcuCrH7WlYio+9g49Z0jGYmiSaYklbV1mOtH
RgPPairUT22FFLtVO9JRXIbcYVUtRdB4rBbWHFRaYErqtDiDN8/6Zgb/OfNk
1CQUzy7ZKmnHuNLQ0Oh0GM+qbw9dL8C9xI26qlXcCJRyrKTISxwaFhWscQJv
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
AfHXNKLxLAEA

-->

</rfc>
