<?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-02" category="std" consensus="true" submissionType="IETF" 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-02"/>
    <author initials="A." surname="DeKok" fullname="Alan DeKok">
      <organization>InkBridge Networks</organization>
      <address>
        <email>aland@inkbridgenetworks.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="09"/>
    <area>Internet</area>
    <workgroup>RADEXT Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 140?>

<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 "Blast RADIUS" exploit has shown that RADIUS 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 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>
    </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 146?>

<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 as discussed in <xref target="RFC3579"/> Section 4.3.2.  In order to prevent such spoofing, that specification defined the Message-Authenticator attribute (<xref target="RFC3579"/> Section 3.2) which allowed for packets to carry an additional authentication field based on HMAC-MD5.</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.  The first recorded comment that Access-Request packets could be spoofed 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 only recorded conclusion was the definition of Message-Authenticator as an optional HMAC-based attribute.</t>
      <t>This lack of integrity checks for Access-Request packets was deemed acceptabled 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>This conclusion is incorrect, because it does not address the issue of dictionary attacks, however.  The text continues with an acknowledgement 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, and it appears that no implementation followed this 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 two RADIUS servers 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 Blast RADIUS vulnerability would 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 over DTLS in <xref target="RFC7360"/>.  The secondary outcome was a conclusion that adding crypto-agility to RADIUS was likely not a good idea, and that standardizing RADIUS over TLS instead was significantly better.</t>
      <t>While the RADIUS over TLS work is ongoing at the time of this writing, there are still a large number of sites using RADIUS over UDP.  Those sites need to be supported and secured until they can migrate to TLS.</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 acknowledgment that Access-Request packets lack integrity checks is almost three decades old.  Over that entire span of time, there has been no solution for addressing the use of MD5 in the RADIUS protocol.  This document offers that solution: deprecate insecure practices, and mandate secure ones.</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"/>, 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 nonetheless 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 Blast RADIUS attack is discussed in more detail below, in <xref target="blastradius"/>.</t>
        <t>Even if we ignore the Blast RADIUS attack, problems with MD5 means 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 test 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 crackng 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, (<xref target="ms-chap"/>).</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 are not proven to be secure.  Peoples locations can (and have) been accurately determined, and people have been tracked using location data sent insecurely across the Internet ([]{#privacy}).</t>
        <t>The implications for security and individual safety are large, and negative.</t>
        <t>These issues are only partly mitigated when the authentication methods carried within RADIUS define their own processes 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.  The use of MAC address randomization can limit device information identification to a particular manufacturer, instead of to a unique device.</t>
        <t>However, these authentication 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 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.  However, 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 target="RFC7525"/> Section 6.3), 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 (recommended) or time based limit before replacing the session keys.  The session keys can be replaced though a process of either rekeying 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 (<xref target="RFC7585"/>.</t>
        <t>There are many additional issues on top of 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, and shows 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 privacy and security considerations.</t>
        <t>As IPSec has been discussed previously in the context of RADIUS, we do not discuss it in detail to it 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.  However, all of the issues raised here about the RADIUS protocol also apply to IPSec transport.</t>
        <t>While this document tries to be comprehensive, it is necessarily imperfect.  There may be issues which should have been included, but which were missed due to oversight or accident.  Any reader should be aware that there are good practices which are perhaps not documented here, and bad behaviors which are likewise not forbidden.</t>
        <t>There is also a common tendency to suggest 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 mentioned in the specification cannot honestly be said to be "permitted" or "allowed" by that specification.  Instead, the correct description for such behaviors is that they are not forbidden.  In many cases, documents such as <xref target="RFC5080"/> are written to both correct errors in earlier documents, and to address harmful behaviors have been seen in practice.</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 the 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 be wrong.</t>
        <t>It is RECOMMENDED that implementations follow widely accepted practices which have been proven to work, even if those practices are not written down in a public specification.  Failure to follow common industry practices usually results in interoperability failures.</t>
      </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="RFC2865"/>, 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-Authentor as "signing" the packets.  This terminology is not consistent with modern cryptographic terms, but using other terminology could be misleading.  The reader should be assured that no modern cryptographic processes 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 Blast RADIUS vulnerability 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.  Multifactor 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>A related 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 trafic 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 only 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="blastradius">
        <name>The Blast RADIUS Vulberability</name>
        <t>The Blast RADIUS vulnerability is discussed in detail in TBD, 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>The vulnerability relies on the following property of MD5, where we have texts "A", "B", "S", and "+" denotes concatenation.</t>
        <ul empty="true">
          <li>
            <t>If MD5(A) == MD5(B), then MD5(A + S) == MD5(B + S)</t>
          </li>
        </ul>
        <t>In RADIUS, the Response Authenticator field <xref section="3" sectionFormat="comma" target="RFC2865"/> is calculated via a similar construct:</t>
        <ul empty="true">
          <li>
            <t>Response Authenticator = MD5(packet + secret)</t>
          </li>
        </ul>
        <t>If the attacker can discover two packets "A" and "B" which have the same MD5 digest, then the attacker can make the RADIUS server calculate MD5(A + secret).  The attacker then can replace packet "A" with packet "B", and send that changed packet to the client.  The client calculates MD5(B + secret), verifies the Response Authenticator, and accepts the packet.</t>
        <t>This process is the basic concept behind the Blast RADIUS vulnerability.  We note that this attack does not expose the contents of the User-Password attribute.  Instead, it bypasses all server-side authentication, and instead 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 all-too-often "the entire Internet".  As such, this attack alone should be seen as a cause to deprecate RADIUS/UDP entirely.</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 Section 6 of <xref 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>That is, 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, a common Wi-Fi configuration allows the location of individuals can potentially be tracked in real-time (usually 10 minute intervals), to within 15 meters.  Their devices can be identified, and 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 are still occuring, 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, one GPU can search a 64-character space in about six months, and a 93 character space 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>Even worse, 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>It should be assumed 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 derived from a limited character set.  Theses practice are easy to implement and follow, but they are highly insecure and SHOULD 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 Tunnel-Password attribute, at least 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 there to be 16 octets of random data.  This difference has negative impacts on security.</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.  However, such limited entropy cannot be a good thing, and it is one more reason to deprecate RADIUS/UDP.</t>
        <t>Due to the above issues, implementations and new specifications SHOULD NOT permit obfuscated attributes to be used 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 focusses 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 in an insecure form.  It is possible for an authentication server to terminal 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 a RADIUS EAP-Message attribute.</t>
        <t>Similar issues apply to RADIUS/TLS and IPSec.  A proxy could terminate the secure tunnel, and forward the RADIUS 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.</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>
    <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 immediately compromised.  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>In conclusion, 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="the-blast-radius-attack">
      <name>The Blast RADIUS 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 specifc 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.  And 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.   It is not clear why Proxy-State is defined this way, as the records of the original IETF RADIUS working group have either been lost to time, or are missing.  However, the design and implementation of Proxy-State is just about ideal for for leveraging the attack.</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.</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 increase the cost of that calculation.</t>
      <t>Again, 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.</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.</li>
        <li>The attacker discards the original Access-Reject, and uses the chosen prefix data 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.</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.</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 result of the attack is a near-total compromise of RADIUS security.  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.</t>
      <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 request and response packets MUST remain 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.  Clients and servers MAY include Message-Authenticator in request and responses packets which are sent over TLS or DTLS transports, but the attribute serves no security purpose.</t>
        <t>We recognize that implementing these mitigation 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 an immediate and 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 for RADIUS systems, rather than a limited subset.  We therefore mandate new behavior for all RADIUS clients and server, 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 attacks, 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.</t>
          <t>From a cryptographic point of view, the location of Message-Authenticator does not matter, as 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.  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>When this flag is set to "true", any 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>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, but 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>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 the paper" has the following comment about the FreeRADIUS server, which has has 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>Every network administrator 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 the location of the Message-Authenticator attribute.</t>
          <t>Unfortunately, there is no way for clients and servers to negotiate configuration in RADIUS/UDP or RADIUS/TCP.  The server cannot determine if the packets are discarded due to an attack, or if they are discarded due to a mismatched configuration between client and server.  The server 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 corner case for debugging purposes, instead of discarding the packet, servers MAY immediately 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.  This behavior MUST be enabled only 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.</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>As RADIUS clients are upgraded over time, RADIUS servers can eventually 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 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 is set to "false".</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>As RADIUS proxies are now mandated to add Proxy-State to all proxied packets, this flag MAY 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 legcy 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 Blast RADIUS 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 behave this way, which is not the default behavior for most servers.</t>
          <t>It is therefore RECOMMENDED that servers only echo back user-supplied data in responses when the "require Message-Authenticator" flag is set to "true".  No other configuration is known to protect from all possible variants of this attack.</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 not mitigate the attack.  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 the paper 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>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 RFC 2865 Section 1.2) 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 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 related issues which do not involve changes to the RADIUS protocol.</t>
        <section anchor="other-mitigations">
          <name>Other Mitigations</name>
          <t>RADIUS clients (but not proxies) MAY also check for the existence of the Proxy-State attribute in responses to Access-Request packets.  Since a NAS / GGSN / etc. is not a RADIUS proxy, it will never sent a Proxy-State in an Access-Request,, and therefore responses to that Access-Request will never contain a Proxy-State attribute.  In addition, no standards compliant RADIUS server will respond with a Proxy-State when the Access-Request does not contain a Proxy-State attribute.</t>
          <t>If the response to an Access-Request does contain a Proxy-State attribute, then the client can safely discard the packet, knowing that it is invalid.  This behaviour SHOULD always be enabled, and should not be configurable.</t>
          <t>This behavior will also help protect the client when the new configuration flags described here are not set.</t>
          <t>However, as noted in the Section 7.7 of the Blast RADIUS paper, this behavior alone is not sufficient to protect the client.  The attacker can not only hide a Message-Authenticator if it is last in a response packet, the attacker can use similar techniques to hide Proxy-State attributes.  The client would then see a response which does not contain Message-Authenticator or Proxy-State.  Instead, the client would see a response which does contain attributes that it is known to ignore, such as a Vendor-Specific attribute from an unknown vendor.</t>
        </section>
        <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, 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>
          <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 "Blast RADIUS" document.  For example, "Blast RADIUS" 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>"Blast RADIUS" Section 7.7 explains why validating Proxy-State, or looking for unexpected Proxy-State does not help.  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 Blast RADIUS 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>
        </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>All other methods 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 elsewhere 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.</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 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 attacker to forcibly authenticate users, but it may be possible for the attacker to control the authorization attributes for known and valid users.</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 the MS-MPPE-Recv-Key and MS-MPPE-Send-Key attributes in the Access-Accept packet.  The contents of the attributes are obfuscated via the same method used for Tunnel-Password.</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 must be used, every single hop in the proxy chain SHOULD be verified to follow the highest level of security, otherwise all security will be lost.</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 static routes.  This static configuration also protects them 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="note-on-proxy-state">
        <name>Note on Proxy-State</name>
        <t>As the Blast RADIUS 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 this the case, we go back to the original discussion in 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 implement 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.</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 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, and not as code.</t>
        <ol spacing="normal" type="1"><li>Access-Request does not contain a Message-Authenticator attribute
&gt; Action: Warn the administrator that the system is vulnerable, and should be upgraded</li>
          <li>Access-Accept, Access-Reject, or Access-Challenge does not contain a Message-Authenticator attribute
&gt; Action: Warn the administrator that the system is vulnerable, and should be upgraded</li>
          <li>Access-Accept, Access-Reject, or Access-Challenge contains a Message-Authenticator attribute, but it is not the first attribute in the packet
&gt; Action: Warn the administrator that the system is vulnerable, and should be upgraded</li>
          <li>Access-Request packet received by a RADIUS server contains Proxy-State, when the RADIUS client is a NAS
&gt; Action: Alert that an attack is likely taking place.
&gt; 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.</li>
          <li>Access-Accept, Access-Reject, or Access-Challenge sent by a RADIUS server contain Proxy-State, when the RADIUS client is a NAS.
&gt; Action: Alert that an attack is likely taking place.
&gt; 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.</li>
          <li>Any RADIUS traffic is sent over UDP or TCP transport, without IPSec or TLS.
&gt; Action: Warn that the system uses deprecated transport protocols, and should be upgraded.</li>
          <li>Any RADIUS traffic is sent external to the organization over UDP or TCP transport, without IPSec or TLS.
&gt; Action: Warn that this is an insecure configuration, and can expose users private data, identities, passwords, locations, etc. to unknown attackers.</li>
        </ol>
      </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-udp-and-tcp-as-transports">
        <name>Deprecating UDP and TCP as transports</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.</t>
      </section>
      <section anchor="mandating-secure-transports">
        <name>Mandating Secure transports</name>
        <t>All systems sending RADIUS packets outside of secure networks MUST use either IPSec, RADIUS/TLS, or RADIUS/DTLS. It is RECOMMENDED, for operational and security reasons that RADIUS/TLS or RADIUS/DTLS are preferred over 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, but not 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"/> et al. 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.  That is, RADIUS-specific cryptographic methods existing as of the publication of this document can continue to be used for historical compatibility.  However, all new cryptographic work in 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 a result, it is a difficult choice to forbid the use of these constructs.  If an attack is discovered which breaks RADIUS/UDP (e.g. by allowing attackers to forge Request Authenticators or Response Authenticators, or by allowing attackers to de-obfuscate User-Password), the solution would be to simply deprecate the use of RADIUS/UDP entirely.  It would not be acceptable to design new cryptographic primitives in an attempt to "secure" RADIUS/UDP.</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 protocol could use new cryptographic methods, and would be permitted to be transported in RADIUS.  This protocol could be a new EAP method, or it could use updates to TLS. 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 RADIUS 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 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 likely to be millions of RADIUS/UDP devices in daily use.  It takes significant time and effort to correct the deficiencies of all of these devices.</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 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 10 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.  One solution is to use a simple script given below.  While the script is not portable to all possible systems, the intent here is to document a concise and simple method for creating secrets which are secure, and humanly manageable.</t>
        <ul empty="true">
          <li>
            <t>#!/usr/bin/env perl
use MIME::Base32;
use Crypt::URandom();
print join('-', unpack("(A4)*", lc encode_base32(Crypt::URandom::urandom(12)))), "\n";</t>
          </li>
        </ul>
        <t>This script reads 96 bits of random data from a secure source, encodes it in Base32, and then makes it easier for people to work with.  The generated secrets are of the form "2nw2-4cfi-nicw-3g2i-5vxq".  This form of secret will be accepted by all implementation which supports at least 24 octets for shared secrets.</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 which can create and manage secure shared secrets.  The cost to do so is minimal for implementors.  Providing such a tool 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.   Experience has shown that these recommendations are inadequate.</t>
        <t>Some RADIUS clients never use the Message-Authenticator attribute, even for the situations where the <xref target="RFC3579"/> text suggests that it should be used.  When the Message-Authenticator attribute is missing from Access-Request packets, it is often possible to trivially forge or replay those packets.</t>
        <t>For example, an Access-Request packet containing CHAP-Password but which is missing Message-Authenticator can be trivially forged.  If an attacker sees one packet such packet, it is possible to replace the CHAP-Password and CHAP-Challenge (or Request Authenticator) with values chosen by the attacker.  The attacker can then perform brute-force attacks on the RADIUS server in order to test passwords.</t>
        <t>This document therefore requires that RADIUS clients MUST include the Message-Authenticator in all Access-Request packets when UDP or TCP transport is used.</t>
        <t>In contrast, when TLS-based transports are used, the Message-Authenticator attribute serves no purpose, and can be omitted, even when the Access-Request packet contains an EAP-Message attribute.  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"/> and <xref target="RFC3579"/>.</t>
        <section anchor="server-behavior">
          <name>Server Behavior</name>
          <t>In order to allow for migration from historic client behavior, servers SHOULD include a configuration flag which controls the above behavior.  The flag could be called "require Message-Authenticator", though other names are possible.</t>
          <t>If the flag is set to "false", then the server behavior is unchanged from previous specifications.  If the flag is set to "true", then Access-Request packets which are missing the Message-Authenticator attribute MUST NOT be accepted by the server.  Instead, the server MUST reply immediately with an Access-Reject which contains an Error-Cause attribute with value 510 (Missing Message-Authenticator).</t>
          <t>The purpose of this reply is two-fold.  First, the reply is a signal the client that the server is still alive.  If the packet was silently discarded, the client would have no idea why the server failed to respond.  The client could erroneously conclude that the server was down, and initiate fail-over procedures.  Such behavior leads to network instability, and should be avoided.</t>
          <t>The second purpose of the reply is to inform the administrator of the client system as to why the Access-Request was not accepted.  The Error-Cause attribute signals the administrator as to the reason for the rejection, and indicates the corrective course of action which needs to be taken.</t>
        </section>
      </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>Implementation and operational considerations for TLS-PSK are given in <xref target="I-D.ietf-radext-tls-psk"/>, and we do not repeat them here.</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 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.</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>We spend some time here in order to give recommendations for creating and managing of 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 conceptual parameters.</t>
          <ul empty="true">
            <li>
              <t>HASH</t>
              <ul empty="true">
                <li>
                  <t>A cryptographic 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 tunnelled 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 can be 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 determine which user is associated with it, the local network still needs to store the full set of CUI values which are associated with each user.</t>
          <t>If this tracking is too complex for a local 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 conceptual 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 tunnelled 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, the use of a hash-based method is RECOMMENDED.</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 target="RFC2865"/> Section 5.2.  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 identities and passwords 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 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 local organization.  If RADIUS proxying is necessary, another authentication method SHOULD be used.</t>
        <t>Client and server implementations SHOULD use programming techniques to securely wipe passwords 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 in the next section.</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 the 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 instead of 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>
      </section>
      <section anchor="password-visibility-and-storage">
        <name>Password Visibility and Storage</name>
        <t>An attacker may choose to ignore the wire protocol entirely, and therefore bypass all of the issues described earlier in this document.  An attacker could instead focus on a 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.  Such 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, this attack applies 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 largely 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 simple risk analysis, which we explain in more detail in the next section.</t>
        <section anchor="pap-security-analysis">
          <name>PAP Security Analysis</name>
          <t>When PAP is used, the RADIUS server obtains 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 is commonly referred to as being in "crypt"ed form.  The RADIUS server takes the input clear-text password, performs the same "crypt" transformation, and the two "crypt"ed passwords are compared.</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, and 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>In addition with PAP, the credentials in the database are stored securely at all times (presuming that the administrator only stores "crypt"ed credentials).  Any compromise of the database results in the disclosure of minimal information to an attacker.  That is, the attacker cannot easily obtain the clear-text passwords from compromising the 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 is not known 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 modificaiton.  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.  {#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, 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 believed to be secure, MS-CHAP is not, as we will see below 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 "crypt"ed passwords are sent to the server.  The server must obtain the clear-text (or NT hashed) password from the database, and then perform the "crypt" operation on the password from the database. The two "crypt"ed passwords are then compared as was done with PAP.  This inverted process has substantial and negative impacts on security.</t>
          <t>When CHAP or MS-CHAP are used, all of credentials are stored as clear-text passwords (or clear-text equivalent) in the database, all of the time.  The database contents might be encrypted, but 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>
        </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 claim is likewise false.</t>
          <t>The CHAP-Password attribute depends on the hash of a visible Request Authenticator (or CHAP-Challenge) and the users password, while 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 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 similar methods.</t>
        </section>
        <section anchor="pap-vs-chap-conclusions">
          <name>PAP vs CHAP Conclusions</name>
          <t>A careful security analyis 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.  In contrast, CHAP is highly insecure, as any database compromise results in the immediate exposure of the clear-text passwords for all users.</t>
          <t>This difference is shown not just in the <xref target="PWNED"/> database, but also in attacks on RADIUS systems <xref target="EXPLOIT"/>, where attackers identify a vulnerable RADIUS system and:</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 then proceeded to leverage those passwords:</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, hash), 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, and therefore can lower the risk of password exposure even more.  It is RECOMMENDED that administrators avoid password-based authentication methods where at all possible.</t>
        </section>
      </section>
      <section anchor="ms-chap">
        <name>MS-CHAP can be reversed</name>
        <t>MS-CHAP (v1 in <xref target="RFC2433"/> and v2 in <xref target="RFC2759"/>) has major design flaws, and should not be used outside of a secure tunnel such as with PEAP or TTLS.  As MS-CHAPv1 is less commonly used, the discussion in this section will focus on MS-CHAPv2.</t>
        <t>Recent developments demonstrate just how easy it is to attack MS-CHAPv2 exchanges, and obtain the "NT-hash" version of the password (<xref target="SENSEPOST"/>).  The attack relies on a vulnerability in the protocol design in <xref target="RFC2759"/> Section 8.4.  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>In fact, MS-CHAP has significantly poorer security than PAP when the MS-CHAP data is sent over the network in the clear.  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 been successfully attacked.</t>
        <t>Implementors and administrators SHOULD therefore consider MS-CHAP and MS-CHAPv2 to be equivalent in security to sending passwords in the clear, without any encryption or obfuscation.  That is, the User-Password attribute with 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 previous 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 benefits over PAP, MS-CHAP authentication SHOULD NOT be used even when the transport protocol is protected, as with IPSec or RADIUS over TLS.</t>
        <t>Existing RADIUS client implementations SHOULD deprecate the use of MS-CHAP entirely, and 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="eap">
        <name>EAP</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.  However, for the home authentication server, those EAP methods are still 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 compromise of 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.</t>
      </section>
      <section anchor="accounting-considered-imperfect">
        <name>Accounting Considered 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 acknowledgements are received.  Reducing the number of proxies means that there are fewer disparate systems which need to be 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>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 in RADIUS accouting 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, or large amounts of data being downloaded while claiming neglible packet counters, leading to absurdly large packet sizes.  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 lack of care is disappointing.</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 say 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>
    <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
&gt;
&gt; Exposing user identifiers, device identifiers, and locations is a privacy and security issue.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Avoid RADIUS/UDP or RADIUS/TCP in other networks, too.
&gt;
&gt; It can take time to upgrade equipment, but the long-term goal is to entirely deprecate RADIUS/UDP.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Use strong shared secrets
&gt;
&gt; 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.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Minimize the use of RADIUS proxies.
&gt;
&gt; More proxies means more systems which could be compromised, and more systems which can see private or secret data.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Do not proxy from secure to insecure transports
&gt;
&gt; 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.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Prefer EAP authentication methods to non-EAP methods.
&gt;
&gt; EAP authentication methods are better at hiding user credentials from observers.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>For EAP, use anonymous outer identifiers
&gt;
&gt;  There are few reasons to use individual identies for EAP.  Identifying the realm is usually enough.
&gt;
&gt; <xref target="RFC7542"/> Section 2.4 recommends that "@realm" is preferable to "anonymous@realm", which is in turn preferable to "user@realm".</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Do not use MS-CHAP outside of TLS-based EAP methods.
&gt;
&gt; MS-CHAP can be cracked with minimal effort.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Prefer using PAP to CHAP or MS-CHAP.
&gt;
&gt; PAP allows for credentials to be stored securely "at rest" in a user database.  CHAP and MS-CHAP do not.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Store passwords in "crypt"ed form
&gt;
&gt; Where is is necessary to store passwords, use systems such as PBKDF2 (<xref target="RFC8018"/>.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Regularly update to the latest cryptographic methods.
&gt;
&gt; 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.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Regularly deprecate older cryptographic methods.
&gt;
&gt; 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.</li>
          </ul>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <ul spacing="normal">
            <li>Send the minimim amount of information which is needed,.
&gt;
&gt; 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.</li>
          </ul>
        </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 security and privacy considerations for RADIUS.</t>
      <t>Deprecating insecure transport for RADIUS, and requiring secure transport means that many historical security issues with the RADIUS protocol no longer apply, or their impact is minimized.</t>
      <t>We reiterate the discussion above, that any security analysis must be done on the system as a whole.  It is not reaonable to put an expensive lock on the front door of a house while leaving the window next to it open, and then declare the house to be "secure". Any approach to security based on a simple checklist is at best naive, more truthfully is deeply misleading, and at worst such practices will decrease security.</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.</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 recommenation 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 implementors.  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 years.</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
502,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 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>
      </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>RADIUS and TLS-PSK</title>
            <author fullname="Alan DeKok" initials="A." surname="DeKok">
              <organization>FreeRADIUS</organization>
            </author>
            <date day="29" month="February" year="2024"/>
            <abstract>
              <t>   This document gives implementation and operational considerations for
   using TLS-PSK with RADIUS/TLS (RFC6614) and RADIUS/DTLS (RFC7360).
   The purpose of the document is to help smooth the operational
   transition from the use of the insecure RADIUS/UDP to the use of the
   much more secure RADIUS/TLS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-radext-tls-psk-09"/>
        </reference>
        <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="16" month="February" 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-02"/>
        </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="G. S. et." surname="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="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="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="SENSEPOST" target="https://github.com/sensepost/assless-chaps">
          <front>
            <title>Cracking MS-CHAP</title>
            <author initials="" surname="Sensepost" fullname="Sensepost">
              <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="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="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="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="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="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="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:
H4sIAFkrjWYAA9y963IbSZYm+J9PEcO03SI7AUqkrqnarhqmpMyklS6cJLPU
vT29YwEgQEQpEIGKCJBCpeVYv8aYzZjNs+yj9JPsuftxjwClrK1em+38UUWR
gIeH+/Hj5/Kd70yn04O+7KviRfaq2LTFPO/L+ia7qLtivm2L7LLN5305L7qs
rLMfz19d/HR1kM9mbXEbf0H+tGjmdb6GwRZtvuynZdEvp22+KD7100X4NP6q
3HbTh2cHB12f14v/kldNDd/q221xUG5a+qnrzx4+/AY+k7dF/gKm1BdtXfQH
dzcv8HGv/+E6+9C0H/Hp37fNdnPw8S58avoKJ3AAz3uRdf3ioNvO1mXXlU19
vdvAky5eX393cLApX2Tw31fZPK+zbVdkedvmu+yoXGZ5VWW7ojvOmjZb5d0q
WxVtcZBlfTN/gX+AH7um7dti2b2gIRbFMt9WfQef0L/v1vxn/OdBvu1XTfvi
4GAKSwm/PD+BBfxD8xE+yEt2XsEk9FdNe4Mv8/HbtlzcFNm7or+Dd8VRi3Ve
Vi9gfrBu/7GsP87oE7V84GTerA8O6qZdw0rfFi/gCz9+9/L56bPH8uPZ86dP
5Menj89O9QMPH8MHDsp6mXzz9JF95uzxo0f647Mn34TxnoYfn8uPj5480w88
OX2mH3jy5PlDffbpEx336dmpfu3p09NH4Ued8tNvnulvnz16SiNcTF+deOHq
q2666T7qn/pmnXfTZlPUbZOvQUL0D39qOtiRrqmnm80Gv1jkG/oy/D9+5ts3
51fX+AP8J8fikEX7wU+vLrOXTd2VCxCERfZD3q6X2+qQP6ubm/F/vKHfN9Ws
aG8m2dUqb5t6khX9Cewbf4gX2r5x/Q/XIEarvt90Lx48uLu7O5lVedfzQTlZ
wpY/2CyWD+Tf8CN88dX59fX5yz8k0335w/llBrJBT4WJXhXztujvm2ckeF8y
NVz5E5DQB7QFy37DP6BgTvN2vgLxkZk+OP3mm+fT09MT/BsM+PbVkyn86mky
Z/h19odil4GCaG6LdpflfZ/PP943aTzAonVMDdyQGvi3eQfQQ1n2+tVPP74/
f5vMvlhsUczum6185AvmJp/EqeED/+HyzfuLVCIvi2ZTFf/6L/+ty34sNttZ
Vc6zZpm9XJV1nl31eV9MrzYgqg3u/8sdCGF2Pu+btstef9pUTdmrPgH13tyi
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
QxQxyhCI3lwvDhkWO4IIJmt8+e6HTx/P30vDagQIfvny8fryA/3Hqw9/IGvd
lIIb+j5y5tRjoBU5v56gRxzJhPc3U/q/+Yz4Dsx6mS0hJP/j1xxmSSVnuHtc
P4iuOm8jHvIyqVX5VthdyeMk5gobAOeouZqnTR1Kc5u/1vGDMf8kM4l3pFcI
wcfpb8mPTu+jf988KfHHm99+dSo9wKMBJ4jpqdKtVN2TSnLo2yefb/7Qtoxc
SHtbo8SnJopP6cDtSlUp7OdNJVlv3bWMhWe50xl9c7VdNtw+n7FIn+R6RXNB
BfEq36UfdVxc1Bq7ysW3y0UnMKx0D9VofvMlkUKxNgjHe5BeeJg5cGIv8od9
+XL9+cPlO0L6klNm2CK+eeH08cI91aRHMWOSQS1BYSCZyj2USQN7jZYV/M25
MAY19FEkSY3P/VRk/ij/al08whqdNYmXTnkQS1lnwtWN8kTCtbHJtOHwYjvr
L+tQRdYHAOFqQCFE726P8T7jylZhbYCUpGuICEBQHE3RnLQQIWijAxVFeVQ3
JDR0pXWC3dTStUwGvlc0lNMna004bhfcvealIUPoUI4bYaX7BQ1Xd3cqlA5L
/MteURAUYfRIfvI6zZ+zTKavLeJ6vsJYBWG/DkfHmbN+oYmkHngf3Zp6U5Ar
Rx3DaFWhSWduUCUOCUZ2ogf0RJV6hGWbPxe1AUAMuvsdOpBhlKWBRw9iFip3
7NxbohtcF3BHobVjHC5DcxYQVrTJnpJpYCVma2M1NYJr3CDSYwo3MU1P8XGW
gkSFGmH6DsaOpemtEYm8RGOVmriLEbwLxkyj2+Kgs/ErDMp6LM/lgbiA1zzg
AR0vcdYY/UVfPRSSSN9cLM5Lp5O4KvZLTsXZni1tle9fKayHU8IdidEED252
Ezqqlj3vYZI1ppSJPhi950jQrFY4s8502XohPf10jJTWmPNeK1mufF6YtpW9
JyS692dnoswvnccT8mSXrg8Mg7gwntrw9tzJ0B4ykUELPIb7ywYvNKrfVYND
RFaIC2tOLLLmKE2Yxg9Fo2RfH9O2QyKfVeSFWI2dcTk4+bAyaSM0H6+Z6oc2
/QN6akvoUik1yEanC8jEEAyIGgpjLQPhApWxq6YvfkBZsZYWXM8WKHuoK7GK
De+hQUPG9G63dZUvKRUVzfSwj6KvgIkgbQWK9TmgVl0pcWMYWKhocL4rYSDL
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
WW6Hb1WbfsFE8xiLvp/PaBdQKu6eIjGmVKphV5IVyvehUArnsGZcQ2kodw0D
zDB+bniXbmA0vig43uqw1jbb5fB6oUhJ3jXjhwm5zwKu3GZCrFKsx5M8SCKh
qKyRsnJsdaYSz/nHLJgf+LoT016X8jcweRAAkbqyzwM2NO5wMer2isHajp98
a76InMdqffJNGQg2mKCbYWuUj/KaKuoymdjLpk3eXIjs4b6Tz22Bg9UMqdlX
E8tlp8IoprpPolxi8dfopi/aCxWnFHro0CfDrWP75nkfXW7hsv5clRL09fJb
xcOI2xu8HND5L9FRpVcbt7CEcizdLZJh3NMNMCPzQmI0S228UAkok/o0Dsxf
BmnoD4J+DiXylbFVYF45foxB9MQK8Gxp1qgs0Q4rS0h/WAglRKXGa3ie1EqW
m4+YF+JMEsZySNyU6bdZ3FkTQ+pQ9ic0zBNUMtQBCsjiS7CfDAC3F9uGUg8f
DY849fty0mBhCuYDch3L9wA8LbbV0wx5oEzUj2ZPpazEKVbpOcOKexixr8c5
2xKfl3ZjzjTIyzptwhpJZ7Z4Q/Yh27BORYjGnf7VdttwGUh2eNSl04LToOKq
eRTFOQ/DjVP6cyPZey+m2xW5YsPIxXU+ebJe61bXqguLZZs2f+kA01cuaLmv
O5T1UXvm4Oo6edo+PJOpTGO8pObVIPUhemsHOjIXNdGnKn2G9O/p8PNGLfmL
tPSzhurwT7lso+TTwKUX3aR8DkBb/DSoXUrTYqPUC0w7NA3K6jFwbhGKqT6S
/xKUX8Pvp58k1jvmvECKtOEvsz6XsI8cSC9wMb5W6T8RnKqC2k7s7nPQ+Sx2
GwX0lbTqL5+DomZYiygmNjqStM4xnJ0AULDmQUnrnL09pTQwUggst/CP5E/f
dV27nm42G1LzqqsNFL3S/6Zo+/hgcojJcQoMEg1wuJ1R+sN9I3saH4JSKq1U
QLqzLtDQnFzINOnkoO+7WCA3V620ecYlYwdIlUgUNqE1PEbsDNbzJyWLrMD0
4KIx2Wh2y1QRjU57i1iN1ox9ztp/Z4FSmPNbOTIjV3aq5THeI6un8yRTq1k8
r6tVclE2tWjJtOgVPlKxm7dvKGVVoDx87w5242ppDQIyBXGJ9hCxAduTImM9
TcgBddCOpy7lWFX6cH5jnkYkTSuLfAFXI4ulayfviLph8WPLmWhMyDgtzrlT
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

-->

</rfc>
