<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.22 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-birkholz-scitt-receipts-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="SCITT Receipts">Countersigning COSE Envelopes in Transparency Services</title>
    <seriesInfo name="Internet-Draft" value="draft-birkholz-scitt-receipts-03"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="M." surname="Riechert" fullname="Maik Riechert">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>Maik.Riechert@microsoft.com</email>
      </address>
    </author>
    <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <author initials="C." surname="Fournet" fullname="Cedric Fournet">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>fournet@microsoft.com</email>
      </address>
    </author>
    <date year="2023" month="April" day="26"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>A transparent and authentic Transparent Registry service in support of a supply chain's integrity, transparency, and trust requires all peers that contribute to the Registry operations to be trustworthy and authentic. In this document, a countersigning variant is specified that enables trust assertions on Merkle-tree based operations for global supply chain registries. A generic procedure for producing payloads to be signed and validated is defined and leverages solutions and principles from the Concise Signing and Encryption (COSE) space.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t><cref anchor="willsplit">This draft is retained as a -03 version. It's contents will be distributed between <xref target="I-D.ietf-scitt-architecture"/> and <xref target="I-D.steele-cose-merkle-tree-proofs"/> soon.</cref></t>
      <t>This document defines a method for issuing and verifying countersignatures on COSE_Sign1 messages included in an authenticated data structure such as a Merkle Tree.</t>
      <t>We adopt the terminology of the Supply Chain Integrity, Transparency, and Trust (SCITT) architecture document (An Architecture for Trustworthy and Transparent Digital Supply Chains, see <xref target="I-D.ietf-scitt-architecture"/>): Claim, Envelope, Transparency Service, Registry, Receipt, and Verifier.</t>
      <ul empty="true">
        <li>
          <t>[TODO] Do we need to explain or introduce them here? We may also define Tree (our shorthand for authenticated data structure), Root (a succinct commitment to the Tree, e.g., a hand) and use Issuer instead of TS.</t>
        </li>
      </ul>
      <t>From the Verifier's viewpoint, a Receipt is similar to a countersignature V2 on a single signed message: it is a universally-verifiable cryptographic proof of endorsement of the signed envelope by the countersigner.</t>
      <t>Compared with countersignatures on single COSE envelopes,</t>
      <ul spacing="normal">
        <li>Receipts countersign the envelope in context, providing authentication both of the envelope and of its logical position in the authenticated data structure.</li>
        <li>Receipts are proof of commitment to the whole contents of the data structure, even if the Verifier knows only some of its contents.</li>
        <li>Receipts can be issued in bulk, using a single public-key signature for issuing a large number of Receipts.</li>
      </ul>
      <section anchor="requirements-notation">
        <name>Requirements Notation</name>
        <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&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="mybody">
      <name>Common Parameters</name>
      <t>Verifiers are configured by a collection of parameters
to identify a Transparency Service and verify its Receipts.
These parameters <bcp14>MUST</bcp14> be fixed for the lifetime of the Transparency Service
and securely communicated to all Verifiers.</t>
      <t>At minimum, these parameters include:</t>
      <ul spacing="normal">
        <li>a Service identifier: An opaque identifier (e.g. UUID) that uniquely identifies the service and can be used to securely retrieve all other Service parameters.</li>
        <li>
          <t>The Tree algorithm used for issuing receipts, and its additional parameters, if any. This document creates a registry (see <xref target="tree-alg-registry"/>) and describes an initial set of tree algorithms.  </t>
          <ul empty="true">
            <li>
              <t>[TODO] The architecture also has fixed TS registration policies.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="generic-receipt-structure">
      <name>Generic Receipt Structure</name>
      <t>A Receipt represents a countersignature issued by a Transparency Service.</t>
      <t>The Receipt structure is a CBOR array with two items, in order:</t>
      <ul spacing="normal">
        <li>
          <tt>protected</tt>: The protected header of the countersigner.</li>
        <li>
          <tt>contents</tt>: The proof as a CBOR structure determined by the tree algorithm.</li>
      </ul>
      <sourcecode type="cddl">
Receipt = [
  protected: bstr .cbor {
    * label =&gt; value
  },
  contents: any
]
label = tstr / int
value = any
</sourcecode>
      <t>Each tree algorithm <bcp14>MUST</bcp14> define its contents type and procedures for issuing and verifying a receipt.</t>
    </section>
    <section anchor="cose_sign1_countersign">
      <name>COSE_Sign1 Countersigning</name>
      <t>While the tree algorithms may differ in the way they aggregate multiple envelopes to compute a digest to be signed by the TS,
