<?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.17 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusdtls-bis-02" category="std" consensus="true" submissionType="IETF" obsoletes="6614, 7360" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.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-02"/>
    <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="2024" month="July" day="08"/>
    <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 as described in <xref target="RFC2865"/>, <xref target="RFC2866"/>, <xref target="RFC5176"/> and others is a widely deployed authentication, authorization and accounting solution.
However, the deployment experience has shown several shortcomings, 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". This document changes this. For servers, "certificates with PKIX" and "TLS-PSK" is now mandated and clients must implement 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>
        </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"/> 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>It is <bcp14>REQUIRED</bcp14> that implementations 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>It is <bcp14>REQUIRED</bcp14> that RADIUS/(D)TLS clients 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"/>, as 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"/>, RAIDUS/(D)TLS clients must 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"/>.<cref anchor="add_which" source="Janfred">TODO: Add text which recommendations of RFC9325 must be followed and why</cref>
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.</t>
        <section anchor="authentication-using-x509-certificates-with-pkix-trust-model">
          <name>Authentication using X.509 certificates with PKIX trust model</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 list of trusted Certificate Authorities for new TLS sessions.</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 trusted Certification authorities (CAs).
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>RADIUS/(D)TLS clients validate the servers identity to match their local configuration:
              </t>
              <ul spacing="normal">
                <li>
                  <t>If the expected RADIUS/(D)TLS server was configured as a hostname, the configured name is matched against the presented names from the subjectAltName:DNS extension; if no such exist, against the presented CN component of the certificate subject</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 addresses in the subjectAltName:iPAddr extension; if no such exist, against the presented CN component of the certificate subject.</t>
                </li>
                <li>
                  <t>If the RADIUS/(D)TLS server was not configured but discovered as per <xref target="RFC7585"/>, the client executes the following checks in this order, accepting the certificate on the first match:
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>The realm which was used as input to the discovery is matched against the presented realm names from the subjectAltName:naiRealm extension.</t>
                    </li>
                    <li>
                      <t>If the discovery process yielded a hostname, this hostname is matched against the presented names from the subjectAltName:DNS extension; if no such exist, against the presented CN component of the certificate subject.
Implementations <bcp14>MAY</bcp14> require the use of DNSSEC <xref target="RFC4033"/> to ensure the authenticity of the DNS result before relying on this for trust checks.</t>
                    </li>
                    <li>
                      <t>If the previous checks fail, the certificate <bcp14>MAY</bcp14> Be accepted without further name checks immediately after the <xref target="RFC5280"/> trust chain checks, if configured by the administrator.</t>
                    </li>
                  </ul>
                </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 names from the subjectAltName:DNS extension; if no such exist, against the presented CN component in the certificate subject.</t>
                </li>
                <li>
                  <t>For clients configured by their source IP address, the configured IP address is matched against the presented addresses in the subjectAltName:iPAddr extension; if no such exist, against the presented CN component of the certificate subject.
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>It is possible for a RADIUS/(D)TLS server to not require additional name checks for incoming RADIUS/(D)TLS clients, i.e. if the client used dynamic lookup.
In this case, the certificate is accepted immediately after the <xref target="RFC5280"/> trust chain checks.
This <bcp14>MUST NOT</bcp14> be used outside of trusted network environments or without additional certificate attribute checks in place.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Implementations <bcp14>MAY</bcp14> allow a 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 in subjectAltName:URI or a set of allowed X.509v3 Certificate Policies).</t>
            </li>
            <li>
              <t>When the configured trust base changes (e.g., removal of a CA from the list of trusted CAs; issuance of a new CRL for a given CA), implementations <bcp14>SHOULD</bcp14> renegotiate the TLS session to reassess the connecting peer's continued authorization.<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>
        </section>
        <section anchor="authentication-using-x509-certificate-fingerprints">
          <name>Authentication using X.509 certificate fingerprints</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">
          <name>Authentication using 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="authentication-using-tls-psk">
          <name>Authentication using 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 "Authentication using X.509 certificates with 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 operation mode, the RADIUS/(D)TLS client identity can be determined differently.</t>
        <t>In TLS-PSK operation, a client is uniquely identified by its TLS-PSK identifier.</t>
        <t>In Raw-Public-Key operation, a client is uniquely identified by the Raw public key.</t>
        <t>In TLS-X.509 mode using fingerprints, a client is uniquely identified by the fingerprint of the presented client certificate.</t>
        <t>In TLS-X.509 mode using PKIX trust models, 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 situation, 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-elay-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 retranmissions, 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 retranmissions 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 retranmissions <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>
    <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="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.</t>
        <t>Implementations of this specification <bcp14>SHOULD</bcp14> tread 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 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 TCP 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 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>Implementations <bcp14>SHOULD</bcp14> have configurable connection limits, configurable limits on connection lifetime and idle timeouts and a configurable rate limit on new connections.
