<?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.4 (Ruby 2.6.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-deprecating-radius-04" category="std" consensus="true" submissionType="IETF" updates="2865, 2866, 5176, 7585" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.0 -->
  <front>
    <title abbrev="Deprecating RADIUS">Deprecating Insecure Practices in RADIUS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-radext-deprecating-radius-04"/>
    <author initials="A." surname="DeKok" fullname="Alan DeKok">
      <organization>InkBridge Networks</organization>
      <address>
        <email>aland@inkbridgenetworks.com</email>
      </address>
    </author>
    <date year="2024" month="November" day="11"/>
    <area>Internet</area>
    <workgroup>RADEXT Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 161?>

<t>RADIUS crypto-agility was first mandated as future work by RFC 6421.  The outcome of that work was the publication of RADIUS over TLS (RFC 6614) and RADIUS over DTLS (RFC 7360) as experimental documents.  Those transport protocols have been in wide-spread use for many years in a wide range of networks.  They have proven their utility as replacements for the previous UDP (RFC 2865) and TCP (RFC 6613) transports.  With that knowledge, the continued use of insecure transports for RADIUS has serious and negative implications for privacy and security.</t>
      <t>The recent publication of the "BlastRADIUS" exploit has also shown that RADIUS security needs to be updated.  It is no longer acceptable for RADIUS to rely on MD5 for security.  It is no longer acceptable to send device or location information in clear text across the wider Internet.  This document therefore deprecates many insecure practices in RADIUS, and mandates support for secure TLS-based transport layers.  We also discuss related security issues with RADIUS, and give recommendations for practices which increase both security and privacy.</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-deprecating-radius/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        RADEXT 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>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/freeradius/deprecating-radius.git"/>.</t>
    </note>
  </front>
  <middle>
    <?line 167?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The RADIUS protocol <xref target="RFC2865"/> was first standardized in 1997, though its roots go back much earlier to 1993.  The protocol uses MD5 <xref target="RFC1321"/> to authenticate some packets types, and to obfuscate certain attributes such as User-Password.  As originally designed, Access-Request packets were entirely unauthenticated, and could be trivially spoofed (<xref section="7.1" sectionFormat="comma" target="RFC2869"/> and <xref section="4.3.2" sectionFormat="comma" target="RFC3579"/>).</t>
      <t>The insecurity of MD5 has been known for a long time.  It was first noted in relation to RADIUS in 1996 on the IETF RADIUS working group mailing list <xref target="MD5-1996"/>, which also discussed using an HMAC construct to increase security.  While it was common knowledge at the time, the earliest record of concerns about Access-Request packets spoofing was on the RADIUS working group mailing list <xref target="DATTACK"/> in 1998.  There was substantial further discussions about the lack of integrity checks on the list over the next few years.  The outcome of that process was the definition of Message-Authenticator as an optional HMAC-based attribute in <xref section="5.14" sectionFormat="comma" target="RFC2869"/>.</t>
      <t>Unfortunately, the use of Message-Authenticator was made optional.  This lack of integrity checks for Access-Request packets was deemed acceptable for some situations in <xref section="7.1" sectionFormat="comma" target="RFC2869"/>:</t>
      <ul empty="true">
        <li>
          <t>Access-Request packets with a User-Password establish the identity of
both the user and the NAS sending the Access-Request, because of the
way the shared secret between NAS and RADIUS server is used.</t>
        </li>
      </ul>
      <t>That conclusion now appears to be incorrect.  The text continues with an acknowledgment that:</t>
      <ul empty="true">
        <li>
          <t>Access-Request packets with CHAP-Password or EAP-Message do not have
a User-Password attribute, so the Message-Authenticator attribute
should be used in access-request packets that do not have a User-
Password, in order to establish the identity of the NAS sending the
request.</t>
        </li>
      </ul>
      <t>This text was non-normative due to the lowercase 'should'.  It appears that no implementation followed even this limited suggestion.</t>
      <t>The packet forgery issue was further discussed in 2004 in <xref section="4" sectionFormat="comma" target="RFC3579"/>, and again in 2007 in <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>.  That document suggested that implementations require the use of Message-Authenticator in order to prevent forgery:</t>
      <ul empty="true">
        <li>
          <t>However, Access-Request packets not containing a Message-
Authenticator attribute ...  may
be trivially forged.  To avoid this issue, server implementations may
be configured to require the presence of a Message-Authenticator
attribute in Access-Request packets.  Requests not containing a
Message-Authenticator attribute MAY then be silently discarded.</t>
        </li>
      </ul>
      <t>To our knowledge, only one RADIUS server implemented even this limited suggestion.  At the time of publication of <xref target="RFC5080"/>, there was no consensus to require the use of Message-Authenticator in all Access-Request packets.  If this recommendation had instead been made mandatory, then the recent BlastRADIUS attack <xref target="BLAST"/> would largely have been prevented.</t>
      <t>The state of MD5 security was again discussed in <xref target="RFC6151"/>, which states in Section 2:</t>
      <ul empty="true">
        <li>
          <t>MD5 is no longer acceptable where collision resistance is required such as digital signatures.</t>
        </li>
      </ul>
      <t>That statement led to RADIUS security being reviewed in <xref section="3" sectionFormat="comma" target="RFC6421"/>.  The outcome of that review was the text in the remainder of <xref target="RFC6421"/>, which created crypto-agility requirements for RADIUS.  The main outcome of those requirements was not any change to RADIUS, but instead the definition of RADIUS/TLS in <xref target="RFC6614"/>, and RADIUS/DTLS in <xref target="RFC7360"/>.  The other outcome was a consensus that adding crypto-agility to RADIUS was likely not a good idea, and that standardizing RADIUS over TLS instead was a significantly better path forward.</t>
      <t>While the RADIUS/TLS work is ongoing at the time of this writing, there are still a large number of sites using RADIUS/UDP.  Those sites need to be supported and secured until they can migrate to TLS, while at the same time maintaining backwards compatibility.</t>
      <t>To summarize, <xref target="RFC6151"/> is over a decade old as of the time of this writing.  <xref target="RFC5080"/> is almost two decades old.  The knowledge that Access-Request packets lack integrity checks is almost three decades old.  Over that entire span of time, there has been no mandate to increase the security of Access-Request packets. This document provides that mandate.</t>
      <t>It is no longer acceptable for RADIUS to rely on MD5 for security.  It is no longer acceptable to send device or location information in clear text across the wider Internet.  This document therefore deprecates all insecure uses of RADIUS, and mandates the use of secure TLS-based transport layers.  We also discuss related security issues with RADIUS, and give many recommendations for practices which increase security and privacy.</t>
      <section anchor="radius-over-the-internet">
        <name>RADIUS over the Internet</name>
        <t>As the insecurity of MD5 has been well known for decades, RADIUS traffic over the Internet was historically secured with IPSec as described in <xref section="4.2" sectionFormat="comma" target="RFC3579"/>:</t>
        <ul empty="true">
          <li>
            <t>To address the security vulnerabilities of RADIUS/EAP,
implementations of this specification SHOULD support IPsec
(RFC2401) along with IKE (RFC2409) for key management.  IPsec ESP
(RFC2406) with non-null transform SHOULD be supported, and IPsec
ESP with a non-null encryption transform and authentication
support SHOULD be used to provide per-packet confidentiality,
authentication, integrity and replay protection.  IKE SHOULD be
used for key management.</t>
          </li>
        </ul>
        <t>The use of IPSec allowed RADIUS to be sent privately, and securely, across the Internet.  However, experience showed that TLS was in many ways simpler for implementations and deployment than IPSec.  While IPSec required operating system support, TLS was an application-space library.  This difference, coupled with the wide-spread adoption of TLS for HTTPS, ensures that it was often easier for applications to use TLS than IPSec.</t>
        <t>RADIUS/TLS <xref target="RFC6614"/> and RADIUS/DTLS <xref target="RFC7360"/> were then defined in order to meet the crypto-agility requirements of <xref target="RFC6421"/>.  RADIUS/TLS has been in wide-spread use for about a decade, including eduroam <xref target="EDUROAM"/> <xref target="RFC7593"/>, and more recently OpenRoaming <xref target="OPENROAMING"/> and <xref target="I-D.tomas-openroaming"/>.  RADIUS/DTLS has seen less use across the public Internet, but it still has multiple implementations.</t>
        <t>However, RADIUS/UDP is still widely used, even though it depends on MD5 and "ad hoc" constructions for security.  The recent "BlastRADIUS" attack shows just how inadequate this dependency is.  The BlastRADIUS attack is discussed in more detail below, in <xref target="blastradius"/>.</t>
        <t>Even if we ignore the BlastRADIUS attack, problems with MD5 mean that a hobbyist attacker who can view RADIUS/UDP traffic can brute-force test all possible RADIUS shared secrets of eight characters in not much more than an hour.  An more resourceful attacker (e.g. a nation-state) can check all much longer shared secrets with only modest expenditures.  See <xref target="cracking"/> below for a longer discussion of this topic.</t>
        <t>Determining the shared secret will also result in compromise of all passwords carried in the User-Password attribute.  Even using CHAP-Password offers minimal protection, as the cost of cracking the underlying password is similar to the cost of cracking the shared secret.  MS-CHAP (<xref target="RFC2433"/> and MS-CHAPv2 <xref target="RFC2759"/>) are significantly worse in security than PAP, as they can be completely broken with minimal resources, which <xref target="ms-chap"/> describes in more detail.</t>
        <t>The use of Message-Authenticator does not change the cost of attacking the shared secret.  The Message-Authenticator attribute is a later addition to RADIUS, and does does not replace the original MD5-based packet signatures.  While that attribute therefore offers a stronger protection, it does not change the cost of attacking the shared secret.  Moving to a stronger packet signatures (e.g. <xref target="RFC6218"/>) would still not fully address the issues with RADIUS, as the protocol still has privacy issues unrelated to the the security of packet authenticators.</t>
        <t>That is, most attributes in RADIUS are sent in clear-text, and only a few attributes such as User-Password and Tunnel-Password have their contents hidden.  Even the hidden attributes rely on "ad hoc" obfuscation methods using MD5, which have not been successfully attacked, but are not proven to be secure.  Peoples locations can (and has) been accurately determined, and people have been tracked using location data sent insecurely across the Internet (<xref target="privacy"/>).</t>
        <t>The implications for security and individual safety are large, and negative.</t>
        <t>These issues are only partly mitigated when the data carried within RADIUS use their own methods for increased security and privacy.  For example, some authentication methods such EAP-TLS, EAP-TTLS, etc. allow for User-Name privacy and for more secure transport of passwords via the use of TLS.  Some privacy can be gained through MAC address randomization, which can also limit device information identification to a particular manufacturer, instead of to a unique device.</t>
        <t>However, these methods are not always used, or are not always available.  Even if these methods were used ubiquitously, they do not protect all of the information which is publicly available over RADIUS/UDP or RADIUS/TCP transports.  And even when TLS-based EAP methods are used, implementations have historically often skipped certificate validation, leading to password compromise (<xref target="SPOOFING"/>).  In many cases, users were not even aware that the server certificate was incorrect or spoofed, which meant that there was no way for the user to detect that anything was wrong.  Their passwords were simply handed to a spoofed server, with little possibility for the user to take any action to stop it.</t>
      </section>
      <section anchor="simply-using-ipsec-or-tls-is-not-enough">
        <name>Simply using IPSec or TLS is not enough</name>
        <t>The use of a secure transport such as IPSec or TLS ensures complete privacy and security for all RADIUS traffic.  An observer of encrypted traffic is limited to knowing rough activity levels of a client or server.  That is, an observer can tell if there are a few users on a NAS, or many users on a NAS.  All other information is hidden from all observers.  Even with those limitations, it is not enough to say "use IPSec" and then move on to other issues.  There are many issues which can only be addressed via an informed approach.</t>
        <t>For example, it is possible for an attacker to record the session traffic, and later crack the TLS session key or IPSec parameters.  This attack could comprise all traffic sent over that connection, including EAP session keys.  If the cryptographic methods provide forward secrecy (<xref section="6.3" sectionFormat="comma" target="RFC7525"/>), then breaking one session provides no information about other sessions.  As such, it is RECOMMENDED that all cryptographic methods used to secure RADIUS conversations provide forward secrecy.  While forward secrecy will not protect individual sessions from attack, it will prevent attack on one session from being leveraged to attack other, unrelated, sessions.</t>
        <t>AAA servers SHOULD minimize the impact of such attacks by using a total throughput or time based limit before replacing the session keys.  The session keys can be replaced though a process of either re-keying the existing connection, or by opening a new connection and deprecating the use of the original connection.  Note that if the original connection if closed before a new connection is open, it can cause spurious errors in a proxy environment.</t>
        <t>The final attack possible in a AAA system is where one party in a AAA conversation is compromised or run by a malicious party.  This attack is made more likely by the extensive use of RADIUS proxy forwarding chains.  In that situation, every RADIUS proxy has full visibility into, and control over, the traffic it transports.  The solution here is to minimize the number of proxies involved, such as by using Dynamic Peer Discovery, as defined in <xref target="RFC7585"/>.</t>
        <t>There are many security issues in addition to simply adding a secure transport. The rest of this document addresses those issues in detail.</t>
      </section>
      <section anchor="overview">
        <name>Overview</name>
        <t>The rest of this document begins a summary of issues with RADIUS, including showing just how trivial it is to crack RADIUS/UDP security.  We then mandate the use of secure transport, and describe what that requirement means in practice.  We give recommendations on how current systems can be migrated to using TLS.  We give suggestions for increasing the security of existing RADIUS transports, including a discussion of the authentication protocols carried within RADIUS.  We conclude with security and privacy considerations.</t>
        <t>As IPSec has been discussed previously in the context of RADIUS, we do not discuss it more here, except to say it is an acceptable solution for securing RADIUS traffic.  As the bulk of the current efforts are focused on TLS, this document likewise focuses on TLS.  We note that all of the issues raised here about the RADIUS protocol also apply to IPSec transport.  That is, when the application is not in charge of protocol security, the application is vulnerable to transport misconfigurations or attacks.</t>
        <section anchor="a-comment-on-specifications">
          <name>A Comment on Specifications</name>
          <t>While this document tries to be comprehensive, it is necessarily imperfect.  There may be issues which should have been included here, but which were missed due to oversight or accident.  Any reader should be aware that there are good practices which are perhaps not documented in a specification, and bad behaviors which are likewise not forbidden.  For example, documents such as <xref target="RFC5080"/> were written to both correct errors in earlier documents, and to address harmful behaviors which had been seen in practice.</t>
          <t>These harmful behaviors can have a large impact both on security and on interoperability, even if they are not expressly forbidden in a specification.</t>
          <t>There is a regrettable belief that a particular practice is "allowed" by a specification, simply because the specification does not forbid that practice.  This belief is wrong.  That is, a behavior which is not even mentioned in the specification cannot honestly be said to be "permitted" or "allowed" by that specification.    The most charitable description would be that these behaviors are undefined, or at best, they are not forbidden.</t>
          <t>By their very nature, documents include a small number of permitted, required, and/or forbidden behaviors.  There are a much larger set of behaviors which are undefined.  That is, behaviors which are neither permitted nor forbidden.  Those behaviors may be good or bad, independent of what any specification says.</t>
          <t>Outside of published specifications, there is also a large set of common practices and behaviors which have grown organically over time, but which have not been written into a specification.  These practices have been found to be valuable by implementers and administrators.  Deviations from these practices generally result in instabilities and incompatibilities between systems.  As a result, implementers should exercise caution when creating new behaviors which have not previously been seen in the industry.  Such behaviors are likely to cause problems, where there would have been no problems if common practices had instead been followed.</t>
          <t>It is RECOMMENDED that implementations and administrators follow widely accepted practices which have been proven to work and to be secure, even if those practices are not written down in a public specification.  Implementers SHOULD NOT create features which depend on undefined behavior; such features are very likely to be wrong.</t>
        </section>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
<?line -6?>
      </t>
      <ul spacing="normal">
        <li>RADIUS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>The Remote Authentication Dial-In User Service protocol, as defined in <xref target="RFC2865"/>, <xref target="RFC2866"/>, and <xref target="RFC5176"/> among others.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS/UDP</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS over the User Datagram Protocol as define above.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS/TCP</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS over the Transport Control Protocol <xref target="RFC6613"/></t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS/TLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS over the Transport Layer Security protocol <xref target="RFC6614"/></t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS/DTLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS over the Datagram Transport Layer Security protocol  <xref target="RFC7360"/></t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>TLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>the Transport Layer Security protocol.  Generally when we refer to TLS in this document, we are referring to RADIUS/TLS and/or RADIUS/DTLS.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>NAS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Network Access Server, which is a RADIUS client.</t>
        </li>
      </ul>
      <t>In order to continue the terminology of <xref target="RFC2865"/>, we describe the Request Authenticator, Response Authenticator, and Message-Authenticator as "signing" the packets.  This terminology is not consistent with modern cryptographic terms, but using other terminology could be misleading.  The reader is assured that no modern cryptographic methods are used with RADIUS/UDP.</t>
    </section>
    <section anchor="overview-of-issues-with-radius">
      <name>Overview of issues with RADIUS</name>
      <t>There are a large number of issues with RADIUS.   The most serious is the BlastRADIUS vulnerability, which means that subject to some limitations, attackers can leverage MD5 known-prefix collisions to cause any user to be authenticated, and then be given any authorization.  Multi-factor Authentication (MFA) systems can be bypassed, and the RADIUS server will in many cases not even be aware that an unauthorized user is on the network.</t>
      <t>Another issue is that RADIUS sends most information "in the clear", with obvious privacy implications.  Even if packets use Message-Authenticator for integrity checks, it is still possible for the average hobbyist who observes RADIUS traffic to perform brute-force attacks to crack even seemingly complex shared secrets.</t>
      <t>There is no way to fix the RADIUS protocol to address all of these issues.  The short-term fix is to require the use of Message-Authenticator for packet integrity checks.  The long-term solution is to wrap the protocol in a secure transport, such as TLS or IPSec.</t>
      <t>We address each of these issues in detail below.</t>
      <section anchor="the-blastradius-vulnerability">
        <name>The BlastRADIUS Vulnerability</name>
        <t>The BlastRADIUS vulnerability is discussed in detail in <xref target="BLAST"/>, and we only give a short summary here.  We refer the reader to the original paper for a more complete description of the issue.</t>
        <t>For the following description, we assume that we have texts "A", "B", "S".  Following the use in <xref target="RFC2865"/>, "+" denotes concatenation.  The vulnerability then relies on the following property of MD5:</t>
        <ul empty="true">
          <li>
            <t>If MD5(A) == MD5(B), then MD5(A + S) == MD5(B + S)</t>
          </li>
        </ul>
        <t>If an attacker is given text "A", and can find text "B" which has the same MD5 hash, then the attacker can perform a chosen prefix attack.  Even if the attacker does not know text "S", if given M5(A + S), then the attacker can trivially calculate MD5(B + S): it has the same value.</t>
        <t>In RADIUS, the Response Authenticator field <xref section="3" sectionFormat="comma" target="RFC2865"/> is calculated via precisely this vulnerable construct:</t>
        <ul empty="true">
          <li>
            <t>Response Authenticator = MD5(packet + secret)</t>
          </li>
        </ul>
        <t>The attacker can observe or predict a packet (e.g. Access-Reject), which is signed with a shared secret unknown to the attacker.  The attacker can then find an Access-Accept with the same MD5 hash as the Access-Reject, and replace the Access-Reject with the Access-Accept using the Response Authenticator from the Access-Reject.</t>
        <t>The client receives the packet, calculates MD5(Access-Accept + secret), verifies that the Response Authenticator is correct, and proceeds to follow the attackers instructions: give the user access, along with some authorization.</t>
        <t>This process is the basic concept behind the BlastRADIUS vulnerability.  We note that this attack does not expose the contents of the User-Password attribute.  Instead, it bypasses all server-side authentication, and simply fools the client into accepting a forged response.</t>
        <t>While this issue requires that an attacker be "on path" and be able to intercept and modify packets, the meaning of "on path" is often "the entire Internet".  As such, this attack alone is sufficient reason to deprecate all uses of RADIUS/UDP and RADIUS/TCP.</t>
      </section>
      <section anchor="privacy">
        <name>Information is sent in Clear Text</name>
        <t>With the exception of a few attributes such as User-Password, all RADIUS traffic is sent "in the clear" when using UDP or TCP transports.  Even when TLS is used, all RADIUS traffic (including User-Password) is visible to proxies.  The resulting data exposure has a large number of privacy issues.  We refer to <xref target="RFC6973"/>, and specifically to Section 5 of that document for detailed discussion, and to <xref section="6" sectionFormat="comma" target="RFC6973"/> for recommendations on threat mitigations.</t>
        <t>More discussion of location privacy is given in <xref target="RFC6280"/>, which defines an "Architecture for Location and Location Privacy in Internet Applications".  However, that work was too late to have any practical impact on the design of the RADIUS protocol, as <xref target="RFC5580"/> had already been published.</t>
        <t>The effect is that any observer of non-TLS RADIUS traffic is able to obtain a substantial amount of personal identifiable information (PII) about users.  The observer can tell who is logging in to the network, what devices they are using, where they are logging in from, and their approximate location (usually city).  With location-based attributes as defined in <xref target="RFC5580"/>, a users location may be determined to within 15 or so meters outdoors, and with "meter-level accuracy indoors" <xref target="WIFILOC"/>.  An observer can also use RADIUS accounting packets to determine how long a user is online, and to track a summary of their total traffic (upload and download totals).</t>
        <t>When RADIUS/UDP is used across the public Internet, common Wi-Fi configurations allow the location of individuals to be tracked in real-time (usually 10 minute intervals), to within 15 meters.  The user devices can be identified, and also tracked.  Passwords can often be compromised by a resourceful attacker, or for MS-CHAP, by a hobbyist with a laptop.  Even when the packets do not contain any <xref target="RFC5580"/> location information for the user, the packets usually contain the MAC address of the Wi-Fi access point.  The MAC address and physical location of these devices are publicly available, and there are multiple services selling databases of this information.</t>
        <t>These issues are not theoretical.  Recently <xref target="BRIGGS"/> noted that:</t>
        <ul empty="true">
          <li>
            <t>Overall, I think the above three examples are just the tip of the proverbial iceberg of SS7 and Diameter based location and monitoring exploits that have been used successfully against targeted people in the USA.</t>
          </li>
        </ul>
        <t><xref target="BRIGGS"/> continues with a statement that there have been:</t>
        <ul empty="true">
          <li>
            <t>... numerous other exploits based on SS7 and Diameter that go beyond location tracking. Some of these involve issues like (1) the monitoring of voice and text messages, (2) the delivery of spyware to targeted devices, and (3) the influencing of U.S. voters by overseas countries using text messages.</t>
          </li>
        </ul>
        <t>While these comments apply to Diameter <xref target="RFC6733"/>, the same location tracking and monitoring is also possible with RADIUS.  There is every reason to believe that similar attacks on RADIUS have occurred, but are simply less publicized than similar attacks on Diameter.</t>
        <t>The use of clear-text protocols across insecure networks is no longer acceptable.  Using clear-text protocols in networks which are believed to be secure is not a significantly better solution.  The correct solution is to use secure protocols, to minimize the amount of private data which is being sent, and to minimize the number of third parties who can see any traffic.</t>
      </section>
      <section anchor="md5-has-been-broken">
        <name>MD5 has been broken</name>
        <t>Attacks on MD5 are summarized in part in <xref target="RFC6151"/>.  The BlastRADIUS work substantially improved the speed of finding MD5 collisions, and those improvements are publicly available at <xref target="HASHCLASH"/>.</t>
        <t>While there have not been many other new attacks in the decade since <xref target="RFC6151"/> was published, that does not mean that further attacks do not exist.  It is more likely that no one is looking for new attacks.</t>
      </section>
      <section anchor="cracking">
        <name>Cracking RADIUS shared secrets is not hard</name>
        <t>The cost of cracking a a shared secret can only go down over time as computation becomes cheaper.  The issue is made worse because of the way MD5 is used to authenticate RADIUS packets.  The attacker does not have to calculate the hash over the entire packet, as the hash prefix can be calculated once, and then cached.  The attacker can then begin the attack with that hash prefix, and brute-force only the shared secret portion.</t>
        <t>At the time of writing this document, an "off the shelf" commodity computer can calculate at least 100M MD5 hashes per second.  If we limit shared secrets to upper/lowercase letters, numbers, and a few "special" characters, we have 64 possible characters for shared secrets.  Which means that for 8-character secrets, there are 2^48 possible combinations.</t>
        <t>The result is that using consumer-grade machine, it takes approximately 32 days to brute-force the entire 8 octet / 64 character space for shared secrets.  The problem is even worse when graphical processing units (GPUs) are used. A high-end GPU is capable of performing more than 64 billion hashes per second.  At that rate, the entire 8 character space described above can be searched in approximately 90 minutes.</t>
        <t>This is an attack which is feasible today for a hobbyist. Increasing the size of the character set raises the cost of cracking, but not enough to be secure.  Increasing the character set to 93 characters means that the hobbyist using a GPU could search the entire 8 character space in about a day.</t>
        <t>Increasing the length of the shared secret has a larger impact on the cost of cracking.  For secrets ten characters long, the search space is approximately 2^60.  One GPU can search a 64-character space in about six months. A 93 character space (2^65 complexity) would take approximately 24 years.</t>
        <t>This brute-force attack is also trivially parallelizable.  Nation-states have sufficient resources to deploy hundreds to thousands of systems dedicated to these attacks.  That realization means that a "time to crack" of 24 years is simply expensive, but does not take much "wall clock" time.  A thousand commodity CPUs are enough to reduce the crack time from 24 years to a little over a week.</t>
        <t>Whether the above numbers are precise or only approximate is immaterial.  These attacks will only get better over time.  The cost to crack shared secrets will only go down over time.</t>
        <t>If the shared secret is long, then "cracking" the secret is expensive.  It is cheaper to perform the BlastRADIUS attack at a cost of approximately 2^53 per packet, and less than $100 in purchased CPU time.  While cracking the shared secret would break all RADIUS packets using that secret, forging one packet is often enough to give the attacker administrator access to a NAS, where the shared secret is visible in the administration interface.  The conclusion, then, is that increasing the security of the shared secret offers minimal protection when the Access-Request packets are unsigned.</t>
        <t>Even if the shared secrets were enough to secure all RADIUS packets, administrators do not always derive shared secrets from secure sources of random numbers.  The "time to crack" numbers given above are the absolute best case, assuming administrators follow best practices for creating secure shared secrets.  For shared secrets created manually by a person, the search space is orders of magnitude smaller than the best case outlined above.  Rather than brute-forcing all possible shared secrets, an attacker can create a local dictionary which contains common or expected values for the shared secret.  Where the shared secret used by an administrator is in the dictionary, the cost of the attack can drop by multiple orders of magnitude.</t>
        <t>Implementors and administrators SHOULD assume that a hobbyist attacker with modest resource can crack most shared secrets created by people in minutes, if not seconds.</t>
        <t>Despite the ease of attacking MD5, it is still a common practice for some "cloud" and other RADIUS providers to send RADIUS/UDP packets over the Internet "in the clear".  It is also common practice for administrators to use "short" shared secrets, and to use shared secrets created by a person, or secrets derived from a limited character set.  Theses practice are easy to implement and follow, but they are highly insecure and MUST NOT be used.</t>
        <t>Further requirements in shared secrets are given below in <xref target="shared-secrets"/>.</t>
      </section>
      <section anchor="tunnel-coa">
        <name>Tunnel-Password and CoA-Request packets</name>
        <t>There are a number of security problems with the use Tunnel-Password attribute in CoA-Request and Disconnect-Request packets.  A full explanation requires a review of the relevant specifications.</t>
        <t><xref target="RFC5176"/> Section 2.3 describes how to calculate the Request Authenticator field for these packets:</t>
        <artwork><![CDATA[
Request Authenticator

   In Request packets, the Authenticator value is a 16-octet MD5
   [RFC1321] checksum, called the Request Authenticator.  The
   Request Authenticator is calculated the same way as for an
   Accounting-Request, specified in [RFC2866].
]]></artwork>
        <t>Where <xref target="RFC2866"/> Section 3 says:</t>
        <artwork><![CDATA[
   The NAS and RADIUS accounting server share a secret.  The Request
   Authenticator field in Accounting-Request packets contains a one-
   way MD5 hash calculated over a stream of octets consisting of the
   Code + Identifier + Length + 16 zero octets + request attributes +
   shared secret (where + indicates concatenation).  The 16 octet MD5
   hash value is stored in the Authenticator field of the
   Accounting-Request packet.
]]></artwork>
        <t>Taken together, these definitions mean that for CoA-Request packets, all attribute obfuscation is calculated with the Reply Authenticator being all zeroes.  In contrast for Access-Request packets, the Request Authenticator is mandated to be 16 octets of random data.  This difference reduces the security of the obfuscation.</t>
        <t>For Tunnel-Password, <xref target="RFC5176"/> Section 3.6 allows it to appear in CoA-Request packets:</t>
        <artwork><![CDATA[
   ...
   Change-of-Authorization Messages
   
   Request   ACK      NAK   #   Attribute
   ...
   0+        0        0    69   Tunnel-Password (Note 5)
   ...
   (Note 5) When included within a CoA-Request, these attributes
   represent an authorization change request.  Where tunnel attributes
   are included within a successful CoA-Request, all existing tunnel
   attributes are removed and replaced by the new attribute(s).
]]></artwork>
        <t>However, <xref target="RFC2868"/> Section 3.5 says that Tunnel-Password is encrypted with the Request Authenticator:</t>
        <artwork><![CDATA[
   Call the shared secret S, the pseudo-random 128-bit Request
   Authenticator (from the corresponding Access-Request packet) R,
]]></artwork>
        <t>The assumption that the Request Authenticator is random data is true for Access-Request packets.  That assumption is not true for CoA-Request packets.</t>
        <t>That is, when the Tunnel-Password attribute is used in CoA-Request packets, the only source of randomness in the obfuscation is the salt, as defined in <xref target="RFC2868"/> Section 3.5;</t>
        <artwork><![CDATA[
 Salt
   The Salt field is two octets in length and is used to ensure the
   uniqueness of the encryption key used to encrypt each instance of
   the Tunnel-Password attribute occurring in a given Access-Accept
   packet.  The most significant bit (leftmost) of the Salt field
   MUST be set (1).  The contents of each Salt field in a given
   Access-Accept packet MUST be unique.
]]></artwork>
        <t>This chain of unfortunate definitions means that there is only 15 bits of entropy in the Tunnel-Password obfuscation (plus the secret).  It is not known if this limitation makes it sufficiently easy for an attacker to determine the contents of the Tunnel-Password, as the obfuscated value still depends on the shared secret.  However, such limited entropy cannot be a good thing, and it is one more reason to deprecate RADIUS/UDP and RADIUS/TCP.</t>
        <t>Due to the above issues, implementations and new specifications SHOULD NOT use obfuscated attributes in CoA-Request or Disconnect-Request packets.</t>
      </section>
      <section anchor="tls-based-eap-methods-radiustls-and-ipsec">
        <name>TLS-based EAP methods, RADIUS/TLS, and IPSec</name>
        <t>The above analysis as to security and privacy issues focuses on RADIUS/UDP and RADIUS/TCP.  These issues are partly mitigated through the use secure transports, but it is still possible for information to "leak".</t>
        <t>When TLS-based EAP methods such as TTLS or PEAP are used, they still transport passwords inside of the TLS tunnel.  It is possible for an authentication server to terminate the TLS tunnel, and then proxy the inner data over RADIUS/UDP.  The design of both TTLS and PEAP make this process fairly trivial.  The inner data for TTLS is in Diameter AVP format, which can be trivially transformed to RADIUS attributes.  The inner data for PEAP is commonly EAP-MSCHAPv2, which can also be trivially transformed to bare EAP, or to MS-CHAPv2.</t>
        <t>Similar issues apply to RADIUS/TLS and IPSec.  A proxy receiving packets over IPSec terminates the secure tunnel, but then might forward the packets over an insecure transport protocol.  While this process could arguably be seen as a misconfiguration issue, it is never the less possible due to the design of the RADIUS protocol.  The design of RADIUS security is that it is "hop by hop", and there is no way for one "hop" to know anything about, or to control, the security of another "hop".</t>
        <t>The only solution to either issue would be to create a new protocol which is secure by design.  Unfortunately that path is not possible, and we are left with the recommendations contained in this document.</t>
      </section>
      <section anchor="other-issues">
        <name>Other Issues</name>
        <t>There are many other issues with RADIUS which are unrelated to security or privact.  As of the time of writing this document, those issues are being collated in <xref target="ISSUES"/>.  The bulk of the problems noted in that Wiki are operational considerations, along with inconsistencies in the previous RADIUS specifications.</t>
        <t>As the focus of this document is security, it does not address problems with the RADIUS protocol in general.  For example, there are known problems with the RADIUS state machine.  There are common practices which are secure but which are operationally expensive.  RADIUS accounting is known to be inaccurate and often inconsistent.</t>
        <t>Some of the issues noted in the above Wiki could potentially have security impact.  For example, if a RADIUS server is not implemented correctly, an attacker can perform a resource exhaustion attack on it, and effectively take it offline.  Proxies are subject to Denial of Service attacks even from trusted clients, because those clients originate packets at the request of untrusted and unknown users.  Rate limiting for RADIUS requests is a poorly tested or documented process, and largely relies on mutual trust of administrators.</t>
        <t>We hope that the above issues are addressed in a future document.  This document focuses on security issues related to transport protocols and authentication protocols, which will have to be sufficient for now.</t>
      </section>
    </section>
    <section anchor="all-short-shared-secrets-have-been-compromised">
      <name>All short Shared Secrets have been compromised</name>
      <t>Unless RADIUS packets are sent over a secure network (IPsec, TLS, etc.), administrators SHOULD assume that any shared secret of 8 characters or less has been compromised as soon as it is used.  Administrators SHOULD assume that any shared secret of 10 characters or less has been compromised by an attacker with significant resources.  Administrators SHOULD also assume that any private information (such as User-Password) which depends on such shared secrets has also been compromised.</t>
      <t>To be perfectly clear: if a User-Password, or CHAP-Password, or MS-CHAP password has been sent over the Internet via RADIUS/UDP or RADIUS/TCP in the last decade, you should assume that the underlying password has been compromised.</t>
    </section>
    <section anchor="blastradius">
      <name>The BlastRADIUS Attack</name>
      <t>This section gives some more detail on the attack, so that the reader can be informed as to why this document makes particular recommendations.</t>
      <t>An "on path" attacker can inject one or more Proxy-State attributes with special contents into an Access-Request packet. The Proxy-State attribute itself will not trigger any overflow or "out of bounds" issue with the RADIUS client or server.  Instead, the contents of the attributes will allow the attacker to create an MD5 known-prefix collision when the server calculates the Response Authenticator.  In effect, the attacker uses the RADIUS server, and its knowledge of the shared secret, to unknowingly authenticate packets which it has not created.</t>
      <t>The behavior of the Proxy-State attribute is extremely useful to this attack.  The attribute is defined in <xref section="5.33" sectionFormat="comma" target="RFC2865"/> as an opaque token which is sent by a RADIUS proxy, and is echoed back by RADIUS servers.  That is, the contents of the attribute are never examined or interpreted by the RADIUS server.  Even better, testing shows that all RADIUS clients will simply ignore any unexpected Proxy-State attributes which they receive.  Finally, implementations generally add Proxy-State to the end of response packets, which simplifies the attack.</t>
      <t>This attribute is therefore ideally suited to an attackers purpose of injecting arbitrary data into packets, without that data affecting client or server behavior.   The reasons for this behavior are outlined below in <xref target="proxy-state"/>.  While those reasons ended up being transient, the impact of those decisions has impacted RADIUS for decades.</t>
      <t>While it is possible to use other attributes to achieve the same effect, the use of Proxy-State is simple, and is sufficient to trigger the issue.  For example, it is theoretically possible to use the User-Name attribute for this attack, if it is echoed back in an Access-Accept, or even as part of the the contents of a Reply-Message in an Access-Accept.  There is no much benefit in further researching that attack, as the mitigations for attacks using Proxy-State will also protect clients and servers from a similar attacks which use other attributes.</t>
      <t>The injected data and resulting MD5 collision allows the attacker to modify the packet contents almost at will, and the client will still accept the modified packet as being authentic.  The attack allows nearly arbitrary attributes to be added to the response.  Those attributes are simply part of the MD5 collision calculation, and do not substantially impace the cost of that calculation.</t>
      <t>We reiterate that since the RADIUS server can be convinced to authenticate packets using a prefix chosen by the attacker, there is no need for the attacker to know the shared secret.  This attack succeeds no matter how secure the shared secret is, the only mitigation is to use Message-Authenticator or TLS.</t>
      <t>The attack is implemented via the following steps, which are numbered the same as in the original paper.</t>
      <ol spacing="normal" type="1"><li>The attacker requests network access from the RADIUS client (NAS).  This action triggers the NAS to send an Access-Request packet to the RADIUS server.</li>
        <li>The Access-Request is observed to obtain its contents, including the Request Authenticator field.  The attacker prevents this packet from reaching the server until the MD5 collision data has been calculated..  The NAS will retransmit the packet one or more times after a delay, giving the attacker time to calculate the chosen prefix.</li>
        <li>Some external resources are used to calculate an MD5 collision using the Request Authenticator, and the expected contents of an Access-Reject.  As Access-Reject packets are typically empty (or can be observed), the expected packet contents are known in their entirety.</li>
        <li>Once an MD5 collision is found, the resulting data is placed into one or more Proxy-State attributes in the previously seen Access-Request.  The attacker then sends this modified Access-Request to the RADIUS server.</li>
        <li>The RADIUS server responds with an Access-Reject, and includes the Proxy-State attributes from the modified Access-Request packets.  The packet contains the malicious Proxy-State(s), along with a Response Authenticator which depends on both those malicious attributes, and the shared secret.</li>
        <li>The attacker discards the original Access-Reject, and uses the chosen prefix data in the Proxy-State(s) to create a different (i.e. modified) response, such as an Access-Accept.  Other authorization attributes such as VLAN assignment can also be add, modified, or deleted.  This modified packet is sent to the NAS.</li>
        <li>The NAS receives the modified Access-Accept, verifies that the Response Authenticator is correct, and gives the user access, along with the attackers desired authorization.</li>
      </ol>
      <t>The result of this attack is a near-complete compromise of the RADIUS protocol.  The attacker can cause any user to be authenticated.  The attacker can give almost any authorization to any user.</t>
      <t>While the above description uses Access-Reject responses, we reiterate that the root cause of the vulnerability is in the Access-Request packets.  The attack will therefore succeed even if the server responds with Access-Accept, Access-Challenge, or Protocol-Error <xref target="RFC7930"/>.  The vulnerability in Access-Challenge allows MFA to be bypassed, as the attacker simply replaces the Access-Challenge with an Access-Accept.</t>
      <t>In addition to forging an Access-Accept for a user who has no credentials, the attacker can control the traffic of known and authenticated users.  Many modern Broadband Network Gateways (BNG)s, Wireless Lan Controllers (WLCs), and Broadband Remote Access Servers (BRAS) support configuring a dynamic HTTP redirect using Vendor Specific Attributes (VSA)s.  These VSAs are not protected by the shared secret, and could be injected into an Access-Accept in order to redirect a users traffic.  The attacker could then set up a malicious website to launch Zero-Day/Zero-Click attacks, driving subscribers to the website using an HTTP redirect.  This issue is compounded by the fact that many devices perform automatic HotSpot 1.0 style walled garden discovery.  The act of simply connecting to their home WiFi connect could be enough to compromise a subscriber's equipment.</t>
      <t>The following subsections define mitigations which can be used to protect clients and servers from this attack when using RADIUS/UDP or RADIUS/TCP.  However, we reiterate here, and in the rest of this document that the only long-term solution is to deprecate insecure transports entirely.  In the long term, implementers SHOULD remove all uses of RADIUS/UDP and RADIUS/TCP from their products.  Administrators SHOULD stop using RADIUS/UDP and RADIUS/TCP.</t>
      <section anchor="root-cause-of-the-attack">
        <name>Root Cause of the Attack</name>
        <t>Independent of any cryptographic vulnerability, there are a number of factors which led to this vulnerability being exploited.</t>
        <t>A major factor is the continued use of MD5 for security, instead of mandating the use of an HMAC with Message-Authenticator.  This change could have been made in <xref target="RFC2869"/> in the year 2000.  A reason for not mandating Message-Authenticator was the issue of backwards compatibility.  Unfortunately, issues which are not fixed only grow larger over time.  The issue of backwards compatibility is significantly worse now than it was in the year 2000.  History shows that a better approach is to fix issues immediately when they come up.</t>
        <t>Another factor is the principle of "be conservative in what you do, be liberal in what you accept from others", often known as Postel's law, after John Postel.  Looking at the Proxy-State attribute, it is intended for proxy to server signaling, and offers no other value for RADIUS clients.  A NAS does not send Proxy-State in an Access-Request, and should not receive Proxy-State in an Access-Accept.</t>
        <t>Reception of Proxy-State in an Access-Accept response is therefore a failure of signaling in the RADIUS protocol, and likely indicates a serious failure of configuration, implementation, or as seen in this case, an active attack.  If all clients had discarded responses which contained unexpected Proxy-State attributes, then this attack would have been prevented.</t>
        <t>With the benefit of experience, this specification errs on the side of security, while still allowing for backwards compatibility.  It is not acceptable to maintain insecure practices simply because a small number of implementations or organizations find it difficult to upgrade.  Insecure implementations or practices have a concrete cost not only to the insecure organizations, but also to other organizations via secondary effects.  When insecure organizations demand that others follow insecure practices continue due to perceived local costs, they are effectively offloading their costs onto everyone else.  This practice both decreases security, and increases costs.</t>
        <t>The solution here is to fix the protocol, and to mandate that everyone change to secure practices.  Implementations and/or organizations which do not update their systems will either be insecure, or will be incompatible with secure practices.</t>
      </section>
      <section anchor="changes-to-radius">
        <name>Changes to RADIUS</name>
        <t>There are a number of changes required to both clients and servers in order for all possible attack vectors to be closed.  Implementing only some of these mitigations means that an attacker could bypass the partial mitigations, and therefore still perform the attack.</t>
        <t>This section outlines the mitigation methods which protect systems from this attack, along with the motivation for those methods.</t>
        <t>We note that unless otherwise noted, the discussion here applies only to Access-Request packets, and to responses to Access-Request (i.e. Access-Accept, Access-Reject, Access-Challenge, and Protocol-Error packets).  All behavior involving other types of request and response packets remains unchanged.</t>
        <t>Similarly, the recommendations in this section only apply to UDP and TCP transport.   They do not apply to TLS transport, and no changes to TLS transport are needed to protect from this attack.  Clients and servers MUST NOT apply any of the new configuration flags to packets sent over TLS or DTLS transport.  Those configuration flags are designed to protect RADIUS/UDP and RADIUS/TCP, and they serve no purpose when TLS transport is used.</t>
        <t>However, Clients and servers SHOULD include Message-Authenticator in request and responses packets which are sent over TLS or DTLS transports.  While the attribute serves no security purpose, we recommend including Message-Authenticator because of the behavior of some implementations.  Some RADIUS proxies are known to include Message-Authenticator in forwarded packets only when the attribute exists in the packet received from the client.  It is therefore useful for systems to always include Message-Authenticator in Access-Request packets, even when TLS is used.  This behavior will only marginally increase the cost of RADIUS/TLS, and will increase the security of proxy implementations which might not implement the BlastRADIUS mitigations.</t>
        <t>We recognize that switching to TLS transport may require a significant amount of effort.  There is a substantial amount of work to perform in updating implementations, performing interoperability tests, changing APIs, changing user interfaces, and updating documentation.  This effort cannot realistically be done in a short time frame.</t>
        <t>There is therefore a need for a short-term action which can be implemented by RADIUS clients and servers which is both simple to do, and which is known to be safe.  The recommendations in this section are known to protect implementations from the attack; to be simple to implement; and also to allow easy upgrade without breaking existing deployments.</t>
        <t>The mitigation methods outlined here allow systems to both protect themselves from the attack, while not breaking existing networks.  There is no global "flag day" required for these changes.  Systems which implement these recommendations are fully compatible with legacy RADIUS implementations, and can help protect those legacy implementations.  However, when these mitigations are not implemented, systems are still vulnerable to the attack.</t>
        <t>Note that in some network architectures, the attack can be mitigated simply by upgrading the RADIUS server, so that it sends Message-Authenticator as the first attribute in all responses to Access-Request packets.  However, the goal of this specification is to fix all architectures supported by RADIUS systems, rather than a limited subset.  We therefore mandate new behavior for all RADIUS clients and servers, while acknowledging that some organizations may choose to not deploy all of the new functionality.  For overall network security and good practice, we still recommend that all RADIUS clients and servers be upgraded, and have the new "require Message-Authenticator" flag set.</t>
        <section anchor="clients-and-access-request">
          <name>Clients and Access-Request</name>
          <t>Clients MUST add Message-Authenticator to all Access-Request packets.</t>
          <t>This behavior MUST NOT be configurable.  Disabling it would open the system up to attack, and would prevent the other mitigation methods from working.  The root cause of the attack is that Access-Request packets lack integrity checks, so the most important fix is to add integrity checks to those packets.</t>
          <t>The Message-Authenticator SHOULD be the first attribute in all Access-Request packets.  That is, it should be placed immediately after the packet header.  Implementations MAY place the Message-Authenticator elsewhere in an Access-Request packet.</t>
          <t>From a cryptographic point of view, the location of Message-Authenticator does not matter for Access-Request packets, it just needs to exist somewhere in the packet.  However, as discussed below for Access-Accept etc. packets, the location of Message-Authenticator does matter for response packets.  It is better to have consistent and clear messaging for addressing this attack, instead of having different recommendations for different kinds of packets</t>
          <t>All RADIUS servers will validate the Message-Authenticator attribute correctly when that attribute is received in a packet.  We are not aware of any RADIUS servers which will reject or discard Access-Request packets if they unexpectedly contain a Message-Authenticator attribute.</t>
          <t>This behavior has been enabled in the FreeRADIUS server for over a decade, and there have been no reports of interoperability problems.  It is therefore safe for all clients to immediately implement this requirement.</t>
          <t>However, many existing RADIUS clients do not send Message-Authenticator.  It also may be difficult to upgrade some client equipment, as the relevant vendor may have gone out of business, or may have marked equipment as "end of life" and thus unsupported.  It is therefore necessary to both work with such systems by not breaking existing RADIUS deployments, while at the same time protecting them as much as practically possible.</t>
        </section>
        <section anchor="servers-and-access-request">
          <name>Servers and Access-Request</name>
          <t>Servers MUST have a per-client boolean configuration flag, which we call "require Message-Authenticator".  The default value for this flag MUST be "false" in order to maintain compatibility with legacy clients.</t>
          <t>For simplicity of configuration, servers SHOULD have a similar global flag, which is over-ridden by the more specific per-client flag.</t>
          <t>When this flag is set to "false", RADIUS servers MUST follow legacy behavior for validating and enforcing the existence of Message-Authenticator in Access-Request packets.  For example, enforcing the requirement that all packets containing EAP-Message also contain a Message-Authenticator attributes, but otherwise accepting and validating the Message-Authenticator attribute if it is present, while taking no action if the attribute is missing.</t>
          <t>The reason for the historical default value to be "false" is that many RADIUS clients do not send the Message-Authenticator attribute in all Access-Request packets.  Defaulting to a value of "true" means that the RADIUS server would be unable to accept packets from many legacy RADIUS clients, and existing networks would break.</t>
          <t>If this flag is "false", then the server can be vulnerable to the attack, even if the client has been updated to always send Message-Authenticator in all Access-Requests.    The attacker could simply strip the Message-Authenticator from the Access-Request, and proceed with the attack as if client had not been updated.  As a result, this flag MAY be set to "false" if the client is a NAS, and SHOULD NOT be set to "false" for proxies.</t>
          <t>When this flag is set to "true", all Access-Request packets which do not contain Message-Authenticator MUST be silently discarded.  This action protects the server from packets which have been modified in transit to remove Message-Authenticator.</t>
          <t>Administrators can set this flag to "true" for clients which send Message-Authenticator, and leave the flag as "false" for clients which cannot be upgraded.</t>
          <t>We note that "Section 7.2 of <xref target="BLAST"/> has the following comment about the FreeRADIUS server, which has had this configuration option since 2008:</t>
          <ul empty="true">
            <li>
              <t>If support for these old clients is not required, enabling this option would make our attacks infeasible.</t>
            </li>
          </ul>
          <t>Network administrators MUST set this flag to "true" for all clients which send Message-Authenticator.</t>
          <t>While servers must validate the contents of Message-Authenticator,  they MUST NOT check the location of that attribute.  There is no different meaning in RADIUS if Message-Authenticator is the first, second, or last attribute in a packet.  Servers MUST accept a RADIUS packet as valid if it passes authentication checks, no matter where Message-Authenticator is located in the packet.</t>
          <t>Unfortunately, there is no way for clients and servers to negotiate protocol-layer features in RADIUS/UDP or RADIUS/TCP.  An implementation cannot determine if packets are discarded due to an attack, or if they are discarded due to a mismatched configuration between client and server.  Implementations SHOULD therefore log the fact that the packet was discarded (with rate limits) in order to inform the administrator that either an attack is underway, or that there is a configuration mismatch between client and server.</t>
          <t>As a special case for debugging purposes, instead of discarding the packet, servers MAY instead send a Protocol-Error or Access-Reject response packet.  This packet MUST contain a Message-Authenticator attribute as the first attribute in the packet, otherwise an attacker could turn this response into an Access-Accept.  The response MUST also contain an Error-Cause attribute with value 510 (Missing Message-Authenticator).  The server MUST not send this response by default, as it this could cause the server to respond to forged Access-Request packets.</t>
          <t>The purpose of this Protocol-Error packet is to allow administrators to signal misconfigurations between client and server.  It is intended to only be used temporarily when new client to server connections are being configured, and MUST be disabled permanently once the connection is verified to work.</t>
          <t>This behavior SHOULD only be enabled when specifically configured by an administrator.  It MUST also be rate-limited, as there is no need to signal this error on every packet received by the server.  It SHOULD be automatically disabled when the server receives an Access-Request from a client which contains Message-Authenticator.  Implementations MAY instead automate this process, by sending a few such responses when packets from a client are first seen, and then not sending responses thereafter.</t>
          <t>As RADIUS clients are upgraded over time, RADIUS servers SHOULD enable the "require Message-Authenticator" flag by default.</t>
          <t>The next question is how to protect systems when legacy clients do not send Message-Authenticator.</t>
        </section>
        <section anchor="updated-servers-and-legacy-clients">
          <name>Updated Servers and Legacy Clients</name>
          <t>Where it is not possible for a server to be configured to require Message-Authenticator in Access-Request packets, it is still possible to largely protect servers from the attack.  We can motivate the solution by observing that the attack requires the server to receive packets containing Proxy-State, while "real" clients (i.e. not proxies) will never send Proxy-State.</t>
          <t>The mitigations in this section MUST NOT be used when the "require Message Authenticator" flag for a client is set to "true".</t>
          <t>A RADIUS server can still partially protect itself when the "require Message Authenticator" flag is set to "false", by adding an additional per-client boolean configuration flag, which we call "limit Proxy-State".  The intention here is to permit the server to accept Access-Request packets which are missing Message-Authenticator, but also to discard the modified packets which are a vector for this attack.</t>
          <t>When the flag is set to "false", RADIUS servers MUST follow legacy behavior for enforcing the existence of Message-Authenticator in Access-Request packets, as with the previous section.</t>
          <t>When the flag is set to "true", RADIUS servers MUST require that all Access-Request packets which contain a Proxy-State attribute also contain a Message-Authenticator attribute.  This flag is motivated by the realization that NASes which do not send Message-Authenticator in Access-Request packets also never send Proxy-State.  It is therefore safe to add a flag which checks for Proxy-State, because well-behaving NASes will never send it.  The only time the server will see a Proxy-State from a NAS is when the attack is taking place.</t>
          <t>For simplicity of configuration, servers SHOULD have a similar global flag, which is over-ridden by the more specific per-client flag.</t>
          <t>As RADIUS proxies are now mandated to add Messge-Authenticator to all proxied packets, this flag should be set only when the client is a NAS which cannot be upgraded, and MUST NOT be set in other situations.  Specifically, the flag MUST NOT be set when the client is a proxy,  the "require Message-Authenticator" flag MUST be used instead.</t>
          <t>The recommended behavior for this flag is to not just drop packets which contain Proxy-State, but instead to drop them only if they contain Proxy-State, and also do not contain Message-Authenticator.  The additional checks allow the server to be more flexible in what packets it accepts, without compromising on security.</t>
          <t>This flag is necessary because it may not be possible to upgrade some RADIUS clients for an extended period of time, or even at all.  Some products may no longer be supported, or some vendors have gone out of business.  There is therefore a need for RADIUS servers to protect themselves from to this attack, while at the same time being compatible with legacy RADIUS client implementations.</t>
          <t>The combination of these two flags is that we both obtain the positive result that the systems are protected as much as feasible, while at the same time avoiding the negative result of creating interoperability issues.  The local RADIUS server will be protected from attacks on the client to server path, so long as one of the two flags is set.</t>
          <t>While it is theoretically possible to perform the BlastRADIUS attack via attributes other than Proxy-State, no such exploits are known at this time.  Any such exploit would require that the server receive fields under the attackers control (e.g. User-Name), and echo them back in a response.  Such attacks are only possible when the server is configured to echo back attacker-controlled data, which is not the default behavior for most servers.</t>
          <t>It is therefore RECOMMENDED that servers echo back user-supplied data in responses only when the "require Message-Authenticator" flag is set to "true".  No other configuration is known to protect servers from all possible variants of this attack.</t>
          <t>As with the previous section, servers SHOULD log a message when packets are discarded due to this flag.  Servers MAY also send an error response, subject to the caveats and considerations described in the previous section for those responses.</t>
          <t>These two configuration flags will not protect clients (NASes or proxies) from servers which have not been upgraded or configured correctly.  More behavior changes to servers and clients are required.</t>
        </section>
        <section anchor="server-responses-to-access-request">
          <name>Server Responses to Access-Request</name>
          <t>Servers MUST add Message-Authenticator as the first attribute in all responses to Access-Request packets.  That is, all Access-Accept, Access-Reject, Access-Challenge, and Protocol-Error packets.  The attribute MUST be the first one in the packet, immediately after the 20 octet packet header.</t>
          <t>Adding Message-Authenticator as the first attribute means that for the purposes of MD5 known prefixes attacks, essentially the entire packet is an unknown suffix.  The attacker is therefore unable to leverage a known prefix, and the vulnerability is mitigated.</t>
          <t>This behavior also protects one client to server hop, even if the server does not require Message-Authenticator in Access-Request packets, and even if the client does not examine or validate the contents of the Message-Authenticator.</t>
          <t>We note that in contrast, adding a Message-Authenticator to the end of response packets will only mitigate the attack if the client implements the "require Message-Authenticator" flag, and has it set to "true".  As there is no feature negotiation in RADIUS, the server has no way of knowing the clients configuration, and therefore needs to behave as if the client has the most insecure configuration.</t>
          <t>When the Message-Authenticator is the last attribute in a packet, the attacker can treat the Message-Authenticator as an unknown suffix, as with the shared secret.  The attacker can then calculate the prefix as before, and have the RADIUS server authenticate the packet which contains the prefix.  The attack is only prevented when the Message-Authenticator is the first attribute in the packet, i.e. when no other attributes appear in the packet before Message-Authenticator.  We direct the reader to Section 7.2 of <xref target="BLAST"/> for a more complete description of these issues.</t>
          <t>The location of the Message-Authenticator attribute is critical to protect legacy clients which do not verify that attribute. Many legacy clients do not send Message-Authenticator in Access-Request packets, and therefore are highly likely to not validate it in responses to those Access-Requests.  Upgrading all of these clients may be difficult, or in some cases impossible.  It is therefore important to have mitigation factors which protect those systems.</t>
          <t>The requirement above to send Message-Authenticator first in response packets therefore protects those legacy clients, as the known prefix attack cannot occur.  The client will still verify the Response Authenticator for the unmodified packet, and will then accept the unmodified, and properly authenticated packet.</t>
          <t>We note that Message-Authenticator has been defined for almost twenty-five (25) years, since <xref target="RFC2869"/>.  All standards-compliant clients will validate Message-Authenticator; or if they do not validate it, will ignore it.</t>
          <t>As it is difficult to upgrade both clients and servers simultaneously, we also need a method to protect clients when the server has not been updated.  That is, clients cannot depend on the Message-Authenticator existing in response packets.  Clients need to take additional steps to protect themselves, independent of any server updates.</t>
        </section>
        <section anchor="clients-receiving-responses">
          <name>Clients Receiving Responses</name>
          <t>As discussed above, an attacker can remove or hide Message-Authenticator from the response packet, and still perform the attack.  Clients (and proxies acting as clients) therefore MUST also implement a configuration flag "require Message-Authenticator", which mirrors the same flag for servers.  When the flag is set to "false", RADIUS clients MUST follow legacy behavior for enforcing the existence of Message-Authenticator in response packets.</t>
          <t>When the flag is set to "true", the client MUST silently discard (as per <xref section="1.2" sectionFormat="comma" target="RFC2865"/>) any response to Access-Request packets which does not contain a Message-Authenticator attribute.  This check MUST be done before the Response Authenticator or Message-Authenticator has been verified.  No further processing of the packet should take place.</t>
          <t>While a client MUST validate the contents of Message-Authenticator, it MUST NOT check the location of that attribute.  There is no different meaning in RADIUS if Message-Authenticator is the first, second, or last attribute in a packet.  Clients MUST accept a RADIUS packet as valid if it passes authentication checks, no matter the location of the Message-Authenticator attribute.</t>
          <t>That is, if the Message-Authenticator exists anywhere in the response packet, and that attribute passes validation, then the client can trust that the response from the server has not been modified by an attacker.</t>
          <t>When the response is discarded, the client MUST behave as if the response was never received.  That is, any existing retransmission timers MUST NOT be modified as a result of receiving a packet which is silently discarded.</t>
          <t>Unfortunately, the client cannot determine if the packets were discarded due to an active attack, or if they were discarded due to a mismatched configuration between client and server.  The client SHOULD log the fact that the packet was discarded (with rate limits) in order to inform the administrator that either an attack is underway, or that there is a configuration mismatch between client and server.  The solution to the inability of legacy RADIUS to perform signaling and capability negotiation is not to update the protocol.  Instead, the solution is to move to TLS.</t>
        </section>
        <section anchor="status-server">
          <name>Status-Server</name>
          <t>While the attack works only for Access-Request packets, Access-Accept or Access-Reject can also be sent in response to Status-Server packets.  In order to simplify client implementations, servers MUST follow the above recommendations relating to Message-Authenticator when sending Access-Accept or Access-Reject packets, even if the original request was Status-Server.</t>
          <t>This requirement ensures that clients can examine responses independent of any requests.  That is, the client code can do a simple verification pass of response packets prior to doing any more complex correlation of responses to request.</t>
        </section>
      </section>
      <section anchor="related-issues">
        <name>Related Issues</name>
        <t>This section contains discussions of issues related to the BlastRADIUS vulnerability which do not involve changes to the RADIUS protocol.  It explains why some alleged solutions are inadequate or inappropriate.</t>
        <section anchor="documentation-and-logging">
          <name>Documentation and Logging</name>
          <t>It is RECOMMENDED that RADIUS server implementations document the behavior of these flags in detail, including how they help protect against this attack.  We believe that an informed administrator is more likely to engage in secure practices.</t>
          <t>Similarly, when either of the above flags cause a packet to be discarded, the RADIUS server SHOULD log a descriptive message (subject to rate limiting) about the problematic packet.  This log is extremely valuable to administrators who wish to determine if anything is going wrong, and what to do about it.</t>
        </section>
        <section anchor="alternative-solutions">
          <name>Alternative Solutions</name>
          <t>An alternative configuration flag with a similar effect to the "limit Proxy-State" flag could be one called "this client is a NAS, and will never send Proxy-State".  The intention for such a flag would be to clearly separate RADIUS proxies (which always send Proxy-State), from NASes (which will never send Proxy-State).  When the flag is set for a client, the server could then discard Access-Request packets which contain Proxy-State.  Alternatively, the server could also discard Proxy-State from all responses sent to that client.</t>
          <t>Such a flag, however, depends on network topology, and fails to correct the underlying lack of packet authenticity and integrity.  The flag may also work for one NAS, but it is likely to be incorrect if the NAS is replaced by a proxy.  Where there are multiple different pieces of NAS equipment behind a NAT gateway, the flag is also likely to be correct for some packets, and incorrect for others.</t>
          <t>Setting configuration flags by the desired outcome is preferable to setting flags which attempt to control network topology.</t>
        </section>
        <section anchor="non-mitigations">
          <name>Non-Mitigations</name>
          <t>It may be tempting to come up with other "ad hoc" solutions to this vulnerability.  Such solutions are NOT RECOMMENDED, as they are likely to either break existing RADIUS deployments, or else they will not prevent the attack.  The mitigations described in this document not only prevent the attack, they do so without affecting normal RADIUS operation.  There is therefore no reason to use any other methods.</t>
          <t>Other attempted mitigation factors are discussed in the "BlastRADIUS" document.  For example, "BlastRADIUS" Section 7.4 explains why decreasing timeouts simply increases the cost of the attack without preventing it.  Decreasing timeouts also can negatively affect normal traffic.</t>
          <t><xref target="BLAST"/> Section 7.7 explains why validating Proxy-State, or looking for unexpected Proxy-State does not protect from the attack.  The attacker can likely just change the nature of the attack, and bypass those checks.</t>
          <t>There is no reason to implement "ad hoc" solutions when a solution exists which has passed reviews by both the BlastRADIUS cryptographers, and by the RADIUS working group.  There is every reason to believe that cryptographic operations designed by experts and subject to rigorous peer review are better than random guesses made by programmers lacking relevant cryptographic and RADIUS experience.</t>
          <t>Similarly, switching away from RADIUS to another protocol will not protect from the attack, as there is no other protocol which can replace RADIUS.  No other protocol is supported by medium to low-end networking devices for end-user authentication, authorization, and accounting.  Outside of situations where Diameter is used, the choice for nearly every use-case which controls network access is limited to one protocol: RADIUS.</t>
          <t>Despite this reality, some "security" sites have recommended "securing" the network by switching to "alternative" protocols.  Such recommendations are incorrect and inappropriate.</t>
          <t>Diameter <xref target="RFC6733"/> is the closest protocol in functionality to RADIUS, but the Diameter use-case is applicable to large-scale telecommunications and internet service providers (ISPs).  Support for Diameter is not available in equipment available to consumers or enterprises.  As such, replacing RADIUS with Diameter is not an option.</t>
          <t>Other proposals for protocols to replace RADIUS are even less effective.  TACACS+ <xref target="RFC8907"/> has some overlap with RADIUS for administrator login to network devices, but it cannot be used outside of that limited scope.  TACACS+ does not support 802.1X, end-user authentication, or end-user accounting.  It is therefoe impossible for an ISP or enterprise to replace RADIUS with TACACS+.</t>
          <t>Kerberos <xref target="RFC4120"/> is also not a option.  It is most generally used to authenticate applications, when the underlying system already has network access.  Kerberos also does not support 802.1X, and does not support accounting.</t>
          <t>The situation is much the same with any proposal to replace RADIUS with IPSec.  While IPSec does authenticates devices prior to bringing up the VPN, those devices must already have network access.  IPSec also requires that the end-user traffic be transported over the IPSec connection, where RADIUS does not transport any end-user traffic.</t>
          <t>In conclusion, recommendations to use alternate protocols are, at best, misguided.  We do not recommend following "security" advice which is based on a fundamental misunderstanding of networking protocols.</t>
        </section>
        <section anchor="network-operators">
          <name>Network Operators</name>
          <t>The most important outcome of this attack for network operators is that where possible, all RADIUS traffic should use TLS transport between client and server.</t>
          <t>Methods other than IPSec to mitigate the attack are less secure, they still fail at adding privacy, and are therefore less useful.  We recognize that not all networking equipment supports TLS transport, so we therefore give additional recommendations here which operators can follow to help mitigate the attack.</t>
          <t>All networking equipment should be physically secure.  There is no reason to have critical portions of networking infrastructure physically accessibly to the public.  Where networking equipment must be in public areas (e.g. access points), that equipment SHOULD NOT have any security role in the network.  Instead, any network security validation or enforcement SHOULD be done by separate equipment which is in a physically secure location.</t>
          <t>It is RECOMMENDED that all RADIUS traffic be sent over a management VLAN.  This recommendation should be followed even if TLS transport is used.  There is no reason to mix user traffic and management traffic on the same network.</t>
          <t>Using a management network for RADIUS traffic will generally prevent anyone other than trusted administrators from performing this attack.  We say "generally", because security is limited by the least secure part of the network.  If a network device has some unrelated vulnerability, then an attacker could exploit that vulnerability to gain access to the management network.  The attacker would then be free to exploit this issue.</t>
          <t>Only the use of TLS will prevent such attacks from being chained together.</t>
          <t>Similarly, there are few reasons to use RADIUS/TCP.  Any system which supports RADIUS/TCP likely also supports TLS, and that should be used instead.</t>
          <t>Finally, any RADIUS/UDP or RADIUS/TCP traffic MUST NOT be sent over public networks such the Internet. This issue is discussed in more detail later in this document.</t>
        </section>
      </section>
      <section anchor="limitations-of-the-mitigations">
        <name>Limitations of the Mitigations</name>
        <t>The above mitigations have some limitations.  The design of the mitigations had to allow for backwards compatibility with legacy RADIUS systems, while still allowing for (but not requiring) whole-sale network upgrades.  There is a trade-off to be made between perfectly secure networks which are unusable, and networks which are usable but somewhat insecure.  The mitigations outlined here create as much security as possible, while still not breaking existing networks.</t>
        <t>The result is that there are situations where a network is functional, but insecure.  This section outlines those limitations.</t>
        <section anchor="vulnerable-systems">
          <name>Vulnerable Systems</name>
          <t>A RADIUS server is vulnerable to the attack if it does not require that all received Access-Request packets contain a Message-Authenticator attribute.  This vulnerability exists for many common uses of Access-Request, including packets containing PAP, CHAP, MS-CHAP, or packets containing "Service-Type = Authorize-Only".   The vulnerability is also transitive.  If any one RADIUS server in a proxy chain is vulnerable, then the attack can succeed, and the attacker can gain unauthenticated and/or unauthorized access.</t>
          <t>Simply having the Message-Authenticator attribute present in Access-Request packets is not sufficient.  In order to be protected, a server must require that the attribute is present, and discard packets where it is missing.  Similarly, the client must also require that the attribute is present, and discard packets where it is missing.</t>
          <t>The attack is fully mitigated only when both sides of the RADIUS conversation are updated and configured correctly.</t>
        </section>
        <section anchor="unaffected-systems">
          <name>Unaffected Systems</name>
          <t>There are a number of systems which are not vulnerable to this attack.  The most important ones are systems which only perform EAP authentication, such as with 802.1X / WPA enterprise.  The EAP over RADIUS protocol is defined in <xref section="3.3" sectionFormat="comma" target="RFC3579"/> which states explicitly:</t>
          <ul empty="true">
            <li>
              <t>If any packet type contains an EAP-Message attribute it MUST also contain a Message-Authenticator.</t>
            </li>
          </ul>
          <t>This requirement reiterates that of <xref section="5.13" sectionFormat="comma" target="RFC2869"/>, which defines EAP-Message and Message-Authenticator, but which does not get into details about EAP.</t>
          <t>This requirement is enforced by all known RADIUS servers.  As a result, when roaming federations such as eduroam use RADIUS/UDP, it is not possible for the attack to succeed.</t>
          <t>Other roaming groups such as OpenRoaming require the use of TLS, and are not vulnerable.  Other roaming providers generally use VPNs to connect disparate systems, and are also not vulnerable.</t>
          <t>802.1X / WPA enterprise systems have an additional layer of protection, due to the use of the master session keys (MSK) which are derived from the EAP authentication method.  These keys are normally carried in an Access-Accept, in the MS-MPPE-Recv-Key and MS-MPPE-Send-Key attributes, and are used to secure the link between the NAS and the supplicant.  The contents of the attributes are obfuscated via the same method used for Tunnel-Password, and are not visible to an "on-path" attacker.</t>
          <t>While an attacker can perhaps force an Access-Accept in some situations, or strip the Message-Authenticator from packets, it is not currently possible for an attacker to see, modify, or create the correct MSK for the EAP session.  As a result, when 802.1X / WPA enterprise is used, even a successful attack on the Access-Accept packet would likely not result in the attacker obtaining network access.</t>
        </section>
        <section anchor="the-weakest-link">
          <name>The Weakest Link</name>
          <t>RADIUS security is done on a "hop by hop" basis, which means that an attacker can take advantage of the weakest link in a proxy chain in order to attack other systems which have fully implemented the above mitigations.  If the packets are passed through one or more proxies, then any one vulnerable proxy will still allow the attack to take place.</t>
          <t>If proxies are used, then the weakest link in the proxy chain limits the security of the entire chain. That is, it does not matter if one hop implements RADIUS/TLS, if another hop implements RADIUS/UDP without sending or requiring Message-Authenticator.</t>
          <t>Even worse, proxies have full control over packet contents.  A malicious proxy can change a reject into an accept, and can add or delete any authorization attributes it desires.  While proxies are generally part of a trusted network, there is every benefit in limiting the number of participants in the RADIUS conversation.</t>
          <t>Proxy chains SHOULD therefore be avoided where possible, and <xref target="RFC7585"/> dynamic discovery should be used where possible.  RADIUS clients and servers SHOULD also be configured with static IP addresses, and with static routes.  This static configuration also protects the systems from DHCP related attacks where an attacker spoofs DHCP to cause clients or servers to route packets through the a system of the attackers choice.</t>
        </section>
      </section>
      <section anchor="proxy-state">
        <name>Note on Proxy-State</name>
        <t>As the BlastRADIUS paper points out in Appendix A:</t>
        <ul empty="true">
          <li>
            <t>The presence of this attribute makes the protocol vulnerability much simpler to exploit than it would have been otherwise.</t>
          </li>
        </ul>
        <t>To see why Proxy-State has this particular design, we go back to the original discussion in May 1995 <xref target="MAY-1995"/></t>
        <ul empty="true">
          <li>
            <t>The RADIUS proxy may place any state information (subject to the length
limitations of a RADIUS attribute) that it will need to transform a
reply from its server into a reply to its client.  This is typically
the original authenticator, identifier, IP address and UDP port number
of the proxy's RADIUS client.</t>
          </li>
        </ul>
        <t>There appear to be few, if any, RADIUS servers which implemented this suggestion.  In part because later discussions note:</t>
        <ul empty="true">
          <li>
            <t>This works only if the NAS is
prepared to accept replies from a proxy server for a request issued to
a different server.</t>
          </li>
        </ul>
        <t>This stateless proxy design has a number of additional issues, most notably violating the <xref target="RFC3539"/> "end-to-end" principle.  It therefore negatively impacts the stability of a RADIUS proxy system.</t>
        <t>This definition for Proxy-State later changed in <xref section="5.33" sectionFormat="comma" target="RFC2865"/> to</t>
        <ul empty="true">
          <li>
            <t>Usage of the Proxy-State Attribute is implementation dependent.  A
description of its function is outside the scope of this
specification.</t>
          </li>
        </ul>
        <t>In practice, the utility of Proxy-State is limited to detecting proxy loops.  Proxies can count the number of Proxy-State attributes in received packets, and if the total is more than some number, then a proxy loop is likely.  We offer no advice on what to do if a proxy loop is detected, as RADIUS has no ability to signal protocol-layer errors.</t>
        <t>It is likely that a "hop count" attribute would likely have been simpler to implement, but even in 1996, it was likely difficult to change the behavior of proxies due to multiple implementations.</t>
      </section>
      <section anchor="intrusion-detection-systems">
        <name>Intrusion Detection Systems</name>
        <t>Intrusion detection systems can be updated to detect and/or warn about the attack with the following rules.  In the interests of brevity and generality, the rules are written as plain text.</t>
        <ol spacing="normal" type="1"><li>
            <t>Access-Request does not contain a Message-Authenticator attribute.  </t>
            <t>
Action: Warn the administrator that the system is vulnerable, and should be upgraded.</t>
          </li>
          <li>
            <t>Access-Accept, Access-Reject, or Access-Challenge does not contain a Message-Authenticator attribute.  </t>
            <t>
Action: Warn the administrator that the system is vulnerable, and should be upgraded.</t>
          </li>
          <li>
            <t>Access-Accept, Access-Reject, or Access-Challenge contains a Message-Authenticator attribute, but it is not the first attribute in the packet.  </t>
            <t>
Action: Warn the administrator that the system may be vulnerable, and should be upgraded.</t>
          </li>
          <li>
            <t>Access-Request packet received by a RADIUS server contains Proxy-State, when the RADIUS client is a NAS.  </t>
            <t>
Action: Alert that an attack is likely taking place.  </t>
            <t>
Note that the check should be for packets received by the RADIUS server, and not for packets sent by the NAS.  The attack involves packets being modified after they are sent by the NAS, and before they are received by the RADIUS server.</t>
          </li>
          <li>
            <t>Access-Accept, Access-Reject, or Access-Challenge sent by a RADIUS server contain Proxy-State, when the RADIUS client is a NAS.  </t>
            <t>
Action: Alert that an attack is likely taking place.  </t>
            <t>
Note that the check should be for packets sent by the RADIUS server, and not for packets received by the NAS.  The attacker can modify packets to "hide" Proxy-State in another attribute, such as Vendor-Specific.</t>
          </li>
          <li>
            <t>Any RADIUS traffic is sent over UDP or TCP transport, without IPSec or TLS.  </t>
            <t>
Action: Warn that the system uses deprecated transport protocols, and should be upgraded.</t>
          </li>
          <li>
            <t>Any RADIUS traffic is sent external to the organization over UDP or TCP transport, without IPSec or TLS.  </t>
            <t>
Action: Warn that this is an insecure configuration, and can expose users private data, identities, passwords, locations, etc. to unknown attackers.</t>
          </li>
        </ol>
        <t>These rules should assist administrators with ongoing security and monitoring.</t>
      </section>
    </section>
    <section anchor="deprecating-insecure-transports">
      <name>Deprecating Insecure Transports</name>
      <t>The solution to an insecure protocol which uses thirty year-old cryptography is to deprecate the use insecure cryptography, and to mandate modern cryptographic transport.</t>
      <section anchor="deprecating-radiusudp-and-radiustcp">
        <name>Deprecating RADIUS/UDP and RADIUS/TCP</name>
        <t>RADIUS/UDP and RADIUS/TCP MUST NOT be used outside of secure networks.  A secure network is one which is believed to be safe from eavesdroppers, attackers, etc.  For example, if IPsec is used between two systems, then those systems may use RADIUS/UDP or RADIUS/TCP over the IPsec connection.</t>
        <t>However, administrators should not assume that such uses are always secure.  An attacker who breaks into a critical system could use that access to view RADIUS traffic, and thus be able to attack it.  Similarly, a network misconfiguration could result in the RADIUS traffic being sent over an insecure network.</t>
        <t>Neither the RADIUS client nor the RADIUS server would be aware of any network misconfiguration (e.g. such as could happen with IPSec).  Neither the RADIUS client nor the RADIUS server would be aware of any attacker snooping on RADIUS/UDP or RADIUS/TCP traffic.</t>
        <t>In contrast, when TLS is used, the RADIUS endpoints are aware of all security issues, and can enforce any necessary security policies.</t>
        <t>Any use of RADIUS/UDP and RADIUS/TCP is therefore NOT RECOMMENDED, even when the underlying network is believed to be secure.</t>
      </section>
      <section anchor="mandating-secure-transports">
        <name>Mandating Secure transports</name>
        <t>All systems which send RADIUS packets outside of secure networks MUST use either IPSec, RADIUS/TLS, or RADIUS/DTLS.  For operational and security reasons, it is RECOMMENDED to use RADIUS/TLS or RADIUS/DTLS instead of IPSec.</t>
        <t>Unlike (D)TLS, use of IPSec means that applications are generally unaware of transport-layer security. Any problem with IPSec such as configuration issues, negotiation or re-keying problems are typically  presented to the RADIUS servers as 100% packet loss.  These issues may occur at any time, independent of any changes to a RADIUS application using that transport.  Further, network misconfigurations which remove all security are completely transparent to the RADIUS application: packets can be sent over an insecure link, and the RADIUS server is unaware of the failure of the security layer.</t>
        <t>In contrast, (D)TLS gives the RADIUS application completely knowledge and control over transport-layer security.  The failure cases around (D)TLS are therefore often clearer, easier to diagnose and faster to resolve than failures in IPSec.   For example, a failed TLS connection may return a "connection refused" error to the application, or any one of many TLS errors indicating which exact part of the TLS conversion failed during negotiation.</t>
      </section>
      <section anchor="crypto-agility">
        <name>Crypto-Agility</name>
        <t>The crypto-agility requirements of <xref target="RFC6421"/> are addressed in <xref target="RFC6614"/> Appendix C, and in Section 10.1 of <xref target="RFC7360"/>.  For clarity, we repeat the text of <xref target="RFC7360"/> here, with some minor modifications to update references, without changing the content.</t>
        <t>Section 4.2 of <xref target="RFC6421"/> makes a number of recommendations about security properties of new RADIUS proposals.  All of those recommendations are satisfied by using TLS or DTLS as the transport layer.</t>
        <t>Section 4.3 of <xref target="RFC6421"/> makes a number of recommendations about backwards compatibility with RADIUS.  <xref target="RFC7360"/> Section 3 addresses these concerns in detail.</t>
        <t>Section 4.4 of <xref target="RFC6421"/> recommends that change control be ceded to the IETF, and that interoperability is possible.  Both requirements are satisfied.</t>
        <t>Section 4.5 of <xref target="RFC6421"/> requires that the new security methods apply to all packet types.  This requirement is satisfied by allowing TLS and DTLS to be used for all RADIUS traffic.  In addition, <xref target="RFC7360"/> Section 3, addresses concerns about documenting the transition from legacy RADIUS to crypto-agile RADIUS.</t>
        <t>Section 4.6 of <xref target="RFC6421"/> requires automated key management.  This requirement is satisfied by using TLS or DTLS key management.</t>
        <t>We can now finalize the work began in <xref target="RFC6421"/>.  This document updates <xref target="RFC2865"/> to state that any new RADIUS specification MUST NOT introduce new "ad hoc" cryptographic primitives to authenticate packets as was done with the Request / Response Authenticator, or to obfuscate attributes as was done with User-Password and Tunnel-Password.  We allow legacy RADIUS-specific cryptographic methods existing as of the publication of this document to be used for historical compatibility.  However, all new cryptographic work which is specific to the RADIUS protocol is forbidden.</t>
        <t>We recognize that RADIUS/UDP will still be in use for many years, and that new standards may require some modicum of privacy.  As the BlastRADIUS attack shows, RADIUS/UDP security is inadequate.  The solution is not to fix RADIUS/UDP.  The solution is to deprecate it entirely.</t>
        <t>All new security and privacy requirements in RADIUS MUST be provided by a secure transport layer such as TLS or IPSec.  As noted above, simply using IPsec is not always enough, as the use (or not) of IPsec is unknown to the RADIUS application.</t>
        <t>The restriction forbidding new cryptographic work in RADIUS does not apply to the data being transported in RADIUS attributes.  For example, a new authentication method could use new cryptographic methods, and would be permitted to be transported in RADIUS.  This authentication method could be a new EAP method, or any other data which is opaque to the RADIUS transport.  In those cases, RADIUS serves as a transport layer for the authentication method.  The authentication data is treated as opaque data for the purposes of Access-Request, Access-Challenge, etc. packets.  There would be no need for the RADIUS protocol to define any new cryptographic methods in order to transport this data.</t>
        <t>Similarly, new specifications MAY define new attributes which use the obfuscation methods for User-Password as defined in <xref target="RFC2865"/> Section 5.2, or for Tunnel-Password as defined in <xref target="RFC2868"/> Section 3.5.  However, due to the issues noted above in <xref target="tunnel-coa"/>, the Tunnel-Password obfuscation method MUST NOT be used for packets other than Access-Request, Access-Challenge, and Access-Accept.  If the attribute needs to be send in another type of packet, then the protocol design is likely wrong, and needs to be revisited.  It is again a difficult choice to forbid certain uses of the Tunnel-Password obfuscation method, but we believe that doing so is preferable to allowing sensitive data to be obfuscated with less security than the original design intent.</t>
      </section>
    </section>
    <section anchor="migration-path-and-recommendations">
      <name>Migration Path and Recommendations</name>
      <t>We recognize that it is difficult to upgrade legacy devices with new cryptographic protocols and user interfaces.  The problem is made worse because of the volume of RADIUS devices which are in use.  The exact number is unknown, and can only be approximated.  Our best guess is that at the time of this writing there are millions of devices supporting RADIUS/UDP in daily use.  It takes significant time and effort to correct the deficiencies of all of them.</t>
      <t>We therefore need to define a migration path to using secure transports.  In the following sections, we give a number of migration steps which could each be done independently.  We recommend increased entropy for shared secrets.  We also mandate the use of Message-Authenticator in all Access-Request packets for RADIUS/UDP and RADIUS/TCP.  Finally, where <xref target="RFC6614"/> Section 2.3 makes support for TLS-PSK optional, we suggest that RADIUS/TLS and RADIUS/DTLS implementations SHOULD support TLS-PSK.</t>
      <section anchor="shared-secrets">
        <name>Shared Secrets</name>
        <t><xref target="RFC2865"/> Section 3 says:</t>
        <ul empty="true">
          <li>
            <t>It is preferred that the secret be at least 16
octets.  This is to ensure a sufficiently large range for the
secret to provide protection against exhaustive search attacks.
The secret MUST NOT be empty (length 0) since this would allow
packets to be trivially forged.</t>
          </li>
        </ul>
        <t>This recommendation is no longer adequate, so we strengthen it here.</t>
        <t>RADIUS implementations MUST support shared secrets of at least 32 octets, and SHOULD support shared secrets of 64 octets.  Implementations MUST warn administrators that the shared secret is insecure if it is 12 octets or less in length.</t>
        <t>Administrators SHOULD use shared secrets of at least 24 octets, generated using a source of secure random numbers.   Any other practice is likely to lead to compromise of the shared secret, user information, and possibly of the entire network.</t>
        <t>Creating secure shared secrets is not difficult.  The following figure outlines four separate ways to create shared secrets.</t>
        <artwork><![CDATA[
    openssl rand -base64 16

    dd if=/dev/urandom bs=1 count=16 | base64

    dd if=/dev/urandom bs=1 count=16 | base32

    dd if=/dev/urandom bs=1 count=16 |
        (hexdump -ve '/1 "%02x"' && echo)
]]></artwork>
        <t>Only one of the above commands should be run, as they are functionally equivalent.  Each command reads 128 bits (16 octets) of random data from a secure source, and encodes it as printable / readable ASCII.  This form of PSK will be accepted by any implementation which supports at least 32 octets for PSKs.  Larger PSKs can be generated by changing the "16" number in the command to a larger value.  The above derivation assumes that the random source returns one bit of entropy for every bit of randomness which is returned.  Sources failing that assumption are NOT RECOMMENDED.</t>
        <t>Given the simplicity of creating strong secrets, there is no excuse for using weak shared secrets with RADIUS.  The management overhead of dealing with complex secrets is less than the management overhead of dealing with compromised networks.</t>
        <t>Over all, the security analysis of shared secrets is similar to that for TLS-PSK.  It is therefore RECOMMENDED that implementors manage shared secrets with same the practices which are recommended for TLS-PSK, as defined in <xref target="RFC8446"/> Section E.7 and <xref target="RFC9257"/> Section 4.</t>
        <t>On a practical node, RADIUS implementers SHOULD provide tools for administrators to help them create and manage secure shared secrets.  The cost to do so is minimal for an implementer.  Providing such tools can further enable and motivate administrators to use secure practices.</t>
      </section>
      <section anchor="message-authenticator">
        <name>Message-Authenticator</name>
        <t>The Message-Authenticator attribute was defined in <xref target="RFC3579"/> Section 3.2.  The "Note 1" paragraph at the bottom of <xref target="RFC3579"/> Section 3.2 required that Message-Authenticator be added to Access-Request packets when the EAP-Message as present, and suggested that it should be present in a few other situations.   The BlastRADIUS attack has shown that these recommendations are inadequate.</t>
        <t>While the text in <xref target="blastradius"/> goes into detail about the mitigations, we summarize them here.</t>
        <t>RADIUS clients MUST include the Message-Authenticator in all Access-Request packets when UDP or TCP transport is used.  RADIUS servers MUST also include the Message-Authenticator as the first attribute in responses to Access-Accept.  Both clients and servers MUST have a boolean flag which we call "require Message-Authenticator".  When set to "true", implementations MUST silently discard packets which do not contain Message-Authenticator.  Servers MUST have a boolean flag which we call "limit Proxy-State".  This flag is only examined when the "require Message-Authenticator" flag is set to "false".  When the "limit Proxy-State" is set to "true", servers MUST discard packets which contain Proxy-State but do not also contain Message-Authenticator.</t>
        <t>In contrast, when TLS-based transports are used, the Message-Authenticator attribute serves no purpose, and could be omitted, even when the Access-Request packet contains an EAP-Message attribute.  However, implementations SHOULD include it, even if it servers no immediate purpose.  As noted earlier, including Message-Authenticator can increase the security of legacy proxies which do not implement the BlastRADIUS mitigations.</t>
        <t>Servers receiving Access-Request packets over TLS-based transports SHOULD NOT silently discard a packet if it is missing a Message-Authenticator attribute.  However, if the Message-Authenticator attribute is present, it still MUST be validated as discussed in <xref target="RFC7360"/>.</t>
      </section>
      <section anchor="recommending-tls-psk">
        <name>Recommending TLS-PSK</name>
        <t>Given the insecurity of RADIUS/UDP, the absolute minimum acceptable security is to use strong shared secrets.  However, administrator overhead for TLS-PSK is not substantially higher than for shared secrets, and TLS-PSK offers significantly increased security and privacy.</t>
        <t>It is therefore RECOMMENDED that implementations support TLS-PSK.  In some cases TLS-PSK is preferable to certificates.  It may be difficult for RADIUS clients to upgrade all of their interfaces to support the use of certificates, and TLS-PSK more closely mirrors the historical use of shared secrets, with similar operational considerations.</t>
        <t>Additional implementation and operational considerations for TLS-PSK are given in <xref target="I-D.ietf-radext-tls-psk"/>.</t>
      </section>
    </section>
    <section anchor="increasing-the-security-of-radius">
      <name>Increasing the Security of RADIUS</name>
      <t>While we still permit the use of UDP and TCP transports in secure environments, there are opportunities for increasing the security of RADIUS when those transport protocols are used.  The amount of personal identifiable information (PII) sent in packets should be minimized.  Information about the size, structure, and nature of the visited network should be omitted or anonymized.  The choice of authentication method also has security and privacy impacts.</t>
      <t>The recommendations here for increasing the security of RADIUS transports also applies when TLS is used.  TLS transports protect the RADIUS packets from observation by from third-parties.  However, TLS does not hide the content of RADIUS packets from intermediate proxies, such as ones uses in a roaming environment.  As such, the best approach to minimizing the information sent to proxies is to minimize the number of proxies which see the RADIUS traffic, and to minimize the amount of PII which is sent.</t>
      <t>Implementers and administrators need to be aware of all of these issues, and then make the best choice for their local network which balances their requirements on privacy, security, and cost.  Any security approach based on a simple "checklist" of "good / bad" practices is likely to result in decreased security as compared to an end-to-end approach which is based on understanding the issues involved.</t>
      <section anchor="minimizing-personal-identifiable-information">
        <name>Minimizing Personal Identifiable Information</name>
        <t>One approach to increasing RADIUS privacy is to minimize the amount of PII which is sent in packets.  Implementers of RADIUS products and administrators of RADIUS systems SHOULD ensure that only the minimum necessary PII is sent in RADIUS.</t>
        <t>Where possible, identities should be anonymized (e.g. <xref target="RFC7542"/> Section 2.4).  The use of anonymized identities means that the the Chargeable-User-Identifier <xref target="RFC4372"/> should also be used.  Further discussion on this topic is below.</t>
        <t>Device information SHOULD be either omitted, or randomized.  e.g. MAC address randomization could be used on end-user devices.  The details behind this recommendation are the subject of ongoing research and development.  As such, we do not offer more specific recommendations here.</t>
        <t>Information about the visited network SHOULD be replaced or anonymized before packets are proxied outside of the local organization.  The attribute Operator-NAS-Identifier <xref target="RFC8559"/> can be used to anonymize information about NASes in the local network.</t>
        <t>Location information (<xref target="RFC5580"/> SHOULD either be omitted, or else it SHOULD be limited to the broadest possible information, such as country code. For example, <xref target="I-D.tomas-openroaming"/> says:</t>
        <ul empty="true">
          <li>
            <t>All OpenRoaming ANPs MUST support signalling of location information</t>
          </li>
        </ul>
        <t>This location information is required to include at the minimum the country code.  We suggest the country code SHOULD also be the maximum amount of location information which is sent over third-party networks.</t>
        <section anchor="chargeable-user-identity">
          <name>Chargeable-User-Identity</name>
          <t>Where the Chargeable-User-Identity (CUI) <xref target="RFC4372"/> is used, it SHOULD be unique per session.  This practice will help to maximize user privacy, as it will be more difficult to track users across multiple sessions.  Due to additional constraints which we will discuss below, we cannot require that the CUI change for every session.</t>
          <t>What we can do is to require that the home server MUST provide a unique CUI for each combination of user and visited network.  That is, if the same user visits multiple networks, the home server MUST provide different CUIs to each visited network for that user.  The CUI MAY be the same across multiple sessions for that user on one particular network.  The CUI MAY be the same for multiple devices used by that user on one particular network.</t>
          <t>We note that the MAC address is likely the same across multiple user sessions on one network.  Therefore changing the CUI offers little additional benefit, as the user can still be tracked by the unchanging MAC address.  Never the less, we believe that having a unique CUI per session can be useful, because there is ongoing work on increasing user privacy by allowing more MAC address randomization.  If we were to recommend that the CUI remain constant across multiple sessions, that would in turn negate much of the effort being put into MAC address randomization.</t>
          <t>One reason to have a constant CUI value for a user (or user devices) on one network is that network access providers may need to enforce limits on simultaneous logins.  Network providers may also need to correlate user behavior across multiple sessions in order to track and prevent abuse.  Both of these requirements are impossible if the CUI changes for every user session.</t>
          <t>The result is that there is a trade-off between user privacy and the needs of the local network.  While perfect user privacy is an admirable goal, perfect user privacy may also allow anonymous users to abuse the visited network.  The network would then likely simply refuse to provide network access.  Users may therefore have to accept some limitations on privacy, in order to obtain network access.</t>
          <t>Although the CUI contents are not directly related to security, we still give recommendations for creating and managing of the CUI.  We believe that these recommendations will help implementers satisfy the preceding requirements, while not imposing undue burden on the implementations.</t>
          <t>In general, the simplest way to track CUIs long term is to associate the CUI to user identity in some kind of cache or database.  This association could be created at the tail end of the authentication process, and before any accounting packets were received.  This association should generally be discarded after a period of time if no accounting packets are received.  If accounting packets are received, the CUI to user association should then be tracked along with the normal accounting data.</t>
          <t>The above method for tracking CUI works no matter how the CUI is generated.  If the CUI can be unique per session, or it could be tied to a particular user identity across a long period of time.  The same CUI could also be associated with multiple devices.</t>
          <t>Where the CUI is not unique for each session, the only minor issue is the cost of the above method is that the association is stored on a per-session basis when there is no need for that to be done.  Storing the CUI per session means that is it possible to arbitrarily change how the CUI is calculated, with no impact on anything else in the system.  Designs such as this which decouple unrelated architectural elements are generally worth the minor extra cost.</t>
          <t>For creating the CUI, that process should be done in a way which is scalable and efficient.  For a unique CUI per user, implementers SHOULD create a value which is unique both to the user, and to the visited network.  There is no reason to use the same CUI for multiple visited networks, as that would enable the tracking of a user across multiple networks.</t>
          <t>Before suggesting a method for creating the CUI, we note that <xref target="RFC4372"/> Section 2.1 defines the CUI as being of data type 'string' (<xref target="RFC8044"/> Section 3.5).  <xref target="RFC4372"/> Section 2.1 further suggests that the value of the CUI is interpreted as an opaque token, similar to the Class attribute (<xref target="RFC2865"/> Section 5.25).  Some organizations create CUI values which use the Network Access Identifier (NAI) format as defined in <xref target="RFC7542"/>.  This format can allow the home network to be identified to the visited network, where the User-Name does not contain a realm.  Such formats SHOULD NOT be used unless all parties involved have agreed to this behavior.</t>
          <t>The CUI SHOULD be created via a construct similar to what is given below, where "+" indicates concatenation:</t>
          <artwork><![CDATA[
CUI = HASH(visited network data + user identifier + key)
]]></artwork>
          <t>This construct has the following functional parameters.</t>
          <ul empty="true">
            <li>
              <t>HASH</t>
              <ul empty="true">
                <li>
                  <t>A cryptographic hash function.  It is RECOMMENDED to use an HMAC instead of a hash function.</t>
                </li>
              </ul>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>visited network data</t>
              <ul empty="true">
                <li>
                  <t>Data which identifies the visited network.</t>
                  <t>This data could be the Operator-Name attribute (<xref target="RFC5580"/> Section 4.1).</t>
                </li>
              </ul>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>user identifier</t>
              <ul empty="true">
                <li>
                  <t>The site-local user identifier.  For tunneled EAP methods such as PEAP or TTLS, this could be the user identity which is sent inside of the TLS tunnel.</t>
                </li>
              </ul>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>key</t>
              <ul empty="true">
                <li>
                  <t>A secret known only to the local network.  The key is generally a large random string.  It is used to help prevent dictionary attacks on the CUI.</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>Where the CUI needs to be constant across multiple user sessions or devices, the key can be a static value.  It is generated once by the home network, and then stored for use in further CUI derivations.</t>
          <t>Where the CUI needs to be unique per session, the above derivation SHOULD still be used, except that the "key" value will instead be a random number which is different for each session.  Using such a design again decouples the CUI creation from any requirement that it is unique per session, or constant per user.  That decision can be changed at any time, and the only piece which needs to be updated is the derivation of the "key" field.  In contrast, if the CUI is generated completely randomly per session, then it may be difficult for a system to later change that behavior to allow the CUI to be constant for a particular user.</t>
          <t>If an NAI format is desired, the hash output can be converted to printable text, truncated if necessary to meet length limitations, and then an "@" character and a realm appended to it.  The resulting text string is then in NAI form.</t>
          <t>We note that the above recommendation is not invertible.  That is, given a particular CUI, it is not possible to determine which visited network or user identifier was used to create it.  If it is necessary to use the CUI to look up a user, the home network needs to store the full set of CUI values which a user has been assigned.</t>
          <t>If this tracking is too complex for a network, it is possible to create the CUI via an invertible encryption process as follows:</t>
          <artwork><![CDATA[
CUI = ENCRYPT(key, visited network data + user identifier)
]]></artwork>
          <t>This construct has the following functional parameters.</t>
          <ul empty="true">
            <li>
              <t>ENCRYPT</t>
              <ul empty="true">
                <li>
                  <t>A cryptographically secure encryption function.</t>
                </li>
              </ul>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>key</t>
              <ul empty="true">
                <li>
                  <t>The encryption key.  Note that the same key must not be used for more both hashing and encryption.</t>
                </li>
              </ul>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>visited network data</t>
              <ul empty="true">
                <li>
                  <t>Data which identifies the visited network.</t>
                  <t>This data could be the Operator-Name attribute (<xref target="RFC5580"/> Section 4.1).</t>
                </li>
              </ul>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>user identifier</t>
              <ul empty="true">
                <li>
                  <t>The site-local user identifier.  For tunneled EAP methods such as PEAP or TTLS, this could be the user identity which is sent inside of the TLS tunnel.</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>However, it is RECOMMENDED that HMAC based methods are used instead of methods based on reversible encryption.</t>
          <t>The intent is for CUI to leak as little information as possible, and ideally be different for every session.  However, business agreements, legal requirements, etc. may mandate different behavior.  The intention of this section is not to mandate complete CUI privacy, but instead to clarify the trade-offs between CUI privacy and business realities.</t>
        </section>
      </section>
      <section anchor="user-password-visibility">
        <name>User-Password Visibility</name>
        <t>The design of RADIUS means that when proxies receive Access-Request packets, the clear-text contents of the User-Password attribute are visible to the proxy.  Despite various claims to the contrary, the User-Password attribute is never sent "in the clear" over the network.  Instead, the password is protected by TLS (RADIUS/TLS) or via the obfuscation methods defined in <xref section="5.2" sectionFormat="comma" target="RFC2865"/>.  However, the nature of RADIUS means that each proxy must first undo the password obfuscation of <xref target="RFC2865"/>, and then re-do it when sending the outbound packet.  As such, the proxy has the clear-text password visible to it, and stored in its application memory.</t>
        <t>It is therefore possible for every intermediate proxy to snoop and record all User-Name and User-Password values which they see.  This exposure is most problematic when the proxies are administered by an organization other than the one which operates the home server.  Even when all of the proxies are operated by the same organization, the temporary existence of clear-text passwords on multiple machines is a security risk.</t>
        <t>It is therefore NOT RECOMMENDED for organizations to send the User-Password attribute in packets which are sent outside of the organization.  If RADIUS proxying is necessary, another authentication method which provides for end-to-end security of user information SHOULD be used, such as EAP-TLS, TTLS, or PEAP.</t>
        <t>Client and server implementations SHOULD use secure programming techniques to wipe passwords and other sensitive data from memory when they are no longer needed.</t>
        <t>Organizations MAY still use User-Password attributes within their own systems, for reasons which we will explain below in <xref target="password-security"/>.</t>
      </section>
      <section anchor="delaying-access-rejects">
        <name>Delaying Access-Rejects</name>
        <t>Anyone can cause a NAS to send Access-Request packets at will, simply by attempting to requesting network access, or login permissions from the NAS.  If this login process is not rate-limited, it can be abused by an attacker to perform dictionary attacks.</t>
        <t>In order to prvent these brute-force attacks, servers which originate Access-Reject packets MUST enforce a minimum delay between reception of the Access-Request, and transmission of a corresponding Access-Reject.  This delay SHOULD be configurable.  Experience shows that values between one (1) second and ten (10) seconds work well in practice.</t>
        <t>Systems which simply proxy Access-Reject packets MUST NOT add any artificial delays to those packets.  Doing so would result in delays accumulating across a chain of proxies.</t>
        <t>Servers SHOULD also add a small random jitter to the delay for a particular packet, in order to better protect themselves from timing attacks.</t>
      </section>
      <section anchor="use-constant-time-comparisons">
        <name>Use Constant Time Comparisons</name>
        <t>Both clients and servers SHOULD use constant-time operations to compare received versus calculated values which depend on secret information.  If comparison operations are stopped as soon as a difference is seen, an attacker could using timing attacks to determine the correct underlying values, even without seeing them.  A constant-time operation instead compares the entire value, accumulating the result along the way.  Only when the entire value has been examined does the comparison return a "match" or "no-match" result.</t>
        <t>Constant-time operations SHOULD be used for the Request Authenticator and Response-Authenticator fields.  Constant time comparisons SHOULD be used for attributes which directly contain secret values (e.g. User-Password), or are derived from secret values (e.g. CHAP-Password, and Message-Authenticator).</t>
      </section>
      <section anchor="minimize-the-use-of-proxies">
        <name>Minimize the use of Proxies</name>
        <t>The design of RADIUS means that even when RADIUS/TLS is used, every intermediate proxy has access to all of the information in each packet.  The only way to secure the network from such observers is to minimize the use of proxies.</t>
        <t>Where it is still necessary to use intermediate proxies such as with eduroam <xref target="EDUROAM"/> and OpenRoaming <xref target="OPENROAMING"/>, it is RECOMMENDED to use EAP methods instead of bare PAP, CHAP, or MS-CHAP.  If passwords are used, they can be can be protected from being seen by proxies via TLS-based EAP methods such as EAP-TTLS or PEAP.  Passwords can also be omitted entirely from being sent over the network, as with EAP-TLS <xref target="RFC9190"/> or EAP-pwd <xref target="RFC5931"/>.</t>
        <t>In many cases, however, the existence of proxies is to either due contractual obligations, or to a need to solve "N by M" connection problems.  A centralized proxy system can often simplify overall network management and maintenance.</t>
        <section anchor="there-is-no-radius-routing-protocol">
          <name>There is no RADIUS Routing Protocol</name>
          <t>While <xref target="RFC7585"/> allows for a client to connect directly to a server, that configuration is not always used.  Historically, RADIUS systems implemented realm <xref target="RFC7542"/> roaming, where multiple visited networks were connected to multiple home via chains of intermediate proxies <xref target="RFC2194"/>.  As there is no RADIUS routing protocol to control realm forwarding through these proxies, there is therefore no way to automatically determine which realms are routable, or how best to route packets for known realms.</t>
          <t>The outcome of this limitation is that all such realm routing rules are largely configured statically, manually, and individually on multiple systems.  This process can be automated within one administrative system, but it is open to mistakes or abuse in multi-system networks.</t>
          <t>In RADIUS, each proxy which sees traffic is completely trusted.  It can modify, filter, or record any packets which transit the proxy.  This ability means that a proxy can engage in a large number of negative behaviors.  For example, a proxy could forge Access-Request packets for realms which it knows about, and potentially perform dictionary attacks on home networks.  A proxy could also alter or invent data in Accounting-Request packets, in order to defraud a home server of revenue.  A proxy could also observe Accounting-Request traffic, and use the obtained information to forge Disconnect-Request packets.</t>
          <t>Proxies can also inject traffic for realms which do not normally transit the proxy.  Without a routing protocol, there is no way for a home server to automatically control which set of realms is allowed to be sent from a particular client.  There is also no general way for a proxy to signal that a particular Access-Request or Accounting-Request is non-routable: it must be either rejected or discarded.</t>
          <t>Visited sites also have no control over proxies past the ones that they have relationships with.  Subsequent proxies are completely unknown, and unknowable to the visited network.  Despite these systems being completely unknown, they are completely trusted due to limitations in the RADIUS protocol.</t>
          <t>That is, there is no fine-grained way for a visited or home network to limit which intermediary systems see traffic for their realms, or what traffic can be seen by those systems.  While these filtering rules can be manually documented as seen in <xref target="FILTER"/>, this process is error-prone, and fragile.</t>
          <t>Administrators should be aware of the above issues: fraud, forgery, and filtering are all possible in a "trusted" RADIUS ecosystem.</t>
          <t>Historically, these issues do not appear to have been widely exploited.  The most common defense against these attacks is to limit RADIUS relationships to entities which share a contractual relationship.  This relationship can be direct between clients, servers, and proxies.  This relationship can also be indirect, as when multiple organizations are members of a shared consortium such as eduroam.</t>
          <t>Implementations therefore SHOULD provide methods by which routing information can be tied to particular clients and to particular home servers.  Implementations SHOULD allow packets to be filtered by some combination of realm and client or home server.  Administrators SHOULD take advantage of these filters to double-check that received traffic is coming from the expected sources, and contains the expected realms.</t>
        </section>
        <section anchor="dynamic-discovery-and-filtering">
          <name>Dynamic Discovery and Filtering</name>
          <t>When <xref target="RFC7585"/> dynamic discovery is used, intermediate proxy hops are avoided.  There are a number of possible attacks here, though <xref section="5" sectionFormat="comma" target="RFC7585"/> largely limits its discussion to rate limiting of connections.</t>
          <t>A client which supports dynamic discovery of home servers still has to perform filtering on NAI realms before doing any lookups.  When no filtering takes place, an attacker can cause a RADIUS client to do DNS lookups for arbitrary domains, and then cause it to connect to arbitrary servers.  As there is no RADIUS routing protocol, there is no general way for a client to determine which realms are part of a particular organization, and are thus permitted for dynamic DNS lookups.</t>
          <t>Organizations relying on dynamic discovery SHOULD have some way of automatically sharing which realms are valid, and which are not.  There are a number of possibilities here, and choosing the best one is up to each individual organization.</t>
          <t>Clients supporting dynamic discovery SHOULD require that servers use certificates from a private Certification Authority (CA).  Clients MUST NOT automatically accept server certificates rooted from public CAs (e.g. as is done for web servers).  Instead, clients MUST be configurable to use only a limited set of CAs.  The default list of accepted CAs SHOULD be empty.</t>
          <t>Similarly, servers SHOULD require that clients use certificates from a private Certification Authority (CA).  Servers MUST NOT accept client certificates rooted from a public CA.</t>
          <t>Servers which accept connections from dynamic discover are necessarily open to the Internet.  Administrators SHOULD limit the source IP of allowed connections.  Server SHOULD filter received packets by NAI, and close connections when the NAIs in incoming packets do not match the NAI(s) that the server expects.  This mismatch indicates either a misconfigured or malicious client.</t>
          <t>Both clients and servers can send any data inside of a TLS tunnel.  Implementations SHOULD take care to treat the data inside of a TLS tunnel as a potential source of attacks.</t>
          <t>Where multiple realms resolve to the same destination IP address, implementations MAY send packets for multiple realms across a connection to that IP address.  Clients SHOULD use SNI to indicate which realm they are connecting to.  Servers SHOULD present a certificate for the requested realm, instead of using a shared or "hosting" certificate which is owned by the hosting provider, and is used by multiple realms.  Such certificate sharing decreases security, and increases operational costs.</t>
          <t>Where systems do not have a pre-defined list of allowed realms, implementations MUST support negative caching.  That is, if the lookup for a particular realm fails, or a connection to that realm fails, then the implementation needs to cache that negative result for a period of time.  This cache needs to be examined prior to any new lookup or connection being made.  If there is an entry in the negative cache, then the server MUST skip the lookup or connection attempt, and instead return an immediate error.  This negative cache time SHOULD be configurable.</t>
          <t>Other attacks are possible.  If there are implementation bugs in a clients TLS library, an attacker could use dynamic discovery to cause the client to connect to a malicious server, and then use the server to attack the client.  A malicious server could also slow down its TCP connection to engage client resources for extended periods of time.  This process could even be done even before any TLS credentials are exchanged.</t>
          <t>In general, <xref target="RFC7585"/> dynamic discovery is substantially different from normal application protocols which use TLS.  There is substantial attack surface added by an unknown, and unauthenticated user who can cause a RADIUS client to connect to arbitrary systems under an attacker control.  Dynamic discovery should be used with care, and only with substantial amounts of filtering on the NAI realms which are allowed, and only with stringent limits on the number of lookups, connection attempts, open connections, etc.</t>
        </section>
      </section>
      <section anchor="ms-chap">
        <name>Do Not Use MS-CHAP</name>
        <t>MS-CHAP (v1 in <xref target="RFC2433"/> and v2 in <xref target="RFC2759"/>) have major design flaws, and should not be used outside of a secure tunnel such as PEAP or TTLS.  As MS-CHAPv1 is less commonly used, the discussion in this section will focus on MS-CHAPv2, but the same analysis applies to MS-CHAPv1.</t>
        <t>MS-CHAP has been broken since 2004, as seen in <xref target="ASLEAP"/>.  While the attack there mentions LEAP, the same attack applies to MS-CHAP.  This information was apparently insufficiently clear in the <xref target="ASLEAP"/> attack, as most implementations still support MS-CHAP, and no previous standard has deprecated it.</t>
        <t>The attack relies on a vulnerability in the protocol design in <xref section="8.4" sectionFormat="comma" target="RFC2759"/>.  In that section, the response to the MS-CHAP challenge is calculated via three DES operations, which are based on the 16-octet NT-Hash form of the password.  However, the DES operation requires 7 octet keys, so the 16-octet NT-Hash cannot be divided evenly into the 21 octets of keys required for the DES operation.</t>
        <t>The solution in <xref target="RFC2759"/> Section 8.4 is to use the first 7 octets of the NT-Hash for the first DES key, the next 7 octets for the second DES key, leaving only 2 octets for the final DES key.  The final DES key is padded with zeros.  This construction means that an attacker who can observe the MS-CHAP2 exchange only needs to perform 2^16 DES operations in order to determine the final 2 octets of the original NT-Hash.</t>
        <t>If the attacker has a database which correlates known passwords to NT-Hashes, then those two octets can be used as an index into that database, which returns a subset of candidate hashes.  Those hashes are then checked via brute-force operations to see if they match the original MS-CHAPv2 data.</t>
        <t>This process lowers the complexity of cracking MS-CHAP by nearly five orders of magnitude as compared to a brute-force attack.  The attack has been demonstrated using databases which contain tens to hundreds of millions of passwords.  On a consumer-grade machine, the time required for such an attack to succeed is on the order of tens of milliseconds.</t>
        <t>While this attack does require a database of known passwords, such databases are easy to find online, or to create locally from generator functions.  Passwords created manually by people are notoriously predictable, and are highly likely to be found in a database of known passwords.  In the extreme case of strong passwords, they will not be found in the database, and the attacker is still required to perform a brute-force dictionary search.</t>
        <t>The result is that MS-CHAP has significantly lower security than PAP.  When the MS-CHAP data is not protected by TLS, it is visible to everyone who can observe the RADIUS traffic.  Attackers who can see the MS-CHAP traffic can therefore obtain the underlying NT-Hash with essentially zero effort, as compared to cracking the RADIUS shared secret.  In contrast, the User-Password attribute is obfuscated with data derived from the Request Authenticator and the shared secret, and that method has not yet been successfully attacked.</t>
        <t>Implementers and administrators MUST therefore treat MS-CHAP and MS-CHAPv2 as being equivalent in security to sending passwords in the clear, without any encryption or obfuscation.  That is, the User-Password attribute with the <xref section="5.2" sectionFormat="comma" target="RFC2865"/> obfuscation is substantially more secure than MS-CHAP.  MS-CHAP offers little benefit over PAP, and has many drawbacks as discussed here, and in the next section.</t>
        <t>As MS-CHAP can be trivially broken by an observer, this document therefore mandates that MS-CHAP or MS-CHAPv2 authentication data carried in RADIUS MUST NOT be sent in situations where the that data is visible to an observer.  MS-CHAP or MS-CHAPv2 authentication data MUST NOT be sent over RADIUS/UDP or RADIUS/TCP.</t>
        <t>As MS-CHAP offers no practical benefits over PAP and has many downsides, MS-CHAP authentication SHOULD NOT be used even when the transport protocol is secure, as with IPSec or RADIUS over TLS.</t>
        <t>Existing RADIUS client implementations SHOULD deprecate the use of MS-CHAPv1 and MS-CHAPv2.  Clients SHOULD forbid new configurations from enabling MS-CHAP authentication.  New RADIUS clients MUST NOT implement the attributes used for MS-CHAPv1 and MS-CHAPv2 authentication (MS-CHAP-Challenge and MS-CHAP-Response).</t>
      </section>
      <section anchor="password-security">
        <name>Password Visibility and Storage</name>
        <t>An attacker may choose to ignore the wire protocol entirely, and bypass all of the issues described earlier in this document.  An attacker could instead focus on the database which holds user credentials such as account names and passwords.  At the time of this writing, databases such as <xref target="PWNED"/> claim to have records of over twelve billion user accounts which have been compromised.  User databases are therefore highly sought-after targets.</t>
        <t>The attack discussed in this section is dependent on vulnerabilities with the credential database, and does not assume an attacker can see or modify RADIUS traffic.  As a result, issues reaised here apply equally well when TTLS, PEAP, or RADIUS/TLS are used.  The success of the attack depends only on how the credentials are stored in the database.  Since the choice of authentication method affects the way credentials are stored in the database, the security of that dependency needs to be discussed and explained.</t>
        <t>Some organizations may desire to increase the security of their network by avoiding PAP, and using CHAP or MS-CHAP, instead.  These attempts are misguided.  If simple password-based methods must be used, in almost all situations, the security of the network as a whole is increased by using PAP in preference to CHAP or MS-CHAP.  The reason is found through a straightforward risk analysis, which we explain in more detail below.</t>
        <section anchor="pap-security-analysis">
          <name>PAP Security Analysis</name>
          <t>When PAP is used, the RADIUS server sees a clear-text password from the user, and compares that password to credentials which have been stored in a user database.   The credentials stored in the database can be salted and/or hashed in a form which is commonly referred to as being in "crypt"ed form.  The RADIUS server takes the users clear-text password, performs the same "crypt" transformation, and then compares the two "crypt"ed passwords.</t>
          <t>Any compromise the RADIUS server will result in that clear-text password leaking.  However, in most cases, the clear-text password is available only in the memory of the RADIUS server application (i.e. not "on the wire"), and then only for a short period of time.  An attacker who desires to obtain passwords for all users would have to wait for all users to log in, which can take a substantial amount of time.  During that time, an administrator may discover the breach, and resolve the issue.</t>
          <t>When PAP is used, the credentials in the database are stored securely "at rest", presuming that the administrator only stores "crypt"ed credentials.  Any compromise of the database results in the disclosure of minimal information to the attacker.  That is, an attacker cannot easily obtain the clear-text passwords from the compromised database.</t>
          <t>The result is that the user passwords are visible in clear-text only for a short time, and then only on the RADIUS server.  The security of this system is not as good as seen with EAP-pwd <xref target="RFC5931"/> for example, but it is not terrible.</t>
          <t>While the obfuscation method used for the User-Password attribute has not been shown to be insecure, it has not been proven to be secure.  The obfuscation method depends on calculating MD5(secret + Request Authenticator), which has a few helpful properties for an attacker.  The cost of brute-forcing short secrets is not large, <xref target="cracking"/> discusses that cost in detail.  Even for longer secrets which are humanly generated, the MD5 state for hashing the secret can be pre-calculated and stored on disk.  This process is relatively inexpensive, even for billions of possible shared secrets.  The Request Authenticator can then be added to each pre-calculated state via brute-force, and compared to the obfuscated User-Password data.</t>
          <t>The MD5 digest is 16 octets long, and many passwords are shorter than that.  This difference means that the final octets of the digest are placed into the User-Password attribute without modification.  The result is that a brute-force attack does not need to decode the User-Password and see if the decoded password "looks reasonable".  Instead, the attacker simply needs to compare the final octets of the calculated digest with the final octets of the User-Password attribute.  The result is an extremely high probability signal that the guessed secret is correct.</t>
          <t>The only protection from this attack is to ensure that the secret is long, and derived from a cryptographically strong pseudo-random number generator.  <xref target="shared-secrets"/> discusses these issues in more detail.</t>
        </section>
        <section anchor="chap-and-ms-chap-password-storage">
          <name>CHAP and MS-CHAP Password Storage</name>
          <t>In contrast with PAP, when CHAP or MS-CHAP is used, those methods do not expose a clear-text password to the RADIUS server, but instead a hashed transformation of it.  That hash output is in theory secure even if an attacker can observe it.  While CHAP is still believed to be secure, MS-CHAP is not secure, as we saw ealier in <xref target="ms-chap"/>.  For the purposes of this section, we will focus on the construct of "hashed passwords", and will ignore any attacks specific to MS-CHAP.  We will also note that EAP-MD5 <xref section="5.4" sectionFormat="comma" target="RFC3748"/> is essentially CHAP, and has the same security analysis.</t>
          <t>The hash transformations for CHAP and MS-CHAP depend on a random challenge.  The intent was to increase security, but their construction makes strong requirements on the form in which user credentials are stored.</t>
          <t>The process for performing CHAP and MS-CHAP is inverted from the process for PAP.  Using similar terminology as above for illustrative purposes, the "hash"ed passwords are carried in the CHAP method, and are sent to the server.  The server must obtain the clear-text (or NT hashed) password from the database, and then perform the "hash" operation on the password from the database. The two "hash"ed passwords are then compared as was done with PAP.  This inverted process decreases system security substantially.</t>
          <t>When CHAP or MS-CHAP are used, all of credentials are stored as clear-text (or clear-text equivalent) in the database, all of the time.  Even if the database contents are encrypted, the decryption keys are necessarily accessible to the application which reads that database.  Any compromise of the application means that the entire database can be immediately read and exfiltrated as a whole.  The attacker then has complete access to all user identities, and all associated clear-text passwords.</t>
          <t>It should go without saying that having an attacker obtain all clear-text passwords is more of an issue than having the same attacker obtain "crypt"ed passwords.  Similarly, it is more secure for a RADIUS server to have access to some clear-text passwords, some of the time, rather than having access to all of the clear-text passwords, all of the time.</t>
        </section>
        <section anchor="on-the-wire-user-password-versus-chap-password">
          <name>On-the-wire User-Password versus CHAP-Password</name>
          <t>There is one more security myth which should be put to rest about PAP versus CHAP.  There is a common belief that CHAP is more secure, because passwords are sent "in the clear" via the User-Password attribute.  This belief is false.</t>
          <t>The User-Password attribute is obfuscated when it is sent in an Access-Request packet, using keyed MD5 and the shared secret, as defined in <xref section="5.2" sectionFormat="comma" target="RFC2865"/>.  At the time of this writing, no attack better than brute force has been found which allows an attacker to reverse this obfuscation.</t>
          <t>There have been claims that it is preferable to use CHAP-Password as it does not "send the password in clear-text".  This preference is based on a misunderstanding of how CHAP-Password and User-Password attributes are calculated.</t>
          <t>The CHAP-Password attribute depends on the hash of a visible Request Authenticator (or CHAP-Challenge) and the users password.  The obfuscated User-Password depends on the same Request Authenticator, and on the RADIUS shared secret.  For an attacker, the difference between the two calculations is minimal.  They can both be attacked with similar amounts of effort, as they use similar constructs.   As a result, any security analysis which makes the claim that "User-Password insecure because it uses MD5" ignores the fact that the CHAP-Password attribute is constructed through substantially the same method.</t>
          <t>An attacker who can observe the CHAP-Password and CHAP-Challenge can also perform an off-line dictionary attack on the observed values.  The complexity of cracking CHAP-Password is similar to that noted above for cracking RADIUS packets, which was discussed abve in <xref target="cracking"/>.  The difference between the two attacks is that the shared secrets are more likely to be secure than passwords for an end-user.</t>
          <t>An attacker who can crack one users password can gain network access as that user, or even administrator access to network devices.  In contrast, an attacker who can crack the shared secret can gain network access as any user, and perform any authorization.  The result is that it is more valuable to crack shared secrets, even if the underlying attack process is essentially the same.</t>
        </section>
        <section anchor="pap-vs-chap">
          <name>PAP vs CHAP Conclusions</name>
          <t>A careful security analysis shows that for all of PAP, CHAP, and MS-CHAP, the RADIUS server must at some point have access to the clear-text version of the password.  As a result, there is minimal difference in risk exposure between the different authentication methods if a RADIUS server is compromised.</t>
          <t>However, when PAP is used, the user credentials can be stored securely "at rest" in a database, while such secure storage is impossible with CHAP and MS-CHAP.  There is therefore a substantial difference in risk exposure between the different authentication methods, with PAP offering substantially higher security due to its ability to secure passwords at rest via the "crypt" construct mentioned above.</t>
          <t>In contrast, CHAP is highly insecure, as any database compromise results in the immediate exposure of the clear-text passwords for all users.  The security of MS-CHAP is best described as near zero, independent of any database compromise.  This makes MS-CHAP the worst of all possible choices.</t>
          <t>This security difference is shown not just in the <xref target="PWNED"/> database, but also in attacks on RADIUS systems <xref target="EXPLOIT"/>, where attackers identified a vulnerable RADIUS system, and then:</t>
          <ul empty="true">
            <li>
              <t>utilized SQL commands to dump the credentials [T1555], which contained both cleartext and hashed passwords for user and administrative accounts.</t>
            </li>
          </ul>
          <t>The attack proceeded to leverage those passwords to gain more permissions:</t>
          <ul empty="true">
            <li>
              <t>Having gained credentials from the RADIUS server, PRC state-sponsored cyber actors used those credentials with custom automated scripts to authenticate to a router via Secure Shell (SSH), execute router commands, and save the output.</t>
            </li>
          </ul>
          <t>This attack is only possible when systems store clear-text passwords.</t>
          <t>The result is that when the system as a whole is taken into account, the risk of password compromise is substantially less with PAP than with CHAP or MS-CHAP.  It is therefore RECOMMENDED that administrators use PAP in preference to CHAP or MS-CHAP.  It is also RECOMMENDED that administrators store passwords "at rest" in a secure form (salted, hashed), as with the "crypt" format discussed above.</t>
          <t>That being said, other authentication methods such as EAP-TLS <xref target="RFC9190"/> and EAP-pwd <xref target="RFC5931"/> do not expose clear-text passwords to the RADIUS server or any intermediate proxy.  Thor methods therefore lower the risk of password exposure even more than using PAP.  It is RECOMMENDED that administrators avoid password-based authentication methods where at all possible.</t>
        </section>
      </section>
      <section anchor="use-eap-where-possible">
        <name>Use EAP Where Possible</name>
        <t>If more complex authentication methods are needed, there are a number of EAP methods which can be used.  These methods variously allow for the use of certificates (EAP-TLS), or passwords (EAP-TTLS <xref target="RFC5281"/>, PEAP <xref target="I-D.josefsson-pppext-eap-tls-eap"/>)) and EAP-pwd <xref target="RFC5931"/>.</t>
        <t>We also note that the TLS-based EAP methods which transport passwords also hide the passwords from intermediate RADIUS proxies, which also increases security.</t>
        <t>Finally, password-based EAP methods still send PAP / CHAP / MS-CHAP inside of the TLS tunnel.  As such, the security of a home server which checks those passwords is subject to the analysis above about PAP versus CHAP, along with the issues of storing passwords in a database.</t>
      </section>
      <section anchor="eliminating-proxies">
        <name>Eliminating Proxies</name>
        <t>The best way to avoid malicious proxies is to eliminate proxies entirely.  The use of dynamic peer discovery (<xref target="RFC7585"/>) means that the number of intermediate proxies is minimized.</t>
        <t>However, the server on the visited network still acts as a proxy between the NAS and the home network.  As a result, all of the above analysis still applies when <xref target="RFC7585"/> peer discovery is used.  There is an intermediate system which may have access to passwords or PII.  The only solution is using end-to-end security for AAA, which would involve a completely new protocol.</t>
      </section>
      <section anchor="accounting-is-imperfect">
        <name>Accounting Is Imperfect</name>
        <t>The use of RADIUS/UDP for accounting means that accounting is inherently unreliable.  Unreliable accounting means that different entities in the network can have different views of accounting traffic.  These differences can have multiple impacts, including incorrect views of who is on the network, to disagreements about financial obligations.  These issues are discussed in substantial detail in <xref target="RFC2975"/>, and we do not repeat those discussions here.  We do, however, summarize a few key issues.  Sites which use accounting SHOULD be aware of the issues raised in <xref target="RFC2975"/>, and the limitations of the suggested solutions.</t>
        <t>Using a reliable transport such as RADIUS/TLS makes it more likely that accounting packets are delivered, and that acknowledgments to those packets are received.  Reducing the number of proxies means that there are fewer disparate systems which need to have their accounting data reconciled.  Using non-volatile storage for accounting packets means that a system can reboot with minimal loss of accounting data.  Using interim accounting updates means that transient network issues or data losses can be corrected by later updates.</t>
        <t>As RADIUS does not provide for end-to-end signaling or transport, using RADIUS/TLS provides for reliable transport only when the client originating the accounting traffic is connected directly to the server which records it.  If there are instead one or more proxies involved, the proxies increase overall unreliability.</t>
        <t>Systems which perform accounting are also subject to significant operational loads.  Wheres authentication and authorization may use multiple packets, those packets are sent at session start, and then never again.  In contrast, accounting packets can be sent for the lifetime of a session, which may be hours or even days.  There is a large cost to receiving, processing, and storing volumes of accounting data.</t>
        <t>However, even with all of the above concerns addressed, accounting is still imperfect.  The obvious way to increase the accuracy of accounting data is to increase the rate at which interim updates are sent, but doing so also increases the load on the servers which process the accounting data.  At some point, the trade-off of cost versus benefit becomes negative.</t>
        <t>There is no perfect solution here.  Instead, there are simply a variety of imperfect trade-offs.</t>
        <section anchor="incorrect-accounting-data">
          <name>Incorrect Accounting Data</name>
          <t>Even if all accounting packets were delivered and stored without error, there is no guarantee that the contents of those packets are in any way reasonable.  The Wireless Broadband Alliance RADIUS Accounting Assurance <xref target="WBA"/> group has been investigating these issues.  While the results are not yet public, a presentation was made at IETF 118 in the RADEXT working group <xref target="RADEXT118"/>.</t>
          <t>The data presented indicated that the WBA saw just about every possible counter attribute in RADIUS accounting packets as containing data which was blatantly wrong or contradictory.  Some examples include extremely short sessions which have impossibly large amounts of data being downloaded.  Other packets alleged that large amounts of data were downloaded, while at the same time claiming negligible packet counters, leading to absurdly large packet sizes.</t>
          <t>The only conclusion from this analysis is that RADIUS clients act as if it is better to produce incorrect accounting data rather than producing no data.  This failure to follow reasonable practices is expensive.  In effect, vendors have offset their costs to produce quality data onto their customers, who have to take difficult and uncertain steps in order to sanitize or verify the accounting data.</t>
          <t>It should go without saying that accounting systems need to produce correct data.  However, <xref target="RFC2865"/> makes no requirement that the accounting data transported in RADIUS is correct, or is even vaguely realistic.  We therefore state here that systems which produce accounting data MUST generate correct, accurate, and reasonably precise data.  Vendors of networking equipment SHOULD test their systems to verify that the data they produce is accurate.</t>
        </section>
      </section>
      <section anchor="unknown-attributes">
        <name>Unknown Attributes</name>
        <t>Unknown attributes are attributes which are well-formed, but which are not recognized by the implementation.  Processing of unknown attributes is discussed in <xref section="5" sectionFormat="comma" target="RFC2866"/>:</t>
        <ul empty="true">
          <li>
            <t>A RADIUS server MAY ignore Attributes with an unknown Type.</t>
            <t>A RADIUS client MAY ignore Attributes with an unknown Type.</t>
          </li>
        </ul>
        <t>We note this recommendation is to "ignore" these attributes, and not to discard the encapsulating packet. Instead of ignoring unknown attributes, some implementations are known instead to discard packets which contain an unknown attribute.  This behavior is incorrect, and leads to interoperability issues and network problems.</t>
        <t>Implementations MUST NOT discard packets if they receive attributes with an unknown Type.  We update <xref target="RFC2865"/> to require that implementations MUST ignore Attributes with an unknown Type.   Those attributes MUST be treated in the same manner as an "Invalid Attribute" which is defined in <xref section="2.8" sectionFormat="comma" target="RFC6929"/>.</t>
        <t>This behavior is secure, so long as implementations follow some additional guidance for Access-Accept packets.  This guidance follows logically from existing text in <xref section="4.4" sectionFormat="comma" target="RFC2865"/> for similar situations with Access-Challenge:</t>
        <ul empty="true">
          <li>
            <t>If the NAS does not support challenge/response, it MUST treat an
Access-Challenge as though it had received an Access-Reject
instead.</t>
          </li>
        </ul>
        <t>And also for Service-Type in <xref section="5.6" sectionFormat="comma" target="RFC2865"/>:</t>
        <ul empty="true">
          <li>
            <t>A NAS is not
required to implement all of these service types, and MUST treat
unknown or unsupported Service-Types as though an Access-Reject
had been received instead.</t>
          </li>
        </ul>
        <t>A client is not required to implement all possible authorizations which can be sent in an Access-Accept.   We therefore extend the above scenarios to packets which contain unknown Types.  A client SHOULD treat Access-Accepts with no known or supported authorizations as though an Access-Reject had been received instead.</t>
        <t>This requirement for unknown Types is already met by most, if not all, RADIUS implementations.  That is, experience has shown that discarding packets for x3arbitrary reasons causes problems.  Existing implementations have largely chosen to follow reasonable practices, and the recommendation here simply documents that wide-spread practice.</t>
      </section>
    </section>
    <section anchor="practical-suggestions">
      <name>Practical Suggestions</name>
      <t>In the interest of simplifying the above explanations, this section provides a short-form checklist of recommendations.  Following this checklist does not guarantee that RADIUS systems are secure from all possible attacks.  However, systems which do not follow this checklist are likely to be vulnerable to known attacks, and are therefore less secure than they could be.</t>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Do not use RADIUS/UDP or RADIUS/TCP across the wider Internet</li>
          </ul>
          <t>Exposing user identifiers, device identifiers, and locations is a privacy and security issue.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Avoid RADIUS/UDP or RADIUS/TCP in other networks, too.</li>
          </ul>
          <t>It can take time to upgrade equipment, but the long-term goal is to entirely deprecate RADIUS/UDP.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Implement the BlastRADIUS mitigations</li>
          </ul>
          <t>Both Implementers and administrators should implement the mitigations in order to secure Access-Request packets.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Use strong shared secrets</li>
          </ul>
          <t>Shared secrets should be generated from a cryptographically strong pseudo-random number generator.  They should contain at least 128 bits of entropy.  Each RADIUS client should have a unique shared secret.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Minimize the use of RADIUS proxies.</li>
          </ul>
          <t>More proxies means more systems which could be compromised, and more systems which can see private or secret data.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Do not proxy from secure to insecure transports</li>
          </ul>
          <t>If user information (credentials or identities) is received over a secure transport (IPSec, RADIUS/TLS, TLS-based EAP method), then proxying the protected data over RADIUS/UDP or RADIUS/TCP degrades security and privacy.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Prefer EAP authentication methods to non-EAP methods.</li>
          </ul>
          <t>EAP authentication methods are better at hiding user credentials from observers.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>For EAP, use anonymous outer identifiers</li>
          </ul>
          <t>There are few reasons to use individual identities for EAP.  Identifying the realm is usually enough.</t>
          <t><xref target="RFC7542"/> Section 2.4 recommends that "@realm" is preferable to "anonymous@realm", which is in turn preferable to "user@realm".</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Prefer using PAP over CHAP or MS-CHAP.</li>
          </ul>
          <t>PAP allows for credentials to be stored securely "at rest" in a user database.  CHAP and MS-CHAP do not.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Do not use MS-CHAP outside of TLS-based EAP methods.</li>
          </ul>
          <t>MS-CHAP can be cracked with minimal effort.  This information has been known for two decades.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Store passwords in "crypt"ed form</li>
          </ul>
          <t>Where is is necessary to store passwords, use systems such as PBKDF2 (<xref target="RFC8018"/>.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Regularly update to the latest cryptographic methods.</li>
          </ul>
          <t>TLS 1.0 with RC4 was acceptable at one point in time.  It is no longer acceptable.  Similarly, the current cryptographic methods will at some point will be deprecated, and replaced by updated methods.  Upgrading to recent cryptographic methods should be a normal part of operating a RADIUS server.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Regularly deprecate older cryptographic methods.</li>
          </ul>
          <t>Administrators should actively deprecate the use of older cryptographic methods.  If no system is using older methods, then those methods should be disabled or removed entirely.  Leaving old methods enabled makes the server more vulnerable to attacks.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Send the minimum amount of information which is needed,.</li>
          </ul>
          <t>Where proxying is used, it is a common practice is to simply forward all of the information from a NAS to other RADIUS servers.  Instead, the proxy closest to the NAS should filter out any attributes or data which are not needed by the "next hop" proxies, or by the home server.</t>
        </li>
      </ul>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The primary focus of this document is addressing privacy and security considerations for RADIUS.</t>
      <t>Deprecating insecure transport for RADIUS, and requiring secure transport means that personally identifying information is no longer sent "in the clear".  As noted earlier in this document, such information can include MAC addresses, user identifiers, and user locations.</t>
      <t>In addition, this document suggests ways to increase privacy by minimizing the use and exchange of PII.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The primary focus of this document is addressing privacy and security considerations for RADIUS.</t>
      <t>Deprecating insecure transports for RADIUS, and requiring secure transports, means that many historical security issues with the RADIUS protocol are mitigated.</t>
      <t>We reiterate the discussion above that any security analysis must be done on the system as a whole.  It is not reasonable to put an expensive lock on the front door of a house while leaving the window next to it open, and then somehow declare the house to be "secure".  Any approach to security based on a simple checklist is at best naive, and more truthfully is deeply misleading.  At worst, such practices will decrease security by causing people to follow false security practices, and to ignore real security practices.</t>
      <t>Implementers and administrators need to be aware of the issues raised in this document.  They can then make the best choice for their local network which balances their requirements on privacy, security, and cost.  Only informed choices will lead to the best security.</t>
      <section anchor="historical-considerations">
        <name>Historical Considerations</name>
        <t>The BlastRADIUS vulnerability is the result of RADIUS security being a low priority for decades.  Even the recommendation of <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/> that all clients add Message-Authenticator to all Access-Request packets was ignored by nearly all implementers.  If that recommendation had been followed, then the BlastRADIUS vulnerability notification would have been little more than "please remember to set the require Message-Authenticator flag on all RADIUS servers."</t>
        <t>For MS-CHAP, it has not previously been deprecated for similar reasons, even though it has been proven to be insecure for decades.  This continued use of MS-CHAP has likely resulted in the leaking of many users clear-text passwords.</t>
      </section>
      <section anchor="practical-implications">
        <name>Practical Implications</name>
        <t>This document either deprecates or forbids methods and behaviors which have been common practice for decades.  While insecure practices have been viewed as tolerable, they are no longer acceptable.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is instructed to update the RADIUS Types registry, and the "Values for RADIUS Attribute 101, Error-Cause Attribute" sub-registry with the following addition:</t>
      <artwork><![CDATA[
Value,Description,Reference
510,Missing Message-Authenticator,[THIS-DOCUMENT]
]]></artwork>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to the many reviewers and commenters for raising topics to discuss, and for providing insight into the issues related to increasing the security of RADIUS.  In no particular order, thanks to Margaret Cullen, Alexander Clouter, and Josh Howlett.</t>
      <t>Many thanks to Nadia Heninger and the rest of the BlastRADIUS team, along with Heikki Vatiainen, for extensive discussions and feedback about the issue.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
      <ul spacing="normal">
        <li>01 - added more discussion of IPSec, and move TLS-PSK to its own document,</li>
        <li>02 - Added text on Increasing the Security of Insecure Transports</li>
        <li>03 - add text on CUI.  Add notes on PAP vs CHAP security</li>
        <li>04 - add text on security of MS-CHAP.  Rearrange and reword many sections for clarity.</li>
        <li>05 - Rework title to deprecating "insecure practices".  Clarifications based on WG feedback.</li>
        <li>00 - adoption by WG.</li>
        <li>01 - review from Bernard Aboba.  Added discussion on accounting, clarified and re-arranged text.  Added discussion of server behavior for missing Message-Authenticator</li>
        <li>02 - BlastRADIUS updates.</li>
        <li>03 - add delay Access-Reject, constant-time comparison, no routing protocol.  Updated the text significantly and made it more consistent with the BlastRADIUS recommendations.  Add "updates" other RFCs.</li>
        <li>04 - updates with review from Fabian Mauchle</li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="RFC6421">
          <front>
            <title>Crypto-Agility Requirements for Remote Authentication Dial-In User Service (RADIUS)</title>
            <author fullname="D. Nelson" initials="D." role="editor" surname="Nelson"/>
            <date month="November" year="2011"/>
            <abstract>
              <t>This memo describes the requirements for a crypto-agility solution for Remote Authentication Dial-In User Service (RADIUS). This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6421"/>
          <seriesInfo name="DOI" value="10.17487/RFC6421"/>
        </reference>
        <reference anchor="RFC8044">
          <front>
            <title>Data Types in RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>RADIUS specifications have used data types for two decades without defining them as managed entities. During this time, RADIUS implementations have named the data types and have used them in attribute definitions. This document updates the specifications to better follow established practice. We do this by naming the data types defined in RFC 6158, which have been used since at least the publication of RFC 2865. We provide an IANA registry for the data types and update the "RADIUS Attribute Types" registry to include a Data Type field for each attribute. Finally, we recommend that authors of RADIUS specifications use these types in preference to existing practice. This document updates RFCs 2865, 3162, 4072, 6158, 6572, and 7268.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8044"/>
          <seriesInfo name="DOI" value="10.17487/RFC8044"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest"/>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. This memo provides information for the Internet community. It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="RFC2433">
          <front>
            <title>Microsoft PPP CHAP Extensions</title>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <author fullname="S. Cobb" initials="S." surname="Cobb"/>
            <date month="October" year="1998"/>
            <abstract>
              <t>The Point-to-Point Protocol (PPP) provides a standard method for transporting multi-protocol datagrams over point-to-point links. PPP defines an extensible Link Control Protocol and a family of Network Control Protocols (NCPs) for establishing and configuring different network-layer protocols. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2433"/>
          <seriesInfo name="DOI" value="10.17487/RFC2433"/>
        </reference>
        <reference anchor="RFC2759">
          <front>
            <title>Microsoft PPP CHAP Extensions, Version 2</title>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <date month="January" year="2000"/>
            <abstract>
              <t>This document describes version two of Microsoft's PPP CHAP dialect (MS-CHAP-V2). MS-CHAP-V2 is similar to, but incompatible with, MS-CHAP version one (MS-CHAP-V1). This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2759"/>
          <seriesInfo name="DOI" value="10.17487/RFC2759"/>
        </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="RFC2868">
          <front>
            <title>RADIUS Attributes for Tunnel Protocol Support</title>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <author fullname="D. Leifer" initials="D." surname="Leifer"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="J. Shriver" initials="J." surname="Shriver"/>
            <author fullname="M. Holdrege" initials="M." surname="Holdrege"/>
            <author fullname="I. Goyret" initials="I." surname="Goyret"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document defines a set of RADIUS (Remote Authentication Dial In User Service) attributes designed to support the provision of compulsory tunneling in dial-up networks. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2868"/>
          <seriesInfo name="DOI" value="10.17487/RFC2868"/>
        </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="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="RFC5580">
          <front>
            <title>Carrying Location Objects in RADIUS and Diameter</title>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="F. Adrangi" initials="F." surname="Adrangi"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Lior" initials="A." surname="Lior"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <date month="August" year="2009"/>
            <abstract>
              <t>This document describes procedures for conveying access-network ownership and location information based on civic and geospatial location formats in Remote Authentication Dial-In User Service (RADIUS) and Diameter.</t>
              <t>The distribution of location information is a privacy-sensitive task. Dealing with mechanisms to preserve the user's privacy is important and is addressed in this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5580"/>
          <seriesInfo name="DOI" value="10.17487/RFC5580"/>
        </reference>
        <reference anchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="L. Chen" initials="L." surname="Chen"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm. It also updates the security considerations for HMAC-MD5. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6218">
          <front>
            <title>Cisco Vendor-Specific RADIUS Attributes for the Delivery of Keying Material</title>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <author fullname="T. Zhang" initials="T." surname="Zhang"/>
            <author fullname="J. Walker" initials="J." surname="Walker"/>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines a set of vendor-specific RADIUS Attributes designed to allow both the secure transmission of cryptographic keying material and strong authentication of any RADIUS message. These attributes have been allocated from the Cisco vendor-specific space and have been implemented by multiple vendors. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6218"/>
          <seriesInfo name="DOI" value="10.17487/RFC6218"/>
        </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="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="RFC6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="RFC7360">
          <front>
            <title>Datagram Transport Layer Security (DTLS) as a Transport Layer for RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="September" year="2014"/>
            <abstract>
              <t>The RADIUS protocol defined in RFC 2865 has limited support for authentication and encryption of RADIUS packets. The protocol transports data in the clear, although some parts of the packets can have obfuscated content. Packets may be replayed verbatim by an attacker, and client-server authentication is based on fixed shared secrets. This document specifies how the Datagram Transport Layer Security (DTLS) protocol may be used as a fix for these problems. It also describes how implementations of this proposal can coexist with current RADIUS systems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7360"/>
          <seriesInfo name="DOI" value="10.17487/RFC7360"/>
        </reference>
        <reference anchor="I-D.ietf-radext-tls-psk">
          <front>
            <title>Operational Considerations for RADIUS and TLS-PSK</title>
            <author fullname="Alan DeKok" initials="A." surname="DeKok">
              <organization>FreeRADIUS</organization>
            </author>
            <date day="17" month="October" year="2024"/>
            <abstract>
              <t>   This document provides implementation and operational considerations
   for using TLS-PSK with RADIUS/TLS (RFC6614) and RADIUS/DTLS
   (RFC7360).  The purpose of the document is to help smooth the
   operational transition from the use of the RADIUS/UDP to RADIUS/TLS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-radext-tls-psk-11"/>
        </reference>
        <reference anchor="I-D.tomas-openroaming">
          <front>
            <title>WBA OpenRoaming Wireless Federation</title>
            <author fullname="Bruno Tomas" initials="B." surname="Tomas">
              <organization>Wireless Broadband Alliance, Inc.</organization>
            </author>
            <author fullname="Mark Grayson" initials="M." surname="Grayson">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Necati Canpolat" initials="N." surname="Canpolat">
              <organization>Intel Corporation</organization>
            </author>
            <author fullname="Betty A. Cockrell" initials="B. A." surname="Cockrell">
              <organization>SingleDigits</organization>
            </author>
            <author fullname="Sri Gundavelli" initials="S." surname="Gundavelli">
              <organization>Cisco Systems</organization>
            </author>
            <date day="25" month="July" year="2024"/>
            <abstract>
              <t>   This document describes the Wireless Broadband Alliance's OpenRoaming
   system.  The OpenRoaming architectures enables a seamless onboarding
   experience for devices connecting to access networks that are part of
   the federation of access networks and identity providers.  The
   primary objective of this document is to describe the protocols that
   form the foundation for this architecture, enabling providers to
   correctly configure their equipment to support interoperable
   OpenRoaming signalling exchanges.  In addition, the topic of
   OpenRoaming has been raised in different IETF working groups, and
   therefore a secondary objective is to assist those discussions by
   describing the federation organization and framework.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tomas-openroaming-03"/>
        </reference>
        <reference anchor="I-D.josefsson-pppext-eap-tls-eap">
          <front>
            <title>Protected EAP Protocol (PEAP) Version 2</title>
            <author fullname="Ashwin Palekar" initials="A." surname="Palekar">
              <organization>Microsoft Corporation</organization>
            </author>
            <author fullname="Simon Josefsson" initials="S." surname="Josefsson">
              <organization>Extundo</organization>
            </author>
            <author fullname="Daniel Simon" initials="D." surname="Simon">
              <organization>Microsoft Corporation</organization>
            </author>
            <author fullname="Glen Zorn" initials="G." surname="Zorn">
              <organization>Cisco Systems</organization>
            </author>
            <date day="21" month="October" year="2004"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP) provides support for
   multiple authentication methods. This document defines the Protected
   Extensible Authentication Protocol (PEAP) Version 2, which provides
   an encrypted and authenticated tunnel based on transport layer
   security (TLS) that encapsulates EAP authentication mechanisms.
   PEAPv2 uses TLS to protect against rogue authenticators, protect
   against various attacks on the confidentiality and integrity of the
   inner EAP method exchange and provide EAP peer identity privacy.
   PEAPv2 also provides support for chaining multiple EAP mechanisms,
   cryptographic binding between authentications performed by inner EAP
   mechanisms and the tunnel, exchange of arbitrary parameters (TLVs),
   and fragmentation and reassembly.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-josefsson-pppext-eap-tls-eap-10"/>
        </reference>
        <reference anchor="BLAST" target="https://www.blastradius.fail/pdf/radius.pdf">
          <front>
            <title>RADIUS/UDP Considered Harmful</title>
            <author initials="" surname="Goldberg, S , et al" fullname="Golberg, Sharon, et. al">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DATTACK" target="https://www.ietf.org/ietf-ftp/ietf-mail-archive/radius/1998-11.mail">
          <front>
            <title>CHAP and Shared Secret</title>
            <author initials="A." surname="DeKok" fullname="Alan DeKok">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MD5-1996" target="https://www.ietf.org/ietf-ftp/ietf-mail-archive/radius/1998-02">
          <front>
            <title>MD5 Key recovery attack</title>
            <author initials="I. R. W." surname="group" fullname="IETF RADIUS Working group">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MAY-1995" target="http://ftp.cerias.purdue.edu/pub/doc/network/radius/archive/ietf-radius.9506">
          <front>
            <title>Proxy-State radius extension to support stateless proxies</title>
            <author initials="M." surname="O'Dell" fullname="Mike O'Dell">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="EDUROAM" target="https://eduroam.org">
          <front>
            <title>eduroam</title>
            <author initials="" surname="eduroam" fullname="eduroam">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="EXPLOIT" target="https://www.cisa.gov/news-events/cybersecurity-advisories/aa22-158a">
          <front>
            <title>People’s Republic of China State-Sponsored Cyber Actors Exploit Network Providers and Devices</title>
            <author initials="A. C. D." surname="Agency" fullname="America's Cyber Defense Agency">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="FILTER" target="https://community.jisc.ac.uk/library/janet-services-documentation/filtering-invalid-realms">
          <front>
            <title>Filtering of Invalid Realms</title>
            <author initials="J. I. S." surname="Committee" fullname="Joint Information Systems Committee">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="BRIGGS" target="https://www.fcc.gov/ecfs/document/10427582404839/1">
          <front>
            <title>Comments on the FCC’s Public Notice DA 24-308 on SS7 and Diameter Vulnerabilities</title>
            <author initials="K." surname="Briggs" fullname="Kevin Briggs">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="HASHCLASH" target="https://github.com/cr-marcstevens/hashclash">
          <front>
            <title>Project HashClash - MD5 &amp; SHA-1 cryptanalytic toolbox</title>
            <author initials="M." surname="Stevens" fullname="Marc Stevens">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OPENROAMING" target="https://wballiance.com/openroaming/">
          <front>
            <title>OpenRoaming: One global Wi-Fi network</title>
            <author initials="W. B." surname="Alliance" fullname="Wireless Broadband Alliance">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="WIFILOC" target="https://www.wi-fi.org/discover-wi-fi/wi-fi-location">
          <front>
            <title>Accurate indoor location with Wi-Fi connectivity</title>
            <author initials="W.-F." surname="Alliance" fullname="Wi-Fi Alliance">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SPOOFING" target="https://networkradius.com/articles/2021/08/04/wifi-spoofing.html">
          <front>
            <title>Wi-Fi Spoofing for Fun and Profit</title>
            <author initials="A." surname="Cudbard-Bell" fullname="Arran Cudbard-Bell">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ASLEAP" target="https://github.com/joswr1ght/asleap">
          <front>
            <title>asleap - recovers weak LEAP and PPTP passwords</title>
            <author initials="J." surname="Wright" fullname="Joshua Wright">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="WBA" target="https://wballiance.com/radius-accounting-assurance/">
          <front>
            <title>RADIUS Accounting Assurance</title>
            <author initials="W. B." surname="Alliance" fullname="Wireless Broadband Alliance">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RADEXT118" target="https://youtu.be/wwmYSItcQt0?t=3953">
          <front>
            <title>RADIUS Accounting Assurance at IETF 118</title>
            <author initials="W. B." surname="Alliance" fullname="Wireless Broadband Alliance">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PWNED" target="https://haveibeenpwned.com/">
          <front>
            <title>Have I been Pwned</title>
            <author initials="T." surname="Hunt" fullname="Troy Hunt">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ISSUES" target="https://github.com/radext-wg/issues-and-fixes-2/wiki">
          <front>
            <title>Issues and Fixes 2</title>
            <author initials="" surname="RADEXT" fullname="IETF RADEXT Working Group">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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="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="RFC7525">
          <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="R. Holz" initials="R." surname="Holz"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are widely used to protect data exchanged over application protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the last few years, several serious attacks on TLS have emerged, including attacks on its most commonly used cipher suites and their modes of operation. This document provides recommendations for improving the security of deployed services that use TLS and DTLS. The recommendations are applicable to the majority of use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7525"/>
          <seriesInfo name="DOI" value="10.17487/RFC7525"/>
        </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="RFC6280">
          <front>
            <title>An Architecture for Location and Location Privacy in Internet Applications</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="M. Lepinski" initials="M." surname="Lepinski"/>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <date month="July" year="2011"/>
            <abstract>
              <t>Location-based services (such as navigation applications, emergency services, and management of equipment in the field) need geographic location information about Internet hosts, their users, and other related entities. These applications need to securely gather and transfer location information for location services, and at the same time protect the privacy of the individuals involved. This document describes an architecture for privacy-preserving location-based services in the Internet, focusing on authorization, security, and privacy requirements for the data formats and protocols used by these services. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="160"/>
          <seriesInfo name="RFC" value="6280"/>
          <seriesInfo name="DOI" value="10.17487/RFC6280"/>
        </reference>
        <reference anchor="RFC6733">
          <front>
            <title>Diameter Base Protocol</title>
            <author fullname="V. Fajardo" initials="V." role="editor" surname="Fajardo"/>
            <author fullname="J. Arkko" initials="J." surname="Arkko"/>
            <author fullname="J. Loughney" initials="J." surname="Loughney"/>
            <author fullname="G. Zorn" initials="G." role="editor" surname="Zorn"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The Diameter base protocol is intended to provide an Authentication, Authorization, and Accounting (AAA) framework for applications such as network access or IP mobility in both local and roaming situations. This document specifies the message format, transport, error reporting, accounting, and security services used by all Diameter applications. The Diameter base protocol as defined in this document obsoletes RFC 3588 and RFC 5719, and it must be supported by all new Diameter implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6733"/>
          <seriesInfo name="DOI" value="10.17487/RFC6733"/>
        </reference>
        <reference anchor="RFC7930">
          <front>
            <title>Larger Packets for RADIUS over TCP</title>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The RADIUS-over-TLS experiment described in RFC 6614 has opened RADIUS to new use cases where the 4096-octet maximum size limit of a RADIUS packet proves problematic. This specification extends the RADIUS-over-TCP experiment (RFC 6613) to permit larger RADIUS packets. This specification compliments other ongoing work to permit fragmentation of RADIUS authorization information. This document registers a new RADIUS code, an action that required IESG approval.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7930"/>
          <seriesInfo name="DOI" value="10.17487/RFC7930"/>
        </reference>
        <reference anchor="RFC2869">
          <front>
            <title>RADIUS Extensions</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="W. Willats" initials="W." surname="Willats"/>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes additional attributes for carrying authentication, authorization and accounting information between a Network Access Server (NAS) and a shared Accounting Server using the Remote Authentication Dial In User Service (RADIUS) protocol described in RFC 2865 and RFC 2866. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2869"/>
          <seriesInfo name="DOI" value="10.17487/RFC2869"/>
        </reference>
        <reference anchor="RFC8907">
          <front>
            <title>The Terminal Access Controller Access-Control System Plus (TACACS+) Protocol</title>
            <author fullname="T. Dahm" initials="T." surname="Dahm"/>
            <author fullname="A. Ota" initials="A." surname="Ota"/>
            <author fullname="D.C. Medway Gash" initials="D.C." surname="Medway Gash"/>
            <author fullname="D. Carrel" initials="D." surname="Carrel"/>
            <author fullname="L. Grant" initials="L." surname="Grant"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes the Terminal Access Controller Access-Control System Plus (TACACS+) protocol, which is widely deployed today to provide Device Administration for routers, network access servers, and other networked computing devices via one or more centralized servers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8907"/>
          <seriesInfo name="DOI" value="10.17487/RFC8907"/>
        </reference>
        <reference anchor="RFC4120">
          <front>
            <title>The Kerberos Network Authentication Service (V5)</title>
            <author fullname="C. Neuman" initials="C." surname="Neuman"/>
            <author fullname="T. Yu" initials="T." surname="Yu"/>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <author fullname="K. Raeburn" initials="K." surname="Raeburn"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This document provides an overview and specification of Version 5 of the Kerberos protocol, and it obsoletes RFC 1510 to clarify aspects of the protocol and its intended use that require more detailed or clearer explanation than was provided in RFC 1510. This document is intended to provide a detailed description of the protocol, suitable for implementation, together with descriptions of the appropriate use of protocol messages and fields within those messages. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4120"/>
          <seriesInfo name="DOI" value="10.17487/RFC4120"/>
        </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="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="RFC9257">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
        <reference anchor="RFC7542">
          <front>
            <title>The Network Access Identifier</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>In order to provide inter-domain authentication services, it is necessary to have a standardized method that domains can use to identify each other's users. This document defines the syntax for the Network Access Identifier (NAI), the user identifier submitted by the client prior to accessing resources. This document is a revised version of RFC 4282. It addresses issues with international character sets and makes a number of other corrections to RFC 4282.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7542"/>
          <seriesInfo name="DOI" value="10.17487/RFC7542"/>
        </reference>
        <reference anchor="RFC4372">
          <front>
            <title>Chargeable User Identity</title>
            <author fullname="F. Adrangi" initials="F." surname="Adrangi"/>
            <author fullname="A. Lior" initials="A." surname="Lior"/>
            <author fullname="J. Korhonen" initials="J." surname="Korhonen"/>
            <author fullname="J. Loughney" initials="J." surname="Loughney"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document describes a new Remote Authentication Dial-In User Service (RADIUS) attribute, Chargeable-User-Identity. This attribute can be used by a home network to identify a user for the purpose of roaming transactions that occur outside of the home network. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4372"/>
          <seriesInfo name="DOI" value="10.17487/RFC4372"/>
        </reference>
        <reference anchor="RFC8559">
          <front>
            <title>Dynamic Authorization Proxying in the Remote Authentication Dial-In User Service (RADIUS) Protocol</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <author fullname="J. Korhonen" initials="J." surname="Korhonen"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>RFC 5176 defines Change-of-Authorization (CoA) and Disconnect Message (DM) behavior for RADIUS. RFC 5176 also suggests that proxying these messages is possible, but it does not provide guidance as to how that is done. This specification updates RFC 5176 to correct that omission for scenarios where networks use realm-based proxying as defined in RFC 7542. This specification also updates RFC 5580 to allow the Operator-Name attribute in CoA-Request and Disconnect-Request packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8559"/>
          <seriesInfo name="DOI" value="10.17487/RFC8559"/>
        </reference>
        <reference anchor="RFC9190">
          <front>
            <title>EAP-TLS 1.3: Using the Extensible Authentication Protocol with TLS 1.3</title>
            <author fullname="J. Preuß Mattsson" initials="J." surname="Preuß Mattsson"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>The Extensible Authentication Protocol (EAP), defined in RFC 3748, provides a standard mechanism for support of multiple authentication methods. This document specifies the use of EAP-TLS with TLS 1.3 while remaining backwards compatible with existing implementations of EAP-TLS. TLS 1.3 provides significantly improved security and privacy, and reduced latency when compared to earlier versions of TLS. EAP-TLS with TLS 1.3 (EAP-TLS 1.3) further improves security and privacy by always providing forward secrecy, never disclosing the peer identity, and by mandating use of revocation checking when compared to EAP-TLS with earlier versions of TLS. This document also provides guidance on authentication, authorization, and resumption for EAP-TLS in general (regardless of the underlying TLS version used). This document updates RFC 5216.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9190"/>
          <seriesInfo name="DOI" value="10.17487/RFC9190"/>
        </reference>
        <reference anchor="RFC5931">
          <front>
            <title>Extensible Authentication Protocol (EAP) Authentication Using Only a Password</title>
            <author fullname="D. Harkins" initials="D." surname="Harkins"/>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This memo describes an Extensible Authentication Protocol (EAP) method, EAP-pwd, which uses a shared password for authentication. The password may be a low-entropy one and may be drawn from some set of possible passwords, like a dictionary, which is available to an attacker. The underlying key exchange is resistant to active attack, passive attack, and dictionary attack. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5931"/>
          <seriesInfo name="DOI" value="10.17487/RFC5931"/>
        </reference>
        <reference anchor="RFC2194">
          <front>
            <title>Review of Roaming Implementations</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Lu" initials="J." surname="Lu"/>
            <author fullname="J. Alsop" initials="J." surname="Alsop"/>
            <author fullname="J. Ding" initials="J." surname="Ding"/>
            <author fullname="W. Wang" initials="W." surname="Wang"/>
            <date month="September" year="1997"/>
            <abstract>
              <t>This document reviews the design and functionality of existing roaming implementations. Examples of cases where roaming capability might be required include ISP "confederations" and ISP-provided corporate network access support. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2194"/>
          <seriesInfo name="DOI" value="10.17487/RFC2194"/>
        </reference>
        <reference anchor="RFC3748">
          <front>
            <title>Extensible Authentication Protocol (EAP)</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="L. Blunk" initials="L." surname="Blunk"/>
            <author fullname="J. Vollbrecht" initials="J." surname="Vollbrecht"/>
            <author fullname="J. Carlson" initials="J." surname="Carlson"/>
            <author fullname="H. Levkowetz" initials="H." role="editor" surname="Levkowetz"/>
            <date month="June" year="2004"/>
            <abstract>
              <t>This document defines the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication methods. EAP typically runs directly over data link layers such as Point-to-Point Protocol (PPP) or IEEE 802, without requiring IP. EAP provides its own support for duplicate elimination and retransmission, but is reliant on lower layer ordering guarantees. Fragmentation is not supported within EAP itself; however, individual EAP methods may support this. This document obsoletes RFC 2284. A summary of the changes between this document and RFC 2284 is available in Appendix A. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3748"/>
          <seriesInfo name="DOI" value="10.17487/RFC3748"/>
        </reference>
        <reference anchor="RFC5281">
          <front>
            <title>Extensible Authentication Protocol Tunneled Transport Layer Security Authenticated Protocol Version 0 (EAP-TTLSv0)</title>
            <author fullname="P. Funk" initials="P." surname="Funk"/>
            <author fullname="S. Blake-Wilson" initials="S." surname="Blake-Wilson"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>EAP-TTLS is an EAP (Extensible Authentication Protocol) method that encapsulates a TLS (Transport Layer Security) session, consisting of a handshake phase and a data phase. During the handshake phase, the server is authenticated to the client (or client and server are mutually authenticated) using standard TLS procedures, and keying material is generated in order to create a cryptographically secure tunnel for information exchange in the subsequent data phase. During the data phase, the client is authenticated to the server (or client and server are mutually authenticated) using an arbitrary authentication mechanism encapsulated within the secure tunnel. The encapsulated authentication mechanism may itself be EAP, or it may be another authentication protocol such as PAP, CHAP, MS-CHAP, or MS-CHAP-V2. Thus, EAP-TTLS allows legacy password-based authentication protocols to be used against existing authentication databases, while protecting the security of these legacy protocols against eavesdropping, man-in-the-middle, and other attacks. The data phase may also be used for additional, arbitrary data exchange. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5281"/>
          <seriesInfo name="DOI" value="10.17487/RFC5281"/>
        </reference>
        <reference anchor="RFC2975">
          <front>
            <title>Introduction to Accounting Management</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Arkko" initials="J." surname="Arkko"/>
            <author fullname="D. Harrington" initials="D." surname="Harrington"/>
            <date month="October" year="2000"/>
            <abstract>
              <t>This document describes and discusses the issues involved in the design of the modern accounting systems. The field of Accounting Management is concerned with the collection the collection of resource consumption data for the purposes of capacity and trend analysis, cost allocation, auditing, and billing. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2975"/>
          <seriesInfo name="DOI" value="10.17487/RFC2975"/>
        </reference>
        <reference anchor="RFC6929">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS) Protocol Extensions</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <author fullname="A. Lior" initials="A." surname="Lior"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>The Remote Authentication Dial-In User Service (RADIUS) protocol is nearing exhaustion of its current 8-bit Attribute Type space. In addition, experience shows a growing need for complex grouping, along with attributes that can carry more than 253 octets of data. This document defines changes to RADIUS that address all of the above problems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6929"/>
          <seriesInfo name="DOI" value="10.17487/RFC6929"/>
        </reference>
        <reference anchor="RFC8018">
          <front>
            <title>PKCS #5: Password-Based Cryptography Specification Version 2.1</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="A. Rusch" initials="A." surname="Rusch"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document provides recommendations for the implementation of password-based cryptography, covering key derivation functions, encryption schemes, message authentication schemes, and ASN.1 syntax identifying the techniques.</t>
              <t>This document represents a republication of PKCS #5 v2.1 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 2898.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8018"/>
          <seriesInfo name="DOI" value="10.17487/RFC8018"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAPJIMmcAA9y963IbSZYm+J9PEcPc6SK7AIik7tlb3YOUlJWc1IWTVJa6
