<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 2.6.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-radext-radiusv11-05" category="exp" submissionType="IETF" updates="5176, 6614, 7360" 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-05"/>
    <author initials="A." surname="DeKok" fullname="Alan DeKok">
      <organization>FreeRADIUS</organization>
      <address>
        <email>aland@freeradius.org</email>
      </address>
    </author>
    <date year="2024" month="May" day="20"/>
    <area>Internet</area>
    <workgroup>RADEXT Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 69?>

<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/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/radext/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/radext-wg/draft-ietf-radext-radiusv11.git"/>.</t>
    </note>
  </front>
  <middle>
    <?line 75?>

<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 <xref section="3" sectionFormat="comma" 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 functionality of the Identifier field has been replaced by the Token field, and the space previously taken by the Identifier field is now reserved and unused,</li>
        <li>The Message-Authenticator attribute (<xref section="3.2" sectionFormat="comma" target="RFC3579"/>) 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 section="3.4" sectionFormat="comma" target="RFC8044"/>) or "octets" (<xref section="3.5" sectionFormat="comma" target="RFC8044"/>), 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>
        <li>
          <xref target="RFC5176"/> is updated to allow the Error-Cause attribute to appear in Access-Reject packets.</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 section="3" sectionFormat="comma" target="RFC2865"/>) 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 (that is, attributes which do not use MD5 obfuscation) 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 extension is that a home server which implements 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.  Systems which implement this standard can fall back to historic RADIUS/TLS if no ALPN signaling is performed, and the local configuration permits such fallback.</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.
