<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.22 (Ruby 3.2.5) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2104 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2104.xml">
<!ENTITY RFC3629 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3629.xml">
<!ENTITY RFC4086 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4086.xml">
<!ENTITY RFC4422 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4422.xml">
<!ENTITY RFC5056 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5056.xml">
<!ENTITY RFC5234 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml">
<!ENTITY RFC5280 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5929 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5929.xml">
<!ENTITY RFC6125 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6125.xml">
<!ENTITY RFC6920 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6920.xml">
<!ENTITY RFC7627 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7627.xml">
<!ENTITY RFC8446 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC9266 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9266.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC5802 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5802.xml">
<!ENTITY RFC6120 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6120.xml">
<!ENTITY RFC8126 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
]>


<rfc ipr="trust200902" docName="draft-schmaus-kitten-sasl-ht-10" category="exp" submissionType="independent">
  <front>
    <title>The Hashed Token SASL Mechanism</title>

    <author initials="F." surname="Schmaus" fullname="Florian Schmaus">
      <organization>Friedrich-Alexander-Universität Erlangen-Nürnberg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>flow@cs.fau.de</email>
      </address>
    </author>
    <author initials="C." surname="Egger" fullname="Christoph Egger">
      <organization>Chalmers University of Technology</organization>
      <address>
        <postal>
          <country>Sweden</country>
        </postal>
        <email>christoph.egger@chalmers.se</email>
      </address>
    </author>

    <date year="2025" month="January" day="30"/>

    <area>Internet</area>
    <workgroup>Common Authentication Technology Next Generation</workgroup>
    

    <abstract>


<?line 72?>

<t>This document specifies the family of Hashed Token SASL mechanisms which enable a proof-of-possession-based authentication scheme and are meant to be used to quickly re-authenticate of a previous session.
The Hashed Token SASL mechanism's authentication sequence consists of only one round-trip.
The usage of short-lived, exclusively ephemeral hashed tokens is achieving the single round-trip property.
The SASL mechanism specified herein further provides hash agility, mutual authentication and support for channel binding.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-schmaus-kitten-sasl-ht/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/flowdalic/xeps/tree/master/draft-schmaus-kitten-sasl-ht"/>.</t>
    </note>


  </front>

  <middle>


<?line 79?>

<section anchor="introduction"><name>Introduction</name>

<t>This specification describes the family of Hashed Token (HT) Simple Authentication and Security Layer (SASL) <xref target="RFC4422"/> mechanisms, which enable a proof-of-possession-based authentication scheme.
The HT mechanism is designed to be used with short-lived, exclusively ephemeral tokens, called SASL-HT tokens, and allow for quick, one round-trip re-authentication of a previous session.</t>

<t>Further properties of the HT mechanism are 1) hash agility, 2) mutual authentication, and 3) support for channel binding.</t>

<t>Clients should to request SASL-HT tokens from the server after being authenticated using a "strong" SASL mechanism like SCRAM <xref target="RFC5802"/>.
Hence a typical sequence of actions using HT may look like the following:</t>

<figure name="Example sequence using the Hashed Token (HT) SASL mechanism"><artwork><![CDATA[
A) Client authenticates using a strong mechanism (e.g., SCRAM)
B) Client requests secret SASL-HT token
C) Service returns SASL-HT token
   <normal client-server interaction here>
D) Connection between client and server gets interrupted,
   for example because of a WiFi ↔ GSM switch
E) Client resumes the previous session using HT and token from C)
F) Service revokes the successfully used SASL-HT token
   [goto B]
]]></artwork></figure>

<t>The HT mechanism requires an accompanying, application-protocol-specific extension, which allows clients to request a new SASL-HT token (see <xref target="requirements-for-the-applicationprotocol-extension">Section 5</xref>).
Examples of such an application-protocol-specific extension based on HT are <xref target="XEP-0397"/> and <xref target="XEP-0484"/>.
This XMPP <xref target="RFC6120"/> extension protocol allows, amongst other things, B) and C),</t>

