<?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-rfc2629 version 1.5.26 (Ruby 2.6.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusv11-03" category="exp" submissionType="IETF" updates="6614, 7360, 7930" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.0 -->
  <front>
    <title abbrev="RADIUSv11">RADIUS ALPN and removing MD5</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-radext-radiusv11-03"/>
    <author initials="A." surname="DeKok" fullname="Alan DeKok">
      <organization>FreeRADIUS</organization>
      <address>
        <email>aland@freeradius.org</email>
      </address>
    </author>
    <date year="2023" month="November" day="17"/>
    <area>Internet</area>
    <workgroup>RADEXT Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines Application-Layer Protocol Negotiation Extensions for use with RADIUS/TLS and RADIUS/DTLS.  These extensions permit the negotiation of an additional application protocol for RADIUS over (D)TLS.  No changes are made to RADIUS/UDP or RADIUS/TCP.  The extensions allow the negotiation of a transport profile where the RADIUS shared secret is no longer used, and all MD5-based packet signing and attribute obfuscation methods are removed.  When this extension is used, the previous Authenticator field is repurposed to contain an explicit request / response identifier, called a Token.  The Token also allows more than 256 packets to be outstanding on one connection.</t>
      <t>This extension can be seen as a transport profile for RADIUS, as it is not an entirely new protocol.  It uses the existing RADIUS packet layout and attribute format without change.  As such, it can carry all present and future RADIUS attributes.  Implementation of this extension requires only minor changes to the protocol encoder and decoder functionality.  The protocol defined by this extension is named "RADIUS version 1.1", or "RADIUS/1.1".</t>
    </abstract>
    <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-radiusv11/"/>.
      </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/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/radext-wg/draft-ietf-radext-radiusv11.git"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The RADIUS protocol <xref target="RFC2865"/> uses MD5 <xref target="RFC1321"/> to sign packets, and to obfuscate certain attributes.  Decades of cryptographic research has shown that MD5 is insecure, and that MD5 should no longer be used.  These discussions are most notably in <xref target="RFC6151"/>, and in Section 3 of <xref target="RFC6421"/>, among others.  In addition, the reliance on MD5 for security makes it impossible to use RADIUS in a FIPS-140 compliant system, as FIPS-140 forbids systems from relying on insecure cryptographic methods for security.</t>
      <t>While RADIUS originally used UDP transport, additional transport protocols were defined for TCP (<xref target="RFC6613"/>), TLS (<xref target="RFC6614"/>), and DTLS (<xref target="RFC7360"/>).  However, those transport protocols still relied on MD5.  That is, the shared secret was used along with MD5, even when the RADIUS packets were being transported in (D)TLS.  At the time, the consensus of the RADEXT working group was that this continued use of MD5 was acceptable.  TLS was seen as a simple "wrapper" around RADIUS, while using a fixed shared secret.  The intention at the time was to allow the use of (D)TLS while making essentially no changes to the basic RADIUS encoding, decoding, signing, and packet validation.</t>
      <t>The ensuing years have shown that it is important for RADIUS to remove its dependency on MD5.  The continued use of MD5 is no longer acceptable in a security-conscious environment.  The use of MD5 in <xref target="RFC6614"/> and <xref target="RFC7360"/> adds no security or privacy over that provided by TLS.  It is time to remove the use of MD5 from RADIUS.</t>
      <t>This document defines an Application-Layer Protocol Negotiation (ALPN) <xref target="RFC7301"/> extension for RADIUS over (D)TLS which removes their dependency on MD5.  Systems which implement this transport profile can be more easily verified to be FIPS-140 compliant, as those systems can operate without the use of MD5.  This extension can best be understood as a transport profile for RADIUS, rather than a whole-sale revision of the RADIUS protocol.  A preliminary implementation has shown that only minor code changes are required to support RADIUS/1.1 on top of an existing RADIUS server.</t>
      <t>While this document permits MD5 to be removed when using (D)TLS transports, it makes no changes to UDP or TCP transports.  It is therefore RECOMMENDED that those transports only be used within secure networks, and only used in situations where FIPS compliance is not an issue.</t>
      <t>In most cases, using ALPN requires only a few modifications to the RADIUS/TLS protocol implementation:</t>
      <ul spacing="normal">
        <li>A method to set the list of supported ALPN protocols before the TLS handshake starts</li>
        <li>After the TLS handshake has completed, a method to query if ALPN has chosen a protocol, and if yes, which protocol was chosen.</li>
        <li>Changes to the packet encoder and decoder, so that the individual packets are not signed, and no attribute is encoded with the historic obfuscation methods.</li>
      </ul>
      <t>That is, the bulk of the ALPN protocol can be left to the underlying TLS implementation.  This document discusses the ALPN exchange in detail in order to give simplified descriptions for the reader, and so that the reader does not have to read or understand all of <xref target="RFC7301"/>.</t>
      <t>The detailed list of changes from historic TLS-based transports to RADIUS/1.1 is as follows:</t>
      <ul spacing="normal">
        <li>ALPN is used for negotiation of this extension,</li>
        <li>TLS 1.3 or later is required,</li>
        <li>All uses of the RADIUS shared secret have been removed,</li>
        <li>The now-unused Request and Response Authenticator fields have been repurposed to carry an opaque Token which identifies requests and responses,</li>
        <li>The Identifier field is no longer used, and has been replaced by the Token field,</li>
        <li>The Message-Authenticator attribute (<xref target="RFC3579"/> Section 3.2) is not sent in any packet, and if received is ignored,</li>
        <li>Attributes such as User-Password, Tunnel-Password, and MS-MPPE keys are sent encoded as "text" (<xref target="RFC8044"/> Section 3.4) or "octets" (<xref target="RFC8044"/> Section 3.5), without the previous MD5-based obfuscation.  This obfuscation is no longer necessary, as the data is secured and kept private through the use of TLS,</li>
        <li>Future RADIUS specifications are forbidden from defining new cryptographic primitives.</li>
      </ul>
      <t>The following items are left unchanged from traditional TLS-based transports for RADIUS:</t>
      <ul spacing="normal">
        <li>The RADIUS packet header is the same size, and the Code and Length fields (<xref target="RFC2865"/> Section 3) have the same meaning as before,</li>
        <li>The default 4K packet size is unchanged, although <xref target="RFC7930"/> can still be leveraged to use larger packets,</li>
        <li>All attributes which have simple encodings (i.e. without using MD5 obfuscation), all have the same encoding and meaning as before,</li>
        <li>As this extension is a transport profile for one "hop" (client to server connection), it does not impact any other connection used by a client or server.  The only systems which are aware that this transport profile is in use are the client and server who have negotiated the use of this extension on a particular shared connection,</li>
        <li>This extension uses the same ports (2083/tcp and 2083/udp) which are defined for RADIUS/TLS <xref target="RFC6614"/> and RADIUS/DTLS <xref target="RFC7360"/>.</li>
      </ul>
      <t>A major benefit of this extensions is that a home server which implement it can also be more easily verified for FIPS-140 compliance.  That is, a home server can remove all uses of MD4 and MD5, which means that those algorithms are provably not used for security purposes.  In that case, however, the home server will not support CHAP, MS-CHAP, or any authentication method which uses MD4 or MD5.  The choice of which authentication method to accept is always left to the home server.  This specification does not change any authentication method carried in RADIUS, and does not mandate (or forbid) the use of any authentication method for any system.</t>
      <t>As for proxies, there was never a requirement that proxies implement CHAP or MS-CHAP authentication.  So far as a proxy is concerned, attributes relating to CHAP and MS-CHAP are simply opaque data that is transported unchanged to the next hop.  It is therefore possible for a FIPS-140 compliant proxy to transport authentication methods which depend on MD4 or MD5, so long as that data is forwarded to a home server which supports those methods.</t>
      <t>We reiterate that the decision to support (or not) any authentication method is entirely site local, and is not a requirement of this specification.  The contents or meaning of any RADIUS attribute other than Message-Authenticator (and similar attributes) are not modified.  The only change to the Message-Authenticator attribute is that it is no longer used in RADIUS/1.1.</t>
      <t>Unless otherwise described in this document, all RADIUS requirements apply to this extension.  That is, this specification defines a transport profile for RADIUS.  It is not an entirely new protocol, and it defines only minor changes to the existing RADIUS protocol.  It does not change the RADIUS packet format, attribute format, etc.  This specification is compatible with all RADIUS attributes, past, present, and future.</t>
      <t>This specification is compatible with existing implementations of RADIUS/TLS and RADIUS/DTLS.  There is no need to define an ALPN name for those protocols, as implementations can simply not send an ALPN name when those protocols are used.  Backwards compatibility with existing implementations is both required, and assumed.</t>
      <t>This specification is compatible with all past and future RADIUS specifications.  There is no need for any RADIUS specification to mention this transport profile by name, or to make provisions for this specification.  This document defines how to transform RADIUS into RADIUS/1.1, and no further discussion of that transformation is necessary.</t>
      <t>We note that this document makes no changes to previous RADIUS specifications.  Existing RADIUS implementations can continue to be used without modification.  Where previous specifications are explicitly mentioned and updated, those updates or changes apply only when the RADIUS/1.1 transport profile is being used.</t>
      <t>In short, when negotiated on a connection, the RADIUS/1.1 transport profile permits implementations to avoid MD5 when signing packets, or when obfuscating certain attributes.</t>
    </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.</t>
      <ul spacing="normal">
        <li>ALPN</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Application-Layer Protocol Negotiation, as defined in <xref target="RFC7301"/>.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>historic RADIUS/TLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS/TLS as defined in <xref target="RFC6614"/> and <xref target="RFC7360"/>.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>The Remote Authentication Dial-In User Service protocol, as defined in <xref target="RFC2865"/>, <xref target="RFC2866"/>, and <xref target="RFC5176"/> among others.</t>
          <t>While this protocol can be viewed as "RADIUS/1.0", for simplicity and historical compatibility, we keep the name "RADIUS".</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 Transmission 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>RADIUS over TLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Either RADIUS/TLS or RADIUS/DTLS.  This terminology is used instead of alternatives such as "RADIUS/(D)TLS", or "either RADIUS/TLS or RADIUS/DTLS".</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>RADIUS/1.1</li>
      </ul>
      <ul empty="true">
        <li>
          <t>The transport profile defined in this document, which stands for "RADIUS version 1.1".  We use RADIUS/1.1 to refer interchangeably to TLS and DTLS transport.</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 interchangeably to TLS or DTLS transport.</t>
        </li>
      </ul>
    </section>
    <section anchor="the-radius11-transport-profile-for-radius">
      <name>The RADIUS/1.1 Transport profile for RADIUS</name>
      <t>This section describes the ALPN transport profile in detail.  It first gives the name used for ALPN, and then describes how ALPN is configured and negotiated by client and server.  It then concludes by discussing TLS issues such as what to do for ALPN during session resumption.</t>
      <section anchor="alpn-name-for-radius11">
        <name>ALPN Name for RADIUS/1.1</name>
        <t>The ALPN name defined for RADIUS/1.1 is as follows:</t>
        <ul empty="true">
          <li>
            <t>"radius/1.1"</t>
            <ul empty="true">
              <li>
                <t>The protocol defined by this specification.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Where ALPN is not configured or is not received in a TLS connection, systems supporting ALPN MUST NOT use RADIUS/1.1.</t>
        <t>Where ALPN is configured, the client signals support by sending the ALPN string "radius/1.1".  The server can accept this proposal and reply with the ALPN string "radius/1.1", or reject this proposal, and not reply with any ALPN string.</t>
        <t>Implementations MUST signal ALPN "radius/1.1" in order for it to be used in a connection.  Implementations MUST NOT have an administrative flag which causes a connection to use "radius/1.1", but which does not signal that protocol via ALPN.</t>
        <t>The next step in defining RADIUS/1.1 is to review how ALPN works.</t>
      </section>
      <section anchor="operation-of-alpn">
        <name>Operation of ALPN</name>
        <t>Once a system has been configured to support ALPN, it is negotiated on a per-connection basis as per <xref target="RFC7301"/>.  We give a brief overview here of ALPN in order to provide a high-level description ALPN for readers who do not need to understand <xref target="RFC7301"/> in detail.</t>
        <t>1) The client proposes ALPN by sending an ALPN extension in the ClientHello.  This extension lists one or more application protocols by name.</t>
        <t>2) The server receives the extension, and validates the application protocol name against the list it has configured.</t>
        <ul empty="true">
          <li>
            <t>If the server finds no acceptable common protocols (ALPN or otherwise), it closes the connection.</t>
          </li>
        </ul>
        <t>3) Otherwise, the server return a ServerHello with either no ALPN extension, or an ALPN extension with only one named application protocol.</t>
        <ul empty="true">
          <li>
            <t>If the client did not signal ALPN, or the server does not accept the ALPN proposal, the server does not reply with any ALPN name.</t>
          </li>
        </ul>
        <t>4) The client receives the ServerHello, validates the received application protocol (if any) against the name it sent, and records the application protocol which was chosen.</t>
        <ul empty="true">
          <li>
            <t>This check is necessary in order for the client to both know which protocol the server has selected, and to validate that the protocol sent by the server is one which is acceptable to the client.</t>
          </li>
        </ul>
        <t>The next step in defining RADIUS/1.1 is to define how ALPN is configured on the client and server, and to give more detailed requirements on ALPN configuration and operation.</t>
      </section>
      <section anchor="configuration-of-alpn-for-radius11">
        <name>Configuration of ALPN for RADIUS/1.1</name>
        <t>Clients or servers supporting this specification can do so by extending their TLS configuration through the addition of a new configuration flag, called "Version" here.  The exact name given below does not need to be used, but it is RECOMMENDED that administrative interfaces or programming interfaces use a similar name in order to provide consistent terminology.  This flag controls how the implementation signals use of this protocol via ALPN.</t>
        <t>When set, this flag contains the list of permitted ALPN versions in humanly readable form.  The implementation may allow multiple values in one variable, or allow multiple variables, or instead use two configuration for "minimum" and "maximum" allowed versions.  We assume here that there is one variable, which can be configured as:</t>
        <ul spacing="normal">
          <li>unset,</li>
          <li>containing value "1.0" - require historic RADIUS/TLS</li>
          <li>containing values "1.0" and "1.1" - allow either historic RADIUS/TLS or RADIUS/1.1</li>
          <li>containing value "1.1" - require RADIUS/1.1.</li>
        </ul>
        <t>This configuration is also extensible to future ALPN names if that extension becomes necessary.</t>
        <t>A more descriptive definition of the variable and the meaning of the values is given below.</t>
        <t>Configuration Flag Name</t>
        <ul empty="true">
          <li>
            <t>Version</t>
          </li>
        </ul>
        <t>Values</t>
        <ul empty="true">
          <li>
            <t>When the flag is unset, ALPN is not used.</t>
            <t>Any connection MUST use historic RADIUS/TLS.</t>
            <t>This flag is included here only for logical completeness.  Instead, implementations of this specification SHOULD be configured to always use ALPN.</t>
            <ul empty="true">
              <li>
                <t>Client Behavior</t>
                <ul empty="true">
                  <li>
                    <t>The client MUST NOT send any protocol name via ALPN.</t>
                  </li>
                </ul>
                <t>Server Behavior</t>
                <ul empty="true">
                  <li>
                    <t>The server MUST NOT signal any protocol name via ALPN.</t>
                    <t>If the server receives an ALPN name from the client, it MUST NOT close the connection.  Instead, it simply does not reply with ALPN, and finishes the TLS connection setup as defined for historic RADIUS/TLS.</t>
                    <t>Note that if the client sends "radius/1.1", the client will see that the server failed to acknowledge this request, and will close the connection.  For any other client configuration, the connection will use historic RADIUS/TLS.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>"1.0" - send "radius/1.0", and use historical RADIUS/TLS.</t>
            <ul empty="true">
              <li>
                <t>When the "Version" configuration flag is set to "1.0", the system will send the ALPN string "radius/1.0".  However, everything else about the connection is identical to historic RADIUS/TLS.</t>
                <t>This behavior is used to help administrators distinguish between systems which can use ALPN from ones which cannot use ALPN.  The act of sending the name "radius/1.0" is an implicit statement that the system is likely to also support "radius/1.1".</t>
              </li>
            </ul>
            <ul empty="true">
              <li>
                <t>Client Behavior</t>
                <ul empty="true">
                  <li>
                    <t>The client MUST send only the ALPN string "radius/1.0".</t>
                    <t>The client will receive either no ALPN response from the server, or an ALPN response of "radius/1.0", or a TLS alert of "no_application_protocol" (120).</t>
                    <t>If the connection remains open, the client MUST use historic RADIUS/TLS.</t>
                  </li>
                </ul>
                <t>Server Behavior</t>
                <ul empty="true">
                  <li>
                    <t>If the server receives no ALPN name from the client, it MUST use historic RADIUS/TLS.</t>
                    <t>If the server receives an ALPN name "radius/1.0" from the client, it MUST reply with ALPN "radius/1.0", and then use historic RADIUS/TLS.</t>
                    <t>Note that the server may receive multiple ALPN names from the client.  So long as the server receives "radius/1.0", it can reply with "radius/1.0".</t>
                    <t>If the server receives one or more ALPN names from the client, but none of the names match "radius/1.0", it MUST reply with a TLS alert of "no_application_protocol" (120), and then close the TLS connection.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>"1.0, 1.1" - Negotiate historic RADIUS/TLS or RADIUS/1.1</t>
            <ul empty="true">
              <li>
                <t>This value MUST be the default setting for implementations which support this specification.</t>
                <t>Connections MAY use either historic RADIUS/TLS or RADIUS/1.1.</t>
                <t>Client Behavior</t>
                <ul empty="true">
                  <li>
                    <t>The client MUST send both "radius/1.0" and "radius/1.1" via ALPN.</t>
                    <t>If the client receives no ALPN response from the server, or an ALPN response of "radius/1.0", it MUST use historic RADIUS/TLS.</t>
                    <t>If the client receives an ALPN response of "radius/1.1" from the server, it MUST use RADIUS/1.1.</t>
                    <t>Otherwise the client receives a TLS alert of "no_application_protocol" (120) from the server, and the connection is terminated.</t>
                  </li>
                </ul>
                <t>Server Behavior</t>
                <ul empty="true">
                  <li>
                    <t>If the server receives no ALPN name from the client, it MUST use historic RADIUS/TLS.</t>
                    <t>If the server receives an ALPN name "radius/1.0" from the client, it MUST reply with ALPN "radius/1.0", and then use historic RADIUS/TLS.</t>
                    <t>If the server receives an ALPN name "radius/1.1" from the client, it MUST reply with ALPN "radius/1.1", and then use RADIUS/1.1</t>
                    <t>If the server receives one or more ALPN names from the client, but none of the names match "radius/1.0" or "radius/1.1", it MUST reply with a TLS alert of "no_application_protocol" (120), and then close the TLS connection.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>"1.1" -  Require the use of RADIUS/1.1</t>
            <t>Any connection MUST use RADIUS/1.1</t>
            <ul empty="true">
              <li>
                <t>Client Behavior</t>
                <ul empty="true">
                  <li>
                    <t>The client MUST send only the ALPN string "radius/1.1".</t>
                    <t>If the client receives no ALPN response from the server, or an ALPN response of anything other than "radius/1.1", it MUST close the TLS connection.</t>
                    <t>If the client receives an ALPN response of "radius/1.1" from the server, it MUST use RADIUS/1.1.</t>
                    <t>Otherwise the client receives a TLS alert of "no_application_protocol" (120) from the server, and the connection is terminated.</t>
                  </li>
                </ul>
                <t>Server Behavior</t>
                <ul empty="true">
                  <li>
                    <t>If the server receives no ALPN name from the client, it MAY reply with a TLS alert of "no_application_protocol" (120), and then close the TLS connection.</t>
                    <t>If the server receives an ALPN name "radius/1.0" from the client, it MUST reply with a TLS alert of "no_application_protocol" (120), and then close the TLS connection.</t>
                    <t>Note that the server may receive multiple ALPN names from the client.  So long as the server receives an ALPN name "radius/1.1" from the client, it is deemed to match, and the connection MUST use RADIUS/1.1.</t>
                    <t>If the server receives one or more ALPN names from the client, but none of the names match "radius/1.1", it MUST reply with a TLS alert of "no_application_protocol" (120), and then close the TLS connection.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>By requiring the "allow" setting to be the default, implementations will be compatible with both historic RADIUS/TLS connections, and with RADIUS/1.1 connections.  It is therefore the only default setting which will not result in connection errors.</t>
        <t>Once administrators verify that both ends of a connection support RADIUS/1.1, and that it has been negotiated successfully, the configurations SHOULD be updated to require RADIUS/1.1.  The connections should be monitored after this change to ensure that the systems continue to remain connected.  If there are connection issues, then the configuration should be reverted to using "allow", until such time as the connection problems have been resolved.</t>
        <t>We reiterate that systems implementing this specification, but configured with setting which forbid RADIUS/1.1, will behave exactly the same as systems which do not implement this specification.  Systems implementing RADIUS/1.1 SHOULD NOT be configured by default to forbid that protocol.  That setting exists mainly for completeness, and to give administrators the flexibility to control their own deployments.</t>
        <t>If a server determines that there are no compatible application protocol names, then as per <xref target="RFC7301"/> Section 3.2, it MUST send a TLS alert of "no_application_protocol" (120), which signals to the other end that there is no compatible application protocol.  It MUST then close the connection.  This requirement applies to both new sessions, and to resumed sessions.</t>
        <t>While <xref target="RFC7301"/> does not discuss the possibility of the server sending a TLS alert of "no_application_protocol" (120) when the client does not use ALPN, we believe that this behavior is useful.  As such, servers MAY send a a TLS alert of "no_application_protocol" (120) when the client does not use ALPN.  We recognize that this behavior may not always be possible or available in any underlying TLS implementation.  The server MAY send this alert during the ClientHello, if it requires ALPN but does not receive it.  That is, there may not always be a need to wait for the TLS connection to be fully established before realizing that no common ALPN protocol can be negotiated.</t>
        <t>In contrast, there is no need for the client to signal that there are no compatible application protocol names.  The client sends zero or more protocol names, and the server responds as above.  From the point of view of the client, the list it sent results in either a connection failure, or a connection success.</t>
        <t>It is RECOMMENDED that the server logs a descriptive error in this situation, so that an administrator can determine why a particular connection failed.  The log message SHOULD include information about the other end of the connection, such as IP address, certificate information, etc.  Similarly, when the client receives a TLS alert of "no_application_protocol" it SHOULD log a descriptive error message.  Such error messages are critical for helping administrators to diagnose connectivity issues.</t>
        <t>Note that there is no way for a client to signal if its RADIUS/1.1 configuration is set to "allow" or "require".  The client MUST signal "radius/1.1" via ALPN when it is configured with either value.  The only difference in behavior between the two values for the client is how it handles responses from the server.</t>
        <t>Similarly, there is no way for a server to signal if its RADIUS/1.1 configuration is set to "allow" or "require".  In both cases if it receives "radius/1.1" from the client via ALPN, the server MUST reply with "radius/1.1", and agree to that negotiation.  The only difference in behavior between the two values for the server is how it handles the situation when no ALPN is signaled from the client.</t>
        <t>Unfortunately when ALPN negotiation fails, it is not always possible to send TLS alert of "no_application_protocol" (120).  <xref target="RFC7301"/> Section 3.2 suggests that this alert can only be sent by the server which supports ALPN, in response to a client which requests ALPN.  However, if either party does not support ALPN, then there are no provisions for this alert to be sent.  In addition, the TLS implementations may not permit an application to send a TLS alert of its choice, at a time of its choice.  So if one party supports ALPN while the other does not, it is not possible for the system supporting ALPN to send any kind of TLS alert which informs the other party that ALPN is required.</t>
        <section anchor="using-protocol-error-for-application-signaling">
          <name>Using Protocol-Error for Application Signaling</name>
          <t>When it is not possible to send a TLS alert of "no_application_protocol" (120), then the only remaining method for one party to signal the other is to send application data inside of the TLS tunnel.  Therefore, for the situation when a one end of a connection determines that it requires ALPN while the other end does not support ALPN, the end requiring ALPN MAY send a Protocol-Error packet inside of the tunnel, and then close the connection.  If this is done, the Response Authenticator field of the Protocol-Error packet MUST be all zeros, as this packet is not in response to any request.  The Protocol-Error packet SHOULD contain a Reply-Message attribute with a textual string describing the cause of the error.  The packet SHOULD also contain an Error-Cause attribute, with value Unsupported Extension (406).</t>
          <t>An implementation sending this packet could bypass any RADIUS encoder, and simply write this packet as a predefined, fixed set of data to the TLS connection.  That process would likely be simpler than trying to call the normal RADIUS packet encoder to encode a reply packet without a request packet, and then trying to force the Response Authenticator to be all zeros.</t>
          <t>As this packet is an unexpected response packet, existing implementations will ignore it.  They may either log an error and close the connection, or they may discard the packet and leave the connection open.  If the connection remains open, the end supporting ALPN will close the connection, so there will be no side effects from sending the packet.  Therefore, while using a Protocol-Error packet in this way is unusual, it is both informative and safe.</t>
          <t>The purpose of this packet is not to have the other end of the connection automatically determine what went wrong, and fix it.  Instead, the packet is intended to be (eventually) seen by an administrator, who can then take remedial action.</t>
        </section>
        <section anchor="tabular-summary">
          <name>Tabular Summary</name>
          <t>The preceding text gives a large number of recommendations.  In order to give a simpler description of the outcomes, a table of possible behaviors for client/server values of the Version flag is given below.  This table and the names given below are for informational and descriptive purposes only.</t>
          <figure>
            <name>Possible outcomes for ALPN Negotiation</name>
            <artwork><![CDATA[
                             Server
             no ALPN  |   1.0    | 1.0, 1.1 |    1.1
Client    |--------------------------------------------
----------|
No ALPN   |   RadSec     RadSec     RadSec     Close-S
          |
1.0       |   RadSec     1.0        1.0        Alert
          |
1.0, 1.1  |   RadSec     1.0        1.1        1.1
          |
1.1       |   Close-C    Alert      1.1        1.1
]]></artwork>
          </figure>
          <t>The table entries above have the following meaning:</t>
          <ul empty="true">
            <li>
              <t>Alert</t>
              <ul empty="true">
                <li>
                  <t>The client sends ALPN, and the server does not agree to the clients ALPN proposal.  The server replies with a TLS alert of "no_application_protocol" (120), and then closes the TLS connection.</t>
                  <t>As the server replies with a TLS alert, the Protocol-Error packet is not used here.</t>
                </li>
              </ul>
              <t>Close-C</t>
              <ul empty="true">
                <li>
                  <t>The client sends ALPN, but the server does not respond with ALPN.  The client closes the connection.</t>
                  <t>As noted in the previous section, the client MAY send a Protocol-Error packet to the server before closing the connection.</t>
                </li>
              </ul>
              <t>Close-S</t>
              <ul empty="true">
                <li>
                  <t>The client does not send ALPN string(s), but the server requires ALPN.  The server closes the connection.</t>
                  <t>As noted in the previous section, the server MAY send a Protocol-Error packet to the client before closing the connection.</t>
                </li>
              </ul>
              <t>RadSec</t>
              <ul empty="true">
                <li>
                  <t>Historic RADIUS/TLS is used.  Either the client sends no ALPN proposal, or the client sends an ALPN proposal, and the server never replies with an ALPN string.</t>
                </li>
              </ul>
              <t>1.0</t>
              <ul empty="true">
                <li>
                  <t>The client sends the ALPN string "radius/1.0".  The server responds with the ALPN string "radius/1.0", and then historic RADIUS/TLS is used</t>
                </li>
              </ul>
              <t>1.1</t>
              <ul empty="true">
                <li>
                  <t>The client sends the ALPN string "radius/1.1.  The server ACKs with "radius/1.1", and then RADIUS/1.1 is used.</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>Implementations should note that this table may be extended in future specifications.  The above text is informative, and does not mandate that only the above ALPN strings are used.  The actual ALPN negotiation takes place as defined in the preceding sections of this document, and in <xref target="RFC7301"/>.</t>
        </section>
      </section>
      <section anchor="miscellaneous-items">
        <name>Miscellaneous Items</name>
        <t>Implementations of this specification MUST require TLS version 1.3 or later.</t>
        <t>The use of the ALPN string "radius/1.0" is technically unnecessary, as it is largely equivalent to not sending any ALPN string.  However, that value is useful for RADIUS administrators.  A system which sends the ALPN string "radius/1.0" is explicitly signaling that it supports ALPN negotiation, but that it is not currently configured to support RADIUS/1.1.  That information can be used by administrators to determine which devices are capable of ALPN.</t>
        <t>The use of the ALPN string "radius/1.0" also permits server implementations to send a TLS alert of "no_application_protocol" (120) when it cannot find a matching ALPN string.  Experiments with TLS library implementations suggest that in some cases it is possible to send that TLS alert when ALPN is not used.  However, such a scenario is not discussed on <xref target="RFC7301"/>, and is likely not universal.  As a result, ALPN as defined in <xref target="RFC7301"/> permits servers to send that TLS alert in situations where it would be otherwise forbidden, or perhaps unsupported.</t>
        <t>Finally, defining ALPN strings for all known RADIUS versions will make it easier to support additional ALPN strings if that functionality is ever needed.</t>
      </section>
      <section anchor="session-resumption">
        <name>Session Resumption</name>
        <t><xref target="RFC7301"/> Section 3.1 states that ALPN is negotiated on each connection, even if session resumption is used:</t>
        <ul empty="true">
          <li>
            <t>When session resumption or session tickets <xref target="RFC5077"/> are used, the previous contents of this extension are irrelevant, and only the values in the new handshake messages are considered.</t>
          </li>
        </ul>
        <t>In order to prevent down-bidding attacks, RADIUS systems which negotiate the "radius/1.1" protocol MUST associate that information with the session ticket, and enforce the use of "radius/1.1" on session resumption.  That is, if "radius/1.1" was negotiated for a session, both clients and servers MUST behave as if the RADIUS/1.1 flag was set to "require" for that session.</t>
        <t>A client which is resuming a "radius/1.1" connection MUST advertise only the capability to do "radius/1.1" for the resumed session.  That is, even if the client configuration is "allow" for new connections, it MUST signal "radius/1.1" when resuming a session which had previously negotiated "radius/1.1".</t>
        <t>Similarly, when a server does resumption for a session which had previously negotiated "radius/1.1",   If the client attempts to resume the sessions without signaling the use of RADIUS/1.1, the server MUST close the connection.  The server MUST send an appropriate TLS error, and also SHOULD log a descriptive message as described above.</t>
        <t>In contrast, there is no requirement for a client or server to force the use of <xref target="RFC6614"/> RADIUS/TLS on session resumption.  Clients are free to signal support for "radius/1.1" on resumed sessions, even if the original session did not negotiate "radius/1.1".  Servers are free to accept this request, and to negotiate the use of "radius/1.1" for such sessions.</t>
      </section>
    </section>
    <section anchor="radius11-packet-and-attribute-formats">
      <name>RADIUS/1.1 Packet and Attribute Formats</name>
      <t>This section describes the application-layer data which is sent inside of (D)TLS when using the RADIUS/1.1 protocol.  Unless otherwise discussed herein, the application-layer data is unchanged from traditional RADIUS.  This protocol is only used when "radius/1.1" has been negotiated by both ends of a connection.</t>
      <section anchor="radius11-packet-format">
        <name>RADIUS/1.1 Packet Format</name>
        <t>When RADIUS/1.1 is used, the RADIUS header is modified from standard RADIUS.  While the header has the same size, some fields have different meaning.  The Identifier and the Request / Response Authenticator fields are no longer used in RADIUS/1.1.  Any operations which depend on those fields MUST NOT be performed.  As packet signing and security are handled by the TLS layer, RADIUS-specific cryptographic primitives are no longer in RADIUS/1.1.</t>
        <t>A summary of the RADIUS/1.1 packet format is shown below.  The fields are transmitted from left to right.</t>
        <figure anchor="Header">
          <name>The RADIUS/1.1 Packet Format</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code      |  Reserved-1   |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Token                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                           Reserved-2                          |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Attributes ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
]]></artwork>
        </figure>
        <t>Code</t>
        <ul empty="true">
          <li>
            <t>The Code field is one octet, and identifies the type of RADIUS packet.</t>
            <t>The meaning of the Code field is unchanged from previous RADIUS specifications.</t>
          </li>
        </ul>
        <t>Reserved-1</t>
        <ul empty="true">
          <li>
            <t>The Reserved-1 field is one octet.  It MUST be set to zero for all packets.</t>
            <t>This field was previously called "Identifier" in RADIUS.  It is now unused, as the Token field replaces it as the way to identify and requests, and to associate responses with requests.  The Reserved-1 field MUST be ignored when receiving a packet.</t>
          </li>
        </ul>
        <t>Length</t>
        <ul empty="true">
          <li>
            <t>The Length field is two octets.</t>
            <t>The meaning of the Length field is unchanged from previous RADIUS specifications.</t>
          </li>
        </ul>
        <t>Token</t>
        <ul empty="true">
          <li>
            <t>The Token field is four octets, and aids in matching requests and
