<?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.7.1 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cose-merkle-tree-proofs-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="CoMETRE">Concise Encoding of Signed Merkle Tree Proofs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-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="October" day="20"/>
    <area>Security</area>
    <workgroup>COSE</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>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/cose-wg/draft-ietf-cose-merkle-tree-proofs"/>.</t>
    </note>
  </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 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"> </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">Proof Value</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">inclusion</td>
              <td align="left">array of bstr</td>
              <td align="left">
                <xref target="sec-generic-inclusion-proof"/></td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">consistency</td>
              <td align="left">array of bstr</td>
              <td align="left">
                <xref target="sec-generic-consistency-proof"/></td>
            </tr>
          </tbody>
        </table>
      </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 1.
The string identifier for this Proof Type is "inclusion".
The value of this Proof Type is array of bstr.</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 2.
The string identifier for this Proof Type is "consistency".
The value of this Proof Type is array of bstr.</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>
          <t>-11111 (verifiable-data-structure): 1, the integer representing the RFC9162_SHA256 verifiable data structure algorithm.</t>
        </li>
        <li>
          <t>-22222 (verifiable-data-proofs): a map supporting the following proof types:</t>
        </li>
        <li>
          <t>1 (inclusion-proof): an array of bstr representing RFC9162_SHA256 inclusion proofs</t>
        </li>
        <li>
          <t>2 (consistency-proof): an array of bstr representing RFC9162_SHA256 consistency proofs</t>
        </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 = [
    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>
              <t>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int / tstr.</t>
            </li>
            <li>
              <t>verifiable-data-structure (label: -11111): <bcp14>REQUIRED</bcp14>. verifiable data structure algorithm identifier. Value type: int / tstr.</t>
            </li>
          </ul>
          <t>The unprotected header for an RFC9162_SHA256 inclusion proof signature is:</t>
          <sourcecode type="cddl"><![CDATA[
inclusion-proofs = [ + bstr ]

verifiable-proofs = {
  &(inclusion-proof: 1) => inclusion-proofs
}

unprotected-header-map = {
  &(verifiable-data-proof: -22222) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
          <ul spacing="normal">
            <li>
              <t>inclusion-proof (label: 1): <bcp14>REQUIRED</bcp14>. proof type identifier. Value type: [ + bstr ].</t>
            </li>
          </ul>
          <t>The payload of an RFC9162_SHA256 inclusion proof signature is the 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 the root does not match the inclusion proof.</t>
          <sourcecode type="cbor-diag"><![CDATA[
18(                                 / COSE Single Signer Data Object        /
    [
      h'a3012604...392b6601',       / Protected header                      /
      {                             / Unprotected header                    /
        -22222: {                   / Proofs                                /
          1: [                      / Inclusion proofs (1)                  /
            h'83040282...1f487bb1', / Inclusion proof 1                     /
          ]
        },
      },
      h'',                          / Detached payload                      /
      h'1c0f970e...bf4bae7f'        / Signature                             /
    ]
)
]]></sourcecode>
          <sourcecode type="cbor-diag"><![CDATA[
{                                   / Protected header                      /
  1: -7,                            / Cryptographic algorithm to use        /
  4: h'68747470...6d706c65',        / Key identifier                        /
  -11111: 1                         / Verifiable data structure             /
}
]]></sourcecode>
          <sourcecode type="cbor-diag"><![CDATA[
[                                   / Inclusion proof 1                     /
  4,                                / Tree size                             /
  2,                                / Leaf index                            /
  [                                 / Inclusion hashes (2)                  /
     h'a39655d4...d29a968a'         / Intermediate hash 1                   /
     h'57187dff...1f487bb1'         / Intermediate hash 2                   /
  ]
]
]]></sourcecode>
        </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 = [
    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>
              <t>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int / tstr.</t>
            </li>
            <li>
              <t>verifiable-data-structure (label: TBD_1): <bcp14>REQUIRED</bcp14>. verifiable data structure algorithm identifier. Value type: int / tstr.</t>
            </li>
            <li>
              <t>kid (label: 4): <bcp14>OPTIONAL</bcp14>. Key identifier. Value type: bstr</t>
            </li>
            <li>
              <t>crit (label: 2): <bcp14>OPTIONAL</bcp14>. Criticality marker. Value type: [ + label ]</t>
            </li>
          </ul>
          <t>The unprotected header for an RFC9162_SHA256 consistency proof signature is:</t>
          <sourcecode type="cddl"><![CDATA[
consistency-proofs = [ + bstr ]

verifiable-proofs = {
  &(consistency-proof: 2) => consistency-proofs
}

unprotected-header-map = {
  &(verifiable-data-proof: -22222) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
          <ul spacing="normal">
            <li>
              <t>consistency-proof (label: 2): <bcp14>REQUIRED</bcp14>. proof type identifier. Value type:  [ + bstr ].</t>
            </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>
          <sourcecode type="cbor-diag"><![CDATA[
18(                                 / COSE Single Signer Data Object        /
    [
      h'a3012604...392b6601',       / Protected header                      /
      {                             / Unprotected header                    /
        -22222: {                   / Proofs                                /
          2: [                      / Consistency proofs (1)                /
            h'83040682...2e73a8ab', / Consistency proof 1                   /
          ]
        },
      },
      h'430b6fd7...f74c7fc4',       / Payload                               /
      h'8bcb1b79...78829bca'        / Signature                             /
    ]
)
]]></sourcecode>
          <sourcecode type="cbor-diag"><![CDATA[
{                                   / Protected header                      /
  1: -7,                            / Cryptographic algorithm to use        /
  4: h'68747470...6d706c65',        / Key identifier                        /
  -11111: 1                         / Verifiable data structure             /
}
]]></sourcecode>
          <sourcecode type="cbor-diag"><![CDATA[
[                                   / Consistency proof 1                   /
  4,                                / Tree size 1                           /
  6,                                / Tree size 2                           /
  [                                 / Consistency hashes (2)                /
     h'0bdaaed3...32568964'         / Intermediate hash 1                   /
     h'75f177fd...2e73a8ab'         / Intermediate hash 2                   /
  ]
]
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>See the privacy considerations section of:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="RFC9162"/></t>
        </li>
        <li>
          <t><xref target="RFC9053"/></t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>See the security considerations section of:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="RFC9162"/></t>
        </li>
        <li>
          <t><xref target="RFC9053"/></t>
        </li>
      </ul>
    </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>
                <t>Name: verifiable-data-structure</t>
              </li>
              <li>
                <t>Label: -11111</t>
              </li>
              <li>
                <t>Value type: int / tstr</t>
              </li>
              <li>
                <t>Value registry: https://www.iana.org/assignments/cose/cose.xhtml#header-parameters</t>
              </li>
              <li>
                <t>Description: Algorithm name for verifiable data structure, used to produce verifiable data proofs.</t>
              </li>
              <li>
                <t>Name: verifiable-data-proof</t>
              </li>
              <li>
                <t>Label: -222222</t>
              </li>
              <li>
                <t>Value type: int / tstr</t>
              </li>
              <li>
                <t>Value registry: https://www.iana.org/assignments/cose/cose.xhtml#header-parameters</t>
              </li>
              <li>
                <t>Description: Location for verifiable data proofs in COSE Header Parameters.</t>
              </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>
              <t>Identifier: The two-byte identifier for the algorithm</t>
            </li>
            <li>
              <t>Algorithm: The name of the data structure</t>
            </li>
            <li>
              <t>Reference: Where the data structure is defined</t>
            </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>
              <t>Identifier: The two-byte identifier for the algorithm</t>
            </li>
            <li>
              <t>Algorithm: The name of the proof type algorithm</t>
            </li>
            <li>
              <t>Reference: Where the algorithm is defined</t>
            </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 anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-cose-countersign">
          <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">
          <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>RKVST</organization>
            </author>
            <date day="16" month="October" 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-03"/>
        </reference>
      </references>
    </references>
    <?line 472?>

<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>
            <t>https://github.com/transmute-industries/cose</t>
          </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>
            <t>https://github.com/transmute-industries/rfc9162/tree/main/src/CoMETRE</t>
          </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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
14vgvwHoNRbeFk0AAA==

-->

</rfc>
