<?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-tls-psk-10" category="bcp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.13.0 -->
  <front>
    <title abbrev="RADIUS and TLS-PSK">RADIUS and TLS-PSK</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-radext-tls-psk-10"/>
    <author initials="A." surname="DeKok" fullname="Alan DeKok">
      <organization>FreeRADIUS</organization>
      <address>
        <email>aland@freeradius.org</email>
      </address>
    </author>
    <date year="2024" month="August" day="01"/>
    <area>Internet</area>
    <workgroup>RADEXT Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 48?>

<t>This document gives implementation and operational considerations for using TLS-PSK with RADIUS/TLS (RFC6614) and RADIUS/DTLS (RFC7360).  The purpose of the document is to help smooth the operational transition from the use of the insecure RADIUS/UDP to the use of the much more secure RADIUS/TLS.</t>
    </abstract>
    <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-tls-psk/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        RADEXT Working Group mailing list (<eref target="mailto:radext@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/radext/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/radext/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/freeradius/radext-tls-psk.git"/>.</t>
    </note>
  </front>
  <middle>
    <?line 52?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The previous specifications "Transport Layer Security (TLS) Encryption for RADIUS"  <xref target="RFC6614"/> and "Datagram Transport Layer Security (DTLS) as a Transport Layer for RADIUS" <xref target="RFC7360"/> defined how (D)TLS can be used as a transport protocol for RADIUS.  However, those documents do not provide guidance for using TLS-PSK with RADIUS.  This document provides that missing guidance, and gives implementation and operational considerations.</t>
      <t>The purpose of the document is to help smooth the operational transition from the use of the insecure RADIUS/UDP to the use of the much more secure RADIUS/TLS.  While we recognize that using PSKs is often less preferable to using public / private keys, the operational model of PSKs follows the legacy RADIUS "shared secret" model.  As such, it can be easier for implementers and operators to transition to TLS when that transition is offered as a series of small changes.</t>
      <t>The intent for TLS-PSK is for it to be used in internal / secured networks, where clients come from a small number of known locations.  This situation mirrors the use-case of shared secrets.  TLS-PSK is not suitable where servers are not statically known, such as with dynamic server lookups <xref target="RFC7585"/>.</t>
      <t>TLS-PSKs have the same issue of symmetric information between client and server: both parties know the secret key.  A client could, in theory, pretend to be a server.  In contrast, certificates are asymmetric, where it is impossible for the parties to assume the others identity.  This symmetry in TLS-PSK is likely to cause limited security problems.  RADIUS has used shared secrets for thirty years, and this vulnerability has not been known to be exploited.  As such, we believe that this known issue is acceptable for TLS-PSK.</t>
      <t>Unless it is explicitly called out that a recommendation applies to
TLS alone or to DTLS alone, each recommendation applies to both TLS
and DTLS.</t>
      <t>This document uses "shared secret" to mean "RADIUS shared secret", and Pre-Shared Key (PSK) to mean secrets which are used with TLS-PSK.</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>
      <ul spacing="normal">
        <li>External PSK</li>
      </ul>
      <ul empty="true">
        <li>
          <t>A PSK (along with a related PSK Identity) which is administratively configured.  That is, one which is external to TLS, and is not created by the TLS subsystem.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>Resumption PSK</li>
      </ul>
      <ul empty="true">
        <li>
          <t>A PSK (along with a related PSK Identity) which is created by the TLS subsystem and/or application, for use with resumption.</t>
        </li>
      </ul>
    </section>
    <section anchor="history">
      <name>History</name>
      <t>TLS deployments usually rely on certificates in most common uses. However, we recognize that it may be difficult to fully upgrade client implementations to allow for certificates to be used with RADIUS/TLS and RADIUS/DTLS.  These upgrades involve not only implementing TLS, but can also require significant changes to administration interfaces and application programming interfaces (APIs) in order to fully support certificates.</t>
      <t>For example, unlike shared secrets, certificates expire.  This expiration means that a working system using TLS can suddenly stop working.  Managing this expiration can require additional notification APIs on RADIUS clients and servers which were previously not required when shared secrets were used.</t>
      <t>Certificates also require the use of certification authorities (CAs), and chains of certificates.  RADIUS implementations using TLS therefore have to track not just a small shared secret, but also potentially many large certificates.  The use of TLS-PSK can therefore provide a simpler upgrade path for implementations to transition from RADIUS shared secrets to TLS.</t>
    </section>
    <section anchor="general-discussion-of-psks-and-psk-identities">
      <name>General Discussion of PSKs and PSK Identities</name>
      <t>Before we define any RADIUS-specific use of PSKs, we must first review the current standards for PSKs, and give general advice on PSKs and PSK identities.</t>
      <t>The requirements in this section apply to both client and server implementations which use TLS-PSK.  Client-specific and server-specific issues are discussed in more detail later in this document.</t>
      <section anchor="requirements-on-psks">
        <name>Requirements on PSKs</name>
        <t>Reuse of a PSK in multiple versions of TLS (e.g. TLS 1.2 and TLS 1.3) is considered unsafe (<xref section="E.7" sectionFormat="comma" target="RFC8446"/>).  Where TLS 1.3 binds the PSK to a particular key derivation function, TLS 1.2 does not.  This binding means that it is possible to use the same PSK in different hashes, leading to the potential for attacking the PSK by comparing the hash outputs.  While there are no known insecurities, these uses are not known to be secure, and should therefore be avoided.</t>
        <t><xref target="RFC9258"/> adds a key derivation function to the import interface of (D)TLS 1.3, which binds the externally provided PSK to the protocol version.  In particular, that document:</t>
        <ul empty="true">
          <li>
            <t>... describes a mechanism for importing PSKs derived from external PSKs by including the target KDF, (D)TLS protocol version, and an optional context string to ensure uniqueness. This process yields a set of candidate PSKs, each of which are bound to a target KDF and protocol, that are separate from those used in (D)TLS 1.2 and prior versions. This expands what would normally have been a single PSK and identity into a set of PSKs and identities.</t>
          </li>
        </ul>
        <t>An implementation MUST NOT use the same PSK for TLS 1.3 and for earlier versions of TLS.  This requirement prevents reuse of a PSK with multiple TLS versions, which prevents the attacks discussed in <xref section="E.7" sectionFormat="comma" target="RFC8446"/>.  The exact manner in which this requirement is enforced is implementation-specific.  One possibility is to have two different PSKs.  Another possibility is to forbid the use of TLS 1.3, or to forbid the use of TLS versions less than TLS 1.3.</t>
        <t>It is RECOMMENDED that systems follow the directions of <xref section="6" sectionFormat="comma" target="RFC9257"/> for the use of external PSKs in TLS.  That document provides extremely useful guidance on generating and using PSKs.</t>
        <t>Implementations MUST support PSKs of at least 32 octets in length, and SHOULD support PSKs of 64 octets or more.  As the PSKs are generally hashed before being used in TLS, the useful entropy of a PSK is limited by the size of the hash output.  This output may be 256, 384, or 512 bits in length.  Nevertheless, it is good practice for implementations to allow entry of PSKs of more than 64 octets, as the PSK may be in a form other than bare binary data.  Implementations which limit the PSK to a maximum of 64 octets are likely to use PSKs which have much less than 512 bits of entropy.  That is, a PSK with high entropy may be expanded via some construct (e.g. base32 as in the example below) in order to make it easier for people to interact with.  Where 512 bits of entropy are input to an encoding construct, the output may be larger than 64 octets.</t>
        <t>Implementations MUST require that PSKs be at least 16 octets in length, which SHOULD be derived from a source with at least 128 bits of entropy.  That is, short PSKs MUST NOT be permitted to be used, and PSKs MUST be random.   The strength of the PSK is not determined by the length of the PSK, but instead by the number of bits of entropy which it contains.  People are not good at creating data with high entropy, so a source of cryptographically secure random numbers MUST be used.</t>
        <t>Administrators SHOULD use PSKs of at least 24 octets, generated using a source of cryptographically secure random numbers.  Implementers needing a secure random number generator should see <xref target="RFC8937"/> for for further guidance.  PSKs are not passwords, and administrators should not try to manually create PSKs.</t>
        <t>PSKs are in their purest form are opaque tokens, represented as an undistinguished series of octets.  Where PSKs are expected to be managed automatically by scripted methods, this format is acceptable.  However, in some cases it is necessary for administrators to share PSKs, in which case humanly readable formats may be useful.</t>
        <t>Where user passwords are generally intended to be remembered and entered by people on a regular basis,  PSKs are intended to be entered once, and then automatically saved in a system configuration.  As such, due to the limited entropy of passwords, they are not acceptable for use with TLS-PSK, and would only be acceptable for use with a password-authenticated key exchange (PAKE) TLS method <xref target="RFC8492"/>.  Implementations MUST therefore support entry and storage of PSKs as undistinguished octets.</t>
        <t>We also incorporate by reference the requirements of <xref section="10.2" sectionFormat="comma" target="RFC7360"/> when using PSKs.</t>
        <t>In order to guide Implementers, we give an example commands below which generates random PSKs.  While some commands may not work on some systems one of the commands should succeed.  The intent here is to document a concise and simple example of creating PSKs which are both secure, and humanly manageable.  This document does not mandate that the PSKs follow this format, or any other format.</t>
        <artwork><![CDATA[
openssl rand -base64 16

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

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

dd if=/dev/urandom bs=1 count=16 | (hexdump -ve '/1 "%02x"' && echo)
]]></artwork>
        <t>Only one of the above commands should be run, there is no need to run all of them.  Each command reads 128 bits (16 octets) of random data from a secure source, and encodes it as printable / readable ASCII.  This form of PSK will be accepted by any implementation which supports at least 32 octets for PSKs.  Larger PSKs can be generated by changing the "16" number to a larger value.  The above derivation assumes that the random source returns one bit of entropy for every bit of randomness which is returned.  Sources failing that assumption are NOT RECOMMENDED.</t>
        <section anchor="interaction-between-psks-and-radius-shared-secrets">
          <name>Interaction between PSKs and RADIUS Shared Secrets</name>
          <t>Any shared secret used for RADIUS/UDP or RADIUS/TLS MUST NOT be used for TLS-PSK.</t>
          <t>It is RECOMMENDED that RADIUS clients and servers track all used shared secrets and PSKs, and then verify that the following requirements all hold true:</t>
          <ul spacing="normal">
            <li>no shared secret is used for more than one RADIUS client</li>
            <li>no PSK is used for more than one RADIUS client</li>
            <li>no shared secret is used as a PSK</li>
          </ul>
          <t>Note that the shared secret of "radsec" given in <xref target="RFC6614"/> can be used across multiple clients, as that value is mandated by the specification.  The intention here is to recommend best practices for administrators who enter site-local shared secrets.</t>
          <t>There may be use-cases for using one shared secret across multiple RADIUS clients.  There may similarly be use-cases for sharing a PSK across multiple RADIUS clients.   Details of the possible attacks on reused PSKs are given in <xref section="4.1" sectionFormat="comma" target="RFC9257"/>.</t>
          <t>There are no known use-cases for using a PSK as a shared secret, or vice-versa.</t>
          <t>Implementations MUST reject configuration attempts that try to use the
same value for PSK and shared secret.  To prevent administrative errors, implementations SHOULD NOT provide user interfaces which allow both PSKs and shared secrets to be entered at the same time.  There is too much of a temptation for administrators to enter the same value in both fields, which would violate the limitations given above.  Implementations MUST NOT use a "shared secret" field as a way for administrators to enter PSKs.  The PSK entry fields MUST be labeled as being related to PSKs, and not to shared secrets.</t>
        </section>
      </section>
      <section anchor="psk-identities">
        <name>PSK Identities</name>
        <t><xref section="5.1" sectionFormat="comma" target="RFC4279"/> requires that PSK identities be encoded in UTF-8 format.  However, <xref section="4.2.11" sectionFormat="comma" target="RFC8446"/> describes the "Pre-Shared Key Extension" and defines the ticket as an opaque string: "opaque identity&lt;1..2^16-1&gt;;".  This PSK is then used in <xref section="4.6.1" sectionFormat="comma" target="RFC8446"/> for resumption.</t>
        <t>These definitions appear to be in conflict.  This conflict is addressed in <xref section="6.1.1" sectionFormat="comma" target="RFC9257"/>, which discusses requirements for encoding and comparison of PSK identities.  It is RECOMMENDED that systems follow the directions of <xref section="6.1.1" sectionFormat="comma" target="RFC9257"/> when using PSK Identities for RADIUS/TLS.</t>
        <t>In general, implementers should allow for external PSK identities to follow <xref target="RFC4279"/> and be UTF-8, while PSK identities provisioned as part of resumption are automatically provisioned, and therefore follow <xref target="RFC8446"/>.</t>
        <t>Note that the PSK identity is sent in the clear, and is therefore visible to attackers.  Where privacy is desired, the PSK identity could be either an opaque token generated cryptographically, or perhaps in the form of a Network Access Identifier (NAI) <xref target="RFC7542"/>, where the "user" portion is an opaque token.  For example, an NAI could be "68092112@example.com".  If the attacker already knows that the client is associated with "example.com", then using that domain name in the PSK identity offers no additional information.  In contrast, the "user" portion needs to be both unique to the client and private, so using an opaque token there is a more secure approach.</t>
        <t>Implementations MUST support PSK Identities of 128 octets, and SHOULD support longer PSK identities.  We note that while TLS provides for PSK identities of up to 2^16-1 octets in length, there are few practical uses for extremely long PSK identities.</t>
        <t>It is up to administrators and implementations as to how they differentiate external PSK identities from session resumption PSK identities used in TLS 1.3 session tickets.  One approach could be to have externally provisioned PSK identities contain an NAI such as described above, while session resumption PSK identities contain large blobs of opaque, encrypted, and authenticated text.  It should then be relatively straightforward to differentiate the two types of identities.  One is UTF-8, the other is not.  One is not authenticated, the other is authenticated.</t>
        <t>Servers MUST assign and/or track session resumption PSK identities in a
way which facilities the ability to distinguish those identities from
externally configured PSK identities, and which enables them to both find and validate
the session resumption PSK.</t>
        <t>A sample validation flow for TLS-PSK identities could be performed via the following steps:</t>
        <ul empty="true">
          <li>
            <ol spacing="normal" type="1"><li>PSK identities provided via an administration interface are enforced to be only UTF-8 on both client and server.</li>
              <li>The client treats session tickets received from the server as opaque blobs.</li>
              <li>When the server issues session tickets for resumption, the server ensures that they are not valid UTF-8.</li>
              <li>One way to do this is to use stateless resumption with a forced non-UTF-8 key_name per <xref section="4" sectionFormat="comma" target="RFC5077"/>, such as by setting one octet to 0x00.</li>
            </ol>
            <t>5 When receiving TLS, the server receives Client-Hello containing a PSK, and checks if the identity is valid UTF-8.</t>
            <ul empty="true">
              <li>
                <t>5.1. If yes, it searches for a pre-configured client which matches that identity.</t>
                <ul empty="true">
                  <li>
                    <t>5.1.1. If the identity is found, authenticates the client via PSK.</t>
                    <t>5.1.2. else the identity is invalid, and the server closes the connection.</t>
                  </li>
                </ul>
                <t>5.2 If the identity is not UTF-8, try resumption, which is usually be handled by a TLS library.</t>
                <ul empty="true">
                  <li>
                    <t>5.2.1 If the TLS library verifies the session ticket, resumption has happened, and the connection is established.</t>
                    <t>5.2.2. else the server ignores the session ticket, and performs normal TLS handshake with a certificate.</t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>This validation flow is only suggested.  Other validation methods are possible.</t>
        <section anchor="security-of-psk-identities">
          <name>Security of PSK Identities</name>
          <t>We note that the PSK identity is a field created by the connecting client.  Since the client is untrusted until both the identity and PSK have been verified, both of those fields MUST be treated as untrusted.  That is, a well-formed PSK Identity is likely to be in UTF-8 format, due to the requirements of <xref section="5.1" sectionFormat="comma" target="RFC4279"/>.  However, implementations MUST support managing PSK identities as a set of undistinguished octets.</t>
          <t>It is not safe to use a raw PSK Identity to look up a corresponding PSK.  The PSK may come from an untrusted source, and may contain invalid or malicious data.  For example, the identity may have incorrect UTF-8 format; or it may contain data which forms an injection attack for SQL, LDAP, REST or shell meta characters; or it may contain embedded NUL octets which are incompatible with APIs which expect NUL terminated strings.  The identity may also be up to 65535 octets long.</t>
          <t>As such, implementations MUST validate the identity prior to it being used as a lookup key.  When the identity is passed to an external API (e.g. database lookup), implementations MUST either escape any characters in the identity which are invalid for that API, or else reject the identity entirely.  The exact form of any escaping depends on the API, and we cannot document all possible methods here.  However, a few basic validation rules are suggested, as outlined below.  Any identity which is rejected by these validation rules SHOULD cause the server to close the TLS connection.</t>
          <t>The suggested validation rules for identities used outside of resumption are as follows:</t>
          <ul spacing="normal">
            <li>Identities longer than a fixed maximum SHOULD be rejected.  The limit is implementation dependent, but SHOULD NOT be less than 128, and SHOULD NOT be more than 1024.</li>
            <li>Identities SHOULD be in UTF-8 format.  Identities with embedded control characters, NUL octets, etc. SHOULD NOT be used.</li>
            <li>Where the NAI format is expected, identities which are not in NAI format SHOULD be rejected</li>
          </ul>
          <t>It is RECOMMENDED that implementations extend these rules with any additional validation which are found to be useful.  For example, implementations and/or deployments could both generate PSK identities in a particular format for passing to client systems, and then also verify that any received identity matches that format.  For example, a site could generate PSK identities which are composed of characters in the local language.  The site could then reject identities which contain characters from other languages, even if those characters are valid UTF-8.</t>
        </section>
      </section>
      <section anchor="psk-and-psk-identity-sharing">
        <name>PSK and PSK Identity Sharing</name>
        <t>While administrators may desire to share PSKs and/or PSK identities across multiple systems, such usage is NOT RECOMMENDED.  Details of the possible attacks on reused PSKs are given in <xref section="4.1" sectionFormat="comma" target="RFC9257"/>.</t>
        <t>Implementations MUST be able to configure a unique PSK and PSK identity for each possible client-server relationship.  This configuration allows administrators desiring security to use unique PSKs for each such relationship.  This configuration also allows administrators to re-use PSKs and PSK Identities where local policies permit.</t>
        <t>Implementations SHOULD warn administrators if the same PSK identity and/or PSK is used for multiple client-server relationships.</t>
      </section>
    </section>
    <section anchor="guidance-for-radius-clients">
      <name>Guidance for RADIUS Clients</name>
      <t>Client implementations MUST allow the use of a pre-shared key (TLS-PSK) for RADIUS/TLS.  The client implementation can then expose a user interface flag which is "TLS yes / no", and then also fields which ask for the PSK identity and PSK itself.</t>
      <t>For TLS 1.3, Implementations MUST support "psk_dhe_ke" Pre-Shared Key Exchange Mode in TLS 1.3 as discussed in <xref section="4.2.9" sectionFormat="comma" target="RFC8446"/> and in <xref section="6" sectionFormat="comma" target="RFC9257"/>.  Implementations MUST implement the recommended cipher suites in <xref section="4.2" sectionFormat="comma" target="RFC9325"/> for TLS 1.2, and in <xref section="9.1" sectionFormat="comma" target="RFC8446"/> for TLS 1.3.  In order to future-proof these recommendations, we give the following recommendations:</t>
      <ul spacing="normal">
        <li>
          <t>Implementations SHOULD use the "Recommended" cipher suites listed in the IANA "TLS Cipher Suites" registry,
          </t>
          <ul spacing="normal">
            <li>for TLS 1.3, the use "psk_dhe_ke" PSK key exchange mode,</li>
            <li>for TLS 1.2 and earlier, use cipher suites which require ephemeral keying.</li>
          </ul>
        </li>
      </ul>
      <t>If a client initiated a connection using a PSK with TLS 1.3 by including the pre-shared key extension, it MUST close the connection if the server did not also select the pre-shared key to continue the handshake.</t>
      <section anchor="psk-identities-1">
        <name>PSK Identities</name>
        <t><xref target="RFC6614"/> is silent on the subject of PSK identities, which is an issue that we correct here.  Guidance is required on the use of PSK identities, as the need to manage identities associated with PSK is a new requirement for NAS management interfaces, and is a new requirement for RADIUS servers.</t>
        <t>RADIUS systems implementing TLS-PSK MUST support identities as per <xref section="5.3" sectionFormat="comma" target="RFC4279"/>, and MUST enable configuring TLS-PSK identities in management interfaces as per <xref section="5.4" sectionFormat="comma" target="RFC4279"/>.</t>
        <t>The historic methods of signing RADIUS packets have not yet been cracked, but they are believed to be much less secure than modern TLS.  Therefore, when a RADIUS shared secret is used to sign RADIUS/UDP or RADIUS/TCP packets, that shared secret MUST NOT be used with TLS-PSK.  If the secrets were to be reused, then an attack on historic RADIUS cryptography could be trivially leveraged to decrypt TLS-PSK sessions.  Therefore in order to prevent confusion between shared secrets and TLS-PSKs, management interfaces and APIs need to label PSK fields as "PSK" or "TLS-PSK", rather than as "shared secret".</t>
        <t>With TLS-PSK, RADIUS/TLS clients MUST permit the configuration of a RADIUS server IP address or host name, because dynamic server lookups <xref target="RFC7585"/> can only be used if servers use certificates.</t>
      </section>
    </section>
    <section anchor="guidance-for-radius-servers">
      <name>Guidance for RADIUS Servers</name>
      <t>In order to support clients with TLS-PSK, server implementations MUST allow the use of a pre-shared key (TLS-PSK) for RADIUS/TLS.</t>
      <t>Systems which act as both client and server at the same time MUST NOT share or reuse PSK identities between incoming and outgoing connections.  Doing so would open up the systems to attack, as discussed in <xref section="4.1" sectionFormat="comma" target="RFC9257"/>.</t>
      <t>For TLS 1.3, Implementations MUST support "psk_dhe_ke" Pre-Shared Key Exchange Mode in TLS 1.3 as discussed in <xref section="4.2.9" sectionFormat="comma" target="RFC8446"/> and in <xref section="6" sectionFormat="comma" target="RFC9257"/>.  Implementations MUST implement the recommended cipher suites in <xref section="4.2" sectionFormat="comma" target="RFC9325"/> for TLS 1.2, and in <xref section="9.1" sectionFormat="comma" target="RFC8446"/> for TLS 1.3.  In order to future-proof these recommendations, we give the following recommendations:</t>
      <ul spacing="normal">
        <li>
          <t>Implementations SHOULD use the "Recommended" cipher suites listed in the IANA "TLS Cipher Suites" registry,
          </t>
          <ul spacing="normal">
            <li>for TLS 1.3, use "psk_dhe_ke" PSK key exchange mode,</li>
            <li>for TLS 1.2 and earlier, use cipher suites which require ephemeral keying.</li>
          </ul>
        </li>
      </ul>
      <t>The following section(s) describe guidance for RADIUS server implementations and deployments.  We first give an overview of current practices, and then extend and/or replace those practices for TLS-PSK.</t>
      <section anchor="current-practices">
        <name>Current Practices</name>
        <t>RADIUS identifies clients by source IP address (<xref target="RFC2865"/> and <xref target="RFC6613"/>) or by client certificate (<xref target="RFC6614"/> and <xref target="RFC7585"/>).  Neither of these approaches work for TLS-PSK.  This section describes current practices and mandates behavior for servers which use TLS-PSK.</t>
        <t>A RADIUS/UDP server is typically configured with a set of information per client, which includes at least the source IP address and shared secret.  When the server receives a RADIUS/UDP packet, it looks up the source IP address, finds a client definition, and therefore the shared secret.  The packet is then authenticated (or not) using that shared secret.</t>
        <t>That is, the IP address is treated as the clients identity, and the shared secret is used to prove the clients authenticity and shared trust.  The set of clients forms a logical database "client table", with the IP address as the key.</t>
        <t>A server may be configured with additional site-local policies associated with that client.  For example, a client may be marked up as being a WiFi Access Point, or a VPN concentrator, etc.  Different clients may be permitted to send different kinds of requests, where some may send Accounting-Request packets, and other clients may not send accounting packets.</t>
      </section>
      <section anchor="practices-for-tls-psk">
        <name>Practices for TLS-PSK</name>
        <t>We define practices for TLS-PSK by analogy with the RADIUS/UDP use-case, and by extending the additional policies associated with the client.  The PSK identity replaces the source IP address as the client identifier.  The PSK replaces the shared secret as proof of client authenticity and shared trust.  However, systems implementing RADIUS/TLS <xref target="RFC6614"/> and RADIUS/DTLS <xref target="RFC7360"/> MUST still use the shared secret as discussed in those specifications.  Any PSK is only used by the TLS layer, and has no effect on the RADIUS data which is being transported.  That is, the RADIUS data transported in a TLS tunnel is the same no matter if client authentication is done via PSK or by client certificates.  The encoding of the RADIUS data is entirely unaffected by the use (or not) of PSKs and client certificates.</t>
        <t>In order to securely support dynamic source IP addresses for clients, we also require that servers limit clients based on a network range.  The alternative would be to suggest that RADIUS servers allow any source IP address to connect and try TLS-PSK, which could be a security risk.  When RADIUS servers do no source IP address filtering, it is easier for attackers to send malicious traffic to the server.  An issue with a TLS library or even a TCP/IP stack could permit the attacker to gain unwarranted access.  In contrast, when IP address filtering is done, attackers generally must first gain access to a secure network before attacking the RADIUS server.</t>
        <t>Even where <xref target="RFC7585"/> dynamic discovery is not used, servers SHOULD NOT permit TLS-PSK to be used across the wider Internet.  The intent for TLS-PSK is for it to be used in internal / secured networks, where clients come from a small number of known locations.  In contrast, certificates can be generated and assigned to clients without any interaction with the RADIUS server.  Therefore if the RADIUS server needs to accept connections from clients at unknown locations, a more secure method is to use client certificates.</t>
        <t>If a client system is compromised, its complete configuration is exposed to the attacker.  Exposing a client certificate means that the attacker can pretend to be the client.  In contrast, exposing a PSK means that the attacker can not only pretend to be the client, but can also pretend to be the server.</t>
        <t>The benefits of TLS-PSK are in easing management and in administrative overhead, not in securing traffic from resourceful attackers.  Where TLS-PSK is used across the Internet, PSKs MUST contain at least 256 bits of entropy.</t>
        <t>For example, a RADIUS server could be configured to be accept connections from a source network of 192.0.2.0/24.  The server could therefore discard any TLS connection request which comes from a source IP address outside of that network.  In that case, there is no need to examine the PSK identity or to find the client definition.  Instead, the IP source filtering policy would deny the connection before any TLS communication had been performed.</t>
        <t>RADIUS servers need to be able to limit certain PSK identifiers to certain network ranges or IP addresses.  That is, if a NAS is known to have a dynamic IP address within a particular subnet, the server should limit use of the NASes PSK to that subnet.  This filtering can therefore help to catch configuration errors.</t>
        <t>As some clients may have dynamic IP addresses, it is possible for a one PSK identity to appear at different source IP addresses over time.  In addition, as there may be many clients behind one NAT gateway, there may be multiple RADIUS clients using one public IP address.  RADIUS servers need to support multiple PSK identifiers at one source IP address.</t>
        <t>That is, a server needs to support multiple different clients within one network range, multiple clients behind a NAT, and one client having different IP addresses over time.  All of those use-cases are common and necessary.</t>
        <t>The following section describes these requirements in more detail.</t>
        <section anchor="ip-filtering">
          <name>IP Filtering</name>
          <t>A server supporting this specification MUST perform IP address filtering on incoming connections.  There are few reasons for a server to have a default configuration which allows connections from any source IP address.</t>
          <t>A TLS-PSK server MUST be configurable with a set of "allowed" network ranges from which clients are permitted to connect.  Any connection from outside of the allowed range(s) MUST be rejected before any PSK identity is checked.  It is RECOMMENDED that servers support IP address filtering even when TLS-PSK is not used.</t>
          <t>The "allowed" network ranges could be implemented as a global list, or one or more network ranges could be tied to a client or clients.  The intent here is to allow connections to be filtered by source IP, and to allow clients to be limited to a subset of network addresses.  The exact method and representation of that filtering is up to an implementation.</t>
          <t>Conceptually, the set of IP addresses and ranges, along with permitted clients and their credentials forms a logical "client table" which the server uses to both filter and authenticate clients.  The client table should contain information such as allowed network ranges, PSK identity and associated PSK, credentials for another TLS authentication method, or flags which indicate that the server should require a client certificate.</t>
          <t>Once a server receives a connection, it checks the source IP address against the list of all allowed IP addresses or ranges in the client table.  If none match, the connection MUST be rejected.  That is, the connection MUST be from an authorized source IP address.</t>
          <t>Once a connection has been established, the server MUST NOT process any application data inside of the TLS tunnel until the client has been authenticated.  Instead, the server normally receives a TLS-PSK identity from the client.  The server then uses this identity to look up the client in the client table.  If there is no matching client, the server MUST close the connection.  The server then also checks if this client definition allows this particular source IP address.  If the source IP address is not allowed, the server MUST close the connection.</t>
          <t>Where the server does not receive TLS-PSK from the client, it proceeds with another authentication method such as client certificates.  Such requirements are discussed elsewhere, most notably in <xref target="RFC6614"/> and <xref target="RFC7360"/>.</t>
          <t>An implementation may perform two independent IP address lookups.  First, to check if the connection allowed at all, and second to check if the connection is authorized for this particular client.  One or both checks may be used by a particular implementation.  The two sets of IP addresses can overlap, and implementations SHOULD support that capability.</t>
          <t>Depending on the implementation, one or more clients may share a list of allowed network ranges.  Alternately, the allowed network ranges for two clients can overlap only partially, or not at all.  All of these possibilities MUST be supported by the server implementation.</t>
        </section>
        <section anchor="psk-authentication">
          <name>PSK Authentication</name>
          <t>Once the source IP has been verified to be allowed for this particular client, the server authenticates the TLS connection via the PSK taken from the client definition.  If the PSK is verified, the server then accepts the connection, and proceeds with RADIUS/TLS as per <xref target="RFC6614"/>.</t>
          <t>If the PSK is not verified, then the server MUST close the connection.  While TLS provides for fallback to other authentication methods such as client certificates, there is no reason for a client to be configured simultaneously with multiple authentication methods.</t>
          <t>A client MUST use only one authentication method for TLS.  An authentication method is either TLS-PSK, client certificates, or some other method supported by TLS.</t>
          <t>That is, client configuration is relatively simple: use a particular set of credentials to authenticate to a particular server.  While clients may support multiple servers and fail-over or load-balancing, that configuration is generally orthogonal to the choice of which credentials to use.</t>
        </section>
        <section anchor="resumption">
          <name>Resumption</name>
          <t>Implementations SHOULD support resumption.  In many cases session tickets can be authenticated solely by the server, and do not require querying a database.  The use of resumption can allow the system to better scale to higher loads.  There will also be systems which support both TLS-PSK and other TLS-based authentication methods such as certificates.  It is therefore vital for servers to be able to distinguish the use-case of TLS-PSK with pre-configured identities from TLS-PSK which is being used for resumptions.</t>
          <t>The above discussion of PSK identities is therefore complicated by the use of PSKs for resumption in TLS 1.3.  A server which receives a PSK identity via TLS typically cannot query the TLS layer to see if this identity is for a resumed session (which is possibly for another TLS authentication method), or is instead a static pre-provisioned identity.  This confusion complicates server implementations.</t>
          <t>One way for a server to tell the difference between the two kinds of identities is via construction.  Identities used for resumption can be constructed via a fixed format, such as recommended by <xref section="4" sectionFormat="comma" target="RFC5077"/>.  A static pre-provisioned identity could be in format of an NAI, as given in <xref target="RFC7542"/>.  An implementation could therefore examine the incoming identity, and determine from the identity alone what kind of authentication was being performed.</t>
          <t>An alternative way for a server to distinguish the two kinds of identities is to maintain two tables.  One table would contain static identities, as the logical client table described above.  Another table could be the table of identities handed out for resumption.  The server would then look up any PSK identity in one table, and if not found, query the other one.  An identity would be found in a table, in which case it can be authenticated.  Or, the identity would not be found in either table, in which case it is unknown, and the server MUST close the connection.</t>
          <t>As suggested in <xref target="RFC8446"/>, TLS-PSK peers MUST NOT store resumption PSKs or tickets (and associated cached data) for longer than 604800 seconds (7 days) regardless of the PSK or ticket lifetime.</t>
          <t>Systems supporting TLS-PSK and resumption MUST cache data during the initial full handshake sufficient to allow authorization decisions to be made during resumption. If cached data cannot be retrieved securely, resumption MUST NOT be done.  The cached data is typically information such as the original PSK identity, along with any policies associated with that identity.</t>
          <t>Information from the original TLS exchange (e.g., the original PSK identity) as well as related information (e.g., source IP addresses) may change between the initial full handshake and resumption. This change creates a "time-of-check time-of-use" (TOCTOU) security vulnerability. A malicious or compromised client could supply one set of data during the initial authentication, and a different set of data during resumption, potentially allowing them to obtain access that they should not have.</t>
          <t>If any authorization or policy decisions were made with information that has changed between the initial full handshake and resumption, and if change may lead to a different decision, such decisions MUST be reevaluated. It is RECOMMENDED that authorization and policy decisions are reevaluated based on the information given in the resumption. TLS-PSK servers MAY reject resumption where the information supplied during resumption does not match the information supplied during the original authentication. If a safe decision is not possible, TLS-PSK servers SHOULD reject the resumption and continue with a full handshake.</t>
        </section>
        <section anchor="interaction-with-other-tls-authentication-methods">
          <name>Interaction with other TLS authentication methods</name>
          <t>When a server supports both TLS-PSK and client certificates, it MUST be able to accept authenticated connections from clients which may use either type of credentials, perhaps even from the same source IP address and at the same time.  That is, servers are required to both authenticate the client, and also to filter clients by source IP address.  These checks both have to match in order for a client to be accepted.</t>
        </section>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>We make no changes over <xref target="RFC6614"/> and <xref target="RFC7360"/>.</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>There are no IANA considerations in this document.</t>
      <t>RFC Editor: This section may be removed before final publication.</t>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to the many reviewers in the RADEXT working group for positive feedback.</t>
    </section>
    <section anchor="changelog">
      <name>Changelog</name>
      <ul spacing="normal">
        <li>00 - initial version</li>
        <li>01 - update examples</li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="RFC4279">
          <front>
            <title>Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)</title>
            <author fullname="P. Eronen" initials="P." role="editor" surname="Eronen"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document specifies three sets of new ciphersuites for the Transport Layer Security (TLS) protocol to support authentication based on pre-shared keys (PSKs). These pre-shared keys are symmetric keys, shared in advance among the communicating parties. The first set of ciphersuites uses only symmetric key operations for authentication. The second set uses a Diffie-Hellman exchange authenticated with a pre-shared key, and the third set combines public key authentication of the server with pre-shared key authentication of the client. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4279"/>
          <seriesInfo name="DOI" value="10.17487/RFC4279"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9257">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
        <reference anchor="RFC9325">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="November" year="2022"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
              <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="9325"/>
          <seriesInfo name="DOI" value="10.17487/RFC9325"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="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="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="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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8937">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author fullname="C. Cremers" initials="C." surname="Cremers"/>
            <author fullname="L. Garratt" initials="L." surname="Garratt"/>
            <author fullname="S. Smyshlyaev" initials="S." surname="Smyshlyaev"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="October" year="2020"/>
            <abstract>
              <t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols. Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
        <reference anchor="RFC9258">
          <front>
            <title>Importing External Pre-Shared Keys (PSKs) for TLS 1.3</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes an interface for importing external Pre-Shared Keys (PSKs) into TLS 1.3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9258"/>
          <seriesInfo name="DOI" value="10.17487/RFC9258"/>
        </reference>
        <reference anchor="RFC8492">
          <front>
            <title>Secure Password Ciphersuites for Transport Layer Security (TLS)</title>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="February" year="2019"/>
            <abstract>
              <t>This memo defines several new ciphersuites for the Transport Layer Security (TLS) protocol to support certificateless, secure authentication using only a simple, low-entropy password. The exchange is called "TLS-PWD". The ciphersuites are all based on an authentication and key exchange protocol, named "dragonfly", that is resistant to offline dictionary attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8492"/>
          <seriesInfo name="DOI" value="10.17487/RFC8492"/>
        </reference>
        <reference anchor="RFC7542">
          <front>
            <title>The Network Access Identifier</title>
            <author fullname="A. DeKok" initials="A." surname="DeKok"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>In order to provide inter-domain authentication services, it is necessary to have a standardized method that domains can use to identify each other's users. This document defines the syntax for the Network Access Identifier (NAI), the user identifier submitted by the client prior to accessing resources. This document is a revised version of RFC 4282. It addresses issues with international character sets and makes a number of other corrections to RFC 4282.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7542"/>
          <seriesInfo name="DOI" value="10.17487/RFC7542"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
