<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusdtls-bis-10" 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="RADIUS over (D)TLS">(Datagram) Transport Layer Security ((D)TLS) Encryption for RADIUS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-radext-radiusdtls-bis-10"/>
    <author initials="J.-F." surname="Rieckers" fullname="Jan-Frederik Rieckers">
      <organization abbrev="DFN">Deutsches Forschungsnetz | German National Research and Education Network</organization>
      <address>
        <postal>
          <street>Alexanderplatz 1</street>
          <city>Berlin</city>
          <code>10178</code>
          <country>Germany</country>
        </postal>
        <email>rieckers@dfn.de</email>
        <uri>www.dfn.de</uri>
      </address>
    </author>
    <author initials="S." surname="Winter" fullname="Stefan Winter">
      <organization abbrev="RESTENA">Fondation Restena | Restena Foundation</organization>
      <address>
        <postal>
          <street>2, avenue de l'Université</street>
          <city>Esch-sur-Alzette</city>
          <code>4365</code>
          <country>Luxembourg</country>
        </postal>
        <email>stefan.winter@restena.lu</email>
        <uri>www.restena.lu</uri>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>Security</area>
    <workgroup>RADIUS EXTensions</workgroup>
    <keyword>RADIUS</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 48?>

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-aead-limits-10"/>
        </reference>
      </references>
    </references>
    <?line 945?>

<section anchor="lessons_learned">
      <name>Lessons learned from deployments of the Experimental <xref target="RFC6614"/></name>
      <t>There are at least two major (world-scale) deployments of <xref target="RFC6614"/>.
This section will discuss lessons learned from these deployments, that influenced this document.</t>
      <section anchor="eduroam">
        <name>eduroam</name>
        <t>eduroam is a globally operating Wi-Fi roaming consortium exclusively for persons in Research and Education. For an extensive background on eduroam and its authentication fabric architecture, refer to <xref target="RFC7593"/>.</t>
        <t>Over time, more than a dozen out of 100+ national branches of eduroam used RADIUS/TLS in production to secure their country-to-country RADIUS proxy connections. This number is big enough to attest that the protocol does work, and scales. The number is also low enough to wonder why RADIUS/UDP continued to be used by a majority of country deployments despite its significant security issues.</t>
        <t>Operational experience reveals that the main reason is related to the choice of PKIX certificates for securing the proxy interconnections. Compared to shared secrets, certificates are more complex to handle in multiple dimensions:</t>
        <ul spacing="normal">
          <li>
            <t>Lifetime: PKIX certificates have an expiry date, and need administrator attention and expertise for their renewal</t>
          </li>
          <li>
            <t>Validation: The validation of a certificate (both client and server) requires contacting a third party to verify the revocation status. This either takes time during session setup (OCSP checks) or requires the presence of a fresh CRL on the server - this in turn requires regular update of that CRL.</t>
          </li>
          <li>
            <t>Issuance: PKIX certificates carry properties in the Subject and extensions that need to be vetted. Depending on the CA policy, a certificate request may need significant human intervention to be verified. In particular, the authorization of a requester to operate a server for a particular NAI realm needs to be verified. This rules out public "browser-trusted" CAs; eduroam is operating a special-purpose CA for eduroam RADIUS/TLS purposes.</t>
          </li>
          <li>
            <t>Automatic failure over time: CRL refresh and certificate renewal must be attended to regularly. Failure to do so leads to failure of the authentication service. Among other reasons, employee churn with incorrectly transferred or forgotten responsibilities is a risk factor.</t>
          </li>
        </ul>
        <t>It appears that these complexities often outweigh the argument of improved security; and a fallback to RADIUS/UDP is seen as the more appealing option.</t>
        <t>It can be considered an important result of the experiment in <xref target="RFC6614"/> that providing less complex ways of operating RADIUS/TLS are required. The more thoroughly specified provisions in the current document towards TLS-PSK and raw public keys are a response to this insight.</t>
        <t>On the other hand, using RADIUS/TLS in combination with Dynamic Discovery as per <xref target="RFC7585"/> necessitates the use of PKIX certificates. So, the continued ability to operate with PKIX certificates is also important and cannot be discontinued without sacrificing vital functionality of large roaming consortia.</t>
      </section>
      <section anchor="wireless-broadband-alliances-openroaming">
        <name>Wireless Broadband Alliance's OpenRoaming</name>
        <t>OpenRoaming is a globally operating Wi-Fi roaming consortium for the general public, operated by the Wireless Broadband Alliance (WBA). With its (optional) settled usage of hotspots, the consortium requires both RADIUS authentication as well as RADIUS accounting.</t>
        <t>The consortium operational procedures were defined in the late 2010s when <xref target="RFC6614"/> and <xref target="RFC7585"/> were long available. The consortium decided to fully base itself on these two RFCs.</t>
        <t>In this architecture, using PSKs or raw public keys is not an option. The complexities around PKIX certificates as discussed in the previous section are believed to be controllable: the consortium operates its own special-purpose CA and can rely on a reliable source of truth for operator authorization (becoming an operator requires a paid membership in WBA); expiry and revocation topics can be expected to be dealt with as high-priority because of the monetary implications in case of infrastructure failure during settled operation.</t>
      </section>
      <section anchor="participating-in-more-than-one-roaming-consortium">
        <name>Participating in more than one roaming consortium</name>
        <t>It is possible for a RADIUS/TLS (home) server to participate in more than one roaming consortium, i.e. to authenticate its users to multiple clients from distinct consortia, which present client certificates from their respective consortium's CA; and which expect the server to present a certificate from the matching CA.</t>
        <t>The eduroam consortium has chosen to cooperate with (the settlement-free parts of) OpenRoaming to allow eduroam users to log in to (settlement-free) OpenRoaming hotspots.
