<?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-steele-cose-merkle-tree-proofs-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="CoMETRE">Concise Encoding of Signed Merkle Tree Proofs</title>
    <seriesInfo name="Internet-Draft" value="draft-steele-cose-merkle-tree-proofs-01"/>
    <author initials="O." surname="Steele" fullname="Orie Steele">
      <organization>Transmute</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>orie@transmute.industries</email>
      </address>
    </author>
    <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</organization>
      <address>
        <postal>
          <country>UK</country>
        </postal>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <author initials="C." surname="Fournet" fullname="Cedric Fournet">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <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 61?>

<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>
  <middle>
    <?line 66?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Merkle trees are one of many verifiable data structures that enable tamper evident secure information storage,
through their ability to protect the integrity of batches of documents or collections of statements.</t>
      <t>Merkle trees can be constructed from simple operations such as concatenation and digest via a cryptographic hash function,
however, more advanced constructions enable proofs of different properties of the underlying verifiable data structure.</t>
      <t>Verifiable data structure proofs can be used to prove a document is in a database (proof of inclusion),
that a database is append only (proof of consistency), that a smaller set of statements are contained
in a large set of statements (proof of disclosure, a special case of proof of inclusion),
or proof that certain data is not yet present in a database (proofs of non inclusion).</t>
      <t>Differences in the representation of verifiable data structures, and verifiable data structure proof types,
can increase the burden for implementers, and create interoperability challenges for transparency services.</t>
      <t>This document describes how to convey verifiable data structures, and associated proof types in COSE envelopes.</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="terminology">
      <name>Terminology</name>
      <dl>
        <dt>Verifiable Data Structure:</dt>
        <dd>
          <t>A data structure which supports one or more Proof Types.</t>
        </dd>
        <dt>Proof Type:</dt>
        <dd>
          <t>A verifiable process, that proves properties of one or more Verifiable Data Structures.</t>
        </dd>
        <dt>Proof Value:</dt>
        <dd>
          <t>An encoding of a Proof Type in CBOR.</t>
        </dd>
        <dt>Proof Signature:</dt>
        <dd>
          <t>A COSE Sign1 encoding of a specific Proof Type for a specific Verifiable Data Structure.</t>
        </dd>
      </dl>
    </section>
    <section anchor="sec-generic-verifiable-data-structures">
      <name>Verifiable Data Structures in CBOR</name>
      <t>This section describes representations of verifiable data structure proofs structures in CBOR.</t>
      <t>Different verifiable data structures support the same proof types,
but the representations of the proofs varies greatly.</t>
      <t>For example, construction of a merkle tree leaf, or an inclusion proof from a leaf to a merkle root,
might have several different representations, depending on the verifiable data structure used.</t>
      <t>Some differences in representations are necessary to support efficient
verification of different kinds of proofs and for compatibility with specific implementations.</t>
      <t>Some proof types benefit from standard envelope formats for signing and encryption, whilst others require no further cryptographic intervention at all.</t>
      <t>In order to improve interoperability we define two extension points for
enabling verifiable data structures with COSE, and we provide concrete examples for
the structures and proofs defined in <xref target="RFC9162"/>.</t>
      <section anchor="sec-verifiable-data-structure-algorithms">
        <name>Algorithms Registry</name>
        <t>This document establishes a registry of verifiable data structure algorithms,
with the following initial contents:</t>
        <table align="left" anchor="verifiable-data-structure-values">
          <name>Verifiable Data Structure Alogrithms</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">0</td>
              <td align="left">N/A</td>
              <td align="left">&nbsp;</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">RFC9162_SHA256</td>
              <td align="left">
                <xref target="RFC9162"/></td>
            </tr>
          </tbody>
        </table>
        <section anchor="registration-requirements">
          <name>Registration Requirements</name>
          <t>Each specification <bcp14>MUST</bcp14> define how to encode the algorithm and proof types in CBOR.</t>
          <t>Each specification <bcp14>MUST</bcp14> define how to produce and consume the supported proof types.</t>
          <t>See <xref target="sec-rfc-9162-verifiable-data-structure-definition"/> as an example.</t>
        </section>
      </section>
    </section>
    <section anchor="proof-types-in-cbor">
      <name>Proof Types in CBOR</name>
      <t>Proof types are specific to their associated "verifiable data structure",
for example, different Merkle trees might support different representations of "inclusion proof" or "consistency proof".</t>
      <t>Implementers should not expect interoperability accross "verifiable data structures",
