<?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.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vangeest-lamps-cms-euf-cma-signeddata-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="EUF-CMA for CMS SignedData">EUF-CMA for the Cryptographic Message Syntax (CMS) SignedData</title>
    <seriesInfo name="Internet-Draft" value="draft-vangeest-lamps-cms-euf-cma-signeddata-00"/>
    <author initials="D." surname="Van Geest" fullname="Daniel Van Geest">
      <organization>CryptoNext Security</organization>
      <address>
        <email>daniel.vangeest@cryptonext-security.com</email>
      </address>
    </author>
    <author fullname="Falko Strenzke">
      <organization>MTG AG</organization>
      <address>
        <email>falko.strenzke@mtg.de</email>
      </address>
    </author>
    <date year="2024" month="December" day="05"/>
    <area>Security</area>
    <workgroup>Limited Additional Mechanisms for PKIX and SMIME</workgroup>
    <keyword>Cryptographic Message Syntax</keyword>
    <keyword>CMS</keyword>
    <abstract>
      <?line 59?>

<t>The Cryptographic Message Syntax (CMS) has different signature verification behaviour based on whether signed attributes are present or not.
This results in a potential existential forgery vulnerability in CMS and protocols which use CMS.
This document describes the vulnerability and lists a number of potential mitigations for LAMPS working group discussion.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://danvangeest.github.io/cms-euf-cma-signeddata/draft-vangeest-lamps-cms-euf-cma-signeddata.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-vangeest-lamps-cms-euf-cma-signeddata/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Limited Additional Mechanisms for PKIX and SMIME Working Group mailing list (<eref target="mailto:spasm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spasm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spasm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/danvangeest/cms-euf-cma-signeddata"/>.</t>
    </note>
  </front>
  <middle>
    <?line 66?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Cryptographic Message Syntax (CMS) <xref target="RFC5652"/> signed-data content type allows any number of signers in parallel to sign any type of content.</t>
      <t>CMS gives a signer two options when generating a signature on some content:</t>
      <ul spacing="normal">
        <li>
          <t>Generate a signature on the whole content; or</t>
        </li>
        <li>
          <t>Compute a hash over the content, place this hash in the message-digest attribute in the SignedAttributes type, and generate a signature on the SignedAttributes.</t>
        </li>
      </ul>
      <t>The resulting signature does not commit to the presence of the SignedAttributes type, allowing an attacker to influence verification behaviour.
An attacker can perform two different types of attacks:</t>
      <ol spacing="normal" type="1"><li>
          <t>Take an arbitrary CMS signed message M which was originally signed with SignedAttributes present and remove the SignedAttributes, thereby crafting a new message M' that was never signed by the signer.  M' has the DER-encoded SignedAttributes of the original message as its content and verifies correctly against the original signature of M.</t>
        </li>
        <li>
          <t>Let the signer sign a message of the attacker's choice without SignedAttributes.
The attacker chooses this message to be a valid DER-encoding of a SignedAttributes object.
He can then add this encoded SignedAttributes object to the signed message and change the signed message to the one that was used to create the messageDigest attribute within the SignedAttributes.
The signature created by the signer is valid for this arbitrary attacker-chosen message.</t>
        </li>
      </ol>
      <t>This vulnerability was presented by Falko Strenzke at IETF 121 <xref target="LAMPS121"/> and is detailed in <xref target="Str23"/>.</t>
      <t>Due to the limited flexibility of either the signed or the forged message in either attack variant, the fraction of vulnerable systems can be assumed to be small. But due to the wide deployment of the affected protocols, such instances cannot be excluded.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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?>

</section>
    <section anchor="potential-mitigations">
      <name>Potential Mitigations</name>
      <t>Potential mitigations are described in the following sub-sections as input to the working group discussion.
If this draft is adopted and the working group has taken a decision which measure(s) should be realized, we'll describe the chosen measures in detail.</t>
      <t>The mitigations in this section make use of a context string which is passed to the signature algorithm's sign and verify functions.</t>
      <t>ML-DSA <xref target="FIPS204"/>, SLH-DSA <xref target="FIPS205"/>, Composite ML-DSA <xref target="I-D.ietf-lamps-pq-composite-sigs"/>, and Ed448 <xref target="RFC8032"/> take a context string during signing and verification.