they all share the same representation of the individual envelopes to be countersigned (intuitively, their leaves).</t>
      <t>This document uses the principles and structure definitions
of COSE_Sign1 countersigning V2 (<xref target="I-D.ietf-cose-countersign"/>).
Each envelope is authenticated using a <tt>Countersign_structure</tt> array, recalled below.</t>
      <sourcecode type="cddl">
Countersign_structure = [
    context: "CounterSignatureV2",
    body_protected: empty_or_serialized_map,
    sign_protected: empty_or_serialized_map,
    external_aad: bstr,
    payload: bstr,
    other_fields: [
        signature: bstr
    ]
]
</sourcecode>
      <t>The <tt>body_protected</tt>, <tt>payload</tt>, and <tt>signature</tt> fields are copied from the COSE_Sign1 message being countersigned.</t>
      <t>The <tt>sign_protected</tt> field is provided by the TS, see <xref target="countersign_headers"/> below. This field
is included in the Receipt contents to enable the Verifier to re-construct <tt>Countersign_structure</tt>, as specified by the tree algorithm.</t>
      <t>By convention, the TS always provides an empty <tt>external_aad</tt>: a zero-length bytestring.</t>
      <t>Procedure for reconstruction of Countersign_structure:</t>
      <ol spacing="normal" type="1">
        <li>Let Target be the COSE_Sign1 message that corresponds to the countersignature. Different environments will have different mechanisms to achieve this. One obvious mechanism is to embed the Receipt in the unprotected header of Target. Another mechanism may be to store both artifacts separately and use a naming convention, database, or other method to link both together.</li>
        <li>Extract body_protected, payload, and signature from Target.</li>
        <li>Create a Countersign_structure using the extracted fields from Target, and sign_protected from the Receipt contents.</li>
      </ol>
      <section anchor="countersign_headers">
        <name>Countersigner Header Parameters</name>
        <t>The following parameters <bcp14>MUST</bcp14> be included in the protected header of the countersigner (sign_protected in <xref target="cose_sign1_countersign"/>):</t>
        <ul spacing="normal">
          <li>Service ID (label: TBD): The Service identifier, as defined in the Transparency Service parameters.</li>
          <li>Tree Algorithm (label: TBD): The Tree Algorithm used for issuing the receipt, as defined in the Transparency Service parameters.</li>
          <li>Issued At (label: TBD): The time at which the countersignature was issued as the number of seconds from 1970-01-01T00:00:00Z UTC, ignoring leap seconds.</li>
        </ul>
      </section>
    </section>
    <section anchor="ReceiptVerification">
      <name>Receipt Verification</name>
      <t>Given a signed envelope and a Receipt for it,
the following steps must be followed to verify this Receipt.</t>
      <ol spacing="normal" type="1">
        <li>Decode the protected header of the Receipt and look-up the TS parameters using the Service ID header parameter.</li>
        <li>Verify that the Tree Algorithm parameter value in the receipt protected header matches the one in the TS parameters.</li>
        <li>Construct a <tt>Countersign_structure</tt> as described in <xref target="cose_sign1_countersign"/>, using the protected header of the Receipt as <tt>sign_protected</tt>.</li>
        <li>CBOR-encode <tt>Countersign_structure</tt> as To-Be-Included, using the CBOR encoding described in <xref target="deterministic-cbor"/>.</li>
        <li>Invoke the Tree Algorithm receipt verification procedure with the TS parameters and To-Be-Included as inputs.</li>
      </ol>
      <t>The Verifier <bcp14>SHOULD</bcp14> apply additional checks before accepting the countersigned envelope as valid, based on its protected headers and payload.</t>
    </section>
    <section anchor="ccf-tree-algorithm">
      <name>CCF Tree Algorithm</name>
      <t>The CCF tree algorithm specifies an algorithm based on a binary Merkle tree over the sequence of all ledger entries, as implemented in the CCF framework (see <xref target="CCF_Merkle_Tree"/>).</t>
      <section anchor="parameters">
        <name>Additional Parameters</name>
        <t>The algorithm requires that the TS define