but they should expect conceptually similar properties across registered proof types.</t>
      <t>For example, 2 different merkle tree based verifiable data structures might both support proofs of inclusion.
Protocols requiring proof of inclusion ought to be able to preserve their functionality,
while switching from one verifiable data structure to another, so long as both structures support the same proof types.</t>
      <section anchor="sec-verifiable-data-structure-proof-types">
        <name>Proof Types Registry</name>
        <t>This document establishes a registry of verifiable data structure proof types tags,
with the following initial contents:</t>
        <table align="left" anchor="verifiable-data-structure-proof-types-values">
          <name>Verifiable Data Structure Proof Types</name>
          <thead>
            <tr>
              <th align="left">Identifier</th>
              <th align="left">Proof Type</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">N/A</td>
              <td align="left">&nbsp;</td>
            </tr>
            <tr>
              <td align="left">TBD_2</td>
              <td align="left">inclusion</td>
              <td align="left">
                <xref target="sec-generic-inclusion-proof"/></td>
            </tr>
            <tr>
              <td align="left">TBD_3</td>
              <td align="left">consistency</td>
              <td align="left">
                <xref target="sec-generic-consistency-proof"/></td>
            </tr>
          </tbody>
        </table>
        <t>Editors note: The registry requirements needs to address the case of multiple proofs of a given type.</t>
      </section>
      <section anchor="sec-generic-inclusion-proof">
        <name>Inclusion Proof</name>
        <t>Inclusion proofs provide a mechanism for a verifier to validate set membership.</t>
        <t>The integer identifier for this Proof Type is TBD_2.
The string identifier for this Proof Type is "inclusion".</t>
        <t><xref target="sec-rfc9162-sha256-inclusion-proof"/> provides a concrete example.</t>
      </section>
      <section anchor="sec-generic-consistency-proof">
        <name>Consistency Proof</name>
        <t>Consistency proofs provide a mechanism for a verifier to validate the consistency of a verifiable data structure.</t>
        <t>The integer identifier for this Proof Type is TBD_3.
The string identifier for this Proof Type is "consistency".</t>
        <t><xref target="sec-rfc9162-sha256-consistency-proof"/> provides a concrete example.</t>
      </section>
    </section>
    <section anchor="sec-rfc-9162-verifiable-data-structure-definition">
      <name>RFC9162_SHA256 as a Verifiable Data Structure</name>
      <t>This section defines how the data structures described in <xref target="RFC9162"/>
are mapped to the terminology defined in this document, using cbor and cose.</t>
      <t>RFC9162_SHA256 requires the following:</t>
      <ul spacing="normal">
        <li>TBD_1 (verifiable-data-structure): 1, the integer representing the RFC9162_SHA256 verifiable data structure algorithm.</li>
        <li>TBD_2 (inclusion-proof): a bstr representing the RFC9162_SHA256 inclusion proof</li>
        <li>TBD_3 (consistency-proof): a bstr representing the RFC9162_SHA256 consistency proof</li>
      </ul>
      <section anchor="algorithm-definition">
        <name>Algorithm Definition</name>
        <t>The integer identifier for this Verifiable Data Structure is 1.
The string identifier for this Verifiable Data Structure is "RFC9162_SHA256".</t>
        <t>See <xref target="sec-verifiable-data-structure-algorithms"/>.</t>
        <t>See <xref target="RFC9162"/>, 2.1.1. Definition of the Merkle Tree,
for a complete description of this verifiable data structure.</t>
      </section>
      <section anchor="sec-rfc9162-sha256-inclusion-proof">
        <name>Inclusion Proof Definition</name>
        <t>See <xref target="RFC9162"/>, 2.1.3.1. Generating an Inclusion Proof,
for a complete description of this verifiable data structure proof type.</t>
        <t>The cbor representation of an inclusion proof for RFC9162_SHA256 is:</t>
        <sourcecode type="cddl">
inclusion-proof = #TBD_2([
    tree-size: int
    leaf-index: int
    inclusion-path: [+ bstr]
])
</sourcecode>
        <section anchor="inclusion-proof-signature">
          <name>Inclusion Proof Signature</name>
          <t>In a signed inclusion proof, the previous merkle tree root, maps to tree-size-1, and is a detached payload.</t>
          <t>Other specifications refer to signed inclusion proofs as "receipts",
