<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.36 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gray-lamps-compositepkc-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="Composite-PKC-Context">Preventing Key Reuse and Cross‑Key Forgeries in Composite ML-DSA</title>
    <seriesInfo name="Internet-Draft" value="draft-gray-lamps-compositepkc-00"/>
    <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="L." surname="Prabel" fullname="Lucas Prabel">
      <organization>Huawei</organization>
      <address>
        <email>lucas.prabel@huawei.com</email>
      </address>
    </author>
    <date year="2026" month="May" day="13"/>
    <area>Security</area>
    <workgroup>Limited Additional Mechanisms for PKIX and SMIME</workgroup>
    <keyword>composite signatures</keyword>
    <keyword>public key binding</keyword>
    <abstract>
      <?line 52?>

<t>This document defines a small, backwards‑compatible change to composite ML-DSA that <strong>cryptographically binds the signature to the specific composite public key</strong>. It does so by defining a <strong>Public‑Key Context</strong> value (<tt>pkc</tt>) equal to a hash of the <strong>serialized composite public key</strong>, and by setting the composite context field to that value. This prevents <strong>key reuse</strong> and <strong>cross‑key forgeries</strong> across different composite keys, while preserving the API of Composite ML‑DSA. The construction introduces two helper procedures to compute <tt>pkc</tt> from either the composite private key or the composite public key.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Limited Additional Mechanisms for PKIX and SMIME Working Group mailing list (spasm@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spasm/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/johngray-dev/draft-gray-lamps-compositepkc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Composite signature schemes (e.g., Composite ML‑DSA) pre-hash the application message and prepend a <strong>Prefix</strong>, an algorithm‑specific <strong>Label</strong>, and an application‑provided <strong>ctx</strong> byte string to form the message representative <tt>M'</tt>, which is then signed by each component primitive. The current composite signature construction:</t>
      <artwork><![CDATA[
M' :=  Prefix || Label || len(ctx) || ctx || PH( M )
]]></artwork>
      <t>The <tt>ctx</tt> is an application context of up to 255 bytes.</t>
      <t>While the existing design already mitigates several cross‑protocol issues via <tt>Prefix</tt> and <tt>Label</tt>, and explicitly <strong>forbids key reuse</strong>, some deployments may still reuse component keys or attempt to combine component signatures across keys. This opens the door to <strong>cross‑key “mix‑and‑match” forgeries</strong> (splicing a valid ML‑DSA component from one composite with a valid traditional component from another).</t>
      <t>This document proposes a <strong>minimal change</strong>: set <tt>ctx</tt> to a <strong>hash of the composite public key</strong>. Because the hash depends on the <em>exact</em> public key bytes, both component signatures become bound to the same key material, preventing cross‑key recombination.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>This document inherits the notation of the Composite ML‑DSA draft (e.g., <tt>Prefix</tt>, <tt>Label</tt>, <tt>PH</tt>, <tt>SerializePublicKey</tt>, etc.) and the conventional <strong>KeyGen/Sign/Verify</strong> API of a signature scheme.</t>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="threat-model-and-goals">
      <name>Threat Model and Goals</name>
      <t><em>Goal</em>: prevent an adversary from taking valid component signatures produced under <strong>different</strong> composite keys and combining them into a valid composite signature for a target key.</t>
      <t><em>Approach</em>: bind both component signatures to the <strong>same exact composite public key</strong> by including <tt>pkc = H(SerializePublicKey(..))</tt> inside <tt>M'</tt>. Because <tt>pkc</tt> changes with any bit of the key, component signatures extracted from different keys no longer verify together.</t>
      <ul empty="true">
        <li>
          <t>This does <strong>not</strong> change the malleability properties of individual primitives (e.g., ECDSA); therefore SUF‑CMA is still not claimed. It primarily removes <strong>cross‑key</strong> splicing and reduces the impact of accidental key reuse.</t>
        </li>
      </ul>
    </section>
    <section anchor="overview-of-the-construction">
      <name>Overview of the Construction</name>
      <t>This construction proposes <tt>len(pkc)</tt> as the length of the <tt>len(ctx)</tt> and <tt>pkc</tt> as the <tt>ctx</tt> value; all signature computation remains as specified in the base document.</t>
      <t>Let <tt>Hash_ctx</tt> denote the hash function chosen by the algorithm’s OID (e.g., SHA‑256, SHA‑512, SHAKE256/64). The <strong>Public‑Key Context</strong> is:</t>
      <artwork><![CDATA[
pkc = Hash_ctx( SerializePublicKey(mldsaPK, tradPK) )
]]></artwork>
      <t>The new message representative is:</t>
      <artwork><![CDATA[
M' := Prefix || Label || len(pkc) || pkc || PH(M)
]]></artwork>
      <t><tt>Prefix</tt> and <tt>Label</tt> are unchanged. <tt>len(pkc)</tt> is encoded as a single unsigned byte, which is sufficient because the mandated hash outputs are ≤ 64 bytes. The <tt>PH(M)</tt> is the pre‑hash of the application message as in <xref target="I-D.ietf-lamps-pq-composite-sigs"/>.</t>
    </section>
    <section anchor="publickey-context-pkc-routines">
      <name>Public‑Key Context (PKC) Routines</name>
      <t>This draft defines two convenience routines to compute <tt>pkc</tt> from either the composite private key or the composite public key.</t>
      <section anchor="computepublickeycontext-from-private-key">
        <name>ComputePublicKeyContext from Private Key</name>
        <artwork><![CDATA[
Composite-ML-DSA<OID>.ComputePublicKeyContext(sk) -> pkc

Inputs:
sk: composite private key

Implicit inputs (from <OID>):
Hash_ctx: the hash function for PKC (same as the algorithm’s PH unless specified otherwise)

Process:

1.  (mldsaSeed, tradSK) = DeserializePrivateKey(sk)
2.  (mldsaPK, mldsaSK) = ML-DSA.KeyGen_internal(mldsaSeed)     // FIPS 204, seed-based expansion
4.  tradPK  = Trad.PublicKey(tradSK)                        // derive public key from private key
5.  pk = SerializePublicKey(mldsaPK, tradPK)
6.  pkc = Hash_ctx(pk)
7.  return pkc
]]></artwork>
        <ul empty="true">
          <li>
            <t>Notes: The seed‑based ML‑DSA private key representation and the ability to re‑derive <tt>mldsaPK</tt> from <tt>mldsaSeed</tt> are already normative in <xref target="I-D.ietf-lamps-pq-composite-sigs"/></t>
          </li>
        </ul>
        <t>During the signing operation, access to the public key is required.  The above method suggests generating the composite public key from the composite private key by Deserializing the private key into its component keys, deriving the public component key for ML-DSA and the public component key for the traditional component, and then using the SerializePublicKey() method as defined in section 4.1 <xref target="I-D.ietf-lamps-pq-composite-sigs"/>.  This is only one of several options, but is a non-normative, non-exhautive list.</t>
        <ol spacing="normal" type="1"><li>
            <t>Derive or extract from private key as suggested above. Many cryptographic modules expose functionality to obtain an RSA or EC public key from the corresponding private key. For applications where such functionality does not exist, see section 10.4.1 and 10.4.2 in <xref target="I-D.ietf-lamps-pq-composite-kem"/> for mechanisms for extracting the public keys from private keys for RSA and ECDSA respectively. It is assumed that this is not required for Ed25519 or Ed448 since those private keys are seeds from which the public key can be obtained.</t>
          </li>
          <li>
            <t>Fetch it from an external data source, for example from the public-key certificate corresponding to this private key.</t>
          </li>
          <li>
            <t>If the composite signature private key is being carried within a PKCS#8 OneAsymmetricKey object, place the full composite public key within the optional OneAsymmetricKey.publicKey field (and re-encode as necessary for correctly using it in the context).</t>
          </li>
          <li>
            <t>Use an alternate private key encoding that explicitly carries the composite public key.</t>
          </li>
        </ol>
      </section>
      <section anchor="computepublickeycontext-from-public-key">
        <name>ComputePublicKeyContext from Public Key</name>
        <artwork><![CDATA[
Composite-ML-DSA<OID>.ComputePublicKeyContext(pk) -> pkc

Inputs:
pk: composite public key

Implicit inputs (from <OID>):
Hash_ctx

Process:
1.  pkc = Hash_ctx(pk)
2.  return pkc
]]></artwork>
      </section>
    </section>
    <section anchor="algorithms">
      <name>Algorithms</name>
      <t>Both <tt>Composite-ML-DSA&lt;OID&gt;.Sign(sk, M, ctx)</tt> and <tt>Composite-ML-DSA&lt;OID&gt;.Verify(pk, M, s, ctx)</tt> remain the same.   The only difference is that pkc is passed in as the ctx value.</t>
      <t>The signature interface remains the same.</t>
      <t>Note:  The application specific <tt>ctx</tt> argument is <strong>ignored</strong> with this current design.  To keep that property, a future version of this specification could set <tt>pkc = HASH (ctx || publickey)</tt>.</t>
    </section>
    <section anchor="serialization-and-asn1-usage">
      <name>Serialization and ASN.1 Usage</name>
      <t>This document <strong>does not</strong> change the composite public/private key or signature <strong>serialization formats</strong> from <xref target="I-D.ietf-lamps-pq-composite-sigs"/> and signatures remain concatenations of the component encodings. It also does not change DER wrapping in SPKI/PKCS#8.</t>
      <t>Because wire compatibility requires peers to know whether <tt>ctx</tt> is application‑set or PKC‑bound, this document could have registered <strong>new algorithm identifiers</strong> for each PKC‑bound combination.  However, that is not within the scope of this document.  This is meant for specific application context use-cases where the preventing key reuse is a desired security property.  For example, applications which choose to profile a set of composite signatures could choose to also adopt the use of this context.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t><strong>Key Reuse</strong>: <xref target="I-D.ietf-lamps-pq-composite-sigs"/> strictly forbids reusing component keys. Binding <tt>ctx</tt> to <tt>pkc</tt> provides a cryptographic backstop: even if component keys were (improperly) reused, cross‑key splicing will fail because <tt>pkc</tt> differs for each public key instance.</t>
      <t><strong>Non‑separability</strong>: <xref target="I-D.ietf-lamps-pq-composite-sigs"/> achieved Weak Non‑Separability (WNS) and a limited form of SNS for ML‑DSA via the <tt>mldsa_ctx=Label</tt>. PKC‑binding additionally prevents forming <tt>(mldsaSig1, tradSig2)</tt> under different keys, because both signatures are now bounded to the same <tt>pkc</tt>. This does <strong>not</strong> fix primitive‑level malleability (e.g., ECDSA) and therefore does not claim SUF‑CMA.  However, for algorithms like EdDSA or Ed448 which are SUF secure, this property should remain.</t>
      <t><strong>Prefix</strong>: Existing <strong>Prefix</strong> and <strong>Label</strong> remain unchanged; deployments that implemented the optional Prefix in traditional verifiers can keep it as is.</t>
      <t><strong>Hash Choices</strong>: <tt>Hash_ctx</tt> <bcp14>MUST</bcp14> be the algorithm’s registered pre‑hash function (e.g., SHA‑256, SHA‑512, SHAKE256/64). This keeps implementation complexity minimal and ensures digest sizes fit within the ctx length field.</t>
      <t><strong>Privacy</strong>: <tt>pkc</tt> reveals nothing beyond what the public key already reveals; it is a hash of public data.</t>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t><strong>Signer Access to pk</strong>: The signer computes <tt>pkc</tt> either by deriving <tt>compositePK</tt> from <tt>compositeSK</tt>, or by keeping a cached copy of <tt>compositepk</tt> alongside <tt>compositesk</tt>.</t>
      <t><strong>Interoperability</strong>: Because <tt>M'</tt> changes when this context type is used, peers <bcp14>MUST</bcp14> know that this context will be used.  One way to achieve this is for application specific use cases to specify this context type as part of the usage.  For example, if an application using composite signatures desired this security property, it could make use of the public key binding in the context mandatory.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>None</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-lamps-pq-composite-sigs">
          <front>
            <title>Composite Module-Lattice-Based Digital Signature Algorithm (ML-DSA) for use in X.509 Public Key Infrastructure</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>OpenCA Labs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>Bundesdruckerei GmbH</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <date day="21" month="April" year="2026"/>
            <abstract>
              <t>   This document defines combinations of US NIST Module-Lattice-Based
   Digital Signature Algorithm (ML-DSA) in hybrid with traditional
   algorithms RSASSA-PKCS1-v1.5, RSASSA-PSS, ECDSA, Ed25519, and Ed448.
   These combinations are tailored to meet regulatory guidelines in
   certain regions.  Composite ML-DSA is applicable in applications that
   use X.509 or PKIX data structures that accept ML-DSA, but where the
   operator wants extra protection against breaks or catastrophic bugs
   in ML-DSA, and where existential unforgeability (EUF-CMA) level
   security is acceptable.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-sigs-19"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-pq-composite-kem">
          <front>
            <title>Composite ML-KEM for use in X.509 Public Key Infrastructure</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>OpenCA Labs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>Bundesdruckerei GmbH</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <date day="27" month="March" year="2026"/>
            <abstract>
              <t>   This document defines combinations of US NIST ML-KEM in hybrid with
   traditional algorithms RSA-OAEP, ECDH, X25519, and X448.  These
   combinations are tailored to meet security best practices and
   regulatory guidelines.  Composite ML-KEM is applicable in any
   application that uses X.509 or PKIX data structures that accept ML-
   KEM, but where the operator wants extra protection against breaks or
   catastrophic bugs in ML-KEM.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-kem-14"/>
        </reference>
        <reference anchor="FIPS.204" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.pdf">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="204"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-ietf-pquip-hybrid-signature-spectrums-07">
          <front>
            <title>Hybrid signature spectrums</title>
            <author fullname="Nina Bindel" initials="N." surname="Bindel">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Britta Hale" initials="B." surname="Hale">
              <organization>Naval Postgraduate School</organization>
            </author>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Flo D" initials="F." surname="D">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <date day="20" month="June" year="2025"/>
            <abstract>
              <t>   This document describes classification of design goals and security
   considerations for hybrid digital signature schemes, including proof
   composability, non-separability of the component signatures given a
   hybrid signature, backwards/forwards compatibility, hybrid
   generality, and simultaneous verification.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-hybrid-signature-spectrums-07"/>
        </reference>
      </references>
    </references>
    <?line 215?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to the Composite ML‑DSA authors and LAMPS WG for the existing design and analyses of pre‑hashing, non‑separability, and key‑reuse risks which this document builds upon.  Thanks to Daniel Van Geest for his feedback on this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
