<?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-02" 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-02"/>
    <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="09"/>
    <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>
        <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>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>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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
JeGfloxkMPP+D9bgiSztKQAA

-->

</rfc>