<t>Since the SASL-HT token is not salted, and only one hash iteration is used, the HT mechanism is not suitable to protect long-lived shared secrets (e.g., "passwords").
You may want to look at <xref target="RFC5802"/> for that.</t>

<section anchor="conventions-and-terminology"><name>Conventions and 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.
These words may also appear in this document in
lower case as plain English words, absent their normative meanings.
<?line -8?></t>

</section>
<section anchor="applicability"><name>Applicability</name>

<t>Because this mechanism transports information that an attacker should not control, the HT mechanism <strong>MUST</strong> only be used over channels protected by Transport Layer Security (TLS, see <xref target="RFC8446"/>) or over similar integrity-protected and authenticated channels.
Also, the application-protcol-specific extension that requests a new SASL-HT token <strong>SHOULD</strong> only be used over similarly protected channels.</t>

<t>Also, when TLS is used, the client <strong>MUST</strong> successfully validate the server's certificate (<xref target="RFC5280"/>, <xref target="RFC6125"/>).</t>

<t>The family of HT mechanisms is not applicable for proxy authentication since they can not carry an authorization identity string (authzid).</t>

</section>
</section>
<section anchor="the-ht-family-of-mechanisms"><name>The HT Family of Mechanisms</name>

<t>Each mechanism in this family differs by choice of the hash algorithm and the selection of the channel binding <xref target="RFC5929"/> type.</t>

<t>An HT mechanism name is a string beginning with "HT-" followed by the capitalized name of the used hash, followed by "-", and suffixed by one of 'ENDP', 'UNIQ', 'EXPR' or 'NONE'.</t>

<t>Hence, each HT mechanism has a name of the following form:</t>

<figure><artwork><![CDATA[
HT-<hash-alg>-<cb-type>
]]></artwork></figure>

<t>Where &lt;hash-alg&gt; is the capitalized "Hash Name String" of the IANA "Named Information Hash Algorithm Registry" <xref target="iana-hash-alg"/> as specified in <xref target="RFC6920"/>, and &lt;cb-type&gt; is one of 'ENDP', 'UNIQ', 'EXPR' or 'NONE' denoting the channel binding type.
In the case of 'ENDP', the tls-server-end-point channel binding type is used.
In the case of 'UNIQ', the tls-unique channel binding type is used.
In the case of 'EXPR', the tls-exporter <xref target="RFC9266"/> channel binding type is used.
Valid channel binding types are defined in the IANA "Channel-Binding Types" registry <xref target="iana-cbt"/> as specified in <xref target="RFC5056"/>.</t>

<t>In the special case of 'NONE' no channel binding will be used.
In this case, cb-data is to be an empty string.</t>

<texttable title="Mapping of cb-type to Channel Binding Types">
      <ttcol align='left'>cb-type</ttcol>
      <ttcol align='left'>Channel Binding Type</ttcol>
      <c>ENDP</c>
      <c>tls-server-end-point</c>
      <c>UNIQ</c>
      <c>tls-unique</c>
      <c>EXPR</c>
      <c>tls-exporter</c>
      <c>NONE</c>
      <c><em>No</em> Channel Binding</c>
</texttable>

<t>The following table lists some examples of HT SASL mechanisms registered by this document.</t>

<texttable title="Examples of HT SASL mechanisms">
      <ttcol align='left'>Mechanism Name</ttcol>
      <ttcol align='left'>HT Hash Algorithm</ttcol>
      <ttcol align='left'>Channel-binding unique prefix</ttcol>
      <c>HT-SHA-512-ENDP</c>
      <c>SHA-512</c>
      <c>tls-server-end-point</c>
      <c>HT-SHA-512-UNIQ</c>
      <c>SHA-512</c>
      <c>tls-unique</c>
      <c>HT-SHA3-512-ENDP</c>
      <c>SHA3-512</c>
      <c>tls-server-end-point</c>
      <c>HT-SHA-256-UNIQ</c>
      <c>SHA-256</c>
      <c>tls-unique</c>
      <c>HT-SHA-256-NONE</c>
      <c>SHA-256</c>
      <c>N/A</c>