<?line -6?>
      </t>
      <t>The following list describes the terminology and abbreviations which are used in this document.</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>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>Any RADIUS packets transported over TLS or DTLS.  This terminology is used instead of alternatives such as "RADIUS/(D)TLS", or "either RADIUS/TLS or RADIUS/DTLS".  This term is generally used when referring to TLS-layer requirements for RADIUS packet transport.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>historic RADIUS/TLS</li>
      </ul>
      <ul empty="true">
        <li>
          <t>RADIUS over (D)TLS as defined in <xref target="RFC6614"/> and <xref target="RFC7360"/>.  This term does not include the protocol defined in this specfication.</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.  A full walk-through of the protocol negotiation is given below.</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>In order to provide a high-level description of ALPN for readers who are not familiar with the details of <xref target="RFC7301"/>, we provide a brief overview here.</t>
        <t>Once a system has been configured to support ALPN, it is negotiated on a per-connection basis as per <xref target="RFC7301"/>.  The negotiation proceeds as follows:</t>
        <t>1) The client sends an ALPN extension in the ClientHello.  This extension lists one or more application protocols by name.  These names are the protocols which the client is claiming to support.</t>
        <t>2) The server receives the extension, and validates the application protocol name(s) 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 returns a ServerHello with either no ALPN extension, or an ALPN extension containing only one named application protocol, which needs to be one of the names proposed by the client.</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(s) it sent, and records which application protocol 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 its 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.  New versions can simply be added to the list.</t>
        <t>A more detailed 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.  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 a 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 historic 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 one or more ALPN names from the client which include the ALPN name "radius/1.1", it MUST reply with ALPN "radius/1.1", and then use RADIUS/1.1.</t>
                    <t>Else, if the server receives one or more ALPN names from the client which include the ALPN name "radius/1.0" but not "radius/1.1", it MUST reply with ALPN "radius/1.0", and then use historic RADIUS/TLS.</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 MUST 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 MUST 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 MUST 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 the default configuration to allow historic RADIUS/TLS, 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 both "radius/1.0" and "radius/1.1" ALPN strings, until such time as the connection problems have been resolved.</t>
        <t>We reiterate that systems implementing this specification, but which are configured with setting that forbid RADIUS/1.1, will behave largely the same as systems which do not implement this specification.  The only difference is that clients may send the ALPN name "radius/1.0".</t>
        <t>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>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.</t>
        <t>However, some TLS implementations may not permit an application to send a TLS alert of its choice, at a time of its choice.   This limitation means that it is not always possible for an application to send the TLS alert as discussed in the previous section.  The impact is that an implementation may attempt to connect, and then see that the connection fails, but not be able to determine why that failure has occurred.  Implementers and administrators should be aware that unexplained connection failures may be due to ALPN negotiation issues.</t>
        <t>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>Where the client does perform signaling via ALPN and the server determines that there is no compatible application protocol name, then as per <xref section="3.2" sectionFormat="comma" target="RFC7301"/>, it MUST send a TLS alert of "no_application_protocol" (120).</t>
        <t>Whether or not the server sent a TLS alert for no compatible ALPN, it MUST close the connection.  The above requirements on ALPN apply to both new sessions, and to resumed sessions.</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>
        <section anchor="using-protocol-error-for-signalling-alpn-failure">
          <name>Using Protocol-Error for Signalling ALPN Failure</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 <xref target="RFC7930"/> inside of the tunnel, and then close the connection.  If this is done, the Token field of the Protocol-Error packet cannot be copied from any request, and therefore those fields MUST be set to all zeros.</t>
          <t>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).  The packet SHOULD NOT contain other attributes.</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.  The server MAY also send a TLS alert of "no_application_protocol" (120) 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 acknowledges this negotiation with a reply of "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 section="3.1" sectionFormat="comma" target="RFC7301"/> 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 allows historic RADIUS/TLS 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.</t>
            <t>This field was previously used as the "Identifier" in historic RADIUS/TLS.  It is now unused, as the Token field replaces it both as the way to identify requests, and to associate responses with requests.</t>
            <t>When sending packets, the Reserved-1 field MUST be set to zero.  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>All values are possible for the Token field.  Implementations MUST treat the Token as an opaque blob when comparing Token values.</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 section="5.2" sectionFormat="comma" target="RFC2866"/>), the Token value MUST be changed.  Note that on reliable transports, packets are never retransmitted, and therefore every new packet which is sent has a unique Token value.</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>In contrast, the Token field MUST be managed solely on a per-connection basis, independent of any packet Code.  An implementation can, for example, send both an Access-Request and an Accounting-Request over one connection at the same time, but those two packets MUST use different values for the Token field.  That is, the method for generating new Token values MUST be independent of the packet Code.</t>
          <t>Systems generating the Token can do so via any method they choose.  For simplicity, Token values MUST 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.  This method ensures that the Tokens are unique, and are also independent of any packet Code.  This method is mandated because any other method of generating unique and non-conflicting Token values is likely to require substantially more resources to track outstanding Token values and their associated expiry times.</t>
          <t>The purpose for initializing the Token to a random counter is to aid administrators in debugging systems.  If the Token values always used the same sequence, then it would be possible to confuse multiple packets having the same Token value.  By instead starting with a random value, those values are more evenly distributed across the set of allowed values, and are therefore more likely to be unique.</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 without taking any special action in that situation.</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 use of a counter will automatically ensure a long delay (i.e. 2^32 packets) between multiple uses of the same Token value.   This large number of packets ensures that the only possible situation where there may be conflict is when a client sends billions of packets a second across one connection.  In that case, clients SHOULD simply open a new connection when there is a possibility for a Token to be reused.</t>
          <t>If a RADIUS client has multiple independent subsystems which send packets to a server, each subsystem MAY open a new connection which 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>
          <t>While multiple connections from client to server are allowed, We reiterate the suggestion of <xref section="3.3" sectionFormat="comma" target="RFC3539"/> that a single connection is preferred to multiple connections.  The use of a single connection can improve throughput and latency, while simplifying the clients efforts to determine server status.</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.  However, DTLS transport is UDP-based, and therefore still requires deduplication.</t>
          <t>When using RADIUS/1.1, implementations MUST 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.  This requirement makes the receiver behaivior independent of the methods by which the Counter is generated.</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.  Systems performing deduplication MAY still track the packet Code, Length, and Attributes which is associated with a Token value.  If it determines that the sender is re-using Token values for distinct outstanding packets, then an error should be logged, and the connection MUST be closed.  There is no way to negotiate correct behavior in the protocol.  Either the parties both operate normally and can communicate, or one end misbehaves, and no communication is possible.</t>
          <t>Once a reply has been sent, a system doing deduplication SHOULD cache the replies as discussed in <xref section="2.2.2" sectionFormat="comma" target="RFC5080"/>:</t>
          <ul empty="true">
            <li>
              <t>Each cache entry SHOULD be purged after a period of time.  This time
