<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusdtls-bis-15" 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-15"/>
    <author initials="J.-F." surname="Rieckers" fullname="Jan-Frederik Rieckers">
      <organization abbrev="DFN">Deutsches Forschungsnetz | German National Research and Education Network</organization>
      <address>
        <postal>
          <street>Alexanderplatz 1</street>
          <city>Berlin</city>
          <code>10178</code>
          <country>Germany</country>
        </postal>
        <email>rieckers@dfn.de</email>
        <uri>www.dfn.de</uri>
      </address>
    </author>
    <author initials="M." surname="Cullen" fullname="Margaret Cullen" role="editor">
      <organization>Painless Security</organization>
      <address>
        <postal>
          <street>4 High Street, Suite 206</street>
          <city>North Andover, MA</city>
          <code>01845</code>
          <country>USA</country>
        </postal>
        <email>margaret@painless-security.com</email>
      </address>
    </author>
    <author initials="S." surname="Winter" fullname="Stefan Winter">
      <organization abbrev="RESTENA">Fondation Restena | Restena Foundation</organization>
      <address>
        <postal>
          <street>2, avenue de l'Université</street>
          <city>Esch-sur-Alzette</city>
          <code>4365</code>
          <country>Luxembourg</country>
        </postal>
        <email>stefan.winter@restena.lu</email>
        <uri>www.restena.lu</uri>
      </address>
    </author>
    <date year="2026" month="February" day="23"/>
    <area>Security</area>
    <workgroup>RADIUS EXTensions</workgroup>
    <keyword>RADIUS</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 56?>

