<?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.6.35 (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-cometre-ccf-profile-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="CoMTRE CFF Profile">A CoMETRE Profile and Tree Algorithm for the Confidential Consortium Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-birkholz-cose-cometre-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>
    <date year="2023" month="July" day="10"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 46?>

<t>This document defines a new verifiable data structure type for COSE Signed Merkle Tree Proofs specifically designed for implementations that rely on Trusted Execution Environments (TEEs) to provide stronger tamper-evidence guarantees.</t>
    </abstract>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Concise Encoding of Signed Merkle Tree Proofs (CoMeTre) <xref target="I-D.steele-cose-merkle-tree-proofs"/> defines a common framework for defining different types of proofs, such as proof of inclusion, about verifiable data structures (also abbreviated as "logs" in this document). For instance, inclusion proofs guarantee to a verifier that a given serializable element is recorded at a given state of the log, while consistency proofs are used to establish that an inclusion proof is still consistent with the new state of the log at a later time.</t>
      <t>In this document, we define a new type of log, associated with the Confidential Consortium Framework (CCF) ledger. Compared to <xref target="RFC9162"/>, the leaves of CCF trees carry additional opaque information that is used 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.</t>
      <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.steele-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">Identifier</th>
            <th align="left">Algorithm</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD_1</td>
            <td align="left">CCF_LEDGER</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
      <section anchor="tree-shape">
        <name>Tree Shape</name>
        <t>The input of the Merkle Tree Hash (MTH) function is a list of n byte strings, written D_n = {d[0], d[1], ..., d[n-1]}. The output is a single HASH_SIZE byte string, also called the Merkle root hash.</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="leaf-components">
        <name>Leaf Components</name>
        <t>Each leaf in a CCF ledger carries the following components:</t>
        <artwork><![CDATA[
CCF-leaf = [
  internal-hash: bstr ; a string of HASH_SIZE bytes;
  internal-data: bstr; a string of at most 1024 bytes; and
  data_hash: bstr ; the serialization of the element stored at this leaf.
]
]]></artwork>
        <t>The <tt>internal_hash</tt> and <tt>internal_data</tt> byte strings are internal to the CCF implementation. Similarly, the auxiliary tree entries are internal to CCF. They are opaque to receipt Verifiers, but they commit the TS to the whole tree contents and may be used for additional, CCF-specific auditing.</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-inclusion-proof: [+ proof-element],

proof-element = [
  left: bool
  hash: bstr
]
]]></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>proof-type: 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.</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>
          <li>
            <tt>leaf</tt> (label TBD_2): <tt>bstr .cbor CCF-leaf</tt>. This contains the CCF-specific serialization of the leaf element</li>
        </ul>
        <t>The payload of the signature is the CCF ledger Markle 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 recompute the payload of the signature based on the <tt>inclusion-proof</tt> header:</t>
        <artwork><![CDATA[
compute_root(leaf, proof):
  h := leaf.internal-hash
       || HASH(leaf.internal-data)
       || leaf.data-hash

  for [left, hash] in proof:
      h := HASH(hash + h) if left
           HASH(h + hash) else
  return h

verify_inclusion_proof(signed_proof):
  leaf := signed_proof.unprotected_headers[LEAF_LABEL] or fail
  proof := signed_proof.unprotected_headers[INCLUSION_PROOF_LABEL] or fail
  payload := compute_root(leaf, proof)
  return verif_cose_detached(signed_proof, payload)
]]></artwork>
      </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="cose-header-parameters-registry">
          <name>COSE Header Parameters registry</name>
          <t>This document requests IANA to add the following new value to the 'COSE Header Parameters' registry:</t>
          <ul spacing="normal">
            <li>Label: TBD_2</li>
            <li>Value type: <tt>bstr</tt></li>
            <li>Reference: This document</li>
          </ul>
        </section>
        <section anchor="tree-alg-registry">
          <name>Tree Algorithms</name>
          <t>This document requests IANA to add the following new value to the 'Tree Algorithms' registry:</t>
          <ul spacing="normal">
            <li>Identifier: TBD_1 (requested assignment 2)</li>
            <li>Tree Algorithm: ccf-ledger</li>
            <li>Reference: This document</li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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="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>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.steele-cose-merkle-tree-proofs">
          <front>
            <title>Concise Encoding of Signed Merkle Tree Proofs</title>
            <seriesInfo name="Internet-Draft" value="draft-steele-cose-merkle-tree-proofs-01"/>
            <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="10" month="July" year="2023"/>
            <abstract>
              <t>   This specification describes verifiable data structures and
   associated proof types for use with COSE.  The extensibility of the
   approach is demonstrated by providing CBOR encodings for RFC9162.

              </t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
    <?line 214?>

<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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
AAA=

-->

</rfc>