SHOULD be no less than 5 seconds, and no more than 30 seconds.  After
about 30 seconds, most RADIUS clients and end users will have given
up on the authentication request.  Therefore, there is little value
in having a larger cache timeout.</t>
            </li>
          </ul>
          <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 section="5.2" sectionFormat="comma" target="RFC2865"/>) MUST be encoded the same as any other attribute of data type 'string' (<xref section="3.5" sectionFormat="comma" target="RFC8044"/>).</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 section="5.2" sectionFormat="comma" target="RFC2865"/> 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 section="3.4" sectionFormat="comma" target="RFC8044"/>.</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 section="5.3" sectionFormat="comma" target="RFC2865"/> allows for the CHAP challenge to be taken from either the CHAP-Challenge attribute (<xref section="5.40" sectionFormat="comma" target="RFC2865"/>), 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 section="5.3" sectionFormat="comma" target="RFC2865"/>) in an Access-Request packet over a RADIUS/1.1 connection MUST also include a CHAP-Challenge attribute (<xref section="5.40" sectionFormat="comma" target="RFC2865"/>).</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 section="3.5" sectionFormat="comma" target="RFC2868"/>) MUST be encoded the same as any other attribute of data type 'string' which contains a tag, such as Tunnel-Client-Endpoint (<xref section="3.3" sectionFormat="comma" target="RFC2868"/>).  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 section="3.5" sectionFormat="comma" target="RFC2868"/>, 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 section="3.4" sectionFormat="comma" target="RFC8044"/>.</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 section="2.4" sectionFormat="comma" target="RFC2548"/>) MUST be encoded as any other attribute of data type 'string' (<xref section="3.4" sectionFormat="comma" target="RFC8044"/>).</t>
        </section>
      </section>
      <section anchor="message-authenticator">
        <name>Message-Authenticator</name>
        <t>The Message-Authenticator attribute (<xref section="3.2" sectionFormat="comma" target="RFC3579"/>) 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 section="2.8" sectionFormat="comma" target="RFC6929"/>.  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 section="3.3" sectionFormat="comma" target="RFC3579"/>, "Note 1" paragraph required 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 section="3.3" sectionFormat="comma" target="RFC6218"/> 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 section="3.2" sectionFormat="comma" target="RFC6218"/> 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 section="4" sectionFormat="comma" target="RFC7930"/> 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 section="4" sectionFormat="comma" target="RFC7930"/> 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 section="4" sectionFormat="comma" target="RFC7930"/>) 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 section="2.8" sectionFormat="comma" target="RFC6929"/>.  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="protocol-error">
        <name>Protocol-Error</name>
        <t>There are a number of situations where a RADIUS server is unable to respond to a request.  One situation is where the server depends on a database, and the database is down.  While arguably the server should close all incoming connections when it is unable to do anything, this action is not always effective.  A client may aggressively try to open new connections, or send packets to an unconnected UDP destination where the server is not listening.  Another situatiuon where the server is unable to respond is when the server is proxying packets, and the outbound connections are either full or failed.</t>
        <t>In legacy RADIUS for Access-Request and Accounting-Request packets, there is no way for the server to send a client the positive signal that it received the packet, but is unable to reply.  Instead, the server usually just discards the request, which to the client is indistinguishable from the situation where the server is down.  This failure case is made worse by the fact that perhaps some proxied packets succeed while others fail.  The client can only conclude then that the server is randomly dropping packets, and is unreliable.</t>
        <t>It would be very useful for servers to signal to clients that they have received a request, and are unable to process it.  This specification uses the Protocol-Error packet <xref section="4" sectionFormat="comma" target="RFC7930"/> as that signal.</t>
        <t>When a RADIUS/1.1 server determines that it is unable to process an Access-Request or Accounting-Request packet, it MUST respond with a Protocol-Error packet containing an Error-Cause attribute.  A proxy which cannot forward the packet MUST respond with either 502 (Request Not Routable (Proxy)), or 505 (Other Proxy Processing Error).  This requirement is to help distinguish failures in the proxy chain from failures at the home server,</t>
        <t>For a home server, if none of the Error-Cause values match the reason for the failure, then the value 506 (Resources Unavailable) MUST be used.</t>
        <t>A client receiving this Protocol-Error response MUST examine the Error-Cause attribute to determine how to process the reply.  If the value is either 502 (Request Not Routable (Proxy)), or 505 (Other Proxy Processing Error), the client MUST process this particular packet through the client forwarding algorithm.  The expected result of this process is that the client forwards the packet to a different server.  Care SHOULD be taken to not forward the packet over the same connection, or even to the same server.</t>
        <t>This process may continue over multiple connections and multiple servers, until the client either times out the request, or fails to find a forwarding destination for the packet.  A proxy then replies with a Protocol-Error packet as defined above.  A client which originates packets instead treats the request as if it received no response.</t>
        <t>Note that in a multi-hop proxy chain, proxies perform re-forwarding of packets only when the Error-Cause values are either 502 (Request Not Routable (Proxy)), or 505 (Other Proxy Processing Error).  For all other values of Error-Cause, the proxy MUST instead return the Protocol-Error response packet to the client, and include the Error-Cause attribute from the response it received.</t>
        <t>This behavior is intended to improve the stability of the RADIUS protocol by addressing issues first raised in <xref section="2.8" sectionFormat="comma" target="RFC3539"/>.</t>
      </section>
      <section anchor="status-server">
        <name>Status-Server</name>
        <t><xref section="2.6.5" sectionFormat="comma" target="RFC6613"/>, 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 nearly always possible to allocate a new value for the Token field.  If instead there are 2^32 outstanding packets for one connection, then it is likely that something has gone catastrophically wrong.  In that case, the safest way forward 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 section="C" sectionFormat="comma" target="RFC6614"/>, and in <xref section="10.1" sectionFormat="comma" 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 historic RADIUS/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 section="3.6" sectionFormat="comma" target="RFC5176"/> 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 section="2.6.1" sectionFormat="comma" target="RFC5080"/> 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 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 section="5.2" sectionFormat="comma" target="RFC2865"/>, or for Tunnel-Password as defined in <xref section="3.5" sectionFormat="comma" target="RFC2868"/>.  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 section="3.4" sectionFormat="comma" target="RFC8044"/>) or "string" (<xref section="3.5" sectionFormat="comma" target="RFC8044"/>).</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 section="2.8" sectionFormat="comma" target="RFC6929"/>), 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 historic RADIUS/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>(This section to be removed by the RFC editor.)</t>
      <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>
      <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>
      <t>draft-ietf-radext-radiusv11-04</t>
      <ul empty="true">
        <li>
          <t>Address github issues 3..9</t>
        </li>
      </ul>
      <t>draft-ietf-radext-radiusv11-05</t>
      <ul empty="true">
        <li>
          <t>Add discussion of Protocol-Error as per-link signalling.</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="BCP14">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC2865">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="S. Willens" initials="S." surname="Willens"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying authentication, authorization, and configuration information between a Network Access Server which desires to authenticate its links and a shared Authentication Server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2865"/>
          <seriesInfo name="DOI" value="10.17487/RFC2865"/>
        </reference>
        <reference anchor="RFC6421">
          <front>
            <title>Crypto-Agility Requirements for Remote Authentication Dial-In User Service (RADIUS)</title>
            <author fullname="D. Nelson" initials="D." role="editor" surname="Nelson"/>
            <date month="November" year="2011"/>
            <abstract>
              <t>This memo describes the requirements for a crypto-agility solution for Remote Authentication Dial-In User Service (RADIUS). This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6421"/>
          <seriesInfo name="DOI" value="10.17487/RFC6421"/>
        </reference>
        <reference anchor="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">
          <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">
          <front>
            <title>Data Types in RADIUS</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>RADIUS specifications have used data types for two decades without defining them as managed entities. During this time, RADIUS implementations have named the data types and have used them in attribute definitions. This document updates the specifications to better follow established practice. We do this by naming the data types defined in RFC 6158, which have been used since at least the publication of RFC 2865. We provide an IANA registry for the data types and update the "RADIUS Attribute Types" registry to include a Data Type field for each attribute. Finally, we recommend that authors of RADIUS specifications use these types in preference to existing practice. This document updates RFCs 2865, 3162, 4072, 6158, 6572, and 7268.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8044"/>
          <seriesInfo name="DOI" value="10.17487/RFC8044"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC1321">
          <front>
            <title>The MD5 Message-Digest Algorithm</title>
            <author fullname="R. Rivest" initials="R." surname="Rivest"/>
            <date month="April" year="1992"/>
            <abstract>
              <t>This document describes the MD5 message-digest algorithm. The algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. This memo provides information for the Internet community. It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1321"/>
          <seriesInfo name="DOI" value="10.17487/RFC1321"/>
        </reference>
        <reference anchor="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">
          <front>
            <title>RADIUS Accounting</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying accounting information between a Network Access Server and a shared Accounting Server. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2866"/>
          <seriesInfo name="DOI" value="10.17487/RFC2866"/>
        </reference>
        <reference anchor="RFC2868">
          <front>
            <title>RADIUS Attributes for Tunnel Protocol Support</title>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <author fullname="D. Leifer" initials="D." surname="Leifer"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="J. Shriver" initials="J." surname="Shriver"/>
            <author fullname="M. Holdrege" initials="M." surname="Holdrege"/>
            <author fullname="I. Goyret" initials="I." surname="Goyret"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document defines a set of RADIUS (Remote Authentication Dial In User Service) attributes designed to support the provision of compulsory tunneling in dial-up networks. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2868"/>
          <seriesInfo name="DOI" value="10.17487/RFC2868"/>
        </reference>
        <reference anchor="RFC3539">
          <front>
            <title>Authentication, Authorization and Accounting (AAA) Transport Profile</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Wood" initials="J." surname="Wood"/>
            <date month="June" year="2003"/>
            <abstract>
              <t>This document discusses transport issues that arise within protocols for Authentication, Authorization and Accounting (AAA). It also provides recommendations on the use of transport by AAA protocols. This includes usage of standards-track RFCs as well as experimental proposals. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3539"/>
          <seriesInfo name="DOI" value="10.17487/RFC3539"/>
        </reference>
        <reference anchor="RFC3579">
          <front>
            <title>RADIUS (Remote Authentication Dial In User Service) Support For Extensible Authentication Protocol (EAP)</title>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="P. Calhoun" initials="P." surname="Calhoun"/>
            <date month="September" year="2003"/>
            <abstract>
              <t>This document defines Remote Authentication Dial In User Service (RADIUS) support for the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication mechanisms. In the proposed scheme, the Network Access Server (NAS) forwards EAP packets to and from the RADIUS server, encapsulated within EAP-Message attributes. This has the advantage of allowing the NAS to support any EAP authentication method, without the need for method- specific code, which resides on the RADIUS server. While EAP was originally developed for use with PPP, it is now also in use with IEEE 802. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3579"/>
          <seriesInfo name="DOI" value="10.17487/RFC3579"/>
        </reference>
        <reference anchor="RFC5176">
          <front>
            <title>Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="M. Chiba" initials="M." surname="Chiba"/>
            <author fullname="G. Dommety" initials="G." surname="Dommety"/>
            <author fullname="M. Eklund" initials="M." surname="Eklund"/>
            <author fullname="D. Mitton" initials="D." surname="Mitton"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a currently deployed extension to the Remote Authentication Dial In User Service (RADIUS) protocol, allowing dynamic changes to a user session, as implemented by network access server products. This includes support for disconnecting users and changing authorizations applicable to a user session. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5176"/>
          <seriesInfo name="DOI" value="10.17487/RFC5176"/>
        </reference>
        <reference anchor="RFC6151">
          <front>
            <title>Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="L. Chen" initials="L." surname="Chen"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document updates the security considerations for the MD5 message digest algorithm. It also updates the security considerations for HMAC-MD5. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6151"/>
          <seriesInfo name="DOI" value="10.17487/RFC6151"/>
        </reference>
        <reference anchor="RFC6218">
          <front>
            <title>Cisco Vendor-Specific RADIUS Attributes for the Delivery of Keying Material</title>
            <author fullname="G. Zorn" initials="G." surname="Zorn"/>
            <author fullname="T. Zhang" initials="T." surname="Zhang"/>
            <author fullname="J. Walker" initials="J." surname="Walker"/>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines a set of vendor-specific RADIUS Attributes designed to allow both the secure transmission of cryptographic keying material and strong authentication of any RADIUS message. These attributes have been allocated from the Cisco vendor-specific space and have been implemented by multiple vendors. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6218"/>
          <seriesInfo name="DOI" value="10.17487/RFC6218"/>
        </reference>
        <reference anchor="RFC6613">
          <front>
            <title>RADIUS over TCP</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="May" year="2012"/>
            <abstract>
              <t>The Remote Authentication Dial-In User Server (RADIUS) protocol has, until now, required the User Datagram Protocol (UDP) as the underlying transport layer. This document defines RADIUS over the Transmission Control Protocol (RADIUS/TCP), in order to address handling issues related to RADIUS over Transport Layer Security (RADIUS/TLS). It permits TCP to be used as a transport protocol for RADIUS only when a transport layer such as TLS or IPsec provides confidentiality and security. This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6613"/>
          <seriesInfo name="DOI" value="10.17487/RFC6613"/>
        </reference>
        <reference anchor="RFC6614">
          <front>
            <title>Transport Layer Security (TLS) Encryption for RADIUS</title>
            <author fullname="S. Winter" initials="S." surname="Winter"/>
            <author fullname="M. McCauley" initials="M." surname="McCauley"/>
            <author fullname="S. Venaas" initials="S." surname="Venaas"/>
            <author fullname="K. Wierenga" initials="K." surname="Wierenga"/>
            <date month="May" year="2012"/>
            <abstract>
              <t>This document specifies a transport profile for RADIUS using Transport Layer Security (TLS) over TCP as the transport protocol. This enables dynamic trust relationships between RADIUS servers. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6614"/>
          <seriesInfo name="DOI" value="10.17487/RFC6614"/>
        </reference>
        <reference anchor="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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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:
