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


<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2986 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2986.xml">
<!ENTITY RFC4210 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4210.xml">
<!ENTITY RFC5280 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5652 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8411 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
<!ENTITY I-D.draft-ounsworth-pq-composite-keys-00 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ounsworth-pq-composite-keys-00.xml">
<!ENTITY I-D.draft-becker-guthrie-noncomposite-hybrid-auth-00 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-becker-guthrie-noncomposite-hybrid-auth-00.xml">
<!ENTITY RFC3279 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3279.xml">
<!ENTITY RFC8017 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8017.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ounsworth-pq-composite-sigs-07" category="std" >
  <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="M." surname="Pala" fullname="Massimiliano Pala">
      <organization>CableLabs</organization>
      <address>
        <email>director@openca.org</email>
      </address>
    </author>

    <date year="2022" month="June" 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 implementer 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. For digital signatures, this is referred to as &quot;dual&quot;, and for encryption key establishment this as referred to as &quot;hybrid&quot;. This document, and its companions, defines a specific instantiation of the dual and hybrid paradigm called &quot;composite&quot; where multiple cryptographic algorithms are combined to form a single key, signature, or key encapsulation mechanism (KEM) such that they can be treated as a single atomic object at the protocol level.</t>

<t>EDNOTE: the terms &quot;dual&quot; and &quot;hybrid&quot; are currently in flux. We anticipate an Informational draft to normalize terminology, and will update this draft accordingly.</t>

<t>This document defines the structures CompositeSignatureValue, and CompositeParams, which are sequences of the respective structure for each component algorithm. The generic composite variant is defined which allows arbitrary combinations of signature algorithms to be used in the CompositeSignatureValue and CompositeParams structures without needing the combination to be pre-registered or pre-agreed. The explicit variant is also defined which allows for a set of signature algorithm identifier OIDs to be registered together as an explicit composite signature algorithm and assigned an OID.</t>

<t>This document is intended to be coupled with corresponding documents that define the structure and semantics of composite public and private keys and encryption [I-D.draft-ounsworth-pq-composite-keys-01], however may also be used with non-composite keys, such as when a protocol combines multiple certificates into a single cryptographic operation.</t>

<!-- End of Abstract -->



    </abstract>



  </front>

  <middle>


<section anchor="changes-in-version-07" title="Changes in version -07">

<t><list style="symbols">
  <t>Merged Generic Composite (<xref target="sec-generic-composite"/>) and Explicit Composite (<xref target="sec-explicit"/>) into one document and made them share a wire encoding (only differing by the OIDs used).</t>
  <t>Removed Composite-OR signature mode.</t>
  <t>Added <xref target="sec-backwards-compat"/> addressing backwards compatibility and ease of migration concerns.</t>
  <t>Added CompositeParams := Alg1, Alg2, .. Algn as an input parameter to the sig gen and verification processes.</t>
</list></t>

<t>TODO diff this against the public version and see if there are any more changes.</t>

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

<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>The deployment of composite signatures using post-quantum algorithms will face two challenges</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>Backwards compatibility: During the transition period, post-quantum algorithms will not be supported by all clients.</t>
</list></t>

<t>This document provides a mechanism to address algorithm strength uncertainty concerns by building on [draft-ounsworth-pq-composite-keys-00] (NOTE: need kramdown formatting help with this ref) by providing formats for encoding multiple signature values into existing public signature fields, as well as the process for validating a composite signature. Backwards compatibility is addressed via using composite in conjunction with a non-composite hybrid mode such as that described in [draft-becker-guthrie-noncomposite-hybrid-auth-00] (NOTE: need kramdown formatting help with this ref).</t>

<t>This document is intended for general applicability anywhere that digital signatures are used within PKIX and CMS structures.</t>

<!-- End of Introduction section -->

<section anchor="sec-terminology" title="Terminology">
<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>
<section anchor="sec-composite-structs" title="Composite Signature Structures">

<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="composite-keys" title="Composite Keys">

<t>A composite signature MAY be associated with a composite public key as defined in [draft-ounsworth-pq-composite-keys-00] (NOTE: need kramdown formatting help with this ref), but MAY also be associated with multiple public keys from different sources, for example multiple X.509 certificates, or multiple cryptographic modules. In the latter case, composite signatures MAY be used as the mechanism for carrying multiple signatures in a non-composite authentication mechanism such as those described in [draft-becker-guthrie-noncomposite-hybrid-auth-00] (NOTE: need kramdown formatting help with this ref).</t>

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