tq1nLAAEiCgBEeiIAClUrsb6NdZs1myfZR+ln2TP3Y97BChlWbXZzOaPKoqM
8PDr8XP5znfG4/FRV3br4tvsZbFtinneldVNdlm1xXzXFNlVk8+7cl60WVll
P01fXv58fZTPZk1xG78gf1rU8yrfQGOLJl9247LoluMmXxSfuvEiPI2/Knft
+OzR0W67yLui/Ta7ePbk8Qj/98koe3z+FP736eNnj4+O2i6vFv8tX9cVtNo1
u+Ko3Db0U9tdnJ09P7s4ypsi/xa63BVNVXRHdzffYnde/eP77EPdfMTe/b6p
d9ujj3fhqfFL7OAR9OfbrO0WR+1utinbtqyr9/stfOny1fvvj4625bcZ/PdN
Ns+rbNcWWd40+T47KZdZvl5n+6I9zeomW+XtKlsVTXGUZV09/xb/AD+2ddM1
xbL9lppYFMt8t+5aeEL/vt/wn/GfR/muW9XNt0dHY5hq+OV0AhP8Y/0RHuQp
na6hE/qrurnBwXz8rikXN0X2tujuYKzYarHJy/W30D+Yt/9UVh9n9EQlD0zm
9eboqKqbDazEbfEtvPDT9y+enT99JD/iOsiPTx5dnOsDZ4/ggaOyWiZvnj+0
Zy4ePXyoPz59/Dy09yT8+Ex+fPj4qT6Ai60/Pn52pt8+f6ztPrk419eePDl/
GH7ULj95/lR/+/ThE2rhcvxy4jdft27H2/aj/qmrN3k7rrdF1dT5BnaI/uFP
dQsr0tbVeLvd4otFvqWX4f/xme9eT6/f4w/wnxybY976D35+eZW9qKu2XMBG
WGQ/5M1muVsf87O6uBn/Rwv8+3q9mBXNzSi7noyyopvAmukDvOLwhDywypu6
ih/ilbAm3//je9hnq67btt8+eHB3dzeZrfO245M2WcKeeLBdLB/Iv+FHePHl
9P376Ysfk/G8+GF6lcHmoa/CSK6LeVN0wwMZ2Jlf0zVcmgls4Qe0Rstuyz/g
zh3nzXwF+0t6+uD8+fNn4/PzCf4NGnzz8vEYfvUk6TP8Ovux2GcgYerbotln
edfl84/3dRpPuIgtkxM3JCf+fcYAggq6P/0jdv9x0v2rpv60H193IAozfieD
zVdUKI9QXrS77RaECUgqeGJdtG22hTfKor1vgG/Kj0X27jcvi/WXdgyMCPo/
mRdNmcPe2DWLXTEpFrsH293sAYj0ByI9dDw6PD1huKOePz57Ai2/evnzT++m
b5LxQVt40O7rrTzyFZMvT+Lc4wf/8er1u8v0TF4V9XZd/Nu//l9t9lMBo1iX
86xeZi9WZZVnNM/j6y0c1ho3+Is9nLJsOu/qps1efdqu67JTiQoXYH2LR7ql
I/GyuMXL8N7DsIFpnOe/aaXdl8USFrLIpiCE5/uv3Fzzss0nN/UtzPwdCJ/b
ouraB3Nsj+7lstuP88VtCf2HTfAgzy8uxuePn+XQ4PeXr9+/+imZju/LNVx7
uMNhEi6r23xdLmBi8vXm3qH857qsOnhehD7sxet92xUbGFq92ZRdVxRfMR64
cTa7Cro8+VPZzif5fLL7+GBdzpq82T/4U46XcVs0NK9j2Gy7DQyWvvZgqd0e
l9zncUN9RkH80+Xvf3+dSi74Es5UhqdmVWTfv3hBW+CKN8DbGjUZkHrZxaPx
w7Nn+Nj19VNe2BJGDB/L/rBbV0WTz8p12X3hgP0Im6HK4Aa+uWkPz4Nf1uV8
TqtazJftAx3rg/OzR3BhPrt4dPbo2cPnD87h9R+m1z+8gLvmh76g+FMx7+B2
aVcv1qh2jFEkZn+TXf8wHZ9n82a/BYUpX+9hqCA54AKpP90rJOAsw4HAHfYV
Y7gpu9VuhjrEg3kDoq6Zt/zqA1SB5tgheO/d1au3KAQu3/4+6f47uHF/khs3
e1cV2c26nuXr7EM5/r7MRMrc190PZcPy7zsQAYsZrtx0vS7zav41O/EOvsUP
0xDc/f8AXvhwCWfn3Yuky9M5nDeUy2W1qEHXW9dzPgp3MBfS8XldVbAq5S1s
8vt6f8yPa4+Pv27T3JXjZUk3zQLOD15vY/rVA/rfsXYI3r++evfu+/6s81dB
3tVLFAHwvez7XUXbHvbTsrz3bj+egspbZS92MNvNYvwd3CZf0W9ZSrkbcLLz
BnYkLN2Di7OL8wdnzx6cPYIBQP9b6ddk1W3woppev341vUqGkLdr0MBgs8sF
32Z3Rf4xwyd5HFfvr7Jt3rbw1cUXZFq72uXZBzi1q+5X7XjQDe+ac3jrAfcG
t8x300FlEC6Teb2ryDKati1soLDch3bGwY39Ndsk3thiXuXWiXGuncCNzsbR
OWvVX9d30KdYYYK3/h3Hsa933W4yK2Dfb/54fdnN/0t39g/d7x4+f/wQnr/6
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

-->

</rfc>