additional parameters:</t>
        <ul spacing="normal">
          <li>Signature Algorithm: The ECDSA signature algorithm used to sign the Merkle tree root (see <xref target="sig-alg-registry"/>).</li>
          <li>Service Certificate: The self-signed X.509 certificate used as trust anchor to verify signatures generated by the transparency service using the Signature Algorithm.</li>
        </ul>
        <t>All definitions in this section use the hash algorithm required by the signature algorithm set in the TS parameters (see Section <xref target="parameters"/>). We write HASH to refer to this algorithm, and HASH_SIZE for the fixed length of its output in bytes.</t>
      </section>
      <section anchor="cryptographic-components">
        <name>Cryptographic Components</name>
        <t>Note: This section is adapted from <xref section="2.1" sectionFormat="of" target="RFC9162"/>, which provides additional discussion of Merkle trees.</t>
        <section anchor="merkle-tree-def">
          <name>Binary Merkle Trees</name>
          <t>The input of the Merkle Tree Hash (MTH) function is a list of n bytestrings, written D_n = {d[0], d[1], ..., d[n-1]}. The output is a single HASH_SIZE bytestring, also called the tree root hash.</t>
          <t>This function is defined as follows:</t>
          <t>The hash of an empty list is the hash of an empty string:</t>
          <artwork><![CDATA[
MTH({}) = HASH().
]]></artwork>
          <t>The hash of a list with one entry (also known as a leaf hash) is:</t>
          <artwork><![CDATA[
MTH({d[0]}) = HASH(d[0]).
]]></artwork>
          <t>For n &gt; 1, let k be the largest power of two smaller than n (i.e., k &lt; n &lt;= 2k). The Merkle Tree Hash of an n-element list D_n is then defined recursively as:</t>
          <artwork><![CDATA[
MTH(D_n) = HASH(MTH(D[0:k]) || MTH(D[k:n])),
]]></artwork>
          <t>where:</t>
          <ul spacing="normal">
            <li>|| denotes concatenation</li>
            <li>: denotes concatenation of lists</li>
            <li>D[k1:k2] = D'_(k2-k1) denotes the list {d'[0] = d[k1], d'[1] = d[k1+1], ..., d'[k2-k1-1] = d[k2-1]} of length (k2 - k1).</li>
          </ul>
        </section>
        <section anchor="merkle-inclusion-proofs">
          <name>Merkle Inclusion Proofs</name>
          <t>A Merkle inclusion proof for a leaf in a Merkle Tree is the shortest list of intermediate hash values required to re-compute the tree root hash
from the digest of the leaf bytestring. Each node in the tree is either a leaf node or is computed from the two nodes immediately below it (i.e., towards the leaves). At each step up the tree (towards the root), a node from the inclusion proof is combined with the node computed so far. In other words, the inclusion proof consists of the list of missing nodes required to compute the nodes leading from a leaf to the root of the tree. If the root computed from the inclusion proof matches the true root, then the inclusion proof proves that the leaf exists in the tree.</t>
          <section anchor="verifying-an-inclusion-proof">
            <name>Verifying an Inclusion Proof</name>
            <t>When a client has received an inclusion proof and wishes to verify inclusion of a leaf_hash for a given root_hash, the following algorithm may be used to prove the hash was included in the root_hash:</t>
            <artwork><![CDATA[
recompute_root(leaf_hash, proof):
  h := leaf_hash
  for [left, hash] in proof:
    if left
      h := HASH(hash || h)
    else
      h := HASH(h || hash)
  return h
]]></artwork>
          </section>
          <section anchor="generating-an-inclusion-proof">
            <name>Generating an Inclusion Proof</name>
            <t>Given the MTH input D_n = {d[0], d[1], ..., d[n-1]} and an index i &lt; n in this list,
run the MTH algorithm and record the position and value of every intermediate hash
concatenated and hashed first with the digest of the leaf, then with the resulting intermediate hash value. (Most implementations instead record all intermediate hash computations, so that they can produce all inclusion proofs for a given tree by table lookups.)</t>
          </section>
        </section>
      </section>
      <section anchor="encoding-signed-envelopes-into-tree-leaves">
        <name>Encoding Signed Envelopes into Tree Leaves</name>
        <t>This section describes the encoding of signed envelopes and auxiliary ledger entries
