<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.1.2) -->


<!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 RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC4880 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4880.xml">
]>


<rfc ipr="trust200902" docName="draft-huigens-openpgp-persistent-symmetric-keys-02" category="std" consensus="true" submissionType="IETF" updates="4880" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>Persistent Symmetric Keys in OpenPGP</title>

    <author initials="D." surname="Huigens" fullname="Daniel Huigens" role="editor">
      <organization>Proton AG</organization>
      <address>
        <postal>
          <street>Route de la Galaise 32</street>
          <city>Plan-les-Ouates</city>
          <code>1228</code>
          <country>Switzerland</country>
        </postal>
        <email>d.huigens@protonmail.com</email>
      </address>
    </author>

    <date year="2024" month="January" day="03"/>

    <area>sec</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines new algorithms for the OpenPGP standard (RFC4880) to support persistent symmetric keys, for message encryption using authenticated encryption with additional data (AEAD) and for authentication with hash-based message authentication codes (HMAC).
This enables the use of symmetric cryptography for data storage (and other contexts that do not require asymmetric cryptography), for improved performance, smaller keys, and improved resistance to quantum computing.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://twisstle.gitlab.io/openpgp-persistent-symmetric-keys/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-huigens-openpgp-persistent-symmetric-keys/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        OpenPGP Working Group mailing list (<eref target="mailto:openpgp@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/openpgp/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/openpgp/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://gitlab.com/twisstle/openpgp-persistent-symmetric-keys"/>.</t>
    </note>


  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>The OpenPGP standard <xref target="RFC4880"></xref> has supported symmetric encryption for data packets using session keys since its inception, as well as symmetric encryption using password-derived keys.
This document extends the use of symmetric cryptography by adding support for persistent symmetric keys which can be stored in a transferable private key, and used to symmetrically encrypt session keys, for long-term storage and archival of messages.
This document uses authenticated encryption with associated data (AEAD) as proposed by the OpenPGP crypto refresh <xref target="crypto-refresh"></xref>.</t>

<t>The OpenPGP standard also supports the use of digital signatures for authentication and integrity but no similar symmetric mechanism exists in the standard.
This document introduces hash-based message authentication codes (HMAC) as a symmetric counterpart to digital signatures, for long-term storage and archival of attestations of authenticity and certification.</t>

</section>
<section anchor="conventions-used-in-this-document"><name>Conventions Used in This Document</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119"></xref>.
Any implementation that adheres to the format and methods specified in this document is called a compliant application.
Compliant applications are a subset of the broader set of OpenPGP applications described in <xref target="RFC4880"></xref> and the OpenPGP crypto refresh <xref target="crypto-refresh"></xref>.
Any <xref target="RFC2119"></xref> keyword within this document applies to compliant applications only.</t>

</section>
<section anchor="motivation"><name>Motivation</name>

<t>When compared to asymmetric cryptography, symmetric cryptography can provide improved performance and equivalent security with smaller keys.
In contexts that do not require asymmetric cryptography, such as secure data storage where the same user encrypts and decrypts data, symmetric cryptography can be used to take advantage of these benefits.</t>

<t>Additionally, asymmetric algorithms included in OpenPGP are vulnerable to attacks that might become possible on quantum computers <xref target="Shor"></xref>.
Symmetric cryptography is also affected by quantum computing but to a lesser extent, which can be countered by using larger keys <xref target="Grover"></xref>.
While the standardization of quantum-secure asymmetric cryptography in OpenPGP is ongoing <xref target="PQCinOpenPGP"></xref>, and will be required to secure communications, there is a large body of existing messages encrypted with classical algorithms.
Once persistent symmetric keys are available, these messages can be protected against future compromises efficiently by symmetrically re-encrypting the session key, and storing the message symmetrically encrypted for long-term storage and archival.</t>

</section>
<section anchor="reusing-and-renaming-packets"><name>Reusing and Renaming Packets</name>