<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 id-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 id-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="sec-composite-sig-structs" title="sa-CompositeSignature">

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

<figure><artwork type="asn.1"><![CDATA[
sa-CompositeSignature SIGNATURE-ALGORITHM ::= {
    IDENTIFIER identifier
    VALUE CompositeSignatureValue
    PARAMS ANY DEFINED BY ALGORITHM
    PUBLIC-KEYS { pk-Composite }
    SMIME-CAPS { IDENTIFIED BY id-alg-composite } }
}
]]></artwork></figure>

<t>The identifier specifies the type of composite signature and the component algorithms. This document defines a generic composite algorithm, identified by id-alg-composite, in <xref target="sec-generic-composite"/>, and allows for other standards that will define explicit algorithms that specify which component algorithms are to be contained within them.</t>

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

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

<figure><artwork type="asn.1" name="composite-sig-asn.1"><![CDATA[
CompositeSignatureValue ::= SEQUENCE SIZE (2..MAX) OF BIT STRING
]]></artwork></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 in the associated CompositeParams object.</t>

<t>A CompositeSignatureValue MUST contain the same number of component signatures as the corresponding public and private keys, and the order of component signature values MUST correspond to the component public keys.</t>

<t>The choice of <spanx style="verb">SEQUENCE 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 anchor="sec-encoding-rules" title="Encoding Rules">
<!-- 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 composite signature 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>

<t>EDNOTE: will this definition include an ASN.1 tag and length byte inside the OCTET STRING object? If so, that&#39;s probably an extra unnecessary layer.</t>

<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>

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

</section>
</section>
<section anchor="sec-alg-idents" title="Algorithm Identifiers">

<t>This section defines the algorithm identifier for generic composite, as well as a framework for defining explicit combinations. This section is not intended to be exhaustive and other authors may define others 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>

<section anchor="sec-generic-composite" title="id-alg-composite (Generic Composite Signatures)">

<t>The id-alg-composite object identifier is used for identifying a generic composite signature. This algorithm allows arbitrary combinations of signature algorithms to be used in the CompositeSignatureValue and CompositeParams structures without needing the combination to be pre-registered or pre-agreed. This identifier MUST be used in sa-CompositeSignature.identifier.</t>

<figure><artwork type="asn.1"><![CDATA[
id-alg-composite OBJECT IDENTIFIER ::= {
    iso(1)  identified-organization(3) dod(6) internet(1) private(4)
    enterprise(1) OpenCA(18227) Algorithms(2) id-alg-composite(1) }
]]></artwork></figure>

<t>EDNOTE: this is a temporary OID for the purposes of prototyping. We are requesting IANA to assign a permanent OID, see <xref target="sec-iana"/>.</t>

<t>The following algorithm parameters MUST be included:</t>

<figure><artwork type="asn.1" name="CompositeSignatureParams-asn.1-structures"><![CDATA[
CompositeParams ::= SEQUENCE SIZE (2..MAX) OF AlgorithmIdentifier
]]></artwork></figure>

<t>The signature&#39;s CompositeParams sequence MUST contain the same component algorithms listed in the same order as in the associated CompositePublicKey.</t>

<t>The motivation for this variant is primarily for prototyping work prior to the standardization of algorithm identifiers for explicit combinations of algorithms. However, the authors envision that this variant will remain relevant beyond full standardization for example in environments requiring very high levels of crypto agility, for example where clients support a large number of algorithms or where a large number of keys will be used at a time and it is therefore prohibitive to define algorithm identifiers for every combination of pairs, triples, quadruples, etc of algorithms.</t>

</section>
<section anchor="sec-explicit" title="Explicit Composite Signatures">

<t>This variant provides a rigid way of specifying supported combinations of algorithms.</t>

<t>The motivation for this variant is to make it easier to reference and enforce specific combinations of algorithms. The authors envision this being useful for client-server negotiated protocols, protocol designers who wish to place constraints on allowable algorithm combinations in the protocol specification, as well as audited environments that wish to prove that only certain combinations will be supported by clients.</t>

<t>Explicit algorithms must define a new signature algorithm which consists of:</t>

<t><list style="symbols">
  <t>A new algorithm identifier OID for the explicit algorithm.</t>
  <t>The algorithm identifier OID and PUBLIC-KEY type of each component algorithm.</t>
  <t>Signature parameters either declared ABSENT, or defined with a type and encoding.</t>
</list></t>

