<?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.17 (Ruby 3.3.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-cose-merkle-tree-proofs-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title>COSE Receipts</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cose-merkle-tree-proofs-05"/>
    <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="2024" month="June" day="18"/>
    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 62?>

<t>COSE (CBOR Object Signing and Encryption) Receipts prove properties of a verifiable data structure to a verifier.
Verifiable data structures and associated proof types enable security properties, such as minimal disclosure, transparency and non-equivocation.
Transparency helps maintain trust over time, and has been applied to certificates, end to end encrypted messaging systems, and supply chain security.
This specification enables concise transparency oriented systems, by building on CBOR (Concise Binary Object Representation) and COSE.
The extensibility of the approach is demonstrated by providing CBOR encodings for RFC9162.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    CBOR Object Signing and Encryption Working Group mailing list (cose@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cose/"/>.</t>
      <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 70?>

<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.
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.
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).
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.
This document describes how to convey verifiable data structures, and associated proof types in COSE envelopes.
For conciseness, a COSE object securing a verifiable data structure and its associated proofs, is referred to as a COSE Receipt.</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="cbor-tags">
      <name>CBOR Tags</name>
      <t>Editorial Note (To be removed by RFC Editor).</t>
      <t>This section will be removed before the document is completed, its purpose is to track the TBD code points references throughout the draft.</t>
      <dl>
        <dt>395 is TBD_1:</dt>
        <dd>
          <t>A requested cose header parameter representing the verifiable data structure used.</t>
        </dd>
        <dt>396 is TBD_2:</dt>
        <dd>
          <t>A requested cose header parameter representing the verifiable data structure parameters map (proofs map).</t>
        </dd>
      </dl>
      <t>The other codepoints are assigned from the registries established in this draft, they are therefore not marked TBD.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt>CDDL:</dt>
        <dd>
          <t>Concise Data Definition Language (CDDL) is defined in <xref target="RFC8610"/>.</t>
        </dd>
        <dt>EDN:</dt>
        <dd>
          <t>CBOR Extended Diagnostic Notation (EDN) is defined in <xref target="RFC8949"/>, where it is referred to as "diagnostic notation", and is revised in <xref target="I-D.draft-ietf-cbor-edn-literals"/>.</t>
        </dd>
        <dt>Verifiable Data Structure (VDS):</dt>
        <dd>
          <t>A data structure which supports one or more Proof Types.
This property is conceptually similar to "alg" (1), it described an algorithm used to maintain the verifiable data structure, for example a binary merkle tree algorithm.</t>
        </dd>
        <dt>Verifiable Data Structure Parameters (VDP):</dt>
        <dd>
          <t>Parameters to a verifiable data structure that are used to prove properties, such as authentication, inclusion, consistency, and freshness.
Parameters can include multiple proofs of a given type, or multiple types of proof (inclusion and consistency).
This property is conceptually similar to COSE Header Parameter "epk" (-1) or CBOR Web Token (CWT) claim "cnf" (8), it is applied to a verifiable data structure, to confirm a property.
For example an encrypted message might be decrypted using epk and a private key, a digital signature for authentication might be verified using cnf and the (CWT) claim "nonce" and "audience", and an inclusion proof for a binary merkle tree might be verified with VDP and some entry that is being tested or inclusion in the tree.</t>
        </dd>
        <dt>Proof Type:</dt>
        <dd>
          <t>A verifiable process, that proves properties of a Verifiable Data Structure.
For example, a VDS, such as a binary merkle tree, can support multiple proofs of type "inclusion" where each proof confirms that a given entry is included in a merkle root.</t>
        </dd>
        <dt>Proof Value:</dt>
        <dd>
          <t>An encoding of a Proof Type in CBOR.</t>
        </dd>
        <dt>Entry:</dt>
        <dd>
          <t>An entry in a verifiable data structure for which proofs can be derived.</t>
        </dd>
        <dt>Receipt:</dt>
        <dd>
          <t>A COSE object, as defined in <xref target="RFC9052"/>, containing the header parameters necessary to convey VDP for an associated VDS.</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 in CBOR.
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.
Differences in representations are necessary to support efficient verification, unique security or privacy properties, and for compatibility with specific implementations.
This document defines two extension points for enabling verifiable data structures with COSE and provides concrete examples for the structures and proofs defined in <xref target="RFC9162"/>.
The design of these structures is influenced by the conventions established for COSE Keys.</t>
      <t>During testing and development the experimental range <bcp14>SHOULD</bcp14> be used, unless early assignment for a provisional entry has been completed.</t>
      <section anchor="sec-cose-verifiable-data-structures">
        <name>Structures</name>
        <t>Similar to <eref target="https://www.iana.org/assignments/cose/cose.xhtml#key-type">COSE Key Types</eref>, different verifiable data structures support different algorithms.
As EC2 keys (1: 2) support both digital signature and key agreement algorithms, RFC9162_SHA256 (TBD_1 : 1) supports both inclusion and consistency proofs.</t>
        <t>This document establishes a registry of verifiable data structure algorithms, with the following initial contents:</t>
        <table align="left" anchor="cose-verifiable-data-structures">
          <name>COSE Verifiable Data Structures</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">N/A</td>
              <td align="left">0</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">RFC9162_SHA256</td>
              <td align="left">1</td>
              <td align="left">SHA256 Binary Merkle Tree</td>
              <td align="left">
                <xref target="RFC9162"/></td>
            </tr>
            <tr>
              <td align="left">EXPERIMENTAL</td>
              <td align="left">11</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">EXPERIMENTAL</td>
              <td align="left">22</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">EXPERIMENTAL</td>
              <td align="left">33</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <t>When designing new verifiable data structures, please request the next available positive integer as your requested assignment, for example:</t>
        <table align="left" anchor="cose-verifiable-data-structures-registration-guidance">
          <name>How to register new structures</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">N/A</td>
              <td align="left">0</td>
              <td align="left">N/A</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">RFC9162_SHA256</td>
              <td align="left">1</td>
              <td align="left">SHA256 Binary Merkle Tree</td>
              <td align="left">
                <xref target="RFC9162"/></td>
            </tr>
            <tr>
              <td align="left">Your name</td>
              <td align="left">TBD (requested assignment 2)</td>
              <td align="left">tbd</td>
              <td align="left">Your specification</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-cose-verifiable-data-structure-parameters">
        <name>Parameters</name>
        <t>Similar to <eref target="https://www.iana.org/assignments/cose/cose.xhtml#key-type-parameters">COSE Key Type Parameters</eref>, as EC2 keys (1: 2) keys require and give meaning to specific parameters, such as -1 (crv), -2 (x), -3 (y), -4 (d), RFC9162_SHA256 (TBD_1 : 1) supports both (-1) inclusion and (-2) consistency proofs.</t>
        <t>This document establishes a registry of verifiable data structure algorithms, with the following initial contents:</t>
        <table align="left" anchor="cose-verifiable-data-structures-parameters">
          <name>COSE Verifiable Data Structure Parameters</name>
          <thead>
            <tr>
              <th align="left">Verifiable Data Structure</th>
              <th align="left">Name</th>
              <th align="left">Label</th>
              <th align="left">CBOR Type</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">inclusion proofs</td>
              <td align="left">-1</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Proof of inclusion</td>
              <td align="left">
                <xref target="sec-rfc9162-sha256-inclusion-proof"/></td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">consistency proofs</td>
              <td align="left">-2</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Proof of append only property</td>
              <td align="left">
                <xref target="sec-rfc9162-sha256-consistency-proof"/></td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">unknown</td>
              <td align="left">-1</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">22</td>
              <td align="left">unknown</td>
              <td align="left">-1</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">33</td>
              <td align="left">unknown</td>
              <td align="left">-1</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Unknown</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <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".
Implementers should not expect interoperability across "verifiable data structures", but they should expect conceptually similar properties across the different registered proof types.
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.
Security analysis <bcp14>SHOULD</bcp14> be conducted prior to migrating to new structures to ensure the new security and privacy assumptions are acceptable for the use case.
When designing new verifiable data structure parameters (or proof types), please start with -1, and count down for each proof type supported by your verifiable data structure:</t>
        <table align="left" anchor="cose-verifiable-data-structures-parameters-registration-guidance">
          <name>How to register new parameters</name>
          <thead>
            <tr>
              <th align="left">Verifiable Data Structure</th>
              <th align="left">Name</th>
              <th align="left">Label</th>
              <th align="left">CBOR Type</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">inclusion proofs</td>
              <td align="left">-1</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Proof of inclusion</td>
              <td align="left">
                <xref target="sec-rfc9162-sha256-inclusion-proof"/></td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">consistency proofs</td>
              <td align="left">-2</td>
              <td align="left">array (of bstr)</td>
              <td align="left">Proof of append only property</td>
              <td align="left">
                <xref target="sec-rfc9162-sha256-consistency-proof"/></td>
            </tr>
            <tr>
              <td align="left">TBD (requested assignment 2)</td>
              <td align="left">new proof type</td>
              <td align="left">-1</td>
              <td align="left">tbd</td>
              <td align="left">tbd</td>
              <td align="left">Your_Specification</td>
            </tr>
            <tr>
              <td align="left">TBD (requested assignment 2)</td>
              <td align="left">new proof type</td>
              <td align="left">-2</td>
              <td align="left">tbd</td>
              <td align="left">tbd</td>
              <td align="left">Your_Specification</td>
            </tr>
            <tr>
              <td align="left">TBD (requested assignment 2)</td>
              <td align="left">new proof type</td>
              <td align="left">-3</td>
              <td align="left">tbd</td>
              <td align="left">tbd</td>
              <td align="left">Your_Specification</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="usage">
        <name>Usage</name>
        <t>This document registered a new COSE Header Parameter <tt>receipts</tt> (394) to enable this Receipts to be conveyed in the protected and unprotected headers of COSE Objects.</t>
        <t>When the receipts parameter is present, the associated verifiable data structure and verifiable data structure proofs <bcp14>MUST</bcp14> match entries present in the registries established in RFC XXXX.</t>
        <t>The following informative CDDL is provided:</t>
        <figure anchor="fig-receipts-cddl">
          <name>CDDL for a COSE Sign1 with attached receipts</name>
          <sourcecode type="cddl"><![CDATA[
Receipt = #6.18(COSE_Sign1)

Protected_Header = {
  * cose-label => cose-value
}

Unprotected_Header = {
  &(receipts: 394)  => [+ Receipt]
  * cose-label => cose-value
}

COSE_Sign1 = [
  protected   : bstr .cbor Protected_Header,
  unprotected : Unprotected_Header,
  payload     : bstr / nil,
  signature   : bstr
]
]]></sourcecode>
        </figure>
        <t>The following informative EDN is provided:</t>
        <figure anchor="fig-receipts-edn">
          <name>EDN for a COSE Sign1 with attached receipts</name>
          <sourcecode type="cbor-diag"><![CDATA[
18(                                 / COSE Sign 1                   /
    [
      h'a4012603...6d706c65',       / Protected                     /
      {                             / Unprotected                   /
        394: [                      / Receipts (2)                  /
          h'd284586c...4191f9d2'    / Receipt 1                     /
          h'c624586c...8f4af97e'    / Receipt 2                     /
        ]
      },
      nil,                          / Detached payload              /
      h'79ada558...3a28bae4'        / Signature                     /
    ]
)
]]></sourcecode>
        </figure>
        <section anchor="registration-requirements">
          <name>Registration Requirements</name>
          <t>Each specification <bcp14>MUST</bcp14> define how to encode the verifiable data structure and its parameters (also called proof types) in CBOR.
Each specification <bcp14>MUST</bcp14> define how to produce and consume the supported proof types.
See <xref target="sec-rfc-9162-verifiable-data-structure-definition"/> as an example.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-rfc-9162-verifiable-data-structure-definition">
      <name>RFC9162_SHA256</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>
      <section anchor="verifiable-data-structure">
        <name>Verifiable Data Structure</name>
        <t>The integer identifier for this Verifiable Data Structure is 1.
The string identifier for this Verifiable Data Structure is "RFC9162_SHA256".
See <xref target="cose-verifiable-data-structures"/>.
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</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.
The CBOR representation of an inclusion proof for RFC9162_SHA256 is:</t>
        <figure anchor="rfc9162-sha256-cbor-inclusion-proof">
          <name>CBOR Encoded RFC9162 Inclusion Proof</name>
          <sourcecode type="cddl"><![CDATA[
inclusion-proof = bstr .cbor [

    ; tree size at current merkle root
    tree-size: int

    ; index of leaf in tree
    leaf-index: int

    ; path from leaf to current merkle root
    inclusion-path: [ + bstr ]
]
]]></sourcecode>
        </figure>
        <section anchor="receipt-of-inclusion">
          <name>Receipt of Inclusion</name>
          <t>In a signed inclusion proof, the previous merkle tree root, maps to tree-size-1, and is a detached payload.
Profiles of proof signatures are encouraged to make additional protected header parameters mandatory, to ensure that claims are processed with their intended semantics.
One way to include this information in the COSE structure is use of the typ (type) Header Parameter, see <xref target="I-D.ietf-cose-typ-header-parameter"/> and the similar guidance provided in <xref target="I-D.ietf-cose-cwt-claims-in-headers"/>.
The protected header for an RFC9162_SHA256 inclusion proof signature is:</t>
          <figure anchor="vds-in-inclusion-receipt-protected-header">
            <name>Protected Header for a Receipt of Inclusion</name>
            <sourcecode type="cddl"><![CDATA[
protected-header-map = {
  &(alg: 1) => int
  &(vds: 395) => int
  * cose-label => cose-value
}
]]></sourcecode>
          </figure>
          <ul spacing="normal">
            <li>
              <t>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int.</t>
            </li>
            <li>
              <t>vds (label: 395): <bcp14>REQUIRED</bcp14>. verifiable data structure algorithm identifier. Value type: int.</t>
            </li>
          </ul>
          <t>The unprotected header for an RFC9162_SHA256 inclusion proof signature is:</t>
          <figure anchor="vdp-in-unprotected-header">
            <name>A Verifiable Data Structure Proofs in an Unprotected Header</name>
            <sourcecode type="cddl"><![CDATA[
inclusion-proofs = [ + inclusion-proof ]

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

unprotected-header-map = {
  &(vdp: 396) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
          </figure>
          <ul spacing="normal">
            <li>
              <t>vdp (label: 396): <bcp14>REQUIRED</bcp14>. Verifiable data structure proofs. Value type: Map.</t>
            </li>
            <li>
              <t>inclusion-proof (label: -1): <bcp14>REQUIRED</bcp14>. Inclusion proofs. Value type: Array of 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"/>.
The payload <bcp14>MUST</bcp14> be detached.
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 merkle root does not match the inclusion proof.
The EDN for a Receipt containing an inclusion proof for RFC9162_SHA256 is:</t>
          <figure anchor="rfc9162_sha256_inclusion_receipt">
            <name>Example inclusion receipt</name>
            <sourcecode type="cbor-diag"><![CDATA[
18(                                 / COSE Sign 1                   /
    [
      h'a4012604...6d706c65',       / Protected                     /
      {                             / Unprotected                   /
        396: {                      / Proofs                        /
          -1: [                     / Inclusion proofs (1)          /
            h'83080783...32568964', / Inclusion proof 1             /
          ]
        },
      },
      nil,                          / Detached payload              /
      h'2e34df43...8d74d55e'        / Signature                     /
    ]
)
]]></sourcecode>
          </figure>
          <t>The EDN for the Protected Header in the example above is:</t>
          <figure anchor="rfc9162_sha256_inclusion_receipt_header">
            <name>Example inclusion receipt decoded protected header</name>
            <sourcecode type="cbor-diag"><![CDATA[
{                                   / Protected                     /
  1: -7,                            / Algorithm                     /
  4: h'4930714e...7163316b',        / Key identifier                /
  395: 1,                           / Verifiable Data Structure     /
}
]]></sourcecode>
          </figure>
          <t>The VDS in the protected header is necessary to understand the VDP in the unprotected header.</t>
          <t>The EDN for the inclusion proof in the Unprotected Header is:</t>
          <figure anchor="rfc9162_sha256_inclusion_receipt_inclusion_proof">
            <name>Example inclusion receipt decoded inclusion proof</name>
            <sourcecode type="cbor-diag"><![CDATA[
[                                   / Inclusion proof 1             /
  8,                                / Tree size                     /
  7,                                / Leaf index                    /
  [                                 / Inclusion hashes (3)          /
     h'2a8d7dfc...15d10b22'         / Intermediate hash 1           /
     h'75f177fd...2e73a8ab'         / Intermediate hash 2           /
     h'0bdaaed3...32568964'         / Intermediate hash 3           /
  ]
]
]]></sourcecode>
          </figure>
          <t>The VDS in the protected header is necessary to understand the inclusion proof structure in the unprotected header.</t>
          <t>The inclusion proof and signature are verified in order.
First the verifiers applies the inclusion proof to a possible entry (set member) bytes.
If this process fails, the inclusion proof may have been tampered with.
If this process succeeds, the result is a merkle root, which in the attached as the COSE Sign1 payload.
Second the verifier checks the signature of the COSE Sign1.
If the resulting signature verifies, the Receipt has proved inclusion of the entry in the verifiable data structure.
If the resulting signature does not verify, the signature may have been tampered with.
It is recommended that implementations return a single boolean result for Receipt verification operations, to reduce the chance of accepting a valid signature over an invalid inclusion proof.</t>
        </section>
      </section>
      <section anchor="sec-rfc9162-sha256-consistency-proof">
        <name>Consistency Proof</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>
        <figure anchor="rfc9162_sha256_consistency_proof">
          <name>CBOR Encoded RFC9162 Consistency Proof</name>
          <sourcecode type="cddl"><![CDATA[
consistency-proof =  bstr .cbor [

    ; previous merkle root tree size
    tree-size-1: int

    ; latest merkle root tree size
    tree-size-2: int

    ; path from previous merkle root to latest merkle root.
    consistency-path: [ + bstr ]

]
]]></sourcecode>
        </figure>
        <t>Editors note: tree-size-1, could be omitted, if an inclusion-proof is always present, since the inclusion proof contains, tree-size-1.</t>
        <section anchor="receipt-of-consistency">
          <name>Receipt of Consistency</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>
          <figure anchor="vds-in-consistency-receipt-protected-header">
            <name>Protected Header for a Receipt of Consistency</name>
            <sourcecode type="cddl"><![CDATA[
protected-header-map = {
  &(alg: 1) => int
  &(vds: 395) => int
  * cose-label => cose-value
}
]]></sourcecode>
          </figure>
          <ul spacing="normal">
            <li>
              <t>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int.</t>
            </li>
            <li>
              <t>vds (label: TBD_1): <bcp14>REQUIRED</bcp14>. Verifiable data structure algorithm identifier. Value type: int.</t>
            </li>
          </ul>
          <t>The unprotected header for an RFC9162_SHA256 consistency proof signature is:</t>
          <sourcecode type="cddl"><![CDATA[
consistency-proofs = [ + consistency-proof ]

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

unprotected-header-map = {
  &(vdp: 396) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
          <ul spacing="normal">
            <li>
              <t>vdp (label: 396): <bcp14>REQUIRED</bcp14>. Verifiable data structure proofs. Value type: Map.</t>
            </li>
            <li>
              <t>consistency-proof (label: -2): <bcp14>REQUIRED</bcp14>. Consistency proofs. Value type: Array of bstr.</t>
            </li>
          </ul>
          <t>The payload of an RFC9162_SHA256 consistency proof signature is:
The latest Merkle tree hash as defined in <xref target="RFC9162"/>.
The payload <bcp14>MUST</bcp14> be attached.</t>
          <t>The EDN for a Receipt containing a consistency proof for RFC9162_SHA256 is:</t>
          <figure anchor="rfc9162_sha256_consistency_receipt">
            <name>Example consistency receipt</name>
            <sourcecode type="cbor-diag"><![CDATA[
18(                                 / COSE Sign 1                   /
    [
      h'a3012604...392b6601',       / Protected                     /
      {                             / Unprotected                   /
        396: {                      / Proofs                        /
          -2: [                     / Consistency proofs (1)        /
            h'83040682...2e73a8ab', / Consistency proof 1           /
          ]
        },
      },
      h'430b6fd7...f74c7fc4',       / Payload (Attached)            /
      h'd97befea...f30631cb'        / Signature                     /
    ]
)
]]></sourcecode>
          </figure>
          <t>The VDS in the protected header is necessary to understand the VDP in the unprotected header.</t>
          <t>The EDN for the Protected Header in the example above is:</t>
          <figure anchor="rfc9162_sha256_consistency_receipt_header">
            <name>Example consistency receipt decoded protected header</name>
            <sourcecode type="cbor-diag"><![CDATA[
{                                   / Protected                     /
  1: -7,                            / Algorithm                     /
  4: h'68747470...6d706c65',        / Key identifier                /
  395: 1,                           / Verifiable Data Structure     /
}
]]></sourcecode>
          </figure>
          <t>The EDN for the consistency proof in the Unprotected Header is:</t>
          <figure anchor="rfc9162_sha256_consistency_receipt_consistency_proof">
            <name>Example consistency receipt decoded consistency proof</name>
            <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>
          </figure>
          <t>The VDS in the protected header is necessary to understand the consistency proof structure in the unprotected header.</t>
          <t>The signature and consistency proof are verified in order.</t>
          <t>First the verifier checks the signature on the COSE Sign1.
If the verification fails, the consistency proof is not checked.
Second the consistency proof is checked by applying a previous inclusion proof, to the consistency proof.
If the verification fails, the append only property of the verifiable data structure is not assured.
This approach is specific to RFC9162_SHA256, different verifiable data structures may not support consistency proofs.
It is recommended that implementations return a single boolean result for Receipt verification operations, to reduce the chance of accepting a valid signature over an invalid consistency proof.</t>
        </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 anchor="log-length">
        <name>Log Length</name>
        <t>Some structures and proofs leak the size of the log at the time of inclusion.
In the case that a log only stores certain kinds of information, this can reveal details that could impact reputation.
For example, if a transparency log only stored breach notices, a receipt for a breach notice would reveal the number of previous breaches at the time the notice was made transparent.</t>
      </section>
      <section anchor="header-parameters">
        <name>Header Parameters</name>
        <t>Additional header parameters can reveal information about the transparency service or its log entries.
A privacy analysis <bcp14>MUST</bcp14> be performed for all mandatory fields in profiles based on this specification.</t>
      </section>
    </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 anchor="choice-of-signature-algorithms">
        <name>Choice of Signature Algorithms</name>
        <t>A security analysis <bcp14>MUST</bcp14> be performed to ensure that the digital signature algorithm <tt>alg</tt> has the appropriate strength to secure receipts.</t>
        <t>It is recommended to select signature algorithms that share cryptographic components with the verifiable data structure used, for example:
Both RFC9162_SHA256 and ES256 depend on the sha-256 hash function.</t>
      </section>
      <section anchor="validity-period">
        <name>Validity Period</name>
        <t>In some cases, receipts <bcp14>MAY</bcp14> include strict validity periods, for example, activation not too far in the future, or expiration, not too far in the past.
See the <tt>iat</tt>, <tt>nbf</tt>, and <tt>exp</tt> claims in <xref target="RFC8392"/>, for one way to accomplish this.
The details of expressing validity periods are out of scope for this document.</t>
      </section>
      <section anchor="status-updates">
        <name>Status Updates</name>
        <t>In some cases, receipts should be "revocable" or "suspendible", after being issued, regardless of their validity period.
The details of expressing statuses are out of scope for this document.</t>
      </section>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>We would like to thank
Maik Riechert,
Jon Geater,
Mike Jones,
Mike Prorock,
Ilari Liusvaara,
for their contributions (some of which substantial) to this draft and to the initial set of implementations.</t>
    </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>
            <section anchor="receipts">
              <name>Receipts</name>
              <ul spacing="normal">
                <li>
                  <t>Name: receipts</t>
                </li>
                <li>
                  <t>Label: TBD_0 (requested assignment 394)</t>
                </li>
                <li>
                  <t>Value type: array (of bstr)</t>
                </li>
                <li>
                  <t>Value registry: https://www.iana.org/assignments/cose/cose.xhtml#header-parameters</t>
                </li>
                <li>
                  <t>Description: Priority ordered list of CBOR encoded Receipts.</t>
                </li>
                <li>
                  <t>Reference: RFC XXXX</t>
                </li>
              </ul>
            </section>
            <section anchor="verifiable-data-structure-1">
              <name>Verifiable Data Structure</name>
              <ul spacing="normal">
                <li>
                  <t>Name: vds</t>
                </li>
                <li>
                  <t>Label: TBD_1 (requested assignment 395)</t>
                </li>
                <li>
                  <t>Value type: int</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 structure proofs.</t>
                </li>
                <li>
                  <t>Reference: RFC XXXX</t>
                </li>
              </ul>
            </section>
            <section anchor="verifiable-data-structure-proofs">
              <name>Verifiable Data Structure Proofs</name>
              <ul spacing="normal">
                <li>
                  <t>Name: vdp (requested assignment 396)</t>
                </li>
                <li>
                  <t>Label: TBD_2</t>
                </li>
                <li>
                  <t>Value type: map</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 structure proofs in COSE Header Parameters.</t>
                </li>
                <li>
                  <t>Reference: RFC XXXX</t>
                </li>
              </ul>
            </section>
          </section>
        </section>
        <section anchor="verifiable-data-structure-registry">
          <name>COSE Verifiable Data Structures</name>
          <t>IANA will be asked to establish a registry of verifiable data structure identifiers, named "COSE Verifiable Data Structures" to be administered under a Specification Required policy <xref target="RFC8126"/>.</t>
          <t>Template:</t>
          <ul spacing="normal">
            <li>
              <t>Name: The name of the verifiable data structure</t>
            </li>
            <li>
              <t>Value: The identifier for the verifiable data structure</t>
            </li>
            <li>
              <t>Description: A brief description of the verifiable data structure</t>
            </li>
            <li>
              <t>Reference: Where the verifiable data structure is defined</t>
            </li>
          </ul>
          <t>Initial contents: Provided in <xref target="cose-verifiable-data-structures"/></t>
          <section anchor="expert-review">
            <name>Expert Review</name>
            <t>This IANA registries is established under a Specification Required policy.</t>
            <t>This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason, so they should be given substantial latitude.</t>
            <t>Expert reviewers should take into consideration the following points:</t>
            <ul spacing="normal">
              <li>
                <t>Point squatting should be discouraged.
Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered, and that the point is likely to be used in deployments.</t>
              </li>
              <li>
                <t>Specifications are required for all point assignments.
Early Allocation is permissible, see Section 2 of <xref target="RFC7120"/>.
Provisional assignments to expired drafts <bcp14>MUST</bcp14> be removed from the registry.</t>
              </li>
              <li>
                <t>Points assigned in this registry <bcp14>MUST</bcp14> have references that match the COSE Verifiable Data Structure Parameters registry.
It is not permissible to assign points in this registry, for which no Verifiable Data Structure Parameters entries exist.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="verifiable-data-structure-parameters-registry">
          <name>COSE Verifiable Data Structure Parameters</name>
          <t>IANA will be asked to establish a registry of verifiable data structure parameters, named "COSE Verifiable Data Structure Parameters" to be administered under a Specification Required policy <xref target="RFC8126"/>.</t>
          <t>Template:</t>
          <ul spacing="normal">
            <li>
              <t>Verifiable Data Structure: The identifier for the verifiable data structure</t>
            </li>
            <li>
              <t>Name: The name of the proof type</t>
            </li>
            <li>
              <t>Label: The integer of the proof type</t>
            </li>
            <li>
              <t>CBOR Type: The cbor data type of the proof</t>
            </li>
            <li>
              <t>Description: The description of the proof type</t>
            </li>
            <li>
              <t>Reference: Where the proof type is defined</t>
            </li>
          </ul>
          <t>Initial contents: Provided in <xref target="cose-verifiable-data-structures-parameters"/></t>
          <section anchor="expert-review-1">
            <name>Expert Review</name>
            <t>This IANA registries is established under a Specification Required policy.</t>
            <t>This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason, so they should be given substantial latitude.</t>
            <t>Expert reviewers should take into consideration the following points:</t>
            <ul spacing="normal">
              <li>
                <t>Point squatting should be discouraged.
Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered, and that the point is likely to be used in deployments.</t>
              </li>
              <li>
                <t>Specifications are required for all point assignments.
Early Allocation is permissible, see Section 2 of <xref target="RFC7120"/>.
Provisional assignments to expired drafts <bcp14>MUST</bcp14> be removed from the registry.</t>
              </li>
              <li>
                <t>Points assigned in this registry <bcp14>MUST</bcp14> have references that match the COSE Verifiable Data Structures registry.
It is not permissible to assign points in this registry, for which no Verifiable Data Structure entry exists.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="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="RFC7120">
          <front>
            <title>Early IANA Allocation of Standards Track Code Points</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <date month="January" year="2014"/>
            <abstract>
              <t>This memo describes the process for early allocation of code points by IANA from registries for which "Specification Required", "RFC Required", "IETF Review", or "Standards Action" policies apply. This process can be used to alleviate the problem where code point allocation is needed to facilitate desired or required implementation and deployment experience prior to publication of an RFC, which would normally trigger code point allocation. The procedures in this document are intended to apply only to IETF Stream documents.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="100"/>
          <seriesInfo name="RFC" value="7120"/>
          <seriesInfo name="DOI" value="10.17487/RFC7120"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</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 the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <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="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="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="I-D.draft-ietf-cbor-edn-literals">
          <front>
            <title>CBOR Extended Diagnostic Notation (EDN): Application-Oriented Literals, ABNF, and Media Type</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="18" month="May" year="2024"/>
            <abstract>
              <t>   The Concise Binary Object Representation, CBOR (STD 94, RFC 8949),
   defines a "diagnostic notation" in order to be able to converse about
   CBOR data items without having to resort to binary data.

   This document specifies how to add application-oriented extensions to
   the diagnostic notation.  It then defines two such extensions for
   text representations of epoch-based date/times and of IP addresses
   and prefixes (RFC 9164).

   A few further additions close some gaps in usability.  To facilitate
   tool interoperation, this document specifies a formal ABNF definition
   for extended diagnostic notation (EDN) that accommodates application-
   oriented literals.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cbor-edn-literals-09"/>
        </reference>
        <reference anchor="I-D.ietf-cose-cwt-claims-in-headers">
          <front>
            <title>CBOR Web Token (CWT) Claims in COSE Headers</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>Mattr</organization>
            </author>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <date day="29" month="November" year="2023"/>
            <abstract>
              <t>   This document describes how to include CBOR Web Token (CWT) claims in
   the header parameters of any COSE structure.  This functionality
   helps to facilitate applications that wish to make use of CBOR Web
   Token (CWT) claims in encrypted COSE structures and/or COSE
   structures featuring detached signatures, while having some of those
   claims be available before decryption and/or without inspecting the
   detached payload.  Another use case is using CWT claims with payloads
   that are not CWT Claims Sets, including payloads that are not CBOR at
   all.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-cwt-claims-in-headers-10"/>
        </reference>
        <reference anchor="I-D.ietf-cose-typ-header-parameter">
          <front>
            <title>COSE "typ" (type) Header Parameter</title>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <date day="3" month="April" year="2024"/>
            <abstract>
              <t>   This specification adds the equivalent of the JSON Object Signing and
   Encryption (JOSE) typ (type) header parameter to CBOR Object Signing
   and Encryption (COSE).  This enables the benefits of explicit typing,
   as defined in the JSON Web Token Best Current Practices BCP, to be
   brought to COSE objects.  The syntax of the COSE type header
   parameter value is the same as the existing COSE content type header
   parameter.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-typ-header-parameter-05"/>
        </reference>
      </references>
    </references>
    <?line 687?>

<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://github.com/transmute-industries/cose?tab=readme-ov-file#scitt-receipts">COSE SCITT Receipts</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 verifiable data structure 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 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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
8iQYeQ/LZIPS9rO6ZwvRZGe6VquMwJD3MR+15OVsF9umDxvAnPLald3yAJXG
9r+1ZStOgCqMpi5ZTesjhIFNy/r4kRICYuN/UV5XJabGQcfHga1tOPNeJc1t
WvfdSgmd90V1yeWYoeEYaO9c5EUmmrsXWUon7eiMEbLRi7MKaD2stfdZTJpQ
O50IoAMp2s0B6OtdBfixz5udqFFRxj62+UZ5ITbMKt+3i/jRvNiOR/C1e334
z83S03n6TrS9o1nPbG3qtZoXr8NIW5L5Eb+X1vdgu99SVJvT4T1iEns4jT9h
HoTU+77VPn/ZNBxe4yUlIqpnxa/JLKowVJixTtWWUWXiYHI4Bsb3HonJ/+Ag
SBb+CBIhF+CTuwESzJSg1+gUKL40RKI1TcM4UD/g8CjFgg4oKUW/4YMu/Vxq
MJcgWyl8YZIy1nXojB3aoNr8HY/+LdssLNirfhyaEtVZN0bwKAGUJHFgkFhd
2ELisy4EUPYNz7vEfCCdA1tZmY623tUyTBZZKdakM0/kXKcea6SaaAPm0QH9
lFUkBZbGYeRmAVpLjsMkqFMWeHRIJ2Le4qGaIOQQkqj6DeWc3xgIMklXnVKI
BimBDvQReJ00ZlLUOEaFsovSZzMFQPLQB13xErTMnaR0FpPrSOTvHnLSDgEp
3MwVSgs+kEJSdzUXW5RfUHOqOtAfM68+Q4hiW6fpmXCh9fqMpWmEf/W4okka
qWFIZ09V2avCgYU9XWE8C890h6nVxoWQ0YR2kcA5QM7AR8uAHIoD52GrH2Hp
HxrigcyC5LW50q2OoJELCuv3mTPtRoJHZvgC957EFg0JZzAU5lRCz7HIisTg
Qi319GYwn+2GCfYAGIzdAsO5u+AesP3VDp6Wte4y/9KFrYrUDN04kExVmfPW
8xw1al9lAqi8PBRdQw1l2OgwOlNooqVlMEfkHVL7Wo+PIKM5klG9s0ayOW3b
+7CZfIBl1y9iCmMygu6clT8srfx9R/TKa/1czpGUqug3wLtlIr2shDjLsE4p
mKhjiZqCjJfCGvgRVFNWAc4WDR+FrGZ8PiSzzYyFTHpKLWU90fPYqTI5ouY9
IHXMPTRHnTOOdaGZssjZ4kdtVBzgWDudDgtxvZagEiYSKwtU0giFStMEeuHs
XRbHDj5slrPe93EVPljSKtPnQDCG1DAaRkHhrxkZ5eTHPtpE+hxxh/3fRtzh
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
jnSQqolMAypAxhI/TKsDbptbRkNUD52TOPWxIkOkgokuEv7hSfUR1jEyUjgK
bxXbOzK+9Z7L8Fa8DhVI3jTveP8JxPAnLNGedrzn+CI8ALzwZ/BN08S/7XiX
kUxDcRUusqUEsdrxtOsUUrl0IL7RgoXPFuEWxm9q5o7QZMW6Kds8BFOwmFOL
E70PwJVVdK39WhE9vDTi9MVpTRLC6hqxT3H8ix9CriH32p6J5M2DF+pOXOjj
k7rPxnOlmWm5qp9LpXO6GQ8ESTcI+Fw8hhst1E0CW0jLTXeam26fhcNe9L7p
HubUvLZ5jSa/xJLvpyzXv0XpdIEV8fA+j2Wo7jYFinaAt+LNkifivp74Nbur
kmEY9wVd/2P4AR5cFYH23TUnlfGoJrzpxlwrJ8ftr6YGz1A8unJR9ZobHJxz
Rn+IJmGiSzcGtA8MIoW3I+y1JLjXZdXGF8UR/mFRv0TjpOVkkUHSMqjgp78W
PwdV/OB+zefASbHsVEoLGbaleLBTqpmM9vsOJv9cHOrgq4vK+VrcHW6XsTyo
oHIm558FlVeJcQPbkOjWWm0ULm04E/cUpgMRv/4Qn5k7CH0ST6Z4v8xutSVm
DoY/uBZWEQUEHYkEFIh7a+eZyisB3s+kD/FT1AJ6LRUeMKc7wWlKohBsaTAQ
1l7ERWXbbxToBJBxw4JwUJ0SZd/nexsS4Sa1E33tLcssBS5LqMb1FIh2GM6a
f2tTuFtDBXofCY2VSs0x5B/n4M29xwq1PiipC63biFRchVMuIPCglateG4GV
4jK2r6jEMQydFjGio6Rcylk6NV1LdleUJLdUhCdJnSJGaBOxtcUFaSSLCdue
vU+8jQat1SzhVgVULmntGCK4gRfmYDVjOWrGS0p4cWow5XjQCyR1Unau2E62
J/C5cC/RpHiFn0X2t4XMOZPJDgBvCdJnyHrea9tT/XTZRGH0xhYpdj3VMSXN
OOejrT3S4GctqKi7jjhNEl02KFiAoY12AhngpvK5jABzwcqpu9HRh740MJoj
volWZLTSPL7Q9yyAVxMlK33tFaChRCw8x9RQjPGKGaIjkPF4NVbtPQW8ajLD
ZDk8H8wpenwy7VrT2AB5jkp543V/KB5eOdV9HbiEG/RkoHOyOQs/1VxrUr1j
Y0WzeKVv4zA3cZhjyVZ0EhhKPyvdZCLdYxYPLmXm9M3eLC6bM3u++4JqL+tK
0dXxdJwi6XHysE5NNRGFNnPvITqoXNTyIbUsfw3F5JacfJBecovGfS4NtXYw
P0sHNeu7IrPOMZKck+9Nr9laV/wq5chRd1RiyG1RVX3svNbUXgl6o54r3viU
is0tmPovHfcvHfcvHfcb1HGfU7Nxxjkps0zfODqS/i2FjsqHKTke6Hl0Jxpv
tulL0EAGmVreiDkdmNcrAtx4pyLEfQkfCawS3xP88aO5JO30zc2z/eOq2MAY
NUZxKPzLMUlYYy6tWt2AK6Qrlb20eWV0s0LtutjKztI84SCYSc4uXwxuE1zt
/gNfFpRktHFUquliJmbvf3DFf3XMZunMfKk4QW5j8rjOevMYbyDH13FzJYCJ
mG1ZqoRgNkkmJjiqqZpXCtZWr1FMy2c4OArtnPHe2DAOQlAmC9zvKa8+6SV7
tgB/XOHtvUma8WUH+u4KHGLPe7pI4UuKF31hHBwvEMGdVXt1BIaFKZGbzyjo
WGYh0XTKM22/G+GFm1p0E3DI60nIsDHUJDV3hmhusSiU+gaSGd5TjL8Ud8oy
gkd0aRCQhKSdu7FTgL5GXiZ2O1Zc6gJlNte9o9KgAd+jhrVGLZb5rroqJNx0
NhbkqY8EriVxQTwdsUF0QbafRLXiqCKc0V2SkkqcpMmC87G1TAgWqqqaEucO
XhoWCSjE+whU8TikoF+6iClBEqN+5hQNDpTrwKJapYuCeY8L47eEJOeOEXvv
7lipYMSXGJq+eENy6iBVJxlxfVq6FG4m9fEWEnqLeRHntmRZn/Qiayjpwfth
K9INMLsNXZunqBoMaKd997ibgZb1q2tN5MbhdVPtMCxuvVb2rha6GnuGp9cv
42ChjaXL2O+JbvFbpXPuAI1TGgQduNISqbgn2hyd18WHia4LwgSkcoX767PL
mxsboC2K20/CfLoY4X3yO7kZBha/0UOkKN4fwZ77EjX8THWTZRd3V59kfpjn
tjDZdtPA37y+ug95lbHSdupjRkbdPkdiCPOVPv4CNLmJWQJLFfE11/yrvlCO
aN3ws9ggukLbecMcCsLblCactwPKkCTnmXsfke5Fl/5Z6le2NnHJN7eLCWb3
BKHsjqlzJ59zJK+egmMX2Kgdc5Mnpk6EPthvyh6foLt06VY3vME1gbFm84Sv
gKIKbnQFEI7HIVTcpgrzZ4uRqZvDzgJb8DiX0zkmE5i+Onbug0ayPaftWBg/
7RHdTGtrT/txZOM84CJ12uEE3wpsAEu66Fz1wmTHXPa5Fj76ZBrqtS64TNvG
fE2fgU778x0XI0iQjfSo0iCfyZhIsPvXlunJquXBVud9J8cqY3gEU+isux1M
mt9BMDtZ6u+cJc8vbl5fmGNvufRzz3sJDcBWUwpocwvvvP/KQuwVELe9/wUM
/RJkhIUAAA==

-->

</rfc>