The context string may be up to 255 bytes long.
By default the context string is the empty string.</t>
      <artwork><![CDATA[
   Sign(sk, M, ctx="")
   Verify(sk, M, ctx="")
]]></artwork>
      <t>RSA, ECDSA and Ed25519 signatures do not take a context string and would not be helped by these mitigations.</t>
      <t>Ed448 can take a context string but does not currently in CMS <xref target="RFC8419"/>.</t>
      <t>Ed25519ctx <xref target="RFC8032"/> takes a context string but is not specified for use in CMS.</t>
      <section anchor="immediate">
        <name>Immediate Forced Use of Specific Signature Context Strings</name>
        <t>Immediately update <xref target="I-D.ietf-lamps-cms-ml-dsa"/>, <xref target="I-D.ietf-lamps-cms-sphincs-plus"/>, and <xref target="I-D.ietf-lamps-pq-composite-sigs"/> to require a context string, with a different value for use with and without signated attributes.</t>
        <t>When signed attributes are present:</t>
        <artwork><![CDATA[
   Sign(sk, M, "signed-attributes")
   Verify(sk, M, "signed-attributes")
]]></artwork>
        <t>When signed attributes are absent:</t>
        <artwork><![CDATA[
   Sign(sk, M, "no-signed-attributes")
   Verify(sk, M, "no-signed-attributes")
]]></artwork>
        <t>Unlike the following mitigations, Ed448 cannot be addressed by this mitigation because it is already published and in use.</t>
      </section>
      <section anchor="implicit">
        <name>Attribute-Specified Use of Implicit Signature Context Strings</name>
        <t>Like <xref target="immediate"/>, but the use of the signature context string is indicated by a new, empty (or attribute value ignored), sign-with-context-implicit unsigned attribute.</t>
        <t><xref target="I-D.ietf-lamps-cms-ml-dsa"/>, <xref target="I-D.ietf-lamps-cms-sphincs-plus"/>, and <xref target="I-D.ietf-lamps-pq-composite-sigs"/> can be published using the default signature context string.  ML-DSA, SLH-DSA, Composite-ML-DSA, and Ed448 only use the non-default context string when the new attribute is used.</t>
        <section anchor="signing">
          <name>Signing</name>
          <t>When signed attributes are present:</t>
          <artwork><![CDATA[
   unsigned-attributes.add(sign-with-context-implicit)
   Sign(sk, M, "signed-attributes")
]]></artwork>
          <t>When signed attributes are absent:</t>
          <artwork><![CDATA[
   unsigned-attributes.add(sign-with-context-implicit)
   Sign(sk, M, "no-signed-attributes")
]]></artwork>
        </section>
        <section anchor="verifying">
          <name>Verifying</name>
          <t>When signed attributes are present:</t>
          <artwork><![CDATA[
   IF unsigned-attributes.contains(sign-with-context-implicit)
   THEN Verify(sk, M, "signed-attributes")
   ELSE Verify(sk, M, "")
]]></artwork>
          <t>When signed attributes are absent:</t>
          <artwork><![CDATA[
   IF unsigned-attributes.contains(sign-with-context-implicit)
   THEN Verify(sk, M, "no-signed-attributes")
   ELSE Verify(sk, M, "")
]]></artwork>
        </section>
      </section>
      <section anchor="attribute-specified-use-of-explicit-signature-context-strings">
        <name>Attribute-Specified Use of Explicit Signature Context Strings</name>
        <t>Like <xref target="implicit"/> but the new unsigned attribute (sign-with-context-explict) contains a semi-colon-delimited list of keyword (and optional value) strings.
This addresses the possibility of future CMS features that require context parameters.</t>
        <artwork><![CDATA[
   ctx = "<keyword_1>[=value1];...;<keyword_n>[=value]"
]]></artwork>
        <t>The list is ordered alphabetically by type string.