</texttable>

</section>
<section anchor="the-ht-authentication-exchange"><name>The HT Authentication Exchange</name>

<t>The mechanism consists of a simple exchange of precisely two messages between the initiator and responder.</t>

<t>The following syntax specifications use the Augmented Backus-Naur form (ABNF) notation as specified in <xref target="RFC5234"/>.</t>

<section anchor="initiator-first-message"><name>Initiator First Message</name>

<t>The HT mechanism starts with the initiator-msg, which is sent by the initiator to the responder.
The following lists the ABNF grammar for the initiator-msg:</t>

<figure><artwork><![CDATA[
initiator-msg = authcid NUL initiator-hashed-token
authcid = 1*SAFE ; MUST accept up to 255 octets
initiator-hashed-token = 1*OCTET

NUL    = %0x00 ; The null octet
SAFE   = UTF1 / UTF2 / UTF3 / UTF4
         ;; any UTF-8 encoded Unicode character except NUL

UTF1   = %x01-7F ;; except NUL
UTF2   = %xC2-DF UTF0
UTF3   = %xE0 %xA0-BF UTF0 / %xE1-EC 2(UTF0) /
         %xED %x80-9F UTF0 / %xEE-EF 2(UTF0)
UTF4   = %xF0 %x90-BF 2(UTF0) / %xF1-F3 3(UTF0) /
         %xF4 %x80-8F 2(UTF0)
UTF0   = %x80-BF
]]></artwork></figure>

<t>The initiator's first message starts with the authentication identity (authcid, see<xref target="RFC4422"/>) as UTF-8 <xref target="RFC3629"/> encoded string.
It is followed by initiator-hashed-token separated by a single null octet.</t>

<t>The value of the initiator-hashed-token is defined as follows:</t>

<figure><artwork><![CDATA[
initiator-hashed-token := HMAC(token, "Initiator" || cb-data)
]]></artwork></figure>

<t>HMAC() is the function defined in <xref target="RFC2104"/> with H being the selected HT hash algorithm, 'cb-data' represents the data provided by the selected channel binding type, and 'token' are the UTF-8 encoded octets of the SASL-HT token string, which acts as a shared secret between initiator and responder.</t>

<t>The initiator-msg <strong>MAY</strong> be included in TLS 1.3 0-RTT early data, as specified in <xref target="RFC8446"/>.
If this is the case, then the initiating entity <strong>MUST NOT</strong> contain any further application protocol payload in the early data besides the HT initiator-msg and potentially required framing of the SASL profile.
The responder <strong>MUST</strong> abort the SASL authentication if the early data contains an additional application-protocol payload.</t>

<ul empty="true"><li>
  <t>SASL-HT allows exploiting TLS 1.3 early data for "0.5 Round Trip Time (RTT)" re-authentication of the application protocol's session.
Using TLS early data requires extra care when implementing: The early data should only contain the SASL-HT payload, i.e., the initiator-msg, and not an application-protocol-specific payload.
The reason for this is that another entity could replay the early data.
Therefore, the early data needs must represent an idempotent operation.
On the other hand, if the responding entity can verify the early data, it can send an additional application-protocol-specific payload together with the "re-authentication successful" response to the initiating entity.</t>
</li></ul>

</section>
<section anchor="initiator-authentication"><name>Initiator Authentication</name>

<t>Upon receiving the initiator-msg, the responder calculates the value of initiator-hashed-token and compares it with the received value found in the initiator-msg.
If both values are equal, then the initiator has been successfully authenticated.
Otherwise, if both values are not equal, then authentication <strong>MUST</strong> fail.</t>

