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


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2986 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2986.xml">
<!ENTITY RFC4210 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4210.xml">
<!ENTITY RFC4211 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4211.xml">
<!ENTITY RFC5280 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5480 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5480.xml">
<!ENTITY RFC5639 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5639.xml">
<!ENTITY RFC5652 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
<!ENTITY RFC5958 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5958.xml">
<!ENTITY RFC6090 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6090.xml">
<!ENTITY RFC6234 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6234.xml">
<!ENTITY RFC7748 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7748.xml">
<!ENTITY RFC8032 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8032.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8410 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8410.xml">
<!ENTITY RFC8411 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
<!ENTITY RFC3279 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3279.xml">
<!ENTITY RFC7292 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7292.xml">
<!ENTITY RFC7296 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml">
<!ENTITY RFC7299 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7299.xml">
<!ENTITY RFC8446 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC8551 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8551.xml">
<!ENTITY RFC8017 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8017.xml">
<!ENTITY I-D.draft-hale-pquip-hybrid-signature-spectrums-01 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-hale-pquip-hybrid-signature-spectrums-01.xml">
<!ENTITY I-D.draft-ounsworth-pq-composite-kem-01 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ounsworth-pq-composite-kem-01.xml">
<!ENTITY I-D.draft-becker-guthrie-noncomposite-hybrid-auth-00 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-becker-guthrie-noncomposite-hybrid-auth-00.xml">
<!ENTITY I-D.draft-guthrie-ipsecme-ikev2-hybrid-auth-00 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-guthrie-ipsecme-ikev2-hybrid-auth-00.xml">
<!ENTITY I-D.draft-pala-klaussner-composite-kofn-00 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-pala-klaussner-composite-kofn-00.xml">
<!ENTITY I-D.draft-driscoll-pqt-hybrid-terminology-01 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-driscoll-pqt-hybrid-terminology-01.xml">
<!ENTITY I-D.draft-vaira-pquip-pqc-use-cases-00 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-vaira-pquip-pqc-use-cases-00.xml">
<!ENTITY I-D.draft-massimo-lamps-pq-sig-certificates-00 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-massimo-lamps-pq-sig-certificates-00.xml">
<!ENTITY I-D.draft-ietf-lamps-dilithium-certificates-01 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-lamps-dilithium-certificates-01.xml">
]>


<rfc ipr="trust200902" docName="draft-ounsworth-pq-composite-sigs-13" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="PQ Composite ML-DSA">Composite ML-DSA for use in Internet PKI</title>

    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="J." surname="Gray" fullname="John Gray">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>john.gray@entrust.com</email>
      </address>
    </author>
    <author initials="M." surname="Pala" fullname="Massimiliano Pala">
      <organization abbrev="CableLabs">OpenCA Labs</organization>
      <address>
        <postal>
          <street>858 Coal Creek Circle</street>
          <city>Louisville, Colorado</city>
          <code>80027</code>
          <country>United States of America</country>
        </postal>
        <email>director@openca.org</email>
      </address>
    </author>
    <author initials="J." surname="Klaussner" fullname="Jan Klaussner">
      <organization>D-Trust GmbH</organization>
      <address>
        <postal>
          <street>Kommandantenstr. 15</street>
          <city>Berlin</city>
          <code>10969</code>
          <country>Germany</country>
        </postal>
        <email>jan.klaussner@d-trust.net</email>
      </address>
    </author>

    <date year="2024" month="March" day="04"/>

    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines Post-Quantum / Traditional composite Key Signaturem algorithms suitable for use within X.509, PKIX and CMS protocols. Composite algorithms are provided which combine ML-DSA with RSA, ECDSA, Ed25519, and Ed448. The provided set of composite algorithms should meet most X.509, PKIX, and CMS needs.</t>

<!-- End of Abstract -->



    </abstract>



  </front>

  <middle>


<section anchor="changes-in-version-13"><name>Changes in version -13</name>

<t><list style="symbols">
  <t>Shortened Abstract.</t>
  <t>Added text to Introduction to justify where and why this mechanism would be used.</t>
  <t>Resolved comments from Kris Kwiatkowski</t>
  <t>Resolved Key Usage comments from Tim Hollebeek</t>
  <t>Fixed up Algorithm names in Algorithm Deprecation section</t>
  <t>Removed Falcon composites to not delay the release of this document.  Falcon (FN-DSA) composites can be added in 
a separate document</t>
  <t>Add a security consideration about Trust Anchors</t>
  <t>Updated the included samples to conform to this draft</t>
</list></t>

</section>
<section anchor="sec-intro"><name>Introduction</name>

<t>During the transition to post-quantum cryptography, there will be uncertainty as to the strength of cryptographic algorithms; we will no longer fully trust traditional cryptography such as RSA, Diffie-Hellman, DSA and their elliptic curve variants, but we will also not fully trust their post-quantum replacements until they have had sufficient scrutiny and time to discover and fix implementation bugs. Unlike previous cryptographic algorithm migrations, the choice of when to migrate and which algorithms to migrate to, is not so clear. Even after the migration period, it may be advantageous for an entity&#39;s cryptographic identity to be composed of multiple public-key algorithms.</t>

<t>Cautious implementers may wish to combine cryptographic algorithms such that an attacker would need to break all of them in order to compromise the data being protected. Such mechanisms are referred to as Post-Quantum / Traditional Hybrids <xref target="I-D.driscoll-pqt-hybrid-terminology"/>.</t>

<t>In particular, certain jurisdictions are recommending or requiring that PQC lattice schemes only be used within a PQ/T hybrid. As an example, we point to <xref target="BSI2021"></xref> which includes the following recommendation:</t>

<t>&quot;Therefore, quantum computer-resistant methods should
not be used alone - at least in a transitional period - but
only in hybrid mode, i.e. in combination with a classical
method. For this purpose, protocols must be modified
or supplemented accordingly. In addition, public key
infrastructures, for example, must also be adapted&quot;</t>

<t>This specification represents the straightforward implementation of the hybrid solutions called for by European cyber security agencies.</t>

<t>PQ/T Hybrid cryptography can, in general, provide solutions to two migration problems:</t>

<t><list style="symbols">
  <t>Algorithm strength uncertainty: During the transition period, some post-quantum signature and encryption algorithms will not be fully trusted, while also the trust in legacy public key algorithms will start to erode.  A relying party may learn some time after deployment that a public key algorithm has become untrustworthy, but in the interim, they may not know which algorithm an adversary has compromised.</t>
  <t>Ease-of-migration: During the transition period, systems will require mechanisms that allow for staged migrations from fully classical to fully post-quantum-aware cryptography.</t>
  <t>Safeguard against faulty algorithm implementations and compromised keys: Even for long known algorithms there is a non-negligible risk of severe implementation faults. Latest examples are the ROCA attack and ECDSA psychic signatures. Using more than one algorithms will mitigate these risks.</t>
</list></t>

<t>This document defines a specific instantiation of the PQ/T Hybrid paradigm called &quot;composite&quot; where multiple cryptographic algorithms are combined to form a single signature such that it can be treated as a single atomic algorithm at the protocol level. Composite algorithms address algorithm strength uncertainty because the composite algorithm remains strong so long as one of its components remains strong. Concrete instantiations of composite signature algorithms are provided based on ML-DSA, RSA and ECDSA. Backwards compatibility is not directly covered in this document, but is the subject of <xref target="sec-backwards-compat"/>.</t>

<t>This document is intended for general applicability anywhere that digital signatures are used within PKIX and CMS structures.   For a more detailed use-case discussion for composite signatures, the reader is encouraged to look at <xref target="I-D.vaira-pquip-pqc-use-cases"/></t>

<t>This document attemps to bind the composite component keys together to achieve the weak non-separability property as defined in <xref target="I-D.hale-pquip-hybrid-signature-spectrums"/> using a label as defined in <xref target="Bindel2017"/>.</t>

<section anchor="sec-terminology"><name>Terminology</name>
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; 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>

<t>The following terms are used in this document:</t>

<t>ALGORITHM:
          A standardized cryptographic primitive, as well as 
          any ASN.1 structures needed for encoding data and 
          metadata needed to use the algorithm. This document is
          primarily concerned with algorithms for producing digital
          signatures.</t>

<t>BER:
          Basic Encoding Rules (BER) as defined in <xref target="X.690"></xref>.</t>

<t>CLIENT:
          Any software that is making use of a cryptographic key.
          This includes a signer, verifier, encrypter, decrypter.</t>

<t>COMPONENT ALGORITHM:
          A single basic algorithm which is contained within a
            composite algorithm.</t>

<t>COMPOSITE ALGORITHM:
          An algorithm which is a sequence of two component
            algorithms, as defined in <xref target="sec-composite-structs"/>.</t>

<t>DER:
          Distinguished Encoding Rules as defined in <xref target="X.690"></xref>.</t>

<t>LEGACY:   For the purposes of this document, a legacy algorithm is
          any cryptographic algorithm currently in use which is 
          not believed to be resistant to quantum cryptanalysis.</t>

<t>PKI:
          Public Key Infrastructure, as defined in <xref target="RFC5280"></xref>.</t>

<t>POST-QUANTUM ALGORITHM:
          Any cryptographic algorithm which is believed to be resistant
          to classical and quantum cryptanalysis, such as the algorithms being considered for standardization by NIST.</t>

<t>PUBLIC / PRIVATE KEY:
          The public and private portion of an asymmetric cryptographic
            key, making no assumptions about which algorithm.</t>

<t>SIGNATURE:
          A digital cryptographic signature, making no assumptions
            about which algorithm.</t>

<t>STRIPPING ATTACK:
          An attack in which the attacker is able to downgrade the 
          cryptographic object to an attacker-chosen subset of
          original set of component algorithms in such a way that
          it is not detectable by the receiver. For example, 
          substituting a composite public key or signature for a
          version with fewer components.</t>

</section>
<section anchor="composite-design-philosophy"><name>Composite Design Philosophy</name>

<t><xref target="I-D.driscoll-pqt-hybrid-terminology"/> defines composites as:</t>

<ul empty="true"><li>
  <t><em>Composite Cryptographic Element</em>:  A cryptographic element that
     incorporates multiple component cryptographic elements of the same
     type in a multi-algorithm scheme.</t>
</li></ul>

<t>Composite keys as defined here follow this definition and should be regarded as a single key that performs a single cryptographic operation such key generation, signing, verifying, encapsulating, or decapsulating -- using its internal sequence of component keys as if they form a single key. This generally means that the complexity of combining algorithms can and should be handled by the cryptographic library or cryptographic module, and the single composite public key, private key, and ciphertext can be carried in existing fields in protocols such as PKCS#10 <xref target="RFC2986"></xref>, CMP <xref target="RFC4210"></xref>, X.509 <xref target="RFC5280"></xref>, CMS <xref target="RFC5652"></xref>, and the Trust Anchor Format [RFC5914]. In this way, composites achieve &quot;protocol backwards-compatibility&quot; in that they will drop cleanly into any protocol that accepts signature algorithms without requiring any modification of the protocol to handle multiple keys.</t>

<!-- End of Introduction section -->

</section>
<section anchor="sec-sigs"><name>Composite Signatures</name>

<t>Here we define the signature mechanism in which a signature is a cryptographic primitive that consists of three algorithms:</t>

<t><list style="symbols">
  <t>KeyGen() -&gt; (pk, sk): A probabilistic key generation algorithm,
which generates a public key pk and a secret key sk.</t>
  <t>Sign(sk, Message) -&gt; (signature): A signing algorithm which takes 
as input a secret key sk and a Message, and outputs a signature</t>
  <t>Verify(pk, Message, signature) -&gt; true or false: A verification algorithm
which takes as input a public key, a Message and signature and outputs true
if the signature verifies correctly.  Thus it proves the Message was signed
with the secret key associated with the public key and verifies the integrity
of the Message.  If the signature and public key cannot verify the Message,
it returns false.</t>
</list></t>

<t>A composite signature allows two underlying signature algorithms to be combined into a single cryptographic signature operation and can be used for applications that require signatures.</t>

<section anchor="composite-keygen"><name>Composite KeyGen</name>

<t>The <spanx style="verb">KeyGen() -&gt; (pk, sk)</spanx> of a composite signature algorithm will perform the <spanx style="verb">KeyGen()</spanx> of the respective component signature algorithms and it produces a composite public key <spanx style="verb">pk</spanx> as per <xref target="sec-composite-pub-keys"/> and a composite secret key <spanx style="verb">sk</spanx> is per <xref target="sec-priv-key"/>.  The component keys MUST be uniquely generated for each component key of a Composite and MUST NOT be used in any other keys or as a standalone key.</t>

</section>
<section anchor="sec-comp-sig-gen"><name>Composite Sign</name>

<t>Generation of a composite signature involves applying each component algorithm&#39;s signature process to the input message according to its specification, and then placing each component signature value into the CompositeSignatureValue structure defined in <xref target="sec-composite-sig-structs"/>.</t>

<t>The following process is used to generate composite signature values.</t>

