<?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-12" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="PQ Composite Sigs">Composite Signatures 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">CableLabs</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="February" day="08"/>

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

    <abstract>


<t>The migration to post-quantum cryptography is unique in the history of modern digital cryptography in that neither the old outgoing nor the new incoming algorithms are fully trusted to protect data for the required data lifetimes. The outgoing algorithms, such as RSA and elliptic curve, may fall to quantum cryptanalysis, while the incoming post-quantum algorithms face uncertainty about both the underlying mathematics as well as hardware and software implementations that have not had sufficient maturing time to rule out classical cryptanalytic attacks and implementation bugs.</t>

<t>Cautious implementers may wish to layer cryptographic algorithms such that an attacker would need to break all of them in order to compromise the data being protected using either a Post-Quantum / Traditional Hybrid, Post-Quantum / Post-Quantum Hybrid, or combinations thereof. This document, and its companions, defines a specific instantiation of hybrid paradigm called &quot;composite&quot; where multiple cryptographic algorithms are combined to form a single key or signature such that they can be treated as a single atomic object at the protocol level.</t>

<t>This document defines the structures CompositeSignaturePublicKey, CompositeSignaturePrivateKey and CompositeSignatureValue, which are sequences of the respective structure for each component algorithm.  Composite signature algorithm identifiers are specified in this document which represent the explicit combinations of the underlying component algorithms.</t>

<!-- End of Abstract -->



    </abstract>



  </front>

  <middle>


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

<t><list style="symbols">
  <t>Fixed the ASN.1 module pk-CompositeSignature Information Object Class so it now compiles</t>
</list></t>

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

<t><list style="symbols">
  <t>Remove ambiguity and made it clear that all component signature MUST be verified</t>
  <t>Added language to ensure that component keys MUST not be used in any other context</t>
  <t>Changed the content of the OID artifact to the DER encoded OID</t>
  <t>Reduced number of pre-hashing algorithm by removing SHA384 and SHAKE and replacing those with SHA512</t>
  <t>Updated the prototype OIDs since the changes in this draft are not compatible with version -10</t>
  <t>Fixed other nits</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>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, Falcon, 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>

<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 or more 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 is use which is 
          not believe 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 and public key can be used to verify the message.  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 or more 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>
      <c>id-Falon512-ECDSA-P256-SHA256</c>
      <c>060B6086480186FA6B5008010E</c>
      <c>id-Falcon512-ECDSA-brainpoolP256r1-SHA256</c>
      <c>060B6086480186FA6B5008010F</c>
      <c>id-Falcon512-Ed25519-SHA512</c>
      <c>060B6086480186FA6B50080110</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>
  <t>TODO:  For Falcon signing it is expected prehashing digest accomodations will be allowed.</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.</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:</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:</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 others 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>
      <c>id-Falon512-ECDSA-P256-SHA256</c>
      <c>&lt;CompSig&gt;.14</c>
      <c>Falcon512</c>
      <c>SHA256withECDSA</c>
      <c>SHA256</c>
      <c>id-Falcon512-ECDSA-brainpoolP256r1-SHA256</c>
      <c>&lt;CompSig&gt;.15</c>
      <c>Falcon512</c>
      <c>SHA256withECDSA</c>
      <c>SHA256</c>
      <c>id-Falcon512-Ed25519-SHA512</c>
      <c>&lt;CompSig&gt;.16</c>
      <c>Falcon512</c>
      <c>Ed25519</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>Falcon</em>: TBD</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 } 
       
-- TODO: OID to be replaced by IANA
id-Falcon512-ECDSA-brainpoolP256r1-SHA256 OBJECT IDENTIFIER ::= {     
   joint-iso-itu-t(2) country(16) us(840) organization(1) 
   entrust(114027) algorithm(80) composite(8) signature(1) 15 }

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

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

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

sa-Falcon512-Ed25519-SHA512 SIGNATURE-ALGORITHM ::= 
    sa-CompositeSignature{
       id-Falcon512-Ed25519-SHA512, 
       pk-Falcon512-Ed25519-SHA512 }                                      
                     

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>
  <t>id-Falon512-ECDSA-P256-SHA256</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-Falon512-ECDSA-P256-SHA256</t>
  <t>References: This Document</t>
  <t>id-Falcon512-ECDSA-brainpoolP256r1-SHA256</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-Falcon512-ECDSA-brainpoolP256r1-SHA256</t>
  <t>References: This Document</t>
  <t>id-Falcon512-Ed25519-SHA512</t>
  <t>Decimal: IANA Assigned</t>
  <t>Description:  id-Falcon512-Ed25519-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-SHA256</spanx> even after ECDH-P256 is deprecated.</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>


    </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-----