into the leaf bytestrings passed as input to the Merkle Tree function.</t>
        <t>Each bytestring is computed from three inputs:</t>
        <ul spacing="normal">
          <li>
            <tt>internal_hash</tt>: a string of HASH_SIZE bytes;</li>
          <li>
            <tt>internal_data</tt>: a string of at most 1024 bytes; and</li>
          <li>
            <tt>data_hash</tt>: either the HASH of the CBOR-encoded Countersign_structure of the signed envelope, using the CBOR encoding described in <xref target="deterministic-cbor"/>, or a bytestring of size HASH_SIZE filled with zeroes for auxiliary ledger entries.</li>
        </ul>
        <t>as the concatenation of three hashes:</t>
        <artwork><![CDATA[
LeafBytes = internal_hash || HASH(internal_data) || data_hash
]]></artwork>
        <t>This ensures that leaf bytestrings are always distinct from the inputs of the intermediate computations in MTH, which always consist of two hashes, and also that leaf bytestrings for signed envelopes and for auxiliary ledger entries are always distinct.</t>
        <t>The <tt>internal_hash</tt> and <tt>internal_data</tt> bytestrings are internal to the CCF implementation. Similarly, the auxiliary ledger entries are internal to CCF. They are opaque to receipt Verifiers, but they commit the TS to the whole ledger contents and may be used for additional, CCF-specific auditing.</t>
      </section>
      <section anchor="ReceiptContents">
        <name>Receipt Contents Structure</name>
        <t>The Receipt contents structure is a CBOR array. The items of the array in order are:</t>
        <ul spacing="normal">
          <li>
            <tt>signature</tt>: the ECDSA signature over the Merkle tree root as bstr. Note that the Merkle tree root hash is the prehashed input to ECDSA and is not hashed twice.</li>
          <li>
            <tt>node_certificate</tt>: a DER-encoded X.509 certificate for the public key for signature verification.
This certificate <bcp14>MUST</bcp14> be a valid CCF node certificate
for the service; in particular, it <bcp14>MUST</bcp14> form a valid X.509 certificate chain with the service certificate.</li>
          <li>
            <t><tt>inclusion_proof</tt>: the intermediate hashes to recompute the signed root of the Merkle tree from the leaf digest of the envelope.
            </t>
            <ul spacing="normal">
              <li>The array <bcp14>MUST</bcp14> have at most 64 items.</li>
              <li>The inclusion proof structure is an array of [left, hash] pairs where <tt>left</tt> indicates the ordering of digests for the intermediate hash compution. The hash <bcp14>MUST</bcp14> be a bytestring of length <tt>HASH_SIZE</tt>.</li>
            </ul>
          </li>
          <li>
            <t><tt>leaf_info</tt>: auxiliary inputs to recompute the leaf digest included in the Merkle tree: the internal hash and the internal data.
            </t>
            <ul spacing="normal">
              <li>
                <tt>internal_hash</tt> <bcp14>MUST</bcp14> be a bytestring of length <tt>HASH_SIZE</tt>;</li>
              <li>
                <tt>internal_data</tt> <bcp14>MUST</bcp14> be a bytestring of length less than 1024.</li>
            </ul>
          </li>
        </ul>
        <t>The inclusion of an additional, short-lived certificate endorsed by the TS enables flexibility in its distributed implementation, and may support additional CCF-specific auditing.</t>
        <t>The CDDL fragment that represents the above text follows.</t>
        <sourcecode type="cddl">
ReceiptContents = [
    signature: bstr,
    node_certificate: bstr,
    inclusion_proof: [+ ProofElement],
    leaf_info: LeafInfo
]

ProofElement = [
    left: bool
    hash: bstr
]

LeafInfo = [
    internal_hash: bstr,
    internal_data: bstr
]
</sourcecode>
      </section>
      <section anchor="receipt-contents-verification">
        <name>Receipt Contents Verification</name>
        <t>Given the To-Be-Included bytes (see <xref target="ReceiptVerification"/>) and the TS parameters,
the following steps must be followed to verify the Receipt contents.</t>
        <ol spacing="normal" type="1">
          <li>Verify that the Receipt Content structure is well-formed, as described in <xref target="ReceiptContents"/>.</li>
          <li>
            <t>Compute <tt>LeafBytes</tt> as the bytestring concatenation of the internal hash, the hash of internal data, and the hash of the To-Be-Included bytes.  </t>
            <artwork><![CDATA[
 LeafBytes := internal_hash || HASH(internal_data) || HASH(To-Be-Included)
]]></artwork>
          </li>
          <li>
            <t>Compute the leaf digest.  </t>
            <artwork><![CDATA[
 LeafHash := HASH(LeafBytes)
]]></artwork>
          </li>
          <li>
            <t>Compute the root hash from the leaf hash and the Merkle proof using the Merkle Tree Hash Algorithm found in the service's parameters (see <xref target="parameters"/>):  </t>
            <artwork><![CDATA[
 root := recompute_root(LeafHash, inclusion_proof)
]]></artwork>
          </li>
          <li>Verify the certificate chain established by the node certificate embedded in the receipt and the fixed service certificate in the TS parameters (see <xref target="parameters"/>). TBD needs more details</li>
          <li>Verify that <tt>signature</tt> is a valid signature value of the root hash, using the public key of the node certificate and the Signature Algorithm of the TS parameters.</li>
        </ol>
      </section>
      <section anchor="receipt-generation">
        <name>Receipt Generation</name>
        <t>This document provides a reference algorithm for producing valid receipts,