<figure title="Composite Sign(sk, Message)" anchor="alg-composite-sign"><artwork><![CDATA[
Sign (sk, Message) -> (signature)
Input:
     K1, K2             Signing private keys for each component. See note below on 
                        composite inputs.  

     A1, A2             Component signature algorithms. See note below on 
                        composite inputs.

     Message            The Message to be signed, an octet string
     
     HASH               The Message Digest Algorithm used for pre-hashing.  See section
                        on pre-hashing below.
     
     OID                The Composite Signature String Algorithm Name converted
                        from ASCII to bytes.  See section on OID concatenation
                        below.                 

Output:
     signature          The composite signature, a CompositeSignatureValue

Signature Generation Process:
   
   1. Compute a Hash of the Message
   
         M' = HASH(Message)
         
   2. Generate the n component signatures independently,
      according to their algorithm specifications.

         S1 := Sign( K1, A1, DER(OID) || M' ) 
         S2 := Sign( K2, A2, DER(OID) || M' )

   3. Encode each component signature S1 and S2 into a BIT STRING
      according to its algorithm specification.

        signature ::= Sequence { S1, S2 }
        
   4. Output signature
]]></artwork></figure>

<t>Note on composite inputs: the method of providing the list of component keys and algorithms is flexible and beyond the scope of this pseudo-code.  When passed to the Composite Sign(sk, Message) API the sk is a CompositePrivateKey. It is possible to construct a CompositePrivateKey from component keys stored in separate software or hardware keystores. Variations in the process to accommodate particular private key storage mechanisms are considered to be conformant to this document so long as it produces the same output as the process sketched above.</t>

<t>Since recursive composite public keys are disallowed, no component signature may itself be a composite; ie the signature generation process MUST fail if one of the private keys K1 or K2 is a composite.</t>

<t>A composite signature MUST produce, and include in the output, a signature value for every component key in the corresponding CompositePublicKey, and they MUST be in the same order; ie in the output, S1 MUST correspond to K1, S2 to K2.</t>

</section>
<section anchor="sec-comp-sig-verify"><name>Composite Verify</name>

<t>Verification of a composite signature involves applying each component algorithm&#39;s verification process according to its specification.</t>

<t>Compliant applications MUST output &quot;Valid signature&quot; (true) if and only if all component signatures were successfully validated, and &quot;Invalid signature&quot; (false) otherwise.</t>

<t>The following process is used to perform this verification.</t>

<figure title="Composite Verify(pk, Message, signature)" anchor="alg-composite-verify"><artwork><![CDATA[
Composite Verify(pk, Message, signature)
Input:
     P1, P2             Public verification keys. See note below on 
                        composite inputs.

     Message            Message whose signature is to be verified, 
                        an octet string.
     
     signature          CompositeSignatureValue containing the component
                        signature values (S1 and S2) to be verified.            
     
     A1, A2             Component signature algorithms. See note 
                        below on composite inputs.
                        
     HASH               The Message Digest Algorithm for pre-hashing.  See
                        section on pre-hashing the message below.
     
     OID                The Composite Signature String Algorithm Name converted
                        from ASCII to bytes.  See section on OID concatenation
                        below                 

Output:
    Validity (bool)    "Valid signature" (true) if the composite 
                        signature is valid, "Invalid signature" 
                        (false) otherwise.

Signature Verification Procedure::
   1. Check keys, signatures, and algorithms lists for consistency.

      If Error during Desequencing, or the sequences have
      different numbers of elements, or any of the public keys 
      P1 or P2 and the algorithm identifiers A1 or A2 are 
      composite then output "Invalid signature" and stop.

   2. Compute a Hash of the Message
   
         M' = HASH(Message)  
   
   3. Check each component signature individually, according to its
       algorithm specification.
       If any fail, then the entire signature validation fails.
       
       if not verify( P1, DER(OID) || M', S1, A1 ) then
            output "Invalid signature"
       if not verify( P2, DER(OID) || M', S2, A2 ) then
            output "Invalid signature"      

       if all succeeded, then
        output "Valid signature"
]]></artwork></figure>

<t>Note on composite inputs: the method of providing the list of component keys and algorithms is flexible and beyond the scope of this pseudo-code.  When passed to the Composite Verify(pk, Message, signature) API the pk is a CompositePublicKey. It is possible to construct a CompositePublicKey from component keys stored in separate software or hardware keystores. Variations in the process to accommodate particular private key storage mechanisms are considered to be conformant to this document so long as it produces the same output as the process sketched above.</t>

<t>Since recursive composite public keys are disallowed, no component signature may itself be a composite; ie the signature generation process MUST fail if one of the private keys K1 or K2 is a composite.</t>

</section>
</section>
<section anchor="sec-oid-concat"><name>OID Concatenation</name>

<t>As mentioned above, the OID input value for the Composite Signature Generation and verification process is the DER encoding of the OID represented in Hexidecimal bytes.   The following table shows the HEX encoding for each Signature AlgorithmID</t>

<texttable title="Composite Signature OID Concatenations" anchor="tab-sig-alg-oids">
      <ttcol align='left'>Composite Signature AlgorithmID</ttcol>
      <ttcol align='left'>DER Encoding to be prepended to each Message</ttcol>
      <c>id-MLDSA44-RSA2048-PSS-SHA256</c>
      <c>060B6086480186FA6B50080101</c>
      <c>id-MLDSA44-RSA2048-PKCS15-SHA256</c>
      <c>060B6086480186FA6B50080102</c>
      <c>id-MLDSA44-Ed25519-SHA512</c>
      <c>060B6086480186FA6B50080103</c>
      <c>id-MLDSA44-ECDSA-P256-SHA256</c>
      <c>060B6086480186FA6B50080104</c>
      <c>id-MLDSA44-ECDSA-brainpoolP256r1-SHA256</c>
      <c>060B6086480186FA6B50080105</c>
      <c>id-MLDSA65-RSA3072-PSS-SHA512</c>
      <c>060B6086480186FA6B50080106</c>
      <c>id-MLDSA65-RSA3072-PKCS15-SHA512</c>
      <c>060B6086480186FA6B50080107</c>
      <c>id-MLDSA65-ECDSA-P256-SHA512</c>
      <c>060B6086480186FA6B50080108</c>
      <c>id-MLDSA65-ECDSA-brainpoolP256r1-SHA512</c>
      <c>060B6086480186FA6B50080109</c>
      <c>id-MLDSA65-Ed25519-SHA512</c>
      <c>060B6086480186FA6B5008010A</c>
      <c>id-MLDSA87-ECDSA-P384-SHA512</c>
      <c>060B6086480186FA6B5008010B</c>
      <c>id-MLDSA87-ECDSA-brainpoolP384r1-SHA512</c>
      <c>060B6086480186FA6B5008010C</c>
      <c>id-MLDSA87-Ed448-SHA512</c>
      <c>060B6086480186FA6B5008010D</c>
</texttable>

</section>
<section anchor="sec-prehash"><name>PreHashing the Message</name>
<t>As noted in the composite signature generation process and composite signature verification process, the Message should be pre-hashed into M&#39; with the digest algorithm specified in the composite signature algorithm identifier.  The choice of the digest algorithm was chosen with the following criteria:</t>

<t><list style="numbers">
  <t>For composites paired with RSA or ECDSA, the hashing algorithm SHA256 or SHA512 is used as part of the RSA or ECDSA signature algorithm and is therefore also used as the composite prehashing algorithm.</t>
  <t>For ML-DSA signing a digest of the message is allowed as long as the hash function provides at least y bits of classical security strength against both collision and second preimage attacks.   For MLDSA44 y is 128 bits, MLDSA65 y is 192 bits and for MLDSA87 y is 256 bits.  Therefore SHA256 is paired with RSA and ECDSA with MLDSA44 and SHA512 is paired with RSA and ECDSA with MLDSA65 and MLDSA87 to match the appropriate security strength.</t>
  <t>Ed25519 <xref target="RFC8032"></xref> uses SHA512 internally, therefore SHA512 is used to pre-hash the message when Ed25519 is a component algorithm.</t>
  <t>Ed448 <xref target="RFC8032"></xref> uses SHAKE256 internally, but to reduce the set of prehashing algorihtms, SHA512 was selected to pre-hash the message when Ed448 is a component algorithm.</t>
</list></t>

<!-- End of Composite Signature Algorithm section -->

</section>
<section anchor="algorithm-selection-criteria"><name>Algorithm Selection Criteria</name>

<t>The composite algorithm combinations defined in this document were chosen according to the following guidelines:</t>

<t><list style="numbers">
  <t>A single RSA combination is provided at a key size of 3072 bits, matched with NIST PQC Level 3 algorithms.</t>
  <t>Elliptic curve algorithms are provided with combinations on each of the NIST <xref target="RFC6090"></xref>, Brainpool <xref target="RFC5639"></xref>, and Edwards <xref target="RFC7748"></xref> curves. NIST PQC Levels 1 - 3 algorithms are matched with 256-bit curves, while NIST levels 4 - 5 are matched with 384-bit elliptic curves. This provides a balance between matching classical security levels of post-quantum and traditional algorithms, and also selecting elliptic curves which already have wide adoption.</t>
  <t>NIST level 1 candidates are provided, matched with 256-bit elliptic curves, intended for constrained use cases.</t>
</list></t>

<t>If other combinations are needed, a separate specification should be submitted to the IETF LAMPS working group.  To ease implementation, these specifications are encouraged to follow the construction pattern of the algorithms specified in this document.</t>

<t>The composite structures defined in this specification allow only for pairs of algorithms. This also does not preclude future specification from extending these structures to define combinations with three or more components.</t>

</section>
</section>
<section anchor="sec-composite-structs"><name>Composite Signature Structures</name>

<t>In order for signatures to be composed of multiple algorithms, we define encodings consisting of a sequence of signature primitives (aka &quot;component algorithms&quot;) such that these structures can be used as a drop-in replacement for existing signature fields such as those found in PKCS#10 <xref target="RFC2986"></xref>, CMP <xref target="RFC4210"></xref>, X.509 <xref target="RFC5280"></xref>, CMS <xref target="RFC5652"></xref>.</t>

<section anchor="pk-compositesignature"><name>pk-CompositeSignature</name>

<t>The following ASN.1 Information Object Class is a template to be used in defining all composite Signature public key types.</t>

<figure><sourcecode type="ASN.1" name="CompositeKeyObject-asn.1-structures"><![CDATA[
pk-CompositeSignature {OBJECT IDENTIFIER:id, 
  FirstPublicKeyType,SecondPublicKeyType} 
    PUBLIC-KEY ::= {
      IDENTIFIER id
      KEY SEQUENCE {
        firstPublicKey BIT STRING (CONTAINING FirstPublicKeyType),
        secondPublicKey BIT STRING (CONTAINING SecondPublicKeyType)
      }
      PARAMS ARE absent
      CERT-KEY-USAGE { digitalSignature, nonRepudiation, keyCertSign, cRLSign}
    } 
]]></sourcecode></figure>

<t>As an example, the public key type <spanx style="verb">pk-MLDSA65-ECDSA-P256-SHA256</spanx> is defined as:</t>

<figure><artwork><![CDATA[
pk-MLDSA65-ECDSA-P256-SHA256 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA65-ECDSA-P256-SHA256,
  OCTET STRING, ECPoint}
]]></artwork></figure>

<t>The full set of key types defined by this specification can be found in the ASN.1 Module in <xref target="sec-asn1-module"/>.</t>

</section>
<section anchor="sec-composite-pub-keys"><name>CompositeSignaturePublicKey</name>

<t>Composite public key data is represented by the following structure:</t>

<figure><sourcecode type="ASN.1" name="CompositeSignaturePublicKey-asn.1-structures"><![CDATA[
CompositeSignaturePublicKey ::= SEQUENCE SIZE (2) OF BIT STRING
]]></sourcecode></figure>

<t>A composite key MUST contain two component public keys. The order of the component keys is determined by the definition of the corresponding algorithm identifier as defined in section <xref target="sec-alg-ids"/>.</t>

<t>Some applications may need to reconstruct the <spanx style="verb">SubjectPublicKeyInfo</spanx> objects corresponding to each component public key. <xref target="tab-sig-algs"/> in <xref target="sec-alg-ids"/> provides the necessary mapping between composite and their component algorithms for doing this reconstruction. This also motivates the design choice of <spanx style="verb">SEQUENCE OF BIT STRING</spanx> instead of <spanx style="verb">SEQUENCE OF OCTET STRING</spanx>; using <spanx style="verb">BIT STRING</spanx> allows for easier transcription between CompositeSignaturePublicKey and SubjectPublicKeyInfo.</t>

<t>When the CompositeSignaturePublicKey must be provided in octet string or bit string format, the data structure is encoded as specified in <xref target="sec-encoding-rules"/>.</t>

<t>Component keys of a CompositeSignaturePublicKey MUST NOT be used in any other type of key or as a standalone key.</t>

</section>
<section anchor="sec-priv-key"><name>CompositeSignaturePrivateKey</name>

<t>Usecases that require an interoperable encoding for composite private keys, such as when private keys are carried in PKCS #12 <xref target="RFC7292"></xref>, CMP <xref target="RFC4210"></xref> or CRMF <xref target="RFC4211"></xref> MUST use the following structure.</t>

<figure><sourcecode type="ASN.1" name="CompositeSignaturePrivateKey-asn.1-structures"><![CDATA[
CompositeSignaturePrivateKey ::= SEQUENCE SIZE (2) OF OneAsymmetricKey
]]></sourcecode></figure>

<t>Each element is a <spanx style="verb">OneAsymmetricKey</spanx>` <xref target="RFC5958"></xref> object for a component private key.</t>

<t>The parameters field MUST be absent.</t>

<t>The order of the component keys is the same as the order defined in <xref target="sec-composite-pub-keys"/> for the components of CompositeSignaturePublicKey.</t>

<t>When a <spanx style="verb">CompositeSignaturePrivateKey</spanx> is conveyed inside a OneAsymmetricKey structure (version 1 of which is also known as PrivateKeyInfo) <xref target="RFC5958"></xref>, the privateKeyAlgorithm field SHALL be set to the corresponding composite algorithm identifier defined according to <xref target="sec-alg-ids"/>, the privateKey field SHALL contain the CompositeSignaturePrivateKey, and the publicKey field MUST NOT be present. Associated public key material MAY be present in the CompositeSignaturePrivateKey.</t>

<t>In some usecases the private keys that comprise a composite key may not be represented in a single structure or even be contained in a single cryptographic module; for example if one component is within the FIPS boundary of a cryptographic module and the other is not; see {sec-fips} for more discussion. The establishment of correspondence between public keys in a CompositeSignaturePublicKey and private keys not represented in a single composite structure is beyond the scope of this document.</t>

<t>Component keys of a CompositeSignaturePrivateKey MUST NOT be used in any other type of key or as a standalone key.</t>

</section>
<section anchor="sec-encoding-rules"><name>Encoding Rules</name>
<!-- EDNOTE 7: Examples of how other specifications specify how a data structure is converted to a bit string can be found in RFC 2313, section 10.1.4, 3279 section 2.3.5, and RFC 4055, section 3.2. -->

<t>Many protocol specifications will require that the composite public key and composite private key data structures be represented by an octet string or bit string.</t>

<t>When an octet string is required, the DER encoding of the composite data structure SHALL be used directly.</t>

<figure><sourcecode type="ASN.1"><![CDATA[
CompositeSignaturePublicKeyOs ::= OCTET STRING (CONTAINING CompositeSignaturePublicKey ENCODED BY der)
]]></sourcecode></figure>

<t>When a bit string is required, the octets of the DER encoded composite data structure SHALL be used as the bits of the bit string, with the most significant bit of the first octet becoming the first bit, and so on, ending with the least significant bit of the last octet becoming the last bit of the bit string.</t>

<figure><sourcecode type="ASN.1"><![CDATA[
CompositeSignaturePublicKeyBs ::= BIT STRING (CONTAINING CompositeSignaturePublicKey ENCODED BY der)
]]></sourcecode></figure>

<t>In the interests of simplicity and avoiding compatibility issues, implementations that parse these structures MAY accept both BER and DER.</t>

</section>
<section anchor="key-usage-bits"><name>Key Usage Bits</name>

<t>For protocols such as X.509 <xref target="RFC5280"></xref> that specify key usage along with the public key, then the composite public key associated with a composite signature MUST have a signing-type key usage.
This is because the composite public key can only be used in situations
that are appropriate for both component algorithms, so even if the
classical component key supports both signing and encryption,
the post-quantum algorithms do not.</t>

<t>If the keyUsage extension is present in a Certification Authority (CA) certificate that indicates a composite key, then any combination of the following values MAY be present and any other values MUST NOT be present:</t>

<figure><artwork><![CDATA[
digitalSignature;
nonRepudiation;
keyCertSign; and
cRLSign.
]]></artwork></figure>

<t>If the keyUsage extension is present in an End Entity (EE) certificate that indicates a composite key, then any combination of the following values MAY be present and any other values MUST NOT be present:</t>

<figure><artwork><![CDATA[
digitalSignature; and
nonRepudiation;
]]></artwork></figure>

</section>
</section>
<section anchor="composite-signature-structures"><name>Composite Signature Structures</name>

<section anchor="sec-composite-sig-structs"><name>sa-CompositeSignature</name>

<t>The ASN.1 algorithm object for a composite signature is:</t>

<figure><sourcecode type="asn.1"><![CDATA[
sa-CompositeSignature {
  OBJECT IDENTIFIER:id,
    PUBLIC-KEY:publicKeyType }
    SIGNATURE-ALGORITHM ::= {
        IDENTIFIER id
        VALUE CompositeSignatureValue
        PARAMS ARE absent
        PUBLIC-KEYS { publicKeyType }
    }
]]></sourcecode></figure>

<t>The following is an explanation how SIGNATURE-ALGORITHM elements are used 
to create Composite Signatures:</t>

<texttable>
      <ttcol align='left'>SIGNATURE-ALGORITHM element</ttcol>
      <ttcol align='left'>Definition</ttcol>
      <c>IDENTIFIER</c>
      <c>The Object ID used to identify the composite Signature Algorithm</c>
      <c>VALUE</c>
      <c>The Sequence of BIT STRINGS for each component signature value</c>
      <c>PARAMS</c>
      <c>Parameters are absent</c>
      <c>PUBLIC-KEYS</c>
      <c>The composite key required to produce the composite signature</c>
</texttable>

</section>
<section anchor="sec-compositeSignatureValue"><name>CompositeSignatureValue</name>

<t>The output of the composite signature algorithm is the DER encoding of the following structure:</t>

<figure><sourcecode type="asn.1" name="composite-sig-asn.1"><![CDATA[
CompositeSignatureValue ::= SEQUENCE SIZE (2) OF BIT STRING
]]></sourcecode></figure>

<t>Where each BIT STRING within the SEQUENCE is a signature value produced by one of the component keys. It MUST contain one signature value produced by each component algorithm, and in the same order as specified in the object identifier.</t>

<t>The choice of <spanx style="verb">SEQUENCE SIZE (2) OF BIT STRING</spanx>, rather than for example a single BIT STRING containing the concatenated signature values, is to gracefully handle variable-length signature values by taking advantage of ASN.1&#39;s built-in length fields.</t>

</section>
</section>
<section anchor="sec-alg-ids"><name>Algorithm Identifiers</name>

<t>This section defines the algorithm identifiers for explicit combinations.  For simplicity and prototyping purposes, the signature algorithm object identifiers specified in this document are the same as the composite key object Identifiers.  A proper implementation should not presume that the object ID of a composite key will be the same as its composite signature algorithm.</t>

<t>This section is not intended to be exhaustive and other authors may define other composite signature algorithms so long as they are compatible with the structures and processes defined in this and companion public and private key documents.</t>

<t>Some use-cases desire the flexibility for clients to use any combination of supported algorithms, while others desire the rigidity of explicitly-specified combinations of algorithms.</t>

<t>The following table summarizes the details for each explicit composite signature algorithms:</t>

<t>The OID referenced are TBD for prototyping only, and the following prefix is used for each:</t>

<t>replace &lt;CompSig&gt; with the String &quot;2.16.840.1.114027.80.8.1&quot;</t>

<t>Therefore &lt;CompSig&gt;.1 is equal to 2.16.840.1.114027.80.8.1.1</t>

<t>Signature public key types:</t>

<texttable title="Composite Signature Algorithms" anchor="tab-sig-algs">
      <ttcol align='left'>Composite Signature AlgorithmID</ttcol>
      <ttcol align='left'>OID</ttcol>
      <ttcol align='left'>First Algorithm</ttcol>
      <ttcol align='left'>Second Algorithm</ttcol>
      <ttcol align='left'>Pre-Hash</ttcol>
      <c>id-MLDSA44-RSA2048-PSS-SHA256</c>
      <c>&lt;CompSig&gt;.1</c>
      <c>MLDSA44</c>
      <c>SHA256WithRSAPSS</c>
      <c>SHA256</c>
      <c>id-MLDSA44-RSA2048-PKCS15-SHA256</c>
      <c>&lt;CompSig&gt;.2</c>
      <c>MLDSA44</c>
      <c>SHA256WithRSAEncryption</c>
      <c>SHA256</c>
      <c>id-MLDSA44-Ed25519-SHA512</c>
      <c>&lt;CompSig&gt;.3</c>
      <c>MLDSA44</c>
      <c>Ed25519</c>
      <c>SHA512</c>
      <c>id-MLDSA44-ECDSA-P256-SHA256</c>
      <c>&lt;CompSig&gt;.4</c>
      <c>MLDSA44</c>
      <c>SHA256withECDSA</c>
      <c>SHA256</c>
      <c>id-MLDSA44-ECDSA-brainpoolP256r1-SHA256</c>
      <c>&lt;CompSig&gt;.5</c>
      <c>MLDSA44</c>
      <c>SHA256withECDSA</c>
      <c>SHA256</c>
      <c>id-MLDSA65-RSA3072-PSS-SHA512</c>
      <c>&lt;CompSig&gt;.6</c>
      <c>MLDSA65</c>
      <c>SHA512WithRSAPSS</c>
      <c>SHA512</c>
      <c>id-MLDSA65-RSA3072-PKCS15-SHA512</c>
      <c>&lt;CompSig&gt;.7</c>
      <c>MLDSA65</c>
      <c>SHA512WithRSAEncryption</c>
      <c>SHA512</c>
      <c>id-MLDSA65-ECDSA-P256-SHA512</c>
      <c>&lt;CompSig&gt;.8</c>
      <c>MLDSA65</c>
      <c>SHA512withECDSA</c>
      <c>SHA512</c>
      <c>id-MLDSA65-ECDSA-brainpoolP256r1-SHA512</c>
      <c>&lt;CompSig&gt;.9</c>
      <c>MLDSA65</c>
      <c>SHA512withECDSA</c>
      <c>SHA512</c>
      <c>id-MLDSA65-Ed25519-SHA512</c>
      <c>&lt;CompSig&gt;.10</c>
      <c>MLDSA65</c>
      <c>Ed25519</c>
      <c>SHA512</c>
      <c>id-MLDSA87-ECDSA-P384-SHA512</c>
      <c>&lt;CompSig&gt;.11</c>
      <c>MLDSA87</c>
      <c>SHA512withECDSA</c>
      <c>SHA512</c>
      <c>id-MLDSA87-ECDSA-brainpoolP384r1-SHA512</c>
      <c>&lt;CompSig&gt;.12</c>
      <c>MLDSA87</c>
      <c>SHA512withECDSA</c>
      <c>SHA512</c>
      <c>id-MLDSA87-Ed448-SHA512</c>
      <c>&lt;CompSig&gt;.13</c>
      <c>MLDSA87</c>
      <c>Ed448</c>
      <c>SHA512</c>
</texttable>

<t>The table above contains everything needed to implement the listed explicit composite algorithms. See the ASN.1 module in section <xref target="sec-asn1-module"/> for the explicit definitions of the above Composite signature algorithms.</t>

<t>Full specifications for the referenced algorithms can be found as follows:</t>

<t><list style="symbols">
  <t><em>MLDSA</em>: <xref target="I-D.ietf-lamps-dilithium-certificates"/> and [FIPS.204-ipd]</t>
  <t><em>ECDSA</em>: <xref target="RFC5480"></xref></t>
  <t><em>Ed25519 / Ed448</em>: <xref target="RFC8410"></xref></t>
  <t><em>RSAES-PKCS-v1_5</em>: <xref target="RFC8017"></xref></t>
  <t><em>RSASSA-PSS</em>: <xref target="RFC8017"></xref></t>
</list></t>

<section anchor="notes-on-id-mldsa44-rsa2048-pss-sha256"><name>Notes on id-MLDSA44-RSA2048-PSS-SHA256</name>

<t>Use of RSA-PSS <xref target="RFC8017"></xref> deserves a special explanation.</t>

<t>The RSA component keys MUST be generated at the 2048-bit security level in order to match with ML-DSA-44</t>

<t>As with the other composite signature algorithms, when <spanx style="verb">id-MLDSA44-RSA2048-PSS-SHA256</spanx> is used in an AlgorithmIdentifier, the parameters MUST be absent. <spanx style="verb">id-MLDSA44-RSA2048-PSS-SHA256</spanx> SHALL instantiate RSA-PSS with the following parameters:</t>

<texttable title="RSA-PSS 2048 Parameters" anchor="rsa-pss-params2048">
      <ttcol align='left'>RSA-PSS Parameter</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>Mask Generation Function</c>
      <c>mgf1</c>
      <c>Mask Generation params</c>
      <c>SHA-256</c>
      <c>Message Digest Algorithm</c>
      <c>SHA-256</c>
</texttable>

<t>where:</t>

<t><list style="symbols">
  <t><spanx style="verb">Mask Generation Function (mgf1)</spanx> is defined in <xref target="RFC8017"></xref></t>
  <t><spanx style="verb">SHA-256</spanx> is defined in <xref target="RFC6234"></xref>.</t>
</list></t>

</section>
<section anchor="notes-on-id-mldsa65-rsa3072-pss-sha512"><name>Notes on id-MLDSA65-RSA3072-PSS-SHA512</name>

<t>The RSA component keys MUST be generated at the 3072-bit security level in order to match with ML-DSA-65.</t>

<t>As with the other composite signature algorithms, when <spanx style="verb">id-MLDSA65-RSA3072-PSS-SHA512</spanx>  is used in an AlgorithmIdentifier, the parameters MUST be absent. <spanx style="verb">id-MLDSA65-RSA3072-PSS-SHA512</spanx> SHALL instantiate RSA-PSS with the following parameters:</t>

<texttable title="RSA-PSS 3072 Parameters" anchor="rsa-pss-params3072">
      <ttcol align='left'>RSA-PSS Parameter</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>Mask Generation Function</c>
      <c>mgf1</c>
      <c>Mask Generation params</c>
      <c>SHA-512</c>
      <c>Message Digest Algorithm</c>
      <c>SHA-512</c>
</texttable>

<t>where:</t>

<t><list style="symbols">
  <t><spanx style="verb">Mask Generation Function (mgf1)</spanx> is defined in <xref target="RFC8017"></xref></t>
  <t><spanx style="verb">SHA-512</spanx> is defined in <xref target="RFC6234"></xref>.</t>
</list></t>

<!-- End of Composite Signature Algorithm section -->

</section>
</section>
<section anchor="sec-asn1-module"><name>ASN.1 Module</name>

<figure><sourcecode type="asn.1"><![CDATA[
<CODE STARTS>


   Composite-Signatures-2023
      { joint-iso-itu-t(2) country(16) us(840) organization(1) entrust(114027)
        algorithm(80) id-composite-signatures-2023 (TBDMOD) }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS
  PUBLIC-KEY, SIGNATURE-ALGORITHM, AlgorithmIdentifier{}
    FROM AlgorithmInformation-2009  -- RFC 5912 [X509ASN1]
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-algorithmInformation-02(58) }

  SubjectPublicKeyInfo
    FROM PKIX1Explicit-2009
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-pkix1-explicit-02(51) }

  OneAsymmetricKey
    FROM AsymmetricKeyPackageModuleV1
      { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
        pkcs-9(9) smime(16) modules(0)
        id-mod-asymmetricKeyPkgV1(50) } 

  RSAPublicKey, ECPoint
    FROM PKIXAlgs-2009 
      { iso(1) identified-organization(3) dod(6)
        internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-pkix1-algorithms2008-02(56) }
        
  sa-rsaSSA-PSS
    FROM PKIX1-PSS-OAEP-Algorithms-2009
       {iso(1) identified-organization(3) dod(6) internet(1) security(5)
       mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-rsa-pkalgs-02(54)}
       
;       
        
--
-- Object Identifiers
--

-- Defined in ITU-T X.690
der OBJECT IDENTIFIER ::=
  {joint-iso-itu-t asn1(1) ber-derived(2) distinguished-encoding(1)}




--
-- Signature Algorithm
--


--
-- Composite Signature basic structures
--

CompositeSignaturePublicKey ::= SEQUENCE SIZE (2) OF BIT STRING

CompositeSignaturePublicKeyOs ::= OCTET STRING (CONTAINING 
                                CompositeSignaturePublicKey ENCODED BY der)

CompositeSignaturePublicKeyBs ::= BIT STRING (CONTAINING 
                                CompositeSignaturePublicKey ENCODED BY der)

CompositeSignaturePrivateKey ::= SEQUENCE SIZE (2) OF OneAsymmetricKey

CompositeSignatureValue ::= SEQUENCE SIZE (2) OF BIT STRING

-- Composite Signature Value is just a sequence of OCTET STRINGS

--   CompositeSignaturePair{FirstSignatureValue, SecondSignatureValue} ::= 
--     SEQUENCE {
--      signaturevalue1 FirstSignatureValue,
--      signaturevalue2 SecondSignatureValue }

   -- An Explicit Compsite Signature is a set of Signatures which 
   -- are composed of OCTET STRINGS
--   ExplicitCompositeSignatureValue ::= CompositeSignaturePair {
--       OCTET STRING,OCTET STRING}
    

--
-- Information Object Classes
--

pk-CompositeSignature {OBJECT IDENTIFIER:id, 
  FirstPublicKeyType,SecondPublicKeyType} 
    PUBLIC-KEY ::= {
      IDENTIFIER id
      KEY SEQUENCE {
        firstPublicKey BIT STRING (CONTAINING FirstPublicKeyType),
        secondPublicKey BIT STRING (CONTAINING SecondPublicKeyType)
      }
      PARAMS ARE absent
      CERT-KEY-USAGE { digitalSignature, nonRepudiation, keyCertSign, cRLSign}
    } 
                                                                                                                        

sa-CompositeSignature{OBJECT IDENTIFIER:id, 
   PUBLIC-KEY:publicKeyType } 
      SIGNATURE-ALGORITHM ::=  {
         IDENTIFIER id
         VALUE CompositeSignatureValue
         PARAMS ARE absent
         PUBLIC-KEYS {publicKeyType} 
      }

-- TODO: OID to be replaced by IANA
id-MLDSA44-RSA2048-PSS-SHA256 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 1 }

pk-MLDSA44-RSA2048-PSS-SHA256 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA44-RSA2048-PSS-SHA256,
  OCTET STRING, RSAPublicKey}

sa-MLDSA44-RSA2048-PSS-SHA256 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA44-RSA2048-PSS-SHA256, 
       pk-MLDSA44-RSA2048-PSS-SHA256 }
       
-- TODO: OID to be replaced by IANA
id-MLDSA44-RSA2048-PKCS15-SHA256 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 2 }

pk-MLDSA44-RSA2048-PKCS15-SHA256 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA44-RSA2048-PKCS15-SHA256,
  OCTET STRING, RSAPublicKey}

sa-MLDSA44-RSA2048-PKCS15-SHA256 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA44-RSA2048-PKCS15-SHA256, 
       pk-MLDSA44-RSA2048-PKCS15-SHA256 } 
    
       
-- TODO: OID to be replaced by IANA
id-MLDSA44-Ed25519-SHA512 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 3 }

pk-MLDSA44-Ed25519-SHA512 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA44-Ed25519-SHA512,
  OCTET STRING, ECPoint}

sa-MLDSA44-Ed25519-SHA512 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA44-Ed25519-SHA512, 
       pk-MLDSA44-Ed25519-SHA512 } 
       
       
-- TODO: OID to be replaced by IANA
id-MLDSA44-ECDSA-P256-SHA256 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 4 }

pk-MLDSA44-ECDSA-P256-SHA256 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA44-ECDSA-P256-SHA256,
  OCTET STRING, ECPoint}

sa-MLDSA44-ECDSA-P256-SHA256 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA44-ECDSA-P256-SHA256, 
       pk-MLDSA44-ECDSA-P256-SHA256 }   
       
  
-- TODO: OID to be replaced by IANA
id-MLDSA44-ECDSA-brainpoolP256r1-SHA256 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 5 }

pk-MLDSA44-ECDSA-brainpoolP256r1-SHA256 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA44-ECDSA-brainpoolP256r1-SHA256,
  OCTET STRING, ECPoint}

sa-MLDSA44-ECDSA-brainpoolP256r1-SHA256 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA44-ECDSA-brainpoolP256r1-SHA256, 
       pk-MLDSA44-ECDSA-brainpoolP256r1-SHA256 }  
       

-- TODO: OID to be replaced by IANA
id-MLDSA65-RSA3072-PSS-SHA512 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 6 }

pk-MLDSA65-RSA3072-PSS-SHA512 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA65-RSA3072-PSS-SHA512,
  OCTET STRING, RSAPublicKey}

sa-MLDSA65-RSA3072-PSS-SHA512 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA65-RSA3072-PSS-SHA512, 
       pk-MLDSA65-RSA3072-PSS-SHA512 }   
       
    
-- TODO: OID to be replaced by IANA
id-MLDSA65-RSA3072-PKCS15-SHA512 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 7 }

pk-MLDSA65-RSA3072-PKCS15-SHA512 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA65-RSA3072-PKCS15-SHA512,
  OCTET STRING, RSAPublicKey}

sa-MLDSA65-RSA3072-PKCS15-SHA512 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA65-RSA3072-PKCS15-SHA512, 
       pk-MLDSA65-RSA3072-PKCS15-SHA512 } 
                                                 
      
-- TODO: OID to be replaced by IANA
id-MLDSA65-ECDSA-P256-SHA512 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 8 }

pk-MLDSA65-ECDSA-P256-SHA512 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA65-ECDSA-P256-SHA512,
  OCTET STRING, ECPoint}

sa-MLDSA65-ECDSA-P256-SHA512 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA65-ECDSA-P256-SHA512, 
       pk-MLDSA65-ECDSA-P256-SHA512 }
       

-- TODO: OID to be replaced by IANA
id-MLDSA65-ECDSA-brainpoolP256r1-SHA512 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 9 }

pk-id-MLDSA65-ECDSA-brainpoolP256r1-SHA512 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA65-ECDSA-brainpoolP256r1-SHA512,
  OCTET STRING, ECPoint}

sa-id-MLDSA65-ECDSA-brainpoolP256r1-SHA512 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA65-ECDSA-brainpoolP256r1-SHA512, 
       pk-id-MLDSA65-ECDSA-brainpoolP256r1-SHA512 }       


-- TODO: OID to be replaced by IANA
id-MLDSA65-Ed25519-SHA512 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 10 }

pk-MLDSA65-Ed25519-SHA512 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA65-Ed25519-SHA512,
  OCTET STRING, ECPoint}

sa-MLDSA65-Ed25519-SHA512 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA65-Ed25519-SHA512, 
       pk-MLDSA65-Ed25519-SHA512 } 
       
       
-- TODO: OID to be replaced by IANA
id-MLDSA87-ECDSA-P384-SHA512 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 11 }

pk-MLDSA87-ECDSA-P384-SHA512 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA87-ECDSA-P384-SHA512,
  OCTET STRING, ECPoint}

sa-MLDSA87-ECDSA-P384-SHA512 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA87-ECDSA-P384-SHA512, 
       pk-MLDSA87-ECDSA-P384-SHA512 }   
       
  
-- TODO: OID to be replaced by IANA
id-MLDSA87-ECDSA-brainpoolP384r1-SHA512 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 12 }

pk-MLDSA87-ECDSA-brainpoolP384r1-SHA512 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA87-ECDSA-brainpoolP384r1-SHA512,
  OCTET STRING, ECPoint}

sa-MLDSA87-ECDSA-brainpoolP384r1-SHA512 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA87-ECDSA-brainpoolP384r1-SHA512, 
       pk-MLDSA87-ECDSA-brainpoolP384r1-SHA512 } 
       
       
-- TODO: OID to be replaced by IANA
id-MLDSA87-Ed448-SHA512 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 13 }

pk-MLDSA87-Ed448-SHA512 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-MLDSA87-Ed448-SHA512,
  OCTET STRING, ECPoint}

sa-MLDSA87-Ed448-SHA512 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-MLDSA87-Ed448-SHA512, 
       pk-MLDSA87-Ed448-SHA512 }  
       
-- TODO: OID to be replaced by IANA
id-Falon512-ECDSA-P256-SHA256 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 14 }

pk-Falon512-ECDSA-P256-SHA256 PUBLIC-KEY ::=
  pk-CompositeSignature{ id-Falon512-ECDSA-P256-SHA256,
  OCTET STRING, ECPoint}

sa-Falon512-ECDSA-P256-SHA256 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-Falon512-ECDSA-P256-SHA256, 
       pk-Falon512-ECDSA-P256-SHA256 } 
       
                                             
END
 
<CODE ENDS>

]]></sourcecode></figure>

</section>
<section anchor="sec-iana"><name>IANA Considerations</name>
<t>IANA is requested to allocate a value from the &quot;SMI Security for PKIX Module Identifier&quot; registry <xref target="RFC7299"></xref> for the included ASN.1 module, and allocate values from &quot;SMI Security for PKIX Algorithms&quot; to identify the fourteen Algorithms defined within.</t>

<section anchor="object-identifier-allocations"><name>Object Identifier Allocations</name>
<t>EDNOTE to IANA: OIDs will need to be replaced in both the ASN.1 module and in <xref target="tab-sig-algs"/>.</t>

<section anchor="module-registration-smi-security-for-pkix-module-identifier"><name>Module Registration - SMI Security for PKIX Module Identifier</name>
<t><list style="symbols">
  <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
  <t>Description: Composite-Signatures-2023 - id-mod-composite-signatures</t>
  <t>References: This Document</t>
</list></t>

</section>
<section anchor="object-identifier-registrations-smi-security-for-pkix-algorithms"><name>Object Identifier Registrations - SMI Security for PKIX Algorithms</name>

<t><list style="symbols">
  <t>id-MLDSA44-RSA2048-PSS-SHA256</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA44-RSA2048-PSS-SHA256</t>
  <t>References: This Document</t>
  <t>id-MLDSA44-RSA2048-PKCS15-SHA256</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA44-RSA2048-PKCS15-SHA256</t>
  <t>References: This Document</t>
  <t>id-MLDSA44-Ed25519-SHA512</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA44-Ed25519-SHA512</t>
  <t>References: This Document</t>
  <t>id-MLDSA44-ECDSA-P256-SHA256</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA44-ECDSA-P256-SHA256</t>
  <t>References: This Document</t>
  <t>id-MLDSA44-ECDSA-brainpoolP256r1-SHA256</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA44-ECDSA-brainpoolP256r1-SHA256</t>
  <t>References: This Document</t>
  <t>id-MLDSA65-RSA3072-PSS-SHA512</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA65-RSA3072-PSS-SHA512</t>
  <t>References: This Document</t>
  <t>id-MLDSA65-RSA3072-PKCS15-SHA512</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA65-RSA3072-PKCS15-SHA512</t>
  <t>References: This Document</t>
  <t>id-MLDSA65-ECDSA-P256-SHA512</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA65-ECDSA-P256-SHA512</t>
  <t>References: This Document</t>
  <t>id-MLDSA65-ECDSA-brainpoolP256r1-SHA512</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA65-ECDSA-brainpoolP256r1-SHA512</t>
  <t>References: This Document</t>
  <t>id-MLDSA65-Ed25519-SHA512</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA65-Ed25519-SHA512</t>
  <t>References: This Document</t>
  <t>id-MLDSA87-ECDSA-P384-SHA512</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA87-ECDSA-P384-SHA512</t>
  <t>References: This Document</t>
  <t>id-MLDSA87-ECDSA-brainpoolP384r1-SHA512</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA87-ECDSA-brainpoolP384r1-SHA512</t>
  <t>References: This Document</t>
  <t>id-MLDSA87-Ed448-SHA512</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-MLDSA87-Ed448-SHA512</t>
  <t>References: This Document</t>
</list></t>

<!-- End of IANA Considerations section -->

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

<section anchor="policy-for-deprecated-and-acceptable-algorithms"><name>Policy for Deprecated and Acceptable Algorithms</name>

<t>Traditionally, a public key, certificate, or signature contains a single cryptographic algorithm. If and when an algorithm becomes deprecated (for example, RSA-512, or SHA1), then clients performing signatures or verifications should be updated to adhere to appropriate policies.</t>

<t>In the composite model this is less obvious since implementers may decide that certain cryptographic algorithms have complementary security properties and are acceptable in combination even though one or both algorithms are deprecated for individual use. As such, a single composite public key or certificate may contain a mixture of deprecated and non-deprecated algorithms.</t>

<t>Since composite algorithms are registered independently of their component algorithms, their deprecation can be handled indpendently from that of their component algorithms. For example a cryptographic policy might continue to allow <spanx style="verb">id-MLDSA65-ECDSA-P256-SHA512</spanx> even after ECDSA-P256 is deprecated.</t>

<t>When considering stripping attacks, one need consider the case where an attacker has fully compromised one of the component algorithms to the point that they can produce forged signatures that appear valid under one of the component public keys, and thus fool a victim verifier into accepting a forged signature. The protection against this attack relies on the victim verifier trusting the pair of public keys as a single composite key, and not trusting the individual component keys by themselves.</t>

<t>Specifically, in order to achieve this non-separability property, this specification makes two assumptions about how the verifier will establish trust in a composite public key:</t>

<t><list style="numbers">
  <t>This specification assumes that all of the component keys within a composite key are freshly generated for the composite; ie a given public key MUST NOT appear as a component within a composite key and also within single-algorithm constructions.</t>
  <t>This specification assumes that composite public keys will be bound in a structure that contains a signature over the public key (for example, an X.509 Certificate <xref target="RFC5280"></xref>), which is chained back to a trust anchor, and where that signature algorithm is at least as strong as the composite public key that it is protecting.</t>
</list></t>

<t>There are mechanisms within Internet PKI where trusted public keys do not appear within signed structures -- such as the Trust Anchor format defined in [RFC5914]. In such cases, it is the responsibility of implementers to ensure that trusted composite keys are distributed in a way that is tamper-resistant and does not allow the component keys to be trusted independently.</t>

<!-- End of Security Considerations section -->

<!-- Start of Appendices -->

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC2119;
&RFC2986;
&RFC4210;
&RFC4211;
&RFC5280;
&RFC5480;
&RFC5639;
&RFC5652;
&RFC5958;
&RFC6090;
&RFC6234;
&RFC7748;
&RFC8032;
&RFC8174;
&RFC8410;
&RFC8411;
<reference anchor="X.690" >
  <front>
    <title>Information technology - ASN.1 encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
    <author >
      <organization>ITU-T</organization>
    </author>
    <date year="2015" month="November"/>
  </front>
  <seriesInfo name="ISO/IEC" value="8825-1:2015"/>
</reference>


    </references>

    <references title='Informative References'>

&RFC3279;
&RFC7292;
&RFC7296;
&RFC7299;
&RFC8446;
&RFC8551;
&RFC8017;
&I-D.draft-hale-pquip-hybrid-signature-spectrums-01;
&I-D.draft-ounsworth-pq-composite-kem-01;
&I-D.draft-becker-guthrie-noncomposite-hybrid-auth-00;
&I-D.draft-guthrie-ipsecme-ikev2-hybrid-auth-00;
&I-D.draft-pala-klaussner-composite-kofn-00;
&I-D.draft-driscoll-pqt-hybrid-terminology-01;
&I-D.draft-vaira-pquip-pqc-use-cases-00;
&I-D.draft-massimo-lamps-pq-sig-certificates-00;
&I-D.draft-ietf-lamps-dilithium-certificates-01;
<reference anchor="Bindel2017" target="https://link.springer.com/chapter/10.1007/978-3-319-59879-6_22">
  <front>
    <title>Transitioning to a quantum-resistant public key infrastructure</title>
    <author initials="N." surname="Bindel" fullname="Nina Bindel">
      <organization></organization>
    </author>
    <author initials="U." surname="Herath" fullname="Udyani Herath">
      <organization></organization>
    </author>
    <author initials="M." surname="McKague" fullname="Matthew McKague">
      <organization></organization>
    </author>
    <author initials="D." surname="Stebila" fullname="Douglas Stebila">
      <organization></organization>
    </author>
    <date year="2017"/>
  </front>
</reference>
<reference anchor="BSI2021" target="https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/Brochure/quantum-safe-cryptography.pdf">
  <front>
    <title>Quantum-safe cryptography - fundamentals, current developments and recommendations</title>
    <author >
      <organization>Federal Office for Information Security (BSI)</organization>
    </author>
    <date year="2021" month="October"/>
  </front>
</reference>
<reference anchor="ANSSI2024" target="https://cyber.gouv.fr/sites/default/files/document/Quantum_Key_Distribution_Position_Paper.pdf">
  <front>
    <title>Position Paper on Quantum Key Distribution</title>
    <author >
      <organization>French Cybersecurity Agency (ANSSI)</organization>
    </author>
    <author >
      <organization>Federal Office for Information Security (BSI)</organization>
    </author>
    <author >
      <organization>Netherlands National Communications Security Agency (NLNCSA)</organization>
    </author>
    <author >
      <organization>Swedish National Communications Security Authority, Swedish Armed Forces</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>


<section anchor="appdx-samples"><name>Samples</name>

<section anchor="appdx-expComposite-examples"><name>Explicit Composite Signature Examples</name>

<section anchor="mldsa44-ecdsa-p256-sha256-public-key"><name>MLDSA44-ECDSA-P256-SHA256 Public Key</name>

<t>-----BEGIN PUBLIC KEY-----
MIIFgTANBgtghkgBhvprUAgBBAOCBW4AMIIFaQOCBSEAJaSzbEOXCT27FgXshv87
2HLTgePmYCJCH2OVUi/PB9YTyBXXnw+smoXT4w0pcq3WPs7qQXz6GKj7R0mFfTjp
Rd6uH3hgdS5cbg+PwMWsRKigE6mWFpMwrliS8CfR2yYgjhRav7wGa4ja7RdmZoLz
T8UBN2Yg6P/KceWA1gX6rdVUalrUvmcfR64ry06IfotXXNFwQc3vI6s7khHSUZX5
Rsw55RK3E0ElNpZxfFHv17d2xwFkGRAYqJao+qo37WtfG6Ynx4cqQyLJzlRn++5R
G6K1nCwqhErpk4vDR2uHIwAPiW0StX9ZbBjO2smRTIuWS2WhmhZwJkDqSHmCiRI2
tPsxCtLpM8t2IhTVy/ObAdQGPDngTNIPH8kuoRrBhWGIiWJMlo8LkImCRt5m/8Di
aL8C2BQNL+BWBBcak/JZrLkKZOZM7pFwWruHVEd0608XerfiVO3ypqAxImJ2xcdD
kLys4jDlEMsC3oz4RQGXahj2Pr8Jxu8i0TIDDdV5MZw9wId/m+0/vSD8BOAu09Wu
V6ppUWkDZLHlzf12zx3ZzBF/CMqZNsxMdTFNbu2qQ2/CZMlEvZ9f0gxn6qNf8NHC
UqdeRr7p9z8PuGHErLHqCvQMrzia71cD4URV//SR8EUQkoo9imtw3XT2uKGUIjT/
dDyqWl8BlAZ64dUp9EWmHwG1cyKBcu2dtD0d4BMol1g4TOF7u/3hHcgOoiR+ON/3
7MoxkX9mHt6tP7hkVWy0Mb3Sjej12DG75D9z8gAzHyQhOs3suNliCzCUmUVYm5Mv
WdySiuShm6yu+9Ah+GqvESuNr/h6s1gZGbdCe9llGdFPniilhL5J9oDgYMp+wi2I
EeOugOFoaY1e2OI1OPjBpg1071ko9B3CGD+0PkPvKYmMGs0HTnzFWCLPj5dG2kg7
PEltarKvLVTIxrbjw03l3SXmqpNPU8SqFJ7hB3OpFJgjqL95IRTa68UM8aaUKLMa
Qjjx08+e13P3wwY3niCR5U751fus4ArGLN2JgfPB7bPSdz043PIvxsCYZxUQXSW3
xWhWQqaHJLml19obvnf/tEXQZLheAr7hOEb/UTNUIBj/A6LfB0Gs012B1aXfne4W
9K/OFXc9p0C7aWIfjfMrA/idOrd1Eoo2NGLid+wp8aXyDZkCf5OUretEFHqQcQ2J
znh8R4mh2Tf7hT8+Gj5Su6bZggHi9iIJZ1G7i0j4Wm3g6DJAXF6KbChMayKRunDp
k6Nm5iOeTmT+Vi4OJncuI6HezZMzO2s+2iY33uDL7tFR8fVn7dQiF78c1aNhWjfm
fIsLNQdZxt6orvnwSrZpdVhOtAu+vYVaEAShdHgfzvPSDHIjgyxs6mGdk0uDsGpP
f5d3e9KV40rXir2OXaYMOq2KTkLb6KHHxZayLG0D9/qSBOnSE/aXNhh1cHtKeYAe
jjXmfzsmgNELPNxFRrx8pEHG1Se0GJNJVZE9u6B2r9f09TgTxgPX/6XpBNUrlz21
fsIvNpRL48cwLHOCgYP/SAgE3gzRC6G5NEE19wQZHsFNGeUeGvrvUQgTyT1YwLx+
Abvp57bVjgLWli185/K1a8BmJ204RHfDhSFe7sVAIoI2pUcz7ydb178DCAvupP20
CxUIkgOk3C+cgUzTwsFU4iiix282ZBa8/nTUnH9r3IDJQJwdWtMCnByCc43UeVSh
WV3isRF+ANl6lSevNj0uzGE07a5gPahctBWMmevh6qFcv5XucwNRe7en96o7CgK+
5QNCAAReie6V/SXhsV0+AAEPt/7UjJqzbrZU1ZHKBLCDbX1cv1Zkpy+SabE2Pfpd
K7SzfBpZw0txE+bjIUT4j3zjgIDa
-----END PUBLIC KEY-----</t>

</section>
<section anchor="mldsa44-ecdsa-p256-private-key"><name>MLDSA44-ECDSA-P256 Private Key</name>

<t>-----BEGIN PRIVATE KEY-----
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
-----END PRIVATE KEY-----</t>

</section>
<section anchor="mldsa44-ecdsa-p256-self-signed-x509-certificate"><name>MLDSA44-ECDSA-P256 Self-Signed X509 Certificate</name>

<t>-----BEGIN CERTIFICATE-----
MIIP+TCCBhqgAwIBAgIUEsa5EwG0Ligbb3NMHEmsqr0IoKMwDQYLYIZIAYb6a1AI
AQQwEjEQMA4GA1UEAwwHb3FzdGVzdDAeFw0yNDAzMDEyMzE5MzFaFw0yNTAzMDEy
MzE5MzFaMBIxEDAOBgNVBAMMB29xc3Rlc3QwggWBMA0GC2CGSAGG+mtQCAEEA4IF
bgAwggVpA4IFIQAlpLNsQ5cJPbsWBeyG/zvYctOB4+ZgIkIfY5VSL88H1hPIFdef
D6yahdPjDSlyrdY+zupBfPoYqPtHSYV9OOlF3q4feGB1LlxuD4/AxaxEqKATqZYW
kzCuWJLwJ9HbJiCOFFq/vAZriNrtF2ZmgvNPxQE3ZiDo/8px5YDWBfqt1VRqWtS+
Zx9HrivLToh+i1dc0XBBze8jqzuSEdJRlflGzDnlErcTQSU2lnF8Ue/Xt3bHAWQZ
EBiolqj6qjfta18bpifHhypDIsnOVGf77lEborWcLCqESumTi8NHa4cjAA+JbRK1
f1lsGM7ayZFMi5ZLZaGaFnAmQOpIeYKJEja0+zEK0ukzy3YiFNXL85sB1AY8OeBM
0g8fyS6hGsGFYYiJYkyWjwuQiYJG3mb/wOJovwLYFA0v4FYEFxqT8lmsuQpk5kzu
kXBau4dUR3TrTxd6t+JU7fKmoDEiYnbFx0OQvKziMOUQywLejPhFAZdqGPY+vwnG
7yLRMgMN1XkxnD3Ah3+b7T+9IPwE4C7T1a5XqmlRaQNkseXN/XbPHdnMEX8Iypk2
zEx1MU1u7apDb8JkyUS9n1/SDGfqo1/w0cJSp15Gvun3Pw+4YcSsseoK9AyvOJrv
VwPhRFX/9JHwRRCSij2Ka3DddPa4oZQiNP90PKpaXwGUBnrh1Sn0RaYfAbVzIoFy
7Z20PR3gEyiXWDhM4Xu7/eEdyA6iJH443/fsyjGRf2Ye3q0/uGRVbLQxvdKN6PXY
MbvkP3PyADMfJCE6zey42WILMJSZRVibky9Z3JKK5KGbrK770CH4aq8RK42v+Hqz
WBkZt0J72WUZ0U+eKKWEvkn2gOBgyn7CLYgR466A4WhpjV7Y4jU4+MGmDXTvWSj0
HcIYP7Q+Q+8piYwazQdOfMVYIs+Pl0baSDs8SW1qsq8tVMjGtuPDTeXdJeaqk09T
xKoUnuEHc6kUmCOov3khFNrrxQzxppQosxpCOPHTz57Xc/fDBjeeIJHlTvnV+6zg
CsYs3YmB88Hts9J3PTjc8i/GwJhnFRBdJbfFaFZCpockuaXX2hu+d/+0RdBkuF4C
vuE4Rv9RM1QgGP8Dot8HQazTXYHVpd+d7hb0r84Vdz2nQLtpYh+N8ysD+J06t3US
ijY0YuJ37CnxpfINmQJ/k5St60QUepBxDYnOeHxHiaHZN/uFPz4aPlK7ptmCAeL2
IglnUbuLSPhabeDoMkBcXopsKExrIpG6cOmTo2bmI55OZP5WLg4mdy4jod7NkzM7
az7aJjfe4Mvu0VHx9Wft1CIXvxzVo2FaN+Z8iws1B1nG3qiu+fBKtml1WE60C769
hVoQBKF0eB/O89IMciODLGzqYZ2TS4Owak9/l3d70pXjSteKvY5dpgw6rYpOQtvo
ocfFlrIsbQP3+pIE6dIT9pc2GHVwe0p5gB6ONeZ/OyaA0Qs83EVGvHykQcbVJ7QY
k0lVkT27oHav1/T1OBPGA9f/pekE1SuXPbV+wi82lEvjxzAsc4KBg/9ICATeDNEL
obk0QTX3BBkewU0Z5R4a+u9RCBPJPVjAvH4Bu+nnttWOAtaWLXzn8rVrwGYnbThE
d8OFIV7uxUAigjalRzPvJ1vXvwMIC+6k/bQLFQiSA6TcL5yBTNPCwVTiKKLHbzZk
Frz+dNScf2vcgMlAnB1a0wKcHIJzjdR5VKFZXeKxEX4A2XqVJ682PS7MYTTtrmA9
qFy0FYyZ6+HqoVy/le5zA1F7t6f3qjsKAr7lA0IABF6J7pX9JeGxXT4AAQ+3/tSM
mrNutlTVkcoEsINtfVy/VmSnL5JpsTY9+l0rtLN8GlnDS3ET5uMhRPiPfOOAgNqj
ITAfMB0GA1UdDgQWBBR72ZiceTDE3NvBPY4ryxmGCVY5pjANBgtghkgBhvprUAgB
BAOCCcgAMIIJwwOCCXUAQZt6/8sreFucKJFrqjKF21L5S9zuNhAA7Klvuqd0/4R3
3efTQ52tdQg345qqpW0BZRlgUDSWnq1Bmu3dyjcGDHY8LLvHyoOyTe02AMgwTW2c
UH6XpqeaGu1cab6l0owF2m5yGV9EmKYC8fky4JhEk2As83l2xlc4mVbA09NKfvQs
p94zzodQdCYFJ5VY62OubFsy3m6rlzaRCvJ+GLfpp1UeU0vxgqjIrPC3bDnId+gH
Wpkq+3lZLP/duGxYeXeeOm4zaQuaIUCJ0e/mFCFpbHywwgncay+0OQFDTFRYhNDY
ZlJR3AWLF47Grn/MhOEj5VO4GJvj+CjlGlOe3Fn6ABEjdRSDUOYykGg3NtnLIGkf
hM8j4hd+jfqGKwZrPNz/YaNC4YtKX1uwbjv1gGZSQ7I6zBPw37r1yblTAielXtPE
l1DuoFr3f05gzJJF6OuG6s7iBoUc5n1ovrn3UO85nCbSqqO2Ky15xsqTkFPnz4+g
JUOZ0SkqznulXIaMtJf/SmF4Pn23fmjqpOBTqOkBAOjloQIgSiQ90z45JU8Cy5sM
COU5d6shh9oM1BMIhFco9Zgxc/VF3WWd7ig9NT120HO6seAtMEMMSjtEUJsqWyQI
NnQvNVCTdG9joftmHnn5Uczar6HLr1HNYvjjXVudrp6ziKTFgblklGdcrqN0OTtx
hNSyacxucS5DWm5RGicRQaWb8Khob1lSn9nAZC0rOaChzjzJ0F5FYH2j3vL4ztLa
D5LMT+0FV5q0gkDHcowdQmWBiSwgyvJm+SMUmT/jyDPyf1VR71i1R3jeVqTu+kaw
ZkUpBztGzMLuPUrTlFeWa+QitEQegzObUw3zSRYaOpKa+Xz49zSLEEK5mOpKIvp0
qub+LXJXPBs38CUSxh2MRCOd8t5LlQCnKOQbVOu0UHvWmEhG/Oa/3j97PC1xrLOj
KTYSDrjhmwcPkJql5zzgVC+gBHcmeUWSutlp4HYskp0WyWc2fR4rKTawH6D3TCdu
IfBtlj80CWhNrWoaC+8yN+Y8rsogv0VoeUkVbneAg7J7TuJo9poTu/RFyEJ4AkIq
XzOxpjiwyUStVY5YH3x8zgquFau7bK8RQLowC8VFFWA8BFcgAgQkmasiipREpGaZ
PxFelJbl6en0UHS1VWDF0sdadypkY+hAcVGPEOt9pcWvP0o31ioybplBLe831d1q
TtD1TfBHXNr1cFErqfwryRUhV0JYNkwKGt6IcN1sfe+j23wo/b1BRDld4z1WL45o
7nebuv499egoHN5+AHFSGxleBVWvZe0iJzXWMqfLGfEkXg92qh6+vMxQW0Dsh0lD
mJP8xaD2cXZVN8+X1H7ESD7fC8MyKgtHAzuPcNjx0Zl8wihPNz/LBc9H1o9+LyDT
wcl4Mys3XDQqeg/efLB7W7eyWcCR/TeVO1sNmFIfMOlqbA04hqao3q9PdN4LlKCR
RjDqxGMCnE6+/YZSmWbB4CyYQsy4yXHss3SNKFdO4KccUUMVRTAcvSmHs1lUOIGI
OUaFJ6yw/jp5Wjybx7G5r6v/kvnlh5V3EfdW4srrbMtiSvDrNsc6/pV4+/WJ8lDa
T++u+phJpKAPbc2t0Tly/x6/O0L+PJLMlD9qK1nGYdttvEDsKgHe4jTkMytiYQp7
VolKPsbgLA5o5esMm4YVtfPOJNiRIPa6NlVgf/enNziReTZVgWi8g/yDdcdpMuS9
Op6Hbx0gdH7vfFNjAyuSorTzrUIlJPv5ZYdVw3qj+zcWybHAeozJfPQyXS5QoJm9
7mXfmNvtH620g5qG6C9XyoP7oIul17bMiX7A0/cg06y3pxWRVw/Tmn1sn4Er3jBg
XATF5+2R/euNmggiQAlYhXshKj401wQT+pFgFruB3/U2nSuZtTrOJXp33pcCEWjx
USmitfUl0znkW2dIM4lD7RUUftJKJnSDWYeJSyM3rijlOftc5BZontZuzzeNBxgs
HX7Q26p5SOJWbSjsffCTQfxxrxNGUxl8qVdDqtAhZjw+ZnfD8LiJhHcrYERTFxW7
MjjMV7tP06XAqybmayAWCtbgJlDbZb/thROfPmmaaymiCbnDKkQK0TLGNtiZ0ijy
yd5YLlc8c1lBpxsNe4Myvd4He743kKlS8Ep5YzrIqkwPde0fA6pnpHiUxoi4wmsK
NTDOlkV9Cly5tfrRkDyfNOqLMO0pqzDXRpATUpu8xey5s+GHDmhI1K1ojybN3MKh
TTYJ9Gla+52EhetT8a5Dm1q+5fFjpOPtDhJNKhdOOMZDRDCisf+SEeGi8Wjybw7n
x3w4hQZZpDzTknq3MZbmnlilphajEPYulLAgGAHmXEPHFMOT56cJxTCj5WUqksRh
/07PXQ62wVCpgZk7IUY0v7UF+dcomp8kHaLT1KGCD1v6XgD2uySyt9ha+3MEsOjk
PhfLWKeVAYFQX8maIajcLKckHE27rzDgJ66nhJU/YmxtvRo84EGfvkkqpDxVpMl1
KWVE5U6nXSNX9KAwVr4v0Gn+Lw52WMHZAhzWDGDUE8Pkb/a4l+Wbj8xDmDZXSNqx
RT9oAI2IN2yZV0nTY+tlmGYgOMrdNMr6KhtwE6E7Q6+84Cy4xKkwY3o4ob49SSCr
WHOp1mtvqUIkvfo9nV0qm3AlCd6blZGCUtYWJVhdLUY9+YqtqvAlZWom6TW9609n
xQ2pDbUnzz3RBSWotye/JZ3Iixsv1nlgf32+0x6IGutdL7SYQ8C4LiunoJTkF+A6
U5Chd9MiPvrUXjii1eiifwlwOZUxpvS50tBXIwQTuriV3AZPS5R15nJp1t4YzGOE
QwRJtNFnAkLsZ4iTrj/zDtgR6a2r4m/vzhUkrxIdZiptMO1E21zKfUMOtddPVqNg
SF4emCWJhmaoA0fQbRmZAQxqSajNFB4XPBK729A3wtTaN2TG1vm4iXzjsJuXhDzM
52NYEv8m2RoyKTiZFEfHndtvAHrqrdV1ud5jYi0GoA9YpnrdLiuzh1ljru3hk0WP
ejLjifxq6XEHkmBlsaiJSFpDxbhwwuW2zBvsUtbyU+Y8KxUuSKmem1m2JUE+UOIv
s7eJpbVOEA31p9Jd5rYlIPpuJ0gfRwyK65Rj20DYmdGoJpBPZbc2awktnniBMyI4
P1hehYqQl5+hqavvGjM3OExPVVuQl5vA2dzm6QYMECNOWV9jgsfV5/H3EhQiJTtx
dpigxtff/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0dKzgDSAAwRQIgTgIe913r
u9h+Hh3v0dLD71pyH3EidqMddgc0vjd7qF8CIQCNyqGxNNM4DuRCkDTWH+HdmGJ1
F2ljUsBn8vo47P9JvA==
-----END CERTIFICATE-----</t>

</section>
</section>
</section>
<section anchor="sec-imp-considers"><name>Implementation Considerations</name>

<section anchor="sec-fips"><name>FIPS certification</name>

<t>One of the primary design goals of this specification is for the overall composite algorithm to be able to be considered FIPS-approved even when one of the component algorithms is not.</t>

<t>Implementors seeking FIPS certification of a composite Signature algorithm where only one of the component algorithms has been FIPS-validated or FIPS-approved should credit the FIPS-validated component algorithm with full security strength, the non-FIPS-validated component algorith with zero security, and the overall composite should be considered full strength and thus FIPS-approved.</t>

<t>The authors wish to note that this gives composite algorithms great future utility both for future cryptographic migrations as well as bridging across jurisdictions; for example defining composite algorithms which combine FIPS cryptography with cryptography from a different national standards body.</t>

</section>
<section anchor="sec-backwards-compat"><name>Backwards Compatibility</name>

<t>The term &quot;backwards compatibility&quot; is used here to mean something more specific; that existing systems as they are deployed today can interoperate with the upgraded systems of the future.  This draft explicitly does not provide backwards compatibility, only upgraded systems will understand the OIDs defined in this document.</t>

<t>If backwards compatibility is required, then additional mechanisms will be needed.  Migration and interoperability concerns need to be thought about in the context of various types of protocols that make use of X.509 and PKIX with relation to digital signature objects, from online negotiated protocols such as TLS 1.3 <xref target="RFC8446"></xref> and IKEv2 <xref target="RFC7296"></xref>, to non-negotiated asynchronous protocols such as S/MIME signed email <xref target="RFC8551"></xref>, document signing such as in the context of the European eIDAS regulations [eIDAS2014], and publicly trusted code signing [codeSigningBRsv2.8], as well as myriad other standardized and proprietary protocols and applications that leverage CMS <xref target="RFC5652"></xref> signed structures.  Composite simplifies the protocol design work because it can be implemented as a signature algorithm that fits into existing systems.</t>

<section anchor="parallel-pkis"><name>Parallel PKIs</name>

<t>We present the term &quot;Parallel PKI&quot; to refer to the setup where a PKI end entity possesses two or more distinct public keys or certificates for the same identity (name), but containing keys for different cryptographic algorithms. One could imagine a set of parallel PKIs where an existing PKI using legacy algorithms (RSA, ECC) is left operational during the post-quantum migration but is shadowed by one or more parallel PKIs using pure post quantum algorithms or composite algorithms (legacy and post-quantum).</t>

<t>Equipped with a set of parallel public keys in this way, a client would have the flexibility to choose which public key(s) or certificate(s) to use in a given signature operation.</t>

<t>For negotiated protocols, the client could choose which public key(s) or certificate(s) to use based on the negotiated algorithms, or could combine two of the public keys for example in a non-composite hybrid method such as <xref target="I-D.becker-guthrie-noncomposite-hybrid-auth"/> or <xref target="I-D.guthrie-ipsecme-ikev2-hybrid-auth"/>. Note that it is possible to use the signature algorithms defined in <xref target="sec-alg-ids"/> as a way to carry the multiple signature values generated by one of the non-composite public mechanism in protocols where it is easier to support the composite signature algorithms than to implement such a mechanism in the protocol itself. There is also nothing precluding a composite public key from being one of the components used within a non-composite authentication operation; this may lead to greater convenience in setting up parallel PKI hierarchies that need to service a range of clients implementing different styles of post-quantum migration strategies.</t>

<t>For non-negotiated protocols, the details for obtaining backwards compatibility will vary by protocol, but for example in CMS <xref target="RFC5652"></xref>, the inclusion of multiple SignerInfo objects is often already treated as an OR relationship, so including one for each of the signer&#39;s parallel PKI public keys would, in many cases, have the desired effect of allowing the receiver to choose one they are compatible with and ignore the others, thus achieving full backwards compatibility.</t>

</section>
<section anchor="hybrid-extensions-keys-and-signatures"><name>Hybrid Extensions (Keys and Signatures)</name>
<t>The use of Composite Crypto provides the possibility to process multiple algorithms without changing the logic of applications, but updating the cryptographic libraries: one-time change across the whole system. However, when it is not possible to upgrade the crypto engines/libraries, it is possible to leverage X.509 extensions to encode the additional keys and signatures. When the custom extensions are not marked critical, although this approach provides the most
backward-compatible approach where clients can simply ignore the post-quantum (or extra) keys and signatures, it also requires
all applications to be updated for correctly processing multiple algorithms together.</t>

<!-- End of Implementation Considerations section -->

</section>
</section>
</section>
<section anchor="intellectual-property-considerations"><name>Intellectual Property Considerations</name>

<t>The following IPR Disclosure relates to this draft:</t>

<t>https://datatracker.ietf.org/ipr/3588/</t>

</section>
<section anchor="contributors-and-acknowledgements"><name>Contributors and Acknowledgements</name>
<t>This document incorporates contributions and comments from a large group of experts. The Editors would especially like to acknowledge the expertise and tireless dedication of the following people, who attended many long meetings and generated millions of bytes of electronic mail and VOIP traffic over the past few years in pursuit of this document:</t>

<t>Scott Fluhrer (Cisco Systems),
Daniel Van Geest (ISARA),
Britta Hale,
Tim Hollebeek (Digicert),
Panos Kampanakis (Cisco Systems),
Richard Kisley (IBM),
Serge Mister (Entrust),
Francois Rousseau,
Falko Strenzke,
Felipe Ventura (Entrust) and
Alexander Ralien (Siemens)</t>

<t>We are grateful to all, including any contributors who may have
been inadvertently omitted from this list.</t>

<t>This document borrows text from similar documents, including those referenced below. Thanks go to the authors of those
   documents.  &quot;Copying always makes things easier and less error prone&quot; - <xref target="RFC8411"></xref>.</t>

<section anchor="making-contributions"><name>Making contributions</name>

<t>Additional contributions to this draft are welcome. Please see the working copy of this draft at, as well as open issues at:</t>

<t>https://github.com/EntrustCorporation/draft-ounsworth-composite-sigs</t>

<!-- End of Contributors section -->

</section>
</section>


  </back>

<!-- ##markdown-source:
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
32M5abcZesEFE35T9WyGbjWP2ElHf6OfejZoEkVF40RCXMcBp9J7XnGUnoUf
Um1BqK6GbKe8clbr7aq8PprWiF2Vy2yXK0+yLHov9eG3yLMNSbwu+O6UG6YL
1dXUXh+LBSpdbw1Xam834xpcPd0dj7Rkr1yaDS/l6XR/erF3xnSYPTGmfMhM
enbh0J9e87XmpjBgdtXlcGNSAyXv1jPrlSLm5MXqpXdqT+xBU1vx+d2karZP
lq6JRW45SF9mq816IB0Lp5qU3UiFgbKbG60rNSyOyp30bJXvJZuyOmFTq2ne
UsYjSbdGx528HOSz1oXJC0vDmU471VNfzhyFvF3YruviaD7NUQP7lMsNmhme
4fWOOT8vq/VjqqCkz6fqtjZgZ4eGZLwcjExh4ixr+dn+nJUP/UurcdUH+5eX
3ICq5ZupPXc6rHnL3GaPlUHarQsntqdNGNGZluaL8qabtneDoeBOxPRkvVvP
T41t5SDWd5w2ENKU07PPnNMy20UnLayH40uyu2CVfq1X2a+GHaFXL25dY2CV
15OaoE0abd0otrbCjhs4uV2yWNEoqVXk0uV+p/VSnpTLsrRNNuZWa9ucd+ft
glk9TSy3PuYVJs8Up2BfaONu5mIe2LOwa6TPslKhtq2Lnd1UdL5tcxnjmh30
a1NpvUn3rGLj7BY1ZihUKso4156fSidBSe5emORRrBTLXdZlShOXGudNczTZ
Vuatun5dptLXc2Z+LVeTXPsw79jntjKsdhZu+tBPJ7l5W+eP89KSWZ33+UNn
WezUOWp0UNSBVTBL12LPrdV5q1U/cMd+27pqUiElV7KjwTiZFAdFftTfGkZJ
2zmnzHSYdpu1kbAZJimlcjlM9GJZZ+f5rDIyS/xkVz/VUvKlWZbdtOJUGCVb
bht6apUddqsFN5lZ1+VV19AGL91OMkMV2sZ5Oy3t6k7e6RXW2/HkwrQXGXGj
blLpSq2QqwBsK/Zav/TXXTtjux1d467caDcaz3a59pGaKBdRc8X1Ln9xX0rs
+qV2OPKi27GS67ydWs1rC4VTS7peU6q9vabp61auUTIqq1nbfDlpaYHi1a67
6lYNaZZS010h1e1tyuYqxRRSW6NUznC1ygvT2/aOzdmuXbOZ+nB/rU64Vm+T
U2rp7apA9Xgd2FPz2BoPhbO12JyYjJ4Rp7uD2emNiuKh2iisy5muWW2sNodW
KScMhlK+OGoXJWnUbLUlqr/ZnJnii5rK9DKn0yyz17hBblTIpZaunWWtWquT
bqyWvXJh0ROVK5PN9ITj2eZm8/OoPxUnGeo8WU/6B6neaO30VAlsyf0y6fDT
/ry1VlmrsO7yi+Ro2BkJ5U2SzbeWZQYmkkqXU9J0uVezE6rUTHarU7lkMlxB
mgjLzbJtsUlN6VpKijeMdKfW0pSXk1mUppfKfMstc92RpTp8tX7oy/10g7ru
18VBdrdOD5eF9bD4UtvkRDe/mK9Wda2kCY15qlbQmE12ssus8pUGO63mmwtu
3ZYuzYG7r5jUNt/Z5bSuOtwNX8ZattvYy66Qr6vXefsK+/glrc0yGbfSKjjV
QXE53heUvlYtFOWU1FlPNssdtRTsVqevzM9O3rCO+5NozU1lvO46rPtynI0l
nhXXSn21vB57YqUubFaXs53f1ZQt41bsmtmjljklo5aa4yxjTTUr3Z1Ks3b3
kG4Ot61Fvlmvn+fSpVVjKqXkQSx39yKflKad9Tol152mOmNVarOZ7pZXe7fq
8K1e51wdWOeiyddrKVFlao1OYzznS26+nLZgE5aGq+F51Zsm81Oz3BlZ+jWd
opa2cOyYg1a2KJ9a9S63mvWSIrviM6vrgMvXch2eT5VO/XndrnZq6kitHa3j
qL8aXoap2al1fqHYxdHMFRbjzao10bVUMZdspqRiGfgNkx3Ul5W1WFUL9pgV
DCFtjuRr4aIsUoVihWOPrtlLMxR3HgnbVXeb4V7k1eg6PNnVUVbTtHO6mJ6X
pWJyPxzt6yUrI1Qa/cZJmThtbl++cHI2M1LH4pqajDOaPai+sB09r4vqsbNh
3GuNZwpSbtWT1rJTnrR36nGdP1TlY27qyqfOQC2o+1LeKHCr5guV63c4lh2o
mpofJ8Xp2h4zLyzL95xkYbRpHK4Laz5KzevNcourLKYp+Ziab83Liygt+HRv
aSpUsyBel2VzfmKcM/+y2AijYXaTuW5WQkUiQpnvVO5E8hPB7l8+dy/SB8KY
HfIxmd7Lr4QyW3kk10WuUuqfVqtkH33XCb6zrfKK59l+k6O404nHH15Y3Wx1
7H5ObvQW9qSsXmrJ63EmO91y9mW+ErbCcpYbi61isZ4yLrPMufLSPFbTVHax
r/aGhX07+1K0ehubc91tuncZWYXjla8vX14yxrHCV0d23SgW1Wv2uryW1ckL
uzbyFy5bW1L1Yrlqr8azI1PfDUa9Eb8br63GqOkUx6f6oju+SNuClG1M9Hx7
Yp7O+8HsYBspi5Mnzcm82eeoxVzo99c1oSkJl3lfHA9EIbtQYFJrtyz1e7Vt
+TSqrNqZfn9VW6zrFbF8uLb622zbMCbiaMtQ8/U22+DY1Wi9Yubj7ZbnurPh
rCy0QTJuqgInSm1NmLHQYXvYGLOnhVTlpO2K6ctVbm7ogMRdGSTVLif3eZEV
+X6FE1eDGntZt/u1yqTLNgfb+ZwXNbYrMM0JO1lIwnZRNkaNSVfT+tsctV6X
OUk51NZzfrbS10Kf5bbthpHd7viTKFRq5ZnDt2TOYMdurdHusWuuW60M+NSA
E2st9sBQLMumuBVsoNWGnc/4UdM4clLZzq0dLc3Nu0xF7fFc+Vifs+K+rex2
o4F9HlTZ7Gxwro264gXEEX8ZCWxas9tMa3BqwP5nN7V6rTW4iI3Zhl0NuuVZ
v5sajUROHGxYTgFcsbUVW+7XN+x2R23c7qhfNvlV58Jsur2awF75oXIR1vO2
0B4PuPnqchkAWbb6/ZMsr4VFVZiANrYS+nW20W+PqUFj1W9UD/yg6mqN/mFT
FmxuPTb5Nm9zzerhxFVXW1kb1AX5xAlcc8Tyq4koD3lRWWmzSf9CtR1uJQji
lh205wN2ldHUdq2pl4Vhu53WDJtbaf10W2hqTVVID6vrmtSHtZC3fGPHZ9dr
QaAWIn/Z9F2ea+usWB6WG1VdkNZCXRqsWVbtG0APYmXd52RbO81mq2xZ44cc
e9LaA9hE8mVEbVijXFm1KpXGjtvMu6cBzwnbcZ9ZKIbWXJ12I100xKrNinbX
EPqdOquIp1a1lpXEtsCt9TI1K8PS8E1mILDZlsbvBHbANxr8VtBNrsHuG5Wy
mFvM++k+K6Q3oHg229uLtu7u2YFe0cR+jWryDXa70jZ8/zQfbFdc41AVtANg
emDkGp0DN+wb03VH0NZbIz0DNA76R2Hdd9nWeCesR2yfGuoDTrKrbKPB9gWx
xsyB0c9WW2bBC1pzXmPKM20LBsJoBgTGlVdzbjVsNDonmNZJkNo8RzXKO0Ye
9fti22RbbPNUafLbudjlhOpF7E9YdsbWZi35lBXGPaHd12ZS2dA2isu2xxa7
4fo6tVaMU2Nt1pscJzT59m6h8qs1WAmDwW41Z+vsfDCotGW9JnA1ft7sMgO1
nearqxOoUovLaV6kztX03h3VL22316i98CbQeJ8Di+ZcvlQsobZVi5lqqnnk
azmZ6/a607WW7hZkLmufRcMUWk1KyC0GFaGq1Lep3L6041qH/CnZLKT3fXGa
dW0QTdeKehqA3t2fj/PsoFRJXspi58IurRwzL4wos20tD4XO3HxpgqVbP9uM
WK7sctNOeVqWBJM9CfXmtpUEE/UlfUhXhWxFvqSsOQvbYFpkRgIl7tZSK8UN
XCU701Imv+8tGUfqahJfXG9W/ZMxT1VGer5+1Kp24yRJ6ZdLZsBu7NrcFcaD
IUeBMmfNrVnv9KJMxtXJsX04btalgjhbcQV1uE8PslM3s0yma2NJk6Yrji+v
68NZjrWK1Wuez7So9lgrrSftdjXf3uSOU1kZrU9sWlKntc3+0FMcNrnZzUfT
vt7MdHZnMXtMryTmWjhVB9oxve9UqcWer/Xyw2TRGMpKodixJsZC7teX44w7
WSzEU3fdszqr8uTqtvVktVbat1sDuV/szq+b07m3GlO92n7COLvkKq2xtQxT
d1xp1e8VukNTWxzKruXw/IuujcXqyqgwhpW9zta9bWZ3fem2x7tcMkulKkqr
NRw4+0NhOh6Or9ol3TCBgZfVanFcWedqpVV/U9Sq6ynXWW5y82pnudtIdY5P
G2N1KWep6mzMW9m2a/QOzKK6sxesPm83Zo2MApLREM7MZJMT2rWRVe0M9fRy
cu1f5EKu3x7ISlNLqww1G8l2VclLE6l+TiprUVNyvdO0Y13E4touZ0fLtJFe
H/e58VQZVQqL0nxdqR/nl5KeHEiD+cSitHXePIn9fJ1njPxAnjckVk9btZyW
HHLbfqc4f1l39bx1HosiM1Lt43rvWGN+ZRTXMOO9qFGZ6mA5qSXZybHSU5O1
zkCrcINyWUyLablzbFgdx1xdz9PR+qVo9Kzu8KJX+ot9ajlVSieOA+1joYw2
Wbl+nDUsKTndTbujk/1ykEfV3EkqSNPBrmi72+TeOo7hud4dZYtcdnm0NSdl
9ReLQ41ixIYt2YLpZs8Mk2au5rm6SzHDbj5VurCCWp4x41nFShcVebtp6FZO
l5xRdTWf5VqymBXqOmWeV3Mpr7PJkcyeV/u9zGR7k1auyFv2HCRUetTKDatg
VLDj1mA63oLF5xhtpnhsm9yk7coXan+sC73ludwZlgQjbY+X+2Wu3sp3N9xY
qrYZ9djsM4x+sQbnJCsuAYqmzoyvRUViUvOdxFWpzWhZTpvt8fHQOBqrpW41
T93rxu4t2P6irAxruayipI+iwonKuT6U68t8+3IWmbPVE0blwWZAaRboNen5
dTGUku3cYSmCTDvma6D4bZzFnmHkbXkNRCoXVbk+3a17k162J3CZvKJODas6
FqmszcuTxbS/6wwbl1mNUc8ZQSmpL835pVk79XfM0M6W7HqxxvFKdtxpZIsT
RUjOrE55d80XBn2q3mFqwrnrLis1rXquWpNNpwAKNzMu5Gppu3XMmxqb7byk
bfdYn40vOsMXqrU1qOJO5bzesxo1ZmudQ1WarczkaG8uWpd81R30q4aZzPeH
uX2zzByZlng6KZsmV+1NF1wzk70s3OFqnBvUuX6DyhU54XKWZa22L2wYTujO
lWGpmr1OsldB2fSOvFzrjyd9x1a3+zNbrIyMWenCTIVDZV0dKMyFSvWT2Qtw
FksTHLaY6Zemje1LpWzx1kCasjIrp4ZabrPtXPeXQU6oaXVJ13oC6JIzzR5r
8o56aaQmpYyzTGZ7qzO/K2ekQa/f6zdz54s9zIzXheziNF0KzcGpnx23qj1D
nLjtdWY9durllGLlqc4ss+Fby1xlukrXZo2SvF92tdqa6+zG5UWpKSQlbtI7
r7K509w8CZmKIxZcVZOSh3Jlluu8MNSoUlFG20me76XMrXJcl+uXNVsfjhQx
30uOGabL9AxdnJy4zmnaS55z5512zV+Ol8ysviotinUqq77k6r1MVc7385vh
YD8Xy8VyYyy3FmvQbCrLTLOX0moK8OHmkl2u9KTemGx3L52SfiymSvkRVUoz
xeXimK87zmaUuXbP9bTRHUumU+nWFJZJZ4ey1h0kq2Jy33o5ZK/rol6RB1Uj
azd7o07foU6zU2XYqLWVc5+Rauuu0OWlSqPA1OtHIOHs+nRa7gsVUdsdao0j
7y7S2+a20tu4/dMx+dJLDajsZpwq9pfLid6ft8fSS1fpirNR2hSY3HRZ4yST
qx8zc6OSNCyzw/FjRnLbUurYVPrdRbfcFalkfijIY2Nzyjj15sE5iJXZaKOt
q7xanR0yx5a1VEtcssJKprYrtXO94ly/7BWuYU1XVrq5YqjBfmtMG4XtsNYs
yJer4iprSXxZ5BpSo7vMODaXz05h3Q3GLnWV9ql5WC9agllzJ7Ouqh12Jcoc
KJLYM+WXjnOdDFvCZdzTd+n0rnYy95vtVtNPZnWTOThKqpa6zPTacL3PJstH
ucuyLweunqZAXKutVPuqDKfj8XB2Se4X7rkwOc1zg2lj1+g+8r5Gna/UR7yv
Uecr9RHva9T5Sn3E+xp1vlIf8b5Gna/UR7yvUecr9RHva9T5Sn3E+xp1vlIf
8b5Gna/UR7yvUecr9RHva9T5Sn3E+xp1vlIf8b5Gna/UR7yvUecr9RHva9T5
Sn3E+xp1vlIf8b5Gna/UR7yvUecr9RHva9T5Sn3E+xp1vlIf8b5Gna/UR7yv
Uecr9RHva9T5Sn3E+xp1vlIf8b5Gna/UR7yvUecr9RHva9T5Sn3E+5obcuXt
CTsnh1R5JR/W20231xfK5dXK+90ul0+DXLsuc2yf54WayGT656u0WA6ScnNS
rfDbo6tmmJXbpAaWMku3dnnNLovt+XJusEaN4w41sZ0tsSe+boz6lf6K5afG
3tWXjJ5dVJXeii1XCsuXlHCRKDudT487k8FlJZ5W6VRp2ipN5k35uN3tzp1N
Jj8VXcbOnKSJ3GnJg94ue6nyL0KpmM1ybHr1r/8acffeumuppx5fUdWXOJFC
VejpTWBDzAWMKlYKVYGDfkMX8MuQ48CEWLEIiythxNtSjj/VmJa2WiwynXad
39kHixGMZvtU6c9aM2EusLNFXkqxAsX2+yd+w/fbbLbGpkY8ezrVF5nqVamN
r0qFVasn5tKpsNd2hb+0r3yufa1K+NmQPKP8h+2ycOYrbLe86ozLbLtdTpfO
cmagyxnkhJ6U2yxT49JcTWRrtZed0+dYnmezQhW0ERY+GJvoD6H/OxzR655Q
VdQlVclfpLXS21REsOOU2cvVNcvLnjE79Jy6OBuXul29mjlkl2qtnGrpZ7eS
TbJn6cwfmuzwMJ9NqO2VcyeN1qlRqi8aGtetVg/JIzu3tI7lVNPz3erY6Z37
fGauVYxk0TznZpVJeXlwUuPBYeKIL9T8XKpb2rE1NNYvWkqRmWm5fFWLm8PV
FXmlMdCXeu1a2eu8JQ/74iit76vFkZqcOplFnZ305xRf1gz9sMkfNktHShUX
prasry9mRbD33XFtWSjo/MKwJnKLO4Ck2w01kOVSVt6ATtlYDJopapnS7Vq7
IF3m1baWm7fmUk2q7tldv2sK6qzZ4DcS83Llm4y7vYJFoVU701YxZ4PhPCt2
1XKbYlbF5UXMr2t2rTqbaY3Z9jLZnNy+NmvUMrtF8tRtGMdTa1ZlmWO2OuOr
58OwqO9st29uc9urS22nZckFhWCQGVrDs5J3XhqjwrK5Myq8Ntsvqmem2z82
r1q7O+pfTi1101tX2blyqPVmL8fTvkYVLq1Be9XupKbb876SYdeZl0Vh+FIS
eic+yxWGKSk3Pez0gdTvbG112klOF726sm/z06JwMbdp6sqfU+1Ryi1IZmVR
bGwvI7G0TyXFSm15MFLJEyM3RDOVqx3dfaZ3esnOZNG2VaNZYi/HbsM6UuNT
bz2oTpOlRv00GHCitkk3pUxFUXpS1pj3tU6vxPSapjQ91UblvbVOiXtmIM2W
7GJ8FYzqhSrM00xvkFnxF206qazb2albSKq8cmHzWqOezWaSS/uyqQ2W6Zma
OTBJtzYYL1r981FpdvK96YxqL47bXqZ3YSvtZYPj81f1kk1PhFa7Ic4HY22x
vZTmmUazmWvWFlazUGC4elY6FAfNbPr4Uj9cqUl5O3eYRiE9Gc2Z0YvabE74
43afXsG+vOwLXGu2GmTzeTY7WZubcWGW3YyyL+3arjIdHifihqHqsjDrFfov
/Zeiqc1O0rWvdJft8UywX3o6s5DEil0UJ6mDfSg64/am5ri9ylCdKg1VOmxB
yFHnpjHau3xdzm9HO65rHDPbdbVjWef+9WyafcM+m1y3Vx9ec4WpnFxWyhtV
FRp1fXjcj1/y1xXF2TM7M9uVYYs7dqmR6Q03clFL1k6N9b46KCuNxRJY0Jwz
DXnrStNpeu2+KMkXZqCUt241y1FHl88OjqVBO9Vf1XrFiuEU633pOpzO6mNT
eVEK6wVjFbNj5Zre91uOOVu/dIoXu/LSYPJOZiRS2mbGzNxGpsDtz+ZS6Oz6
jeQ2Jzp5pj9SzfK5Mtt31fq5rkn1eSfpVnvXrNTTmwXT2XGs2gLjYqXvRwu3
JfbW0kKtGO1tWZ4apt3kzxYYk3m5uxsa6cVOyOW6815u0lpld8oluzGUQmd7
bYNGdi1Ijc1SzbaPLjOun0uTpZPihOnxfB0b6arUeZkXtZOdKqf2tcxBc1+W
5aaz01MTPg8KXb5ErcdGv9ysMmo52S2WhDYY9pVW7XqYzdNDMds9SdtSUs8o
BcacbkRHbR5nOcVcnfLWzOz2naNBGfKyqluCvej3Mi+mwOcVYVgy5XStPj6p
jJlblfPdjjpPdi8Sy/TtYoYf1471y7YvL8aNQn9GbRl9vAUT1qhLx1RymOqW
ezW2tEya6pZPie60txiDNl5Mg42yOV9ZW842y6tkCck2tYIUKmOxZfrDaaZc
3qqnEQPmcVZ6cUsDrtxr9MYb9ljPlt2X/d5xJl3WkSat6XVftMbWqQbsZrjm
KaXYrQrjgnsesdpqI+mDa+/YSB2nx1Nb4F7y2+Si36r2NZHND+VW7lIednrc
aTzUms1WfXGdb6mqdX1ROqK8TB/lVVtn96A+M6emXBca140yyI2b1flUbZ75
aZZNTw/jRr6Y7omF9mw4dKwdW6IO1QtTnV3medibBpibupq7sqlqwckvM4eN
3QRNXWcZgS1X842COS011NoZ7HiW7b9kko7YpnZWx3X04XgrG7wtdJwldDLe
iXuwaEx7OCu96IzltDrFmr6viBl+mHPb60FP6y27XXbVOWwoYcgu26D8g2hX
Kqv+pFweFNJzTVaHFT7TOZZ7M7Daz7saN57lzM39MTKF4sM4eYXiwxqnE/ye
jtj+3Mkni7alVl252ahah02zmk61cmLp6nbWLFto6kf3oDDJ7CBDZdTlsJ9L
O0p/lcnmDgdzwpTnA301qoiT/SFV3rkZ5bKRa5X6rNhqAQkZ3ctQZdJse3Ua
TtIyNaqDxnxQpZqbkqVFXmeMUzW9y11q4xK/a8644nJ7yTbW/DbNAhnq6bMu
Z3fjBcuUOs3lsW9TZil7vRpKX+Fm1UZuPMunu+6ial8yuzxo4dKAOzZeaq2l
aaZG6og5nleHjWD1uMyisheUl1Wdmpjbw0tGn7d6ScWtnWfq/9vZlW0rqmzZ
d77CcV4qc5h7Cwo29zyp2KGICop6x3lACPpOOoUz7vfUh9SPVUQANpk764xR
+ZK5FaJZsWKtuWLnnHEEQPDoQtmmymI/5kjQ8qbjaXiZ57eb4atK3oTJbspK
093JXLMn4uxyu85QXk3p3izyWzwsz2zmINAzLrObY9uduQLoTP3ucDSBfiWy
e+GUOzOjs0781WLm6ITJ923a1Jq2fp0tb+dosy5aJ2U9pk/J8kilt4udUcbs
LG57i24x2tw6vYjKL640tIB7TDYTwqXYNJhGHZ1kjILjpl0hnXXjnjUK9irj
U0EW+Z290Gf88UW8XoX2MqeYe3yVHFhCF3TTILi9cCZF51pA3HxcKHzC6S3R
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
XSXm+40C8XucfYtYr2H1fwHJ2VNnrBwBAA==

-->

</rfc>

