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

<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 52?>

<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>
        </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><cref anchor="src_6613_2_1">Source: RFC6613, Section 2.1 with minimal changes: Removed paragraph about required ability to store shared secrets. Also added last paragraphs from RFC 7360, Section 2.1</cref></t>
        <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><cref anchor="src_6613_2_4">Source: RFC6613, Section 2.4 with minor modifications, Last paragraph: RFC6613 Section 2.6.5.</cref></t>
        <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><cref anchor="src_6614_2_3">Source: Mainly RFC6614, Section 2.3, Items 1 and 2, but without peer authentication models (in next section) or unnecessary text (e.g. MTI cipher suites, we just rely on the TLS cipher suites. Maybe explicitly mention that the MTI ciphers from TLS are also mandatory for this?)</cref></t>
        <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><cref anchor="src_6614_2_3_item3">Source: RFC6614, Section 2.3, Item 3 with modifications.</cref></t>
        <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><cref anchor="src_6614_2_4">Source: RFC6614, Section 2.4 with small modifications</cref></t>
        <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><cref anchor="src_6614_2_5">Source: RFC 6614, Section 2.5 with small modifications and without example list</cref></t>
        <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>Operating RADIUS proxies that use both UDP-based transports like RADIUS/UDP or RADIUS/DTLS and TCP-based transports like RADIUS/TLS requires different handing of packets.
TCP based transports do not need retransmissions, since the reliable transport is provided by the TCP layer.
Therefore, retransmission of RADIUS packets is forbidden over RADIUS/TLS.
If a request is received over RADIUS/TLS and forwarded over RADIUS/UDP or RADIUS/DTLS, the proxy needs perform its own retransmissions for outstanding packets.</t>
        <t><cref anchor="forwarding_stub" source="Janfred">TODO: This section is currently a stub. Alan mentioned that we should have a section about handling this, especially around Accounting packets with Acct-Delay-Time. I need more text around this, help welcome.</cref></t>
      </section>
    </section>
    <section anchor="radiustls-specific-specifications">
      <name>RADIUS/TLS specific specifications</name>
      <t>This section discusses all specifications that are only relevant for RADIUS/TLS.</t>
      <section anchor="duplicates-and-retransmissions">
        <name>Duplicates and Retransmissions</name>
        <t><cref anchor="src_6613_2_6_1">Source: RFC6613, Section 2.6.1, with small modifications</cref></t>
        <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 an 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><cref anchor="src_6613_2_6_4">Source: RFC 6613, Section 2.6.4 with small modifications.</cref></t>
        <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><cref anchor="src_6613_2_6_2">Source: RFC6613, Section 2.6.7 (TCP != UDP) and Section 2.6.2 (HoL-Blocking) with small modifications</cref></t>
        <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><cref anchor="src_7360_2_1">Source: RFC7360, Section 2.1, last paragraphs</cref></t>
        <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><cref anchor="src_7360_3_2">Source: RFC7360, Section 3.2 with small modifications</cref></t>
        <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><cref anchor="src_7360_4">Source: RFC7360, Section 4</cref></t>
        <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><cref anchor="src_7350_5">Source; RFC7360, Section 5</cref></t>
        <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><cref anchor="src_7360_5_1">Source: RFC7360, Section 5.1</cref></t>
          <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><cref anchor="src_7360_5_1_1">Source: RFC7360, Section 5.1.1 with small modifications</cref></t>
            <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><cref anchor="src_7360_5_2">Source: RFC7360, Section 5.2 with modifications</cref></t>
          <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 intermediate IP node 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.
[This document] 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 [This document] <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="26" month="February" 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.  When this
   extension is used, the previous Authenticator field is repurposed to
   contain an explicit request / response identifier, called a Token.
   The Token also allows more than 256 packets to be outstanding on one
   connection.

   This extension can be seen as a transport profile for RADIUS, as it
   is not an entirely new protocol.  It uses the existing RADIUS packet
   layout and attribute format without change.  As such, it can carry
   all present and future RADIUS attributes.  Implementation of this
   extension requires only minor changes to the protocol encoder and
   decoder functionality.  The protocol defined by this extension is
   named "RADIUS version 1.1", or "RADIUS/1.1".

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-radext-radiusv11-04"/>
        </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 831?>

<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.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
zmuAYf83pMEoWbH0AAA=

-->

</rfc>