<t>See <xref target="appdx-creatingExplicitCombinations"/> for guidance on creating and registering OIDs for specific explicit combinations.</t>

<t>For explicit algorithms, it is not necessary to carry a CompositeParams with the list of component algorithms in the signature algorithm parameters because clients can infer the expected component algorithms from the algorithm identifier. The PARAMS is left optional because some types of component algorithms will require parameters to be carried, such as RSASSA-PSS-params as defined in <xref target="RFC8017"></xref>. <xref target="sec-composite-sig-structs"/> defines <spanx style="verb">PARAMS ANY DEFINED BY ALGORITHM</spanx> so that explicit algorithms may define params as ABSENT, use <spanx style="verb">CompositeParams</spanx> defined in <xref target="sec-generic-composite"/> or use any other encoding that is appropriate.</t>

<t>In this variant, the signature is encoded as defined in <xref target="sec-composite-sig-structs"/>, however the sa-CompositeSignature.identifier SHALL be an OID which is registered to represent a specific combination of component signature algorithms. See <xref target="appdx-examples"/> for examples.</t>

</section>
</section>
<section anchor="sec-composite-signature-algorithm" title="Composite Signature Processes">

<t>This section specifies the processes for generating and verifying composite signatures.</t>

<t>This process addresses algorithm strength uncertainty by providing the verifier with parallel signatures from all the component signature algorithms; thus forging the composite signature would require forging all of the component signatures.</t>

<section anchor="sec-comp-sig-gen" title="Composite Signature Generation Process">

<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><artwork name="alg-composite-sig-gen"><![CDATA[
Input:
     K1, K2, .., Kn     Signing private keys. See note below on 
                        composite inputs.

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

     M                  Message to be signed, an octet string

Output:
     S                  The signatures, a CompositeSignatureValue

Signature Generation Process:
   1. Generate the n component signatures independently,
      according to their algorithm specifications.

        for i := 1 to n
            Si := Sign( Ki, Ai, M )

   2. Encode each component signature S1, S2, .., Sn into a BIT STRING
      according to its algorithm specification.

        S ::= Sequence { S1, S2, .., Sn }

   3. Output S
]]></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, for example they may be carried in CompositePrivateKey and CompositeParams structures. It is also possible to generate a composite signature that combines signatures from distinct 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 in ~~ Reference draft-ounsworth-pq-composite-pubkeys sec-composite-pub-keys ~~, no component signature may itself be a composite; ie the signature generation process MUST fail if one of the private keys K1, K2, .., Kn is a composite with the OID id-alg-composite.</t>

<t>A composite signature MUST produce, and include in the output, a signature value for every component key in  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, etc. The authors recognize that there may be valid use cases for &quot;subset signature generation&quot;; see <xref target="sec-subset-sig-gen"/> for further discussion of security implications, and <xref target="sec-backwards-compat"/> for further discussion of backwards compatibility implications.</t>

<t>For security when using a generic composite signature algorithm as defined in <xref target="sec-generic-composite"/>, the list of component signature algorithms A1, A2, .., An, which may be carried in a CompositeParams object, SHOULD be included in the signed message M to prevent an attacker from substituting a weaker algorithm which is compatible with the same public key. This attack is not unique or new to the composite format.</t>

</section>
<section anchor="sec-comp-sig-verify" title="Composite Signature Verification Process">

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

