<?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.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-guo-krb-spake-2fa-02" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Kerberos SPAKE 2FA">Kerberos SPAKE with Two-Factor Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-guo-krb-spake-2fa-02"/>
    <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>
    <author initials="Y." surname="Li" fullname="Yong Li">
      <organization>Huawei Technologies</organization>
      <address>
        <email>Yong.Li1@huawei.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="27"/>
    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>keyword1</keyword>
    <keyword>keyword2</keyword>
    <keyword>keyword3</keyword>
    <abstract>
      <?line 54?>

<t>This document defines a new two-factor authentication mechanism for the Kerberos SPAKE pre-authentication. The mechanism uses the time-based one-time password (TOTP) as a second factor, and combines it with the password factor in a more secure way, which can prevent attackers from both impersonating Kerberos clients and obtaining TGTs' session keys in case of any factor leakage.</t>
    </abstract>
  </front>
  <middle>
    <?line 58?>

<section anchor="intro">
      <name>Introduction</name>
      <t>A password-derived long-term key is commonly used in the Kerberos <xref target="RFC4120"/> pre-authentication stage to protect messages exchanged between a Kerberos client and a Key Distribution Center (KDC). As noted in <xref section="10" sectionFormat="of" target="RFC4120"/>, an attacker can mount brute-force password attacks via eavesdropping a legitimate credential returned by the KDC or a legitimate authentication message sent by the client, which are both encrypted by the long-term key.</t>
      <t>A Kerberos SPAKE pre-authentication mechanism is proposed in <xref target="RFC9588"/>, it uses a simple password-authenticated key exchange (SPAKE) <xref target="RFC9382"/> to protect against brute-force password attacks, and additionally enables two-factor authentication (2FA). For example, the second-factor (SF) authentication may include one-time passwords, challenge/response signatures, and biometric data. As suggested in <xref section="1.3" sectionFormat="of" target="RFC9588"/>, the SF authentication data can be first encrypted using the key established by the SPAKE and then securely transferred from the client to the KDC for verification, where the password verification happens implicitly by a successful decryption of the SF authentication data.</t>
      <t>However, this 2FA methodology does not achieve the security of true two-factor authentication, which requires that the compromise of any factor will not affect the security of whole 2FA protocol. More specifically, in case of password leakage, an attacker can use the leaked password to successfully perform a man-in-the-middle (MITM) attack against the Kerberos SPAKE, i.e., the client establishes a Kerberos SPAKE session A with the attacker and the attacker establishes a Kerberos SPAKE session B with the KDC. In this case, the attacker can obtain the SF authentication data in plaintext from the session A, and can use it as a valid second-factor in session B. Therefore, only the password factor allows the attacker to pass the KDC's two-factor authentication.</t>
      <t>To remedy the above problem, this document defines a new two-factor authentication mechanism for the Kerberos SPAKE pre-authentication, which uses the widely deployed time-based one-time password (TOTP) <xref target="RFC6238"/> as a second factor. The mechanism combines the second factor with the password factor in the following way: the resulting TOTP value is combined with the password-derived long-term key to derive a shared secret, which will be used as an input of the SPAKE algorithm. Therefore, the password and the TOTP value are both protected by the SPAKE to defend against brute-force attacks and required to compute the SPAKE result, and the final encryption keys contain the entropy of both factors.</t>
      <t>As a result, if an attacker compromises either of factors, it also needs to obtain another factor's authentication data to derive the final encryption keys, which are necessary to pass the two-factor authentication or obtain the TGT's session key. But this is hard to do if the authentication of another factor is still secure.</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?>

<!-- This document refers to numerous terms and protocol messages defined in {{RFC4120}}. -->

<t>The terms "encryption type" and "random-to-key" are defined in <xref target="RFC3961"/>.</t>
      <!-- The terms "FAST", "PA-FX-COOKIE", "KDC_ERR_PREAUTH_EXPIRED", "KDC_ERR_MORE_PREAUTH_DATA_REQUIRED", "KDC_ERR_PREAUTH_FAILED", "pre-authentication facility", and "authentication set" are defined in {{RFC6113}}. -->

