<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 2.6.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cose-merkle-tree-proofs-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <front>
    <title abbrev="CoMETRE">Concise Encoding of Signed Merkle Tree Proofs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cose-merkle-tree-proofs-00"/>
    <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="August" day="17"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>
    <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>
  <middle>
    <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 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      </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"> </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"> </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"><![CDATA[
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"><![CDATA[
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" target="https://www.rfc-editor.org/info/rfc8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <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>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC6962" target="https://www.rfc-editor.org/info/rfc6962">
          <front>
            <title>Certificate Transparency</title>
            <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>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="RFC9162" target="https://www.rfc-editor.org/info/rfc9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <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>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="RFC6234" target="https://www.rfc-editor.org/info/rfc6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <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>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>
        <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <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>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC6979" target="https://www.rfc-editor.org/info/rfc6979">
          <front>
            <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <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>
          <seriesInfo name="RFC" value="6979"/>
          <seriesInfo name="DOI" value="10.17487/RFC6979"/>
        </reference>
        <reference anchor="RFC7049" target="https://www.rfc-editor.org/info/rfc7049">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <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>
          <seriesInfo name="RFC" value="7049"/>
          <seriesInfo name="DOI" value="10.17487/RFC7049"/>
        </reference>
        <reference anchor="RFC9053" target="https://www.rfc-editor.org/info/rfc9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <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>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <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>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="BCP205" target="https://www.rfc-editor.org/info/rfc7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <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>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <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>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <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>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-cose-countersign" target="https://datatracker.ietf.org/doc/html/draft-ietf-cose-countersign-10">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Countersignatures</title>
            <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>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-countersign-10"/>
        </reference>
        <reference anchor="I-D.ietf-scitt-architecture" target="https://datatracker.ietf.org/doc/html/draft-ietf-scitt-architecture-02">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <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>
            <author fullname="Steve Lasker" initials="S." surname="Lasker">
              <organization>Lasker Consulting</organization>
            </author>
            <date day="10" month="July" 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 document defines a generic, interoperable and scalable
   architecture to enable transparency across any supply chain with
   minimum adoption barriers.  It provides flexibility, enabling
   interoperability across different implementations of Transparency
   Services with various auditing and compliance requirements.
   Producers can register their Signed Statements on any Transparency
   Service, with the guarantee that all Consumers will be able to verify
   them.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-02"/>
        </reference>
      </references>
    </references>
    <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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
Xe3dkezl3jdDvnL+G0nFvEedUwAA

-->

</rfc>