profiles of proof signatures are encouraged to make additional protected header parameters mandatory.</t>
          <t>TODO: reference to scitt receipts.</t>
          <t>The protected header for an RFC9162_SHA256 inclusion proof signature is:</t>
          <ul spacing="normal">
            <li>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int / tstr.</li>
            <li>verifiable-data-structure (label: TBD_1): <bcp14>REQUIRED</bcp14>. verifiable data structure algorithm identifier. Value type: int / tstr.</li>
            <li>crit (label: 2): <bcp14>OPTIONAL</bcp14>. Criticality marker. Value type: [ +label ]</li>
          </ul>
          <t>Editors note: Recommend removing <tt>crit</tt> and mandating <tt>kid</tt>. See <eref target="https://github.com/ietf-scitt/draft-steele-cose-merkle-tree-proofs/issues/21">issue 21</eref>.</t>
          <t>The unprotected header for an RFC9162_SHA256 inclusion proof signature is:</t>
          <ul spacing="normal">
            <li>inclusion-proof (label: TBD_2): <bcp14>REQUIRED</bcp14>. proof type identifier. Value type: bstr.</li>
          </ul>
          <t>The payload of an RFC9162_SHA256 inclusion proof signature is:</t>
          <t>A previous Merkle tree hash as defined in <xref target="RFC9162"/>.</t>
          <t>The payload <bcp14>MUST</bcp14> be detached.</t>
          <t>Detaching the payload forces verifiers to recompute the root from the inclusion proof signature,
this protects against implementation errors where the signature is verified but to root does not match the inclusion proof.</t>
          <t>The following example needs to be converted to proper CDDL:</t>
          <artwork><![CDATA[
# COSE_Sign1
18([

  # Protected Header
  h'a2012604588368747470733a2f2f73636974742e78797a2f75726e3a696574663a706172616d733a7472616e733a696e636c7573696f6e3a726663393136325f7368613235363a303a65343263333764326638306361613464323035353635376534303463386538363838313534346136663264313731356530663564616435643436343833633531',
  # {
  #   "alg" : "ES256",
  #   1 : -7,
  #   "verifiable-data-structure" : "RFC9162_SHA256",
  #   TBD_1 : 1,
  # }

  # Unprotected Header
  {
      # "inclusion-proof" : "h'3133312c322c302c3132392c3231362c36342c38382c33322c3235342c3132382c33392c34392c3131382c312c3230352c38372c3235332c3136312c31332c3136312c38352c3139302c3133322c3234312c3137332c34352c3132372c32302c35302c35342c31332c3134342c33332c3233372c3234382c3132382c32332c3138392c3133352c3932'"
      TBD_2 : h'3133312c322c302c3132392c3231362c36342c38382c33322c3235342c3132382c33392c34392c3131382c312c3230352c38372c3235332c3136312c31332c3136312c38352c3139302c3133322c3234312c3137332c34352c3132372c32302c35302c35342c31332c3134342c33332c3233372c3234382c3132382c32332c3138392c3133352c3932'
  },

  # Detached Payload

  # Signature
  h'4862c1dced27ceeb1f7a6277d13be127a8969a7171ae000ffa90ef5757b817ca8ee61d57645d1a087251a97f06eb61aec46ecf958e4a0fb94ae37f410c7f77ea'
])
]]></artwork>
        </section>
      </section>
      <section anchor="sec-rfc9162-sha256-consistency-proof">
        <name>Consistency Proof Definition</name>
        <t>See <xref target="RFC9162"/>, 2.1.4.1. Generating a Consistency Proof,
for a complete description of this verifiable data structure proof type.</t>
        <t>The cbor representation of a consistency proof for RFC9162_SHA256 is:</t>
        <sourcecode type="cddl">
