<?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-00" 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 Profile and Tree Algorithm for the Confidential Consortium Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-birkholz-cose-receipts-ccf-profile-00"/>
    <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="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="2024" month="October" day="14"/>
    <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 by 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">This document</td>
          </tr>
        </tbody>
      </table>
      <t>This document defines inclusion proofs for CCF ledgers. Verifiers <bcp14>MUST</bcp14> reject all other proof types</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>
        <artwork><![CDATA[
ccf-leaf = [
  internal-transaction-hash: bstr .size 32 ; a string of HASH_SIZE(32) bytes
  internal-evidence: tstr .size (1..1024)  ; a string of at most 1024 bytes
  data-hash: bstr .size 32                 ; a string of HASH_SIZE(32) bytes
]
]]></artwork>
        <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>
      <artwork><![CDATA[
ccf-proof-element = [
  left: bool         ; position of the element
  hash: bstr .size 32; hash of the proof element (string of HASH_SIZE(32) bytes)
]

ccf-inclusion-proof = bstr .cbor {
  &(leaf: 1) => ccf-leaf
  &(path: 2) => [+ ccf-proof-element]
}
]]></artwork>
      <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 headers defined by the application.</t>
        <t>The protected headers 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 proof = inclusion_receipt.unprotected_headers[INCLUSION_PROOF_LABEL] or fail
  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="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Privacy Considerations</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security Considerations</t>
    </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: TBD_1 (requested assignment 2)</li>
            <li>Description: Historical transaction ledgers produced by Trusted Execution Environments, such as the CCF ledger</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>*** 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>
          <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>
    <?line 247?>

<section anchor="attic">
      <name>Attic</name>
      <t>Not ready to throw these texts into the trash bin yet.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
tXqf83eotPzQhdBHxSnmilqF/wICESfH1CYAAA==

-->

</rfc>
