<?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.6.17 (Ruby 2.7.6) -->


<!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-09" category="exp" submissionType="independent">
  <front>
    <title>The Hashed Token SASL Mechanism</title>

    <author initials="F." surname="Schmaus" fullname="Florian Schmaus">
      <organization>FAU Erlangen-Nürnberg</organization>
      <address>
        <email>flow@cs.fau.de</email>
      </address>
    </author>
    <author initials="C." surname="Egger" fullname="Christoph Egger">
      <organization>FAU Erlangen-Nürnberg</organization>
      <address>
        <email>egger@cs.fau.de</email>
      </address>
    </author>

    <date year="2022" month="November" day="07"/>

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

    <abstract>


<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 for quick re-authentication 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 herin 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>


<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 are supposed 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 requests a new SASL-HT token (see <xref target="requirements-for-the-applicationprotocol-extension">Section 5</xref>).
One example for such an application protocol specific extension based on HT is <xref target="XEP-0397"/>.
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.</t>

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

<t>Because this mechanism transports information that should not be controlled by an attacker, 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 which 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 choice of the channel binding <xref target="RFC5929"/> type.</t>

<t>An HT mechanism name is a string beginning with "HT-" followed by the capitalised 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 capitalised "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 is to be used (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>
</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, send 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 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 as 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> include any further application protocol payload in the early data besides the HT initiator-msg and potential required framing of the SASL profile.
The responder <strong>MUST</strong> abort the SASL authentication if the early data contains additional application protocol payload.</t>

<ul empty="true"><li>
  <t>SASL-HT hence allows exploiting TLS 1.3 early data for "0.5 Round Trip Time (RTT)" resumption 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 the early data could be replayed, and thus needs to carry an idempotent operation.
On the other hand, if the responding entity can verify the early data, then it can send additional application protocol payload together with the "resumption 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 itself 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 initiator was authenticated 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 = 1*OCTET
]]></artwork></figure>

<t>The responder-msg value is defined as follows:</t>

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

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

</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">
  <t>"HT-SHA-256-ENDP", "HT-SHA-256-UNIQ", "HT-SHA-3-512-ENDP" and "HT-SHA-3-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 form of a Unicode string.
The returned token <strong>MUST</strong> have been newly generated by a cryptographically secure random number generator and MUST contain at least 128 bit of entropy.</t>

<t>It is <strong>RECOMMENDED</strong> that the protocol allows the requestor to signal the name of the SASL mechanism which he intends to use with the token.
If a token is used with a different mechanism than the one which was signalled upon requesting the token, then the authentication <strong>MUST</strong> fail.
This 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>To be secure, the HT mechanism <strong>MUST</strong> be used over a TLS channel that has had the session hash extension <xref target="RFC7627"/> negotiated, or session resumption <strong>MUST NOT</strong> have been used.</t>

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

<t>It is of vital importance that the SASL-HT token is generated by a cryptographically secure random generator. See <xref target="RFC4086"/> for more information about Randomness Requirements for Security. In addition, comparison of the client's HMAC with the server's calculated HMAC <strong>SHOULD</strong> be performed using 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 supporting channel binding in environments that can support it.</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='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'>

&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>


    </references>


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

<t>This document benefited from discussions on the KITTEN WG mailing list.
The authors would like to especially thank Thijs Alkemade, Sam Whited and Alexey Melnikov for their comments on this topic.
Furthermore, we would like to thank Alexander Würstlein, who came up with 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>