replies, as a replacement for the Identifier field.  The RADIUS server can detect a duplicate request if it receives
the same Token value for two packets on a particular connection.</t>
            <t>Further requirements are given below in <xref target="sending-packets"/> for sending packets, and in <xref target="receiving-packets"/> for receiving packets.</t>
          </li>
        </ul>
        <t>Reserved-2</t>
        <ul empty="true">
          <li>
            <t>The Reserved-2 field is twelve (12) octets in length.</t>
            <t>These octets MUST be set to zero when sending a packet.</t>
            <t>These octets MUST be ignored when receiving a packet.</t>
            <t>These octets are reserved for future protocol extensions.</t>
          </li>
        </ul>
      </section>
      <section anchor="the-token-field">
        <name>The Token Field</name>
        <t>This section describes in more detail how the Token field is used.</t>
        <section anchor="sending-packets">
          <name>Sending Packets</name>
          <t>The Token field MUST change for every new unique packet which is sent on the same connection. For DTLS transport, it is possible to retransmit duplicate packets, in which case the Token value MUST NOT be changed when a duplicate packet is (re)sent.  When the contents of a retransmitted packet change for any reason (such changing Acct-Delay-Time as discussed in <xref target="RFC2866"/> Section 5.2), the Token value MUST be changed.  Note that on reliable transports, packets are never retransmitted, and therefore every new packet sent has a unique Token value.</t>
          <t>Systems generating the Token can do so via any method they choose, but for simplicity, it is RECOMMENDED that the Token values be generated from a 32-bit counter which is unique to each connection.  Such a counter SHOULD be initialized to a random value, taken from a random number generator, whenever a new connection is opened.  The counter can then be incremented for every new packet that the client sends.</t>
          <t>As there is no special meaning for the Token, there is no meaning when a counter "wraps" around from a high value back to zero.  The originating system can simply continue to increment the Token value.</t>
          <t>Once a RADIUS response to a request has been received and there is no need to track the packet any longer, the Token value MAY be reused. This SHOULD be after a suitable delay to ensure that Token values do not conflict with outstanding packets.  Note that the counter method described above for generating Token values will automatically ensure a long delay between multiple uses of the same Token value.  The only cost for tracking Tokens is a single 32-bit counter.  Any other method of generating unique and non-conflicting Token values is likely to require substantially more resources to track outstanding Token values.</t>
          <t>If a RADIUS client has multiple independent subsystems which send packets to a server, each subsystem MAY open a new port that is unique to that subsystem.  There is no requirement that all packets go over one particular connection.  That is, despite the use of a 32-bit Token field, RADIUS/1.1 clients are still permitted to open multiple source ports as discussed in <xref target="RFC2865"/> Section 2.5.</t>
        </section>
        <section anchor="receiving-packets">
          <name>Receiving Packets</name>
          <t>A server which receives RADIUS/1.1 packets MUST perform packet deduplication for all situations where it is required by RADIUS.  Where RADIUS does not require deduplication (e.g. TLS transport), the server SHOULD NOT do deduplication.</t>
          <t>We note that in previous RADIUS specifications, the Identifier field could have the same value for different types of packets on the same connection, e.g. for Access-Request and Accounting-Request.  This overlap required that RADIUS clients and servers track the Identifier field, not only on a per-connection basis, but also on a per-packet type basis.  This behavior adds complexity to implementations.</t>
          <t>When using RADIUS/1.1, implementations MUST instead do deduplication only on the Token field, and not on any other field or fields in the packet header. A server MUST treat the Token as being an opaque field with no intrinsic meaning.  While the recommendation above is for the sender to use a counter, other implementations are possible, valid, and permitted.  For example, a system could use a pseudo-random number generator with a long period to generate unique values for the Token field.</t>
          <t>Where Token deduplication is done, it MUST be done on a per-connection basis.  If two packets which are received on different connections contain the same Token value, then those packets MUST be treated as distinct (i.e. different) packets.</t>
          <t>This change from RADIUS means that the Identifier field is no longer useful for RADIUS/1.1.  The Reserved-1 field (previously used as the Identifier) MUST be set to zero for all RADIUS/1.1 packets.  RADIUS/1.1 Implementations MUST NOT examine this field or use it for packet tracking or deduplication.</t>
        </section>
      </section>
    </section>
    <section anchor="attribute-handling">
      <name>Attribute handling</name>
      <t>Most attributes in RADIUS have no special encoding "on the wire", or any special meaning between client and server.  Unless discussed in this section, all RADIUS attributes are unchanged in this specification.  This requirement includes attributes which contain a tag, as defined in <xref target="RFC2868"/>.</t>
      <section anchor="obfuscated-attributes">
        <name>Obfuscated Attributes</name>
        <t>As (D)TLS is used for this specification, there is no need to hide the contents of an attribute on a hop-by-hop basis.  The TLS transport ensures that all attribute contents are hidden from any observer.</t>
        <t>Attributes defined as being obfuscated via MD5 no longer have the obfuscation step applied when RADIUS/1.1 is used.  Instead, those attributes are simply encoded as their values, as with any other attribute.  Their encoding method MUST follow the encoding for the underlying data type, with any encryption / obfuscation step omitted.</t>
        <t>There are often concerns where RADIUS is used, that passwords are sent "in the clear" across the network.  This allegation was never true for RADIUS, which obfuscated passwords on the wire.  This allegation is definitely untrue when (D)TLS transport is used.  While passwords are encoded in packets as strings, the entire RADIUS exchange including packets, attributes (and thus passwords) are protected by TLS.  For the unsure reader this protocol is the same TLS which protects passwords used for web logins, e-mail reception and sending, etc.  As a result, any claims that passwords are sent "in the clear" are categorically false.</t>
        <t>There are risks from sending passwords over the network, even when they are protected by TLS.  One such risk comes from the common practice of multi-hop RADIUS routing.  As all security in RADIUS is on a hop-by-hop basis, every proxy which receives a RADIUS packet can see (and modify) all of the information in the packet.  Sites wishing to avoid proxies SHOULD use dynamic peer discovery <xref target="RFC7585"/>, which permits clients to make connections directly to authoritative servers for a realm.</t>
        <t>There are others ways to mitigate these risks.  One is by ensuring that the RADIUS over TLS session parameters are verified before sending the password, usually via a method such as verifying a server certificate.  That is, user passwords should only be sent to verified and trusted parties.  If the TLS session parameters are not verified, then it is trivial to convince the RADIUS client to send passwords to anyone.</t>
        <t>Another way to mitigate these risks is for the system being authenticated to use an authentication protocol which never sends passwords (e.g. EAP-pwd <xref target="RFC5931"/>), or which sends passwords protected by a TLS tunnel (e.g. EAP-TTLS <xref target="RFC5281"/>).  The processes to choose and configuring an authentication protocol are strongly site-dependent, so further discussion of these issues are outside of the scope of this document.  The goal here is to ensure that the reader has enough information to make an informed decision.</t>
        <t>We note that as the RADIUS shared secret is no longer used in this specification, it is no longer possible or necessary for any attribute to be obfuscated on a hop-by-hop basis using the previous methods defined for RADIUS.</t>
        <section anchor="user-password">
          <name>User-Password</name>
          <t>The User-Password attribute (<xref target="RFC2865"/> Section 5.2) MUST be encoded the same as any other attribute of data type 'string' (<xref target="RFC8044"/> Section 3.5).</t>
          <t>The contents of the User-Password field MUST be at least one octet in length, and MUST NOT be more than 128 octets in length.  This limitation is maintained from <xref target="RFC2865"/> Section 5.2 for compatibility with legacy transports.</t>
          <t>Note that the User-Password attribute is not of data type 'text'.  The original reason in <xref target="RFC2865"/> was because the attribute was encoded as an opaque and obfuscated binary blob.  We maintain that data type here, even though the attribute is no longer obfuscated.  The contents of the User-Password attribute do not have to be printable text, or UTF-8 data as per the definition of the 'text' data type in <xref target="RFC8044"/> Section 3.4.</t>
          <t>However, implementations should be aware that passwords are often printable text, and where the passwords are printable text, it can be useful to store and display them as printable text.  Where implementations can process non-printable data in the 'text' data type, they MAY use the data type 'text' for User-Password.</t>
        </section>
        <section anchor="chap-challenge">
          <name>CHAP-Challenge</name>
          <t><xref target="RFC2865"/> Section 5.3 allows for the CHAP challenge to be taken from either the CHAP-Challenge attribute (<xref target="RFC2865"/> Section 5.40), or the Request Authenticator field.  Since RADIUS/1.1 connections no longer use a Request Authenticator field, it is no longer possible to use the Request Authenticator field as the CHAP-Challenge when this transport profile is used.</t>
          <t>Clients which send CHAP-Password attribute (<xref target="RFC2865"/> Section 5.3) in an Access-Request packet over a RADIUS/1.1 connection MUST also include a CHAP-Challenge attribute (<xref target="RFC2865"/> Section 5.40).</t>
          <t>Proxies may need to receive Access-Request packets over a non-RADIUS/1.1 transport and then forward those packets over a RADIUS/1.1 connection.  In that case, if the received Access-Request packet contains a CHAP-Password attribute but no CHAP-Challenge attribute, the proxy MUST create a CHAP-Challenge attribute in the proxied packet using the contents from the incoming Request Authenticator of the received packet.</t>
        </section>
        <section anchor="tunnel-password">
          <name>Tunnel-Password</name>
          <t>The Tunnel-Password attribute (<xref target="RFC2868"/> Section 3.5) MUST be encoded the same as any other attribute of data type 'string' which contains a tag, such as Tunnel-Client-Endpoint (<xref target="RFC2868"/> Section 3.3).  Since the attribute is no longer obfuscated in RADIUS/1.1, there is no need for a Salt field or Data-Length fields as described in <xref target="RFC2868"/> Section 3.5, and the textual value of the password can simply be encoded as-is.</t>
          <t>Note that the Tunnel-Password attribute is not of data type 'text'.  The original reason in <xref target="RFC2868"/> was because the attribute was encoded as an opaque and obfuscated binary blob.  We maintain that data type here, even though the attribute is no longer obfuscated.  The contents of the Tunnel-Password attribute do not have to be printable text, or UTF-8 data as per the definition of the 'text' data type in <xref target="RFC8044"/> Section 3.4.</t>
          <t>However, implementations should be aware that passwords are often printable text, and where the passwords are printable text, it can be useful to store and display them as printable text.  Where implementations can process non-printable data in the 'text' data type, they MAY use the data type 'text' for Tunnel-Password.</t>
        </section>
        <section anchor="vendor-specific-attributes">
          <name>Vendor-Specific Attributes</name>
          <t>Any Vendor-Specific attribute which uses similar obfuscation MUST be encoded as per their base data type.  Specifically, the MS-MPPE-Send-Key and MS-MPPE-Recv-Key attributes (<xref target="RFC2548"/> Section 2.4) MUST be encoded as any other attribute of data type 'string' (<xref target="RFC8044"/> Section 3.4).</t>
        </section>
      </section>
      <section anchor="message-authenticator">
        <name>Message-Authenticator</name>
        <t>The Message-Authenticator attribute (<xref target="RFC3579"/> Section 3.2) MUST NOT be sent over a RADIUS/1.1 connection.  That attribute is not used or needed in RADIUS/1.1.</t>
        <t>If the Message-Authenticator attribute is received over a RADIUS/1.1 connection, the attribute MUST be silently discarded, or treated as an "invalid attribute", as defined in <xref target="RFC6929"/> Section 2.8.  That is, the Message-Authenticator attribute is no longer used to sign packets for the RADIUS/1.1 transport.  Its existence (or not) in this transport is meaningless.</t>
        <t>We note that any packet which contains a Message-Authenticator attribute can still be processed.  There is no need to discard an entire packet simply because it contains a Message-Authenticator attribute.  Only the Message-Authenticator attribute itself is ignored.</t>
        <t>For proxies, the Message-Authenticator attribute was always defined as being created and consumed on a "hop by hop" basis.  That is, a proxy which received a Message-Authenticator attribute from a client would never forward that attribute as-is to another server.  Instead, the proxy would either suppress, or re-create, the Message-Authenticator attribute in the outgoing request.  This existing behavior is leveraged in RADIUS/1.1 to suppress the use of Message-Authenticator over a RADIUS/1.1 connection.</t>
        <t>A proxy may receive an Access-Request packet over a RADIUS/1.1 connection, and then forward that packet over a RADIUS/UDP or a RADIUS/TCP connection.  In that situation, the proxy SHOULD add a Message-Authenticator attribute to every Access-Request packet which is sent over an insecure transport protocol.</t>
        <t>The original text in <xref target="RFC3579"/> Section 3.3, "Note 1" paragraph required that a server suggested that the Message-Authenticator attribute be present for certain Access-Request packets.  It also required the use of Message-Authenticator when the Access-Request packet contained an EAP-Message attribute.  Experience has shown that some RADIUS clients never use the Message-Authenticator, even for the situations where its use is suggested.</t>
        <t>When the Message-Authenticator attribute is missing from Access-Request packets, it is often possible to trivially forge or replay those packets.  As such, this document RECOMMENDS that RADIUS clients always include Message-Authenticator in Access-Request packets when using UDP or TCP transport.  As the scope of this document is limited to defining RADIUS/1.1, we cannot mandate that behavior here.  Instead, we can note that there are no known negatives to this behavior, and there are definite positives, such as increased security.</t>
      </section>
      <section anchor="message-authentication-code">
        <name>Message-Authentication-Code</name>
        <t>Similarly, the Message-Authentication-Code attribute defined in <xref target="RFC6218"/> Section 3.3 MUST NOT be sent over a RADIUS/1.1 connection.  That attribute MUST be treated the same as Message-Authenticator, above.</t>
        <t>As the Message-Authentication-Code attribute is no longer used in RADIUS/1.1, the related MAC-Randomizer attribute <xref target="RFC6218"/> Section 3.2 is also no longer used.  It MUST also be treated the same way as Message-Authenticator, above.</t>
      </section>
      <section anchor="chap-ms-chap-etc">
        <name>CHAP, MS-CHAP, etc.</name>
        <t>While some attributes such as CHAP-Password, etc. depend on insecure cryptographic primitives such as MD5, these attributes are treated as opaque blobs when sent between a RADIUS client and server.  The contents of the attributes are not obfuscated, and they do not depend on the RADIUS shared secret.  As a result, these attributes are unchanged in RADIUS/1.1.</t>
        <t>A server implementing this specification can proxy CHAP, MS-CHAP, etc. without any issue.  A home server implementing this specification can authenticate CHAP, MS-CHAP, etc. without any issue.</t>
      </section>
      <section anchor="original-packet-code">
        <name>Original-Packet-Code</name>
        <t><xref target="RFC7930"/> Section 4 defines an Original-Packet-Code attribute.  This attribute is needed because otherwise it is impossible to correlate the Protocol-Error response packet with a particular request packet.  The definition in <xref target="RFC7930"/> Section 4 describes the reasoning behind this need:</t>
        <ul empty="true">
          <li>
            <t>The Original-Packet-Code contains the code
