<?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.23 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusdtls-bis-04" category="std" consensus="true" submissionType="IETF" obsoletes="6614, 7360" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.27.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-04"/>
    <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="February" day="21"/>
    <area>Security</area>
    <workgroup>RADIUS EXTensions</workgroup>
    <keyword>RADIUS</keyword>
    <keyword>TLS</keyword>
    <abstract>
      <?line 48?>

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

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

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-radext-tls-psk-12"/>
        </reference>
        <reference anchor="I-D.ietf-tls-keylogfile">
          <front>
            <title>The SSLKEYLOGFILE Format for TLS</title>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="4" month="February" year="2025"/>
            <abstract>
              <t>   A format that supports the logging information about the secrets used
   in a TLS connection is described.  Recording secrets to a file in
   SSLKEYLOGFILE format allows diagnostic and logging tools that use
   this file to decrypt messages exchanged by TLS endpoints.

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

<section anchor="lessons_learned">
      <name>Lessons learned from deployments of the Experimental <xref target="RFC6614"/></name>
      <t>There are at least two major (world-scale) deployments of <xref target="RFC6614"/>.
This section will discuss lessens learned from these deployments, that influenced this document.</t>
      <section anchor="eduroam">
        <name>eduroam</name>
        <t>eduroam is a globally operating Wi-Fi roaming consortium exclusively for persons in Research and Education. For an extensive background on eduroam and its authentication fabric architecture, refer to <xref target="RFC7593"/>.</t>
        <t>Over time, more than a dozen out of 100+ national branches of eduroam used RADIUS/TLS in production to secure their country-to-country RADIUS proxy connections. This number is big enough to attest that the protocol does work, and scales. The number is also low enough to wonder why RADIUS/UDP continued to be used by a majority of country deployments despite its significant security issues.</t>
        <t>Operational experience reveals that the main reason is related to the choice of PKIX certificates for securing the proxy interconnections. Compared to shared secrets, certificates are more complex to handle in multiple dimensions:</t>
        <ul spacing="normal">
          <li>
            <t>Lifetime: PKIX certificates have an expiry date, and need administrator attention and expertise for their renewal</t>
          </li>
          <li>
            <t>Validation: The validation of a certificate (both client and server) requires contacting a third party to verify the revocation status. This either takes time during session setup (OCSP checks) or requires the presence of a fresh CRL on the server - this in turn requires regular update of that CRL.</t>
          </li>
          <li>
            <t>Issuance: PKIX certificates carry properties in the Subject and extensions that need to be vetted. Depending on the CA policy, a certificate request may need significant human intervention to be verified. In particular, the authorisation of a requester to operate a server for a particular NAI realm needs to be verified. This rules out public "browser-trusted" CAs; eduroam is operating a special-purpose CA for eduroam RADIUS/TLS purposes.</t>
          </li>
          <li>
            <t>Automatic failure over time: CRL refresh and certificate renewal must be attended to regularly. Failure to do so leads to failure of the authentication service. Among other reasons, employee churn with incorrectly transferred or forgotten responsibilities is a risk factor.</t>
          </li>
        </ul>
        <t>It appears that these complexities often outweigh the argument of improved security; and a fallback to RADIUS/UDP is seen as the more appealing option.</t>
        <t>It can be considered an important result of the experiment in <xref target="RFC6614"/> that providing less complex ways of operating RADIUS/TLS are required. The more thoroughly specified provisions in the current document towards TLS-PSK and raw public keys are a response to this insight.</t>
        <t>On the other hand, using RADIUS/TLS in combination with Dynamic Discovery as per <xref target="RFC7585"/> necessitates the use of PKIX certificates. So, the continued ability to operate with PKIX certificates is also important and cannot be discontinued without sacrificing vital functionality of large roaming consortia.</t>
      </section>
      <section anchor="wireless-broadband-alliances-openroaming">
        <name>Wireless Broadband Alliance's OpenRoaming</name>
        <t>OpenRoaming is a globally operating Wi-Fi roaming consortium for the general public, operated by the Wireless Broadband Alliance (WBA). With its (optional) settled usage of hotspots, the consortium requires both RADIUS authentication as well as RADIUS accounting.</t>
        <t>The consortium operational procedures were defined in the late 2010s when <xref target="RFC6614"/> and <xref target="RFC7585"/> were long available. The consortium decided to fully base itself on these two RFCs.</t>
        <t>In this architecture, using PSKs or raw public keys is not an option. The complexities around PKIX certificates as discussed in the previous section are believed to be controllable: the consortium operates its own special-purpose CA and can rely on a reliable source of truth for operator authorisation (becoming an operator requires a paid membership in WBA); expiry and revocation topics can be expected to be dealt with as high-priority because of the monetary implications in case of infrastructure failure during settled operation.</t>
      </section>
      <section anchor="participating-in-more-than-one-roaming-consortium">
        <name>Participating in more than one roaming consortium</name>
        <t>It is possible for a RADIUS/TLS (home) server to participate in more than one roaming consortium, i.e. to authenticate its users to multiple clients from distinct consortia, which present client certificates from their respective consortium's CA; and which expect the server to present a certificate from the matching CA.</t>
        <t>The eduroam consortium has chosen to cooperate with (the settlement-free parts of) OpenRoaming to allow eduroam users to log in to (settlement-free) OpenRoaming hotspots.</t>
        <t>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.</t>
        <t>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.</t>
        <t>It can be considered an important result of the experiment in <xref target="RFC6614"/> that Trusted CA Indication is an important asset for inter-connectivity of multiple roaming consortia.</t>
      </section>
    </section>
    <section anchor="interoperable-implementations">
      <name>Interoperable Implementations</name>
    </section>
    <section anchor="backwardcomp">
      <name>Backward compatibility</name>
      <t>TODO describe necessary steps to configure common servers for compatibility with this version.
