<?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.19 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-guo-pake-in-tls-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.1 -->
  <front>
    <title abbrev="PAKE Usage in TLS 1.3">PAKE Usage in TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-guo-pake-in-tls-00"/>
    <author initials="W." surname="Guo" fullname="Wei Guo">
      <organization>Huawei Technologies</organization>
      <address>
        <email>guowei90@huawei.com</email>
      </address>
    </author>
    <author initials="L." surname="Xia" fullname="Liang Xia">
      <organization>Huawei Technologies</organization>
      <address>
        <email>frank.xialiang@huawei.com</email>
      </address>
    </author>
    <author initials="J." surname="Li" fullname="Ji Li">
      <organization>Huawei Technologies</organization>
      <address>
        <email>liji100@huawei.com</email>
      </address>
    </author>
    <date year="2024" month="September" day="30"/>
    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>keyword1</keyword>
    <keyword>keyword2</keyword>
    <keyword>keyword3</keyword>
    <abstract>
      <?line 54?>

<t>This document provides a mechanism that uses password-authenticated key exchange (PAKE) as an authentication and key establishment in TLS 1.3, and that supports PAKE algorithms negotiation.</t>
    </abstract>
  </front>
  <middle>
    <?line 59?>

<section anchor="intro">
      <name>Introduction</name>
      <t>In some applications, it is desirable to use a pre-shared low-entropy secret, such as a password, to authenticate with each other between a client and a server. Although TLS 1.3 <xref target="RFC8446"/> itself provides an authentication mechanism of pre-shared keys (PSKs), PSKs need to be full-entropy secrets. If a low-entropy password is directly used in this authentication mechanism, then the PSK binder values can be used by a passive adversary to mount an offline dictionary attack on the password, and even if without the PSK binder and the PSK mechanism is combined with Diffie-Hellman (DH) key establishment, an active adversary can still offline enumerate the password through a man-in-the-middle (MITM) attack.</t>
      <t>Note that there are already some early works about PAKE usage in TLS: the Secure Remote Password (SRP) PAKE protocol has been integrated in prior versions of TLS <xref target="RFC5054"/>, but it does not extend to later TLS 1.3; the Dragonfly PAKE protocol has also been integrated in both prior versions of TLS and the latest TLS 1.3 <xref target="RFC8492"/>; the integration of the OPAQUE <xref target="I-D.draft-irtf-cfrg-opaque-17"/> PAKE protocol with TLS 1.3 has been presented in <xref target="I-D.draft-sullivan-tls-opaque-01"/>. However, they all do not consider PAKE algorithms negotiation, which is very important in practice, because some algorithms may be broken in the future and we need some way to negotiate new algorithms. Although PAKE algorithms negotiation has been mentioned in <xref target="I-D.draft-barnes-tls-pake-04"/>, it only persents the integration of the SPAKE2+ <xref target="RFC9383"/> PAKE protocol with TLS 1.3 assuming that the PAKE algorithm has been negotiated in advance. This document provides a mechanism that uses PAKE as an authentication and key establishment in TLS 1.3, which supports PAKE algorithms negotiation.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses terminology such as client, server, connection, handshake, endpoint, and peer that are defined in <xref section="1.1" sectionFormat="of" target="RFC8446"/>.</t>
    </section>
    <section anchor="pake-usage-in-tls-13">
      <name>PAKE Usage in TLS 1.3</name>
      <t>This section describes details about PAKE usage in TLS 1.3.</t>
      <section anchor="extension">
        <name>TLS Extensions</name>
        <t>To use PAKE as an authentication and key establishment mechanism in TLS 1.3, we define three TLS extensions: "pake_algorithms", "pake_share" and "pake_auth_modes".</t>
        <ul spacing="normal">
          <li>
            <t>The "pake_algorithms" extension indicates all the PAKE algorithm suites supported by the client, it can only appear in ClientHello and EncryptedExtension messages, otherwise peers <bcp14>MUST</bcp14> abort the handshake with an "illegal_parameter" alert.</t>
          </li>
          <li>
            <t>The "pake_share" extension indicates the specific parameters of PAKE key exchange between both parties, it can only appear in ClientHello, ServerHello, and HelloRetryRequest messages, otherwise peers <bcp14>MUST</bcp14> abort the handshake with an "illegal_parameter" alert.</t>
          </li>
          <li>
            <t>The "pake_auth_modes" extension indicates the mode of PAKE authentication for the server, it can only appear in ClientHello and ServerHello messages, otherwise peers <bcp14>MUST</bcp14> abort the handshake with an "illegal_parameter" alert.</t>
          </li>
        </ul>
        <section anchor="pake-algorithms">
          <name>PAKE Algorithms</name>
          <t>When sent by the client, the "pake_algorithms" extension indicates PAKE algorithms which the client supports for authenticated key exchange, ordered from most preferred to least preferred.</t>
          <t>The "extension_data" field of this extension contains a "PAKEAlgorithmList" value:</t>
          <artwork><![CDATA[
　enum {
    /* Balanced PAKE algorithms */
    0x0000~0x3FFF

    /* Augmented PAKE algorithms */
    0x4000~0x7FFF

    /* Post-Quantum Balanced PAKE algorithms */
    0x8000~0xBFFF

    /* Post-Quantum Augmented PAKE algorithms */
    0xC000~0xFFFF
    (0xFFFF)
　} PAKEAlgorithm;
]]></artwork>
          <artwork><![CDATA[
  struct {
    　PAKEAlgorithm supported_pake_algorithms<2..2^16-1>;
  } PAKEAlgorithmList;
]]></artwork>
          <t>Here, each PAKE algorithm suite consists of two part, the first part is represented by the first byte and specifies different PAKE algorithms, and the second part is represented by the second byte and specifies different ciphersuites for the fixed PAKE algorithm. For example, the first bytes "0x00" and "0x01" represent CPace <xref target="I-D.draft-irtf-cfrg-cpace-12"/> and SPAKE2 <xref target="RFC9382"/>, respectively; and the first bytes "0x40" and "0x41" represent OPAQUE <xref target="I-D.draft-irtf-cfrg-opaque-17"/> and SPAKE2+ <xref target="RFC9383"/>, respectively. For the SPAKE2+ algorithm with the first byte "0x41", the second bytes "0x00~0xFF" can be used to represent its different ciphersuites (see Section 4 of <xref target="RFC9383"/>).</t>
          <t>As of TLS 1.3, servers are permitted to send the "pake_algorithms" extension to the client. Clients <bcp14>MUST NOT</bcp14> act upon any information found in "pake_algorithms" prior to successful completion of the handshake but <bcp14>MAY</bcp14> use the information learned from a successfully completed handshake to change what PAKE algorithms they use in their "pake_share" extension in subsequent connections. If the server has a PAKE algorithm it prefers to the ones in the "pake_share" extension but is still willing to accept the ClientHello, it <bcp14>SHOULD</bcp14> send "pake_algorithms" to update the client’s view of its preferences; this extension <bcp14>SHOULD</bcp14> contain all PAKE algorithms the server supports, regardless of whether they are currently supported by the client.</t>
        </section>
        <section anchor="pake_share">
          <name>PAKE Share</name>
          <t>The "pake_share" extension contains the endpoint’s PAKE parameters. The "PAKEShareEntry" value is defined as follows:</t>
          <artwork><![CDATA[
  struct {
      PAKEAlgorithm pake_algorithm;
      opaque pake_message<1..2^16-1>;
  } PAKEShareEntry;
]]></artwork>
          <t>The "pake_algorithm" field indicates the PAKE algorithm used. The "pake_message" field indicates the PAKE key exchange information, its contents are determined by the specified PAKE algorithm:</t>
          <artwork><![CDATA[
  struct {
      select (pake_algorithm) {
      case CPace or SPAKE2 or SPAKE2+:
          opaque dh_share;
      case OPAQUE:
          opaque dh_share;
          opaque oprf_message;
      };
  } PAKEMessage;
]]></artwork>
          <t>Here, the "oprf_message" field indicates the "blinded_message" value or the "evaluated_message" value, which are defined in <xref section="6.3.1" sectionFormat="of" target="I-D.draft-irtf-cfrg-opaque-17"/>; the "dh_share" field indicates a (EC)DH public element that is determined by the underlying group.</t>
          <!-- 