<t>In the absence of an application profile specifying otherwise, 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><artwork name="alg-sig-verif"><![CDATA[
Input:
     P1, P2, .., Pn     Public verification keys. See note below on 
                        composite inputs.

     M                  Message whose signature is to be verified, 
                        an octet string
     
     S1, S2, .., Sn    Component signature values to be verified.
                       See note below on composite inputs.
     
     A1, A2, ... An     Component signature algorithms. See note 
                        below on composite inputs.

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 three sequences have
      different numbers of elements, or any of the public keys 
      P1, P2, .., Pn or algorithm identifiers A1, A2, .., An are 
      composite with the OID id-alg-composite or an explicit composite
      OID then output "Invalid signature" and stop.

   2. Check each component signature individually, according to its
       algorithm specification.
       If any fail, then the entire signature validation fails.

     for i := 1 to n
          if not verify( Pi, M, Si, Ai ), 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, algorithms and signatures is flexible and beyond the scope of this pseudo-code, for example they may be carried in CompositePublicKey, CompositeParams, and compositesignaturevalue structures. It is also possible to verify a composite signature where the component public verification keys belong, for example, to separate X.509 certificates or cryptographic modules. Variations in the process to accommodate particular public verification 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 in ~~ Reference draft-ounsworth-pq-composite-keys sec-composite-pub-keys ~~, no component signature may be composite; ie the signature verification procedure MUST fail if any of the public keys P1, P2, .., Pn or algorithm identifiers A1, A2, .., An are composite with the OID id-alg-composite.</t>

<t>Some verification clients may include a policy mechanism for specifying acceptable subsets of algorithms. In these cases, implementer MAY, in the interest of performance of compatibility, modify the above process to skip one or more signature validations as per their local client policy. See <xref target="sec-cons-OR-modes"/> for a discussion of associated risks.</t>

<t>In the absence of such a policy mechanism that can be easily updated to reflect new cryptanalytic breakthroughs, clients MUST perform signature verifications in the AND mode defined here. See <xref target="sec-subset-sig-gen"/> for further discussion of security implications of subset signature verifications, and <xref target="sec-backwards-compat"/> for further discussion of backwards compatibility implications.</t>

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

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

<t>This section addresses practical issues of how this draft affects other protocols and standards.</t>

<t>~~~ BEGIN EDNOTE 10~~~</t>

<t>EDNOTE 10: Possible topics to address:</t>

<t><list style="symbols">
  <t>The size of these certs and cert chains.</t>
  <t>In particular, implications for (large) composite keys / signatures / certs on the handshake stages of TLS and IKEv2.</t>
  <t>If a cert in the chain is a composite cert then does the whole chain need to be of composite Certs?</t>
  <t>We could also explain that the root CA cert does not have to be of the same algorithms. The root cert SHOULD NOT be transferred in the authentication exchange to save transport overhead and thus it can be different than the intermediate and leaf certs.</t>
  <t>We could talk about overhead (size and processing).</t>
  <t>We could also discuss backwards compatibility.</t>
  <t>We could include a subsection about implementation considerations.</t>
</list></t>

<t>~~~ END EDNOTE 10~~~</t>

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

<t>As noted in the introduction, the post-quantum cryptographic migration will face challenges in both ensuring cryptographic strength against adversaries of unknown capabilities, as well as providing ease of migration. The composite mechanisms defined in this document primarily address cryptographic strength, however this section contains notes on how backwards compatibility may be obtained.</t>

<t>The term &quot;ease of migration&quot; is used here to mean that existing systems can be gracefully transitioned to the new technology without requiring large service disruptions or expensive upgrades. 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.</t>

<t>These 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 [RFC8446] and IKEv2 [RFC7296], to non-negotiated asynchronous protocols such as S/MIME signed email [RFC8551], 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.</t>

<section anchor="or-modes" title="OR modes">

<t><xref target="sec-comp-sig-gen"/> and <xref target="sec-comp-sig-verify"/> make reference to subset signature generation and verification modes to achieve an OR relation between component signatures, where senders and / or receivers are permitted to ignore some component keys. Some envisioned uses of this include environments where the client encounters a component signature algorithm for which it does not posses a compatible implementation but wishes to proceed with the signature verification using the subset of component signatures for which it does have compatible implementations. Such a mechanism could be designed to provide ease of migration by allowing for composite keys to be distributed and used before all clients in the environment are fully upgraded, but it does not allow for full backwards compatibility since clients would at least need to be upgraded from their current state to be able to parse the composite structures.</t>

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

<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 [draft-becker-guthrie-noncomposite-hybrid-auth-00] (NOTE: need kramdown formatting help with this ref) or [draft-guthrie-ipsecme-ikev2-hybrid-auth-00]. Note that it is possible to use the signature algorithms defined in <xref target="sec-alg-idents"/> 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>

<!-- End of In Practice section -->

</section>
</section>
</section>
<section anchor="sec-iana" title="IANA Considerations">
<t>The ASN.1 module OID is TBD.  The id-alg-composite OID is to be assigned by IANA.  The authors suggest that IANA assign an OID on the id-pkix arc:</t>

<figure><artwork><![CDATA[
id-alg-composite OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) algorithms(6) composite(??) }
]]></artwork></figure>

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

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

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

<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), it is obvious that clients performing signature verifications should be updated to fail to validate signatures using these algorithms.</t>

<t>In the composite model this is less obvious since a single public key, certificate, or signature may contain a mixture of deprecated and non-deprecated algorithms. Moreover, implementers may decide that certain cryptographic algorithms have complementary security properties and are acceptable in combination even though neither algorithm is acceptable by itself.</t>