eduroam RADIUS/TLS servers thus may be contacted by OpenRoaming clients expecting an OpenRoaming server certificate, and by eduroam clients expecting an eduroam server certificate.
It is therefore necessary to decide on the certificate to present during TLS session establishment. To make that decision, the availability of Trusted CA Indication in the client TLS message is important.
It can be considered a result of the experiment in <xref target="RFC6614"/> that Trusted CA Indication can be an asset for inter-connectivity of multiple roaming consortia.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to the original authors of RFC 6613, RFC 6614 and RFC 7360: Alan DeKok, Stefan Winter, Mike McCauley, Stig Venaas and Klaas Vierenga.</t>
      <t>Thanks to Arran Curdbard-Bell for text around keepalives and the Status-Server watchdog algorithm.</t>
      <t>Thanks to Alan DeKok for his constant review of this document over its whole process and his many text contributions, like text around forwarding issues between TCP and UDP based transports.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA72963LjWJIm+J9PgVWZbUuzJDPumRE9M91KKaJTm3HRhiIq
q21sLBskQQklEGADoBSsytxnmb/zGrsvtn4/fg5AReRu25bNdIZI8OBc/Pj1
c/fZbDYp6r7s968mWXb1+u2bV9nRf/v45uwv8L//fjSBb6oCPjo+z/v8us03
J9mnNq+7bdP22dt8X7TZVbHctTBAdnx8fvLp7dVJ9rpetvttXzZ1tm7a7OPp
+cXnq6NJvli0xR0Mxh9kzR38mn9zNFnmfXHdtPtXWdevJpNm0TVV0Rfdq+zF
i8fPptn3T188mkxWzbLONzChVZuv+1lZ9OtZm6+KLz3+p9x1q77qZouymz1+
NOl2i03ZdTCNfr+F31y8/vRmAu9/OsnbIod56MyPJvdNe3vdNrttmN3rv3wq
avxxdzS5LfbwxAq2aCarwX/BvCd3Rb0rcOse+HWW8fuPfoG3lPV19i/4LH6+
ycsKPucV/DOuZt6010eTSb7rb5oWx51lvOD/Pa9nb9piVbTlbfaxLJa3RdvB
91kGv3iVnRe7vlveFF32pmnhH7v6uquL/m/Zb9m/FO0mr7P3OR5IXmUfi67I
2+VNlter7PVqt6QvsvdFj7tAQ3Z9WxT9q+y0Kr7AU0W7rXIY6zF9uWxWMJ/H
jx5//wP/jcST/Vi0VVnLA7u6x5PkN+/pw4LX2srM/3m1ruergr5Sujh/857+
hjN5ld3f38/tGd2Eq75Yw1J+Keu+aMPi3zT1ihcBa+uLOodV67/ewGT4y2hl
T6ZZTmeXrYqs+ofPdQnE2JX9//0/3RqfPX3x3C3xNezrrNu1s9Pqb0XfF/Fi
3+6+FJtFs2uv/Xo7mvH8nmb8zy1Pal7tooV/fH316fX703jx7tlJ3cBG9jDF
V5NJWa/dX5PZbAbjwLLyZT+ZfLopuwwuyW4DlzrrtsWyXJdAFHnW263dts26
rAp3NbNdh2R5+GLTrabr+unsEvY8U27wwG/Ow48+n19meZf1N0U8jb5ZNtWc
Jw1LXVQF/pd5B8wHn5cJws/W63KJo9wXVYX/Xe2BJuCjvt11fdYWFR1yd1Nu
u2wBtFwUtf66K1o8XXxToZsiVG98ht5WfNnC/cK9g3sSPdhlJQz35oy4UXbM
A39HS8RrhN8gh7Jvzu2rZbNZlDW/YIOj9LjcaPA5H+OmXK2qYjL5+6u/roFy
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
kLgMnG3FgD3+SZewl7W/3ws+zdAuIZZDHN0/YFNrVATDZsQUG8JriIR9/gSL
miUFsORhj+vW2RukHwutuPBKUo/UlAMt0h3VSSJWIy2luaWJi7iVhVwIQ+Rr
oNE3ExlWD0ZVz7ohUnyBMRTcf++h/oo+2hftxIgvcAhJpgj9oExBlC59aRE7
DabtrRGklIshy79r8B7o+/Wi4llMR6YuUDBkIVpapaJCgYf6P0b9UlKMKTY6
5mwKXyVMGzlL+wKS8wVmZH5zm1tU35iIz6Jm8RSWVwL/NW4kz1DNkYxCxFYU
rriLsKsoZzJNeKGwvs4haVgvwrsrzCqTerfcyV60YakzgfZb4m/hbyRgaDXc
tGl4BFFM3tzmZVekUG3dN2uRpWAd+d4jCEQENW35N8FxcCMdQfrgABRCx2aZ
UuZI1DxZjssT9i4x9qpoSupDbySX6fKmLO6CAS1jm9PI5mPqLyVN2YSI7Q+O
OVn9kFxZe6MpKdDCdQqBK0Uo0VVogDRI0V8X94JIj1TU5JQkXCStYbznuJOi
Qs7PK2unnUe7UdwmETrkktuupAUxQ55NVMNg6hJ/KcEVvZErFhBJMrDLzVDX
sbHveyMgipwJUJFyxDqE2ZEVwRObynWgjjtaj1WbqlE8htxgZS3Z3DeFC2EO
Uhyw28w0OwKWM+ubGfznyBNUE9E+u2LLqKfgSkNCo9Phelx9u+soHMrYeypO
oAUwUOyx1iIvcdW8KPOOcbQJOkNiyyT9ZaGkp+7ZqpfXzycfamutJI5LzuaT
ovtdd48xYG1dswudQKRLNE7yNK5ZcWm+Iawrwi2ETi9leLlEOzgBFIjMeGJ0
Gt1vV9TFtkmbdo3IYalFBHMjBEqp3Y1YinEFAlhOgBMM66bwmotV0h8YuxQ7
LzBWt5wt9jPth8ytgpODteaXwfOuaDdfODSeA+qg8YWiw8N3cuZ773vLlz7i
4YUlBYqDAeDUxgi0vC6rIsYssxMDgc9dU+3oJC3YIZIzlD3iPJOUJUW1hKNL
bk28pFnF6Cm45nX3N1jCiQ7MRSxRD78G0mfW7WbaWayAy3lRB2UBpPrqApzM
EZ1XVD1oUN04bPgAchNhapVtdj6QQ5fLMo+kVpZTCdmcgwvZrvMlHUP8fajW
oddAJC0qaBTGokkDNyjFlsbTmmarfZ1v0OdmenI+xPV8//yH56A0uwqyYqy8
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
1IW95kbNXPXNAxcm/w8kQiSP+z8BAA==

-->

</rfc>