<t>This document defines transport profiles for running RADIUS over Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS), allowing the secure and reliable transport of RADIUS messages.
RADIUS/TLS and RADIUS/DTLS are collectively referred to as RadSec.</t>
      <t>This document obsoletes RFC6614 and RFC7360, which specified experimental versions of RADIUS over TLS and DTLS.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-radext-radiusdtls-bis/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        RADIUS EXTensions Working Group mailing list (<eref target="mailto:radext@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/radext/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/radext/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 62?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines transport profiles for running RADIUS over Transport Layer Security (TLS) <xref target="RFC8446"/> <xref target="RFC5246"/> over TCP, and Datagram Transport Layer Security (DTLS) <xref target="RFC9147"/> <xref target="RFC6347"/> over UDP, allowing secure and reliable transport of RADIUS messages.
RADIUS/TLS and RADIUS/DTLS are collectively referred to as RadSec.  This document obsoletes <xref target="RFC6614"/> and <xref target="RFC7360"/>, which specified experimental versions of RADIUS over TLS and DTLS.</t>
      <t>RADIUS is a widely deployed Authentication, Authorization and Accounting (AAA) protocol defined in <xref target="RFC2865"/>, <xref target="RFC2866"/>, and <xref target="RFC5176"/>, among others.
Deployment experience has shown several shortcomings, such as dependency on the unreliable transport protocol, UDP, and a lack of confidentiality for large parts of RADIUS messages.
Additionally, the confidentiality and integrity mechanisms in RADIUS rely on the MD5 algorithm <xref target="RFC1321"/>, which does not meet modern security expectations.
Although RadSec does not remove the MD5-based mechanisms, it adds confidentiality and integrity protection through the TLS layer.
For an experimental version of RadSec without the need for MD5 see <xref target="RFC9765"/>.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The following terminology is used in this document:</t>
      <dl>
        <dt>RadSec:</dt>
        <dd>
          <t>A collective term for RADIUS/TLS and RADIUS/DTLS.</t>
        </dd>
        <dt>RADIUS/TLS:</dt>
        <dd>
          <t>A RADIUS exchange transmitted using TLS over TCP.</t>
        </dd>
        <dt>RADIUS/DTLS:</dt>
        <dd>
          <t>A RADIUS exchange transmitted using DTLS over UDP.</t>
        </dd>
        <dt>RADIUS/UDP:</dt>
        <dd>
          <t>RADIUS transported over UDP as defined in <xref target="RFC2865"/>.</t>
        </dd>
        <dt>RADIUS packet:</dt>
        <dd>
          <t>As defined in <xref section="3" sectionFormat="comma" target="RFC2865"/>.</t>
        </dd>
        <dt>RADIUS packet type:</dt>
        <dd>
          <t>As defined in <xref section="4" sectionFormat="comma" target="RFC2865"/>.</t>
        </dd>
        <dt>(D)TLS handshake message:</dt>
        <dd>
          <t>As defined in TLS <xref target="RFC8446"/> and DTLS <xref target="RFC9147"/>.</t>
        </dd>
        <dt>TLS record:</dt>
        <dd>
          <t>As defined in TLS <xref target="RFC8446"/>.</t>
        </dd>
        <dt>DTLS record:</dt>
        <dd>
          <t>As defined in DTLS <xref target="RFC9147"/>.  A DTLS record is always contained in one UDP datagram.</t>
        </dd>
        <dt>(D)TLS connection:</dt>
        <dd>
          <t>A single (D)TLS communication channel (with DTLS this is a synonym for association).</t>
        </dd>
        <dt>UDP datagram:</dt>
        <dd>
          <t>A UDP packet, including the header and data.</t>
        </dd>
        <dt>UDP (datagram) data:</dt>
        <dd>
          <t>The data payload of a UDP datagram.</t>
        </dd>
        <dt>RadSec client:</dt>
        <dd>
          <t>A RadSec instance that initiates a new connection.</t>
        </dd>
        <dt>RadSec server:</dt>
        <dd>
          <t>A RadSec instance that listens on a RADIUS-over-(D)TLS port and accepts new connections.</t>
        </dd>
        <dt>RadSec endpoint:</dt>
        <dd>
          <t>A RadSec client or server</t>
        </dd>
        <dt>RadSec peer:</dt>
        <dd>
          <t>A RadSec endpoint connected to the RadSec endpoint that is the primary subject of discussion.</t>
        </dd>
      </dl>
      <t>Whenever "(D)TLS", "RADIUS/(D)TLS" or "RadSec" is mentioned, the specification applies for both RADIUS/TLS and RADIUS/DTLS.
Where "TLS" or "RADIUS/TLS" is mentioned, the specification applies only for RADIUS/TLS.  Where "DTLS" or "RADIUS/DTLS" is mentioned, it only applies to RADIUS/DTLS.</t>
    </section>
    <section anchor="radsec-packet-and-connection-handling">
      <name>RadSec Packet and Connection Handling</name>
      <t>This section defines the behavior of RadSec endpoints for the handling of establishment of a (D)TLS connection and sending and receiving RADIUS packets.</t>
      <t>Server implementations <bcp14>MUST</bcp14> support both RADIUS/TLS and RADIUS/DTLS.
Client implementations <bcp14>SHOULD</bcp14> implement both, but <bcp14>MUST</bcp14> implement at least one of RADIUS/TLS or RADIUS/DTLS.</t>
      <section anchor="portusage">
        <name>RadSec Packet Format, Default ports and shared secrets</name>
        <t>The format of RADIUS packets in RadSec is unchanged from the format specified in <xref target="RFC2865"/>, <xref target="RFC2866"/> and <xref target="RFC5176"/>.</t>
        <t>IANA has reserved server ports for RADIUS/TLS and RADIUS/DTLS.
Since authentication of peers, confidentiality, and integrity protection are provided by the (D)TLS layer, the shared secret for the RADIUS packets is set to a static string, which is different for each of TLS and DTLS.
The calculation of security-related fields such as Response-Authenticator, Message-Authenticator or encrypted attributes <bcp14>MUST</bcp14> be performed using the static shared secret.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Protocol</th>
              <th align="left">Server Port</th>
              <th align="left">Shared Secret</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">RADIUS/TLS</td>
              <td align="left">2083/tcp</td>
              <td align="left">"radsec"</td>
            </tr>
            <tr>
              <td align="left">RADIUS/DTLS</td>
              <td align="left">2083/udp</td>
              <td align="left">"radius/dtls"</td>
            </tr>
          </tbody>
        </table>
        <t>RadSec does not use separate ports for authentication, accounting and dynamic authorization changes.
The client source port used for RadSec connections is not fixed -- it is typically an ephemeral port picked by the client Operating System.
For considerations regarding the multi-purpose use of one port for authentication and accounting see <xref target="radius_packets"/>.</t>
        <t>RadSec clients <bcp14>MAY</bcp14> open multiple connections to the same RadSec server and RadSec servers <bcp14>MUST</bcp14> be able to accept multiple connections from a single client.</t>
        <t>RadSec endpoints <bcp14>MUST NOT</bcp14> use the old RADIUS/UDP or RADIUS/TCP ports for RADIUS/DTLS or RADIUS/TLS.</t>
      </section>
      <section anchor="dtls-requirements">
        <name>(D)TLS requirements</name>
        <t>RadSec clients <bcp14>MUST</bcp14> establish a (D)TLS session immediately upon connecting to a new server.
All data received over a TCP or UDP port assigned for RadSec is opaque for the RADIUS client or server application and must be handled by the TLS or DTLS implementation.
Closing TLS connections and discarding invalid UDP datagrams are done by the (D)TLS implementation.</t>
        <t>RadSec does not provide for negotiation of (D)TLS in ongoing RADIUS communication.
Instead, a server port is configured to always require (D)TLS.  Connection attempts to a (D)TLS port which do not use (D)TLS are not accepted by the server.
As RADIUS has no provisions for capability signaling, there is also no way for a server to indicate to a client that it should transition to using TLS or DTLS.
Servers and clients therefore need to be preconfigured to use RADIUS/(D)TLS for a given endpoint.
This action has to be taken by the administrators of the two systems.</t>
        <t>Implementations <bcp14>MUST</bcp14> follow the recommendations given in <xref target="RFC9325"/>, especially in regards to TLS versions, recommended cipher suites, and TLS session resumption.
Additionally, the following requirements have to be met for the (D)TLS connection:</t>
        <ul spacing="normal">
          <li>
            <t>Negotiation of a cipher suite providing for confidentiality as well as integrity protection is <bcp14>REQUIRED</bcp14>.</t>
          </li>
          <li>
            <t>The endpoints <bcp14>MUST NOT</bcp14> negotiate compression.</t>
          </li>
          <li>
            <t>The connection <bcp14>MUST</bcp14> be mutually authenticated (see <xref target="mutual_auth"/>).</t>
          </li>
        </ul>
        <t>RadSec endpoints <bcp14>MUST NOT</bcp14> use the 0-RTT feature of (D)TLS.</t>
      </section>
      <section anchor="mutual_auth">
        <name>Mutual authentication</name>
        <t>RadSec servers <bcp14>MUST</bcp14> authenticate clients, and RadSec clients <bcp14>MUST</bcp14> authenticate servers.
RADIUS is designed to be used by mutually trusted systems.
Allowing anonymous clients would ensure privacy for RadSec traffic, but would negate all other security aspects of the protocol, including security aspects of RADIUS itself, due to the fixed shared secret.</t>
        <t>RADIUS/(D)TLS allows for the following modes of mutual authentication, which will be further specified in this section:</t>
        <ul spacing="normal">
          <li>
            <t>TLS-X.509-PKIX</t>
          </li>
          <li>
            <t>TLS-PSK</t>
          </li>
        </ul>
        <t>Independent of the chosen mode of authentication, the mutual authentication <bcp14>MUST</bcp14> be performed during the initial handshake.
Alternative methods, such as post-handshake certificate-based client authentication (see <xref section="4.6.2" sectionFormat="comma" target="RFC8446"/>) with TLS 1.3 or renegotiation with TLS 1.2, <bcp14>MUST NOT</bcp14> be used to achieve mutual authentication.</t>
        <section anchor="tlsx509pkix">
          <name>Authentication using X.509 certificates with PKIX trust model (TLS-X.509-PKIX)</name>
          <t>All RadSec server implementations <bcp14>MUST</bcp14> implement this model.
RadSec client implementations <bcp14>SHOULD</bcp14> implement this model, but <bcp14>MUST</bcp14> implement either this model or TLS-PSK.</t>
          <t>If implemented, the following rules apply:</t>
          <ul spacing="normal">
            <li>
              <t>Implementations <bcp14>MUST</bcp14> allow the configuration of a trust base (i.e., a set of trusted Certification Authorities (CAs)<xref target="RFC5280"/>) for new TLS connections.  This list <bcp14>SHOULD</bcp14> be application-specific and not use a global system trust store.</t>
            </li>
            <li>
              <t>Certificate validation <bcp14>MUST</bcp14> include the verification rules as per <xref target="RFC5280"/>.</t>
            </li>
            <li>
              <t>Implementations <bcp14>MAY</bcp14> indicate their trust anchors when opening or accepting TLS connections.
See <xref section="7.4.4" sectionFormat="comma" target="RFC5246"/> and <xref section="6" sectionFormat="comma" target="RFC6066"/> for TLS 1.2 and <xref section="4.2.4" sectionFormat="comma" target="RFC8446"/> for TLS 1.3.</t>
            </li>
            <li>
              <t>When the configured trust base changes (e.g., removal of a CA from the set of trust anchors; issuance of a new CRL for a CA in the set of trust anchors), implementations <bcp14>SHOULD</bcp14> reassess the continued validity of the certificate path of all connected peers.  This can either be done by caching the peer's certificate for the duration of the connection and re-evaluating the cached certificate or by renegotiating the (D)TLS connection, either directly or by opening a new (D)TLS connection and closing the old one.</t>
            </li>
            <li>
              <t>Implementations <bcp14>SHOULD NOT</bcp14> keep a connection open beyond the validity period of the peer certificate.  At the time the peer certificate expires, the connection <bcp14>SHOULD</bcp14> be closed and then possibly re-opened with updated credentials.</t>
            </li>
          </ul>
          <t>RadSec endpoints <bcp14>SHOULD NOT</bcp14> be pre-configured with a set of trusted CAs by the vendor or manufacturer that are enabled by default.
Instead, the endpoints <bcp14>SHOULD</bcp14> start off with an empty CA set as the trust base.
The addition of a CA <bcp14>SHOULD</bcp14> be done only when manually configured by the administrator.
This does not preclude vendors or manufacturers including their set of trusted CAs in their products, but the enabling of those lists should require an explicit act by an administrator.</t>
          <t>RadSec clients <bcp14>MUST</bcp14> follow <xref target="RFC9525"/> when validating RadSec server identities. RadSec servers also follow <xref target="RFC9525"/> when validating RadSec client identities with some additional rules.</t>
          <t>Specific details are provided below:</t>
          <ul spacing="normal">
            <li>
              <t>Certificates <bcp14>MAY</bcp14> include a single wildcard in the identifiers of DNS names and realm names, but only as the complete, left-most label.</t>
            </li>
            <li>
              <t>RadSec clients validate the server's identity to match their local configuration, accepting the identity on the first match:
              </t>
              <ul spacing="normal">
                <li>
                  <t>If the expected RadSec server is associated with a specific NAI realm, e.g., by dynamic discovery <xref target="RFC7585"/> or static configuration, that realm is matched against the presented identifiers of any subjectAltName entry of type otherName whose name form is NAIRealm as defined in <xref section="2.2" sectionFormat="comma" target="RFC7585"/>.</t>
                </li>
                <li>
                  <t>If the expected RadSec server was configured as a hostname, or the hostname was yielded by a dynamic discovery procedure, that name is matched against the presented identifiers of any subjectAltName entry of type dNSName <xref target="RFC5280"/>.  Since a dynamic discovery might by itself not be secured, implementations <bcp14>MAY</bcp14> require the use of DNSSEC <xref target="RFC4033"/> to ensure the authenticity of the DNS result before considering this identity as valid.</t>
                </li>
                <li>
                  <t>If the expected RadSec server was configured as an IP address, the configured IP address is matched against the presented identifier in any subjectAltName entry of type iPAddress <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>The Common Name RDN <bcp14>MUST NOT</bcp14> be used to identify a server.</t>
                </li>
                <li>
                  <t>Clients <bcp14>MAY</bcp14> use other attributes of the certificate to validate the server's identity, but they <bcp14>MUST NOT</bcp14> accept any certificate without validation.</t>
                </li>
                <li>
                  <t>Clients which also act as servers (i.e., proxies) may be susceptible to security issues when a ClientHello is mirrored back to themselves.  More details on this issue are discussed in <xref target="security_considerations"/>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>RadSec servers validate the certificate of the RadSec client against a local database of acceptable clients.
The database may enumerate acceptable clients either by IP address or by a name component in the certificate.
              </t>
              <ul spacing="normal">
                <li>
                  <t>For clients configured by DNS name, the configured name is matched against the presented identifiers of any subjectAltName entry of type dNSName <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>For clients configured by their source IP address, the configured IP address is matched against the presented identifiers of any subjectAltName entry of type iPAddress <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>Some servers <bcp14>MAY</bcp14> be configured to accept a client coming from a range or set of IP addresses.  In this case, the server <bcp14>MUST</bcp14> verify that the client IP address of the current connection is a member of the range or set of IP addresses, and the server <bcp14>MUST</bcp14> match the client IP address of the current connection against the presented identifiers of any subjectAltName entry of type iPAddress <xref target="RFC5280"/>.</t>
                </li>
                <li>
                  <t>Implementations <bcp14>MAY</bcp14> consider additional subjectAltName extensions to identify a client.</t>
                </li>
                <li>
                  <t>If configured by the administrator, the identity check <bcp14>MAY</bcp14> be omitted after a successful <xref target="RFC5280"/> certification path validation, e.g., if the client used dynamic lookup there is no configured client identity to verify.  The client's authorization <bcp14>MUST</bcp14> then be validated using a certificate policy extension <xref section="4.2.1.4" sectionFormat="comma" target="RFC5280"/> unless both endpoints are part of a trusted network.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Implementations <bcp14>MAY</bcp14> allow configuration of a set of additional properties of the certificate to check for a peer's authorization to communicate (e.g., a set of allowed values presented in  subjectAltName entries of type uniformResourceIdentifier <xref target="RFC5280"/> or a set of allowed X.509v3 Certificate Policies).</t>
            </li>
          </ul>
        </section>
        <section anchor="tlspsk">
          <name>Authentication using TLS-PSK (TLS-PSK)</name>
          <t>RadSec server implementations <bcp14>MUST</bcp14> support the use of TLS-PSK.
RadSec client implementations <bcp14>SHOULD</bcp14> support the use of TLS-PSK, but <bcp14>MUST</bcp14> implement either this model or TLS-X.509-PKIX.</t>
          <t>Further guidance on the usage of TLS-PSK in RadSec is given in <xref target="RFC9813"/>.</t>
        </section>
      </section>
      <section anchor="connecting-client-identity">
        <name>Connecting Client Identity</name>
        <t>In RADIUS/UDP, clients are uniquely identified by their IP addresses, as the shared secret is associated with the origin IP address.
With RadSec, the shared secret has a fixed value and multiple distinct RadSec clients can connect from the same IP address.
This requires changing the method of identifying individual clients from RADIUS/UDP.</t>
        <t>Depending on the trust model used, the RadSec client identity is determined as follows.</t>
        <t>With TLS-PSK, a client is uniquely identified by its TLS-PSK identifier (<xref section="6.2" sectionFormat="comma" target="RFC9813"/>).</t>
        <t>With TLS-X.509-PKIX, a client is uniquely identified by the tuple of the serial number of the presented client certificate and the issuer.</t>
        <t>In practice, identification of unique clients is not always necessary and could be based on the subject of the presented certificate or a subjectAltName entry.
While this identification technique could match multiple distinct certificates and therefore distinct clients, it is often sufficient, e.g., for the purpose of applying policies.</t>
        <t>Note well: having identified a connecting entity does not mean the server necessarily wants to communicate with that client.
For example, if the Issuer is not in a trusted set of Issuers, the server may decline to perform RADIUS transactions with this client.</t>
        <t>Additionally, a server <bcp14>MAY</bcp14> restrict individual or groups of clients to certain IP addresses or ranges.
One example of this can be to restrict clients configured by DNS name to only the IP address(es) that this DNS name resolves to.</t>
        <t>A client connecting from outside the allowed range would be rejected, even if the mutual authentication otherwise would have been successful.
To reduce server load and to prevent probing the validity of stolen credentials, the server <bcp14>SHOULD</bcp14> abort the (D)TLS handshake immediately with a TLS alert access_denied(49) after the client transmitted identifying information, i.e., the client certificate or the PSK identifier, and the server recognizes that the client connects from outside the allowed IP range.</t>
        <t>See <xref section="6.2.1" sectionFormat="comma" target="RFC9813"/> for further discussion on this topic.</t>
      </section>
      <section anchor="tls_session_resumption">
        <name>TLS Session Resumption</name>
        <t>Session resumption lowers the time and effort required to start a (D)TLS connection and increases network responsiveness.
This is especially helpful when using short idle timeouts.</t>
        <t>RadSec clients and servers <bcp14>SHOULD</bcp14> implement session resumption.
Implementations supporting session resumption <bcp14>MUST</bcp14> cache data during the initial full handshake, sufficient to allow authorization decisions to be made during resumption.
For RadSec servers, this should preferably be done using stateless session resumption as specified in <xref target="RFC5077"/> for TLS 1.2 or <xref target="RFC8446"/> for TLS 1.3, to reduce the resource usage for cached data.</t>
        <t>When establishing a (D)TLS connection with session resumption, both client and server <bcp14>MUST</bcp14> re-authorize the connection by using the original, cached data.
In particular, this includes the X.509 certificate (when using a PKIX trust model) as well as any policies associated with that identity such as restrictions on source IP address.
The re-authorization <bcp14>MUST</bcp14> give the same result as if a full handshake was performed at the time of resumption.</t>
        <t>If cached data cannot be retrieved securely, resumption <bcp14>MUST NOT</bcp14> be done, by either immediately closing the connection or reverting to a full handshake.
If a connection that used session resumption is closed by the server before the resumed DTLS session can be established, the RadSec client <bcp14>MUST NOT</bcp14> re-attempt session resumption but perform a full TLS handshake instead.</t>
      </section>
      <section anchor="radius_packets">
        <name>RADIUS packets</name>
        <t>The use of (D)TLS transport does not change the calculation of security-related fields (such as the Response-Authenticator) in RADIUS <xref target="RFC2865"/> or RADIUS Dynamic Authorization <xref target="RFC5176"/>.
Calculation of attributes such as User-Password <xref target="RFC2865"/> or Message-Authenticator <xref target="RFC3579"/> also does not change.</t>
        <t>The changes to RADIUS implementations required to implement this specification are largely limited to the portions that send and receive packets on the network and the establishment of the (D)TLS connection.</t>
        <t>The RadSec specification does not change the client/server architecture of RADIUS.
RadSec clients transmit the same packet types on the connection they initiated as a RADIUS/UDP client would, and RadSec servers transmit the same packet types on the connections the server has accepted as a RADIUS/UDP server would.
As noted in <xref target="portusage"/>, RadSec uses the same port for Authentication and Accounting packets.
As non-exhaustive example, a RadSec client can transmit packets of type Access-Request, Accounting-Request, Status-Server, Disconnect-ACK over the same connection, and a RadSec server can transmit packets of type Access-Accept, Access-Reject, Access-Challenge, Accounting-Response, Disconnect-Request.</t>
        <t>However, special considerations apply for mixing Authentication and Accounting packets over the same connection.
Traditional RADIUS/UDP uses different ports for Authentication and Accounting, where RadSec uses the same connection for all RADIUS packets.
Due to the use of one single port for all packet types, clients might send packets to the server which it cannot process.
Without a response from the server, the client has to wait for the requests to time out before reusing the request id, leading to resource exhaustion of the limited id space.</t>
        <t>A server <bcp14>MAY</bcp14> therefore respond with a Protocol-Error packet as defined in <xref section="4" sectionFormat="comma" target="RFC7930"/>, to alleviate this situation and signal that it was unable to process a packet.
The Error-Cause attribute of this packet <bcp14>SHOULD</bcp14> be set to the value 406 ("Unsupported Extension"), if the server does not support the packet type, or the value 502 ("Request Not Routable (Proxy)"), if the request cannot be routed.
Future specifications may recommend other Error-Cause attribute values for specific scenarios.</t>
        <t>RadSec clients <bcp14>MUST</bcp14> accept Protocol-Error as a valid response and thus stop any retransmission of the original packet over the current connection.
Further details of handling the Protocol-Error reply on the client side are outside of the scope of this document, see <xref target="I-D.dekok-protocol-error"/> for a more detailed description of Protocol-Error.</t>
        <t>Note that sending Protocol-Error in response to unwanted packets replaces the use of CoA-NAK, Disconnect-NAK and Accounting-Response in these situations as specified in <xref target="RFC6614"/>.
See further details in <xref target="unwanted_packet_handling"/> below.</t>
        <t>RadSec clients, for both reliability and compatibility reasons, <bcp14>SHOULD NOT</bcp14> mix authentication and accounting requests within the same connection. RadSec clients <bcp14>SHOULD</bcp14> use a separate pool of connections on which to send accounting packets in the event the RadSec server does not support sending Protocol-Error.</t>
      </section>
      <section anchor="detecting-live-servers">
        <name>Detecting Live Servers</name>
        <t>RadSec implementations <bcp14>MUST</bcp14> utilize the existence of a TCP, TLS or DTLS connection where applicable in addition to the application-layer watchdog defined in <xref section="3.4" sectionFormat="comma" target="RFC3539"/> when determining the liveness of each connection.</t>
        <t>As RADIUS is a "hop-by-hop" protocol, proxies hide information about the topology downstream to the client.
While the client may be able to deduce the operational state of the next-hop (i.e., proxy), it is unable to determine the operational state of any hops beyond it.
This is particularly problematic for topologies that aggregate multiple routes for differing realms behind a proxy where the absence of a reply could lead to a client to incorrectly deduce that the proxy is unavailable when the cause was an unresponsive downstream hop for a single realm.
A similar effect may also be seen on home servers that uses different credential backends for each realm they service.</t>
        <t>To avoid these issues, RadSec clients <bcp14>MUST</bcp14> only mark a connection 'DOWN' (as labeled by <xref section="3.4" sectionFormat="comma" target="RFC3539"/>) if one or more of the following conditions are met:</t>
        <ul spacing="normal">
          <li>
            <t>The network stack indicates that the connection is no longer viable; such as the destination being no longer routable or the underlying TCP connection being closed by the peer.</t>
          </li>
          <li>
            <t>The transport layer, D(TLS), provides no usable connection</t>
          </li>
          <li>
            <t>The application-layer watchdog algorithm has marked it 'DOWN'.</t>
          </li>
        </ul>
        <t>When a client opens multiple connections to a server, it is also possible that only one of the connections is unresponsive, e.g., because the server deleted the DTLS connection shared state or the connection was load balanced on the server side to a backend server that is now unresponsive.
Therefore, the liveness check <bcp14>MUST</bcp14> be done on a per-connection basis, and a failure on one connection <bcp14>MUST NOT</bcp14> lead to all connections to this server being marked down.</t>
        <t>RadSec clients <bcp14>MUST</bcp14> implement the Status-Server extension as described in <xref target="RFC5997"/> as the application level watchdog to detect the liveness of the peer in the absence of responses.
RadSec servers <bcp14>MUST</bcp14> be able to answer to Status-Server requests.
Since RADIUS has a limitation of 256 simultaneous "in flight" packets due to the length of the ID field (<xref section="2.4" sectionFormat="comma" target="RFC3539"/>), it is <bcp14>RECOMMENDED</bcp14> that RadSec clients reserve ID zero (0) on each connection for Status-Server packets.
This value was picked arbitrarily, as there is no reason to choose any other value over another for this use.</t>
        <t>For RADIUS/TLS, the endpoints <bcp14>MAY</bcp14> send TCP keepalives as described in <xref section="3.8.4" sectionFormat="comma" target="RFC9293"/>.
For RADIUS/DTLS connections, the endpoints <bcp14>MAY</bcp14> send periodic keepalives as defined in <xref target="RFC6520"/>.
This is a way of proactively and rapidly triggering a 'Connection DOWN' notification from the network stack.
These liveness checks are essentially redundant in the presence of an application-layer watchdog, but may provide more rapid notifications of connectivity issues.</t>
      </section>
      <section anchor="client-timers">
        <name>Client Timers</name>
        <t>RadSec clients may need to reconnect to a server that rejected their connection attempt and retry RADIUS packets which did not get an answer.
The following sections define the client behavior.</t>
        <section anchor="reconnection-attempts">
          <name>Reconnection attempts</name>
          <t>RadSec endpoints establish a (D)TLS connection before transmitting any RADIUS packets.
Therefore, in addition to retransmission of RADIUS packets, RadSec clients also have to perform connection retries.</t>
          <t>Except in cases where a connection attempt with session resumption was closed by the RadSec server, RadSec clients <bcp14>MUST NOT</bcp14> immediately reconnect to a server after a failed connection attempt.
A connection attempt is treated as failed if it fails at any point until a (D)TLS connection is established successfully.
Typical reconnections <bcp14>MUST</bcp14> have a lower bound for the time in between retries.
The lower bound <bcp14>SHOULD</bcp14> be configurable, but <bcp14>MUST NOT</bcp14> be less than 0.5 seconds.
In cases where the server closes the connection on an attempted TLS session resumption, the client <bcp14>MUST NOT</bcp14> use TLS session resumption for the following connection attempt.</t>
          <t>RadSec clients <bcp14>MUST</bcp14> implement an algorithm for handling the timing of such reconnection attempts that includes an exponential back-off.
Using an algorithm similar to the retransmission algorithm defined in <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/> is <bcp14>RECOMMENDED</bcp14>.
If a different algorithm is used, it <bcp14>SHOULD</bcp14> include a configurable lower and upper bound for the time between retries, a configurable timeout after which the client gives up reconnecting, and a jitter.</t>
          <t>When a reconnection attempt is queued on a reconnection timer, adding subsequent RADIUS packets to be sent <bcp14>SHOULD NOT</bcp14> trigger an immediate reconnection attempt or reset the reconnection timer.
Instead, the algorithm <bcp14>SHOULD</bcp14> continue as it would have without the new RADIUS packet.
However, a client <bcp14>MAY</bcp14> reset the timeout for giving up reconnecting when a new RADIUS packet is queued.</t>
          <t>Where the connection to a RadSec server is configured to be static and always kept open, the reconnect algorithm <bcp14>SHOULD</bcp14> have an upper limit for the time between retries (e.g., 60 seconds) and not give up trying to reconnect.</t>
        </section>
        <section anchor="client_retransmission_timers">
          <name>RADIUS packet retransmission</name>
          <t>RadSec clients <bcp14>MUST</bcp14> implement timers for managing packet retransmissions and timeouts, 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 implementation <bcp14>MUST</bcp14> have similar properties of including jitter, exponential backoff and a maximum retransmission count (MRC) and/or maximum retransmission duration (MRD).</t>
          <t>For the following description, we use "retransmission" to mean the sending of the exact same packet over the same connection and "retry" to mean the sending of a new RADIUS packet with the same logical contents, but over a different connection or with other details changed.
When a packet is retransmitted, the previously encoded packet contents are sent without change.
When a packet is retried, it goes through the usual RADIUS processing (e.g., allocation of a new RADIUS ID, new Authenticator) and is re-encoded and re-signed.</t>
          <t>When a connection fails or is closed, a RadSec client <bcp14>SHOULD</bcp14> retry packets over a different connection, either a different connection to the same server or a different configured server in the same load-balancing/failover pool.
In order to keep the timers consistent, the timers associated with a packet <bcp14>SHOULD NOT</bcp14> be changed when a packet is moved from one connection to another.
At least the MRD timer <bcp14>SHOULD</bcp14> be preserved to prevent packets staying in the queue indefinitely due to regular connection closure.
A RadSec client <bcp14>MUST</bcp14> associate a packet with exactly one connection until either the connection is closed, in which case the association moves to a new connection, or the timers reach MRC or MRD, in which case the packet is discarded.</t>
          <t>The requirements for actions from timers differ for RADIUS/TLS and RADIUS/DTLS.</t>
          <t>As UDP is not a reliable transport, RADIUS/DTLS clients <bcp14>MUST</bcp14> retransmit packets when indicated by the timers to deal with packets dropped by the network.
When the timers reach MRC or MRD, the packet is discarded.</t>
          <t>Since TCP is a reliable transport, RADIUS/TLS clients <bcp14>MUST NOT</bcp14> retransmit packets when indicated by the timers.
They <bcp14>SHOULD</bcp14> still run the full timer algorithm to determine if the maximum retransmission count (MRC) has been reached.
RADIUS/TLS clients will then use MRC or MRD to determine that a packet has not received a response and the ID of this packet can be re-used for new packets.</t>
          <t>See <xref target="duplicates_retransmissions"/> for more discussion on retransmission behavior.</t>
        </section>
      </section>
      <section anchor="dtls-connection-limits-and-timeout">
        <name>(D)TLS connection limits and timeout</name>
        <t>While RADIUS/UDP could be implemented mostly stateless (except for the requests in flight and possibly <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/> deduplication), both TCP/TLS as well as DTLS require additional state tracking of the underlying (D)TLS connection and are thus subject to potential resource exhaustion.
This is aggravated by the fact that RADIUS client/servers are often statically configured and thus form long-running peer relationships with long-running connections.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> have configurable limits on the number of open connections.
When this maximum is reached and a new (D)TLS connection is needed, the server <bcp14>MUST</bcp14> either drop an old connection in order to open the new one or else not create a new connection.</t>
        <t>The close notification of (D)TLS or underlying connections are not fully reliable, or connections might be unnecessarily kept alive by heartbeat or watchdog traffic, occupying resources.
Therefore, both RadSec clients and servers <bcp14>MAY</bcp14> close connections after they have been idle for some time (no traffic except application layer watchdog).
This idle timeout <bcp14>SHOULD</bcp14> be configurable within reasonable limits and it <bcp14>SHOULD</bcp14> be possible to disable idle timeouts completely.</t>
        <t>On the server side, this mostly helps avoid resource exhaustion.
For clients, proactively closing connections can also help mitigate situations where watchdog mechanisms are unavailable or fail to detect non-functional connections.
Some scenarios or RADIUS protocol extensions could also require that a connection be kept open at all times, so clients <bcp14>MAY</bcp14> immediately re-open the connection.
These scenarios could be related to monitoring the infrastructure or to allow the server to proactively send packets to the clients without a preceding request.</t>
        <t>The value of the idle timeout to use depends on the exact deployment and is a trade-off between resource usage on clients/servers and the overhead of opening new connections.
Very short timeouts that are at or below the timeouts used for application layer watchdogs, typically in the range of 30-60s can be considered unreasonable.
In contrast, the upper limit is much more difficult to define but may be in the range of 10 to 15min, depending on the available resources, or never (disabling idle timeout) in scenarios where a permanently open connection is required.</t>
      </section>
      <section anchor="behavior-on-dtls-connection-closure-of-incoming-connections">
        <name>Behavior on (D)TLS connection closure of incoming connections</name>
        <t>If an incoming (D)TLS connection or the underlying transport channel is closed or broken, then there is no way to send a RADIUS response packet to the client.
The RadSec server behavior then depends on the types of packets being processed, and on the role of the server.</t>
        <t>A RadSec server <bcp14>MUST</bcp14> discard or stop all requests that are associated with the closed connection.  This requirement also applies to proxied requests which are associated with the incoming request.
As no response can be sent over the now-closed (D)TLS connection, any further processing of those requests is pointless.
A discarded request may have a cached RADIUS response packet (<xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>), in which case the cached response also <bcp14>MUST</bcp14> be discarded.
If there is no cached response packet, then the request might still be processed by the home server.
The RADIUS proxy <bcp14>MUST</bcp14> discard any response to these requests and <bcp14>SHOULD</bcp14> stop processing the requests.</t>
        <t>A home server which receives Access-Request packets <bcp14>MUST</bcp14> behave as defined above for a proxy and discard those requests and stop processing them.
Where a RADIUS packet is part of a multi-packet authentication session (e.g., EAP), the underlying authentication session could be continued, or the underlying authentication session data could be discarded.
The server may be able to receive and process another packet for that authentication session via a different incoming connection.
It is difficult to make more recommendations for managing partially processed authentication sessions, as such recommendations depend strongly on the authentication method being used.
As a result, further behavior is implementation defined and outside the scope of this specification.</t>
        <t>A home server which receives other kinds of packets (for example Accounting-Request, CoA-Request, Disconnect-Request) <bcp14>MAY</bcp14> finish processing outstanding requests, and then discard any response.
This behavior ensures that the desired action is still taken, even if the home server cannot inform the client of the result of that action.</t>
      </section>
      <section anchor="malformed-packets-and-unknown-clients">
        <name>Malformed Packets and Unknown clients</name>
        <t>The RADIUS specifications say that an implementation should "silently discard" a packet in a number of circumstances.
This action has no further consequences for UDP based transports, as the "next" packet is completely independent of the previous one.</t>
        <t>When TLS is used as transport, decoding the "next" packet on a connection depends on the proper decoding of the previous packet.
As a result the behavior with respect to discarded packets has to change, since a malformed RADIUS packet could impact the decoding of succeeding packets.</t>
        <t>With DTLS, the "next" packet does not depend on proper decoding of the previous packet, since the RADIUS packets are sent in independent DTLS records (see <xref target="radius_packet_handling"/>).
However, since both TLS and DTLS provide integrity protection and ensure that the packet was sent by the peer, a protocol violation at this stage implies that the peer is misbehaving.</t>
        <t>Subject to the discussion below, implementations of this specification <bcp14>SHOULD</bcp14> treat the text on "silently discard" packets in the RADIUS specifications as "silently discard the packet and close the connection".
That is, the implementation <bcp14>SHOULD</bcp14> send a TLS close notification and, in the case of RADIUS/TLS, the underlying TCP connection <bcp14>MUST</bcp14> be closed if any of the following circumstances are seen:</t>
        <ul spacing="normal">
          <li>
            <t>Connection from an unknown client</t>
          </li>
          <li>
            <t>Packet where the RADIUS <tt>Length</tt> field is less than the minimum RADIUS packet length</t>
          </li>
          <li>
            <t>Packet where the RADIUS <tt>Length</tt> field is more than the maximum RADIUS packet length</t>
          </li>
          <li>
            <t>Packet where an Attribute <tt>Length</tt> field has the value of zero or one (0 or 1)</t>
          </li>
          <li>
            <t>Packet where the attributes do not exactly fill the packet</t>
          </li>
          <li>
            <t>Packet where the Request Authenticator fails validation (where validation is required)</t>
          </li>
          <li>
            <t>Packet where the Response Authenticator fails validation (where validation is required)</t>
          </li>
          <li>
            <t>Packet where the Message-Authenticator attribute fails validation (when it occurs in a packet)</t>
          </li>
        </ul>
        <t>After applying the above rules, there are still situations where the previous specifications allow a packet to be "silently discarded" upon receipt, but in which it is reasonable that a connection <bcp14>MAY</bcp14> remain open:</t>
        <ul spacing="normal">
          <li>
            <t>Packet with an invalid code field (see <xref target="radius_packets"/> for details)</t>
          </li>
          <li>
            <t>Response packets that do not match any outstanding request</t>
          </li>
          <li>
            <t>A server lacking the resources to process a request</t>
          </li>
        </ul>
        <t>These requirements reduce the possibility for a misbehaving client or server to wreak havoc on the network.</t>
      </section>
      <section anchor="cross-protocol-considerations">
        <name>Cross Protocol Considerations</name>
        <t>A client may be configured to use multiple servers, and therefore needs to be able to distinguish servers from one another.  Those servers may use different transport protocols, in any combination.  For example, a client may be configured with a RADIUS/UDP server, and RADIUS/DTLS server, and a RADIUS/TLS server all at the same time.  These servers may share IP addresses, but not the same UDP or TCP ports.  These considerations also affect RADIUS servers.</t>
        <t>RADIUS implementations <bcp14>MUST</bcp14> be able to distinguish servers by at least the 3-tuple of:</t>
        <ul spacing="normal">
          <li>
            <t>protocol (one of RADIUS/UDP, RADIUS/DTLS, or RADIUS/TLS)</t>
          </li>
          <li>
            <t>server IP,</t>
          </li>
          <li>
            <t>server port.</t>
          </li>
        </ul>
        <t>Implementations <bcp14>MUST NOT</bcp14> exchange both insecure and secure traffic on the same UDP or TCP port.  It is <bcp14>RECOMMENDED</bcp14> that implementations make it impossible for such a configuration to be created.</t>
        <t>Where a server accepts packets on multiple different 3-tuples (protocol, server IP, server port), it <bcp14>MUST</bcp14> track clients independently for each 3-tuple combination.  A RADIUS client has no way of knowing if different 3-tuple combinations are all managed by the same RADIUS server.  Therefore, the server behavior has to be compatible with the clients expectations.</t>
        <t>When a server receives a packet from a source IP address on a 3-tuple, it <bcp14>MUST</bcp14> process that packet according to the profile for that 3-tuple.  This requirement means that (for example), a server can be configured to accept RADIUS/UDP traffic on multiple UDP ports, and then have a completely different (and non-overlapping) set of clients configured for each port.</t>
        <t>While this behavior is not required by previous specifications, it codifies long-standing practices.  As such, existing server implementations likely do not need to do anything in order to support the requirements of this section.</t>
      </section>
    </section>
    <section anchor="radiustls-specific-specifications">
      <name>RADIUS/TLS-specific specifications</name>
      <t>This section discusses all specifications that are only relevant for RADIUS/TLS.</t>
      <section anchor="sending-and-receiving-radius-traffic">
        <name>Sending and receiving RADIUS traffic</name>
        <t>The TLS layer of RADIUS/TLS provides a stream-based communication between the two peers instead of the traditional packet-based communication as with RADIUS/UDP.
As a result, the way RADIUS packets are sent and received has to change.</t>
        <t>Instead of relying on the underlying transport protocol to indicate the start of a new packet, the RADIUS/TLS endpoints have to keep track of the packet borders by examining the header of the received RADIUS packets.</t>
        <t>After the TLS connection is established, a RADIUS/TLS endpoint <bcp14>MUST NOT</bcp14> send any data except for RADIUS packets over the connection.
Since the RADIUS packet header contains a <tt>Length</tt> field, the end of the current RADIUS packet can be deduced.
The next RADIUS packet <bcp14>MUST</bcp14> be sent directly after the current RADIUS packet, that is, the endpoints <bcp14>MUST NOT</bcp14> add padding before, between, or after RADIUS packets.</t>
        <t>When receiving RADIUS packets, a RADIUS/TLS endpoint <bcp14>MUST</bcp14> determine the borders of RADIUS packet based on the <tt>Length</tt> field in the RADIUS header.
Note that, due to the stream architecture of TLS, it is possible that a RADIUS packet is first received only partially, and the remainder of the packet is contained in following fragments.
Therefore, RADIUS/TLS endpoints <bcp14>MUST NOT</bcp14> assume that the packet length is invalid solely based on the currently available data in the stream.  More data may come at a later time.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that RADIUS/TLS implementations pass a RADIUS packet to the TLS library as one unit, instead of in multiple fragments.  This behavior avoids unnecessary overhead when sending or receiving (especially if every new write generates a new TLS record) and wait times on the other endpoint.</t>
      </section>
      <section anchor="duplicates_retransmissions">
        <name>Duplicates and Retransmissions</name>
        <t>As TCP is a reliable transport, RADIUS/TLS endpoints <bcp14>MUST NOT</bcp14> retransmit RADIUS packets over a given TCP connection.
However, if the TLS connection or TCP connection is closed or broken, retries over new connections are permissible.
RADIUS request packets that have not yet received a response <bcp14>MAY</bcp14> be transmitted by a RADIUS/TLS client over a new connection.
As this procedure involves using a new connection, the ID of the packet <bcp14>MAY</bcp14> change.
If the ID changes, any security attributes such as Message-Authenticator <bcp14>MUST</bcp14> be recalculated.</t>
        <t>Despite the above discussion, RADIUS/TLS servers <bcp14>SHOULD</bcp14> still perform duplicate detection on received packets, as described in <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>.
This detection can prevent duplicate processing of packets from non-conforming clients.</t>
        <t>RADIUS clients <bcp14>MUST NOT</bcp14> perform retries by sending a packet on a different protocol or connection (i.e., switching from TLS to DTLS or vice versa).  However, when a connection fails, a RADIUS client <bcp14>MAY</bcp14> send packets associated with that connection over a different configured connection or server.
This requirement does not, therefore, forbid the practice of putting servers with the same IP address and port but different protocols into a failover or load-balancing pool.
In that situation, RADIUS requests <bcp14>MAY</bcp14> be sent to another server that is known to be part of the same pool.</t>
      </section>
    </section>
    <section anchor="dtls_spec">
      <name>RADIUS/DTLS-specific specifications</name>
      <t>This section discusses all specifications that are only relevant for RADIUS/DTLS.</t>
      <section anchor="radius_packet_handling">
        <name>RADIUS packet handling</name>
        <t>The DTLS encryption adds an additional overhead to each packet sent.
RADIUS/DTLS implementations <bcp14>MUST</bcp14> support sending and receiving RADIUS packets of 4096 bytes in length, with a corresponding increase in the maximum size of the encapsulated DTLS packets.
This larger packet size may cause the UDP packet to be larger than the Path MTU (PMTU), which causes the packet to be fragmented.
Implementers and operators should be aware of the possibility of fragmented UDP packets.
For details about issues with fragmentation see <xref target="RFC8900"/>.</t>
        <t>RADIUS/DTLS endpoints <bcp14>MUST</bcp14> send exactly one RADIUS packet per DTLS record.
This ensures that the RADIUS packets do not get fragmented at a point where a re-ordering of UDP packets would result in decoding failures.
The DTLS specification mandates that a DTLS record must not span multiple UDP datagrams.
We note that a single UDP datagram may, however, contain multiple DTLS records.
RADIUS/DTLS endpoints <bcp14>MAY</bcp14> use this behavior to send multiple RADIUS packets in one UDP packet.</t>
        <t>For the receiving RADIUS/DTLS endpoint, the length checks defined in <xref section="3" sectionFormat="comma" target="RFC2865"/> still apply.
That is, a receiving RADIUS/DTLS endpoint <bcp14>MUST</bcp14> perform all the length checks, but <bcp14>MUST</bcp14> use the length of the decrypted payload of the DTLS record instead of the UDP packet length.
Exactly one RADIUS packet is encapsulated in a DTLS record, and any data outside the range of the RADIUS length field within the decrypted payload of a single DTLS record <bcp14>MUST</bcp14> be treated as padding, as it would be with a RADIUS/UDP packet, and be ignored.  RADIUS implementations <bcp14>MUST NOT</bcp14> discard packets simply due to the existence of padding.
For UDP datagrams containing multiple DTLS records, each DTLS record <bcp14>MUST</bcp14> be parsed individually.</t>
        <t>If a RADIUS packet needs to be re-transmitted, either as retransmission due to a missing response by the client or as retransmission of a cached response by the server, the RADIUS/DTLS endpoints <bcp14>MUST</bcp14> re-process the RADIUS packet through DTLS.
That is, for the purpose of retransmissions, RADIUS/DTLS endpoints cache the RADIUS packet, as a RADIUS/UDP endpoint would, and do not cache the DTLS record that contains the RADIUS packet.</t>
      </section>
      <section anchor="server-behavior">
        <name>Server behavior</name>
        <t>When a RADIUS/DTLS server receives packets on the configured RADIUS/DTLS port, all received packets <bcp14>MUST</bcp14> be treated as being RADIUS/DTLS.
RADIUS/UDP packets <bcp14>MUST NOT</bcp14> be accepted on this port.</t>
        <t>Some servers maintain a list of allowed clients per destination port.
Others maintain a global list of clients that are permitted to send packets to any port.
As such, a RADIUS/DTLS server <bcp14>MUST</bcp14> maintain a "DTLS Required" flag per client.</t>
        <t>This flag indicates whether or not that client is required to use DTLS.
When set, the flag indicates that the only traffic accepted from the client is over the RADIUS/DTLS port.  All non-DTLS traffic <bcp14>MUST</bcp14> be silently discarded.</t>
        <t>This flag is normally set by an administrator.
However, if the server receives DTLS traffic from a client, it <bcp14>SHOULD</bcp14> notify the administrator that DTLS is available for that client.
A server <bcp14>MAY</bcp14> automatically mark the client as "DTLS Required".</t>
      </section>
      <section anchor="client-behavior">
        <name>Client behavior</name>
        <t>When a RADIUS/DTLS client sends packet to a RADIUS/DTLS port, all packets <bcp14>MUST</bcp14> be DTLS.
RADIUS/UDP packets <bcp14>MUST NOT</bcp14> be sent to this port.</t>
        <t>RADIUS/DTLS clients <bcp14>SHOULD NOT</bcp14> probe servers to see if they support DTLS transport.
Instead, clients <bcp14>SHOULD</bcp14> use DTLS as a transport layer only when administratively configured.</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>This section discusses topics related to the internal behavior of RadSec implementations that should be considered by RadSec implementers.</t>
      <section anchor="radius-implementation-changes">
        <name>RADIUS Implementation Changes</name>
        <t>The RADIUS packet format is unchanged from <xref target="RFC2865"/>, <xref target="RFC2866"/> and <xref target="RFC5176"/>.
Specifically, all of the following portions of RADIUS remain unchanged when using RadSec:</t>
        <ul spacing="normal">
          <li>
            <t>Packet format</t>
          </li>
          <li>
            <t>Permitted codes</t>
          </li>
          <li>
            <t>Request Authenticator calculation</t>
          </li>
          <li>
            <t>Response Authenticator calculation</t>
          </li>
          <li>
            <t>Minimum packet length</t>
          </li>
          <li>
            <t>Maximum packet length</t>
          </li>
          <li>
            <t>Attribute format</t>
          </li>
          <li>
            <t>Vendor-Specific Attribute (VSA) format</t>
          </li>
          <li>
            <t>Permitted data types</t>
          </li>
          <li>
            <t>Calculation of dynamic attributes such as CHAP-Challenge, or Message-Authenticator</t>
          </li>
          <li>
            <t>Calculation of "encrypted" attributes such as Tunnel-Password.</t>
          </li>
        </ul>
        <t>The use of (D)TLS transport does not change the calculation of security-related fields (such as the Response-Authenticator) in RADIUS <xref target="RFC2865"/> or RADIUS Dynamic Authorization <xref target="RFC5176"/>.
Calculation of attributes such as User-Password <xref target="RFC2865"/> or Message-Authenticator <xref target="RFC3579"/> also does not change.</t>
        <t>The changes to RADIUS implementations required to implement this specification are largely limited to the portions that send and receive packets on the network, and to the establishment of the (D)TLS connection.
The fact that RADIUS remains largely unchanged ensures the simplest possible implementation and widest interoperability of the specification.
This reuse includes the usage of the outdated security mechanisms in RADIUS that are based on shared secrets and MD5.
The use of MD5 here is not considered a security issue, since integrity and confidentiality are provided by the (D)TLS layer.  See <xref target="security_considerations"/> of this document or <xref target="RFC9765"/> for more details.  See also <xref section="1" sectionFormat="comma" target="RFC9765"/> for a discussion of issues related to the continued use of MD5, even in situations where its use is known to be safe.</t>
        <t>We note that for RADIUS/DTLS the DTLS encapsulation of RADIUS means that UDP datagrams include an additional overhead due to DTLS.
This is discussed further in <xref target="dtls_spec"/>.</t>
        <section anchor="unwanted_packet_handling">
          <name>Differences from RFC 6614 unwanted RADIUS packet handling</name>
          <t>The previous specification of RADIUS/TLS in <xref target="RFC6614"/> recommends to send a reply to unwanted RADIUS packets that depends on the request type:</t>
          <ul spacing="normal">
            <li>
              <t>For unwanted CoA-Requests or Disconnect-Requests, the servers should respond with a CoA-NAK or Disconnect-NAK, respectively.</t>
            </li>
            <li>
              <t>For unwanted Accounting-Requests, the servers should respond with an Accounting-Response containing an Error-Cause attribute with the value 406 ("Unsupported Extension").</t>
            </li>
          </ul>
          <t><xref target="RFC6614"/> also recommends that a RADIUS/TLS client observing this Accounting-Response should stop sending Accounting-Request packets to this server.
This behavior, however, could lead to problems, especially in proxy fabrics, since the RADIUS client cannot determine whether the reply came from the correct server or a RADIUS proxy along the way.</t>
          <t>Compared to the <xref target="RFC6614"/> recommended replies (CoA-NAK, Disconnect-NAK and Accounting-Response), the Protocol-Error packet is explicitly only applicable to one RADIUS hop and must not be forwarded, which gives the RADIUS client the opportunity to re-route the unwanted packet to a different RADIUS server.
This also is backwards compatible with existing implementations, since RADIUS clients must ignore any incoming RADIUS packets with an unknown packet type.
Therefore these <xref target="RFC6614"/> recommended reply message types are now replaced with the Protocol-Error packet type.</t>
        </section>
      </section>
      <section anchor="forwarding-radius-packets-between-udp-and-tcp-based-transports">
        <name>Forwarding RADIUS packets between UDP and TCP based transports</name>
        <t>When a RADIUS proxy forwards packets, it is possible that the incoming and outgoing links have substantially different properties.
This issue is most notable in UDP to TCP proxying, but there are still possible issues even when the same transport is used on both incoming and outgoing links.
<xref section="1.2" sectionFormat="comma" target="RFC2866"/> noted this issue many years ago:</t>
        <artwork><![CDATA[
A forwarding server may either perform its forwarding function in a
pass through manner, where it sends retransmissions on as soon as it
gets them, or it may take responsibility for retransmissions, for
example in cases where the network link between forwarding and remote
server has very different characteristics than the link between NAS
and forwarding server.
]]></artwork>
        <t>These differences are most notable in throughput, and in differing retransmission requirements.</t>
        <section anchor="throughput-differences-lead-to-network-collapse">
          <name>Throughput Differences lead to Network Collapse</name>
          <t>An incoming link to the proxy may have substantially different throughput than the outgoing link.
Perhaps the network characteristics on the two links are different, or perhaps the home server is slow.
In both situations, the proxy may be left with a difficult choice about what to do with the incoming packets, if the rate of incoming packets exceeds throughput on the outgoing link.</t>
          <t>As RADIUS does not provide for connection-based congestion control, there is no way for the proxy to signal on the incoming link that the client should slow its rate of sending packets.
As a result, the proxy generally will accept the packets, buffer them, and hope that they can be be sent outbound before the client gives up on the request.  Other courses of action are possible, but are implementation specific.  See <xref target="I-D.dekok-protocol-error"/> for more discussion on this topic.</t>
        </section>
        <section anchor="differing-retransmission-requirements">
          <name>Differing Retransmission Requirements</name>
          <t>Due to the lossy nature of UDP, RADIUS/UDP and RADIUS/DTLS transports are required to perform retransmissions as per <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/>.
In contrast, RADIUS/TCP and RADIUS/TLS transports are reliable, and do not perform retransmissions.
These requirements lead to an issue for proxies when they send packets across protocol boundaries with differing retransmission behaviors.</t>
          <t>When a proxy receives packets on an unreliable transport, and forwards them across a reliable transport, it receives retransmissions from the client, but <bcp14>MUST NOT</bcp14> forward those retransmissions across the reliable transport.
The proxy <bcp14>MAY</bcp14> log information about these retransmissions, but it does not perform any other action.</t>
          <t>When a proxy receives RADIUS packets on a reliable transport, and forwards them across an unreliable transport, the proxy <bcp14>MUST</bcp14> perform retransmissions across the unreliable transport as per <xref section="2.2.1" sectionFormat="comma" target="RFC5080"/>.
That is, the proxy takes responsibility for the retransmissions.
Implementations <bcp14>MUST</bcp14> take care to not completely decouple the two transports in this situation.
See <xref target="radius_packet_handling"/> for details on retransmitting RADIUS packets over DTLS.</t>
          <t>That is, if an incoming connection on a reliable transport is closed, there may be pending retransmissions on an outgoing unreliable transport.
Those retransmissions <bcp14>MUST</bcp14> be stopped, as there is nowhere to send the reply.
Similarly, if the proxy sees that the client has given up on a request (such as by re-using an Identifier before the proxy has sent a response), the proxy <bcp14>MUST</bcp14> stop all retransmissions of the old request and discard it.</t>
          <t>The above requirements are a logical extension of the common practice where a client stops retransmission of a packet once it decides to "give up" on the packet and discard it.
Whether this discard process is due to internal client decisions, or interaction with incoming connections is irrelevant.
When the client cannot do anything with responses to a request, it <bcp14>MUST</bcp14> stop retransmitting that request.</t>
        </section>
        <section anchor="acct-delay-time-and-event-timestamp">
          <name>Acct-Delay-Time and Event-Timestamp</name>
          <t>In order to avoid congestive collapse, it is <bcp14>RECOMMENDED</bcp14> that RadSec clients which originate Accounting-Request packets (i.e., not proxies) do not include Acct-Delay-Time (<xref section="5.2" sectionFormat="comma" target="RFC2866"/>) in those packets.
Instead, those clients <bcp14>SHOULD</bcp14> include Event-Timestamp (<xref section="5.3" sectionFormat="comma" target="RFC2869"/>), which is the time at which the original event occurred.
The Event-Timestamp <bcp14>MUST NOT</bcp14> be updated on any retransmissions, as that would both negate the meaning of Event-Timestamp, and create the same problem as with Acct-Delay-Time.</t>
          <t>Not using Acct-Delay-Time allows for RADIUS Accounting-Request packets to be retransmitted without change.
In contrast, updating Acct-Delay-Time would require that the client create and send a new Accounting-Request packet without signaling the server that the previous packet is no longer considered active.
This process can occur repeatedly, which leads to multiple different packets containing effectively the same information (except for Acct-Delay-Time).
This duplication contributes to congestive collapse of the network, if one or more RADIUS proxies performs retransmission to the next hop for each of those packets independently.</t>
          <t>Additionally, the different properties of the RADIUS/TLS transport as well as cross-protocol proxying change the assumption of a negligible transmission time of the RADIUS packet, on which the value of Acct-Delay-Time is based.
While a single UDP packet may have a negligible transmission time, application data sent via TLS could arrive at the server with a significant delay due to the underlying TCP retransmission mechanism.
If the packet is proxied from RADIUS/TLS to RADIUS/DTLS or RADIUS/UDP, the proxy has to retransmit on its own without changing the value of Acct-Delay-Time, which again introduces non-negligible transmission delays.</t>
          <t>Using Event-Timestamp instead of Acct-Delay-Time also removes an ambiguity around retransmitted packets for RADIUS/TLS.
Since there is no change to the packet contents when a retransmission timer expires, no new packet ID is allocated, and therefore no new packet is created.</t>
          <t>Where RadSec clients do include Acct-Delay-Time in RADIUS packets, the client <bcp14>SHOULD</bcp14> use timers to detect packet loss, as described in <xref target="client_retransmission_timers"/>.
Where RadSec clients do include Acct-Delay-Time in RADIUS packets, the client can rely on the Event-Timestamp to signal delays, and therefore <bcp14>SHOULD NOT</bcp14> update the Acct-Delay-Time. If the timer has determined that the original packet has been completely lost, the client <bcp14>SHOULD</bcp14> then create a new RADIUS packet with the same information, and <bcp14>MAY</bcp14> update Acct-Delay-Time.
This behavior ensures that there is no congestive collapse, since a new packet is only created if following hops have also given up on retransmission.
The Event-Timestamp is then interpreted as the time at which the event occurred.  Where Acct-Delay-Time exists, it is then interpreted as the delay between the event and when the packet was sent. Systems <bcp14>MUST NOT</bcp14> subtract the Acct-Delay-Time from Event-Timestamp to derive a time at which the event occurred; that time is exactly Event-Timestamp.  The existence of Acct-Delay-Time instead serves as an additional indication of delays in sending the packet.
Leaving the Acct-Delay-Time static reduces the granularity of Acct-Delay-Time to the retransmission timeout, compared to the different approach of updating the Acct-Delay-Time on each retransmission.</t>
        </section>
      </section>
      <section anchor="additional-verification-of-peers">
        <name>Additional Verification of Peers</name>
        <t>There are numerous trust models in PKIX environments, and it is beyond the scope of this document to define how a particular deployment determines whether a client is trustworthy.
Implementations that want to support a wide variety of trust models should expose as many details of the presented certificate to the administrator as possible so that the trust model can be implemented by the administrator.
As a suggestion, at least the following information from the TLS connection and the X.509 client certificate should be exposed:</t>
        <ul spacing="normal">
          <li>
            <t>Originating IP address</t>
          </li>
          <li>
            <t>Certificate Fingerprint</t>
          </li>
          <li>
            <t>Issuer</t>
          </li>
          <li>
            <t>Subject</t>
          </li>
          <li>
            <t>all X.509v3 Extended Key Usage</t>
          </li>
          <li>
            <t>all X.509v3 Subject Alternative Name</t>
          </li>
          <li>
            <t>all X.509v3 Certificate Policy</t>
          </li>
        </ul>
        <t>Similar to the PKIX trust model, clients using TLS-PSK may have additional policies to determine whether a client should be allowed to connect.
Therefore, in TLS-PSK operation, at least the following information from the TLS connection should be exposed:</t>
        <ul spacing="normal">
          <li>
            <t>Originating IP address</t>
          </li>
          <li>
            <t>TLS-PSK Identifier</t>
          </li>
        </ul>
      </section>
      <section anchor="tcp-applications-are-not-udp-applications">
        <name>TCP Applications Are Not UDP Applications</name>
        <t>Implementers should be aware that programming a robust TCP-based application can be very different from programming a robust UDP-based application.</t>
        <t>Additionally, differences in the transport like head-of-line blocking and the possibility of increased transmission times should be considered.</t>
        <t>When using RADIUS/UDP or RADIUS/DTLS, there is no ordering of packets.
If a packet sent by a endpoint is lost, that loss has no effect on subsequent packets sent by that endpoint.</t>
        <t>Unlike UDP, TCP is subject to issues related to head-of-line blocking.
This occurs when a TCP segment is lost and a subsequent TCP segment arrives out of order.
While the RADIUS endpoints can process RADIUS packets out of order, the semantics of TCP makes this impossible.
This limitation can lower the maximum packet processing rate of RADIUS/TLS.
In severe cases, this may have a noticeable effect on all authentications that run over the congested connection, especially authentications with multiple round trips such as EAP-based authentications.
In contrast, when a RADIUS/UDP or RADIUS/DTLS packet is lost, only this authentication session is affected.
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.
This can impact or distort the accuracy of RADIUS attributes for timing which assume a negligible network delay, namely Acct-Delay-Time.</t>
      </section>
      <section anchor="dtls-session-management">
        <name>DTLS Session Management</name>
        <t>Where RADIUS/TLS can rely on the TCP state machine to perform session tracking, RADIUS/DTLS cannot.
As a result, implementations of RADIUS/DTLS may need to perform session management of the DTLS session in the application layer.
This subsection describes logically how this tracking is done.
Implementations <bcp14>MAY</bcp14> choose to use the method described here, or another, equivalent method.
When implementations do not use the 5-tuple described below, note that IP address based policies <bcp14>MUST</bcp14> still be applied for all incoming packets, similar to the mandated behavior for TLS Session Resumption in <xref target="tls_session_resumption"/>.</t>
        <t>We note that <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>, already mandates a duplicate detection cache.
The session tracking described below can be seen as an extension of that cache, where entries contain DTLS sessions instead of RADIUS/UDP packets.</t>
        <section anchor="server-session-management">
          <name>Server Session Management</name>
          <t>A RADIUS/DTLS server using the 5-tuple method <bcp14>MUST</bcp14> track ongoing DTLS sessions for each client, based on the following 5-tuple:</t>
          <ul spacing="normal">
            <li>
              <t>source IP address</t>
            </li>
            <li>
              <t>source port</t>
            </li>
            <li>
              <t>destination IP address</t>
            </li>
            <li>
              <t>destination port</t>
            </li>
            <li>
              <t>protocol (fixed to <tt>UDP</tt>)</t>
            </li>
          </ul>
          <t>Note that this 5-tuple is independent of IP address version (IPv4 or IPv6).</t>
          <t>Each 5-tuple points to a unique session entry, which usually contains the following information:</t>
          <dl>
            <dt>DTLS Session:</dt>
            <dd>
              <t>Any information required to maintain and manage the DTLS session.</t>
            </dd>
            <dt>DTLS Data:</dt>
            <dd>
              <t>An implementation-specific variable that may contain information about the active DTLS session.
This variable may be empty or nonexistent.</t>
            </dd>
            <dt/>
            <dd>
              <t>This data will typically contain information such as idle timeouts, session lifetimes, and other implementation-specific data.</t>
            </dd>
          </dl>
          <section anchor="session-opening-and-closing">
            <name>Session Opening and Closing</name>
            <t>Session tracking is subject to Denial-of-Service (DoS) attacks due to the ability of an attacker to forge UDP traffic.
RADIUS/DTLS servers <bcp14>SHOULD</bcp14> use the stateless cookie tracking technique described in <xref section="4.2.1" sectionFormat="comma" target="RFC6347"/> for DTLS 1.2 and <xref section="5.1" sectionFormat="comma" target="RFC9147"/> for DTLS 1.3.
DTLS sessions <bcp14>SHOULD NOT</bcp14> be tracked until a ClientHello packet has been received with an appropriate Cookie value.
Server implementation <bcp14>SHOULD</bcp14> have a way of tracking DTLS sessions that are partially set up.
Servers <bcp14>MUST</bcp14> limit both the number and impact on resources of partial sessions.</t>
            <t>Sessions (both 5-tuple and entry) <bcp14>MUST</bcp14> be deleted when the DTLS session is closed for any reason.
When a session is deleted due to it failing security requirements, the DTLS session <bcp14>MUST</bcp14> be closed, any TLS session resumption parameters for that session <bcp14>MUST</bcp14> be discarded, and all tracking information <bcp14>MUST</bcp14> be deleted.</t>
            <t>Since UDP is stateless, the potential exists for the client to initiate a new DTLS session using a particular 5-tuple, before the server has closed the old session.
For security reasons, the server <bcp14>MUST</bcp14> keep the old session active until either it has received secure notification from the client that the session is closed or the server decides to close the session based on idle timeouts.
Taking any other action would permit unauthenticated clients to perform a DoS attack, by reusing a 5-tuple and thus causing the server to close an active (and authenticated) DTLS session.</t>
            <t>As a result, servers <bcp14>MUST</bcp14> ignore any attempts to reuse an existing 5-tuple from an active session.
This requirement can generally be reached by simply processing the packet through the existing DTLS session, as with any other packet received via that 5-tuple.
Non-compliant, or unexpected packets will be ignored by the DTLS layer.</t>
          </section>
        </section>
        <section anchor="client-session-management">
          <name>Client Session Management</name>
          <t>RADIUS/DTLS clients <bcp14>SHOULD NOT</bcp14> send both RADIUS/UDP and RADIUS/DTLS packets to different servers from the same source socket.
This practice causes increased complexity in the client application and increases the potential for security breaches due to implementation issues.</t>
          <t>RADIUS/DTLS clients <bcp14>MAY</bcp14> use PMTU discovery <xref target="RFC6520"/> to determine the PMTU between the client and server.
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.
Sending RADIUS packets that exceed the PMTU between the client and the server will result in IP fragmentation.
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.
Note that PMTU discovery can only discover the PMTU of the current RADIUS hop and a RADIUS client has no reliable way to discover the PMTU across the whole RADIUS proxy chain.
Further discussion of this topic is outside of the scope of this document.</t>
        </section>
      </section>
    </section>
    <section anchor="security_considerations">
      <name>Security Considerations</name>
      <t>As this specification relies on the existing TLS and DTLS specifications, all security considerations for these protocols also apply to the (D)TLS portions of RadSec.</t>
      <t>For RADIUS however, many security considerations raised in the RADIUS documents are related to RADIUS encryption and authorization.
Those issues are largely mitigated when (D)TLS is used as a transport method, since encryption and authorization is achieved on the (D)TLS layer.
The issues that are not mitigated by this specification are related to the RADIUS packet format and handling, which is unchanged in this specification.</t>
      <t>A few remaining security considerations and notes to administrators deploying RadSec are listed below.</t>
      <section anchor="mixing-secure-and-insecure-traffic">
        <name>Mixing Secure and Insecure Traffic</name>
        <t>It is <bcp14>RECOMMENDED</bcp14> that servers do not accept both secure and insecure traffic from the same source IP address.  Allowing RADIUS/UDP and RADIUS/DTLS from the same client exposes the traffic to downbidding attacks and is <bcp14>NOT RECOMMENDED</bcp14>.</t>
        <t>Administrators of a client can place servers into a load-balance or fail-over pools, no matter what the combination of values in the 3-tuple which identifies a server. However, administrators should limit these pools to servers with a similar security profile, e.g., all UDP, or all (D)TLS. Mixing insecure traffic with secure traffic will likely create security risks.</t>
      </section>
      <section anchor="radius-proxies">
        <name>RADIUS Proxies</name>
        <t>RadSec provides authentication, integrity and confidentiality protection for RADIUS traffic for a single hop between two RADIUS endpoints.
In the presence of proxies, intermediate proxies can still inspect the individual RADIUS packets, i.e., "end-to-end" encryption on the RADIUS layer is not provided.
Where intermediate proxies are untrusted, it is desirable to use other RADIUS mechanisms to prevent critical RADIUS attributes from inspection by such proxies.
One common method is to protect user credentials by using the Extensible Authentication Protocol (EAP) and EAP methods that utilize TLS.
However, in typical use cases there still remain attributes potentially containing confidential data (such as personally identifiable information or cryptographic keys) which cannot be protected from inspection by proxies.</t>
        <t>Additionally, when RADIUS proxies are used, the RADIUS client has no way of ensuring that the complete path of the RADIUS packet is protected, since RADIUS routing is done hop-by-hop and any intermediate proxy may be configured, after receiving a RADIUS packet via RadSec from one endpoint, to forward this packet to a different endpoint using the RADIUS/UDP transport profile.
Since with RADIUS/UDP, the packet is sent in cleartext, an eavesdropper can observe the packet over the RADIUS/UDP hops.
There is no technical solution with the current specification that enforces that a RADIUS packet is transported only via secure RADIUS transports over the whole path.
If the confidentiality of the full contents of the RADIUS packet across the whole path is required, organizational solutions need to be in place that ensure that every intermediate RADIUS proxy is configured to forward the RADIUS packets using RadSec as transport.</t>
        <t>One possible way to reduce the attack surface is to reduce the number of proxies in the overall proxy chain.
For this, dynamic discovery as defined in <xref target="RFC7585"/> can be used.</t>
        <section anchor="loopback-attack-on-endpoints-acting-as-server-and-client">
          <name>Loopback-Attack on endpoints acting as Server and Client</name>
          <t>RadSec endpoints that are configured to act both as client and server, typically in a proxy configuration, may be vulnerable to attacks where an attacker mirrors back all traffic to the endpoint.
Therefore, endpoints that are capable of acting as both client and server <bcp14>SHOULD</bcp14> implement mitigations to avoid accepting connections from itself.
One example of a potentially vulnerable configuration is a setup where the RadSec server is accepting incoming connections from any address (or a wide address range).
Since the server may not be able to verify the certificate subject or subject alternate names, the trust is based on the certificate issuer and/or on the contents of the certificate policies extension <xref section="4.2.1.4" sectionFormat="comma" target="RFC5280"/>.
However, in this case, the client certificate which the RadSec endpoint uses for outgoing connections on the client side might also satisfy the trust check of the server side.
Other scenarios where the identification of an outgoing connection satisfies the trust check of an incoming one are possible, but are not enumerated here.</t>
          <t>Either through misconfiguration, erroneous or spoofed dynamic discovery, or an attacker rerouting TLS packets, a proxy might thus open a connection to itself, creating a loop.
Such attacks have been described for TLS-PSK <xref target="RFC9257"/>, dubbed a selfie-attack, but are much broader in the RadSec case.
In particular, as described above, they also apply to certificate based authentication.</t>
          <t>Server implementations <bcp14>SHOULD</bcp14> therefore detect connections from itself, and reject them.
There is currently no detection method that works universally for all use-cases and TLS implementations.
Some possible detection methods are listed below:</t>
          <ul spacing="normal">
            <li>
              <t>Comparing client or server random used in the TLS handshake.  While this is a very effective method, it requires access to values which are normally private to the TLS implementation.</t>
            </li>
            <li>
              <t>Sending a custom random number in an extension in the TLS client hello.  Again, this is very effective, but requires extension of the TLS implementation.</t>
            </li>
            <li>
              <t>Comparing the incoming server certificate to all server certificates configured on the proxy.  While in some scenarios this can be a valid detection method, using the same server certificate on multiple servers would keep these servers from connecting with each other, even when this connection is legitimate.</t>
            </li>
          </ul>
          <t>The application layer RADIUS protocol also offers some loop detection, e.g., using a Proxy-State attribute.
However, these methods are not capable of reliably detecting and suppressing these attacks in every case and are outside the scope of this document.</t>
        </section>
      </section>
      <section anchor="usage-of-null-encryption-cipher-suites-for-debugging">
        <name>Usage of NULL encryption cipher suites for debugging</name>
        <t>Some TLS implementations offer cipher suites with NULL encryption, to allow inspection of the plaintext with packet sniffing tools.
Since with RadSec the RADIUS shared secret is set to a static string ("radsec" for RADIUS/TLS, "radius/dtls" for RADIUS/DTLS), using a NULL encryption cipher suite will also result in complete disclosure of the whole RADIUS packet, including the encrypted RADIUS attributes, to any party eavesdropping on the conversation.
Following the recommendations in <xref section="4.1" sectionFormat="comma" target="RFC9325"/>, this specification forbids the usage of NULL encryption cipher suites for RadSec.</t>
        <t>For cases where administrators need access to the decrypted RadSec traffic, we suggest using different approaches, like exporting the key material from TLS libraries according to <xref target="I-D.ietf-tls-keylogfile"/>.</t>
      </section>
      <section anchor="possibility-of-denial-of-service-attacks">
        <name>Possibility of Denial-of-Service attacks</name>
        <t>Both RADIUS/TLS and RADIUS/DTLS have a considerable higher amount of data that the server needs to store in comparison to RADIUS/UDP.
Therefore, an attacker could try to exhaust server resources.</t>
        <t>With RADIUS/UDP, any invalid RADIUS packet would fail the cryptographic checks and the server would silently discard that packet.
For RadSec, the server needs to perform at least a partial TLS handshake to determine whether or not the client is authorized.
Performing a (D)TLS handshake is more complex than the cryptographic check of a RADIUS packet.
An attacker could try to trigger a high number of (D)TLS handshakes at the same time, resulting in a high server load and potentially a Denial-of-Service.
To prevent this attack, a RadSec server <bcp14>SHOULD</bcp14> have configurable limits on new connection attempts, and where configured, <bcp14>MUST</bcp14> enforce those limits.</t>
        <t>Both TLS and DTLS need to store connection information for each open (D)TLS connection.
Especially with DTLS, a bogus or misbehaving client could open an excessive number of DTLS connections.
This connection tracking could lead to a resource exhaustion on the server side, triggering a Denial-of-Service.
Therefore, RadSec servers <bcp14>SHOULD</bcp14> have a configurable limit of the number of connections they can track, and where configured, <bcp14>MUST</bcp14> enforce those limits.
When the total number of connections tracked is going to exceed the configured limit, servers <bcp14>MAY</bcp14> free up resources by closing the connection that has been idle for the longest time.
Doing so may free up idle resources that then allow the server to accept a new connection.</t>
        <t>RadSec servers <bcp14>MUST</bcp14> limit the number of partially open (D)TLS connections and <bcp14>SHOULD</bcp14> expose this limit as configurable option to the administrator.</t>
        <t>To prevent resource exhaustion by partially opening a large number of (D)TLS connections, RadSec servers <bcp14>SHOULD</bcp14> have a timeout on partially open (D)TLS connections.
We recommend a limit of a few seconds, implementations <bcp14>SHOULD</bcp14> expose this timeout as configurable option to the administrator.
If a (D)TLS connection is not established within this timeframe, it is likely that this connection is either not from a valid client, or it is from a valid client with unreliable connectivity.
In contrast, an established connection might not send packets for longer periods of time, but since the endpoints are mutually authenticated, leaving a connection available does not pose a problem other than the problems mentioned before.</t>
        <t>A different means of prevention is IP filtering.
If the IP range that the server expects clients to connect from is restricted, then the server can simply reject or drop all connection attempts from outside those ranges.
If every RadSec client is configured with an IP range, then the server does not even have to perform a partial TLS handshake if the connection attempt comes from outside every allowed range, but can instead immediately drop the connection.
To perform this lookup efficiently, RadSec servers <bcp14>SHOULD</bcp14> keep a list of the accumulated permitted IP address ranges, individually for each transport.</t>
      </section>
      <section anchor="tls-connection-lifetime-and-key-rotation">
        <name>TLS Connection Lifetime and Key Rotation</name>
        <t>The RadSec TLS connections may have a long lifetime.
Especially when dealing with high volume of RADIUS traffic, the encryption keys have to be rotated regularly, depending on both the amount of data which was transferred, and on the encryption method.
See <xref section="5.5" sectionFormat="comma" target="RFC8446"/> and <xref target="I-D.irtf-cfrg-aead-limits"/> for more information.</t>
        <t>Implementers <bcp14>SHOULD</bcp14> be aware of this issue and determine whether the underlying TLS library automatically rotates encryption keys or not.
If the underlying TLS library does not perform the rotation automatically, RadSec implementations <bcp14>SHOULD</bcp14> perform this rotation manually, either by a key update of the existing TLS connection or by closing the TLS connection and opening a new one.</t>
      </section>
      <section anchor="connection-closing-on-malformed-packets">
        <name>Connection Closing On Malformed Packets</name>
        <t>If malformed RADIUS packets are received or the packets fail the authenticator checks, this specification requires that the (D)TLS connection be closed.
The reason is that the connection is expected to be used for transport of RADIUS packets only.</t>
        <t>Any non-RADIUS traffic on that connection means the other party is misbehaving and is potentially a security risk.
Similarly, any RADIUS traffic failing authentication vector or Message-Authenticator validation means that two parties do not have a common shared secret.
Since the shared secret is static, this again means the other party is misbehaving.</t>
        <t>On the other hand, we want to avoid situations in which a third party can trigger such a connection closure, e.g., by sending a RADIUS packet with attributes the RadSec server does not understand.
If a RadSec endpoint would close the connection when receiving such packets, an attacker could repeatedly send such packets to disrupt the RadSec connection.
Leaving the connection open and ignoring unknown attributes also ensures forward compatibility.</t>
      </section>
      <section anchor="migrating-from-radiusudp-to-radsec">
        <name>Migrating from RADIUS/UDP to RadSec</name>
        <t>Since RADIUS/UDP security relies on the MD5 algorithm, which is considered insecure, using RADIUS/UDP over insecure networks is risky.
We therefore recommend to migrate from RADIUS/UDP to RadSec.
Within this migration process, however, there are a few items that need to be considered by administrators.</t>
        <t>Firstly, administrators may be tempted to simply migrate from RADIUS/UDP to RadSec with (D)TLS-PSK and reuse the RADIUS shared secret as (D)TLS-PSK.
While this may seem like an easy way to upgrade RADIUS/UDP to RadSec, the cryptographic problems with the RADIUS/UDP shared secret render the shared secret potentially compromised.
Using a potentially compromised shared secret as TLS-PSK compromises the whole TLS connection.
Therefore, as defined in <xref section="4.1.3" sectionFormat="comma" target="RFC9813"/>, any shared secret used with RADIUS/UDP before <bcp14>MUST NOT</bcp14> be used with RadSec and (D)TLS-PSK.
We also strongly recommend implementers to not reuse the configuration option for the RADIUS/UDP shared secret in the existing user interfaces for the (D)TLS-PSK too.
Instead, these should be separate input fields in order to prevent accidental reuse of an existing shared secret when switching to (D)TLS-PSK.</t>
        <t>When upgrading from RADIUS/UDP to RadSec, there may be a period of time, where the connection between client and server is configured for both transport profiles.
If the old RADIUS/UDP configuration is left configured, but not used in normal operation, e.g., due to a fail-over configuration that prefers RadSec, an attacker could disrupt the RadSec communication and force a downgrade to RADIUS/UDP.
To prevent this it is <bcp14>RECOMMENDED</bcp14> that, when the migration to RadSec is completed, the RADIUS/UDP configuration is removed.
RadSec clients <bcp14>MUST NOT</bcp14> fall back to RADIUS/UDP if the RadSec communication fails, unless explicitly configured this way.</t>
        <t>Special considerations apply for clients behind a NAT, where some clients use RADIUS/UDP and others use RadSec.
A RADIUS server might not be able to detect if a RadSec client falls back to RADIUS/UDP; they will appear with the same source IP address to the server and use the same shared secret.
It is therefore <bcp14>NOT RECOMMENDED</bcp14> to use both RADIUS/UDP and RadSec clients behind a NAT at the same time.</t>
      </section>
      <section anchor="client-subsystems">
        <name>Client Subsystems</name>
        <t>Many traditional clients treat RADIUS as subsystem-specific.
That is, each subsystem on the client has its own RADIUS implementation and configuration.
These independent implementations work for simple systems, but break down for RADIUS when multiple servers, fail-over and load-balancing are required.
With (D)TLS enabled, these problems are expected to get worse.</t>
        <t>We therefore recommend in these situations the client use a local proxy that arbitrates all RADIUS traffic between the client and all servers.
This proxy will encapsulate all knowledge about servers, including security policies, fail-over and load-balancing.
All client subsystems should communicate with this local proxy, perhaps via an internal API, or over a loopback address.</t>
        <t>The benefit of this configuration is that there is one place in the client that arbitrates all RADIUS traffic.
So long as the proxy implements RadSec, other subsystems that do not implement RadSec do not need to be updated to support it.  They can instead leverage the functionality of the local proxy to leverage the benefits of (D)TLS.
(D)TLS connections opened by the proxy can remain open for a long period of time, even when client subsystems are restarted.
The proxy can be configured to do RADIUS/UDP to some servers and RadSec to others.</t>
        <t>Delegation of responsibilities and separation of tasks are important security principles.
By moving all RadSec knowledge to a (D)TLS-aware proxy, security analysis becomes simpler, and enforcement of correct security becomes easier.</t>
      </section>
    </section>
    <section anchor="design_decisions">
      <name>Design Decisions</name>
      <t>Many of the design decisions of RADIUS/TLS and RADIUS/DTLS can be found in <xref target="RFC6614"/> and <xref target="RFC7360"/>.
This section will discuss the rationale behind significant changes from the experimental specification.</t>
      <section anchor="design_supported_transports">
        <name>Mandatory-to-implement transports</name>
        <t>With the merging of RADIUS/TLS and RADIUS/DTLS the question of mandatory-to-implement transports arose.
In order to avoid incompatibilities, there were two possibilities: Either mandate one of the transports for all implementations or mandate the implementation of both transports for either the server or the client.
As of the time writing, RADIUS/TLS is widely adapted for some use cases.
However, TLS has some serious drawbacks when used for RADIUS transport.
Especially the sequential nature of the connection and the connected issues like head-of-line blocking could create problems.</t>
        <t>Therefore, the decision was made that RADIUS servers must implement both transports.
For RADIUS clients, that may run on more constrained hardware, implementers can choose to implement only the transport that is better suited for their needs.</t>
      </section>
      <section anchor="design_trust_profiles">
        <name>Mandatory-to-implement trust profiles</name>
        <t><xref target="RFC6614"/> mandates the implementation of the trust profile "certificate with PKIX trust model" for both clients and servers.
The experience of the deployment of RADIUS/TLS as specified in <xref target="RFC6614"/> has shown that most actors still rely on RADIUS/UDP.
Since dealing with certificates can create a lot of issues, both for implementers and administrators, for the re-specification we wanted to create an alternative to insecure RADIUS transports like RADIUS/UDP that can be deployed easily without much additional administrative overhead.</t>
        <t>As with the supported transports, the assumption is that RADIUS servers are less constrained than RADIUS clients.
Since some client implementations already support using certificates for mutual authentication and there are several use cases, where pre-shared keys are not usable (e.g., a dynamic federation with changing members), the decision was made that, analog to the supported transports, RadSec servers must implement both certificates with PKIX trust model and TLS-PSK as means of mutual authentication.
RadSec clients again can choose which method is better suited for them, but must, for compatibility reasons, implement at least one of the two.</t>
      </section>
      <section anchor="design_changes_in_tls">
        <name>Changes in application of TLS</name>
        <t>The original specification of RADIUS/TLS does not forbid the usage of compression in the TLS layer.
As per <xref section="3.3" sectionFormat="comma" target="RFC9325"/>, compression should not be used due to the possibility of compression-related attacks, unless the application protocol is proven to be not open to such attacks.
Since some attributes of the RADIUS packets within the TLS tunnel contain values that an attacker could at least partially choose (i.e., username, MAC address or EAP message), there is a possibility for compression-related attacks, that could potentially reveal data in other RADIUS attributes through length of the TLS record.
To circumvent this attack, this specification forbids the usage of TLS compression.</t>
        <t>Since usage of 0-RTT may have implications on forward secrecy and replay protection, this specification prohibits its use.
Protection against replay attacks is necessary, since a replayed RADIUS packet in the early data would be processed as new packet.
The additional effort that is needed to protect 0-RTT data against replays outweighs the benefit of the reduced processing time.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Upon approval, IANA should update the Reference and the Assignment Notes to radsec in the Service Name and Transport Protocol Port Number Registry:</t>
      <t>For TCP:
* Service Name: radsec
* Port Number: 2083
* Transport Protocol: tcp
* Description: Secure RADIUS Service
* Assignment notes: The TCP port 2083 was already previously assigned by IANA for "RadSec", an early implementation of RADIUS/TLS, prior to issuance of the experimental RFC 6614.
  [RFCXXXX] updates RFC 6614 (RADIUS/TLS).
* Reference: [RFCXXXX] (this document)</t>
      <t>For UDP:
* Service Name: radsec
* Port Number: 2083
* Transport Protocol: udp
* Description: Secure RADIUS Service
* Assignment notes: The UDP port 2083 was already previously assigned by IANA for "RadSec", an early implementation of RADIUS/DTLS, prior to issuance of the experimental RFC 7360. [RFCXXXX] updates RFC 7360 (RADIUS/DTLS).
* Reference: [RFCXXXX] (this document)</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC2865">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="S. Willens" initials="S." surname="Willens"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying authentication, authorization, and configuration information between a Network Access Server which desires to authenticate its links and a shared Authentication Server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2865"/>
          <seriesInfo name="DOI" value="10.17487/RFC2865"/>
        </reference>
        <reference anchor="RFC2866">
          <front>
            <title>RADIUS Accounting</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying accounting information between a Network Access Server and a shared Accounting Server. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2866"/>
          <seriesInfo name="DOI" value="10.17487/RFC2866"/>
        </reference>
        <reference anchor="RFC5176">
          <front>
            <title>Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="M. Chiba" initials="M." surname="Chiba"/>
            <author fullname="G. Dommety" initials="G." surname="Dommety"/>
            <author fullname="M. Eklund" initials="M." surname="Eklund"/>
            <author fullname="D. Mitton" initials="D." surname="Mitton"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a currently deployed extension to the Remote Authentication Dial In User Service (RADIUS) protocol, allowing dynamic changes to a user session, as implemented by network access server products. This includes support for disconnecting users and changing authorizations applicable to a user session. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5176"/>
          <seriesInfo name="DOI" value="10.17487/RFC5176"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9325">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="November" year="2022"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
              <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="9325"/>
          <seriesInfo name="DOI" value="10.17487/RFC9325"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
        <reference anchor="RFC7585">
          <front>
            <title>Dynamic Peer Discovery for RADIUS/TLS and RADIUS/DTLS Based on the Network Access Identifier (NAI)</title>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="M. McCauley" initials="M." surname="McCauley"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document specifies a means to find authoritative RADIUS servers for a given realm. It is used in conjunction with either RADIUS over Transport Layer Security (RADIUS/TLS) or RADIUS over Datagram Transport Layer Security (RADIUS/DTLS).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7585"/>
          <seriesInfo name="DOI" value="10.17487/RFC7585"/>
        </reference>
        <reference anchor="RFC3579">
          <front>
            <title>RADIUS (Remote Authentication Dial In User Service) Support For Extensible Authentication Protocol (EAP)</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun"/>
            <date month="September" year="2003"/>
            <abstract>
              <t>This document defines Remote Authentication Dial In User Service (RADIUS) support for the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication mechanisms. In the proposed scheme, the Network Access Server (NAS) forwards EAP packets to and from the RADIUS server, encapsulated within EAP-Message attributes. This has the advantage of allowing the NAS to support any EAP authentication method, without the need for method- specific code, which resides on the RADIUS server. While EAP was originally developed for use with PPP, it is now also in use with IEEE 802. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3579"/>
          <seriesInfo name="DOI" value="10.17487/RFC3579"/>
        </reference>
        <reference anchor="RFC7930">
          <front>
            <title>Larger Packets for RADIUS over TCP</title>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The RADIUS-over-TLS experiment described in RFC 6614 has opened RADIUS to new use cases where the 4096-octet maximum size limit of a RADIUS packet proves problematic. This specification extends the RADIUS-over-TCP experiment (RFC 6613) to permit larger RADIUS packets. This specification compliments other ongoing work to permit fragmentation of RADIUS authorization information. This document registers a new RADIUS code, an action that required IESG approval.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7930"/>
          <seriesInfo name="DOI" value="10.17487/RFC7930"/>
        </reference>
        <reference anchor="RFC3539">
          <front>
            <title>Authentication, Authorization and Accounting (AAA) Transport Profile</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Wood" initials="J." surname="Wood"/>
            <date month="June" year="2003"/>
            <abstract>
              <t>This document discusses transport issues that arise within protocols for Authentication, Authorization and Accounting (AAA). It also provides recommendations on the use of transport by AAA protocols. This includes usage of standards-track RFCs as well as experimental proposals. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3539"/>
          <seriesInfo name="DOI" value="10.17487/RFC3539"/>
        </reference>
        <reference anchor="RFC5997">
          <front>
            <title>Use of Status-Server Packets in the Remote Authentication Dial In User Service (RADIUS) Protocol</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document describes a deployed extension to the Remote Authentication Dial In User Service (RADIUS) protocol, enabling clients to query the status of a RADIUS server. This extension utilizes the Status-Server (12) Code, which was reserved for experimental use in RFC 2865. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5997"/>
          <seriesInfo name="DOI" value="10.17487/RFC5997"/>
        </reference>
        <reference anchor="RFC5080">
          <front>
            <title>Common Remote Authentication Dial In User Service (RADIUS) Implementation Issues and Suggested Fixes</title>
            <author fullname="D. Nelson" initials="D." surname="Nelson"/>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="December" year="2007"/>
            <abstract>
              <t>This document describes common issues seen in Remote Authentication Dial In User Service (RADIUS) implementations and suggests some fixes. Where applicable, ambiguities and errors in previous RADIUS specifications are clarified. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5080"/>
          <seriesInfo name="DOI" value="10.17487/RFC5080"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6614">
          <front>
            <title>Transport Layer Security (TLS) Encryption for RADIUS</title>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="M. McCauley" initials="M." surname="McCauley"/>
            <author fullname="S. Venaas" initials="S." surname="Venaas"/>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <date month="May" year="2012"/>
            <abstract>
              <t>This document specifies a transport profile for RADIUS using Transport Layer Security (TLS) over TCP as the transport protocol. This enables dynamic trust relationships between RADIUS servers. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6614"/>
          <seriesInfo name="DOI" value="10.17487/RFC6614"/>
        </reference>
        <reference anchor="RFC7360">
          <front>
            <title>Datagram Transport Layer Security (DTLS) as a Transport Layer for RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="September" year="2014"/>
            <abstract>
              <t>The RADIUS protocol defined in RFC 2865 has limited support for authentication and encryption of RADIUS packets. The protocol transports data in the clear, although some parts of the packets can have obfuscated content. Packets may be replayed verbatim by an attacker, and client-server authentication is based on fixed shared secrets. This document specifies how the Datagram Transport Layer Security (DTLS) protocol may be used as a fix for these problems. It also describes how implementations of this proposal can coexist with current RADIUS systems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7360"/>
          <seriesInfo name="DOI" value="10.17487/RFC7360"/>
        </reference>
        <reference anchor="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest"/>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. This memo provides information for the Internet community. It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC9765">
          <front>
            <title>RADIUS/1.1: Leveraging Application-Layer Protocol Negotiation (ALPN) to Remove MD5</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This document defines Application-Layer Protocol Negotiation (ALPN) extensions for use with RADIUS/TLS and RADIUS/DTLS. These extensions permit the negotiation of an application protocol variant of RADIUS called "RADIUS/1.1". No changes are made to RADIUS/UDP or RADIUS/TCP. The extensions allow the negotiation of a transport profile where the RADIUS shared secret is no longer used, and all MD5-based packet authentication and attribute obfuscation methods are removed.</t>
              <t>This document updates RFCs 2865, 2866, 5176, 6613, 6614, and 7360.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9765"/>
          <seriesInfo name="DOI" value="10.17487/RFC9765"/>
        </reference>
        <reference anchor="RFC4033">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System. This document introduces these extensions and describes their capabilities and limitations. This document also discusses the services that the DNS security extensions do and do not provide. Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4033"/>
          <seriesInfo name="DOI" value="10.17487/RFC4033"/>
        </reference>
        <reference anchor="RFC9813">
          <front>
            <title>Operational Considerations for Using TLS Pre-Shared Keys (TLS-PSKs) with RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="July" year="2025"/>
            <abstract>
              <t>This document provides implementation and operational considerations for using TLS Pre-Shared Keys (TLS-PSKs) with RADIUS/TLS (RFC 6614) and RADIUS/DTLS (RFC 7360). The purpose of the document is to help smooth the operational transition from the use of RADIUS/UDP to RADIUS/TLS.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="243"/>
          <seriesInfo name="RFC" value="9813"/>
          <seriesInfo name="DOI" value="10.17487/RFC9813"/>
        </reference>
        <reference anchor="RFC5077">
          <front>
            <title>Transport Layer Security (TLS) Session Resumption without Server-Side State</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="H. Zhou" initials="H." surname="Zhou"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a mechanism that enables the Transport Layer Security (TLS) server to resume sessions and avoid keeping per-client session state. The TLS server encapsulates the session state into a ticket and forwards it to the client. The client can subsequently resume a session using the obtained ticket. This document obsoletes RFC 4507. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5077"/>
          <seriesInfo name="DOI" value="10.17487/RFC5077"/>
        </reference>
        <reference anchor="I-D.dekok-protocol-error">
          <front>
            <title>Standardising Protocol-Error</title>
            <author fullname="Alan DeKok" initials="A." surname="DeKok">
              <organization>InkBridge Networks</organization>
            </author>
            <date day="24" month="June" year="2025"/>
            <abstract>
              <t>   We extend and standardise the Protocol-Error packet Code, first
   defined in RFC 7930 for the Remote Authentication Dial In User
   Service (RADIUS) protocol.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dekok-protocol-error-00"/>
        </reference>
        <reference anchor="RFC9293">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="RFC6520">
          <front>
            <title>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension</title>
            <author fullname="R. Seggelmann" initials="R." surname="Seggelmann"/>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="M. Williams" initials="M." surname="Williams"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes the Heartbeat Extension for the Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols.</t>
              <t>The Heartbeat Extension provides a new protocol for TLS/DTLS allowing the usage of keep-alive functionality without performing a renegotiation and a basis for path MTU (PMTU) discovery for DTLS. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6520"/>
          <seriesInfo name="DOI" value="10.17487/RFC6520"/>
        </reference>
        <reference anchor="RFC8900">
          <front>
            <title>IP Fragmentation Considered Fragile</title>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="O. Troan" initials="O." surname="Troan"/>
            <author fullname="F. Gont" initials="F." surname="Gont"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes IP fragmentation and explains how it introduces fragility to Internet communication.</t>
              <t>This document also proposes alternatives to IP fragmentation and provides recommendations for developers and network operators.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="230"/>
          <seriesInfo name="RFC" value="8900"/>
          <seriesInfo name="DOI" value="10.17487/RFC8900"/>
        </reference>
        <reference anchor="RFC2869">
          <front>
            <title>RADIUS Extensions</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="W. Willats" initials="W." surname="Willats"/>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes additional attributes for carrying authentication, authorization and accounting information between a Network Access Server (NAS) and a shared Accounting Server using the Remote Authentication Dial In User Service (RADIUS) protocol described in RFC 2865 and RFC 2866. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2869"/>
          <seriesInfo name="DOI" value="10.17487/RFC2869"/>
        </reference>
        <reference anchor="RFC9257">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
        <reference anchor="I-D.ietf-tls-keylogfile">
          <front>
            <title>The SSLKEYLOGFILE Format for TLS</title>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="9" month="June" year="2025"/>
            <abstract>
              <t>   A format that supports logging information about the secrets used in
   a TLS connection is described.  Recording secrets to a file in
   SSLKEYLOGFILE format allows diagnostic and logging tools that use
   this file to decrypt messages exchanged by TLS endpoints.  This
   format is intended for use in systems where TLS only protects test
   data.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-11"/>
        </reference>
        <reference anchor="RFC6613">
          <front>
            <title>RADIUS over TCP</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="May" year="2012"/>
            <abstract>
              <t>The Remote Authentication Dial-In User Server (RADIUS) protocol has, until now, required the User Datagram Protocol (UDP) as the underlying transport layer. This document defines RADIUS over the Transmission Control Protocol (RADIUS/TCP), in order to address handling issues related to RADIUS over Transport Layer Security (RADIUS/TLS). It permits TCP to be used as a transport protocol for RADIUS only when a transport layer such as TLS or IPsec provides confidentiality and security. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6613"/>
          <seriesInfo name="DOI" value="10.17487/RFC6613"/>
        </reference>
      </references>
    </references>
    <?line 1045?>

<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 now references <xref target="RFC9325"/> for recommended TLS versions, which mandates TLS 1.2 and recommends TLS 1.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 <xref target="RFC9325"/>.</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 and retries, 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 Wierenga.</t>
      <t>Thanks to Arran Curdbard-Bell for text around keepalives and the Status-Server watchdog algorithm.</t>
      <t>Thanks to Alan DeKok for his constant review of this document over its whole process and his many text contributions, like text around forwarding issues between TCP and UDP based transports.</t>
      <t>Thanks to the following people for their feedback and suggested text changes: Alexander Clouter, Mark Donnelly, Fabian Mauchle, Valery Smyslov, Heikki Vatiainen, Paul Wouters.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+29/XLbWJYn+D+fAquMmJI6SJa/M+2emW6VZHd6y3ZqLWdl
VUxMZIMkSKEEAmwAlMyqyn2W+XdeY/fF9nzfcy9A2TlTPRuxsRUdnRYJXtyP
c8/3+Z3ZbDYp6r7sD68mWXb9+t2bV9nJf/n45uKP8L//ejKBb6oCPvqYr66L
5avs4/nl2x+vs+auaLNPbV53u6bts3f5Af6GB/YtjJSdfnp3fZbl9Sq7zPt8
0+bbB569xIdPJvli0RZ3x9707pqHg3+cTJZ5X2ya9vAq6/rVZNIsuqYq+qJ7
lb148fjZNPv26YtHk8mqWdb5Fua+avN1PyuLfj1r81Xxucf/lPtu1VfdbFF2
s8fPJ91+sS27rmzq/rCD37x9/enNBGbzdJK3RQ6z0vmeTO6b9nbTNvsdzpXn
+PqPn4oaf9ydTG6LAzyxgt2cyRLwXzDvyV1R7wvc5Qd+nWX8/pOf4C1lvcn+
BZ/Fz7d5WcHnvIJ/xtXMm3ZzMpnk+/6maXHcWcYL/t/zevamLVZFW95mH8ti
eVu0HXyfZfCLV9llse+75U3RZW+aFv6xrzddXfR/yf6W/UvRbvM6+5D3MJ28
yj4WXZG3yxva/Ner/ZK+yD4UPe4CDdn1bVH0r7LzqvgMTxXtrsphrMf05bJZ
wXweP3r87Xf8N9JZ9ruircpaHtjXPZ4kv/lAHxa81lZm/s+rdT1fFfSVUsnl
mw/0N5zJq+z+/n5uz+gmvM/bDZxdn13sq6qow/Kv8rKuiq4zEoyW8Sz7vtzc
ZNf05zS73pd9kT159MJN/wNQ8U12Xq+QNKfZ+3O31EePv3v2PF7Zj9fnflVb
mdc/72Qes07mMV82W3qybfDKFauyb1q3ouu+WMPh/FTWfdGG9bxp6hUfC5xW
X9Q5nKP+6w1Mgr+MFvlkmuVEjdmqyKrf/FiXsJKu7P/v/+6W8uzpi+du1a+B
Umbdvp2dV38p+r6IF/lu/7nYLpp9u/Fr7WjG83ua8T+3PKl5tY+O8uPr60+v
P5zHx+mendQNkEYPU3w1mZT12v01mc1mMA4sK1/2k8mnm7LL4Nrvt8DRYGnr
sgYi743z7NpmXcKWZzBG1u7rGi/YvxNDgx2uquYe39DfFBmdcUEjtEVV5ouq
cBNr1jqNLRBEvim6+YQ/+K1yPvnzkv6GkZYNUPUS96E6wJDrooULn/VNlncZ
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

-->

</rfc>