This list is validated by the verifier and used as the signature context string.
(alternative: the SHA-256 hash of the list is used as the signature context string to avoid it getting too long)</t>
        <t>A proposed list of initial signature context string keywords follows:</t>
        <table>
          <name>Potential Context String Keywords</name>
          <thead>
            <tr>
              <th align="left">keyword</th>
              <th align="left">value</th>
              <th align="left">comment</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">"IETF/CMS"</td>
              <td align="left"> </td>
              <td align="left">
                <bcp14>REQUIRED</bcp14> to be in the sign-with-context-implicit attribute, to differentiate a signature in CMS from a signature with the same private key over some other data.</td>
            </tr>
            <tr>
              <td align="left">"signed-attrs"</td>
              <td align="left"> </td>
              <td align="left">Present if signed attributes are used, not present if signed attributes are not used. Alternative: always present, value = 0/1, yes/no depending on whether signed attributes are present or not.</td>
            </tr>
            <tr>
              <td align="left">"app-ctx"</td>
              <td align="left">base64( SHA-256( protocol_context ) )</td>
              <td align="left">Allows the protocol using CMS to specify a context. SHA-256 is applied so that the length available to the protocol context isn't dependent on the other context values used in CMS. (alternative: no SHA-256 here, apply SHA-256 to the whole CMS context). base64-encoding is applied so the app context doesn't introduce semi-colons to mess up CMS' parsing of this string.</td>
            </tr>
          </tbody>
        </table>
        <t>When a verifier processes a SignerInfo containing the sign-with-context-explicit attribute, it <bcp14>MUST</bcp14> perform the following consistency checks:</t>
        <ul spacing="normal">
          <li>
            <t>If the "signed-attrs" keyword is present and SignedAttributes is not present in the SignerInfo, fail verification.</t>
          </li>
          <li>
            <t>If the "signed-attrs" keyword is not present and SignedAttributes is present in the SignerInfo, fail verification.</t>
          </li>
        </ul>
        <t>If the consistency checks pass, the signature is verified using the string in the sign-with-context-explicit attribute as the signature context (alternative: using SHA-256 of the string in the sign-with-context-explicit attribute).</t>
        <t>When a verifier processes a SignerInfo without the sign-with-context-explicit attribute, they <bcp14>MUST</bcp14> verify the signature using the default signature context value ("").</t>
        <t><xref target="I-D.ietf-lamps-cms-ml-dsa"/>, <xref target="I-D.ietf-lamps-cms-sphincs-plus"/>, and <xref target="I-D.ietf-lamps-pq-composite-sigs"/> can be published using the default signature context string.  ML-DSA, SLH-DSA, Composite-ML-DSA, and Ed448 only use the non-default context string when the new attribute is used.</t>
      </section>
    </section>
    <section anchor="straw-mitigations">
      <name>Straw Mitigations</name>
      <t>The following mitigations might not be good ideas but are included just in case there's a seed of genius in them.</t>
      <section anchor="attack-detection">
        <name>Attack Detection in CMS</name>
        <t>If SignedAttributes is not present, check if the signed message is a valid DER-encoded SignedAttributes structure and fail if it is.
The mandatory contentType and messageDigest attributes, with their respective OIDs, should give a low probability of a legitimate message being flagged.</t>
        <t>If an application protocol deliberately uses such a signed messages, verification would fail.</t>
        <t>This mitigation does not address the inverse problem where a protocol doesn't used SignedAttributes but for some reason often sends messages which happen to be formatted like valid SignedAttributes encodings, with attacker-controlled bytes where the message digest attribute would be.</t>
      </section>
      <section anchor="alwaysnever-use-signedattributes-in-your-protocol">
        <name>Always/Never use SignedAttributes in Your Protocol</name>
        <t>Individually update each protocol which use CMS to always require or forbid signed attributes.</t>
      </section>
      <section anchor="attack-detection-in-your-protocol">
        <name>Attack Detection in Your Protocol</name>
        <t><xref target="attack-detection"/> but specified in the protocol that uses CMS rather than CMS itself.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
      <t>The vulnerability is not present in systems where the use of SignedAttributes is mandatory, for example: SCEP, Certificate Transparency, RFC 4018 firmware update, German Smart Metering CMS data format.
