<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC4422 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4422.xml">
<!ENTITY RFC5802 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5802.xml">
<!ENTITY RFC6234 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6234.xml">
<!ENTITY RFC7627 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7627.xml">
<!ENTITY RFC4270 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4270.xml">
<!ENTITY RFC5226 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5226.xml">
<!ENTITY RFC6194 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6194.xml">
<!ENTITY RFC5246 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5246.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.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">
]>
<?rfc toc="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes" ?>
<?rfc inline="yes" ?>

<!--Add, if needed: updates="5802"-->
<rfc submissionType="IETF" ipr="trust200902" category="std" consensus="yes" docName="draft-melnikov-scram-sha-512-04">
	<!-- Generated by id2xml 1.5.0 on 2020-05-13T13:43:34Z -->
	<?rfc strict="yes"?>
	<?rfc compact="yes"?>
	<?rfc subcompact="no"?>
	<?rfc symrefs="yes"?>
	<?rfc sortrefs="no"?>
	<?rfc text-list-symbols="o*+-"?>
	<?rfc toc="yes"?>
	<front>
	<title abbrev="SASL SCRAM-SHA-512/SCRAM-SHA-512-PLUS">SCRAM-SHA-512 and SCRAM-SHA-512-PLUS Simple Authentication and Security Layer (SASL) Mechanisms</title>
    <author initials="A." surname="Melnikov" fullname="Alexey Melnikov" role="editor">
      <organization>Isode Ltd</organization>
      <address>
        <postal>
          <street>14 Castle Mews</street>
          <city>Hampton</city>
          <region>Middlesex</region>
          <code>TW12 2NP</code>
          <country>UK</country>
        </postal>
        <email>alexey.melnikov@isode.com</email>
      </address>
    </author>

    <date year="2024"/>
    
	<abstract><t>
   This document registers the Simple Authentication and Security Layer
   (SASL) mechanisms SCRAM-SHA-512 and SCRAM-SHA-512-PLUS.</t>

	</abstract>
	</front>

	<middle>
	<section title="Introduction" anchor="sect-1">
    
   <t>
     This document registers 2 new SASL <xref target="RFC4422"/> mechanisms SCRAM-SHA-512 and SCRAM-SHA-512-PLUS,
     which are variants of Salted Challenge Response Authentication Mechanism (SCRAM) <xref target="RFC5802"/>.
     SHA-512 has stronger security properties than SHA-1,
     and it is expected that SCRAM mechanisms based on it will have
     greater predicted longevity than the SCRAM mechanisms based on SHA-1.</t>

<!--/////Not clear whether this text is still correct
	 <t>
   After publication of <xref target="RFC5802"/>, it was discovered that Transport
   Layer Security (TLS) <xref target="RFC5246"/> does not have the expected properties
   for the "tls-unique" channel binding to be secure <xref target="RFC7627"/>.
   Therefore, this document contains normative text that applies to
   the newly introduced SCRAM-SHA-256-PLUS mechanism.</t>
-->
    
	</section>

	<section title="Key Word Definitions" anchor="sect-2">

   <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
   </t>

	</section>

	<section title="SCRAM-SHA-512 and SCRAM-SHA-512-PLUS" anchor="sect-3">
    
   <t>
   The SCRAM-SHA-512 and SCRAM-SHA-512-PLUS SASL mechanisms are defined
   in the same way that SCRAM-SHA-1 and SCRAM-SHA-1-PLUS are defined in
   <xref target="RFC5802"/>, except that the hash function for HMAC() and H() uses
   SHA-512 instead of SHA-1 <xref target="RFC6234"/>.</t>

	<t>
   For the SCRAM-SHA-512 and SCRAM-SHA-512-PLUS SASL mechanisms, the
   hash iteration-count announced by a server SHOULD be at least 10000.</t>

	<t>
   The GSS-API mechanism OID for SCRAM-SHA-512 is 1.3.6.1.5.5.&lt;TBD&gt; (see
   <xref target="sect-5"/>).</t>

<!--
	<t>
   This is a simple example of a SCRAM-SHA-512 authentication exchange
   when the client doesn't support channel bindings.  The username
   'user' and password 'pencil' are being used.</t>
  -->

  <t>
    [[TBD: Add an example]]
  </t>

<!--/////Need fixing-->
<!--
	<figure><artwork><![CDATA[
C: n,,n=user,r=rOprNGfwEbeRWgbNEkqO

S: r=rOprNGfwEbeRWgbNEkqO%hvYDpWUa2RaTCAfuxFIlj)hNlF$k0,
   s=W22ZaJ0SNY7soEsUEjb6gQ==,i=10000

C: c=biws,r=rOprNGfwEbeRWgbNEkqO%hvYDpWUa2RaTCAfuxFIlj)hNlF$k0,
   p=dHzbZapWIk4jUhN+Ute9ytag9zjfMHgsqmmiz7AndVQ=

S: v=6rriTRBi23WpRR/wtup+mMhUZUn/dB5nLTJRsjl95G4=
]]></artwork>
	</figure>
-->

	</section>

	<section title="Security Considerations" anchor="sec-cons">
    
   <t>
   The security considerations from <xref target="RFC5802"/> still apply.</t>

   <t>
   To be secure, SCRAM-SHA-512-PLUS MUST be
   used over a TLS channel that has had the session hash extension
   <xref target="RFC7627"/> negotiated, or session resumption MUST NOT have been used.
   
   When using SCRAM over TLS 1.2 <xref target="RFC5246"/>, the "tls-unique" channel binding
   is still the default channel binding to use (see Section 6.1 of <xref target="RFC5802"/>),
   assuming the above conditions are satisfied.
   