consistency-proof = #TBD_3([
    tree-size-1: int ; size of the tree, when the previous root was produced.
    tree-size-2: int ; size of the tree, when the latest root was produced.
    consistency-path: [+ bstr] ; consistency path, from previous root to latest root.
])
</sourcecode>
        <t>Editors note: tree-size-1, could be ommited, if an inclusion-proof is always present, since the inclusion proof contains, tree-size-1.</t>
        <section anchor="consistency-proof-signature">
          <name>Consistency Proof Signature</name>
          <t>In a signed consistency proof, the latest merkle tree root, maps to tree-size-2, and is an attached payload.</t>
          <t>The protected header for an RFC9162_SHA256 consistency proof signature is:</t>
          <ul spacing="normal">
            <li>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int / tstr.</li>
            <li>verifiable-data-structure (label: TBD_1): <bcp14>REQUIRED</bcp14>. verifiable data structure algorithm identifier. Value type: int / tstr.</li>
            <li>crit (label: 2): <bcp14>OPTIONAL</bcp14>. Criticality marker. Value type: [ +label ]</li>
          </ul>
          <t>Editors note: Recommend removing <tt>crit</tt> and mandating <tt>kid</tt>. See <eref target="https://github.com/ietf-scitt/draft-steele-cose-merkle-tree-proofs/issues/21">issue 21</eref>.</t>
          <t>The unprotected header for an RFC9162_SHA256 consistency proof signature is:</t>
          <ul spacing="normal">
            <li>consistency-proof (label: TBD_2): <bcp14>REQUIRED</bcp14>. proof type identifier. Value type: bstr.</li>
          </ul>
          <t>The payload of an RFC9162_SHA256 consistency proof signature is:</t>
          <t>The latest Merkle tree hash as defined in <xref target="RFC9162"/>.</t>
          <t>The payload <bcp14>MUST</bcp14> be attached.</t>
          <t>The following example needs to be converted to proper CDDL:</t>
          <artwork><![CDATA[
# COSE_Sign1
18([

  # Protected Header
  h'a2012604588568747470733a2f2f73636974742e78797a2f75726e3a696574663a706172616d733a7472616e733a636f6e73697374656e63793a726663393136325f7368613235363a303a66653830323733313736303163643537666461313064613135356265383466316164326437663134333233363064393032316564663838303137626438373563',
  # {
  #   "alg" : "ES256",
  #   1 : -7,
  #   "verifiable-data-structure" : "RFC9162_SHA256",
  #   TBD_1 : 1,
  # }

  # Unprotected Header
  {
      # "consistency-proof" : "h'3133312c312c312c3132392c3231362c36342c38382c33322c3235342c3132382c33392c34392c3131382c312c3230352c38372c3235332c3136312c31332c3136312c38352c3139302c3133322c3234312c3137332c34352c3132372c32302c35302c35342c31332c3134342c33332c3233372c3234382c3132382c32332c3138392c3133352c3932'"
      TBD_3 : h'3133312c312c312c3132392c3231362c36342c38382c33322c3235342c3132382c33392c34392c3131382c312c3230352c38372c3235332c3136312c31332c3136312c38352c3139302c3133322c3234312c3137332c34352c3132372c32302c35302c35342c31332c3134342c33332c3233372c3234382c3132382c32332c3138392c3133352c3932'
  },

  # Protected Payload
  h'fe8027317601cd57fda10da155be84f1ad2d7f1432360d9021edf88017bd875c',

  # Signature
  h'fe476fcddb783805fe344fc96837f4a5531c2e5a56d6f6353831e84e17ac69d4407a5a0d6eadf27f3a570bcf604181fd11b4692d3ac17b116c6226ba43726113'
])
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>See the privacy considerations section of:</t>
      <ul spacing="normal">
        <li>
          <xref target="RFC9162"/></li>
        <li>
          <xref target="RFC9053"/></li>
      </ul>
      <t>Although the word transparency implies to some degree read access,
it is important to note that transparency logs might include sensitive information.</t>
      <t>Depending on the verifiable data structure used, a service provider might be able to count unique entries.</t>
      <t>In the case that an entry is produced from a cose sign 1 envelope,
adding information to the unprotected header can be used to produce a unique entry.</t>
      <t>However, this could impact privacy, and some transparency service operators might prefer only integrity protected content be made transparent.</t>
      <section anchor="sec-leaf-blinding">
        <name>Leaf Blinding</name>
        <t>In cases where a single merkle root and multiple inclusion paths are used to prove inclusion for multiple payloads. There is a risk that an attacker may be able to learn the content of undisclosed payloads, by brute forcing the values adjacent to the disclosed payloads through application of the cryptographic hash function and comparison to the the disclosed inclusion paths. This kind of attack can be mitigated by including a cryptographic nonce in the construction of the leaf, however this nonce must then disclosed along side an inclusion proof which increases the size of multiple payload signed inclusion proofs.</t>
        <t>Tree algorithm designers are encouraged to comment on this property of their leaf construction algorithm.</t>
        <section anchor="sec-leaf-blinding-example">
          <name>Blinding Example</name>
          <t>Implementers wishing to leverage multiple inclusion proofs to support selective disclosure,
can prepend each payload with extra data before computing the inclusion proof, where extra data is a cryptographic nonce.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>See the security considerations section of:</t>
      <ul spacing="normal">
        <li>
          <xref target="RFC9162"/></li>
        <li>
          <xref target="RFC9053"/></li>
      </ul>
      <section anchor="hash-function-agility">
        <name>Hash Function Agility</name>
        <t>The choice of cryptographic hash function is the primary primitive impacting the security of authenticating payload inclusion in a merkle root. Tree algorithm designers should review the latest guidance on selecting a suitable cryptographic hash function.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="additions-to-existing-registries">
        <name>Additions to Existing Registries</name>
        <section anchor="new-entries-to-the-cose-header-parameters-registry">
          <name>New Entries to the COSE Header Parameters Registry</name>
          <t>This document requests IANA to add new values to the 'COSE
Algorithms' and to the 'COSE Header Algorithm Parameters' registries
in the 'Standards Action With Expert Review category.</t>
          <section anchor="cose-header-algorithm-parameters">
            <name>COSE Header Algorithm Parameters</name>
            <ul spacing="normal">
              <li>Name: verifiable-data-structure</li>
              <li>Label: TBD_1 (requested assignment 12)</li>
              <li>Value type: int / tstr</li>
              <li>Value registry: See <xref target="verifiable-data-structure-values"/></li>
              <li>Description: Tag indicating the Verifiable Data Structure, see <xref target="sec-generic-verifiable-data-structures"/>.</li>
            </ul>
            <t>Editors note: Authors are discussing how to avoid flooding the cose header parameters registry with new proof types.</t>
            <ul spacing="normal">
              <li>Name: inclusion-proof</li>
              <li>Label: TBD_2 (requested assignment 13)</li>
              <li>Value type: bstr</li>
              <li>Value registry: See <xref target="verifiable-data-structure-proof-types-values"/></li>
              <li>Description: Tag indicating the "inclusion" Proof Type, see <xref target="sec-generic-inclusion-proof"/>.</li>
              <li>Name: consistency-proof</li>
              <li>Label: TBD_2 (requested assignment 14)</li>
              <li>Value type: bstr</li>
              <li>Value registry: See <xref target="verifiable-data-structure-proof-types-values"/></li>
              <li>Description: Tag indicating the "consistency" Proof Type, see <xref target="sec-generic-consistency-proof"/>.</li>
            </ul>
          </section>
        </section>
        <section anchor="verifiable-data-structure-registry">
          <name>Verifiable Data Structures</name>
          <t>IANA will be asked to establish a registry of tree algorithm identifiers,
named "Verifiable Data Structures" to be administered under a Specification Required policy <xref target="RFC8126"/>.</t>
          <t>Template:</t>
          <ul spacing="normal">
            <li>Identifier: The two-byte identifier for the algorithm</li>
            <li>Algorithm: The name of the data structure</li>
            <li>Reference: Where the data structure is defined</li>
          </ul>
          <t>Initial contents: Provided in <xref target="verifiable-data-structure-values"/></t>
        </section>
        <section anchor="verifiable-data-structure-proof-types-registry">
          <name>Verifiable Data Structure Proof Types</name>
          <t>IANA will be asked to establish a registry of tree algorithm identifiers,
named "Verifiable Data Structures Proof Types" to be administered under a Specification Required policy <xref target="RFC8126"/>.</t>
          <t>Template:</t>
          <ul spacing="normal">
            <li>Identifier: The two-byte identifier for the algorithm</li>
            <li>Algorithm: The name of the proof type algorithm</li>
            <li>Reference: Where the algorithm is defined</li>
          </ul>
          <t>Initial contents: Provided in <xref target="verifiable-data-structure-proof-types-values"/></t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8949"/>
            <seriesInfo name="RFC" value="8949"/>
            <seriesInfo name="STD" value="94"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <seriesInfo name="DOI" value="10.17487/RFC6962"/>
            <seriesInfo name="RFC" value="6962"/>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate 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>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="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="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <seriesInfo name="DOI" value="10.17487/RFC6234"/>
            <seriesInfo name="RFC" value="6234"/>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8032"/>
            <seriesInfo name="RFC" value="8032"/>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6979">
          <front>
            <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <seriesInfo name="DOI" value="10.17487/RFC6979"/>
            <seriesInfo name="RFC" value="6979"/>
            <author fullname="T. Pornin" initials="T." surname="Pornin"/>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document defines a deterministic digital signature generation procedure. Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein. Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC7049">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7049"/>
            <seriesInfo name="RFC" value="7049"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <seriesInfo name="DOI" value="10.17487/RFC9053"/>
            <seriesInfo name="RFC" value="9053"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <seriesInfo name="DOI" value="10.17487/RFC8126"/>
            <seriesInfo name="RFC" value="8126"/>
            <seriesInfo name="BCP" value="26"/>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="BCP205">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <seriesInfo name="DOI" value="10.17487/RFC7942"/>
            <seriesInfo name="RFC" value="7942"/>
            <seriesInfo name="BCP" value="205"/>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</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.ietf-cose-countersign">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-cose-countersign-10"/>
            <author fullname="Jim Schaad" initials="J." surname="Schaad">
              <organization>August Cellars</organization>
            </author>
            <date day="20" month="September" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  CBOR Object Signing and Encryption (COSE) defines a set of security services for CBOR.  This document defines a countersignature algorithm along with the needed header parameters and CBOR tags for COSE.  This document updates RFC 9052.
              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-scitt-architecture">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-01"/>
            <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 Research</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>ARM</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   Traceability of physical and digital artifacts in supply chains is a
   long-standing, but increasingly serious security concern.  The rise
   in popularity of verifiable data structures as a mechanism to make
   actors more accountable for breaching their compliance promises has
   found some successful applications to specific use cases (such as the
   supply chain for digital certificates), but lacks a generic and
   scalable architecture that can address a wider range of use cases.

   This memo defines a generic and scalable architecture to enable
   transparency across any supply chain with minimum adoption barriers
   for producers (who can register their Signed Statements on any
   Transparency Service, with the guarantee that all consumers will be
   able to verify them) and enough flexibility to allow different
   implementations of Transparency Services with various auditing and
   compliance requirements.

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

<section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: Please remove this section as well as references to <xref target="BCP205"/> before AUTH48.</t>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="BCP205"/>.
The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.
Please note that the listing of any individual implementation here does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a catalog of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="BCP205"/>,
"this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.
It is up to the individual working groups to use this information as they see fit".</t>
      <section anchor="implementer">
        <name>Implementer</name>
        <t>An open-source implementation was initiated and is maintained by the Transmute Industries Inc. - Transmute.</t>
      </section>
      <section anchor="implementation-name">
        <name>Implementation Name</name>
        <t>An application demonstrating the concepts is available at <eref target="https://scitt.xyz">https://scitt.xyz</eref>.</t>
      </section>
      <section anchor="implementation-url">
        <name>Implementation URL</name>
        <t>An open-source implementation is available at:</t>
        <ul spacing="normal">
          <li>https://github.com/transmute-industries/cose</li>
        </ul>
      </section>
      <section anchor="maturity">
        <name>Maturity</name>
        <t>The code's level of maturity is considered to be "prototype".</t>
      </section>
      <section anchor="coverage-and-version-compatibility">
        <name>Coverage and Version Compatibility</name>
        <t>The current version ('main') implements the tree algorithm, inclusion proof and consistency proof concepts of this draft.</t>
      </section>
      <section anchor="license">
        <name>License</name>
        <t>The project and all corresponding code and data maintained on GitHub are provided under the Apache License, version 2.</t>
      </section>
      <section anchor="implementation-dependencies">
        <name>Implementation Dependencies</name>
        <t>The implementation builds on concepts described in SCITT <xref target="I-D.ietf-scitt-architecture"/> (https://scitt.io/).</t>
        <t>The implementation uses the Concise Binary Object Representation <xref target="RFC7049"/> (https://cbor.io/).</t>
        <t>The implementation uses the CBOR Object Signing and Encryption <xref target="RFC9053"/>, maintained at:
- https://github.com/erdtman/cose-js</t>
        <t>The implementation uses an implementation of <xref target="RFC9162"/>,
maintained at:</t>
        <ul spacing="normal">
          <li>https://github.com/transmute-industries/rfc9162/tree/main/src/CoMETRE</li>
        </ul>
      </section>
      <section anchor="contact">
        <name>Contact</name>
        <t>Orie Steele (orie@transmute.industries)</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
