<?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-01" 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-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="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="November" day="26"/>
    <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: 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>*** 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>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