from the request that generated the protocol error so that clients
can disambiguate requests with different codes and the same ID.</t>
          </li>
        </ul>
        <t>This attribute is no longer needed in RADIUS/1.1.  The Identifier field is unused, so it impossible for two requests to have the "same" ID.  Instead, the Token field permits clients and servers to correlate requests and responses, independent of the Code being used.</t>
        <t>Therefore, the Original-Packet-Code attribute (<xref target="RFC7930"/> Section 4) MUST NOT be sent over a RADIUS/1.1 connection.  That attribute is not used or needed over RADIUS/1.1 connections.</t>
        <t>If the Original-Packet-Code attribute is received over a RADIUS/1.1 connection, the attribute MUST either be silently discarded, or be treated an as "invalid attribute", as defined in <xref target="RFC6929"/> Section 2.8.  That is, existence of the Token field means that the Original-Packet-Code attribute is not needed in RADIUS/1.1 to correlate Protocol-Error replies with outstanding requests.</t>
        <t>We note that any packet which contains an Original-Packet-Code attribute can still be processed.  There is no need to discard an entire packet simply because it contains an Original-Packet-Code attribute.</t>
      </section>
    </section>
    <section anchor="other-considerations">
      <name>Other Considerations</name>
      <t>Most of the differences between RADIUS and RADIUS/1.1 are in the packet header and attribute handling, as discussed above.  The remaining issues are a small set of unrelated topics, and are discussed here.</t>
      <section anchor="status-server">
        <name>Status-Server</name>
        <t><xref target="RFC6613"/> Section 2.6.5, and by extension <xref target="RFC7360"/>, suggest that the Identifier value zero (0) be reserved for use with Status-Server as an application-layer watchdog.  This practice MUST NOT be used for RADIUS/1.1, as the Identifier field is not used in this transport profile.</t>
        <t>The rationale for reserving one value of the Identifier field was the limited number of Identifiers available (256), and the overlap in Identifiers between Access-Request packets and Status-Server packets.  If all 256 Identifier values had been used to send Access-Request packets, then there would be no Identifier value available for sending a Status-Server packet.</t>
        <t>In contrast, the Token field allows for 2^32 outstanding packets on one RADIUS/1.1 connection.  If there is a need to send a Status-Server packet, it is always possible to allocate a new value for the Token field.  Similarly, the value zero (0) for the Token field has no special meaning.  The edge condition is that there are 2^32 outstanding packets on one connection with no new Token value available for Status-Server.  In which case there are other serious issues, such as allowing billions of packets to be outstanding.  The safest way forward in that case is likely to just close the connection.</t>
      </section>
      <section anchor="proxies">
        <name>Proxies</name>
        <t>A RADIUS proxy normally decodes and then re-encodes all attributes, included obfuscated ones.  A RADIUS proxy will not generally rewrite the content of the attributes it proxies (unless site-local policy requires such a rewrite).  While some attributes may be modified due to administrative or policy rules on the proxy, the proxy will generally not rewrite the contents of attributes such as User-Password, Tunnel-Password, CHAP-Password, MS-CHAP-Password, MS-MPPE keys, etc.  All attributes are therefore transported through a RADIUS/1.1 connection without changing their values or contents.</t>
        <t>A proxy may negotiate RADIUS/1.1 (or not) with a particular client or clients, and it may negotiate RADIUS/1.1 (or not) with a server or servers it connect to, in any combination.  As a result, this specification is fully compatible with all past, present, and future RADIUS attributes.</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"/>.  This specification makes no changes from, or additions to, those specifications.  The use of ALPN, and the removal of MD5 has no impact on security or privacy of the protocol.</t>
        <t>RADIUS/TLS has been widely deployed in at least eduroam <xref target="RFC7593"/> and <xref target="EDUROAM"/> and in OpenRoaming <xref target="OPENROAMING"/>.  RADIUS/DTLS has seen less adoption, but it is known to be supported in many RADIUS clients and servers.</t>
        <t>It is RECOMMENDED that all implementations of RADIUS over TLS be updated to support this specification.  The effort to implement this specification is minimal, and once implementations support it, administrators can gain the benefit of it with little or no configuration changes.  This specification is backwards compatible with <xref target="RFC6614"/> and <xref target="RFC7360"/>.  It is only potentially subject to down-bidding attacks if implementations do not enforce ALPN negotiation correctly on session resumption.</t>
        <t>All crypto-agility needed or used by this specification is implemented in TLS.  This specification also removes all cryptographic primitives from the application-layer protocol (RADIUS) being transported by TLS.  As discussed in the following section, this specification also bans the development of all new cryptographic or crypto-agility methods in the RADIUS protocol.</t>
      </section>
      <section anchor="error-cause-attribute">
        <name>Error-Cause Attribute</name>
        <t>The Error-Cause attribute is defined in <xref target="RFC5176"/>. The "Table of Attributes" section given in <xref target="RFC5176"/> Section 3.6 permits that attribute to appear in CoA-NAK and Disconnect-NAK packets.  As no other packet type is listed, the implication is that the Error-Cause attribute cannot appear in any other packet.  <xref target="RFC7930"/> also permits Error-Cause to appear in Protocol-Error packets.</t>
        <t>However, <xref target="RFC5080"/> Section 2.6.1 suggests that Error-Cause may appear in Access-Reject packets.  No explanation is given for this change from <xref target="RFC5176"/>.  There is not even an acknowledgment that this suggestion is a change from any previous specification.  We correct that issue here.</t>
        <t>This specification updates <xref target="RFC5176"/> to allow the Error-Cause attribute to appear in Access-Reject packets.  It is RECOMMENDED that implementations include the Error-Cause attribute in Access-Reject packets where appropriate.</t>
        <t>That is, the reason for sending the Access-Reject packet (or Protocol-Error packet) may match a defined Error-Cause value.  In that case, it is useful for implementations to send an Error-Cause attribute with that value.  This behavior can help RADIUS system administrators debug issues in complex proxy chains.</t>
        <t>For example, a proxy may normally forward Access-Request packets which contain EAP-Message attributes.  The proxy can determine if the contents of the EAP-Message are invalid, for example if the first octet has value larger than 4.  In that case, there may be no benefit to forwarding the packet, as the home server will reject it.  It may then then possible for the proxy (with the knowledge and consent of involved parties) to immediately reply with an Access-Reject containing an Error-Cause attribute with value 202 for "Invalid EAP Packet (Ignored)".</t>
        <t>Another possibility is that if a proxy is configured to forward packets for a particular realm, but it has determined that there are no available connections to the next hop for that realm.  In that case, it is may be possible for the proxy (again with the knowledge and consent of involved parties) to reply with an Access-Reject containing an Error-Cause attribute with value 502 for "Request Not Routable (Proxy)"</t>
        <t>These examples are given only for illustrative and informational purposes.  While it is useful to return an informative value for the Error-Cause attribute, proxies can only modify the traffic they forward with the explicit knowledge and consent of all involved parties.</t>
      </section>
      <section anchor="future-standards">
        <name>Future Standards</name>
        <t>Future work may define new attributes, packet types, etc.  It is important to be able to do such work without requiring that every new standard mention RADIUS/1.1 explicitly.  Instead, this document defines a mapping from RADIUS to RADIUS/1.1 which covers all RADIUS practices and cryptographic primitives in current use.  As a result, any new standard which uses the existing RADIUS practices can simply inherit that mapping, and they do not need to mention RADIUS/1.1 explicitly.</t>
        <t>We reiterate that this specification defines a new transport profile for RADIUS.  It does not define a completely new protocol.  Any future specification which defines a new attribute MUST define it for RADIUS/UDP first, after which those definitions can be applied to this transport profile.</t>
        <t>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.  There is no need for those specifications to describe how those new attributes are transported in RADIUS/1.1.  Since RADIUS/1.1 does not use MD5, any obfuscated attributes will by definition be transported as their underlying data type, "text" (<xref target="RFC8044"/> Section 3.4) or "string" (<xref target="RFC8044"/> Section 3.5).</t>
        <t>New RADIUS specifications MUST NOT define attributes which can only be transported via RADIUS over TLS.  The RADIUS protocol has no way to signal the security requirements of individual attributes.  Any existing implementation will handle these new attributes as "invalid attributes" (<xref target="RFC6929"/> Section 2.8), and could forward them over an insecure link.  As RADIUS security and signaling is hop-by-hop, there is no way for a RADIUS client or server to even know if such forwarding is taking place.  For these reasons and more, it is therefore inappropriate to define new attributes which are only secure if they use a secure transport layer.</t>
        <t>The result is that specifications do not need to mention this transport profile, or make any special provisions for dealing with it.  This specification defines how RADIUS packet encoding, decoding, signing, and verification are performed when using RADIUS/1.1.  So long as any future specification uses the existing encoding, etc. schemes defined for RADIUS, no additional text in future documents is necessary in order to be compatible with RADIUS/1.1.</t>
        <t>We note that it is theoretically possible for future standards to define new cryptographic primitives for use with RADIUS/UDP.  In that case, those documents would likely have to describe how to transport that data in RADIUS/1.1.  We believe that such standards are unlikely to be published, as other efforts in the RADEXT working group are forbidding such updates to RADIUS.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>(This section to be removed by the RFC editor.)</t>
      <t>This specification is being implemented (client and server) in the FreeRADIUS project which is hosted on GitHub at https://github.com/FreeRADIUS/freeradius-server/tree/v3.2.x  The code implementation "diff" is approximately 1,000 lines, including build system changes and changes to configuration parsers.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>This specification requires secure transport for RADIUS, and this has all of the privacy benefits of RADIUS/TLS <xref target="RFC6614"/> and RADIUS/DTLS <xref target="RFC7360"/>.  All of the insecure uses of RADIUS have been removed.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The primary focus of this document is addressing security considerations for RADIUS.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to update the "TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs" registry with two new entries:</t>
      <artwork><![CDATA[
Protocol: radius/1.0
Id. Sequence: 0x72 0x61 0x64 0x69 0x75 0x73 0x2f 0x31 0x2e 0x30
    ("radius/1.0")
Reference:  This document

Protocol: radius/1.1
Id. Sequence: 0x72 0x61 0x64 0x69 0x75 0x73 0x2f 0x31 0x2e 0x31
    ("radius/1.1")
Reference:  This document
]]></artwork>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>In hindsight, the decision to retain MD5 for RADIUS over TLS was likely wrong.  It was an easy decision to make in the short term, but it has caused ongoing problems which this document addresses.</t>
      <t>Thanks to Bernard Aboba, Karri Huhtanen, Heikki Vatiainen, Alexander Clouter, Michael Richardson, Hannes Tschofenig, Matthew Newton, and Josh Howlett for reviews and feedback.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
      <t>draft-dekok-radext-sradius-00</t>
      <ul empty="true">
        <li>
          <t>Initial Revision</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-00</t>
      <ul empty="true">
        <li>
          <t>Use ALPN from RFC 7301, instead of defining a new port.  Drop the name "SRADIUS".</t>
          <t>Add discussion of Original-Packet-Code</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-01</t>
      <ul empty="true">
        <li>
          <t>Update formatting.</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-02</t>
      <ul empty="true">
        <li>
          <t>Add Flag field and description.</t>
          <t>Minor rearrangements and updates to text.</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-03</t>
      <ul empty="true">
        <li>
          <t>Remove Flag field and description based on feedback and expected use-cases.</t>
          <t>Use "radius/1.0" instead of "radius/1"</t>
          <t>Consistently refer to the specification as "RADIUSv11", and consistently quote the ALPN name as "radius/1.1"</t>
          <t>Add discussion of future attributes and future crypto-agility work.</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-04</t>
      <ul empty="true">
        <li>
          <t>Remove "radius/1.0" as it is unnecessary.</t>
          <t>Update Introduction with more historical background, which motivates the rest of the section.</t>
          <t>Change Identifier field to be reserved, as it is entirely unused.</t>
          <t>Update discussion on clear text passwords.</t>
          <t>Clarify discussion of Status-Server, User-Password, and Tunnel-Password.</t>
          <t>Give high level summary of ALPN, clear up client / server roles, and remove "radius/1.0" as it is unnecessary.</t>
          <t>Add text on RFC6421.</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-05</t>
      <ul empty="true">
        <li>
          <t>Clarify naming.  "radius/1.1" is the ALPN name.  "RADIUS/1.1" is the transport profile.</t>
          <t>Clarify that future specifications do not need to make provisions for dealing with this transport profile.</t>
        </li>
      </ul>
      <t>draft-dekok-radext-radiusv11-05</t>
      <ul empty="true">
        <li>
          <t>Typos and word smithing.</t>
          <t>Define and use "RADIUS over TLS" instead of RADIUS/(D)TLS.</t>
          <t>Many cleanups and rework based on feedback from Matthew Newton.</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-00</t>
      <ul empty="true">
        <li>
          <t>No changes from previous draft.</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-01</t>
      <ul empty="true">
        <li>
          <t>Move to "experimental" based on WG feedback.</t>
          <t>Many cleanups based on review from Matthew Newton</t>
          <t>Removed requirement for supporting TLS-PSK.</t>
          <t>This document does not deprecate new cryptographic work in RADIUS.  The "deprecating insecure transports" document does that.</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-02</t>
      <ul empty="true">
        <li>
          <t>Note that we also update RFC 7930</t>
          <t>Minor updates to text.</t>
          <t>Add text explaining why "allow" is the default, and how to upgrade to "require"</t>
          <t>Discuss the use of the TLS alert "no_application_protocol" (120), and its limitations.</t>
          <t>Suggest the use of Protocol-Error as an application signal when it is not possible to send a "no_application_protocol" TLS alert.</t>
          <t>Update discussion of Message-Authenticator, and suggest that RADIUS/1.1 proxies always add Message-Authenticator to Access-Request packets being sent over UDP or TCP.</t>
          <t>Add term "historic RADIUS/TLS" as it is simpler than more awkward "6614 or 7360".</t>
          <t>Re-add ALPN "radius/1.0" based on comments from Heikki.  It signals that the system is ALPN-capable, among other.</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-03</t>
      <ul empty="true">
        <li>
          <t>Rename to "RADIUS ALPN and removing MD5"</t>
          <t>Add a few things missed when re-adding "radius/1.0"</t>
          <t>Clarify wording in a number of places.</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="BCP14" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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="RFC6929" target="https://www.rfc-editor.org/info/rfc6929">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS) Protocol Extensions</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <author fullname="A. Lior" initials="A." surname="Lior"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>The Remote Authentication Dial-In User Service (RADIUS) protocol is nearing exhaustion of its current 8-bit Attribute Type space. In addition, experience shows a growing need for complex grouping, along with attributes that can carry more than 253 octets of data. This document defines changes to RADIUS that address all of the above problems.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6929"/>
          <seriesInfo name="DOI" value="10.17487/RFC6929"/>
        </reference>
        <reference anchor="RFC7301" target="https://www.rfc-editor.org/info/rfc7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl"/>
            <author fullname="A. Popov" initials="A." surname="Popov"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="RFC8044" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC1321" target="https://www.rfc-editor.org/info/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="RFC2548" target="https://www.rfc-editor.org/info/rfc2548">
          <front>
            <title>Microsoft Vendor-specific RADIUS Attributes</title>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <date month="March" year="1999"/>
            <abstract>
              <t>This document describes the set of Microsoft vendor-specific RADIUS attributes. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2548"/>
          <seriesInfo name="DOI" value="10.17487/RFC2548"/>
        </reference>
        <reference anchor="RFC2866" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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="RFC6151" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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="RFC7360" target="https://www.rfc-editor.org/info/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="RFC7585" target="https://www.rfc-editor.org/info/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="RFC7593" target="https://www.rfc-editor.org/info/rfc7593">
          <front>
            <title>The eduroam Architecture for Network Roaming</title>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="T. Wolniewicz" initials="T." surname="Wolniewicz"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This document describes the architecture of the eduroam service for federated (wireless) network access in academia. The combination of IEEE 802.1X, the Extensible Authentication Protocol (EAP), and RADIUS that is used in eduroam provides a secure, scalable, and deployable service for roaming network access. The successful deployment of eduroam over the last decade in the educational sector may serve as an example for other sectors, hence this document. In particular, the initial architectural choices and selection of standards are described, along with the changes that were prompted by operational experience.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7593"/>
          <seriesInfo name="DOI" value="10.17487/RFC7593"/>
        </reference>
        <reference anchor="RFC7930" target="https://www.rfc-editor.org/info/rfc7930">
          <front>
            <title>Larger Packets for RADIUS over TCP</title>
            <author fullname="S. Hartman" initials="S." surname="Hartman"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The RADIUS-over-TLS experiment described in RFC 6614 has opened RADIUS to new use cases where the 4096-octet maximum size limit of a RADIUS packet proves problematic. This specification extends the RADIUS-over-TCP experiment (RFC 6613) to permit larger RADIUS packets. This specification compliments other ongoing work to permit fragmentation of RADIUS authorization information. This document registers a new RADIUS code, an action that required IESG approval.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7930"/>
          <seriesInfo name="DOI" value="10.17487/RFC7930"/>
        </reference>
        <reference anchor="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="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="RFC5077" target="https://www.rfc-editor.org/info/rfc5077">
          <front>
            <title>Transport Layer Security (TLS) Session Resumption without Server-Side State</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="H. Zhou" initials="H." surname="Zhou"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a mechanism that enables the Transport Layer Security (TLS) server to resume sessions and avoid keeping per-client session state. The TLS server encapsulates the session state into a ticket and forwards it to the client. The client can subsequently resume a session using the obtained ticket. This document obsoletes RFC 4507. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5077"/>
          <seriesInfo name="DOI" value="10.17487/RFC5077"/>
        </reference>
        <reference anchor="RFC5931" target="https://www.rfc-editor.org/info/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="RFC5281" target="https://www.rfc-editor.org/info/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="RFC5080" target="https://www.rfc-editor.org/info/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>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAu4V2UAA+196XLbSJrgfz4FlvVjpFlS1mWX7YitHbVlV3m7fKwld/XE