~~~
  struct {
      select (curve_type) {
      case secp256r1 or secp384r1 or secp521r1 or sm2:
          uint8 legency_form = 4;
          opaque X[coordinate_length];
          opaque Y[coordinate_length];
      case curve25519 or curve448 or edwards25519 or edwards448:
          opaque X[coordinate_length];
      };
  } DHShare;
~~~
-->

<t>(1) In the ClientHello message, the "extension_data" field of this extension contains a "PAKEShareClientHello" value:</t>
          <artwork><![CDATA[
  struct {
      opaque client_identity<0..2^16-1>;
      PAKEShareEntry client_shares<0..2^16-1>;
      PAKEExtension pake_extensions<0..2^16-1>;
  } PAKEShareClientHello;
]]></artwork>
          <t>The "client_identity" field indicates a client's identity used in the PAKE algorithm. The "client_shares" field contains a list of offered PAKEShareEntry values in descending order of client preference. The "pake_extensions" field indicates a list of PAKE extensions allowed in the structure of PAKEShareClientHello, clients can use this field to send data to servers and request extended functionality from servers.</t>
          <t>The contents of "client_shares" field <bcp14>MAY</bcp14> be empty if the client is requesting a HelloRetryRequest. Each PAKEShareEntry value <bcp14>MUST</bcp14> correspond to a PAKE algorithm offered in the "pake_algorithms" extension and <bcp14>MUST</bcp14> appear in the same order. However, the values <bcp14>MAY</bcp14> be a non-contiguous subset of the "pake_algorithms" extension and <bcp14>MAY</bcp14> omit the most preferred PAKE algorithms. Such a situation could arise if the most preferred PAKE algorithms are new and unlikely to be supported in enough places to make pregenerating PAKE shares for them efficient.</t>
          <t>Clients can offer as many PAKEShareEntry values as the number of supported PAKE algorithms it is offering, each representing a single set of PAKE key exchange parameters. For instance, a client might offer shares for several PAKE algorithms. The "pake_message" values for each PAKEShareEntry <bcp14>MUST</bcp14> be generated independently. Clients <bcp14>MUST NOT</bcp14> offer multiple PAKEShareEntry values for the same PAKE algorithm. Clients <bcp14>MUST NOT</bcp14> offer any PAKEShareEntry values for PAKE algorithms not listed in the client’s "pake_algorithms" extension. Servers <bcp14>MAY</bcp14> check for violations of these rules and abort the handshake with an "illegal_parameter" alert if one is violated. In addition, servers <bcp14>MUST</bcp14> verify that (1) the list of client shares to see if there is one with the provided "client_identity" value, and (2) if the "pake_message" contents in the "client_shares" field are valid (e.g., valid group elements). If either of these checks fails, then servers <bcp14>MUST</bcp14> abort the handshake with an "illegal_parameter" alert.</t>
          <t>(2) In a HelloRetryRequest message, the "extension_data" field of this extension contains a "PAKEShareHelloRetryRequest" value:</t>
          <artwork><![CDATA[
  struct {
      PAKEAlgorithm selected_pake_algorithm;
  } PAKEShareHelloRetryRequest;
]]></artwork>
          <t>If a client receives a second HelloRetryRequest in the same connection (i.e., where the ClientHello was itself in response to a HelloRetryRequest), it <bcp14>MUST</bcp14> abort the handshake with an "unexpected_message" alert. Upon receipt of this extension in a HelloRetryRequest, the client <bcp14>MUST</bcp14> verify that (1) the "selected_pake_algorithm" field corresponds to a PAKE algorithm which was provided in the "pake_algorithms" extension in the original ClientHello, and (2) the "selected_pake_algorithm" field does not correspond to a PAKE algorithm which was provided in the "pake_share" extension in the original ClientHello. If either of these checks fails, then the client <bcp14>MUST</bcp14> abort the handshake with an "illegal_parameter" alert. Otherwise, when sending the new ClientHello, the client <bcp14>MUST</bcp14> replace the original "pake_share" extension with one containing only a new PAKEShareEntry for the PAKE algorithm indicated in the "selected_pake_algorithm" field of the triggering HelloRetryRequest.</t>
          <t>(3) In a ServerHello message, the "extension_data" field of this extension contains a PAKEShareServerHello value:</t>
          <artwork><![CDATA[
  struct {
      opaque server_identity<0..2^16-1>;
      PAKEShareEntry server_share;
      PAKEExtension pake_extensions<0..2^16-1>;
  } PAKEShareServerHello;
]]></artwork>
          <t>The "server_identity" field indicates a server's identity used in the PAKE algorithm. The "server_share" field contains a single PAKEShareEntry value that is in the same PAKE algorithm as one of the client’s shares. The "pake_extensions" field indicates a list of PAKE extensions allowed in the structure of PAKEShareServerHello, servers can use this field to send data to clients and provide extended functionality to clients.</t>
          <!-- MUST NOT send an extension of type "key_share", "pre_shared_key", or "early_data", and -->