MIIFfzANBgtghkgBhvprUAgBBAOCBWwAMIIFZwSCBSAA9DTYoQys3PVrayi9zTam
kTzpqf6vuNI5+UaMENvnrq3Rps5LmiQ5gSXaQMu0HYjVpCEQVQWl/8nbJavELelk
gCVn528ndGBQUChAnffxhRdxgaFmOb2SEySTnHIh6QO1UFPO2kGiGx9zU6F9xZGK
FZFBm8B076UvRHCbaw+BTvu4o+Kg1irOFRPI3hLN4ku3si2nwWSZNhDoiLaPTfJe
7TRziBznEyrnSV3I2Xn7QdKxIWUFOwPXWBnnk/FGG/A2HdxGpiqIWxZ0gNLNcb+j
Cz6CWZSJhoOLoJWdOD5zyojPPrH5iFIGM96p0PZ4mv5PhmZDPA/RTIg/PcG1rywn
OJYqAsazntGyEhHEFLRe8QYOVEbiBuv20tNzkFaaulQRdW+boStcW8NefSkKG/9D
FgGnyR87W4Z/ieHEyIva4FBamvRm60xrblAyI0Z7II4l7LTStDzL/ghFq06RVria
au+mY5laq8rAGmRbWkUxNeKeGOVHxjGFYB3uaAkHef0o7tSMMkCSSjiDQlNk5ReQ
xgJMkuTRE7YRN1bDXv/0uPPjg7zfa3M0tMCD9wTXFhIk04HDLVV5WAsH0EK6Nytd
gqnsjGCwfZb2+Fw/QytBei50DUBHpIG3da4dBrxcaRTMiQPzPzL8FaDascE0ZIJM
9ilKvxgq02ryEHLGALFN8eZD1r6zq43KFlRzaynWBWqJ27MiUzK2dk8oC+dH5cz6
+xGXAhLJ+MipoO9k9dLg8re3dOAufsKaY5DLuuluo7dO6IF7rG9xblbiIzWpyfu3
7kJvUdwk36QzsQNGsxpELk65LaWYnaebV7wKyIaaniLysuNCG0dIcAicxRNLgpX9
jic5pi+BzlJI1IuPk+DqOG57pNnU7lTg3op08MUslNyeUH5yaag8DNsLG7uZHzvx
jcqffaqcqS+v6FVmbV2tDF07jn8a754Fnn/QNgsNcdfw9Ov4w7Ty+q5nT2wg2Lsg
bAuzN6b6FiWEuHHMw/I5aIL5cLj2GUpjHtlUHL4KEHpxZ2J5jbBgeqpTWEy1TuPQ
R34lryVASmue/kmk2liah6wNK5RXlGa8uidBm7RT8b5SkIMsrosLx9KpC5lKobzn
8ttK1NSy0ZuMDw9wtnePUbROGjEuw5Na/K1VgO68dATj/7rscvz7C+ZuQORrt88X
+OZmoyw+fEDWAocDnhzI6rJIHLPB0p+rSJ8iSKZpFZYeIy+CD0t6E98RJQHll8BJ
lLyJiMT0xAyelOMzrCJayHxD01aLw6LLOddFbiIRMq4lni5Ha4noWmdO2C80xy3A
jskUEK5sbD8KFl910JUHwaGvb/gDCqW+n10mRa9+cB0tRVjo5OZeSiB01Bkagu7a
f+bRv2i8cBa2ZoGVyW3xFFFhIkHzLgHaU+RLaGwJDe0qxKtwKYz5c/YpAsH+lodM
NV2E/PzHtNY+sg0PijblN6IVO+yiLkxJspKIjf0I1+s8hczhz3QkLRed7dU2nvID
puJQfgraKyS6rawlqLyWo66/PDtdd3tngw50wnDNZik0hz/usDc6o7IN5J9ha7XO
0vZQluMb9R5l+W6RLD2nRd4mlKVqm/Yfq0R8PKoIh8f7uLVk1kbN4prkfpsokvqR
rli5h4URG7WCNvp4bg/i1Ix/CEEjH56LRj83dhVB0O6WXorrZMAChQShMhwnEgeS
USaB5au7xRAM+9fWvF9cmju3hXSTT1zv0owyoSgp36OHcy2HzwZXxA7YWtRDbhMX
BEEEkSZvSVDhZlBXhAkaTBxlrRt624URpHlDVrd0njnPiR92XNs+NTjjvAImETMh
EPbQ/KPspugi6gkrLFhcmy/OiA==
-----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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
pugi6gkrLFhcmy/OiA==
-----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-----
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
1nbSe/5A4mF87n0=
-----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 year 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 and
Felipe Ventura (Entrust)</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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
uALTMrPJn5KN83iEzEe9ZxDc2F+VHeTHgTFg70PT069BG5knL3d6Ca6Fkybe
d4Y7a6LR4sECR1rw3h8Wv/g6bvuZpq6NN6OhKnsPoUU1fTn028+prggP3i2H
6CjsYEcDcLWLLuK6+hBv99X0TwRDWoCgB3gveEs4bcM1q0BQ4auwu8FWEDUs
aIL3O/z2N7BHpEvWxd/xu+FTVWT3NXXRqyHCR+WLHTuwAb7wQH8jn/oQJM57
IlHpH+q8gIrfg+gTLKhCPxIcy7Z3N3rYUDxlrymN/cl25rTSaNCjZmN5puH1
zZlvNniarrdma2tydYvjhSNc1fptJhiENrvZx13l5A/ZcmYucMzwZDrH4tR2
ywNDnZQVfiVMOJ/qrg8Lu8lMFpOlnquZ255wYgayrhFKc2GWCzVT6jQm8+ae
Nne7y34qXRShbYy2BZ658jOzy+4rk1F+3h6PClpH7Vzqt3mlXb9sOn2ivWk3
jFqDqlbmp2m3uRXOmcbs5JesTF/Jq86oPR2zxf1gWNL8oqsWzPOS3wz3LUsd
COPZricT1dn0pjZuJnN1TH5RZAsrszqR+hd2OW+PzuPVsmGaWq7d6eToQle6
dGz1yC4vG0oZDobiNnMgmrdKc7nhe3trNLB6S2nUKt+u1mE8drpltc12uHrF
psabknEqj/fGpjWmc9MZq+TGYifvXM8mMeqtj7Qr3Eyvc2X2XaY9mMq1yXq0
YLZqwz8VKG9409qC4OuTqbTMbC3eE5e1obzjtX4nV28RbaVjXqe16rK0yaly
l7myJ6HUbgjGaWpUqIuz1ekrS22qLFvSq4MZ77Vug5yybx+pynQB5Dch+Blj
XdaFY82hO8Z0u9Tml6HclzujRfdy6LTXjaIv0FpX3lFW1eM5Tmvy/EFtTfSh
Vp7KE+Ki9DjNn02Z6no6zG9bq1OO8sfjg1K97YQiR3lcs1U/z1btPatRpW5r
sFiUl7TbpZh+ZXj1JEI5mu6h0zzvNttCpn3OTa5eQ1bLVGve6NpspygJJanh
XERhOuPUyfg2vg1qbaEluCJDbdgeR9RVvX+6KEeq4FyZ7qBDD9rDmrxp5Z3K
7Vgq9tv69CZczWVjeewVqpw6v/ULklazmhmpWxZvFSJz6azo/aCX4VTbGtW1
ujRQao5clEa0v3P7wrrcGvi+7ltVaVRh21WnU79s9a3K3pb2decXiarWO82l
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
Zo8NZkB3LmLD6k30vrHuN5cKB+i6nnQ23FFtcUeD6E2BBd9jLIHudZXGdd9o
sHZTnqiNIQ02JDOZDPtz4DtcubVbaJmT8poarvPjXmbWNCRFVU1iaKhXcbMs
KO56shg7Nb95bQGWAyTY7zdWV2trp/5yMi6s88AT72U8Re23+fMWGHI9Y3TM
scTeOg3EgS222PPFU8+9sdvxrFuH97nzJcfLFc5mi5bRm+VudaG4Oy9qyuAi
bofq8lyYHxpAJhZzjfG22nNK7Wrbz9Q7JfO8YUtavzSY9kq5myIet1TvmCuc
9gPWYiblmd2VzEKfPzrrktntVomusa+WusLKWVd73eNcORQui/Nm4i+pOm0e
WPtaHU6WNQDFUJtedoX18MhyFcBTdLfVGm41nmjLvYWdKTP7izGftZTRucMV
tY1Sks32LF8UfGtdU5tbrzbej4r8jLetDF3Yy/mzbliS2zg5xL5UONVndr/X
W+YKZ4ptlIqFaWd7aC6pg8r2hHJ7lD/si3K3ViicBubCrS9kV2y4t27rMJkC
+xaI/UubpcUcdVivZwrwHJ3xkTmvNs1Cmy7Od/ZxwlT73mF2KijDSomhcnve
b8ycbmHYqY9PHnHTD1Tp4h0AX7DF03zQrZuzqejv+HbuMiqOR553Ld5OjNTY
5aTMqd7qm9Vj5SjQjZKzrBxKDjGqZ5ZnlbfOm4K+PlVPE7M7q1NgJ5jUodvp
iF1lR+v8UKnK4rIxqGkZdZCbV28yPaf1ens4I0qlVV4erjcb8VrjjoeOOuGB
qmrTE6l4qheVnb6lJ4tuM1fpt0wzP7psnf1I2XmFhXI4HBVlQixzh/ZulJu1
DGFw4ouscnEVXyp0i9trd8QP9gVTKmy7Ru26Wi3mXK9oeUohd6n1zRZfavm5
LTGa9nhX2+k76jbXdmqLHXQ7Rqm2Pa/dU+uyEquOyZ6ObBWsGSCudRM75QWw
pNdzb6Rqp5VP7C9UvgcM+8tksmNPneXB3iytTr3jqaI9Lm6u0xvX4v2xL6mD
xmGxn1C67w1PN38g6sfObLEiBu5+4LXzVrtsGu3JTM11mItasuabkqi1Couy
ZeR2Yqe+lIC3wLYX9HFEtTiKvzXPeU3qb8fEql491M2RoTjOrK6bbGlUFiei
djjtTh1nu+VK1nS4rAqseaZzvL0WVl6mYZ40xss1VjN/ciF0JadUBXd5m/PM
sW9duMK5WWZq7aPq233u2Hekzbh2ntoj51Toq9qCU+pSfcyVOk5zIR76LLE6
5XfXzTLXLcq+YjpOLTe26r3adKNpx8Z8tuBWY5o9+JXi1T+K3GmeB+rsqnJW
rSFK7alVIvb+btqWC/0qPeY7122fKQ8U2FKks6lSnbleK2/Xi4M5cHWxK2+k
K2+urFqhm+kOZ1xtfuyLRL2x6tA9PpPfbPOFnTKTjc0oVx43dqLCZ4TLQJ2e
501+06JzXV0+1SojpesezKlX7B384W5FEYPitrvJ1Fuz25Ru9UyjOrgeqle9
r8/9k9XNVJfCmDMaquSvfH+S0/LqYMQdqdlGyM2K+bk3JtTbpcLVM/kMrzo9
nmrdlGt51eKbOzHHUn5On3u7vHY1z7xB6wO+U13TWy8/F3IFLVNuLot5Yr7Z
SMK50OUXnTbwAMdnXl9NTf2YaTPSarG99ehi3eJzzSEz4nJHyZwOauK85MxL
1MqkXCNDyAp7WOv9Q9/Q8y0ls1+0/fVJq3rrzGbOaDVj5M/autvI7/KF8qpG
DcqMuV+P5FnXNjOGz3hE52pxTVtqnC+LMm1N1Fy5tb+Nj6MaO56f3cOqO+2P
huK44FbU7bxZrnWPWtOwxNm0R9u0X+8Tnc3ENMTV2eFPCyBHuf2wBQTojJ36
dsZW8zN+x8w2nev6aPnj3lDZlXNF58Y2z86lsWvciiIB3D+TYgbcnm7xdb0x
KagDZsjP1kz90BSsVWba7k96rNZbSvkO13UrF+s6vPC7ui+5/P565QlhNbac
0g1Y16NhXd/f9qWzONvM6oqraNv8THaBaarN5VLOv8ktkXYK/SIww46lblko
tEsLj9j08sVLpu7yjkkfx+3amjPOXcbQrpXhNWcUq3qnT299m9stcyfLZq6T
XalTb1e3R0Wd9RbjFcEZ7slcD6h5uzQQJ2WvUFicS418a6E5PUr1rMml3evq
JS3fb7OnvFZarRcnta8Yg64wXO6BoTksOothzZ1OMoJkFOstIAYama13HG5b
eWo/v7RUvydavquvxLVeo61Br1YYSzvWY7dMsy/RxG3brnXp/ozrdl35MtZd
quG0Ro7Sza1z3skudAzFt8uV0XkyPBYA8S/mvnAdLiqlq5an67xBlOb7jmwO
qRNrFaZWMTPtW3mbZnYVrtepbuRBZ1u6tNXWjj/L/YnAMl7Ln9YqzjlHrzsr
fecTo1UPLEbmWkPDzy11b3vglzvdZm22v263a66017q7iT1b5VZzYbGZ1osO
X2ruvdG0vxcy8wGRK1f0Qqs9Y72WNeqVplR5TCvHyoDp3MpDJyc1pxYt2u7q
eijUGnxRbRXyZV2/ePsut5QaFZ0YzBurEnvgzcymU2PkVnN6LTLlTYMeT6hC
n+Gc4S0vFFzrJFIF22ZqFcHMONUDP9rpnUOjtSXKlYpHCdsRX7a00ZrRC1pr
4DUKbF4Atnp73rZ3uV7hunQuzaK9YWl9k5FOveJUmbfBzukVi0RtPQcE6uw3
B6Ou7TlNK1+urKy1vEVjdvPshrV3d2J+tN+Jy6m6X04nmxMtjTL6gJqejYI7
JpR5ter3x6o1XB9v+/nsOizxN7k38KqsZ9famjFbTyqsWjhQxevKpyixpIjl
C3csU7p0HeplIkN1eZdv642Z28rnlU25PL5M96fzcF8Up8f1UW27S4lt8bdV
J2ed3YyiG3N1LbTUSnNhzpQMIdaO7O1WuWTWe75xGMtHqVWQe05mVtoYk9t5
TM2v7PhWbHhCze3d1GVfGXTccnXq7tnppcFTQC8wnZY+7ZSUrVP3BjOx3Fga
jj1nVouTUWGcVfvUAsLLbu5Pucll3bBr2m6U9zu7krm/cOqAKPiNydJ2qI3v
cUKhPOHUYUe+Nkc9+UpRzqR2zZXYqeCNtIVQMgznZBujzfJ46p8btrbM222C
m61Uc3/Qp7X1Zb+kpaqh9BpFs94fVeeHVo/WNKukUL3ZZjRfAS+oOesNNGo6
KjAzaXnOV3NEfXC4lUqjWrHg3YaDGa3kRCZ/WfO94ahxvuYX8kIZNOqNpn8Q
nRXwoqrsRXG7hWX9tBfHFOcQk5XlS3Senlb4hldc+t2JUFt1tPmN1Vq1G1hB
Y6kUnG5j2OGbs/Ha5p3auu8Nj7V943pRmhditusak7qQcSv+8LrfzMWCa+eV
xRHoohurc1fP3Iz79MmcZlZc5uRO9TPLX3cH9ii0TpvxiidK437RK86UgVlt
GsZocq069vY4Ks58tSFXLidxWV6WVC5/FM2qB5TRNt8Ve8OMxlWZ1tThBGLa
LI98vqAbvYJp5OVa01U7hl1Sa87gMNl7Xb5LsyY3n/Gl/iIH7OuRsD4BXuT5
IT84lMcKUTnsfbky2+RH5XlpWOlL41Z70JuJpt7IiIZhjenbtnnxq8a0Vq2t
i32zWDiafe3kACW2MfIS4Uwu0qhUznX8jNzYlHNUaz1orbqr2njmZLgRVTsd
/Q1Vd9mhWmU754F7k43Mfq3vB/vLjRtfidFSbWZWzVJ9r/fXl+pm0bhmmvtG
RVxKqrwunNfd43Ge33PevHqgGCnTE2r6hLEd81Tu2UN7TRiW7AI7br4oT43T
wDInG5+a5zqZud1sDfqVQbO2448Tf8MfO7VybrDlvdnc9YA5T9fG4mBTJA75
DjXbW5eBO5otT1dvsW75p+6EKeUylWp3UMucT8ZWa2lCdTdu5w7G5si5Y/NC
55V+ly6XROI6Ol75xvV2lvq7I6XuWE01hOly2VW5k6LUB/J+vGP4eaO82dH8
hq+p6wNT5yacac8OXOWsEkt3X5vUh0u1NlKvN3M1BVRnZn2/tyn504Lfq7Rt
c+YppyEneme22msDrt52zrnmfrOTpOaCaNQ6e6eQK9Hno36y61JPW552Ji0N
5ot1ZTQzVpqlSMPJpmMN/IKZM6ht3Tp16aVnCA1d1D2iNp1OwdZp1K6lRkEf
a3xh7zYnRa8P1K3YNLjMalzoTwaNnC10Z62FtB/fapfqbDl22GGrZBWI8kxW
27OTa6lljt/2eeC31JtD4PewK64k1qleExhDcnExtKtXurJV591Sv6C6mn8s
uD1BrRH6ceSfbufqaiVVNyVuJHG98225toesmKs6dHF0HF1bMr9bL/38zRsU
5r3toZOby5ud7mv8uU7Y1Eru2bwu2KdCt+Ixu9b12GR3wEJU85vhpnOT+0K5
W9n2e4OKJpTX/lpuM1M/rxy2FblTGhMlj+d2532DvWRklVrnhsX1YiK1fF2v
9CuFGU1bc8aasWLvwnY1nTEUeen4tfmkNT6t8s5lR6x6VtUrLSiNqovVep/j
jozVlzLAVeS8fa3WWdQmo0LbmU8KpVn7PC1zXbFJTxiGHfl5lvFbhM/lK7ur
XdKoNjDIxpluXhOKFlXVdxtDK1fMrq/qFm11ms1jh+dKdfrMdC0AwEShUQCW
+N4IbBiAJb4Sgb2PoBJPg7C8rO9QFrEskbCPd+J10nIqKgvbPrJttgnGjaOy
9Vuz2dirCn1mG7TCzuftlW4slEmrZE6aldnNKY30af+yWK8n59ZkPVizQNOv
txUhT7MEPZmcmQMz4ehSh87PGfp87m6L7ZvUWdykFi23z9SVuzFXbqZdRjP2
Nmw1BPjbsAV/Uy5E+CMHWIFp0aOGMlw0aI5rFOoXsTjVxeLkrCiLHEdTnWah
2eHpTidjeJMmzTB0iW0TW5qGN5gNFqzsQeD4WdzYkTrGTfMFotcyGj3Jpq/V
iaQOlxo7bSwawip3lVz9WJt4lSVP95Y7c3uVqHW7MekzTame67TbxU7DWq7L
xGnDznq9kSiqXZuuLibzWlUABuG2WxzOrFWxra2thTbvbM/d2cnm64zY85xW
qT0Cm+VQOraWRN8tLZjaQWbcospX5etA2DU2Pa3AjFTWs+rDml71ht0R2x2J
QFBJvZV42Mg7r0E5zH4zmVcJui6tO7I8q83X21prLRUZwehb+23b5GnKzV9O
FW4wtnobnTU6SslX9A1VGpvjvsrVMu7OYIm5sr4Vj+akbqpCTst0NhpXa9Xb
nNqq1c/b5WnQFEu6ajUvzkimtizPiJO5165eGkp5PvXZDlHJbXmqOJos7GNl
0Wjnt2V/389ftud8ud6fWNscxS1pYdfr3rzt3sz0SuKMVesOMBSPQr2zdYhZ
x/PnLfYwNV3loK5cb9inxtwp02SWzsxuL/2efaxWgBm5ODpXlxY2bU+Yzph8
yS6ty/Ndh+DWC6Url63mRCrn+APY5efrpNfrj9hhc16Y6e1yq0NrV748ZGbe
niku3KGcy/GlWmbUOg3rDiHeeOrMjouNobhk1NlMETlvsdLXzfNuMnGsYj9f
aB7lK7cGlo5+2pZWrXqrT7UrA3MynDCyRihbKe/sqc6pfbHb3LVH57gcdzov
rOHxcp5NNUW7FfrzY67TdGbCiZ2I7pp258VLWRsvT87IIQ6itVx0h05fWrcF
y9y6196MczaF2VUZlKmdfhs7VWYjNhnXLF37hlItzPKU37p6VYkqNcsZ4mzb
B43zK5Vl5eBRVUtZ+S7Yjf7CZw9Dwexlqjt/YtSnxeZsZ7dGF5oSbh1t4s8c
zbM3qkTYZW91oh12bx9l9tS/lih2O6X252bv1mYov6nvCqPezTAGpe5orh3m
agmYwSOrtDV9rSDNfGIxasmqOTtf+Ou82CtPdiagW+vMFc7u1i8DuzbXGV7t
ev1oX+1BJWctlhtvJVDcauaPdhfnRJjKUt7V6ULznL/kcy2qkju0vPGg4hjS
eNtsrf1rw21WuaJ9spa9NV8SxVurdtAt5aSf/fF6Q/AGJxcWE/GkWBPZbJtr
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
yv7enC7Ht9hc6uOmHx2PPsjdJvgluDDBAQv91GVq4pJdvK2AM4DS3WimCvd6
f7CbxnLfpZh5qo3NanvUB9QQMAA8846HYDtrAdQpDVYfZKesTjMD16jtSS/w
tjg0Cm0L1vCkzKMVFc7b9qxrxMgaC/OlELUb+JcS19xYEzd7mWNFdI11VfFT
uW44byxyhGwVeZg5V2E46esn17loBqMNpyxt71cTP1zPycpogciTfR6dSIy9
SRN5xfel/Vihy2wnzYbhZKw4HFO3B6fGVadv7nicCe29KE1ujj0R5ca9KYol
cc0wX2DVDmfspVRYc23KNttWNd0V5RGTe6ur2b2k9zt6uyKlLT4fOhMpOTnk
ZZasUzdr5/uJ7q8x/GSdgWH5qdhW6mp0njHX4WFjkqx79u68sj3PdjLpyqMp
WTHTfWYOxTZZ6UKx2RHA+XENy0M7y3Kdi0JpM9vsE1ofOeWlzixtu84Wk2Jp
MluCuztGHrT5fuVe1ahWW3oUk+XsfM1bLOhfRPIWAPpxnQ1uDrc3+scbvswN
23UM5zIZNJN2r8Y7dj4gTGOrjPKrOKyEy1FlbqelHmIntdTlg932zcHFFtV0
qCv5WRmydrEe8FFo4kkC/y5u6vS3i+UBnyyLvnauVlPpuMJrP5xhyxnvNgmz
FCNHvQf0bHU66/4Nd0Ynt+bXCUgrA7q4045DXSKAcJOh22h1P+Y4nJQmU0XG
7sUsoPpNOaY00hvd7ZAWDxIFQmO0vI7qOqNI2r4ooyENMpFj33ALxR3eBGkg
RhON3g4UTNyZ2YZI7TSb7Gf4wJY4T7VO/upKVU5l4Jt76Zh9OpmqwAWsUzlN
pLie1c6Uv7nOOkivmBWPQS4+OVPy6T6j//Y/edEOZvTApSXuwIhbliVIfswY
4RJbh0MrnQiXUqXKdiUbSlkfTKIgxo5CupObV7uiq0/Fo1kPgjF7EOlUuZdM
oeCHeZtH0wAjYmNn4xQ9ivjpJB68nQn/dn6LOo18lpihoqDve45E6S/z8cWj
3gfedv1W64Vu+kbPOn4KH5Fj+3mTd5r7Eaxfs2xYltdzEz183PLtF1+v7Yb1
TM9uI0kNFhGG31V+PRp4oGq37p/PxdkWWtgvVMRXw8vLYdUUqjVMXgv6rnQL
Tg0y7o8ehn1KJMlhsZQdwIrCb/YLRtPflvcqd3otFF2kCqaG9Wj/x/yeXoCd
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
A1wTjXtxGwEA

-->

</rfc>