<t>Rather than introducing new packets for storing persistent symmetric keys, the existing Secret-Key packets are reused for this purpose.
To indicate the type of keys, two algorithms (AEAD and HMAC) are registered, whose IDs can be used in the place of public-key algorithm IDs.
To accommodate these additions, we propose renaming the Public Key Algorithms registry to Persistent Key Algorithms.</t>

<t>Similarly, we reuse the Signature packet for "symmetric signatures".
For session keys encrypted with persistent symmetric keys, while a Symmetric-Key Encrypted Session Key packet exists, its semantics don't match our requirements, as it's intended to encrypt the session key with a user-provided password, and doesn't offer a way to store a reference to a persistent key.
Therefore, we reuse the Public-Key Encrypted Session Key packet instead, which does offer the desired semantics.
Nevertheless, given this usage, the naming of these packets may be confusing, so we propose to rename them to "String-to-Key Encrypted Session Key packet" and "Persistent Key Encrypted Session Key packet", instead.</t>

</section>
<section anchor="key-algos"><name>Persistent Symmetric Key Algorithms</name>

<t>This document defines two new algorithms for use with OpenPGP, extending the table in section 9.1 of <xref target="crypto-refresh"></xref>.</t>

<texttable title="Persistent Symmetric Key Algorithm registrations" anchor="key-algo-registrations">
      <ttcol align='right'>ID</ttcol>
      <ttcol align='left'>Algorithm</ttcol>
      <ttcol align='left'>Public Key Format</ttcol>
      <ttcol align='left'>Secret Key Format</ttcol>
      <ttcol align='left'>Signature Format</ttcol>
      <ttcol align='left'>PKESK Format</ttcol>
      <c>64</c>
      <c>AEAD</c>
      <c>sym. algo, seed hash [<xref target="key-aead"/>]</c>
      <c>hash seed, key material</c>
      <c>N/A</c>
      <c>AEAD algo, IV, length, ciphertext [<xref target="pkesk-aead"/>]</c>
      <c>65</c>
      <c>HMAC <xref target="RFC2104"/></c>
      <c>hash algo, seed hash [<xref target="key-hmac"/>]</c>
      <c>hash seed, key material</c>
      <c>authentication tag [<xref target="sig-hmac"/>]</c>
      <c>N/A</c>
</texttable>

<t>These algorithm IDs can be used to store symmetric key material in Secret-Key Packets and Secret-Subkey packets (see section 5.5.3 of <xref target="crypto-refresh"></xref>).
The AEAD algorithm ID can be used to store session keys encrypted using AEAD in PKESK packets (see section 5.1 of <xref target="crypto-refresh"></xref>).
The HMAC algorithm ID can be used to store HMAC-based signatures in Signature packets (see section 5.2 of <xref target="crypto-refresh"></xref>).</t>

<t>As the secret key material is required for all cryptographic operations with symmetric keys, implementations SHOULD NOT use these algorithm IDs in Public-Key Packets or Public-Subkey Packets, and SHOULD NOT export Public-Key Packets from Secret-Key Packets holding symmetric key material.</t>

<section anchor="key-aead"><name>Algorithm-Specific Fields for AEAD keys</name>

<t>The public key is this series of values:</t>

<t><list style="symbols">
  <t>A one-octet symmetric algorithm identifier (see section 9.3 of <xref target="crypto-refresh"></xref>)</t>
  <t>A 32-octet SHA-256 hash of the seed in the private key material</t>
</list></t>

<t>The private key is this series of values:</t>

<t><list style="symbols">
  <t>A 32-octet seed value to be hashed for the public key material</t>
  <t>Symmetric key material of appropriate length for the chosen symmetric algorithm</t>
</list></t>

</section>
<section anchor="key-hmac"><name>Algorithm-Specific Fields for HMAC keys</name>

<t>The public key is this series of values:</t>

