<?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.35 (Ruby 3.3.5) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scitt-receipts-ccf-profile-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="CCF Profile for COSE Receipts">CCF Profile for COSE Receipts</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-receipts-ccf-profile-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@ietf.contact</email>
      </address>
    </author>
    <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <author initials="C." surname="Fournet" fullname="Cedric Fournet">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>fournet@microsoft.com</email>
      </address>
    </author>
    <author initials="A." surname="Chamayou" fullname="Amaury Chamayou">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>amaury.chamayou@microsoft.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="02"/>
    <area>Security</area>
    <workgroup>SCITT</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 69?>

<t>This document defines a new verifiable data structure (VDS) type for COSE Receipts and inclusion proof specifically designed for append-only logs produced by the Confidential Consortium Framework (CCF) to provide stronger tamper-evidence guarantees.</t>
    </abstract>
  </front>
  <middle>
    <?line 73?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The COSE Receipts document <xref target="I-D.ietf-cose-merkle-tree-proofs"/> defines a common framework for expressing different types of proofs about verifiable data structures (VDS), providing a standardized way to convey trust relevant evidence. For instance, inclusion proofs guarantee to a verifier that a given serializable element is recorded at a given state of the VDS, while consistency proofs are used to establish that an inclusion proof is still consistent with the new state of the VDS at a later time.</t>
      <t>In this document, we define a new type of VDS and inclusion proof associated with an application of the Confidential Consortium Framework (CCF) ledger that implements the SCITT Architecture defined in <xref target="I-D.ietf-wg-scitt-architecture"/>. This VDS carries indexed transaction information in a binary Merkle Tree, where new transactions are appended to the right, so that the binary decomposition of the index of a transaction can be interpreted as the position in the tree if 0 represents the left branch and 1 the right branch.