<t>Specifying a modified verification algorithm to handle these situations is beyond the scope of this draft, but could be desirable as the subject of an application profile document, or to be up to the discretion of implementers.</t>

<figure><artwork><![CDATA[
2. Check policy to see whether A1, A2, ..., An constitutes a valid
   combination of algorithms.

   if not checkPolicy(A1, A2, ..., An), then
     output "Invalid signature"
]]></artwork></figure>

</section>
<section anchor="sec-cons-OR-modes" title="OR Modes">

<section anchor="sec-subset-sig-gen" title="Subset Signature Generation">

<t>This document defines a composite signature generation process in <xref target="sec-comp-sig-gen"/> where the signer MUST produce a signature value with each of their component private keys, this providing full protection of the content under all available component algorithms.</t>

<t>The authors recognize that there may be cases where a client may wish to generate a composite signature that only uses a subset of the available component algorithms, for example to save bandwidth, or because a client has been issued a key for which it does not (yet) have implementations of all component algorithms. This could be easily encoded by placing a NULL value into the corresponding field of the CompositeSignatureValue. However, this mode was intentionally omitted from this specification as it trivially allows for stripping attacks where an attacker replaces a valid component signature value with NULL, thus reducing the security of the composite signature to the weakest of the available component algorithms.</t>

<t>Implementer who wish to perform subset signature generations are advised to couple it with an out-of-band policy mechanism that limits the potential for stripping attacks. Note that, in an effort to keep compliant implementations simple and secure, implementations claiming to be compliant with this draft MUST NOT generate subset signatures in this way, and MUST reject during verification any subset signatures that they encounter.</t>

</section>
<section anchor="sec-subset-sig-verif" title="Subset Signature Verification">

<t>This document defines a composite signature verification process in <xref target="sec-comp-sig-verify"/> where the verifier verifies all component signatures and fails if any component fails. The authors recognize that there will be scenarios where the verifier considers a single component algorithm -- or subset of component algorithms -- to provide sufficient security, and therefore for performance reasons wishes to skip the verification of one or more component signatures.</t>

<t>-- harmonize this with Serge&#39;s blurb --</t>

<t>Implementers who wish to perform subset signature verifications are advised to couple it with an out-of-band policy mechanism that can control the list of acceptable algorithm combinations, and keep this list up to date as new cryptanalytic advances are made.</t>

<t>Risks:</t>

<t><list style="symbols">
  <t>Failing to update client verification policy in response to advances in cryptanalysis</t>
  <t>Verifications of a subset of signatures leads to ambiguity in the security strength of the signature verification; ie if a message carries two signatures, one at 128 bits and the other at 112 bits of security and clients are verifying in an OR mode with flexible policy, then it becomes difficult to audit the security strength used at runtime.</t>
  <t>Moreover, verifying multiple algorithms provides security even in the event that one of the algorithms has already been broken, but knowledge of the break has not been made public yet.</t>
</list></t>

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

<!-- Start of Appendices -->

</section>
</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC2119;
&RFC2986;
&RFC4210;
&RFC5280;
&RFC5652;
&RFC8174;
&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'>

&I-D.draft-ounsworth-pq-composite-keys-00;
&I-D.draft-becker-guthrie-noncomposite-hybrid-auth-00;
<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>
&RFC3279;
&RFC8017;


    </references>


<section anchor="work-in-progress" title="Work in Progress">

<section anchor="combiner-modes-kofn" title="Combiner modes (KofN)">

<t>For content commitment use-cases, such as legally-binding non-repudiation, the signer (whether it be a CA or an end entity) needs to be able to specify how its signature is to be interpreted and verified.</t>

<t>For now we have removed combiner modes (AND, OR, KofN) from this draft, but we are still discussing how to incorporate this for the cases where it is needed (maybe a X.509 v3 extension, or a signature algorithm param).</t>

</section>
</section>
<section anchor="appdx-creatingExplicitCombinations" title="Creating explicit combinations">

<t>The following ASN.1 Information Objects may be useful in defining and parsing explicit pairs of signature algorithms.</t>

<t>... TODO ... copy &amp; adapt from the keys draft.</t>

</section>
<section anchor="appdx-examples" title="Examples">

<section anchor="appdx-genComposite-examples" title="Generic Composite Signature Examples">

<t>TODO</t>

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

<t>TODO</t>

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

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

Composite-Signatures-2019
  { TBD }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS
  PUBLIC-KEY, SIGNATURE-ALGORITHM
    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) } ;

