<?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.14 (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-01" 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-01"/>
    <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="2022" month="September" day="05"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>A transparent and authentic ledger service in support of a supply chain's integrity, transparency, and trust requires all peers that contribute to the ledgers 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 ledgers. 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>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.birkholz-scitt-architecture"/>): Claim, Envelope, Transparency Service, Ledger, 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>service_id</tt>: The service identifier as tstr.</li>
        <li>
          <tt>contents</tt>: The proof as a CBOR structure determined by the tree algorithm.</li>
      </ul>
      <sourcecode type="cddl">
Receipt = [
  service_id: tstr,
  contents: 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>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="ccf-2-tree-algorithm">
      <name>CCF 2 Tree Algorithm</name>
      <t>The CCF 2 tree algorithm specifies an algorithm based on a binary Merkle tree over the sequence of all ledger entries, as implemented in the CCF version 2 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>Hash Algorithm: The hash algorithm used in its Merkle Tree (see <xref target="hash-alg-registry"/>).</li>
          <li>Signature Algorithm: The signature algorithm used (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 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 signature over the Merkle tree root as bstr.</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, the internal data, and the protected header of the
countersigner.
            </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,
    sign_protected: empty_or_serialized_map
]
</sourcecode>
      </section>
      <section anchor="receipt-verification">
        <name>Receipt Verification</name>
        <t>Given the TS parameters, 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>Verify that the Receipt Content structure is well-formed, as described in <xref target="ReceiptContents"/>.</li>
          <li>Construct a <tt>Countersign_structure</tt> as described in <xref target="cose_sign1_countersign"/>, using <tt>sign_protected</tt> from the <tt>leaf_info</tt> field of the receipt contents.</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 CBOR-encoding of <tt>Countersign_structure</tt>, using the CBOR encoding described in <xref target="deterministic-cbor"/>.  </t>
            <artwork><![CDATA[
 LeafBytes := internal_hash || HASH(internal_data) || HASH(cbor(Countersign_structure))
]]></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"/>) using the Issued At time from <tt>sign_protected</tt> to verify the validity periods of the certificates. The chain <bcp14>MUST</bcp14> enable the use of the public key in the receipt certificate for signature verification with the Signature Algorithm of the TS parameters.</li>
          <li>Verify that <tt>signature</tt> is a valid signature value of the root hash, using the public key of the receipt certificate and the Signature Algorithm of the TS parameters.</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="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, 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 Service Identifier and this receipt 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 signed" 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</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-2</td>
                <td align="left">CCF 2 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="hash-alg-registry">
          <name>Hash Algorithms</name>
          <t>IANA is asked to establish a registry of hash algorithm identifiers, named "Hash Algorithms", with the following registration procedures: TBD</t>
          <t>The "Hash Algorithms" registry initially consists of:</t>
          <table>
            <name>Initial content of Hash Algorithms registry</name>
            <thead>
              <tr>
                <th align="left">Identifier</th>
                <th align="left">Hash Algorithm</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">SHA-256</td>
                <td align="left">SHA-256</td>
                <td align="left">
                  <xref target="RFC6234"/></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 hash algorithm with no known preimage or collision attacks. These attacks can damage the integrity of the ledger.</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">Deterministic ECDSA (NIST P-256) with HMAC-SHA256</td>
                <td align="left">
                  <xref target="RFC6979"/></td>
              </tr>
              <tr>
                <td align="left">ED25519</td>
                <td align="left">Ed25519 (PureEdDSA with the edwards25519 curve)</td>
                <td align="left">
                  <xref target="RFC8032"/></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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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="RFC6979" target="https://www.rfc-editor.org/info/rfc6979">
          <front>
            <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <seriesInfo name="DOI" value="10.17487/RFC6979"/>
            <seriesInfo name="RFC" value="6979"/>
            <author fullname="T. Pornin" initials="T." surname="Pornin">
              <organization/>
            </author>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document defines a deterministic digital signature generation procedure.  Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein.  Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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" target="https://www.ietf.org/archive/id/draft-ietf-cose-countersign-09.txt">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-cose-countersign-09"/>
            <author fullname="Jim Schaad">
              <organization>August Cellars</organization>
            </author>
            <author fullname="Russ Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <date day="31" month="August" 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.birkholz-scitt-architecture" target="https://www.ietf.org/archive/id/draft-birkholz-scitt-architecture-00.txt">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <seriesInfo name="Internet-Draft" value="draft-birkholz-scitt-architecture-00"/>
            <author fullname="Henk Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Cedric Fournet">
              <organization>Microsoft Research</organization>
            </author>
            <date day="7" month="March" year="2022"/>
            <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 claims on any TS, 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="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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

-->

</rfc>