Compared to <xref target="RFC9162"/>, the leaves of CCF trees carry additional internal information for the following purposes:</t>
      <ol spacing="normal" type="1"><li>
          <t>To bind the full details of the transaction executed, which is a super-set of what is exposed in the proof and captures internal information details useful for detailed system audit, but not for application purposes.</t>
        </li>
        <li>
          <t>To allow the distributed system executing the application logic in Trusted Execution Environments (TEE) to persist signatures to storage early. Receipt production in only enabled once transactions are fully committed by the consensus protocol.</t>
        </li>
      </ol>
      <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 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="description-of-the-confidential-consortium-framework-ledger-verifiable-data-structure">
      <name>Description of the Confidential Consortium Framework Ledger Verifiable Data Structure</name>
      <t>This documents extends the VDS registry of <xref target="I-D.ietf-cose-merkle-tree-proofs"/> with the following value:</t>
      <table align="left" anchor="verifiable-data-structure-values">
        <name>Verifiable Data Structure Algorithms</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Value</th>
            <th align="left">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">CCF_LEDGER_SHA256</td>
            <td align="left">TBD_1 (requested assignment 2)</td>
            <td align="left">Historical transaction ledgers, such as the CCF ledger</td>
            <td align="left">RFCthis</td>
          </tr>
        </tbody>
      </table>
      <section anchor="merkle-tree-shape">
        <name>Merkle Tree Shape</name>
        <t>A CCF ledger is a binary Merkle Tree constructed from a hash function H, which is defined from the log type. For instance, the hash function for <tt>CCF_LEDGER_SHA256</tt> is <tt>SHA256</tt>, whose <tt>HASH_SIZE</tt> is 32 bytes.</t>
        <t>The Merkle tree encodes an ordered list of <tt>n</tt> transactions T_n = {T[0], T[1], ..., T[n-1]}. We define the Merkle Tree Hash (MTH) function, which takes as input a list of serialized transactions (as byte strings), and outputs a single HASH_SIZE byte string called the Merkle root hash, by induction on the list.</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>
            <t>|| denotes concatenation</t>
          </li>
          <li>
            <t>: denotes concatenation of lists</t>
          </li>
          <li>
            <t>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).</t>
          </li>
        </ul>
      </section>
      <section anchor="transaction-components">
        <name>Transaction Components</name>
        <t>Each leaf in a CCF ledger carries the following components:</t>
        <sourcecode type="cddl"><![CDATA[
ccf-leaf = [
  ; Byte string of size HASH_SIZE(32)
  internal-transaction-hash: bstr .size 32

  ; Text string of at most 1024 bytes
  internal-evidence: tstr .size (1..1024)

  ; Byte string of size HASH_SIZE(32)
  data-hash: bstr .size 32
]
]]></sourcecode>
        <t>The <tt>internal-transaction-hash</tt> and <tt>internal-evidence</tt> byte strings are internal to the CCF implementation. They can be safely ignored by receipt Verifiers, but they commit the transparency service (TS) to the whole tree contents and may be used for additional, CCF-specific auditing.</t>
        <t><tt>internal-transaction-hash</tt> is a hash over the complete entry in the <xref target="CCF-Ledger-Format"/>, and <tt>internal-evidence</tt> is a revealable <xref target="CCF-Commit-Evidence"/> value that allows early persistence of ledger entries before distributed consensus can be established. This mechanism is useful to implement high-throughput transparency applications in Trusted Execution Environments (TEEs) that only provide a limited amount of memory, while maintaining high availability afforded by distributed consensus.</t>
        <t><tt>data-hash</tt> summarizes the application data included in the ledger at this transaction, which is a Signed Statement as defined by <xref target="I-D.ietf-wg-scitt-architecture"/>.</t>
      </section>
    </section>
    <section anchor="ccf-inclusion-proofs">
      <name>CCF Inclusion Proofs</name>
      <t>CCF inclusion proofs consist of a list of digests tagged with a single left-or-right bit.</t>
      <sourcecode type="cddl"><![CDATA[
ccf-proof-element = [
  ; Position of the element
  left: bool

  ; Hash of the proof element: byte string of size HASH_SIZE(32)
  hash: bstr .size 32
]

ccf-inclusion-proof = bstr .cbor {
  &(leaf: 1) => ccf-leaf
  &(path: 2) => [+ ccf-proof-element]
}
]]></sourcecode>
      <t>Unlike some other tree algorithms, the index of the element in the tree is not explicit in the inclusion proof, but the list of left-or-right bits can be treated as the binary decomposition of the index, from the least significant (leaf) to the most significant (root).</t>
      <section anchor="ccf-inclusion-proof-signature">
        <name>CCF Inclusion Proof Signature</name>
        <t>The proof signature for a CCF inclusion proof is a COSE signature (encoded with the <tt>COSE_Sign1</tt> CBOR type) which includes the following additional requirements for protected and unprotected headers. Please note that there may be additional header parameters defined by the application.</t>
        <t>The protected header parameters for the CCF inclusion proof signature <bcp14>MUST</bcp14> include the following:</t>
        <ul spacing="normal">
          <li>
            <t><tt>verifiable-data-structure: int/tstr</tt>. This header <bcp14>MUST</bcp14> be set to the verifiable data structure algorithm identifier for <tt>ccf-ledger</tt> (TBD_1).</t>
          </li>
          <li>
            <t><tt>label: int</tt>. This header <bcp14>MUST</bcp14> be set to the value of the <tt>inclusion</tt> proof type in the IANA registry of Verifiable Data Structure Proof Type (-1).</t>
          </li>
        </ul>
        <t>The unprotected header for a CCF inclusion proof signature <bcp14>MUST</bcp14> include the following:</t>
        <ul spacing="normal">
          <li>
            <t><tt>inclusion-proof: bstr .cbor ccf-inclusion-proof</tt>. This contains the serialized CCF inclusion proof, as defined above.</t>
          </li>
        </ul>
        <t>The payload of the signature is the CCF ledger Merkle root digest, and <bcp14>MUST</bcp14> be detached in order to force verifiers to recompute the root from the inclusion proof in the unprotected header. This provides a safeguard against implementation errors that use the payload of the signature but do not recompute the root from the inclusion proof.</t>
      </section>
      <section anchor="inclusion-proof-verification-algorithm">
        <name>Inclusion Proof Verification Algorithm</name>
        <t>CCF uses the following algorithm to verify an inclusion receipt:</t>
        <artwork><![CDATA[
compute_root(proof):
  h := proof.leaf.internal-transaction-hash
       || HASH(proof.leaf.internal-evidence)
       || proof.leaf.data-hash

  for [left, hash] in proof:
      h := HASH(hash + h) if left
           HASH(h + hash) else
  return h

verify_inclusion_receipt(inclusion_receipt):
  let label = INCLUSION_PROOF_LABEL
  assert(label in inclusion_receipt.unprotected_header)
  let proof = inclusion_receipt.unprotected_header[label]
  assert(inclusion_receipt.payload == nil)
  let payload = compute_root(proof)

  # Use the Merkle Root as the detached payload
  return verify_cose(inclusion_receipt, payload)
]]></artwork>
        <t>A description can also be found at <xref target="CCF-Receipt-Verification"/>.</t>
      </section>
    </section>
    <section anchor="usage-in-cose-receipts">
      <name>Usage in COSE Receipts</name>
      <t>A COSE Receipt with a CCF inclusion proof is described by the following CDDL definition:</t>
      <sourcecode type="cddl"><![CDATA[
protected-header-map = {
  &(alg: 1) => int
  &(vds: 395) => 2
  * cose-label => cose-value
}
]]></sourcecode>
      <ul spacing="normal">
        <li>
          <t>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int.</t>
        </li>
        <li>
          <t>vds (label: 395): <bcp14>REQUIRED</bcp14>. verifiable data structure algorithm identifier. Value type: int.</t>
        </li>
      </ul>
      <t>The unprotected header for an inclusion proof signature is described by the following CDDL definition:</t>
      <sourcecode type="cddl"><![CDATA[
inclusion-proof = ccf-inclusion-proof

inclusion-proofs = [ + inclusion-proof ]

verifiable-proofs = {
  &(inclusion-proof: -1) => inclusion-proofs
}

unprotected-header-map = {
  &(vdp: 396) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>See the privacy considerations section of:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="I-D.ietf-cose-merkle-tree-proofs"/></t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="I-D.ietf-cose-merkle-tree-proofs"/> apply.</t>
      <section anchor="trusted-execution-environments">
        <name>Trusted Execution Environments</name>
        <t>CCF networks of nodes rely on executing in TEEs to secure their function, in particular:</t>
        <ol spacing="normal" type="1"><li>
            <t>The evaluation of registration policies</t>
          </li>
          <li>
            <t>The creation and usage of receipt signing keys</t>
          </li>
        </ol>
        <t>A compromise in the TEE platform used to execute the network may allow an attacker to produce invalid and divergent ledger branches.
Clients can mitigate this risk in two ways: by regularly auditing the consistency of the CCF ledger; and by regularly fetching attestation information about the TEE instances, available in the ledger and from the network itself, and confirming that the nodes composing the network are running up-to-date, trusted platform components.</t>
      </section>
      <section anchor="operators">
        <name>Operators</name>
        <t>An operator has the ability to start successor networks with a distinct identity. The operator of a CCF network can recover the service by starting a successor network, for example a new CCF network with its own service identity, that endorses the ledger state of the previous instance. This provides service continuity after a catastrophic failure of a majority of the nodes. However, a malicious operator could exploit this mechanism and truncate the ledger’s history by initializing the successor network from an earlier ledger prefix, thereby omitting some later entries. Clients can mitigate this risk by auditing the successor ledger and verifying that their latest known receipts from the prior service are included in the successor’s ledger.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="additions-to-existing-registries">
        <name>Additions to Existing Registries</name>
        <section anchor="tree-alg-registry">
          <name>Tree Algorithms</name>
          <t>This document requests IANA to add the following new value to the 'COSE Verifiable Data Structures' registry:</t>
          <ul spacing="normal">
            <li>
              <t>Name: CCF_LEDGER_SHA256</t>
            </li>
            <li>
              <t>Value: 2 (requested assignment)</t>
            </li>
            <li>
              <t>Description: Append-only logs that are integrity-protected by a Merkle Tree and signatures produced via Trusted Execution Environments containing a mix of public and confidential information, as specified by the Confidential Consortium Framework.</t>
            </li>
            <li>
              <t>Reference: This document</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC9162">
        <front>
          <title>Certificate Transparency Version 2.0</title>
          <author fullname="B. Laurie" initials="B." surname="Laurie"/>
          <author fullname="E. Messeri" initials="E." surname="Messeri"/>
          <author fullname="R. Stradling" initials="R." surname="Stradling"/>
          <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>
        <seriesInfo name="RFC" value="9162"/>
        <seriesInfo name="DOI" value="10.17487/RFC9162"/>
      </reference>
      <reference anchor="I-D.ietf-cose-merkle-tree-proofs">
        <front>
          <title>COSE (CBOR Object Signing and Encryption) Receipts</title>
          <author fullname="Orie Steele" initials="O." surname="Steele">
            <organization>Tradeverifyd</organization>
          </author>
          <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</organization>
          </author>
          <author fullname="Cedric Fournet" initials="C." surname="Fournet">
            <organization>Microsoft</organization>
          </author>
          <date day="2" month="December" year="2025"/>
          <abstract>
            <t>   COSE (CBOR Object Signing and Encryption) Receipts prove properties
   of a verifiable data structure to a verifier.  Verifiable data
   structures and associated proof types enable security properties,
   such as minimal disclosure, transparency and non-equivocation.
   Transparency helps maintain trust over time, and has been applied to
   certificates, end to end encrypted messaging systems, and supply
   chain security.  This specification enables concise transparency
   oriented systems, by building on CBOR (Concise Binary Object
   Representation) and COSE.  The extensibility of the approach is
   demonstrated by providing CBOR encodings for Merkle inclusion and
   consistency proofs.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-cose-merkle-tree-proofs-18"/>
      </reference>
      <reference anchor="I-D.ietf-wg-scitt-architecture">
        <front>
          <title>*** BROKEN REFERENCE ***</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="CCF" target="https://github.com/microsoft/ccf">
        <front>
          <title>Confidential Consortium Framework</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="CCF-Ledger-Format" target="https://microsoft.github.io/CCF/main/architecture/ledger.html">
        <front>
          <title>CCF Ledger Format</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="CCF-Commit-Evidence" target="https://microsoft.github.io/CCF/main/use_apps/verify_tx.html#commit-evidence">
        <front>
          <title>CCF Commit Evidence</title>
          <author>
            <organization/>
          </author>
          <date>n.d.</date>
        </front>
      </reference>
      <reference anchor="CCF-Receipt-Verification" target="https://microsoft.github.io/CCF/main/use_apps/verify_tx.html#receipt-verification">
        <front>
          <title>CCF Receipt Verification</title>
          <author>
            <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="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