</section>
    <section anchor="kerberos-spake-pre-authentication-with-second-factor-totp">
      <name>Kerberos SPAKE Pre-authentication with Second-Factor TOTP</name>
      <section anchor="two-factor-authentication-overview">
        <name>Two-Factor Authentication Overview</name>
        <t>The SPAKE algorithm combined with the TOTP algorithm can be generally described in the following steps:</t>
        <ul spacing="normal">
          <li>
            <t>Calculation of a shared TOTP value.</t>
          </li>
          <li>
            <t>Calculation of an update reply key from the initial reply key and the TOTP value.</t>
          </li>
          <li>
            <t>Calculation and exchange of the public key using the update reply key.</t>
          </li>
          <li>
            <t>Calculation of a shared SPAKE result (K).</t>
          </li>
          <li>
            <t>Derivation of an encryption key (K').</t>
          </li>
          <li>
            <t>Verification of the derived encryption key (K').</t>
          </li>
        </ul>
        <t>In this mechanism, key verification happens implicitly by a successful decryption of the SF challenge data specific to the second-factor TOTP.</t>
      </section>
      <section anchor="introduction-of-the-totp-algorithm">
        <name>Introduction of the TOTP Algorithm</name>
        <t>As defined in <xref target="RFC4226"/>, the HOTP algorithm is based on the HMAC-SHA-1 algorithm and is computed as follows:</t>
        <artwork><![CDATA[
HOTP(K, C) = Truncate(HMAC-SHA-1(K, C))
]]></artwork>
        <t>where K and C represent the shared secret and counter value, and Truncate represents the function that can convert an HMAC-SHA-1 value into an HOTP value; see <xref target="RFC4226"/> for detailed definitions.</t>
        <t>Recall that in <xref target="RFC6238"/>, the TOTP algorithm is defined as TOTP = HOTP(K, T), where T is an integer and represents the number of time steps between the initial counter time T0 (default value is 0, i.e., the Unix epoch) and the current Unix time. Note that TOTP implementations <bcp14>MAY</bcp14> use HMAC-SHA-256 or HMAC-SHA-512 functions, please refer to  <xref section="1.2" sectionFormat="of" target="RFC6238"/>.</t>
      </section>
      <section anchor="definition-of-the-second-factor-totp">
        <name>Definition of the Second-Factor TOTP</name>
        <t>Recall that in <xref section="4.2" sectionFormat="of" target="RFC9588"/>, each second factor is represented by a SPAKESecondFactor.</t>
        <artwork><![CDATA[
SPAKESecondFactor ::= SEQUENCE {
  type    [0] Int32,
  data    [1] OCTET STRING OPTIONAL
}
]]></artwork>
        <t>The type field is a unique integer that identifies the second-factor type, and the data field contains optional challenge data.</t>
        <t>This document defines the type as an integer <tt>2</tt> to identify the second-factor TOTP, and defines the data as a random nonce whose length <bcp14>SHOULD</bcp14> match the multiplier length of the negotiated group, where the multiplier length is defined in <xref section="12.2" sectionFormat="of" target="RFC9588"/>.</t>
        <!-- It is recommended that the HMAC function used in the TOTP algorithm SHOULD be based on the hash function of the negotiated group, where the hash function is defined in {{Section 12.2 of RFC9588}}. -->

</section>
    </section>
    <section anchor="spake-parameters-and-conversions">
      <name>SPAKE Parameters and Conversions</name>
      <t>Note that the TOTP value is a low-entropy secret, so it can also be protected by the SPAKE to protect against brute-force attacks. More specifically, an update reply key is produced from the initial reply key and the TOTP value as follows, which is used as an input to the SPAKE.</t>
      <ul spacing="normal">
        <li>
          <t>A pepper string is generated by concatenating the string "SF-TOTP" and the TOTP value as an octet string.</t>
        </li>
        <li>
          <t>An octet string is derived using PRF+(initial-reply-key, pepper), where PRF+ is defined in <xref section="5.1" sectionFormat="of" target="RFC6113"/>.</t>
        </li>
        <li>
          <t>An update reply key is produced from the octet string using the random-to-key function, which has the same encryption type as the initial reply key.</t>
        </li>
      </ul>
      <t>The SPAKE algorithm requires a shared secret input <tt>w</tt> to be used as a scalar multiplier. Similar to the computation in <xref section="5" sectionFormat="of" target="RFC9588"/>, this value <bcp14>MUST</bcp14> be produced from the update reply key as follows:</t>
      <ul spacing="normal">
        <li>
          <t>Determine the length of the multiplier octet string as defined in the "Kerberos SPAKE Groups" registry (see <xref section="12.2" sectionFormat="of" target="RFC9588"/>).</t>
        </li>
        <li>
          <t>Compose a pepper string by concatenating the string "SPAKEsecret" and the group number as a big-endian four-byte two's complement binary number.</t>
        </li>
        <li>
          <t>Produce an octet string of the required length using PRF+(update-reply-key, pepper), where PRF+ is as defined in <xref section="5.1" sectionFormat="of" target="RFC6113"/>.</t>
        </li>
        <li>
          <t>Convert the octet string to a multiplier scalar using the multiplier conversion method defined in the "Kerberos SPAKE Groups" registry (see <xref section="12.2" sectionFormat="of" target="RFC9588"/>).</t>
        </li>
      </ul>
    </section>
    <section anchor="key-derivation">
      <name>Key Derivation</name>
      <t>The 2FA protocol requires encryption keys to be used for client verification and TGT issuance. Similar to the computation in <xref section="7" sectionFormat="of" target="RFC9588"/>, the key K'[n] is computed as follows:</t>
      <ul spacing="normal">
        <li>
          <t>The key K'[n] has the same encryption type as the update reply key, and has the value KRB-FX-CF2(update-reply-key, intermediate-key, "SPAKE", "keyderiv"), where KRB-FX-CF2 is defined in <xref section="5.1" sectionFormat="of" target="RFC6113"/>.</t>
        </li>
      </ul>
      <t>Note that the update reply key and the intermediate key both contain the entropy of the password and TOTP factors.</t>
      <!-- # Security Considerations

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

</section>
    <section anchor="second-factor-types">
      <name>Second-Factor Types</name>
      <t>This document defines one second-factor type:</t>
      <artwork><![CDATA[
SF-TOTP  2
]]></artwork>
      <t>This second-factor type indicates that the TOTP second factor is used.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <!-- This document has no IANA actions. -->

<t>This document defines a new second-factor type "SF-TOTP" with the following contents, and requests that IANA add it to the "Kerberos Second-Factor Types" Registry defined in <xref target="RFC9588"/>.</t>
      <artwork><![CDATA[
ID Number: 2
Name: SF-TOTP
Reference: This document (RFC XXXX).
]]></artwork>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC4120">
        <front>
          <title>The Kerberos Network Authentication Service (V5)</title>
          <author fullname="C. Neuman" initials="C." surname="Neuman"/>
          <author fullname="T. Yu" initials="T." surname="Yu"/>
          <author fullname="S. Hartman" initials="S." surname="Hartman"/>
          <author fullname="K. Raeburn" initials="K." surname="Raeburn"/>
          <date month="July" year="2005"/>
          <abstract>
            <t>This document provides an overview and specification of Version 5 of the Kerberos protocol, and it obsoletes RFC 1510 to clarify aspects of the protocol and its intended use that require more detailed or clearer explanation than was provided in RFC 1510. This document is intended to provide a detailed description of the protocol, suitable for implementation, together with descriptions of the appropriate use of protocol messages and fields within those messages. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4120"/>
        <seriesInfo name="DOI" value="10.17487/RFC4120"/>
      </reference>
      <reference anchor="RFC9588">
        <front>
          <title>Kerberos Simple Password-Authenticated Key Exchange (SPAKE) Pre-authentication</title>
          <author fullname="N. McCallum" initials="N." surname="McCallum"/>
          <author fullname="S. Sorce" initials="S." surname="Sorce"/>
          <author fullname="R. Harwood" initials="R." surname="Harwood"/>
          <author fullname="G. Hudson" initials="G." surname="Hudson"/>
          <date month="August" year="2024"/>
          <abstract>
            <t>This document defines a new pre-authentication mechanism for the Kerberos protocol. The mechanism uses a password-authenticated key exchange (PAKE) to prevent brute-force password attacks, and it may incorporate a second factor.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9588"/>
        <seriesInfo name="DOI" value="10.17487/RFC9588"/>
      </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="RFC6238">
        <front>
          <title>TOTP: Time-Based One-Time Password Algorithm</title>
          <author fullname="D. M'Raihi" initials="D." surname="M'Raihi"/>
          <author fullname="S. Machani" initials="S." surname="Machani"/>
          <author fullname="M. Pei" initials="M." surname="Pei"/>
          <author fullname="J. Rydell" initials="J." surname="Rydell"/>
          <date month="May" year="2011"/>
          <abstract>
            <t>This document describes an extension of the One-Time Password (OTP) algorithm, namely the HMAC-based One-Time Password (HOTP) algorithm, as defined in RFC 4226, to support the time-based moving factor. The HOTP algorithm specifies an event-based OTP algorithm, where the moving factor is an event counter. The present work bases the moving factor on a time value. A time-based variant of the OTP algorithm provides short-lived OTP values, which are desirable for enhanced security.</t>
            <t>The proposed algorithm can be used across a wide range of network applications, from remote Virtual Private Network (VPN) access and Wi-Fi network logon to transaction-oriented Web applications. The authors believe that a common and shared algorithm will facilitate adoption of two-factor authentication on the Internet by enabling interoperability across commercial and open-source implementations. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6238"/>
        <seriesInfo name="DOI" value="10.17487/RFC6238"/>
      </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="RFC3961">
        <front>
          <title>Encryption and Checksum Specifications for Kerberos 5</title>
          <author fullname="K. Raeburn" initials="K." surname="Raeburn"/>
          <date month="February" year="2005"/>
          <abstract>
            <t>This document describes a framework for defining encryption and checksum mechanisms for use with the Kerberos protocol, defining an abstraction layer between the Kerberos protocol and related protocols, and the actual mechanisms themselves. The document also defines several mechanisms. Some are taken from RFC 1510, modified in form to fit this new framework and occasionally modified in content when the old specification was incorrect. New mechanisms are presented here as well. This document does NOT indicate which mechanisms may be considered "required to implement". [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="3961"/>
        <seriesInfo name="DOI" value="10.17487/RFC3961"/>
      </reference>
      <reference anchor="RFC6113">
        <front>
          <title>A Generalized Framework for Kerberos Pre-Authentication</title>
          <author fullname="S. Hartman" initials="S." surname="Hartman"/>
          <author fullname="L. Zhu" initials="L." surname="Zhu"/>
          <date month="April" year="2011"/>
          <abstract>
            <t>Kerberos is a protocol for verifying the identity of principals (e.g., a workstation user or a network server) on an open network. The Kerberos protocol provides a facility called pre-authentication. Pre-authentication mechanisms can use this facility to extend the Kerberos protocol and prove the identity of a principal.</t>
            <t>This document describes a more formal model for this facility. The model describes what state in the Kerberos request a pre-authentication mechanism is likely to change. It also describes how multiple pre-authentication mechanisms used in the same request will interact.</t>
            <t>This document also provides common tools needed by multiple pre-authentication mechanisms. One of these tools is a secure channel between the client and the key distribution center with a reply key strengthening mechanism; this secure channel can be used to protect the authentication exchange and thus eliminate offline dictionary attacks. With these tools, it is relatively straightforward to chain multiple authentication mechanisms, utilize a different key management system, or support a new key agreement algorithm. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6113"/>
        <seriesInfo name="DOI" value="10.17487/RFC6113"/>
      </reference>
      <reference anchor="RFC4226">
        <front>
          <title>HOTP: An HMAC-Based One-Time Password Algorithm</title>
          <author fullname="D. M'Raihi" initials="D." surname="M'Raihi"/>
          <author fullname="M. Bellare" initials="M." surname="Bellare"/>
          <author fullname="F. Hoornaert" initials="F." surname="Hoornaert"/>
          <author fullname="D. Naccache" initials="D." surname="Naccache"/>
          <author fullname="O. Ranen" initials="O." surname="Ranen"/>
          <date month="December" year="2005"/>
          <abstract>
            <t>This document describes an algorithm to generate one-time password values, based on Hashed Message Authentication Code (HMAC). A security analysis of the algorithm is presented, and important parameters related to the secure deployment of the algorithm are discussed. The proposed algorithm can be used across a wide range of network applications ranging from remote Virtual Private Network (VPN) access, Wi-Fi network logon to transaction-oriented Web applications.</t>
            <t>This work is a joint effort by the OATH (Open AuTHentication) membership to specify an algorithm that can be freely distributed to the technical community. The authors believe that a common and shared algorithm will facilitate adoption of two-factor authentication on the Internet by enabling interoperability across commercial and open-source implementations. This memo provides information for the Internet community.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4226"/>
        <seriesInfo name="DOI" value="10.17487/RFC4226"/>
      </reference>
    </references>
    <?line 191?>

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

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



  </back>
  <!-- ##markdown-source:
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
ZYn0nXLno9/P6joj/xudMrjNWSgAAA==

-->

</rfc>