H4sIACrNS2YAA+1923IbSZbYO76ijH5Ycg1QvIhqSWH3miNK0/K0LpbY27vh
sCcKQIKsEVCFrSqQwsz0fou/xV/mc808mZUgpRnthDditRs9IFCVl5Mnz/0y
nU5HfdWv3PPiw8Xl658/Fhc/vX9blPWiaN26ua3q6+LN5fmonM1ad6sP3Z6c
jBbNvC7X8N6iLZf9tHL9ctqWC/e5x/+pth08ND0+H203i7J33fPi/OT7J5Pi
yZOTx5Pi+7Mnx6NR18M8vy9XTQ3D9O3WjapNS5+6/vT4+Nnx6ahsXfm8eF33
rq1dP7q7piW8/Ker4pem/YSr+23bbDejT3fhqeklrmg0L/vnhfu8GXXb2brq
uqqpr3YbmOn1y6tXo9Gmej4qir6ZPy92roOPXdP2rVvCSoviu2LhluV21Xfw
hP6+W/PP+Oeo3PY3Tft8NJoWVQ1fXhwVl+53zSd4kMFysSpr/1XTwsJftc4x
/OAbty6r1fOihKcW/20JvzDQjuDJ0ahu2nXZV7cOl/ibF+9PHsO2X714evL9
Y/gCPp0+fXL+nD8+eXx6oh+fnT6Tj9+fHeu3T48fP4Z1VvXSjgo/nJz5N0/P
Hz997od+Ej7qt2fnZ8/8x+/1Ix6pzn1y7pdxeqKvwWmfhY+P/eKeHOvH86fn
/uMzffb7Z2f0wMvLnz+8u3iDH+Gf4OnYLbZtU67H/K0eRMH/GPjyCH/J+/ZP
XP3TFRzxTd9vuuePHsmTBPeiePf+5Vuc8fXb3yaTvtu4+gM8CCj3vHhXu+J6
1czKVfFLNX1VFYB1d4CP9y3pl6p1K9d1xW9gvsUMb9jFalWV9dx9wTLvYC5+
+GjerB81sJqWV/NoNLp19ZYO9Rrvgt4Q+JtxjG/lf8MbKtu8rvqb7Ux/md5d
P7rnEh/B04Dm02lRzrq+Lefw19VN1RVAAbZrV/d4V6radcXFZrOq4NrBTZv+
VO5cW7xvG7hhzap4666bvqKfipefe1fjdexwz8W2c8UdLEhoy6Ornz4S/ZE/
L+HvIwDHjYPnXHh149p11Rf9jQPoh8GbJbxclItFhX/CAZVhUcVGl4PzCr1r
bmGdB5eHPM3bppjflPU17AZIDwBw4ZACyFp+vnxf+DcfXb14zwuzy4Jjau6y
qwK6VtbdBqgMrmNZrWDbNw4mwYdlMd0NzLooOjdvXV8AjOumAPJ47QhMiwkB
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
r1hEnk6nJOSM/h8Ua6CRFxcBAA==

-->

</rfc>