but it omits any discussion of TS registration policy and any CCF-specific implementation details.</t>
        <t>The algorithm takes as input a list of entries to be jointly countersigned, each entry consisting of <tt>internal_hash</tt>, <tt>internal_data</tt>, and an optional signed envelope.
(This optional item reflects that a CCF ledger records both signed envelopes and auxiliary entries.)</t>
        <ol spacing="normal" type="1">
          <li>For each signed envelope, create the countersigner protected header and compute the <tt>Countersign_structure</tt> as described in <xref target="cose_sign1_countersign"/>.</li>
          <li>For each item in the list, compute <tt>LeafBytes</tt> as the bytestring concatenation of the internal hash, the hash of internal data and, if the envelope is present, the hash of the CBOR-encoding of <tt>Countersign_structure</tt>, using the CBOR encoding described in <xref target="deterministic-cbor"/>, otherwise a HASH_SIZE bytestring of zeroes.</li>
          <li>Compute the tree root hash by applying MTH to the resulting list of leaf bytestrings,
  keeping the results for all intermediate HASH values.</li>
          <li>Select a valid <tt>node_certificate</tt> and compute a <tt>signature</tt> of the root of the tree with the corresponding signing key.</li>
          <li>
            <t>For each signed envelope provided in the input,  </t>
            <ul spacing="normal">
              <li>Collect an <tt>inclusion_proof</tt> by selecting intermediate hash values, as described above.</li>
              <li>Produce the receipt contents using this <tt>inclusion_proof</tt>, the fixed <tt>node_certificate</tt> and <tt>signature</tt>, and the bytestrings <tt>internal_hash</tt> and <tt>internal_data</tt> provided with the envelope.</li>
              <li>Produce the receipt using the countersigner protected header and this receipt's contents.</li>
            </ul>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="deterministic-cbor">
      <name>CBOR Encoding Restrictions</name>
      <t>In order to always regenerate the same byte string for the "to be included" and "to be hashed" values, the core deterministic encoding rules defined in <xref section="4.2.1" sectionFormat="of" target="RFC8949"/> <bcp14>MUST</bcp14> be used for all their CBOR structures.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="additions-to-existing-registries">
        <name>Additions to Existing Registries</name>
        <section anchor="new-entries-to-the-cose-header-parameters-registry">
          <name>New Entries to the COSE Header Parameters Registry</name>
          <t>IANA is requested to register the new COSE Header parameters defined below in the "COSE Header Parameters" registry.</t>
          <section anchor="cosesign1-countersign-receipt">
            <name>COSE_Sign1 Countersign receipt</name>
            <t>Name: COSE_Sign1 Countersign receipt</t>
            <t>Label: TBD (temporary: <tt>394</tt>, see also <xref target="I-D.ietf-scitt-architecture"/>)</t>
            <t>Value Type: [+ Receipt]</t>
            <t>Description: One or more COSE_Sign1 Countersign Receipts to be embedded in the unprotected header of the countersigned COSE_Sign1 message.</t>
          </section>
          <section anchor="issued-at">
            <name>Issued At</name>
            <t>Name: Issued At</t>
            <t>Label: TBD</t>
            <t>Value Type: uint</t>
            <t>Description: The time at which the signature was issued as the number of seconds from 1970-01-01T00:00:00Z UTC, ignoring leap seconds.</t>
          </section>
        </section>
      </section>
      <section anchor="new-scitt-related-registries">
        <name>New SCITT-Related Registries</name>
        <t>IANA is asked to add a new registry "TBD" to the list that appears at https://www.iana.org/assignments/.</t>
        <t>The rest of this section defines the subregistries that are to be created within the new "TBD" registry.</t>
        <section anchor="tree-alg-registry">
          <name>Tree Algorithms</name>
          <t>IANA is asked to establish a registry of tree algorithm identifiers, named "Tree Algorithms", with the following registration procedures: TBD</t>
          <t>The "Tree Algorithms" registry initially consists of:</t>
          <table>
            <name>Initial content of Tree Algorithms registry</name>
            <thead>
              <tr>
                <th align="left">Identifier</th>
                <th align="left">Tree Algorithm</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">CCF</td>
                <td align="left">CCF tree algorithm</td>
                <td align="left">This document</td>
              </tr>
            </tbody>
          </table>
          <t>The designated expert(s) should ensure that the proposed algorithm has a public specification and is suitable for use as [TBD].</t>
        </section>
        <section anchor="sig-alg-registry">
          <name>Signature Algorithms</name>
          <t>IANA is asked to establish a registry of signature algorithm identifiers, named "Signature Algorithms", with the following registration procedures: TBD</t>
          <t>The "Signature Algorithms" registry initially consists of:</t>
          <table>
            <name>Initial content of Signature Algorithms registry</name>
            <thead>
              <tr>
                <th align="left">Identifier</th>
                <th align="left">Signature Algorithm</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">ES256</td>
                <td align="left">ECDSA w/ SHA-256</td>
                <td align="left">
                  <xref target="RFC9053"/></td>
              </tr>
            </tbody>
          </table>
          <t>The designated expert(s) should ensure that the proposed algorithm has a public specification and is suitable for use as a cryptographic signature algorithm.</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="STD" value="94"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <seriesInfo name="DOI" value="10.17487/RFC9162"/>
            <seriesInfo name="RFC" value="9162"/>
            <author fullname="B. Laurie" initials="B." surname="Laurie">
              <organization/>
            </author>
            <author fullname="E. Messeri" initials="E." surname="Messeri">
              <organization/>
            </author>
            <author fullname="R. Stradling" initials="R." surname="Stradling">
              <organization/>
            </author>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962.  It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <seriesInfo name="DOI" value="10.17487/RFC6234"/>
            <seriesInfo name="RFC" value="6234"/>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="T. Hansen" initials="T." surname="Hansen">
              <organization/>
            </author>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8032"/>
            <seriesInfo name="RFC" value="8032"/>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara">
              <organization/>
            </author>
            <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>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <seriesInfo name="DOI" value="10.17487/RFC9053"/>
            <seriesInfo name="RFC" value="9053"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <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 a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052). </t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <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>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-cose-countersign">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-cose-countersign-10"/>
            <author fullname="Jim Schaad" initials="J." surname="Schaad">
              <organization>August Cellars</organization>
            </author>
            <date day="20" month="September" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  CBOR Object Signing and Encryption (COSE) defines a set of security services for CBOR.  This document defines a countersignature algorithm along with the needed header parameters and CBOR tags for COSE.  This document updates RFC 9052.
              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-scitt-architecture">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-01"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>ARM</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   Traceability of physical and digital artifacts in supply chains is a
   long-standing, but increasingly serious security concern.  The rise
   in popularity of verifiable data structures as a mechanism to make
   actors more accountable for breaching their compliance promises has
   found some successful applications to specific use cases (such as the
   supply chain for digital certificates), but lacks a generic and
   scalable architecture that can address a wider range of use cases.

   This memo defines a generic and scalable architecture to enable
   transparency across any supply chain with minimum adoption barriers
   for producers (who can register their Signed Statements on any
   Transparency Service, with the guarantee that all consumers will be
   able to verify them) and enough flexibility to allow different
   implementations of Transparency Services with various auditing and
   compliance requirements.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.steele-cose-merkle-tree-proofs">
          <front>
            <title>Concise Encoding of Signed Merkle Tree Proofs</title>
            <seriesInfo name="Internet-Draft" value="draft-steele-cose-merkle-tree-proofs-00"/>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Maik Riechert" initials="M." surname="Riechert">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   This specification describes three CBOR data structures for primary
   use in COSE envelopes.  A format for Merkle Tree Root Signatures with
   metadata, a format for Inclusions Paths, and a format for disclosure
   of a single hadh tree leaf payload (Merkle Tree Proofs).

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="CCF_Merkle_Tree" target="https://microsoft.github.io/CCF/main/architecture/merkle_tree.html">
          <front>
            <title>CCF - Merkle Tree</title>
            <author initials="" surname="Microsoft Research">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
UfQ/lQ6z61VPAAA=

-->

</rfc>