<t>If using PAKE key establishment, servers offer exactly one PAKEShareEntry in the ServerHello. This value <bcp14>MUST</bcp14> be in the same PAKE algorithm as the PAKEShareEntry value offered by the client that the server has selected for the negotiated PAKE key exchange. Servers <bcp14>MUST NOT</bcp14> send a PAKEShareEntry for any PAKE algorithm not indicated in the client’s "pake_algorithms" extension. If using PAKE key establishment and a HelloRetryRequest containing a "pake_share" extension was received by the client, the client <bcp14>MUST</bcp14> verify that the selected PAKEAlgorithm in the ServerHello is the same as that in the HelloRetryRequest. If this check fails, the client <bcp14>MUST</bcp14> abort the handshake with an "illegal_parameter" alert. In addition, the client <bcp14>MUST</bcp14> verify that (1) the "server_identity" value to see if it is the target server's name, and (2) if the "pake_message" content in the "server_share" field is valid (e.g., a valid group element). If either of these checks fails, then the client <bcp14>MUST</bcp14> abort the handshake with an "illegal_parameter" alert.</t>
          <t>(4) In this document, we define a PAKEExtension structure and three PAKE extension types that <bcp14>SHOULD</bcp14> be used in some PAKE algorithms.</t>
          <artwork><![CDATA[
  enum {
      session_identifier (0),
      nonce (1),
      credential_response (2),
      (255)
  } PAKEExtensionType;
]]></artwork>
          <artwork><![CDATA[
  struct {
      PAKEExtensionType pake_extension_type;
      opaque pake_extension_data<0..2^16-1>;
  } PAKEExtension;
]]></artwork>
          <t>The "session_identifier" extension indicates a unique session identifier of the CPace algorithm (see <xref section="3.1" sectionFormat="of" target="I-D.draft-irtf-cfrg-cpace-12"/>). This extension <bcp14>SHOULD</bcp14> only be presented in the structure of "PAKEShareClientHello" when the CPace algorithm is selected, and <bcp14>MUST NOT</bcp14> be used with other PAKE algorithms that don't need it.</t>
          <t>The "nonce" extension indicates the "client_nonce" value or "server_nonce" value in the OPAQUE algorithm (see <xref section="6.1" sectionFormat="of" target="I-D.draft-irtf-cfrg-opaque-17"/>). This extension <bcp14>SHOULD</bcp14> only be presented in the structure of "PAKEShareClientHello" or "PAKEShareServerHello" when the OPAQUE algorithm is selected, and <bcp14>MUST NOT</bcp14> be used with other PAKE algorithms that don't need it.</t>
          <t>The "pake_extension_data" field of the "credential_response" extension contains a "CredentialResponse" structure without the "evaluated_message" field in the OPAQUE algorithm (see <xref section="6.3.1" sectionFormat="of" target="I-D.draft-irtf-cfrg-opaque-17"/>). This extension <bcp14>SHOULD</bcp14> only be presented in the structure of "PAKEShareServerHello" when the OPAQUE algorithm is negotiated, and <bcp14>MUST NOT</bcp14> be used with other PAKE algorithms that don't need it.</t>
        </section>
        <section anchor="pake-authentication-modes">
          <name>PAKE Authentication Modes</name>
          <t>In order to use PAKE, clients <bcp14>MUST</bcp14> also send a "pake_auth_modes" extension. The semantics of this extension are that the client wants to identify which authentication modes will be used, and its content <bcp14>MAY</bcp14> be multiple authentication modes. The "extension_data" field of this extension contains a "PAKEAuthModes" value:</t>
          <artwork><![CDATA[
  enum {
      pake_auth (0),
      pake_certificate_auth (1),
      (255)
  } PAKEAuthMode;
]]></artwork>
          <artwork><![CDATA[
  struct {
      PAKEAuthMode auth_modes<1..255>;
  } PAKEAuthModes;
]]></artwork>
          <t>The "pake_auth" mode indicates PAKE-only authentication. In this mode, the server <bcp14>MUST NOT</bcp14> send the Certificate, CertificateVerify and CertificateRequest messages. The "pake_certificate_auth" mode indicates PAKE authentication combined with certificate authentication. In this mode, the server <bcp14>MUST</bcp14> send the Certificate and CertificateVerify messages to conduct certificate-based server authentication, and optionally sends the CertificateRequest message if certificate-based client authentication is desired.</t>
          <t>A client <bcp14>MUST</bcp14> provide a "pake_auth_modes" extension if it offers "pake_algorithms" and "pake_share" extensions. If clients offer "pake_algorithms" and "pake_share" without a "pake_auth_modes" extension, servers <bcp14>MUST</bcp14> abort the handshake with an "illegal_parameter" alert. Servers <bcp14>MUST</bcp14> provide only one authentication mode in the "pake_auth_modes" extension to unambiguously identify which mode was selected, but <bcp14>MUST NOT</bcp14> select an authentication mode that is not listed by the client. If servers offer "pake_share" without a "pake_auth_modes" extension, clients <bcp14>MUST</bcp14> abort the handshake with an "illegal_parameter" alert.</t>
        </section>
      </section>
      <section anchor="key-schedule">
        <name>Key Schedule</name>
        <t>Based on the PAKE parameters exchanged in the ClientHello and ServerHello, the client and server execute the negotiated PAKE protocol to derive a PAKE shared secret. This secret is used as the "(EC)DHE" input to the TLS 1.3 key schedule, and the remaining process of the key schedule is unchanged.</t>
      </section>
      <section anchor="authentication-messages">
        <name>Authentication Messages</name>
        <t>In this mechanism, PAKEs are used for both password authentication and key establishment, the derived PAKE shared secret is fed into the TLS 1.3 key schedule, and PAKE-based authentication is finally confirmed by the validation of the Finished message.</t>
        <t>Note that PAKE-based authentication is compatible with server-side certificate authentication. If the client specifies a "pake_auth" mode in the "pake_auth_modes" extension, then the server does not need to send Certificate and CertificateVerify messages, and only needs to send a Finished message to perform server-side PAKE authentication. If the client specifies a "pake_certificate_auth" mode in the "pake_auth_modes" extension, or specifies "pake_auth" and "pake_certificate_auth" modes and the server selects the latter one, then the server needs to send Certificate and CertificateVerify messages to conduct server-side certificate authentication, and send a Finished message to perform server-side PAKE authentication.</t>
        <t>PAKE-based authentication is also compatible with client-side certificate authentication, because the server can optionally send a CertificateRequest message to the client. If the client receives a CertificateRequest message, it needs to send Certificate and CertificateVerify messages to conduct client-side certificate authentication, and send a Finished message to perform client-side PAKE authentication; otherwise only the Finished message needs to be sent.</t>
        <!-- In the CPace protocol {{I-D.draft-irtf-cfrg-cpace-12}}  -->

