<?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.7.19 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-birkholz-cose-receipts-ccf-profile-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="COSE Receipts with CCF">COSE Receipts with CCF</title>
    <seriesInfo name="Internet-Draft" value="draft-birkholz-cose-receipts-ccf-profile-04"/>
    <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="2025" month="June" day="03"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 68?>

<t>This document defines a new verifiable data structure type for COSE Signed Merkle Tree Proofs specifically designed for transaction ledgers produced via Trusted Execution Environments (TEEs), such as the Confidential Consortium Framework (<xref target="CCF"/>) to provide stronger tamper-evidence guarantees.</t>
    </abstract>
  </front>
  <middle>
    <?line 72?>

<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 defining different types of proofs, such as proof of inclusion, about verifiable data structures (VDS). 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, associated with the Confidential Consortium Framework (CCF) ledger. 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>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.</li>
        <li>To verify that elements are only written by the Trusted Execution Environment, which addresses the persistence of committed transactions that happen between new signatures of the Merkle Tree root.</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&nbsp;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-ccf-ledger-verifiable-data-structure">
      <name>Description of the CCF Ledger Verifiable Data Structure</name>
      <t>This documents extends the verifiable data structure 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>
      <t>This document defines inclusion proofs for CCF ledgers. Corresponding CCF Verifiers <bcp14>MUST</bcp14> reject proof types they do not support.</t>
      <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>|| 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="transaction-components">
        <name>Transaction Components</name>
        <t>Each leaf in a CCF ledger carries the following components:</t>
        <sourcecode type="cddl">
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 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.</t>
        <t><tt>data-hash</tt> summarises the subject of the proof: the data which is included in the ledger at this transaction.</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">
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 {
  &amp;(leaf: 1) =&gt; ccf-leaf
  &amp;(path: 2) =&gt; [+ 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>
            <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).</li>
          <li>
            <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).</li>
        </ul>
        <t>The unprotected header for a CCF inclusion proof signature <bcp14>MUST</bcp14> include the following:</t>
        <ul spacing="normal">
          <li>
            <tt>inclusion-proof: bstr .cbor ccf-inclusion-proof</tt>. This contains the serialized CCF inclusion proof, as defined above.</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">
protected-header-map = {
  &amp;(alg: 1) =&gt; int
  &amp;(vds: 395) =&gt; 2
  * cose-label =&gt; cose-value
}
</sourcecode>
      <ul spacing="normal">
        <li>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int.</li>
        <li>vds (label: 395): <bcp14>REQUIRED</bcp14>. verifiable data structure algorithm identifier. Value type: int.</li>
      </ul>
      <t>The unprotected header for an inclusion proof signature is described by the following CDDL definition:</t>
      <sourcecode type="cddl">
inclusion-proof = ccf-inclusion-proof

inclusion-proofs = [ + inclusion-proof ]

verifiable-proofs = {
  &amp;(inclusion-proof: -1) =&gt; inclusion-proofs
}

unprotected-header-map = {
  &amp;(vdp: 396) =&gt; verifiable-proofs
  * cose-label =&gt; cose-value
}
</sourcecode>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>See the privacy considerations section of:</t>
      <ul spacing="normal">
        <li>
          <xref target="I-D.ietf-cose-merkle-tree-proofs"/></li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security consideration 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 Trusted Execution Environments to secure their function, in particular:</t>
        <ol spacing="normal" type="1">
          <li>The evaluation of registration policies</li>
          <li>The creation and usage of receipt signing keys</li>
        </ol>
        <t>A compromise in the Trusted Execution Environment platform used to execute the network may allow an attacker to produce invalid and incompatible 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>The operator of a CCF network has the ability to start successor networks, with a distinct identity, which endorse the receipts produced by a previous instance.
This functionality is important to provide service continuity in the case of a catastrophic failure of a majority of nodes, but allows a potentially malicious operator to start from a prefix of an earlier ledger.
Clients can mitigate this risk by auditing the successor ledger and its attestation information, as described above. In particular, clients can check that the latest receipt they hold is present in the successor ledger before they begin making use of it.</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>Name: CCF_LEDGER_SHA256</li>
            <li>Value: 2 (requested assignment)</li>
            <li>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.</li>
            <li>Reference: This document</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>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
          <seriesInfo name="RFC" value="9162"/>
          <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>
      </reference>
      <reference anchor="I-D.ietf-cose-merkle-tree-proofs">
        <front>
          <title>COSE Receipts</title>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-merkle-tree-proofs-14"/>
          <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="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="11" month="May" 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 RFC9162.

            </t>
          </abstract>
        </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>
          <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"/>
          <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"/>
          <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>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