However, this security relies on a correct implementation of the verification routine that ensures the presence of SignedAttributes.</t>
      <t>The vulnerability is also not present when the message is signed and then encrypted, as the attacker cannot learn the signature.</t>
      <t>Conceivably vulnerable systems (TODO: describe these better):</t>
      <ul spacing="normal">
        <li>
          <t>Unencrypted firmware update denial of service</t>
        </li>
        <li>
          <t>Dense message space</t>
        </li>
        <li>
          <t>Signing unstructured data</t>
        </li>
        <li>
          <t>External signatures over unstructured data</t>
        </li>
        <li>
          <t>Systems with permissive parsers</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="FIPS204">
          <front>
            <title>Module-lattice-based digital signature standard</title>
            <author>
              <organization/>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.204"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="FIPS205">
          <front>
            <title>Stateless hash-based digital signature standard</title>
            <author>
              <organization/>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.205"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="LAMPS121" target="https://datatracker.ietf.org/meeting/121/materials/slides-121-lamps-cms-euf-cma-00">
          <front>
            <title>EUF-CMA for CMS SignedData</title>
            <author initials="F." surname="Strenzke">
              <organization/>
            </author>
            <date year="2024" month="November" day="06"/>
          </front>
        </reference>
        <reference anchor="Str23" target="https://ia.cr/2023/1801">
          <front>
            <title>ForgedAttributes: An Existential Forgery Vulnerability of CMS and PKCS#7 Signatures</title>
            <author initials="F." surname="Strenzke">
              <organization/>
            </author>
            <date year="2023" month="November" day="22"/>
          </front>
          <format type="PDF" target="https://eprint.iacr.org/2023/1801.pdf"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-pq-composite-sigs">
          <front>
            <title>Composite ML-DSA For use in X.509 Public Key Infrastructure and CMS</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>OpenCA Labs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>Bundesdruckerei GmbH</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   This document defines combinations of ML-DSA [FIPS.204] in hybrid
   with traditional algorithms RSA-PKCS#1v1.5, RSA-PSS, ECDSA, Ed25519,
   and Ed448.  These combinations are tailored to meet security best
   practices and regulatory requirements.  Composite ML-DSA is
   applicable in any application that uses X.509, PKIX, and CMS data
   structures and protocols that accept ML-DSA, but where the operator
   wants extra protection against breaks or catastrophic bugs in ML-DSA.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-sigs-03"/>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8419">
          <front>
            <title>Use of Edwards-Curve Digital Signature Algorithm (EdDSA) Signatures in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies the conventions for using the Edwards-curve Digital Signature Algorithm (EdDSA) for curve25519 and curve448 in the Cryptographic Message Syntax (CMS). For each curve, EdDSA defines the PureEdDSA and HashEdDSA modes. However, the HashEdDSA mode is not used with the CMS. In addition, no context string is used with the CMS.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8419"/>
          <seriesInfo name="DOI" value="10.17487/RFC8419"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-ml-dsa">
          <front>
            <title>Use of the ML-DSA Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Ben S" initials="B." surname="S">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <author fullname="Adam R" initials="A." surname="R">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <author fullname="Daniel Van Geest" initials="D." surname="Van Geest">
              <organization>CryptoNext Security</organization>
            </author>
            <date day="22" month="November" year="2024"/>
            <abstract>
              <t>   The Module-Lattice-Based Digital Signature Algorithm (ML-DSA), as
   defined in FIPS 204, is a post-quantum digital signature scheme that
   aims to be secure against an adversary in possession of a
   Cryptographically Relevant Quantum Computer (CRQC).  This document
   specifies the conventions for using the ML-DSA signature algorithm
   with the Cryptographic Message Syntax (CMS).  In addition, the
   algorithm identifier and public key syntax are provided.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-ml-dsa-01"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-sphincs-plus">
          <front>
            <title>Use of the SLH-DSA Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Amazon Web Services</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="30" month="November" year="2024"/>
            <abstract>
              <t>   SLH-DSA is a stateless hash-based signature scheme.  This document
   specifies the conventions for using the SLH-DSA signature algorithm
   with the Cryptographic Message Syntax (CMS).  In addition, the
   algorithm identifier and public key syntax are provided.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-sphincs-plus-17"/>
        </reference>
      </references>
    </references>
    <?line 272?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
zVT0ojeFDBXl/Gw/soEEx/8bGTQzzrAuAAA=

-->

</rfc>