Allowing an unbounded number or rate of TCP/TLS connections may result in resource exhaustion.</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"/> <bcp14>MUST</bcp14> use the length of the decrypted DTLS data instead of the UDP packet length.
They <bcp14>MUST</bcp14> treat any decrypted DTLS data bytes outside the range of the length field as padding and ignore it on reception.</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 fom 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>When a session has not received a packet for a period of time, it is labeled "idle".
The server <bcp14>SHOULD</bcp14> delete idle DTLS sessions after an "idle timeout".<cref anchor="idle-timeout-conf" source="Janfred">RFC 7360 adds a paragraph about that the idle timeout should not be exposed to the admin as configurable parameter and references a mechanism to determine this value from the application-layer watchdog, but I didn't find the specification anywhere.</cref></t>
            <t>RADIUS/DTLS servers <bcp14>SHOULD</bcp14> also monitor the total number of open sessions.
They <bcp14>SHOULD</bcp14> have a "maximum sessions" setting exposed to administrators as a configurable parameter.
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>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>RADIUS/DTLS clients <bcp14>SHOULD</bcp14> proactively close sessions when they have been idle for a period of time.
Clients <bcp14>SHOULD</bcp14> close a session when no traffic other than watchdog packet and (possibly) watchdog responses have been sent for three watchdog timeouts.
This behavior ensures that clients do not waste resources on the server by causing it to track idle sessions.</t>
          <t>DTLS sessions <bcp14>MUST</bcp14> also 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 implementation 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 middle-person eavesdropping on the conversation.
To prevent this, while keeping a NULL encryption cipher suite active, the only option is to set a different shared secret for RADIUS.
In this case, the security considerations for confidentiality of RADIUS/UDP packets apply.
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>
      </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 bogous RADIUS packet would fail the cryptographic checks and the server would silently discard the bogous 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 bogous 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 bogous 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 cummulated 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 a potentially 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 SOULD 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>
    <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 that 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>
      </ul>
    </section>
  </middle>
  <back>
    <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="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 ALPN and removing MD5</title>
            <author fullname="Alan DeKok" initials="A." surname="DeKok">
              <organization>FreeRADIUS</organization>
            </author>
            <date day="1" month="July" 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 additional application protocol for
   RADIUS over (D)TLS.  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
   signing 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-10"/>
        </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>RADIUS and TLS-PSK</title>
            <author fullname="Alan DeKok" initials="A." surname="DeKok">
              <organization>FreeRADIUS</organization>
            </author>
            <date day="29" month="February" year="2024"/>
            <abstract>
              <t>   This document gives 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 insecure RADIUS/UDP to the use of the
   much more secure RADIUS/TLS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-radext-tls-psk-09"/>
        </reference>
      </references>
    </references>
    <?line 809?>

