<?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-03" 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-03"/>
    <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="2024" month="December" day="10"/>
    <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">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 = [
  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
]
</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 = [
  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 {
  &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 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="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>TBD</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Maybe a list of precursors that are specific to CCF VDS goes here (e.g., trade-offs, pro/con, use of TEE).</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>COSE Receipts</title>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-merkle-tree-proofs-07"/>
          <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="17" month="October" year="2024"/>
          <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>