<!--Text from Sam's draft-ietf-kitten-password-storage:
   However, in the absence of the TLS extended master
   secret fix [RFC7627] and the renegotiation indication TLS extension
   [RFC5746] the tls-unique and tls-server-endpoint channel binding data
   can be forged by an attacker that can MITM the connection.  Before
   advertising a channel binding SASL mechanism, entities MUST ensure
   that both the TLS extended master secret fix and the renegotiation
   indication extension are in place and that the connection has not
   been renegotiated.
-->

   <!--///Should we concentrate on better security properties instead?-->
   As "tls-unique" channel binding is not defined for TLS 1.3 <xref target="RFC8446"/>,
   when using SCRAM over TLS 1.3, the "tls-exporter" channel binding
   <xref target="RFC9266"/> MUST be the default channel binding
   (in the sense specified in Section 6.1 of <xref target="RFC5802"/>) to use.
   </t>

   <t>
   See <xref target="RFC4270"/> and <xref target="RFC6194"/> for reasons to move from SHA-1 to a
   strong security mechanism like SHA-512.
   </t>

   <t>
   The strength of this mechanism is dependent in part on the hash
   iteration-count, as denoted by "i" in <xref target="RFC5802"/>.  As a rule of thumb,
   the hash iteration-count should be such that a modern machine will
   take 0.1 seconds to perform the complete algorithm; however, this is
   unlikely to be practical on mobile devices and other relatively low-
   performance systems.
<!--Update this text based on NIST recommendations and current CPU/GPU speeds-->   
   At the time this was written, the rule of thumb
   gives around 15,000 iterations required; however, a hash iteration-
   count of 10000 takes around 0.5 seconds on current mobile handsets.
   This computational cost can be avoided by caching the ClientKey
   (assuming the Salt and hash iteration-count is stable).  Therefore,
   the recommendation of this specification is that the hash iteration-
   count SHOULD be at least 10000, but careful consideration ought to be
   given to using a significantly higher value, particularly where
   mobile use is less important.
   </t>

	</section>

	<section title="IANA Considerations" anchor="sect-5">
    
   <t>
   IANA is requested to add the following new SASL SCRAM mechanisms
   to the "SASL SCRAM Family Mechanisms" registry:
   </t>

	<t><list style="empty" hangIndent="3">
	<t><list style="hanging" hangIndent="3">
  
  <t hangText="To:">
    iana@iana.org
  </t>
    
  <t hangText="Subject:">
    Registration of a new SASL SCRAM Family mechanism SCRAM-SHA-512
  </t>

  <t hangText="SASL mechanism name (or prefix for the family):">
    SCRAM-SHA-512
  </t>

  <t hangText="Security considerations:">
    <xref target="sec-cons"/> of RFC XXXX
  </t>

  <t hangText="Published specification (optional, recommended):">
    RFC XXXX
  </t>
	 
  <t hangText="Minimum iteration-count:">
    10000
    <!--From:
https://web.archive.org/web/20160624033024/https://pages.nist.gov/800-63-3/sp800-63b.html#memorized-secret-verifier
      -->
  </t>
    
  <t hangText="OID:">
    1.3.6.1.5.5.&lt;TBD&gt;
  </t>
    
  <t hangText="Person &amp; email address to contact for further information:">
    IETF KITTEN WG &lt;kitten@ietf.org&gt;
  </t>
    
  <t hangText="Intended usage:">
    COMMON
  </t>

  <t hangText="Owner/Change controller:">
    IESG &lt;iesg@ietf.org&gt;
  </t>
    
  <t hangText="Note:">
  </t>


    
  <t hangText="To:">
    iana@iana.org
  </t>
    
  <t hangText="Subject:">
    Registration of a new SASL SCRAM Family mechanism SCRAM-SHA-512-PLUS
  </t>

  <t hangText="SASL mechanism name (or prefix for the family):">
    SCRAM-SHA-512-PLUS
  </t>

  <t hangText="Security considerations:">
    <xref target="sec-cons"/> of RFC XXXX
  </t>

  <t hangText="Published specification (optional, recommended):">
    RFC XXXX
  </t>
	 
  <t hangText="Minimum iteration-count:">
    10000
  </t>
    
  <t hangText="OID:">
    1.3.6.1.5.5.&lt;TBD&gt;
  </t>
    
  <t hangText="Person &amp; email address to contact for further information:">
    IETF KITTEN WG &lt;kitten@ietf.org&gt;
  </t>
    
  <t hangText="Intended usage:">
    COMMON
  </t>

  <t hangText="Owner/Change controller:">
    IESG &lt;iesg@ietf.org&gt;
  </t>
    
  <t hangText="Note:">
  </t>


	</list>
	</t>

	</list>
	</t>

	</section>

	</middle>

	<back>
	<references title="Normative References">
 	 &RFC2119;
	 &RFC4422;
   &RFC5246;
	 &RFC5802;
	 &RFC6234;
	 &RFC7627;
   &RFC8174;
   &RFC8446;
   &RFC9266; <!--Channel Bindings for TLS 1.3-->

  </references>
	<references title="Informative References">
	 &RFC4270;
	 &RFC5226;
	 &RFC6194;
	</references>
    
	<section title="Acknowledgements" numbered="no" anchor="acknowledgements">
   
   <t>
   This document is based on RFC 7677 by Tony Hansen.
   </t>

   <t>
   Thank you to Ludovic Bocquet for comments and corrections.
<!--/////
   This document benefited from discussions on the KITTEN WG mailing
   list.  The author would like to specially thank Russ Allbery, Dave
   Cridland, Shawn Emery, Stephen Farrell, Simon Josefsson, Pearl Liang,
   Alexey Melnikov, Peter Saint-Andre, Robert Sparks, Martin Thompson,
   and Nico Williams for their comments on this topic.
-->
   </t>
    
	</section>

	</back>

	</rfc>
	