<t><list style="symbols">
  <t>A one-octet hash algorithm identifier (see section 9.5 of <xref target="crypto-refresh"></xref>)</t>
  <t>A 32-octet SHA-256 hash of the seed in the private key material</t>
</list></t>

<t>The private key is this series of values:</t>

<t><list style="symbols">
  <t>A 32-octet seed value to be hashed for the public key material</t>
  <t>Symmetric key material of the length of the hash output size of the chosen hash algorithm</t>
</list></t>

</section>
<section anchor="pkesk-aead"><name>Algorithm-Specific Fields for AEAD encryption</name>

<t><list style="symbols">
  <t>A one-octet AEAD algorithm (see section 9.6 of <xref target="crypto-refresh"></xref>)</t>
  <t>A starting initialization vector of size specified by AEAD mode</t>
  <t>A one-octet length of the following field</t>
  <t>A symmetric key encryption of the plaintext value described in section 5.1 of <xref target="crypto-refresh"></xref>, performed using the selected symmetric-key cipher operating in the given AEAD mode, including the authentication tag.</t>
</list></t>

</section>
<section anchor="sig-hmac"><name>Algorithm-Specific Fields for HMAC signatures</name>

<t><list style="symbols">
  <t>An authentication tag of appropriate length for the hash algorithm</t>
</list></t>

<t>Although not required by HMAC, to maintain compatibility with existing signature implementations, HMAC tags are produced from appropriately hashed data, as per section 5.2.4 of <xref target="crypto-refresh"></xref>.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>Security considerations are discussed throughout the document where appropriate.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="updates-to-public-key-algorithms"><name>Updates to Public Key Algorithms</name>

<t>IANA is requested to rename the "Public Key Algorithms" registry to "Persistent Key Algorithms", and add the entries in <xref target="key-algo-registrations"/> to the registry.</t>

</section>
<section anchor="updates-to-packet-type-descriptions"><name>Updates to Packet Type Descriptions</name>

<t>IANA is requested to modify the "PGP Packet Types/Tags" registry as follows:</t>

<t><list style="symbols">
  <t>For Packet Tag 1 ("Public-Key Encrypted Session Key Packet"), change the Packet Type to "Persistent Key Encrypted Session Key Packet".</t>
  <t>For Packet Tag 3 ("Symmetric-Key Encrypted Session Key Packet"), change the Packet Type to "String-to-Key Encrypted Session Key Packet".</t>
</list></t>

</section>
</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>An initial version of this draft was written by Dan Ristea (Proton AG), with guidance from Dr Philipp Jovanovic (University College London).</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

<reference anchor="crypto-refresh" target="https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-crypto-refresh-12">
  <front>
    <title>OpenPGP</title>
    <author initials="P." surname="Wouters">
      <organization></organization>
    </author>
    <author initials="D." surname="Huigens">
      <organization></organization>
    </author>
    <author initials="J." surname="Winter">
      <organization></organization>
    </author>
    <author initials="N." surname="Yutaka">
      <organization></organization>
    </author>
    <date year="2023" month="October"/>
  </front>
</reference>
&RFC2104;
&RFC2119;
&RFC4880;


    </references>

    <references title='Informative References'>

<reference anchor="Grover" target="https://arxiv.org/abs/quant-ph/9706033">
  <front>
    <title>Quantum mechanics helps in searching for a needle in a haystack</title>
    <author initials="L." surname="Grover">
      <organization></organization>
    </author>
    <date year="1997"/>
  </front>
</reference>
<reference anchor="Shor" target="http://dx.doi.org/10.1137/S0097539795293172">
  <front>
    <title>Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer</title>
    <author initials="P." surname="Shor">
      <organization></organization>
    </author>
    <date year="1997" month="October"/>
  </front>
</reference>
<reference anchor="PQCinOpenPGP" target="https://datatracker.ietf.org/doc/html/draft-wussler-openpgp-pqc-03">
  <front>
    <title>Post-Quantum Cryptography in OpenPGP</title>
    <author initials="S." surname="Kousidis">
      <organization></organization>
    </author>
    <author initials="F." surname="Strenzke">
      <organization></organization>
    </author>
    <author initials="A." surname="Wussler">
      <organization></organization>
    </author>
    <date year="2023" month="October"/>
  </front>