Hopefully the differences to <xref target="RFC6614"/> are small enough that almost no config change is necessary.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to the original authors of RFC 6613, RFC 6614 and RFC 7360: Alan DeKok, Stefan Winter, Mike McCauley, Stig Venaas and Klaas Vierenga.</t>
      <t>Thanks to Arran Curdbard-Bell for text around keepalives and the Status-Server watchdog algorithm.</t>
      <t>Thanks to Alan DeKok for his constant review of this document over its whole process and his many text contributions, like text around forwarding issues between TCP and UDP based transports.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA82963YbV7Im+B9PkcNaa0zWALDutlXdXYcmpWO2dRtRKlet
Wqe0EkCCzBKQic5MiELZ7meZv/MaMy828cVl79iZSVo1Uz0ztbqPRSCxc19i
x/WLiNlsNimqruwOTydZdvnsxfOn2dFf3z4/+zP97z+OJvTNpqCPjs/zLr9q
8u1J9q7Jq3ZXN132Ij8UTXZZLPcNDZAdH5+fvHtxeZI9q5bNYdeVdZWt6yZ7
e3p+8f7yaJIvFk3xiQaTD7L6E/1afnM0WeZdcVU3h6dZ260mk3rR1puiK9qn
2ZMn9x9Ns28ePrk3mazqZZVvaUKrJl93s7Lo1rMmXxWfO/yn3LerbtPOFmU7
u/do0u4X27JtaRrdYUe/uXj27vmE3v9wkjdFTvOwmR9Nburm41VT73dxds/+
/K6o8OP2aPKxONATK9qima4G/6J5Tz4V1b7A1t3x6yyT9x/9RG8pq6vs3/Es
Pt/m5YY+lxX8G1Yzr5uro8kk33fXdYNxZ5ks+L/m1ex5U6yKpvyYvS2L5cei
aen7LKNfPM3Oi33XLq+LNnteN/SPfXXVVkX3j+yX7N+LZptX2ascB5JvsrdF
W+TN8jrLq1X2bLVf8hfZq6LDLvCQbdcURfc0O90Un+mpotltchrrPn+5rFc0
n/v37n/zrfwN4sm+L5pNWekD+6rDScqbD/xhIWttdOb/tlpX81XBXxldnD9/
xX/TmTzNbm5u5uEZ24TLrljTUn4qq65o4uKf19VKFkFr64oqp1Xbv57TZOTL
ZGUPplnOZ5etimzz1fuqJGJsy+7//N/dGh89fPLYLfEZ7eus3Tez080/iq4r
0sW+2H8utot631z59bY84/kNz/jfGpnUfLNPFv722eW7Z69O08W7ZydVTRvZ
0RSfTiZltXZ/TWazGY1Dy8qX3WTy7rpsM7ok+y1d6qzdFctyXRJR5FkXbu2u
qdflpnBXM9u3IMvbLzbfar6u787e0J5nxg3u+M15/NH78zdZ3mbddZFOo6uX
9WYuk6alLjYF/iu8g+aD53WC9LP1ulxilJtis8F/VweiCfqoa/ZtlzXFhg+5
vS53bbYgWi6Kyn7dFg1OF28qbFOU6gOf4bcVn3d0v7B3dE+SB9uspOGenzE3
yo5l4K95ibhG+AYcKnxzHr5a1ttFWckLthilw3KTwedyjNtytdoUk8nPT/++
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
uOkTAQA=

-->

</rfc>