</section>
<section anchor="final-responder-message"><name>Final Responder Message</name>

<t>After the responder authenticated the initiator, the responder continues the SASL authentication by sending the responder-msg to the initiator.</t>

<t>The ABNF for responder-msg is:</t>

<figure><artwork><![CDATA[
responder-msg = success-response / error-response
success-response = NUL 1*OCTET
failure-response = %x01 1*SAFE
]]></artwork></figure>

<section anchor="success-response"><name>Success Response</name>

<t>The success-response value is defined as follows:</t>

<figure><artwork><![CDATA[
success-response := NUL HMAC(token, "Responder" || cb-data)
]]></artwork></figure>

<t>A success response starts with an octet whose value is set to zero (null), followed by the octet string of the result of the HMAC  function.</t>

<t>The initiating entity <strong>MUST</strong> verify the responder-msg to achieve mutual authentication.</t>

</section>
<section anchor="failure-response"><name>Failure Response</name>

<t>The failure-response value is defined as follows:</t>

<figure><artwork><![CDATA[
failure-response := %x01 <failure-description>
failure-description = "unknown-user" /
                      "invalid-token" /
                      "other-error"/
                      failure-description-ext
failure-description-ext = <additional custom failure reasons>
]]></artwork></figure>

<t>A failure response starts with an octet whose value is set to one (0x01), followed by an an octet string describing the reason for the failure.</t>

<t>Unrecognized failure descriptions should be treated as "other-error".
The responder may substitute the actual failure cause with "other-error" to prevent information disclosure.</t>

</section>
</section>
</section>
<section anchor="compliance-with-sasl-mechanism-requirements"><name>Compliance with SASL Mechanism Requirements</name>

<t>This section describes compliance with SASL mechanism requirements specified in Section 5 of <xref target="RFC4422"/>.</t>

<t><list style="numbers" type="1">
  <t>"HT-SHA-256-ENDP", "HT-SHA-256-UNIQ", "HT-SHA3-512-ENDP", "HT-SHA3-512-UNIQ", ….</t>
  <t>Definition of server-challenges and client-responses:
a)  HT is a client-first mechanism.
b)  HT does send additional data with success (the responder-msg).</t>
  <t>HT is not capable of transferring authorization identities from the client to the server.</t>
  <t>HT does not offer any security layers (HT offers channel binding instead).</t>
  <t>HT does not protect the authorization identity.</t>
</list></t>

</section>
<section anchor="requirements-for-the-applicationprotocol-extension"><name>Requirements for the Application-Protocol Extension</name>

<t>It is <strong>REQUIRED</strong> that the application-protocol-specific extension provides a mechanism to request a SASL-HT token in the form of a Unicode string.
The returned token <strong>MUST</strong> have been newly generated by a cryptographically secure random number generator, and it MUST contain at least 128 bits of entropy.</t>

<t>It is <strong>RECOMMENDED</strong> that the protocol allows the requestor to signal the name of the SASL mechanism that he intends to use with the token.
If a token is used with a mechanism different from the one signaled upon requesting the token, then the authentication <strong>MUST</strong> fail.
This requirement allows pinning the token to a SASL mechanism, which increases the security because it makes it impossible for an attacker to downgrade the SASL mechanism.</t>

<t>It is <strong>RECOMMENDED</strong> that the protocol defines a way for a client to request rotation or revocation of a token.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The HT mechanism <strong>MUST</strong> be used over a TLS channel that has the session hash extension <xref target="RFC7627"/> negotiated.</t>

<t>It is <strong>RECOMMENDED</strong> that implementations periodically require a full authentication using a strong SASL mechanism that does not use the SASL-HT token.</t>

<t>A cryptographically secure random generator must generate the SASL-HT token.
See <xref target="RFC4086"/> for more information about Randomness Requirements for Security. 
In addition, a comparison of the initiator's HMAC with the responder's calculated HMAC <strong>SHOULD</strong> be performed via constant-time comparison functions to protect against timing attacks.</t>