<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:
H4sIAAAAAAAAA92965IjR5Ie+h9PkcKYiVV7ALDvJHskzRarmssS+6au7uGM
je20JYBEVU4DmdjMRBdryNaz6O95jXNeTP75JcIjM6vYlHZNaxqTll1AIjIu
Hn793H0+n0+Kqiu7m6eTLLt49vy7p9n0L2++O/0T/e+fpxP6ZlvQR0dneZdf
NvnuOHvb5FW7r5sue57fFE12UawODQ2QHR2dHb99fpE9q1bNzb4r6yrb1E32
5uTs/N3FdJIvl03xkcaSD7L6I/1YfjKdrPKuuKybm6dZ260nk3rZ1tuiK9qn
2ZMn9x/Nsq8ePrk3mazrVZXvaD7rJt9087LoNvMmXxc/dfhPeWjX3badL8t2
fu/BpD0sd2Xb0jS6mz395vzZ2+8m9P6Hk7wpcpqHTXw6ua6bD5dNfdjH2T37
09uiwo/b6eRDcUNPrGmH5roa/IvmPflYVIcCO3fHr7NM3j/9kd5SVpfZP+FZ
fL7Lyy19Liv4R6xmUTeX08kkP3RXdYNx55ks+L/m1fy7plgXTfkhe1MWqw9F
09L3WUa/eJqdFYeuXV0VbfZd3dA/DtVlWxXd37Nfsn8qml1eZS9zHEi+zd4U
bZE3q6ssr9bZs/VhxV9kL4sOu8BDtl1TFN3T7GRb/ERPFc1+m9NY9/nLVb2m
+dy/d/+rr+Vv0E72bdFsy0ofOFQdTlLefMMfFrLWRmf+j+tNtVgX/JXRxdl3
L/lvOpOn2fX19SI8Y5tw0RUbWsqPZdUVTVz8d3W1lkXQ2rqiymnV9q/vaDLy
ZbKyB7Ms57PL1kW2/eJdVRIxtmX3//+/bo2PHj557Jb4jPZ13h6a+cn270XX
Felinx9+KnbL+tBc+vW2POPFNc/4HxuZ1GJ7SBb+5tnF22cvT9LFu2cnVU0b
2dEUn04mZbVxf03m8zmNQ8vKV91k8vaqbDO6JIcd3ems3RerclMSUeRZFy7t
vqk35bZwVzM7tCDL2+81UfqxXNe3p69pzzNjBnf85iz+6N3Z6yxvs+6qSKfR
1at6u5BJ01KX2wL/Fd5B88HzOkH62WZTrjDKdbHd4r/rG6IJ+qhrDm2XNcWW
D7m9KvdttiRaLorKft0WDU4XbypsU5TqA5/htxU/7el+Ye/oniQPtllJw313
ytwoO5KBv+Ql4hrhG3Co8M1Z+GpV75ZlJS/YYZQOy00GX8gx7sr1eltMJj8/
/duGKIdIaVX85yld/A3d++mnyeR32TnRWk1XlumZl6NLtN3knSnaVVMuizXe
9vPP/4Em9+DrJ48/fZrFv57Evx7f/4r+4rnWNMeGlgqCuS7XxfaGBttv6xsa
CywJgkKmPMuERZV/l33Er/MVXwYcHW3qQVb2fX1d0ObPeH9lMKZN2Wo67SK7
ojm3V/V1RQdFj2LraeSONo6GamdYUtlhWfuCeFG1usnqioc7VHTsJehmhK6E
6mhaeHKbrz5k9YYOo9rQumiS+RZUijuwzZvLItvnDb2DHsGr9vR4QUPlN9s6
Xy8mJ+t1KdyTdgTj9cfBe3DFL5n2d8XqKq/KdteCLsN0X5w9zvItCbmyu9rN
suurkpgwFr8ErdK8iSFlXU1/0lgtLlJBr97SNh8ur/Sgv1QRu66JoqoahL+j
39n482Xe0lnFCcxoPVm+Xre/MmXsWsFkRUM1/EIMiVdtcbEXE5Ir9JvssCdu
Sq9gdokLtOnN7LrEhLusKugp7C+W3RYFUdsfzudni6HM/nj//idQ9++y14dm
X7fFYFAhdeKoUChWh9Y9gFfyDYz3DvRL24gNpQXTZhBp4APZUlzI3aEyBtBj
FfsCF0D5IQ0FXkf/Fdaxq4nTlDuQWU4kfJCZDu9ztgXPpck2dQ4aJqb2sWzq
CoRPDIzuWLy3TGmt7JacfYvrka+aum0DHWAekDPE6ui5SkQ1MbSTii5Svtsr
O6dbWzfbNa7u2LtpqjlPu828CoZ13rY94MzrA8Ya4Sx/IO7x1eNvHurpnRLN
XdLYm6begSPeyiqHnHIy+QcdDz8ibtQUG9ol4g7r+Dm9h1dJMmjO/J6+TPZ9
pm99aDeO+RldMXrtVU4P17s+/49C8Es+5iyjg26LPvO/ImVBrumuIG7BN6eW
kzdpu6Al2KJ3efOBHqIRP95f3M+YyZD8xxaSQkQXiBTd2RjhNMW/HEqS/PrT
B/yLsip3hx1vXlPgeIgNgkbzS6Y/efShez2xKeK66+QRnOueRm55n5KZYxOW
5Rpc1i+iroh1hQm1hz2zV2yYCHKI3R3pSdtsuiqaThZBT4IBZK9/OP/TdJGl
+shKCQRvX0BRNck8u3UIXvWU5j9/ffHDFORY1de6iRBKELB023Cvdge5nduC
X1ZXejtprtc1FiY8RLd/3tXz+PCq3INS2kOJ15N5oLw1EOGaNmHVbe3USnB2
Uorx1ZJ4abavWcPLmCqEb357+tre2j/ky7xZs5jsCtJWsKVu+WCt8eEgH5Tx
8kWJ9yHsBMtDYUgXXd4d2vkF7y2rTHm3ulrXl1766O2lm0ij6FErbYG8Oz27
dOb6tvb2t2EtS7p2d7DnRW8J/PKyWm0PePO23JW8HpIPdBDQ3mlmLN7VmGv7
5AuKuCR1mEigppO7PJTrHHoFdo++oiMBByAWORin4OWxVFeGuy43fOZd1CiI
zTL3b9SAKnAgV2Wl/ERojPbCqBvUQwKQrCHjk8Q2y8vq/ZrexS/+9GkBZe60
rj5CHoPBYI/Oig1ddf5b3khmJxg63czpi3cXb6cz+W/28hX/+82z//bu/M2z
M/z74vuT58/DPyb6xMX3r949P4v/ir88ffXixbOXZ/Jj+jRLPppMX5z8mb7h
y/fq9dvzVy9Pnk+D8hp2Hks1hYWon/gLX8p2kggKugj/3/8ghqLK5/3739Cp
yx9f3/8K3J5EYiVvY2KQP2lXbyb5fk/GKkahU8pW+b4k1Vx0QlEZIUxpN//h
L9iZf36a/aflan//0X/RD7Dg5EPbs+RD3rPhJ4MfyyaOfDTymrCbyee9nU7n
e/Ln5G/bd/fhf/oDqCqb3//6D/+FbL8f6SoPzuS6IPZJe4XriWu6qSEN2J4i
c7wlmzHV1yqYupOnxMPk8zl0grl+Kbw1C5y6/2P5/tafk/rS8VVkxYOJm9lH
TirMNTTSqlBTJh1WXvaZw25LGMotrvvo0yy21D4p9qxr+Xe34eVkMMgrV9uc
OMTKGZ9qW3hrdo3bajc8mFh0KES8MGPgMmPXFnZvmqyP5dhOrn6xFtMoZbRE
9qxDfhY7/ZEVymn/XZ/1Ir5v9ja6yvG3M1VUp2f9gc8GI8PIuGUkmeJExUOQ
uKpX8R011eJXF3oq1NgfRO9glOYYaJYtyQjh8eMXoJYib4Ny4F4W9UCdcdRn
w2LUv9KqobQuW7JFWhWH0OBpJ1bxR85/oQaleG6yo59/3n/o5I9Pn45nQqKi
rWHR7RUx1jXe08A2wOP0AH9Pjy/EVPIjTn5+mv0uDpl6BpJX0/QPlcxxLYq6
I95Z+MMcAvy3OAgWkwujnC30IPBj1a8ii8E8+UzC5soRLAv3WrB3NbGSa/EU
VkC6LvqbmFbZQazAJ9dCPyWVtKAzPIkOCShQ+XZ1EB8QP0MXlmynOx96oYq1
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

-->

</rfc>
