<?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.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-guo-krb-spake-2fa-01" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Kerberos SPAKE 2FA">Kerberos SPAKE with Two-Factor Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-guo-krb-spake-2fa-01"/>
    <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="January" day="06"/>
    <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:
H4sIAAAAAAAAA71abXPbuBH+zl+BUz7Ebk3VUl4uUS93VWQ78fm1ttJL5uYm
B5GQhJoidARpRc3kfkt/S39Zn13wXVKazLTNJBMTBBaL3Wd3nwXt+75nUxmH
72VkYjUQaZIpL5CpmplkPRA2DT2bTRbaWm3i8XqJKafH4xNPLxOebNP+4eHz
w74XyXg2ECr2vFSnEaadqWSiEmPF7fXw7FisdDoX45XxT2SQmkQMs3Su4lRj
L0j25GSSqPuNVf2ToReaIJYLSAwTOU39WWb8u2Ti26W8U35/Kv3Dnmcm1kQq
VXbgZctQ8g8PBP0wEP3Dft8/pL/C93lMaCumOopUKHQsZJaahSRNomgtJmvx
YRH1k2kg9FTEJhUzfU/HkomSA/FKxSqRkbcyyd0sMdkS9ohTlcQqFcfxTMdK
JTqeibG0d+LEJIHyvLvVwBPCF3dqjWVhr/7Qrz88wi4wi0kw38cLHduB+Kkr
XmUGT84IPymdP5tkJmP9D7bfQLzO5AqvxiqYxyYyM60s5qiF1NFAwGZ4+fzw
L3Oe1Q3MAi8fiMSQp1So4REesGmiVDoQL5X+jY5xY2TILwKdrnn47xh2IybE
2t4h/ckHsjgl0IzmOpZe7QjnXfFWy/II5xpYyUe+4hDTRMZ33Q9aRrS+fpTa
Vj92Ib7c6Uftnr5ilwgnxKF2iH/XEP/O4BxfuwEt6p7rXmMHzwc05QTmR3R4
3ngOhAL32QIhIkI1Ba6skCJWK5EihqYuhmQjhsQC+0ELuxBTvMSrdjQtE+U3
13TFGNOqhZnFPrQy1QvlT6RFiCAv+PQoltJagqnYG1+Nr/eFJJWsCkwcCqfR
gUAqARAWE1ZYpy7sSWC5ONedAk8sTKJIQob/VnJ9IFZzHcxFIGPS9Z4OL9NU
BncqQcQmZiEmBvL0YokBE+MIcEB5yCDSWGFZBzNJpY45El+N7UNswhmMIs3S
3gGOJswUc9eFRpGSd3Kmus4ZCx2GEYL3AcV3YsIsYBt/fKDp8ZPnDcsj+SFi
/h6WQgqd+UgGC9qGkgwssTAxskpmXa5pOOXjx29uTkaPe/3DT5+2+AbBCHVE
avDOpCpI4SdrMWSF+kAOm0HmRKUrpciWLTOwFWh0LY40cKUnGQsdKUpXYu/s
aLTfFUNLKc7p9vHjrXKH7B2SaSrlyK2lI9g7C4p1MUmyVPlTynKVf908K+61
FEreKxsmZrkkT0iYeKYBJUrBQaJCOquMRKLSDAk0pNzLBjoaCUJ3ffoG1NkS
cCup4Za5cxcYQrp2YFFxkKyXaSW+4aUuOfI/hkktQuBVuGNpbGE0MtPzJ8+e
kZkAeI4ghAUwGlVWqcvDQoJH4UOxx7vuF6IePesDDjWvyxmQbD9vbRd4MkQm
h7pcyFQsJxFF8858sYfqCgygSkEZSfoesIFcSBeL9m5P9jfMLwHvOIiyUG2m
ByiDk6G64nB/SpRdmhixZvUM8YpAz3WdaLNQgGVAFVkyEm02A7g30dh9VMCx
sDNpeXvS1ooEMTonCuU9gckq32eWEEjr2PYIrUmk7bxChXM9aUYy86QEMyIj
x3aqEsDVZaAKauSkAq+Uce+RBqa5MgRDBQg2Ul99gpjL5VLFlpJZpFFeHfcA
crIgALqnWYTEz+rTbBhg96EB4tco8BBPpgFC4VhAFkwipPKzRilRHOhCBnON
eYWbswRlnWWD9u1GShFTifot0wlXCJk6Q5gFYAp62E6mK9Art+N0SiBub7ia
g3qwngRzE5ioKy64GixVwEYChg/qmbq0Yp6nN5MSQs8FOCbAW+UCuKkyKsyM
4gF3Laj+yNjXsY9Fvsv3Yu/idHyxn8stQ2+zlkK1ruoe1NFQgcrW07EDVlF/
hlVFLHXPQVcNfJGkl5UkALCLMuV8T/Y6aMoj47iC+LnIwdtlhDmp+pBWUC8V
z2t7bmdkOi7/92BjYStj6LhSkglGomBvKMWlcBsZgLPNyjaVpgyIacUBH34m
kwH/YwN0LlTo5MuJAciBLGTARR4T/w86VQRKSaNWOqQkEqplZNbA5JfQKlcH
nvYfIdVt4VhtylayrSp1V0G4m3zR8NSQ3SkxgnwNeAjRnUVMq0gZcm+mciZD
u4SbMnewH7jPvSD955LSJ5RDqS9sxBkCmZqpER0zhlrLLC1TnUvIERpRbLlo
AKlxpiJ8agqXxT+voe00z8pNFZXMLcW1YDAkOE95nEQo2WFWTY6z1kGpAoAF
PpNXnZJuwiVl7Clij0tOgaygc4glGkKeLgTqaTO7lWkW3A/WwBAE5GuZdsjI
GuBZhZY0zYNdIgHTXDcREbQt7CtH7TxBnVPFihKpTNaNAN0dRRippR6QcahR
I+Nd8TJLXYDiL3DClg4NWYAjuSVt2joUrbIpQclV7C4x9jFAqLnzWlMv5Wo+
UxPRuXhzO+4cuP/F5RX/fHP81zenN8dH9PPt6+H5efmDl8+4fX315vyo+qla
Obq6uDi+PHKLMSoaQ17nYviu4wDSuboen15dDs87Lv7qOYksi3MjHCj/Jsgs
KUeFFyobgLs7TvRydP2vf/Ye5xmi3+s9R4ZwD8963z7GA0hH7HbjXOseYa61
R2xDurYLxgrkUqfAzAFFnp2bFfiIYuv94WeyzC8D8d0kWPYef58P0IEbg4XN
GoNss82RjcXOiFuGtmxTWrMx3rJ0U9/hu8ZzYffa4Hc/RMhmwu89++F7dN/f
fYOOr9l0I9VQ0wmnxBhITIafASuXFQrOUnVkrqjUWgLXOXWF73/vMOhWd2qh
la6XquOgAZIZmoWfGh9Q7TAcNiQ+ev60B4mltqXIk6GD9PXQP3nrj66uzk6P
6RlV8/3xzc3765vj4Zvx6/fHb68LlBevLq5ujsv3R8Px8H09FtoCToan5+7N
lhYJ8agjsLsC7e1mVqU7zvW013tUWupBu8heb+7EJejWUY78NpFyPxY/2H3D
KK5Aj++1WjlvtKrLlvrG5aQ2wfUVM3f/xzW9FpnNaooeZmkHnueLkYyCLKpy
V1EKq1rV3TILFIsvMQHCJXai7FXyMR3rvGkuXm3Wv7ZMmlG2m3l5XWZgmAEL
qHqj9rbblCuOUK+AYu9sn+YeUSGpn6NZSDDtIc/7W70RyhUqaMTWJV7Bbkve
c8Bv/ysdVdmtuoJYdCBFe9ckt2TlLkOtcS+US2MfDAvQcFHfzAz9/tOiiX3d
BBkOWJBD9/piOPKRQv1ebRJ50zEyYiPMnRz0CHK///67R0L3zg7EaF+8EOMk
i+nSYa+S5d7t81zXpZ6x0BE5Hg7l1pYOXqdt+c1exrdHjDIX54X8aq1jBFMM
uyxHvSJFD6wId5Gg+rlyhhnD2PSixPCfsa9qWIxpeKjAJejins3Ktx1Enm4U
NYxuryqxMIU+2BbNuvILzMcvX4jCbuP9onsf00Qmpqma5Z1a65yoDhNHx5jM
c+iXt3L1gC1sx9PGh2IPCkiKnZJjH9abyjex/iDU0gTz/TLCQXAScg6/Izld
cWmYkOLYfAi+daL6xRFhBUoht2ulwftPnhIlK5+f9Pqlq8AGsJrabS5+hP/G
NUy/uIZxhnVRcFT6oYyoLZl5wz+F1MeV1OJyR0lQzWYjA+OUZndcXrr84/Zy
W3Ud+jfGxWDwQtyirB1fjo7FR09w4RX48/PhLxTFj/oHGOTYp8HeL+JqND4e
i9vxzenlK1HQB+8Ty+fCSwKmWkUciVJksf7NoZhh4o7J15uYZLdkERJQtQ28
tROX9wpWmKW7yWtlp+6ujwNpoZZsIPbXX3/t4x/5MldovSOpOXXq4lgtbkAd
PRGxidEerebG0iVLPKMy7GjbQqaBK5sLah+Rf1VSTMlhEauZQSCQ//jDWf2G
bHORbiXOEoX9NmAKQnSaOpjQnTs6O2rZilsqQnuVkOp38a20kJ8Gdb6RhufS
zqv1X3Ce5oKvOEtBgnLuIxO5QCeQONY54gRKnZP1vCrwW70vAxLVwC9azaLt
RoOoXSbmZnGiPtMdf+7uOW+Pt97XbaMu7sYchbJ+g/olNKZW2YoOFLI27gvy
Ms2608cbMRRLBSaQ0NdMYjZY5GhbflIgnypW/vmIo8FN7Nye+LR9Z4cydI0G
c6X5fGIyw+aQ87UjMo5WXd+c/HEvP63PpyWKf5CrWFYamrYTKE+6vTL1OrLs
dv4yUzf0q7heo+UowVoYGgh2lgEARatnEfm7DR92t3Pr8tq4dROU+w/paZWn
qPp1kLDAFDrWKjd0xa1eaBrLXe4okCN/TYNtfjCAaZwfuZt14G8ZasOcDWZF
7Dbli4Xilrme3WoZrGFv2XApzey0GpxXlDxsB9vO6DsdGK8jPruzBFPoEc5O
eVi2wP55fNOOzvgVxjl7FTyGLT/RM2SPUAPvU5Ml/mSd8hXPQ8c6HcPArJiu
gdxCUunaWbQdJoWJyqu03HK1+HCW/4LwkF8TIaOccG4EAXHNusdypFWxUXsX
lEk3/6LyP/En973rWv/kIqn+faQKo/b9Yi1wiCLnnyMarREz9VdEZ20mUcS/
PJS+3fbtjYLj7OHP8S+7GxF3Q1FN/JKE0g5AR0mKlS58z25e8i3HSX8Lavjy
bKFCKstuxEGerizwyJm5U4KqEvU1mbdVeTeTRh5WdV34Bd/37rgL3rjQ5sJT
XQ4zw3lA1Np9QQO0Lfhc4mj+BicsPvfpvEVV/GmOPneU3+CChoSKeDTJO5yz
KT2niCbexmrzHjSvpEL0+dGJ2JwNDUP+Jl77psjrNvg/wZvj5HR4Odw4/5YL
PIJNbNx0GdRP+bnfrtmiYsUKyruh6qqH/Em94EH5tUDZND+M2zoMiXblYVZL
FpuG7oibImdsXBqUXJeseXokLjnrDmDeS/5VpFxHNFro3BBeGGoecw9CxFv8
QbZhj9AvuUxA5EpwDYO72KzQW884v1vv48DldhW+6EzBGVXnk0tL7pfUrFiZ
DC1LpO+UOx/9flbXGfnfxXxzS1koAAA=

-->

</rfc>