<t>The tokens used with HT mechanisms <strong>SHOULD</strong> have a limited lifetime, e.g., based on usage count or time elapsed since issuance.</t>

<t>Due to the additional security properties afforded by channel binding, it is <strong>RECOMMENDED</strong> that clients use HT mechanisms with channel binding whenever possible.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>IANA is requested to add the following family of SASL mechanisms to the SASL Mechanism registry established by <xref target="RFC4422"/>:</t>

<ul empty="true"><li>
  <t>To: iana@iana.org</t>

  <t>Subject: Registration of a new SASL family HT</t>

  <t>SASL mechanism name (or prefix for the family): HT-*</t>

  <t>Security considerations:
  <xref target="security-considerations"></xref> of draft-schmaus-kitten-sasl-ht</t>

  <t>Published specification (optional, recommended):
  draft-schmaus-kitten-sasl-ht-XX (TODO)</t>

  <t>Person &amp; email address to contact for further information:
IETF SASL WG <eref target="mailto:kitten@ietf.org">kitten@ietf.org</eref></t>

  <t>Intended usage: COMMON</t>

  <t>Owner/Change controller: IESG <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></t>

  <t>Note: Members of this family MUST be explicitly registered
using the "IETF Review" <xref target="RFC8126"/> registration procedure.
Reviews MUST be requested on the Kitten WG mailing list
<eref target="mailto:kitten@ietf.org">kitten@ietf.org</eref> (or a successor designated by the responsible
Security AD).</t>
</li></ul>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

&RFC2104;
&RFC3629;
&RFC4086;
&RFC4422;
&RFC5056;
&RFC5234;
&RFC5280;
&RFC5929;
&RFC6125;
&RFC6920;
&RFC7627;
&RFC8446;
&RFC9266;
<reference anchor="iana-hash-alg" target="https://www.iana.org/assignments/named-information/named-information.xhtml#hash-alg">
  <front>
    <title>IANA Named Information Hash Algorithm Registry</title>
    <author initials="N." surname="Williams" fullname="Nicolas Williams">
      <organization>IANA</organization>
    </author>
    <date year="2010"/>
  </front>
</reference>
<reference anchor="iana-cbt" target="https://www.iana.org/assignments/channel-binding-types/channel-binding-types.xhtml">
  <front>
    <title>IANA Channel-Binding Types</title>
    <author initials="N." surname="Williams" fullname="Nicolas Williams">
      <organization>IANA</organization>
    </author>
    <date year="2010"/>
  </front>
</reference>
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References' anchor="sec-informative-references">

&RFC5802;
&RFC6120;
&RFC8126;
<reference anchor="XEP-0397" target="https://xmpp.org/extensions/xep-0397.html">
  <front>
    <title>XEP-0397: Instant Stream Resumption</title>
    <author initials="F." surname="Schmaus" fullname="Florian Schmaus">
      <organization></organization>
    </author>
    <date year="2018" month="November" day="03"/>
  </front>
</reference>
<reference anchor="XEP-0484" target="https://xmpp.org/extensions/xep-0484.html">
  <front>
    <title>XEP-0484: Fast Authentication Streamlining Tokens</title>
    <author initials="M." surname="Wild" fullname="Matthew Wild">
      <organization></organization>
    </author>
    <date year="2024" month="June" day="30"/>
  </front>
</reference>


    </references>

</references>


<?line 337?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>This document benefited from discussions on the KITTEN WG mailing list.
The authors especially thank Thijs Alkemade, Sam Whited, and Alexey Melnikov for their comments.
Furthermore, we would like to thank Alexander Würstlein, who devised the idea to pin the token to a SASL mechanism for increased security.
And last but not least, thanks to Matthew Wild for working on the -NONE variant of SASL-HT.</t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