<!-- # Security Considerations

This document does not introduce any new security considerations. -->

</section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <!-- This document has no IANA actions. -->

<t>This document defines three new TLS extension types "pake_algorithms", "pake_share" and "pake_auths" with the following contents (see <xref target="ref-to-tab1"/>), and requests that IANA add the three values to the "TLS ExtensionType Values" Registry defined in <xref target="RFC8446"/> and <xref target="RFC8447"/>.</t>
      <table anchor="ref-to-tab1">
        <name>New TLS Extension Types</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Extension Name</th>
            <th align="left">TLS 1.3</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD1</td>
            <td align="left">pake_algorithms</td>
            <td align="left">CH, EE</td>
            <td align="left">PRF XXXX</td>
          </tr>
          <tr>
            <td align="left">TBD2</td>
            <td align="left">pake_share</td>
            <td align="left">CH, SH, HRR</td>
            <td align="left">PRF XXXX</td>
          </tr>
          <tr>
            <td align="left">TBD3</td>
            <td align="left">pake_auth_modes</td>
            <td align="left">CH, SH</td>
            <td align="left">PRF XXXX</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC5054">
          <front>
            <title>Using the Secure Remote Password (SRP) Protocol for TLS Authentication</title>
            <author fullname="D. Taylor" initials="D." surname="Taylor"/>
            <author fullname="T. Wu" initials="T." surname="Wu"/>
            <author fullname="N. Mavrogiannopoulos" initials="N." surname="Mavrogiannopoulos"/>
            <author fullname="T. Perrin" initials="T." surname="Perrin"/>
            <date month="November" year="2007"/>
            <abstract>
              <t>This memo presents a technique for using the Secure Remote Password protocol as an authentication method for the Transport Layer Security protocol. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5054"/>
          <seriesInfo name="DOI" value="10.17487/RFC5054"/>
        </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="RFC9383">
          <front>
            <title>SPAKE2+, an Augmented Password-Authenticated Key Exchange (PAKE) Protocol</title>
            <author fullname="T. Taubert" initials="T." surname="Taubert"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes SPAKE2+, a Password-Authenticated Key Exchange (PAKE) protocol run between two parties for deriving a strong shared key with no risk of disclosing the password. SPAKE2+ is an augmented PAKE protocol, as only one party has knowledge of the password. This method is simple to implement, compatible with any prime-order group, and computationally efficient.</t>
              <t>This document was produced outside of the IETF and IRTF and represents the opinions of the authors. Publication of this document as an RFC in the Independent Submissions Stream does not imply endorsement of SPAKE2+ by the IETF or IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9383"/>
          <seriesInfo name="DOI" value="10.17487/RFC9383"/>
        </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>
        <reference anchor="RFC9382">
          <front>
            <title>SPAKE2, a Password-Authenticated Key Exchange</title>
            <author fullname="W. Ladd" initials="W." surname="Ladd"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes SPAKE2, which is a protocol for two parties that share a password to derive a strong shared key without disclosing the password. This method is compatible with any group, is computationally efficient, and has a security proof. This document predated the Crypto Forum Research Group (CFRG) password-authenticated key exchange (PAKE) competition, and it was not selected; however, given existing use of variants in Kerberos and other applications, it was felt that publication was beneficial. Applications that need a symmetric PAKE, but are unable to hash onto an elliptic curve at execution time, can use SPAKE2. This document is a product of the Crypto Forum Research Group in the Internet Research Task Force (IRTF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9382"/>
          <seriesInfo name="DOI" value="10.17487/RFC9382"/>
        </reference>
        <reference anchor="RFC8447">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy. These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-irtf-cfrg-opaque-17">
          <front>
            <title>The OPAQUE Augmented PAKE Protocol</title>
            <author fullname="Daniel Bourdrez" initials="D." surname="Bourdrez">
         </author>
            <author fullname="Hugo Krawczyk" initials="H." surname="Krawczyk">
              <organization>AWS</organization>
            </author>
            <author fullname="Kevin Lewi" initials="K." surname="Lewi">
              <organization>Meta</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <date day="27" month="September" year="2024"/>
            <abstract>
              <t>   This document describes the OPAQUE protocol, an augmented (or
   asymmetric) password-authenticated key exchange (aPAKE) that supports
   mutual authentication in a client-server setting without reliance on
   PKI and with security against pre-computation attacks upon server
   compromise.  In addition, the protocol provides forward secrecy and
   the ability to hide the password from the server, even during
   password registration.  This document specifies the core OPAQUE
   protocol and one instantiation based on 3DH.  This document is a
   product of the Crypto Forum Research Group (CFRG) in the IRTF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-opaque-17"/>
        </reference>
        <reference anchor="I-D.draft-sullivan-tls-opaque-01">
          <front>
            <title>OPAQUE with TLS 1.3</title>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Hugo Krawczyk" initials="H." surname="Krawczyk">
              <organization>IBM Research</organization>
            </author>
            <author fullname="Owen Friel" initials="O." surname="Friel">
              <organization>Cisco</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <date day="22" month="February" year="2021"/>
            <abstract>
              <t>   This document describes two mechanisms for enabling the use of the
   OPAQUE password-authenticated key exchange in TLS 1.3.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sullivan-tls-opaque-01"/>
        </reference>
        <reference anchor="I-D.draft-barnes-tls-pake-04">
          <front>
            <title>Usage of PAKE with TLS 1.3</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Owen Friel" initials="O." surname="Friel">
              <organization>Cisco</organization>
            </author>
            <date day="16" month="July" year="2018"/>
            <abstract>
              <t>   The pre-shared key mechanism available in TLS 1.3 is not suitable for
   usage with low-entropy keys, such as passwords entered by users.
   This document describes an extension that enables the use of
   password-authenticated key exchange protocols with TLS 1.3.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-barnes-tls-pake-04"/>
        </reference>
        <reference anchor="I-D.draft-irtf-cfrg-cpace-12">
          <front>
            <title>CPace, a balanced composable PAKE</title>
            <author fullname="Michel Abdalla" initials="M." surname="Abdalla">
              <organization>Nexus - San Francisco</organization>
            </author>
            <author fullname="Björn Haase" initials="B." surname="Haase">
              <organization>Endress + Hauser Liquid Analysis - Gerlingen</organization>
            </author>
            <author fullname="Julia Hesse" initials="J." surname="Hesse">
              <organization>IBM Research Europe - Zurich</organization>
            </author>
            <date day="26" month="September" year="2024"/>
            <abstract>
              <t>   This document describes CPace which is a protocol that allows two
   parties that share a low-entropy secret (password) to derive a strong
   shared key without disclosing the secret to offline dictionary
   attacks.  The CPace protocol was tailored for constrained devices and
   can be used on groups of prime- and non-prime order.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-cpace-12"/>
        </reference>
      </references>
    </references>
    <?line 294?>

<!-- # Acknowledgements
{:numbered="false"}

The authors would like to thank... -->



  </back>
  <!-- ##markdown-source:
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
PzXWYXscswh/k9GI5e7/ANkp2C5sSwAA

-->

</rfc>
