<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lundberg-cose-two-party-signing-algs-05" category="std" consensus="true" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Split signing algorithms for COSE">Split signing algorithms for COSE</title>
    <seriesInfo name="Internet-Draft" value="draft-lundberg-cose-two-party-signing-algs-05"/>
    <author fullname="Emil Lundberg" role="editor">
      <organization>Yubico</organization>
      <address>
        <postal>
          <street>Gävlegatan 22</street>
          <city>Stockholm</city>
          <country>SE</country>
        </postal>
        <email>emil@emlun.se</email>
      </address>
    </author>
    <author initials="M. B." surname="Jones" fullname="Michael B. Jones">
      <organization>Self-Issued Consulting</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>michael_b_jones@hotmail.com</email>
        <uri>https://self-issued.info/</uri>
      </address>
    </author>
    <date year="2026" month="February" day="23"/>
    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>COSE</keyword>
    <keyword>Signing</keyword>
    <keyword>Algorithms</keyword>
    <keyword>Split algorithms</keyword>
    <keyword>Split signing</keyword>
    <abstract>
      <?line 142?>

<t>This specification defines COSE algorithm identifiers
for negotiating how to split a signature algorithm between two cooperating parties.
Typically the first party hashes the data to be signed
and the second party finishes the signature over the hashed data.
This is a common technique, useful for example when the signing private key is held in a smart card
or similar hardware component with limited processing power and communication bandwidth.
The resulting signatures are identical in structure to those computed by a single party,
and can be verified using the same verification algorithm
without additional steps to preprocess the signed data.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-lundberg-cose-two-party-signing-algs/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        COSE Working Group mailing list (<eref target="mailto:cose@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cose/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cose/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/YubicoLabs/cose-two-party-signing-algs-rfc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 154?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>CBOR Object Signing and Encryption (COSE) <xref target="RFC9052"/>
algorithm identifiers are used for algorithm negotiation
and to annotate cryptographic objects with how to interpret them,
for example which algorithm to use to verify a signature or decapsulate a shared key.
Existing COSE algorithm identifiers omit some internal details of how the object was constructed,
since those details are typically irrelevant for the recipient.</t>
      <t>The algorithm identifiers defined in this specification are meant for a complementary use case:
to divide responsibilities during <em>construction</em> of a cryptographic object,
instead of describing how to <em>consume</em> the object.
Specifically, they provide an interoperable way to negotiate
how a signing operation is split between two cooperating parties,
for example, a smart card and a software application,
while the verification algorithm for the resulting signature remains the same
as if the signature was created by a single party.
These split algorithm identifiers are therefore not meant for annotating signature objects,
since the verification algorithm is better indicated using already existing algorithm identifiers.</t>
      <t>As mentioned above, a primary use case for this is for algorithm negotiation
between a software application and a smart card or other hardware security module (HSM) holding the signing private key.
Since the HSM may have limited processing power and communication bandwidth,
it may not be practical to send the entire original message to the HSM.
Instead, since most signature algorithms begin with digesting the message
into a fixed-length intermediate input, this initial digest can be computed by the software application
while the HSM performs the rest of the signature algorithm on the digest.
This is a common technique used in standards such as OpenPGP <xref target="OPENPGPCARD"/>,
PKCS #11 <xref target="PKCS11-Spec-v3.1"/>, and PIV <xref target="FIPS-201"/>.</t>
      <t>Since different signature algorithms digest the message in different ways
and at different stages of the algorithm,
it is not possible for a cryptographic API to specify that, for example, "the hash digest is computed by the caller"
generically for all algorithms.
Security considerations for this split may also differ between algorithms.
Instead, the algorithm identifiers defined in this specification
enable the parties of that cryptographic API to signal precisely, for each signature algorithm individually,
which steps of the algorithm are performed by which party.
We thus define two roles:
the <em>digester</em> (e.g., a software application) that initializes the signing procedure,
and the <em>signer</em> (e.g., an HSM) that holds exclusive control of the signing private key.</t>
      <t>Note that these algorithm identifiers do not define new "pre-hashed" variants of the base signature algorithm,
nor an intermediate "hash envelope" data structure, such as that defined in <xref target="I-D.COSE-Hash-Envelope"/>.
Rather, these identifiers denote existing signature algorithms
that would typically be executed by a single party,
but split into two stages.</t>
      <t>Some signature algorithms,
such as PureEdDSA <xref target="RFC8032"/>,
by their design, cannot be split in this way, and therefore cannot be assigned split signing algorithm identifiers.
However, if such a signature algorithm defines a "pre-hashed" variant,
that "pre-hashed" algorithm can be assigned a split signing algorithm identifier,
enabling the pre-hashing step to be performed by the <em>digester</em>
and the remaining steps by the <em>signer</em>.
For example, this specification defines Ed25519ph-split (<xref target="eddsa-split"/>) as a split variant of Ed25519ph <xref target="RFC8032"/>.
Note that Ed25519 and Ed25519ph have distinct verification algorithms,
but Ed25519ph and Ed25519ph-split use the same verification algorithm.</t>
      <section anchor="requirements-notation-and-conventions">
        <name>Requirements Notation and Conventions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC8174">RFC2119</xref> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="split-algs">
      <name>Split Signing Algorithms</name>
      <t>This section defines divisions of signing algorithm steps between a <em>digester</em> and a <em>signer</em>
in a split signing protocol,
and assigns algorithm identifiers to these algorithm divisions.
The <em>digester</em> performs the first part of the split algorithm and does not have access to the signing private key,
while the <em>signer</em> performs the second part of the split algorithm and has access to the signing private key.
For signing algorithms that format the message to insert domain separation tags,
as described in <xref section="2.2.5" sectionFormat="of" target="RFC9380"/>,
this message formatting is also performed by the <em>signer</em>.</t>
      <t>How the digest, and any related <tt>COSE_Sign_Args</tt> structure (see <xref target="cose-sign-args"/>),
are transported from <em>digester</em> to <em>signer</em> is out of scope for this specification,
but it is expected that the digest will usually be transmitted as the "data to be signed" argument.</t>
      <t>The algorithm identifiers defined in this specification with "-split" in their names
MAY appear in COSE structures used internally between the <em>digester</em> and the <em>signer</em> in a split signing protocol,
but SHOULD NOT appear in COSE structures consumed by signature verifiers.
COSE structures consumed by signature verifiers
SHOULD instead use the corresponding conventional algorithm identifiers for the verification algorithm.
These are listed in the "Verification algorithm" column in the tables defining split signing algorithm identifiers.</t>
      <t>The following subsections define an initial set of split signing algorithm identifiers.
The last subsection provides guidance for defining additional identifiers beyond this initial set.</t>
      <section anchor="ecdsa-split">
        <name>ECDSA</name>
        <t>ECDSA <xref target="FIPS-186-5"/> split signing uses the following division between the <em>digester</em> and the <em>signer</em>
of the steps of the ECDSA signature generation algorithm <xref target="FIPS-186-5"/>:</t>
        <ul spacing="normal">
          <li>
            <t>The signing procedure is defined in Section 6.4.1 of <xref target="FIPS-186-5"/>.</t>
          </li>
          <li>
            <t>The <em>digester</em> performs Step 1 of the signing procedure - hashing the message, producing the value <em>H</em>.</t>
          </li>
          <li>
            <t>The message input to the <em>signer</em> is the value <em>H</em> defined in the signing procedure.</t>
          </li>
          <li>
            <t>The <em>signer</em> resumes the signing procedure from Step 2.</t>
          </li>
        </ul>
        <t>The following algorithm identifiers are defined:</t>
        <table anchor="tbl-ecdsa-split">
          <name>ECDSA split signing algorithm values.</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">COSE Value</th>
              <th align="left">Verification algorithm</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ESP256-split</td>
              <td align="left">TBD</td>
              <td align="left">ESP256</td>
              <td align="left">ESP256 split signing as defined in <xref target="ecdsa-split"/></td>
            </tr>
            <tr>
              <td align="left">ESP384-split</td>
              <td align="left">TBD</td>
              <td align="left">ESP384</td>
              <td align="left">ESP384 split signing as defined in <xref target="ecdsa-split"/></td>
            </tr>
            <tr>
              <td align="left">ESP512-split</td>
              <td align="left">TBD</td>
              <td align="left">ESP512</td>
              <td align="left">ESP512 split signing as defined in <xref target="ecdsa-split"/></td>
            </tr>
          </tbody>
        </table>
        <t>Note: This is distinct from the similarly named Split-ECDSA (SECDSA) <xref target="SECDSA"/>,
although SECDSA can be implemented using this split procedure as a component.</t>
      </section>
      <section anchor="eddsa-split">
        <name>HashEdDSA</name>
        <t>Split HashEdDSA <xref target="RFC8032"/> uses the following division between the <em>digester</em> and the <em>signer</em>
of the steps of the HashEdDSA signing algorithm <xref target="RFC8032"/>:</t>
        <ul spacing="normal">
          <li>
            <t>HashEdDSA is a combination of the EdDSA signing procedure and the PureEdDSA signing procedure.
The EdDSA signing procedure is defined in the first paragraph of <xref section="3.3" sectionFormat="of" target="RFC8032"/>.
The PureEdDSA signing procedure is defined in the second paragraph of <xref section="3.3" sectionFormat="of" target="RFC8032"/>.</t>
          </li>
          <li>
            <t>The <em>digester</em> computes the value <tt>PH(M)</tt> defined in the EdDSA signing procedure.</t>
          </li>
          <li>
            <t>The message input to the <em>signer</em> is the value <tt>PH(M)</tt> defined in the EdDSA signing procedure.
This value is represented as <tt>M</tt> in the PureEdDSA signing procedure.</t>
          </li>
          <li>
            <t>The <em>signer</em> executes the PureEdDSA signing procedure,
where the value denoted <tt>M</tt> in the PureEdDSA signing procedure
takes the value denoted <tt>PH(M)</tt> in the EdDSA signing procedure.</t>
          </li>
        </ul>
        <t>PureEdDSA <xref target="RFC8032"/> cannot be divided in this way
since such a division would require that the <em>digester</em> has access to the private key.</t>
        <t>The following algorithm identifiers are defined:</t>
        <table anchor="tbl-eddsa-split">
          <name>HashEdDSA algorithm values.</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">COSE Value</th>
              <th align="left">Verification algorithm</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Ed25519ph</td>
              <td align="left">TBD</td>
              <td align="left">Ed25519ph</td>
              <td align="left">EdDSA using the Ed25519ph parameter set in <xref section="5.1" sectionFormat="of" target="RFC8032"/></td>
            </tr>
            <tr>
              <td align="left">Ed25519ph-split</td>
              <td align="left">TBD</td>
              <td align="left">Ed25519ph</td>
              <td align="left">EdDSA using the Ed25519ph parameter set in <xref section="5.1" sectionFormat="of" target="RFC8032"/> and split as defined in <xref target="eddsa-split"/></td>
            </tr>
            <tr>
              <td align="left">Ed448ph</td>
              <td align="left">TBD</td>
              <td align="left">Ed448ph</td>
              <td align="left">EdDSA using the Ed448ph parameter set in <xref section="5.2" sectionFormat="of" target="RFC8032"/></td>
            </tr>
            <tr>
              <td align="left">Ed448ph-split</td>
              <td align="left">TBD</td>
              <td align="left">Ed448ph</td>
              <td align="left">EdDSA using the Ed448ph parameter set in <xref section="5.2" sectionFormat="of" target="RFC8032"/> and split as defined in <xref target="eddsa-split"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="defining-split-algs">
        <name>Defining Split Signing Algorithms</name>
        <t>Future definitions of additional split signing algorithm identifiers
SHOULD follow the conventions established in <xref target="split-algs"/> as far as possible.
For example, if a signature algorithm prescribes insertion of domain separation tags
in a way that requires processing the entirety of the data to be signed,
it might be necessary to delegate the domain separation responsibility to the <em>digester</em>.
Per the considerations in <xref target="sec-cons-trusted-roles-comp"/>,
split signing algorithm identifiers SHOULD be defined in ways that minimize
how much responsibility is delegated to the <em>digester</em>.</t>
        <t>As a concrete example, consider ML-DSA and HashML-DSA <xref target="FIPS-204"/>.
ML-DSA and HashML-DSA prefix the input data with a 0 octet and a 1 octet respectively,
which enforces domain separation between ML-DSA and HashML-DSA signatures.
<xref section="D" sectionFormat="of" target="RFC9881"/> describes a mode of ML-DSA
that could be assigned a split signing algorithm identifier
where the <em>digester</em> performs <tt>Computeμ</tt> and the <em>signer</em> performs <tt>Signμ</tt>.
Note that this puts the <em>digester</em> in control of the domain separation tags;
this is necessary if the hash step is not performed by the <em>signer</em>.
Therefore with this construction, it is the <em>digester</em> that decides
whether the signing protocol will produce an ML-DSA signature or a HashML-DSA signature.
In contrast, HashML-DSA first hashes the input data alone and then another time with domain separation tags;
therefore HashML-DSA can be assigned a split signing algorithm identifier
that keeps the <em>signer</em> in control of the domain separation tags
and ensures that the signing protocol can only produce HashML-DSA signatures.</t>
      </section>
    </section>
    <section anchor="cose-sign-args">
      <name>COSE Signing Arguments</name>
      <t>While many signature algorithms take the private key and data to be signed as the only two parameters,
some signature algorithms have additional parameters that must also be set.
For example,
to sign using a key derived by ARKG <xref target="I-D.bradleylundberg-ARKG"/>,
two additional arguments <tt>kh</tt> and <tt>ctx</tt> are needed in <tt>ARKG-Derive-Private-Key</tt> to derive the signing private key.</t>
      <t>While such additional arguments are simple to provide to the API of the signing procedure in a single-party context,
in a split signing context these additional arguments also need to be conveyed from the <em>digester</em> to the <em>signer</em>.
For this purpose, we define a new COSE structure <tt>COSE_Sign_Args</tt> for "COSE signing arguments".
This enables defining a unified, algorithm-agnostic protocol between the <em>digester</em> and the <em>signer</em>,
rather than requiring a distinct protocol for each signature algorithm for the sake of conveying algorithm-specific parameters.</t>
      <t><tt>COSE_Sign_Args</tt> is built on a CBOR map.
The set of common parameters that can appear in a <tt>COSE_Sign_Args</tt>
can be found in the IANA "COSE Signing Arguments Common Parameters" registry (TODO).
Additional parameters defined for specific signing algorithms
can be found in the IANA "COSE Signing Arguments Algorithm Parameters" registry (TODO).</t>
      <t>The CDDL grammar describing <tt>COSE_Sign_Args</tt>, using the CDDL fragment defined in <xref section="1.5" sectionFormat="of" target="RFC9052"/>, is:</t>
      <sourcecode type="cddl"><![CDATA[
COSE_Sign_Args = {
    3 ^ => tstr / int,  ; alg
    * label => values,
}
]]></sourcecode>
      <section anchor="cose-sign-args-common">
        <name>COSE Signing Arguments Common Parameters</name>
        <t>This document defines a set of common parameters for a COSE Signing Arguments object.
<xref target="tbl-cose-sign-args-common"/> provides a summary of the parameters defined in this section.</t>
        <table anchor="tbl-cose-sign-args-common">
          <name>Common parameters of the COSE_Sign_Args structure.</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Label</th>
              <th align="left">CBOR Type</th>
              <th align="left">Value Registry</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">alg</td>
              <td align="left">3</td>
              <td align="left">tstr / int</td>
              <td align="left">COSE Algorithms</td>
              <td align="left">Signing algorithm to use</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t>alg: This parameter identifies the signing algorithm the additional arguments apply to.
The signer MUST verify that this algorithm matches any key usage restrictions set on the key to be used.
If the algorithms do not match, then the signature operation MUST be aborted with an error.</t>
          </li>
        </ul>
        <t>Definitions of COSE algorithms MAY define additional algorithm-specific parameters for <tt>COSE_Sign_Args</tt>.</t>
        <t>The following CDDL example conveys additional arguments for signing data
using the ESP256-split algorithm (see <xref target="ecdsa-split"/>)
and a key derived using <tt>ARKG-P256</tt> <xref target="I-D.bradleylundberg-ARKG"/>:</t>
        <sourcecode type="cddl"><![CDATA[
{
  3: -65539,   ; alg: ESP256-split with ARKG-P256 (placeholder value)

               ; ARKG-P256 key handle
               ; (HMAC-SHA-256-128 followed by
                  SEC1 uncompressed ECDH public key)
  -1: h'27987995f184a44cfa548d104b0a461d
        0487fc739dbcdabc293ac5469221da91b220e04c681074ec4692a76ffacb9043de
          c2847ea9060fd42da267f66852e63589f0c00dc88f290d660c65a65a50c86361',

               ; ctx argument to ARKG-Derive-Private-Key
  -2: 'ARKG-P256.test vectors',
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="security-cons">
      <name>Security Considerations</name>
      <section anchor="sec-cons-trusted-roles-protocol">
        <name>Protocol-Level Trusted Roles</name>
        <t>This specification assumes that both the <em>digester</em> and <em>signer</em> roles
described in <xref target="split-algs"/> are trusted and cooperate honestly.
This is because a similar division between "application" and "secure element"
typically exists already:
even if all steps of the signing algorithm are executed in a trusted secure element,
the inputs to the secure element are provided by some outside component such as a software application.
If the application can provide any input to be signed,
then for all practical purposes it is trusted with possession of any private keys
for as long as it is authorized to exercise the secure element.
The application can in practice obtain a signature over any chosen message
without needing to perform a forgery attack.
The same relationship exists between <em>digester</em> and <em>signer</em>.
Applications that cannot trust an external <em>digester</em> -
for example a hardware security device with an integrated secure display of what data is about to be signed -
by definition have no use for split signing algorithm identifiers.</t>
        <t>Similarly from a verifier's perspective,
these split signing procedures are implementation details.
When a signature is generated by a single party,
that single party takes on both the <em>digester</em> and the <em>signer</em> roles,
and obviously trusts itself to perform the <em>digester</em> role honestly.
From the verifier's perspective,
a malicious <em>digester</em> in the split signing model would have the same powers
as a malicious signature generator in a single-party signing model.
Thus, on the application or protocol level,
assuming an honest <em>digester</em> is no more restrictive than assuming an honest signature generator.</t>
      </section>
      <section anchor="sec-cons-trusted-roles-comp">
        <name>Component-Level Trusted Roles</name>
        <t>The reasoning in <xref target="sec-cons-trusted-roles-protocol"/> does not hold on the component level.
A <em>signer</em> implementation MUST NOT assume that the <em>digester</em> implementation
it interoperates with is necessarily honest.
Split signing algorithms MUST NOT be defined in a way
that enables a malicious <em>digester</em> with access to an honest <em>signer</em> to produce forgeries -
any that could not be produced by simply requesting a signature over the desired message -
or extract secrets from the <em>signer</em>.</t>
        <t>For example, for ECDSA (<xref target="ecdsa-split"/>), a malicious <em>digester</em> can choose <em>H</em>
in such a way that the <em>signer</em> will derive any <em>digester</em>-chosen value of <em>e</em>,
including zero or other potentially problematic values.
Fortunately, in this case, this does not enable the <em>digester</em> to extract the signature nonce or private key.
It also does not make forgeries easier,
since the <em>digester</em> still needs to find a preimage of <em>e</em> for the relevant hash function.
Definitions of other algorithms need to ensure that similar chosen-input attacks
do not enable extracting secrets or forging protocol-level messages.</t>
        <t>For example, a naively prehashed version of FALCON <xref target="FALCON"/> would allow such a key compromise:
A FALCON signature is a value <tt>s</tt> such that both <tt>s</tt> and <tt>s * h - hash(r || m)</tt> are short,
where <tt>h</tt> is the public key and <tt>r</tt> a randomizer.
If the digester gets to query the signer for signatures of arbitrary stand-ins for <tt>hash(r || m)</tt>,
they can extract the private key by for example asking for repeated signatures of 0.
Therefore, definitions of split signing algorithms need to be reviewed and potentially have security proofs adjusted.</t>
      </section>
      <section anchor="sec-cons-invalid-alg-use">
        <name>Incorrect Use of Split Signing Algorithm Identifiers</name>
        <t><xref target="split-algs"/> recommends against exposing split signing algorithm identifiers -
including those defined in this specification with "-split" in their names -
to signature verifiers.
For example, they should not appear as the "alg" parameter of a COSE_Key public key sent to a signature verifier.
If a split signing algorithm identifier is encountered in an invalid context like this,
the recipient SHOULD reject the message with a fatal error.</t>
        <t>This is because the purpose of these split signing algorithm identifiers
is to enable more flexible production of signatures that can be verified by existing implementations of existing verification algorithms.
A prevalence of these identifiers appearing outside the split signing context would defeat this purpose;
we therefore recommend such use SHOULD NOT be tolerated.</t>
        <t>This recommendation is the opposite of the oft-cited "robustness principle" stated in paragraph 3.9 of <xref target="RFC1958"/>.
Implementations MAY choose to instead follow the robustness principle and tolerate incorrect use of split signing algorithm identifiers,
instead interpreting the identifier as referencing the defined corresponding verification algorithm.
Note however that this is no longer considered a best practice and is likely to harm interoperability <xref target="RFC9413"/>.</t>
        <t>A verifier's choice to tolerate or not tolerate incorrect use of split signing algorithm identifiers
is expected to not affect security,
assuming a split algorithm identifier is interpreted as an alias representing the same verification algorithm as a non-split algorithm identifier.</t>
      </section>
    </section>
    <section anchor="impl-cons">
      <name>Implementation Considerations</name>
      <section anchor="impl-cons-non-split-algs">
        <name>Using Non-Split Signing Algorithm Identifiers in a Split Signing Protocol</name>
        <t>A protocol designed to use split signing algorithm identifiers such as those defined in this specification
MAY also allow use of algorithm identifiers that do not represent split signing algorithms.
In this case, the <em>signer</em> performs all steps of the signing procedure as usual.
For example, if the <em>signer</em> receives a signature request with an the algorithm identifier "ESP256",
then the <em>digester</em> passes the input data through unmodified
and it is the <em>signer</em> that computes the SHA-256 digest of the input data as defined in the ESP256 definition <xref target="RFC9864"/>.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <section anchor="cose-alg-reg">
        <name>COSE Algorithms Registrations</name>
        <t>This section registers the following values in the IANA "COSE Algorithms" registry <xref target="IANA.COSE"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Name: ESP256-split
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD (Requested Assignment -300)</t>
              </li>
              <li>
                <t>Description: ESP256 split signing</t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref target="ecdsa-split"/> of this specification</t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: ESP384-split
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD (Requested Assignment -301)</t>
              </li>
              <li>
                <t>Description: ESP384 split signing</t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref target="ecdsa-split"/> of this specification</t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: ESP512-split
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD (Requested Assignment -302)</t>
              </li>
              <li>
                <t>Description: ESP512 split signing</t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref target="ecdsa-split"/> of this specification</t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: Ed25519ph
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD</t>
              </li>
              <li>
                <t>Description: EdDSA using the Ed25519ph parameter set in <xref section="5.1" sectionFormat="of" target="RFC8032"/></t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref section="5.1" sectionFormat="of" target="RFC8032"/></t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: Ed25519ph-split
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD (Requested Assignment -303)</t>
              </li>
              <li>
                <t>Description: Ed25519ph split as defined in <xref target="eddsa-split"/></t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref target="eddsa-split"/> of this specification</t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: Ed448ph
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD</t>
              </li>
              <li>
                <t>Description: EdDSA using the Ed448ph parameter set in <xref section="5.2" sectionFormat="of" target="RFC8032"/></t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref section="5.2" sectionFormat="of" target="RFC8032"/></t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Name: Ed448ph-split
            </t>
            <ul spacing="normal">
              <li>
                <t>Value: TBD (Requested Assignment -304)</t>
              </li>
              <li>
                <t>Description: Ed448ph split as defined in <xref target="eddsa-split"/></t>
              </li>
              <li>
                <t>Capabilities: [kty]</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Reference: <xref target="eddsa-split"/> of this specification</t>
              </li>
              <li>
                <t>Recommended: Yes</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="cose-signing-arguments-common-parameters-registry">
        <name>COSE Signing Arguments Common Parameters Registry</name>
        <t>TODO</t>
      </section>
      <section anchor="cose-signing-arguments-algorithm-parameters-registry">
        <name>COSE Signing Arguments Algorithm Parameters Registry</name>
        <t>TODO</t>
      </section>
    </section>
    <section anchor="impl-status">
      <name>Implementation Status</name>
      <t>This section is to be removed from the specification by the RFC Editor before publication as an RFC.</t>
      <t>There are currently two known implementations using features defined by this specification:</t>
      <ul spacing="normal">
        <li>
          <t><eref target="https://github.com/wwWallet">wwWallet</eref>, an EU Digital Identity pilot project.
wwWallet was entered into the
<eref target="https://www.sprind.org/en/actions/challenges/eudi-wallet-prototypes">"EUDI Wallet Prototypes" competition held by SprinD GmbH</eref>,
and a branch of the wallet was submitted in the competition.
The competition entry implements ARKG <xref target="I-D.bradleylundberg-ARKG"/>
for efficiently generating single-use hardware-bound holder binding keys.  </t>
          <t>
The <eref target="https://github.com/gunet/funke-s3a-wallet-frontend/blob/stage-3/src/services/keystore.ts">implementation</eref>
uses the <tt>COSE_Key_Ref</tt> data structure defined in version 01 of this specification
in order to send ARKG inputs to a WebAuthn authenticator,
and uses the placeholder value for the experimental split algorithm identifier ESP256-split-ARKG
defined in Section 5.2 of <xref target="I-D.bradleylundberg-ARKG"/>
to negotiate creation and usage of ARKG-derived keys for signing operations.
Thus wwWallet assumes the <em>digester</em> role while the WebAuthn authenticator assumes the <em>signer</em> role.</t>
        </li>
        <li>
          <t><eref target="https://www.yubico.com/">Yubico</eref>, a hardware security key vendor,
has produced limited-availability prototypes of their YubiKey product
with an ARKG implementation interoperable with wwWallet.
The YubiKey implementation uses the <tt>COSE_Key_Ref</tt> data structure defined in version 01 of this specification
to receive ARKG inputs from a WebAuthn Relying Party,
and uses the placeholder value for the experimental split algorithm identifier ESP256-split-ARKG
defined in Section 5.2 of <xref target="I-D.bradleylundberg-ARKG"/>
to negotiate creation and usage of ARKG-derived keys for signing operations.
Thus the YubiKey assumes the <em>signer</em> role while the WebAuthn Relying Party assumes the <em>digester</em> role.</t>
        </li>
      </ul>
      <t><xref target="tbl-impl-status-matrix"/> summarizes implementation status for individual features.</t>
      <table anchor="tbl-impl-status-matrix">
        <name>Implementation status of individual features.</name>
        <thead>
          <tr>
            <th align="left">Feature</th>
            <th align="left">Defined by</th>
            <th align="left">Digester</th>
            <th align="left">Signer</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">ESP256-split</td>
            <td align="left">This specification</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">ESP384-split</td>
            <td align="left">This specification</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">ESP512-split</td>
            <td align="left">This specification</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">Ed25519ph-split</td>
            <td align="left">This specification</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">Ed448ph-split</td>
            <td align="left">This specification</td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">ESP256-split-ARKG</td>
            <td align="left">
              <xref target="I-D.bradleylundberg-ARKG"/></td>
            <td align="left">wwWallet</td>
            <td align="left">Yubico</td>
          </tr>
          <tr>
            <td align="left">ESP384-split-ARKG</td>
            <td align="left">
              <xref target="I-D.bradleylundberg-ARKG"/></td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">ESP512-split-ARKG</td>
            <td align="left">
              <xref target="I-D.bradleylundberg-ARKG"/></td>
            <td align="left">-</td>
            <td align="left">-</td>
          </tr>
          <tr>
            <td align="left">
              <tt>COSE_Sign_Args</tt></td>
            <td align="left">This specification</td>
            <td align="left">wwWallet</td>
            <td align="left">Yubico</td>
          </tr>
        </tbody>
      </table>
      <section anchor="impl-status-dependents">
        <name>Dependent Specifications</name>
        <t>As indicated in the previous section,
the Internet-Draft of ARKG <xref target="I-D.bradleylundberg-ARKG"/> extends this specification with definitions for ARKG:</t>
        <ul spacing="normal">
          <li>
            <t>Section "5.2 COSE algorithms" defines COSE algorithm identifiers ESP256-split-ARKG, ESP384-split-ARKG
and ESP512-split-ARKG based on the ECDSA identifiers defined in this specification (<xref target="ecdsa-split"/>).</t>
          </li>
          <li>
            <t>Section "5.3 COSE signing arguments" defines a representation for ARKG arguments
using the <tt>COSE_Sign_Args</tt> data structure defined in this specification (<xref target="cose-sign-args"/>).</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.bradleylundberg-ARKG">
          <front>
            <title>The Asynchronous Remote Key Generation (ARKG) algorithm</title>
            <author fullname="Emil Lundberg" initials="E." surname="Lundberg">
              <organization>Yubico</organization>
            </author>
            <author fullname="John Bradley" initials="J." surname="Bradley">
              <organization>Yubico</organization>
            </author>
            <date day="7" month="July" year="2025"/>
            <abstract>
              <t>   Asynchronous Remote Key Generation (ARKG) is an abstract algorithm
   that enables delegation of asymmetric public key generation without
   giving access to the corresponding private keys.  This capability
   enables a variety of applications: a user agent can generate
   pseudonymous public keys to prevent tracking; a message sender can
   generate ephemeral recipient public keys to enhance forward secrecy;
   two paired authentication devices can each have their own private
   keys while each can register public keys on behalf of the other.

   This document provides three main contributions: a specification of
   the generic ARKG algorithm using abstract primitives; a set of
   formulae for instantiating the abstract primitives using concrete
   primitives; and an initial set of fully specified concrete ARKG
   instances.  We expect that additional instances will be defined in
   the future.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bradleylundberg-cfrg-arkg-09"/>
        </reference>
        <reference anchor="IANA.COSE" target="https://www.iana.org/assignments/cose/">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </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="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="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>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9864">
          <front>
            <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
              <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9864"/>
          <seriesInfo name="DOI" value="10.17487/RFC9864"/>
        </reference>
        <reference anchor="SEC1" target="https://www.secg.org/sec1-v2.pdf">
          <front>
            <title>SEC 1: Elliptic Curve Cryptography</title>
            <author>
              <organization>Certicom Research</organization>
            </author>
            <date year="2009" month="May"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="FALCON" target="https://falcon-sign.info/">
          <front>
            <title>FALCON: Fast-Fourier Lattice-based Compact Signatures over NTRU</title>
            <author fullname="Pierre-Alain Fouque">
              <organization/>
            </author>
            <author fullname="Jeffrey Hoffstein">
              <organization/>
            </author>
            <author fullname="Paul Kirchner">
              <organization/>
            </author>
            <author fullname="Vadim Lyubashevsky">
              <organization/>
            </author>
            <author fullname="Thomas Pornin">
              <organization/>
            </author>
            <author fullname="Thomas Prest">
              <organization/>
            </author>
            <author fullname="Thomas Ricosset">
              <organization/>
            </author>
            <author fullname="Gregor Seiler">
              <organization/>
            </author>
            <author fullname="William Whyte">
              <organization/>
            </author>
            <author fullname="Zhenfei Zhang">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="FIPS-201" target="https://doi.org/10.6028/NIST.SP.800-73pt2-5">
          <front>
            <title>Interfaces for Personal Identity Verification: Part 2 – PIV Card Application Card Command Interface</title>
            <author fullname="Hildegard Ferraiolo">
              <organization>National Institute of Standards and Technology, Gaithersburg, MD</organization>
            </author>
            <author fullname="Ketan Mehta">
              <organization>National Institute of Standards and Technology, Gaithersburg, MD</organization>
            </author>
            <author fullname="Salvatore Francomacaro">
              <organization>National Institute of Standards and Technology, Gaithersburg, MD</organization>
            </author>
            <author fullname="Ramaswamy Chandramouli">
              <organization>National Institute of Standards and Technology, Gaithersburg, MD</organization>
            </author>
            <author fullname="Sarbari Gupta">
              <organization>National Institute of Standards and Technology, Gaithersburg, MD</organization>
            </author>
            <date year="2024"/>
          </front>
          <refcontent>NIST Special Publication (SP) NIST SP 800-73pt2-5</refcontent>
        </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</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
        </reference>
        <reference anchor="FIPS-186-5" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2023" month="February"/>
          </front>
        </reference>
        <reference anchor="I-D.COSE-Hash-Envelope">
          <front>
            <title>COSE Hash Envelope</title>
            <author fullname="Orie Steele" initials="O." surname="Steele">
         </author>
            <author fullname="Steve Lasker" initials="S." surname="Lasker">
         </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="15" month="November" year="2025"/>
            <abstract>
              <t>   This document defines new COSE header parameters for signaling a
   payload as an output of a hash function.  This mechanism enables
   faster validation, as access to the original payload is not required
   for signature validation.  Additionally, hints of the hashed
   payload's content format and availability are defined, providing
   references to optional discovery mechanisms that can help to find
   original payload content.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-hash-envelope-10"/>
        </reference>
        <reference anchor="PKCS11-Spec-v3.1" target="https://docs.oasis-open.org/pkcs11/pkcs11-spec/v3.1/os/pkcs11-spec-v3.1-os.html">
          <front>
            <title>PKCS #11 Specification Version 3.1.</title>
            <author fullname="Dieter Bong">
              <organization/>
            </author>
            <author fullname="Tony Cox">
              <organization/>
            </author>
            <date year="2023" month="July" day="23"/>
          </front>
          <annotation>Latest stage: <eref target="https://docs.oasis-open.org/pkcs11/pkcs11-spec/v3.1/pkcs11-spec-v3.1.html">https://docs.oasis-open.org/pkcs11/pkcs11-spec/v3.1/pkcs11-spec-v3.1.html</eref>.</annotation>
          <refcontent>OASIS Standard</refcontent>
        </reference>
        <reference anchor="OPENPGPCARD" target="https://gnupg.org/ftp/specs/OpenPGP-smart-card-application-3.4.1.pdf">
          <front>
            <title>Functional Specification of the OpenPGP application on ISO Smart Card Operating Systems</title>
            <author fullname="Achim Pietig">
              <organization/>
            </author>
            <date year="2020" month="March"/>
          </front>
          <refcontent>Version 3.4.1</refcontent>
        </reference>
        <reference anchor="RFC1958">
          <front>
            <title>Architectural Principles of the Internet</title>
            <author fullname="B. Carpenter" initials="B." role="editor" surname="Carpenter"/>
            <date month="June" year="1996"/>
            <abstract>
              <t>The Internet and its architecture have grown in evolutionary fashion from modest beginnings, rather than from a Grand Plan. While this process of evolution is one of the main reasons for the technology's success, it nevertheless seems useful to record a snapshot of the current principles of the Internet architecture. This is intended for general guidance and general interest, and is in no way intended to be a formal or invariant reference model. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1958"/>
          <seriesInfo name="DOI" value="10.17487/RFC1958"/>
        </reference>
        <reference anchor="RFC9380">
          <front>
            <title>Hashing to Elliptic Curves</title>
            <author fullname="A. Faz-Hernandez" initials="A." surname="Faz-Hernandez"/>
            <author fullname="S. Scott" initials="S." surname="Scott"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="R. S. Wahby" initials="R. S." surname="Wahby"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="August" year="2023"/>
            <abstract>
              <t>This document specifies a number of algorithms for encoding or hashing an arbitrary string to a point on an elliptic curve. This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9380"/>
          <seriesInfo name="DOI" value="10.17487/RFC9380"/>
        </reference>
        <reference anchor="RFC9413">
          <front>
            <title>Maintaining Robust Protocols</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="June" year="2023"/>
            <abstract>
              <t>The main goal of the networking standards process is to enable the long-term interoperability of protocols. This document describes active protocol maintenance, a means to accomplish that goal. By evolving specifications and implementations, it is possible to reduce ambiguity over time and create a healthy ecosystem.</t>
              <t>The robustness principle, often phrased as "be conservative in what you send, and liberal in what you accept", has long guided the design and implementation of Internet protocols. However, it has been interpreted in a variety of ways. While some interpretations help ensure the health of the Internet, others can negatively affect interoperability over time. When a protocol is actively maintained, protocol designers and implementers can avoid these pitfalls.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9413"/>
          <seriesInfo name="DOI" value="10.17487/RFC9413"/>
        </reference>
        <reference anchor="RFC9881">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- Algorithm Identifiers for the Module-Lattice-Based Digital Signature Algorithm (ML-DSA)</title>
            <author fullname="J. Massimo" initials="J." surname="Massimo"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="B. E. Westerbaan" initials="B. E." surname="Westerbaan"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>Digital signatures are used within X.509 certificates and Certificate Revocation Lists (CRLs), and to sign messages. This document specifies the conventions for using FIPS 204, the Module-Lattice-Based Digital Signature Algorithm (ML-DSA) in Internet X.509 certificates and CRLs. The conventions for the associated signatures, subject public keys, and private key are also described.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9881"/>
          <seriesInfo name="DOI" value="10.17487/RFC9881"/>
        </reference>
        <reference anchor="SECDSA" target="https://eprint.iacr.org/2021/910">
          <front>
            <title>SECDSA: Mobile signing and authentication under classical "sole control"</title>
            <author fullname="Eric Verheul">
              <organization/>
            </author>
            <date year="2021" month="July"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 620?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>We would like to thank
Ilari Liusvaara,
Lucas Prabel,
Sophie Schmieg
and
Falko Strenzke
for their reviews of and contributions to this specification.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Fixed ESP384-split misspelled as ESP381-split.</t>
        </li>
        <li>
          <t>Clarified that non-"-split" alg IDs defined here may be exposed to verifiers.</t>
        </li>
        <li>
          <t>Clarified that transport of digest is out of scope, but expected to be passed as data to be signed.</t>
        </li>
        <li>
          <t>Added Security Considerations section "Incorrect Use of Split Signing Algorithm Identifiers".</t>
        </li>
        <li>
          <t>Added Implementation Considerations section "Using Non-Split Signing Algorithm Identifiers in a Split Signing Protocol".</t>
        </li>
        <li>
          <t>Added section "Defining Split Signing Algorithms" with guidance for handling domain separation tags in new definitions.</t>
        </li>
        <li>
          <t>Clarified in introduction that Ed25519 and Ed25519ph(-split) have distinct verification algorithms.</t>
        </li>
        <li>
          <t>Clarified in section "Protocol-Level Trusted Roles" why digester is necessarily trusted.</t>
        </li>
        <li>
          <t>Clarified in section "Component-Level Trusted Roles" that redundant forgeries are acceptable,
and added example of key compromise concern for naively hashed FALCON.</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Added Implementation Status section.</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Updated reference to ARKG parameter <tt>info</tt> renamed to <tt>ctx</tt>.</t>
        </li>
        <li>
          <t>Refined abstract and introduction to emphasize that the central novelty is not split algorithms as a concept,
but providing COSE algorithm identifiers for use cases that benefit from such splitting.</t>
        </li>
        <li>
          <t>Replaced reference to draft-ietf-jose-fully-specified-algorithms with RFC 9864.</t>
        </li>
        <li>
          <t>Added inline definitions of Ed25519ph and Ed448ph registrations,
replacing speculative references to registrations that do not exist elsewhere.</t>
        </li>
        <li>
          <t>Added missing captions to Tables 1 and 2.</t>
        </li>
        <li>
          <t>Added Security Considerations section.</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>Renamed document from "COSE Algorithms for Two-Party Signing" to "Split signing algorithms for COSE"
and updated introduction and terminology accordingly.</t>
        </li>
        <li>
          <t>Dropped definitions for HashML-DSA, as split variants of ML-DSA are being actively discussed in other IETF groups.</t>
        </li>
        <li>
          <t>Changed "Base algorithm" heading in definition tables to "Verification algorithm".</t>
        </li>
        <li>
          <t>Remodeled COSE_Key_Ref as COSE_Sign_Args.
          </t>
          <ul spacing="normal">
            <li>
              <t>Dropped definitions of reference types for COSE Key Types registry.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Added IANA registration requests for algorithms defined.</t>
        </li>
        <li>
          <t>Updated references and other editorial tweaks.</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial individual draft</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
Ihn8J5FmS12WfQAA

-->

</rfc>
