<?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 RFC5246 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5246.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 RFC5226 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5226.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">
]>


<rfc ipr="trust200902" docName="draft-schmaus-kitten-sasl-ht-08" 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="October" day="10"/>

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

    <abstract>


<ul empty="true"><li>
  <t>This I-D is developed at <eref target="https://github.com/Flowdalic/xeps/tree/master/draft-schmaus-kitten-sasl-ht"> https://github.com/Flowdalic/xeps/tree/master/draft-schmaus-kitten-sasl-ht</eref></t>
</li></ul>

<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 is secured by channel binding.</t>



    </abstract>



  </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) being secured by 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="RFC5246"/>), 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' and 'UNIQ'.</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', or 'EXPR' 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>

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

<t>If the responder was able to authenticate the initiator, then the used token <strong>MUST</strong> be revoked immediately.</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>

</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.</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="RFC5226"/> 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;
&RFC5246;
&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'>

&RFC5226;
&RFC5802;
&RFC6120;
<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.</t>

</section>


  </back>

<!-- ##markdown-source:
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
5kP1pAzTveC/Ad0zwsSTNQAA

-->

</rfc>