xmwHSKZItEmAA4CS2dW1z7LPsk+235n5ZQKQ7K7qjpiI8UxUUySQ53ef0+l0
1Bbt2j3PPlxcvv54lV38+P5tlpeLrHab6rYol9mby8ejfDar3a0+dHtyMlpU
8zLfwHuLOr9pp4Vrb6Z1vnCfW/yfYtfAQ9Pjs9Fuu8hb1zzPnjw5OZ9k3549
OYb/Pjs7Ho2aFub5U76uShimrXduVGxr+tS0p8fHz45PR3nt8ufZ67J1dena
0d2SlvDyj9fZT1X9CVf3fV3ttqNPd+Gp6SWuaDTP2+eZ+7wdNbvZpmiaoiqv
91uY6fXL61ej0bZ4Psqytpo/z/augY9NVbe1u4GVZtk32cLd5Lt128AT+vt+
wz/jn6N8166q+vloNM2KEr68OMou3e+rT/AgH8vFOi/9V1UNC39VO8fnB9+4
TV6sn2c5PLX4lxv4hQ/tCJ4cjcqq3uRtcetwib978f7kHLb96sXTk2/P4Qv4
dPr0yePn/PHJ+emJfnx2+kw+fnt2rN8+PT4/h3UW5Y0dFX44OfNvnj4+f/rc
D/0kfNRvzx5/q0M/PvlWH3hy8tjPfXqiz8JFn4WP535FT4714+Onj/3HZ/os
wgR+fHn58cO7izf4Ef4JcI7dYldX+WbM3+rpZ/yPT1we4S95s/6J6z9ew72u
2nbbPH/0SJ6kw86yd+9fvsUZX7/9Ppn03daVH+BBgLPn2bvSZct1NcvX2U/F
9FWRAajdARDet6SfitqtXdNkv4P5FjNEq4v1usjLufuCZd7BXPzw0bzaPKpg
NTWv5tFodOvKHd3kEhFA0QL+ZsBiVPwXREvZ5rJoV7uZ/jK9Wz66B3OP4GmA
7ek0y2dNW+dz+Ot6VTQZoP1u48oWEaQoXZNdbLfrAnAN0Gv6Y753dfa+rgCt
qnX21i2rtqCfspefW1ciDja452zXuOwOFiQE5dH1j1dEdOTPS/j7CI5j5eA5
F17dunpTtFm7cnD6YfDqBl7O8sWiwD/hgvKwqGyry8F5hchVt7DOg8tDnuZt
lc1XebmE3QC9gQNcOER7WcvHy/eZf/PR9Yv3vDC7LLim6q53VUDM8rLZAmnB
ddwUa9j2ysEk+LAsplnBrIuscfPatRmccVllQBOXjo5pMaGDgSmQEE9nOXyV
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
YzNKxz7HhdsAw3qn0ynJGqP/Dw2DDiKB/wAA

-->

</rfc>