--
-- Object Identifiers
--

id-alg-composite OBJECT IDENTIFIER ::= { TBD }

--
-- Public Key
--

pk-Composite PUBLIC-KEY ::= {
    IDENTIFIER id-alg-composite
    KEY CompositePublicKey
    PARAMS ARE absent
    PRIVATE-KEY CompositePrivateKey
}

CompositePublicKey ::= SEQUENCE SIZE (2..MAX) OF SubjectPublicKeyInfo

CompositePrivateKey ::= SEQUENCE SIZE (2..MAX) OF OneAsymmetricKey

--
-- Signature Algorithm
--

sa-CompositeSignature SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-composite
    VALUE CompositeSignatureValue
    PARAMS TYPE CompositeParams ARE required
    PUBLIC-KEYS { pk-Composite }
    SMIME-CAPS { IDENTIFIED BY id-alg-composite } }

CompositeParams ::= SEQUENCE SIZE (2..MAX) OF AlgorithmIdentifier

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

END

<CODE ENDS>

]]></artwork></figure>

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

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

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

</section>
<section anchor="contributors-and-acknowledgements" title="Contributors and Acknowledgements">
<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>John Gray (Entrust),
Serge Mister (Entrust),
Scott Fluhrer (Cisco Systems),
Panos Kampanakis (Cisco Systems),
Daniel Van Geest (ISARA),
Tim Hollebeek (Digicert), and
Francois Rousseau.</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" title="Making contributions">

<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:
H4sIAO6uoGIAA+V923IbV5LgO77iLB0xDUYAEEFJlkRNbw9EQjJG4qUJSrbX
oRgXUAdANQtVcJ0qUmiHHPMP+xH7Ifsn+yWTl3OtC61uu7cjdh0zLRCoOpfM
PHnPPMPhsFcmZSpPxGm+3eUqKaWYJ+ssKqtCKvE6L8R7JcUsg/8rZZHJUly9
nfWixaKQdyfi6s/he6r3lfjX/zYciunZxeXN9ERM46RUotxIERfRqhRZtJVi
OPzvvThf4ucT/n6YV5m6z4tyM9z9NFyaIYcKhhwePeuZYVUZZfF/RGmewZtl
UfFYya6gv1R5fHT04ui4FxUyOhFzuayKpNz37tcn4t3k/Greu70/sRsZnuHM
vWVUnsC4ca+3zOMkg0crNYzUMkl6u+REwH9fiWWUwbdSREUR7UU/WYkoTcVe
qkMBANpEaiM2spA9Icp8eYI/wEcF2ynkSp3QELFcRVWKsMjN7/st/4x/9qKq
3OTFSQ8nHNL/CpFk8Ov5SFwa4OjvGXDnya1s/JQXsIFpRsAQ75ItADHWPxmc
6V/1twrWKAECx0+PjsQ8TwG+pbjOo1j8n//8n2JeIWLHR0f66SWA80RclmV0
Hw3EZVZGRZKb3wCHZQE/n0ZZFEf22xjW+vb4rXj85qn+Tm6jJD0RW9jAyCL+
3ySvawTY77WC4SpKoxACkVKwxTSJstz/lYBwGi1S+S5aqHDSOCnkssyLf8t3
MltGI3i218vyYhuVyZ1E+F+/Pj0ej1+Yjy+ef60/PjkeH+mPT4+f249fPz3W
H5+Pnz0xH5+Mx/jxu9HXL45O9BL0STuYZSueMM9EKZebLE/z9V4MxWR+MRoL
WBdRoriuUglbn+/kMlklS34hX4lXkUqWgEf/MdF/Nb0+HCDw8wyeTRu/n8Lv
AtArzhJVwvdVojYybjx2Bo8d6AXHUQnrvcjv5HYhC3F8NDYo9MnVgnx28354
Y+hKFolUCezUPTSbXz6aTU9PxPPnx0+H4xMar1dnGasKzpbaA219EgAnYB6J
wuOTZLBaPGYnYlOWO3Xy6NE6KTfVAinm0TJa5I9ui2gb5/fZsFgtj78+fkHc
oZcYcDN+Z8Oz0YNM51bugekchc8u5PJWFsM17Bs2NgQguxc2+0WRxEOEiX7v
VZLFMoX9PePdG8zfFFEGrwAeEeLACiLxUxVlZbUdArtNkL2VYlctUsAvLANI
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
+1/EcLwMBZkAAA==

-->

</rfc>