</reference>


    </references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+VaWW/buBZ+168g3IdJAcvO0mUS4AJjJF0yXZKJ21sMegcX
tMTYRGRRFam4btr/fr9zSMmSlyYzrzdAEEskD8/6ncWJ4zhy2mXqRFyq0mrr
VO7EeDmfK1fqRLxRSyt0Li4KlV++uoxSk+Ryjt1pKa9dPKv0VOU2NlgupkVc
NDRiW9OIb0Aj3j+MEunU1JTLE2FdGumiPBGurKw73N8/xnJVpNhgT8STX3/d
j2SpJDaqJMLxhSnTE3GeO1XmysVndHdknczT/8rM5GAnN5GtJnNtrTb5h2WB
V+cvPryMCn0SCeFMciKWyvqPqSrcDNfgyZrSlera1qtgevV4q/JK0fFpaari
RPSCEnpEhq/ofTLljc6n4hXtoPdzqTO8D/r4TSt3PTDllJZkmeDW3sy5wp4M
h7STXulbNai3DenFcFKahVXDQGNIZ0tVmNbZKSwmJ4PEzIduAZlhv+G9JiA6
GWnYtSjVxweBpDb3EwJHsnIzU5JuYvwKeAh0djYQr70/8DvvJ2cy1yrrLJSG
3E2l2pmSX0ByuF9pnMnF6BW/sjCLAqNXpnJKpAqci1cyk9oqcXTIWxKTgszB
4eGv/lE7eNZlJvM4Uza+qEjUsLHKHbndeKHdN1ViS8oLylsrHQQ3/q1gHugt
6TbKTTmXDgYiQZNyWTgTwz1KZWcnTCBETh0c9Ip8GFw9FxeJMxNVisP9wyNe
WemMfuLwN+juciA+kail3b6+ptuN9d9xXlN8bF9+PxB/Vk7eSM+2LKek3NoJ
wLN0pUxuVLlyRUT6cObm2dBHOr1vwryri/iADHL18vTwYP/JSf3x4Dh8pHA+
iXR+3dYmAuZWlR0t/lHJ3FVzMVfJDE6TWDFTWcHoYxVHCgINRIQUuVJppmhF
iplcAgmSm/t1/HYQrm0b6vj4+VadyPKrvvUxObHDL8RbXMyGx8/3n+0fkUHH
zUWB/96lyZa5mWuZxR/0XIlRBrTTbja3zPZlSS9fSvhFqb9BE/B2eKI40zYp
Fbz8rZnKsJ+WGoWcmnlBrtFr8V17V8P/fd5F7G4ISrb/OkiNZkEP9gcHB0fP
h2Pg8fOnR8fPj58eHh8dPCfrXv5xqvPg5x2pL411ccMp+8W0lMVs2c4abX3/
zcAYD8QbU1md6h2e/xKyASzybzdq+4YRQqOyNlOb8j/U+Rf+/CrNfUni/aMo
jmMB76DTLoo+zLQVOFjNKYWm6lrnysJVF0J2HcHNVK0ZwUlMlqnYC5HyGBlK
2KookJnECoJFA8GCILjPhObKWjlVQuUckORQ0BSihDSKQ5oybtpeBgDOhEwB
vXiSGRlFir3Ri9HZY/ZFDq/V4ebITCLMJ9KCWn3p2jZCYyv2Xr8bnT4eeF2o
XE4AxSxvBdw21y0pkrar0LXMikVsEPE9YsbgYAnCgLWvjshIqNUg1Tvkwy+V
LsHEdoKPvX70vKB4T0mPjD55ovrCzmUGYwY90kXNPqCZJoskiqzwJXh1wvEH
vQ4iNvlcp0CfKHpEFUlp0iohDZADbLHr52DXv0iHtWFx1YrxlnkaPRTkj5DZ
m9MqLmuYY4E3YE87AsZE8TlIYcVCZRn93UrY0ymktVRKxakqNclLBAdrjgtd
qzx9iNUmS3YlYjD4K/G/02fFYqaTmUhkLiaKLQ0OGMIRQLm9ViW5iyjAGtyW
jnjrVOR1FBQ1NZhvWQvX0Y23OgrCaQy4nDfeRFR8qQWXhzzBhTdEx032vtix
1iSalzqxY8G3KQyxCrW0I9yrTIRcKT53c+dfgx1+IzPb4EDHGKlGqQY5rJ7m
0lUgsi1q2a0ROFPgDixVOYQNjsyp5mzZJeRaO4fZYTROtnRXzca6hnRweFz6
9yCBNCTbjkQ1mSoLCa+BdjaFeqgtpaOKli+0/FzzQHLT5kSVTl8HngYUtacm
v6UtdOKj9U7IYp4FMb1J4FGCosWK3ruP4w+9vv8r3l/w56sXf3w8v3pxRp/H
r0dv3zYf6h3j1xcf356tPq1Onl68e/fi/Zk//G70Z897eu/i8sP5xfvR2563
Q1vz6IdIURPFZi0LqhhS0ip0nJR64sX4HEovuNUoXxKwZYqOe4MwgsoUqEqo
bNjSvirj62GamYG4tlAJNOYpdrnAZwo/uplhMdOSeCvwoVbw6bbXlvmHA1QT
qxzZie5GoyMBRSK8qmOgc25DPA+mxO/fijJSR6MdEXpKjulNVdP9XkNbZaTy
LFuyK70zjtCK4f8T/I4PyNID1o7k1N+Fp4SMlIg02p1tqYuFpsQH12d4VUnF
4c3I1E5rg+g8/0eJE7xVyYzTCBFX3ay8IM/x+IDejgCprAHSMnOpCg907Kdy
TlSD62hLwE96Cy3TJd43gHUTlaOGchAmGjUVS0ZJYUW3VVkhG2ZV6v2k8SSw
e1tleUgtZBNHvULQyVxPZw73wGjIOwaJhHYhULqZHwlNfKb6GW403i4S3IcB
W15fq8T5JLBRPjAMEw8CVRHrjlKt63cTY0BGT8Pn7YxKVm9Z8dm3MGDl00xn
qoPWdVcBFYbL42DGHeZu60qTW08N3fe5Xe3/5bFpoVFegL3gQD4je+IQcF7l
dXD0iSW8JZV4zsXEpEtiinMMXVAn4Np7lI9EkWTIr5TgW4YdRBfk+7vLCkaW
W5qmwHr94DzNDUGr1Nl7y8ipRFuAWqVygXmszTWlfnWNPKFxRcbFTbfgKFVc
FwOQgNW+Kj28jihO6sU6J26tWlT6gOzGAHOlQkWPhSsU1HN6uPTVYRRdSS6R
4cx5k5ppAzUddQlJF9WM/aSfIJ4b+4wVdaTxG2TAmgxpuVQcs76HgX2LqqSS
B0WCwfUpl0xMiKZjZPBAemHagcolEwsUKgOmPCW+4FcUDaApzs9sByhCYVJk
MmHSRTXJ/DxqRZsOMTMyIZ80aeDHqqbnATsLVddquDZolEhfMkWaeLY7d89Z
uSR/b01Iu7tgqrGvrQifFkFTTHVcVzRBk6y93kr7q4qnN4hekq3axf5afPzE
fgtGA7ka3bL1XjTnx4Hsyqah5OtzL2EVUoyjoUtq8l8AjdIBkkxV1gFPmdFy
o6HdL5aLkDz1MFCX4msxEQpmThNxyGtp04P4iEmNsnSdAW7SYGchWdHcHOAR
6Rs+Edox2RYf9Kk2xSr0qdZ07i15vwIIB5RMawAmZgInRAWVBwNdo5pB9F4B
erFG+N0XU/RQoXaoKNZ9EAWPatJYHUBziMbwnl9zSCM9mrYvcvVCM1M6N6fH
3thR1MaoY+4TpefrxzUH/emJfi0+48yu4X87FO4eQesxRZv9sWvcQbG+ZeRB
lmF3CEmlH9rMOvYc52ee9HEzLY4HB6TCLd3S3YkfPf2rdz/PdfT6zNQTjQBx
Z+FHdH4mvreOfW+DwUtfIX8PqLj2rgnv5tXlmxfjN+GR5gUn3+OdP9/XfiPx
7AlxQgj5nWJ8wJqEryhYkVou8Z/Pd3csBkz348df2MavaUOfww7Xor1HDv0u
3g9HNTVP5vzffRQf+dTN+iLRBeKHSkSmWdwoe1NTBR9PcZIAWtzdhdHujx/1
Zbt4ms1lch9Pa00iaj4+DhxsHQfj3IQRcrfRfb129EDRwcLVXXCnViK7rBNZ
ntavx9XkppXi9sBv44BPB08HR9tckKdbaqXUmrcdrG1Hc5/UmQa49B6zg42t
cRCYYPvczwRtC616a2pA6llLThuXH+64PBrZAPccEl2121WRyJMJFI6tohNW
MgDy0En51mUtl3XbVitW7bMIEL/hF6TFFerXtqapu38bTB0WfPJpkVVfeX61
hcQ1isNtbjQzmR99bfU9wtRHK0CJx76lTsRLrbLUYyJbn/0iACuFnh89+OKG
KWrrMwySqOb0JFAaVsqeRFEsRijZVWxQ17YLgpVmkHFzGn4go3UMe7zDtT3N
o8NAcvx6FB8+feaDOfTsHPR1MbYa1TWSBwFaK/dI0NzGlHkpDDro2qbc7Chl
dVncgv6OF9IoqKDcWtK0LoBeQyuhGjPfprMHGI6jrmU4hq1/brgGUe+z2dP/
A5vRoWCr8OQFqRx6aKDXt3pAUJuwq72Hhl1rrHv3qJX51m2zhvJrBnn2E4Og
Jy+5l9I5Gg+Z1b35raLv/3iqTsKsZm1oOPk2tC1qnY2uRq5NlpkFfxtKYoX7
OiptyRcOoXHSPA8K5urM1e7JNv16CtVkLu9Vme+oO/8dEMqKGuNZAbzdV8uN
iP0wsKmpbZYFD8FQDsVWTrt71NQRrJZ8W7nxc2hYd6hR5mamms7a4zO2Ft3d
J7efk2bx64d/Tk901kzlmpa6YXI9u/W9EGDMN9mFH7CnPvO0GM2WdXT56Rp9
58DD0yZZD57sqJkfUQbzs8JTXAmICfkXfWu9kHQWmJVU26SyXErMStKBqXyX
15T9fiLYYpIvOx+9H21cBFt+9P/hw630tmY7ivhkKCCUdb6IWbVF6HC2net1
uvT1Lqi1z+d9mfrZMTYwusFyoaTe7Ax+1HPy+obBhiS+l6T/ORJnHFRFkHir
MPB9fb0Mwry6bB+3ww9wgpYw0oZY97hL04F6O9z4QOz17u10/f7eY5T7M5lP
Q3/cYnmLwn5KabDJyBEYecjY4UG8PKTnbViBr42Sm9wsMpVO/YgCAZvXmAuw
LW2DgdSu0rf5YkHflsIjIDDF8RlK5isSX4q95p+QwCTH77TSKc/eORrPIPcM
0V0U4ndzK3NzC1/c+5hrvoijK8vUlP6VI09NjkL5f9gZsJ9gJwAA

-->

</rfc>

