<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-birkholz-scitt-architecture-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="SCITT Architecture">An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
    <seriesInfo name="Internet-Draft" value="draft-birkholz-scitt-architecture-02"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <author initials="C." surname="Fournet" fullname="Cedric Fournet">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>fournet@microsoft.com</email>
      </address>
    </author>
    <author initials="Y." surname="Deshpande" fullname="Yogesh Deshpande">
      <organization>ARM</organization>
      <address>
        <postal>
          <street>110 Fulbourn Road</street>
          <city>Cambridge</city>
          <code>CB1 9NJ</code>
          <country>UK</country>
        </postal>
        <email>yogesh.deshpande@arm.com</email>
      </address>
    </author>
    <date year="2022" month="October" day="24"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>
    <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.</t>
      <t>This memo defines a generic and scalable architecture to enable transparency across any supply chain with minimum adoption barriers for producers (who can register their claims on any Transparency Service (TS), with the guarantee that all consumers will be able to verify them) and enough flexibility to allow different implementations of Transparency Services with various auditing and compliance requirements.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-birkholz-scitt-architecture/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        scitt non-WG mailing list (<eref target="mailto:scitt@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/scitt/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/scitt/"/>.
      </t>
    </note>
  </front>
  <middle>
    <section anchor="sec-introduction">
      <name>Introduction</name>
      <t>This document describes a scalable and flexible decentralized architecture to enhance auditability and accountability in various existing and emerging supply chains.
It achieves this goal by enforcing the following complementary security guarantees:</t>
      <ol spacing="normal" type="1">
        <li>statements made by issuers about supply chain artifacts must be identifiable, authentic, and non-repudiable;</li>
        <li>such statements must be registered on a secure append-only Registry so that their provenance and history can be independently and consistently audited;</li>
        <li>issuers can efficiently prove to any other party the registration of their claims; verifying this proof ensures that the issuer is consistent and non-equivocal when making claims.</li>
      </ol>
      <t>The first guarantee is achieved by requiring issuers to sign their statements and associated metadata using a distributed public key infrastructure. The second guarantee is achieved by storing the signed statement in an immutable, append-only, transparent Registry. The last guarantee is achieved by implementing the Registry using a verifiable data structure (such as a Merkle Tree), and by requiring a TS that operates the Registry to endorse its state at the time of registration.</t>
      <t>The guarantees and techniques used in this document generalize those of Certificate Transparency <xref target="RFC9162"/>, which can be re-interpreted as an instance of this architecture for the supply chain of X.509 certificates. However, the range of use cases and applications in this document is much broader, which requires much more flexibility in how each TS implements and operates its Registry. Each service may enforce its own policy for authorizing entities to register their claims on the TS. Some TS may also enforce access control policies to limit who can audit the full Registry, or keep some information on the Registry encrypted. Nevertheless, it is critical to provide global interoperability for all TS instances as the composition and configuration of involved supply chain entities and their system components is ever changing and always in flux.</t>
      <t>A TS provides visibility into claims issued by supply chain entities and their sub-systems. These claims are called Digital Supply Chain Artifacts (DSCA).
A TS vouches for specific and well-defined metadata about these DSCAs. Some metadata is selected (and signed) by the issuer, indicating, e.g., "who issued the DSCA" or "what type of DSCA is described" or "what is the DSCA version"; whereas additional metadata is selected (and countersigned) by the TS, indicating, e.g., "when was the DSCA registered in the Registry". The DSCA contents can be opaque to the TS, if so desired: it is the metadata that must always be transparent in order to warrant trust.</t>
      <t>Transparent claims provide a common basis for holding issuers accountable for the DSCA they release and (more generally) principals accountable for auxiliary claims they make about DSCAs. Hence, issuers may register new claims about their artifacts, but they cannot delete or alter earlier claims, or hide their claims from third parties such as auditors.</t>
      <t>Trust in the TS itself is supported both by protecting their implementation (using, for instance, replication, trusted hardware, and remote attestation of systems) and by enabling independent audits of the correctness and consistency of its Registry, thereby holding the organization accountable that operates it. Unlike CT, where independent auditors are responsible for enforcing the consistency of multiple independent instances of the same global Registry, we require each TS to guarantee the consistency of its own Registry (for instance, through the use of a consensus algorithm between replicas of the Registry), but assume no consistency between different transparency services.</t>
      <t>The TS specified in this architecture caters to two types of audiences:</t>
      <ol spacing="normal" type="1">
        <li>DSCA Issuers: entities, stakeholders, and users involved in supply chain interactions that need to release DSCAs to a definable set of peers; and</li>
        <li>DSCA Consumers: entities, stakeholders, and users involved in supply chain interactions that need to access, validate, and trust DSCAs.</li>
      </ol>
      <t>DSCA Issuers rely on being discoverable and represented as the responsible parties for released DSCAs by the TS in a believable manner.
Analogously, DSCA Consumers rely on verifiable trustworthiness assertions associated with DSCAs and their processing in a believable manner.
If trust can be put into the operations that record DSCAs in a secure, append-only Registry via an online operation, the same trust can be put into a corresponding receipt that is the result of these online operations issued by the TS and that can be validated in offline operations.</t>
      <t>The TS specified in this architecture can be implemented by various different types of services in various types of languages provided via various variants of API layouts.</t>
      <t>The global interoperability enabled and guaranteed by the TS is enabled via core components (architectural constituents) that come with prescriptive requirements (that are typically hidden away from the user audience via APIs). The core components are based on the Concise Signing and Encryption standard specified in <xref target="RFC8152"/>, which is used to sign released DSCAs and to build and maintain a Merkle tree that functions as the append-only Registry for DSCAs.
The format and verification process for Registry-based transparency receipts are described in <xref target="I-D.birkholz-scitt-receipts"/>.</t>
      <section anchor="sec-requirements-notation">
        <name>Requirements Notation</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="sec-use-cases">
      <name>Use Cases</name>
      <t>This section presents representative and solution-agnostic use cases to illustrate the scope of SCITT and the processing of Digital Supply Chain Artifacts.</t>
      <section anchor="sec-software-bill-of-materials-sbom">
        <name>Software Bill of Materials (SBOM)</name>
        <t>As the ever increasing complexity of large software projects requires more modularity and abstractions to manage them, keeping track of their full Trusted Computing Base (TCB) is becoming increasingly difficult. Each component may have its own set of dependencies and libraries. Some of these dependencies are binaries, which means their TCB depends not only on their source, but also on their build environment (compilers and tool-chains). Besides, many source and binary packages are distributed through various channels and repositories that may not be trustworthy.</t>
        <t>Software Bills of Materials (SBOM) help the authors, packagers, distributors, auditors and users of software understand its provenance and who may have the ability to introduce a vulnerability that can affect the supply chain downstream. However, the usefulness of SBOM in protecting end users is limited if supply chain actors cannot be held accountable for their contents. For instance, consider a package repository for an open source operating system distribution. The operator of this repository may decide to provide a malicious version of a package only to users who live in a specific country. They can write two equivocal SBOMs for the honest and backdoored versions of the package, so that nobody outside the affected country can discover the malicious version, but victims are not aware they are being targeted.</t>
      </section>
      <section anchor="sec-confidential-computing">
        <name>Confidential Computing</name>
        <t>Confidential Computing can leverage hardware-protected trusted execution environments (TEEs) to operate cloud services that protect the confidentiality of data that they process. It relies on remote attestation, which allows the service to prove to remote users what is the hash of its software, as measured and signed by the hardware.</t>
        <t>For instance, consider a speech recognition service that implements machine learning inference using a deep neural network model. The operator of the service wants to prove to its users that the service preserves the user's privacy, that is, the submitted recordings can only be used to detect voice commands but no other purpose (such as storing the recordings or detecting mentions of brand names for advertisement purposes).
When the user connects to the TEE implementing the service, the TEE presents attestation evidence that includes a hardware certificate and a software measurement for their task; the user verifies this evidence before sending its recording.</t>
        <t>But how can users verify the software measurement for their task? And how can operators update their service, e.g., to mitigate security vulnerabilities or improve accuracy,
without first convincing all users to update the measurements they trust?</t>
        <t>A supply chain that maintains a transparent record of the successive software releases for machine-learning models and runtimes, recording both their software measurements
and their provenance (source code, build reports, audit reports,...) can provide users with the information they need to authorize these tasks, while holding the service operator accountable for the software they release for them.</t>
      </section>
      <section anchor="sec-cold-chains-for-seafood">
        <name>Cold Chains for Seafood</name>
        <t>Once seafood is caught, its quality is determined -- amongst other criteria -- via the integrity of a cold chain that ensures a regulatory perspective freshness mandating a continuous storing temperature between 1&nbsp;<contact fullname="°"/>C and 0&nbsp;<contact fullname="°"/>C (or -18&nbsp;<contact fullname="°"/>C and lower for frozen seafood). The temperature is recorded by cooling units adhering to certain compliance standards automatically. Batches of seafood can be split or aggregated before arriving in a shelf so that each unit can potentially have a potentially unique cold chain record whose transparency impacts the accuracy of the shelf-life associated with it. Especially in early links of the supply chain, Internet connection or sophisticated IT equipment are typically not available and sometimes temperature measurements are recorded manually and digital records are created in hindsight.</t>
      </section>
    </section>
    <section anchor="sec-terminology">
      <name>Terminology</name>
      <t>The terms defined in this section have special meaning in the context of Supply Chain Integrity, Transparency, and Trust throughout this document. When used in text, the corresponding terms are capitalized. To ensure readability, only a core set of terms is included in this section.</t>
      <dl>
        <dt>Artifact:</dt>
        <dd>
          <t>a physical or non-physical item that is moving along the supply chain.</t>
        </dd>
        <dt>Statement:</dt>
        <dd>
          <t>any serializable information about an Artifact. To help interpretation of Statements, they must be tagged with a media type (as specified in <xref target="RFC6838"/>).
For example, a statement may represent a Software Bill Of Materials (SBOM) that lists the ingredients of a software Artifact, or some endorsement or attestation about an Artifact.</t>
        </dd>
        <dt>Claim:</dt>
        <dd>
          <t>an identifiable and non-repudiable Statement about an Artifact made by an Issuer. In SCITT, Claims are encoded as COSE signed objects; the payload of the COSE structure contains the Statement.</t>
        </dd>
        <dt>Issuer:</dt>
        <dd>
          <t>an entity that makes Claims about Artifacts in the supply chain. The Issuer may be the owner or author of the Artifact, or an independent third party such as a reviewer or an endorser.</t>
        </dd>
        <dt>Envelope:</dt>
        <dd>
          <t>the metadata added to the Statement by the Issuer to make it a Claim.
It contains the identity of the Issuer and other information to help Verifiers identify the Artifact referred in the Statement. A Claim binds the Envelope to the Statement. In COSE, the Envelope consists of protected headers.</t>
        </dd>
        <dt>Feed:</dt>
        <dd>
          <t>an identifier chosen by the Issuer for the Artifact. For every Issuer and Feed, the Registry on a Transparency Service contains a sequence of Claims about the same Artifact.
In COSE, Feed is a dedicated header attribute in the protected header of the Envelope.</t>
        </dd>
        <dt>Registry:</dt>
        <dd>
          <t>the verifiable append-only data structure that stores Claims in a Transparency Service often referred to by the synonym log or ledger. SCITT supports multiple Registry and Receipt formats to accommodate different Transparency Service implementations, such as historical Merkle Trees and sparse Merkle Trees.</t>
        </dd>
        <dt>Transparency Service:</dt>
        <dd>
          <t>an entity that maintains and extends the Registry, and endorses its state. A Transparency Service is often referred to by its synonym Notary. A Transparency Service can be a complex distributed system, and SCITT requires the TS to provide many security guarantees about its Registry . The identity of a TS is captured by a public key that must be known by Verifiers in order to validate Receipts.</t>
        </dd>
        <dt>Receipt:</dt>
        <dd>
          <t>a Receipt is a special form of COSE countersignature for Claims that embeds cryptographic evidence that the Claim is recorded in the Registry . It consists of a Registry -specific inclusion proof, a signature by the Transparency Service of the state of the Registry , and additional metadata (contained in the countersignature protected headers) to assist in auditing.</t>
        </dd>
        <dt>Registration:</dt>
        <dd>
          <t>the process of submitting a Claim to a Transparency Service, applying its registration policy, storing it in the Registry, producing a Receipt, and returning it to the submitter.</t>
        </dd>
        <dt>Registration Policy:</dt>
        <dd>
          <t>the pre-condition enforced by the TS before registering a Claim,
based on its Envelope (notably the identity of its Issuer)
and on prior claims already in the Registry.</t>
        </dd>
        <dt>Transparent Claim:</dt>
        <dd>
          <t>a Claim that is augmented with a Receipt of its registration. A Transparent Claim remains a valid Claim (as the Receipt is carried in the countersignature), and may be registered again in a different TS.</t>
        </dd>
        <dt>Verifier:</dt>
        <dd>
          <t>an entity that consumes Transparent Claims (a specialization of Claim Consumer), verifying their proofs and inspecting their Statements, either before using their Artifacts, or later to audit their provenance on the supply chain.</t>
        </dd>
        <dt>Auditor:</dt>
        <dd>
          <t>an entity that checks the correctness and consistency of all Claim registered by a TS (a specialization of Claim Consumer).</t>
        </dd>
      </dl>
    </section>
    <section anchor="mybody">
      <name>Definition of Transparency</name>
      <t>In this document, we use a definition of transparency built over abstract notions of Registry and Receipts. Existing transparency systems such as Certificate Transparency are instances of this definition.</t>
      <t>A Claim is an identifiable and non-repudiable Statement made by an Issuer. The Issuer selects additional metadata and attaches a proof of endorsement (in most cases, a signature) using the identity key of the Issuer that binds the Statement and its metadata. Claims can be made transparent by attaching a proof of Registration by a TS, in the form of a Receipt that countersigns the Claim and witnesses its inclusion in the Registry of a TS. By extension, we may say an Artifact (e.g. a firmware binary) is transparent if it comes with one or more Transparent Claims from its author or owner, though the context should make it clear what type of Claim is expected for a given Artifact.</t>
      <t>Transparency does not prevent dishonest or compromised Issuers, but it holds them accountable: any Artifact that may be used to target a particular user that checks for Receipts must have been recorded in the tamper-proof Registry, and will be subject to scrutiny and auditing by other parties.</t>
      <t>Transparency is implemented by a Registry that provides a consistent, append-only, cryptographically verifiable, publicly available record of entries. Implementations of TS may protect their Registry using a combination of trusted hardware, replication and consensus protocols, and cryptographic evidence. A Receipt is an offline, universally-verifiable proof that an entry is recorded in the Registry. Receipts do not expire, but it is possible to append new entries that subsume older entries.</t>
      <t>Anyone with access to the Registry can independently verify its consistency and review the complete list of Claims registered by each Issuer. However, the Registry of separate Transparency Services are generally disjoint, though it is possible to take a Claim from one Registry and register it again on another (if its policy allows it), so the authorization of the Issuer and of the Registry by the Verifier of the Receipt are generally independent.</t>
      <t>Reputable Issuers are thus incentivized to carefully review their Statements before signing them into Claims. Similarly, reputable TS are incentivized to secure their Registry, as any inconsistency can easily be pinpointed by any auditor with read access to the Registry. Some Registry formats may also support consistency auditing through Receipts, that is, given two valid Receipts the TS may be asked to produce a cryptographic proof that they are consistent. Failure to produce this proof can indicate that the TS operator misbehaved.</t>
    </section>
    <section anchor="sec-architecture-overview">
      <name>Architecture Overview</name>
      <artset>
        <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="624" width="544" viewBox="0 0 544 624" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
            <path d="M 208,64 L 208,88" fill="none" stroke="black"/>
            <path d="M 208,128 L 208,144" fill="none" stroke="black"/>
            <path d="M 208,400 L 208,416" fill="none" stroke="black"/>
            <path d="M 232,288 L 232,320" fill="none" stroke="black"/>
            <path d="M 264,176 L 264,200" fill="none" stroke="black"/>
            <path d="M 264,240 L 264,256" fill="none" stroke="black"/>
            <path d="M 264,352 L 264,376" fill="none" stroke="black"/>
            <path d="M 264,432 L 264,568" fill="none" stroke="black"/>
            <path d="M 320,128 L 320,144" fill="none" stroke="black"/>
            <path d="M 320,400 L 320,416" fill="none" stroke="black"/>
            <path d="M 336,480 L 336,504" fill="none" stroke="black"/>
            <path d="M 368,256 L 368,320" fill="none" stroke="black"/>
            <path d="M 368,480 L 368,504" fill="none" stroke="black"/>
            <path d="M 384,144 L 384,192" fill="none" stroke="black"/>
            <path d="M 416,192 L 416,208" fill="none" stroke="black"/>
            <path d="M 432,320 L 432,456" fill="none" stroke="black"/>
            <path d="M 432,472 L 432,568" fill="none" stroke="black"/>
            <path d="M 488,256 L 488,320" fill="none" stroke="black"/>
            <path d="M 504,192 L 504,448" fill="none" stroke="black"/>
            <path d="M 536,144 L 536,192" fill="none" stroke="black"/>
            <path d="M 176,32 L 248,32" fill="none" stroke="black"/>
            <path d="M 176,64 L 248,64" fill="none" stroke="black"/>
            <path d="M 176,96 L 240,96" fill="none" stroke="black"/>
            <path d="M 280,96 L 352,96" fill="none" stroke="black"/>
            <path d="M 112,112 L 128,112" fill="none" stroke="black"/>
            <path d="M 176,128 L 240,128" fill="none" stroke="black"/>
            <path d="M 280,128 L 352,128" fill="none" stroke="black"/>
            <path d="M 384,144 L 536,144" fill="none" stroke="black"/>
            <path d="M 224,160 L 248,160" fill="none" stroke="black"/>
            <path d="M 280,160 L 304,160" fill="none" stroke="black"/>
            <path d="M 384,192 L 536,192" fill="none" stroke="black"/>
            <path d="M 248,208 L 280,208" fill="none" stroke="black"/>
            <path d="M 304,224 L 400,224" fill="none" stroke="black"/>
            <path d="M 248,240 L 280,240" fill="none" stroke="black"/>
            <path d="M 368,256 L 488,256" fill="none" stroke="black"/>
            <path d="M 280,272 L 360,272" fill="none" stroke="black"/>
            <path d="M 272,288 L 320,288" fill="none" stroke="black"/>
            <path d="M 112,304 L 128,304" fill="none" stroke="black"/>
            <path d="M 344,304 L 368,304" fill="none" stroke="black"/>
            <path d="M 272,320 L 320,320" fill="none" stroke="black"/>
            <path d="M 368,320 L 488,320" fill="none" stroke="black"/>
            <path d="M 224,384 L 304,384" fill="none" stroke="black"/>
            <path d="M 224,432 L 304,432" fill="none" stroke="black"/>
            <path d="M 280,464 L 320,464" fill="none" stroke="black"/>
            <path d="M 384,464 L 488,464" fill="none" stroke="black"/>
            <path d="M 296,512 L 416,512" fill="none" stroke="black"/>
            <path d="M 120,528 L 136,528" fill="none" stroke="black"/>
            <path d="M 280,544 L 400,544" fill="none" stroke="black"/>
            <path d="M 192,576 L 344,576" fill="none" stroke="black"/>
            <path d="M 368,576 L 512,576" fill="none" stroke="black"/>
            <path d="M 120,592 L 136,592" fill="none" stroke="black"/>
            <path d="M 176,608 L 328,608" fill="none" stroke="black"/>
            <path d="M 352,608 L 496,608" fill="none" stroke="black"/>
            <path d="M 176,608 L 192,576" fill="none" stroke="black"/>
            <path d="M 280,544 L 296,512" fill="none" stroke="black"/>
            <path d="M 328,608 L 344,576" fill="none" stroke="black"/>
            <path d="M 352,608 L 368,576" fill="none" stroke="black"/>
            <path d="M 400,544 L 416,512" fill="none" stroke="black"/>
            <path d="M 496,608 L 512,576" fill="none" stroke="black"/>
            <path d="M 176,32 C 167.16936,32 160,39.16936 160,48" fill="none" stroke="black"/>
            <path d="M 248,32 C 256.83064,32 264,39.16936 264,48" fill="none" stroke="black"/>
            <path d="M 176,64 C 167.16936,64 160,56.83064 160,48" fill="none" stroke="black"/>
            <path d="M 248,64 C 256.83064,64 264,56.83064 264,48" fill="none" stroke="black"/>
            <path d="M 176,96 C 167.16936,96 160,103.16936 160,112" fill="none" stroke="black"/>
            <path d="M 240,96 C 248.83064,96 256,103.16936 256,112" fill="none" stroke="black"/>
            <path d="M 280,96 C 271.16936,96 264,103.16936 264,112" fill="none" stroke="black"/>
            <path d="M 352,96 C 360.83064,96 368,103.16936 368,112" fill="none" stroke="black"/>
            <path d="M 176,128 C 167.16936,128 160,120.83064 160,112" fill="none" stroke="black"/>
            <path d="M 240,128 C 248.83064,128 256,120.83064 256,112" fill="none" stroke="black"/>
            <path d="M 280,128 C 271.16936,128 264,120.83064 264,112" fill="none" stroke="black"/>
            <path d="M 352,128 C 360.83064,128 368,120.83064 368,112" fill="none" stroke="black"/>
            <path d="M 224,160 C 215.16936,160 208,152.83064 208,144" fill="none" stroke="black"/>
            <path d="M 248,160 C 256.83064,160 264,167.16936 264,176" fill="none" stroke="black"/>
            <path d="M 280,160 C 271.16936,160 264,167.16936 264,176" fill="none" stroke="black"/>
            <path d="M 304,160 C 312.83064,160 320,152.83064 320,144" fill="none" stroke="black"/>
            <path d="M 248,208 C 239.16936,208 232,215.16936 232,224" fill="none" stroke="black"/>
            <path d="M 280,208 C 288.83064,208 296,215.16936 296,224" fill="none" stroke="black"/>
            <path d="M 400,224 C 408.83064,224 416,216.83064 416,208" fill="none" stroke="black"/>
            <path d="M 248,240 C 239.16936,240 232,232.83064 232,224" fill="none" stroke="black"/>
            <path d="M 280,240 C 288.83064,240 296,232.83064 296,224" fill="none" stroke="black"/>
            <path d="M 248,272 C 239.16936,272 232,279.16936 232,288" fill="none" stroke="black"/>
            <path d="M 248,272 C 256.83064,272 264,264.83064 264,256" fill="none" stroke="black"/>
            <path d="M 280,272 C 271.16936,272 264,264.83064 264,256" fill="none" stroke="black"/>
            <path d="M 272,288 C 263.16936,288 256,295.16936 256,304" fill="none" stroke="black"/>
            <path d="M 320,288 C 328.83064,288 336,295.16936 336,304" fill="none" stroke="black"/>
            <path d="M 272,320 C 263.16936,320 256,312.83064 256,304" fill="none" stroke="black"/>
            <path d="M 320,320 C 328.83064,320 336,312.83064 336,304" fill="none" stroke="black"/>
            <path d="M 248,336 C 239.16936,336 232,328.83064 232,320" fill="none" stroke="black"/>
            <path d="M 248,336 C 256.83064,336 264,343.16936 264,352" fill="none" stroke="black"/>
            <path d="M 280,336 C 271.16936,336 264,343.16936 264,352" fill="none" stroke="black"/>
            <path d="M 280,336 C 288.83064,336 296,328.83064 296,320" fill="none" stroke="black"/>
            <path d="M 224,384 C 215.16936,384 208,391.16936 208,400" fill="none" stroke="black"/>
            <path d="M 304,384 C 312.83064,384 320,391.16936 320,400" fill="none" stroke="black"/>
            <path d="M 224,432 C 215.16936,432 208,424.83064 208,416" fill="none" stroke="black"/>
            <path d="M 304,432 C 312.83064,432 320,424.83064 320,416" fill="none" stroke="black"/>
            <path d="M 280,464 C 271.16936,464 264,456.83064 264,448" fill="none" stroke="black"/>
            <path d="M 320,464 C 328.83064,464 336,471.16936 336,480" fill="none" stroke="black"/>
            <path d="M 384,464 C 375.16936,464 368,471.16936 368,480" fill="none" stroke="black"/>
            <path d="M 488,464 C 496.83064,464 504,456.83064 504,448" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="440,568 428,562.4 428,573.6 " fill="black" transform="rotate(90,432,568)"/>
            <path class="jump" d="M 432,472 C 438,472 438,456 432,456" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="376,504 364,498.4 364,509.6 " fill="black" transform="rotate(90,368,504)"/>
            <polygon class="arrowhead" points="368,272 356,266.4 356,277.6 " fill="black" transform="rotate(0,360,272)"/>
            <polygon class="arrowhead" points="352,304 340,298.4 340,309.6 " fill="black" transform="rotate(180,344,304)"/>
            <polygon class="arrowhead" points="344,504 332,498.4 332,509.6 " fill="black" transform="rotate(90,336,504)"/>
            <polygon class="arrowhead" points="312,224 300,218.4 300,229.6 " fill="black" transform="rotate(180,304,224)"/>
            <polygon class="arrowhead" points="272,568 260,562.4 260,573.6 " fill="black" transform="rotate(90,264,568)"/>
            <polygon class="arrowhead" points="272,376 260,370.4 260,381.6 " fill="black" transform="rotate(90,264,376)"/>
            <polygon class="arrowhead" points="272,200 260,194.4 260,205.6 " fill="black" transform="rotate(90,264,200)"/>
            <polygon class="arrowhead" points="216,88 204,82.4 204,93.6 " fill="black" transform="rotate(90,208,88)"/>
            <polygon class="arrowhead" points="144,592 132,586.4 132,597.6 " fill="black" transform="rotate(0,136,592)"/>
            <polygon class="arrowhead" points="144,528 132,522.4 132,533.6 " fill="black" transform="rotate(0,136,528)"/>
            <polygon class="arrowhead" points="136,304 124,298.4 124,309.6 " fill="black" transform="rotate(0,128,304)"/>
            <polygon class="arrowhead" points="136,112 124,106.4 124,117.6 " fill="black" transform="rotate(0,128,112)"/>
            <g class="text">
              <text x="212" y="52">Artifact</text>
              <text x="28" y="116">Issuer</text>
              <text x="208" y="116">Statement</text>
              <text x="316" y="116">Envelope</text>
              <text x="408" y="164">DID</text>
              <text x="440" y="164">Key</text>
              <text x="492" y="164">Manifest</text>
              <text x="456" y="180">(decentralized)</text>
              <text x="332" y="212">Sign</text>
              <text x="376" y="212">Claim</text>
              <text x="264" y="228">Claim</text>
              <text x="428" y="276">Transparency</text>
              <text x="52" y="308">Transparency</text>
              <text x="296" y="308">Receipt</text>
              <text x="428" y="308">Registry</text>
              <text x="72" y="324">Service</text>
              <text x="264" y="404">Transparent</text>
              <text x="264" y="420">Claim</text>
              <text x="36" y="532">Verifier</text>
              <text x="324" y="532">Verify</text>
              <text x="376" y="532">Claim</text>
              <text x="32" y="596">Auditor</text>
              <text x="224" y="596">Collect</text>
              <text x="292" y="596">Receipts</text>
              <text x="396" y="596">Replay</text>
              <text x="460" y="596">Registry</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
                    .----------.
                   |  Artifact  |
                    '----+-----'
                         v
                    .----+----.  .----------.
Issuer       -->   | Statement ||  Envelope  |
                    '----+----'  '-----+----'
                         |             |       +------------------+
                          '----. .----'        | DID Key Manifest |
                                |              | (decentralized)  |
                                v              +---+----------+---+
                             .--+--.   Sign Claim  |          |
                            | Claim +<------------'           |
                             '--+--'                          |
                                |            +--------------+ |
                             .-' '---------->+ Transparency | |
                            |   .-------.    |              | |
Transparency -->            |  | Receipt |<--+   Registry   | |
     Service                |   '---+---'    +-------+------+ |
                             '-. .-'                 |        |
                                |                    |        |
                                v                    |        |
                          .-+-------+-.              |        |
                         | Transparent |             |        |
                         |    Claim    |             |        |
                          '-----+-----'              |        |
                                |                    |        |
                                |'------.     .------)-------'
                                |        |   |       |
                                |        v   v       |
                                |   .----+---+-----. |
Verifier      -->               |  / Verify Claim /  |
                                | '--------------'   |
                                v                    v
                       .--------+---------.  .-------+---------.
Auditor       -->     / Collect Receipts /  / Replay Registry /
                     '------------------'  '-----------------'
]]></artwork>
      </artset>
      <t>The SCITT architecture consists of a very loose federation of Transparency Services, and a set of common formats and protocols for issuing, registering and auditing Claims.
In order to accommodate as many TS implementations as possible, this document only specifies the format of Claims (which must be used by all Issuers) and a very thin wrapper format for Receipts, which specifies the TS identity and the Registry algorithm. Most of the details of the Receipt's contents are specific to the Registry algorithm. The <xref target="I-D.birkholz-scitt-receipts"/> document defines two initial Registry algorithms (for historical and sparse Merkle Trees), but other Registry formats (such as blockchains, or hybrid historical and indexed Merkle Trees) may be proposed later.</t>
      <t>In this section, we describe at a high level the three main roles and associated processes in SCITT: Issuers and the Claim issuance process, transparency Registry and the Claim Registration process, and Verifiers and the Receipt validation process.</t>
      <section anchor="sec-claim-issuance-and-registration">
        <name>Claim Issuance and Registration</name>
        <section anchor="sec-issuer-identity">
          <name>Issuer Identity</name>
          <t>Before an Issuer is able to produce Claims, it must first create its <eref target="https://www.w3.org/TR/did-core">decentralized identifier</eref> (also known as a DID).
A DID can be <em>resolved</em> into a <em>key manifest</em> (a list of public keys indexed by a <em>key identifier</em>) using many different DID methods.</t>
          <t>Issuers <bcp14>MAY</bcp14> choose the DID method they prefer, but with no guarantee that all TS will be able to register their Claim. To facilitate interoperability, all Transparency Service implementations <bcp14>SHOULD</bcp14> support the <tt>did:web</tt> method from [https://w3c-ccg.github.io/did-method-web/]. For instance, if the Issuer publishes its manifest at <tt>https://sample.issuer/user/alice/did.json</tt>, the DID of the Issuer is <tt>did:web:sample.issuer:user:alice</tt>.</t>
          <t>Issuers <bcp14>SHOULD</bcp14> use consistent decentralized identifiers for all their Artifacts, to simplify authorization by Verifiers and auditing. They <bcp14>MAY</bcp14> update their DID manifest, for instance to refresh their signing keys or algorithms, but they <bcp14>SHOULD NOT</bcp14> remove or change any prior keys unless they intend to revoke all Claims issued with those keys. This DID appears in the Issuer header of the Claim's Envelope, while the version of the key from the manifest used to sign the Claim is written in the <tt>kid</tt> header.</t>
        </section>
        <section anchor="sec-naming-artifacts">
          <name>Naming Artifacts</name>
          <t>Many Issuers issue Claims about different Artifacts under the same DID, so it is important for everyone to be able to immediately recognize by looking at the Envelope of a Claim what Artifact it is referring to. This information is stored in the Feed header of the Envelope. Issuers <bcp14>MAY</bcp14> use different signing keys (identified by <tt>kid</tt> in the resolved key manifest) for different Artifacts, or sign all Claims under the same key.</t>
        </section>
        <section anchor="sec-claim-metadata">
          <name>Claim Metadata</name>
          <t>Besides Issuer, Feed and kid, the only other mandatory metadata in the Claim is the type of the Payload, indicated in the <tt>cty</tt> Envelope header.
However, this set of mandatory metadata is not sufficient to express many important Registration policies. For example, a Registry may only allow a Claim to be registered if it was signed recently. While the Issuer is free to add any information in the payload of the Claim, the TS (and most of its auditor) can only be expected to interpret information in the Envelope.</t>
          <t>Such metadata, meant to be interpreted by the TS during Registration policy evaluation, should be added to the <tt>reg_info</tt> header. While the header <bcp14>MUST</bcp14> be present in all Claims, its contents consist of a map of named attributes. Some attributes (such as the Issuer's timestamp) are standardized with a defined type, to help uniformize their semantics across TS. Others are completely customizable and may have arbitrary types. In any case, all attributes are optional so the map <bcp14>MAY</bcp14> be empty.</t>
        </section>
      </section>
      <section anchor="sec-transparency-service-ts">
        <name>Transparency Service (TS)</name>
        <t>The role of TS can be decomposed into several major functions. The most important is maintaining a Registry, the verifiable data structure that records Claims, and enforcing a Registration policy. It also maintains a service key, which is used to endorse the state of the Registry in Receipts. All TS <bcp14>MUST</bcp14> expose standard endpoints for Registration of Claims and Receipt issuance, which is described in <xref target="sec-messages"/>. Each TS also defines its Registration policy, which <bcp14>MUST</bcp14> apply to all entries in the Registry.</t>
        <t>The combination of Registry, identity, Registration policy evaluation, and Registration endpoint constitute the trusted part of the TS. Each of these components <bcp14>SHOULD</bcp14> be carefully protected against both external attacks and internal misbehavior by some or all of the operators of the TS. For instance, the code for policy evaluation, Registry extension and endorsement may be protected by running in a TEE; the Registry may be replicated and a consensus algorithm such as Practical Byzantine Fault Tolerance (pBFT <xref target="PBFT"/>) may be used to protect against malicious or vulnerable replicas; threshold signatures may be use to protect the service key, etc.</t>
        <t>Beyond the trusted components, Transparency Services may operate additional endpoints for auditing, for instance to query for the history of Claims made by a given Issuer and Feed. Implementations of TS <bcp14>SHOULD</bcp14> avoid using the service identity and extending the Registry in auditing endpoints; as much as practical, the Registry <bcp14>SHOULD</bcp14> contain enough evidence to re-construct verifiable proofs that the results returned by the auditing endpoint are consistent with a given state of the Registry.</t>
        <section anchor="sec-service-identity-remote-attestation-and-keying">
          <name>Service Identity, Remote Attestation, and Keying</name>
          <t>Every TS <bcp14>MUST</bcp14> have a public service identity,
associated with public/private key pairs for signing on behalf of the service. In particular, this identity must be known by Verifiers when validating a Receipt</t>
          <t>This identity should be stable for the lifetime of the service, so that all Receipts remain valid and consistent. The TS operator <bcp14>MAY</bcp14> use a distributed identifier as their public service identity if they wish to rotate their keys, if the Registry algorithm they use for their Receipt supports it. Other types of cryptographic identities, such as parameters for non-interactive zero-knowledge proof systems, may also be used in the future.</t>
          <t>The TS <bcp14>SHOULD</bcp14> provide evidence that it is securely implemented and operated, enabling remote authentication of the hardware platforms and/or software TCB that run the TS. This additional evidence <bcp14>SHOULD</bcp14> be recorded in the Registry and presented on demand to Verifiers and auditors.</t>
          <t>For example, consider a TS implemented using a set of replicas, each running within its own hardware-protected trusted execution environments (TEEs). Each replica <bcp14>SHOULD</bcp14> provide a recent attestation report for its TEE, binding their hardware platform to the software that runs the Transparency Service, the long-term public key of the service, and the key used by the replica for signing Receipts. This attestation evidence <bcp14>SHOULD</bcp14> be supplemented with transparency Receipts for the software and configuration of the service, as measured in its attestation report.</t>
        </section>
        <section anchor="sec-registration-policies">
          <name>Registration Policies</name>
          <t>A TS that accepts to register any valid claim offered by an issuer would end up providing only limited value to verifiers. In consequence, a baseline transparency guarantee policing the registration of claims is required to ensure completeness of audit, which can help detect equivocation.
Most advanced SCITT scenarios rely on the TS performing additional domain-specific checks before a claim is accepted: TS may only allow trusted authenticated users to register claims, TS may try to check that a new claim is consistent with previous claims from the same issuers or that claims are registered in the correct order and cannot be re-played; some TS may even interpret and validate the payload of claims.</t>
          <t>In general, registration policies are applied at the discretion of the TS, and verifiers use receipts as witnesses that confirm that the registration policy of the TS was satisfied at the time claim registration. TS implementations <bcp14>SHOULD</bcp14> make their full registration policy public and auditable, e.g. by recording stateful policy inputs at evaluation time in the registry to ensure that policy can be independently validated later.
From an interoperability point of view, the policy that was applied by the TS is opaque to the verifier, who is forced to trust the associated registration policy. If the policy of the TS evolves over time, or is different across issuers, the guarantee derived from receipt validation may not be uniform across all claims over time.</t>
          <t>To help verifiers interpret the semantics of claim registration, SCITT defines a standard mechanism for signalling in the claim itself which policies have been applied by the TS from a defined set
of registration policies with standardized semantics. Each policy that is expected to be enforced by the TS is represented by an entry in the registration policy info map (<tt>reg_info</tt>) in the envelope. The key of the map corresponds to the name of the policy, while its value (including its type) is policy-specific. For instance, the <tt>register_by</tt> policy defines the maximum timestamp by which a claim can be registered, hence the associated value contains an unsigned integer.</t>
          <t>While this design ensures that all verifiers get the same guarantee regardless of where a claim is registered, its main downside is that it requires the issuer to include the necessary policies in the envelope when the claim is signed. Furthermore, it makes it impossible to register the same claim on two different TS if their required registration policies are incompatible.</t>
          <ul empty="true">
            <li>
              <t><strong>Editor's note</strong></t>
              <t>The technical design for signalling and verifying registration policies is a work in progress.
An alternative design would be to include the registration policies in the receipt/countersignature rather than in the envelope. This improves the portability of claims but requires the verifier to be more aware of the particular policies at the TS where the claim is registered.</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-registry-security-requirements">
          <name>Registry Security Requirements</name>
          <t>There are many different candidate verifiable data structures that may be used to implement the Registry, such as chronological Merkle Trees, sparse/indexed Merkle Trees, full blockchains, and many other variants. We only require the Registry to support concise Receipts (i.e. whose size grows at most logarithmically in the number of entries in the Registry). This does not necessarily rule out blockchains as a Registry, but may necessitate advanced Receipt schemes that use arguments of knowledge and other verifiable computing techniques.</t>
          <t>Since the details of how to verify a Receipt are specific to the data structure, we do not specify any particular Registry format in this document. Instead, we propose two initial formats for Registry in <xref target="I-D.birkholz-scitt-receipts"/> using historical and sparse Merkle Trees. Beyond the format of Receipts, we require generic properties that should be satisfied by the components in the TS that have the ability to write to the Registry.</t>
          <section anchor="sec-finality">
            <name>Finality</name>
            <t>The Registry is append-only: once a Claim is registered, it cannot be modified, deleted, or moved. In particular, once a Receipt is returned for a given Claim, the Claim and any preceding entry in the Registry become immutable, and the Receipt provides universally-verifiable evidence of this property.</t>
          </section>
          <section anchor="sec-consistency">
            <name>Consistency</name>
            <t>There is no fork in the Registry: everyone with access to its contents sees the same sequence of entries, and can check its consistency with any Receipts they have collected.
TS implementations <bcp14>SHOULD</bcp14> provide a mechanism to verify that the state of the Registry encoded in an old Receipt is consistent with the current Registry state.</t>
          </section>
          <section anchor="sec-replayability-and-auditing">
            <name>Replayability and Auditing</name>
            <t>Everyone with access to the Registry can check the correctness of its contents. In particular,</t>
            <ul spacing="normal">
              <li>the TS defines and enforces deterministic Registration policies that can be re-evaluated based solely on the contents of the Registry at the time of registraton, and must then yield the same result.</li>
              <li>The ordering of entries, their cryptographic contents, and the Registry governance may be non-deterministic, but they must be verifiable.</li>
              <li>The TS <bcp14>SHOULD</bcp14> store evidence about the resolution of distributed identifiers into manifests.</li>
              <li>The TS <bcp14>MAY</bcp14> additionally support verifiability of client authentication and access control.</li>
            </ul>
          </section>
          <section anchor="sec-governance-and-bootstrapping">
            <name>Governance and Bootstrapping</name>
            <t>The TS needs to support governance, with well-defined procedures for allocating resources to operate the Registry (e.g., for provisioning trusted hardware and registering their attestation materials in the Registry) and for updating its code (e.g., relying on Transparent Claims about code updates, secured on the Registry itself, or on some auxiliary TS).</t>
            <t>Governance procedures, their auditing, and their transparency are implementation specific. The TS <bcp14>SHOULD</bcp14> document them.</t>
            <ul spacing="normal">
              <li>Governance may be based on a consortium of members that are jointly responsible for the TS, or automated based on the contents of an auxiliary governance TS.</li>
              <li>Governance typically involves additional records in the Registry to enable its auditing. Hence, the Registry may contain both Transparent Claims and governance entries.</li>
              <li>Issuers, Verifiers, and third-party auditors may review the TS governance before trusting the service, or on a regular basis.</li>
            </ul>
          </section>
        </section>
      </section>
      <section anchor="validation">
        <name>Verifying Transparent Claims</name>
        <t>For a given Artifact, Verifiers take as trusted inputs:</t>
        <ol spacing="normal" type="1">
          <li>the distributed identifier of the Issuer (or its resolved key manifest),</li>
          <li>the expected name of the Artifact (i.e. the Feed),</li>
          <li>the list of service identities of trusted TS.</li>
        </ol>
        <t>When presented with a Transparent Claim for the Artifact, they verify its Issuer identity, signature, and Receipt.
They may additionally apply a validation policy based on the protected headers present both in the Envelope or in the countersignature and the Statement itself, which may include security-critical Artifact-specific details.</t>
        <t>Some Verifiers may systematically resolve the Issuer DID to fetch their latest DID document. This strictly enforces the revocation of compromised keys: once the Issuer has updated its document to remove a key identifier, all Claims signed with this <tt>kid</tt> will be rejected. However, others may delegate DID resolution to a trusted third party and/or cache its results.</t>
        <t>Some Verifiers may decide to skip the DID-based signature verification, relying on the TS's Registration policy and the scrutiny of other Verifiers. Although this weakens their guarantees against key revocation, or against a corrupt TS, they can still keep the Receipt and blame the Issuer or the TS at a later point.</t>
      </section>
    </section>
    <section anchor="sec-claim-issuance-registration-and-verification">
      <name>Claim Issuance, Registration, and Verification</name>
      <t>This section details the interoperability requirements for implementers of Claim issuance and validation libraries, and of Transparency Services.</t>
      <section anchor="sec-envelope-and-claim-format">
        <name>Envelope and Claim Format</name>
        <t>The formats of Claims and Receipts are based on CBOR Object Signing and Encryption (COSE). The choice of CBOR is a trade-off between safety (in particular, non-malleability: each Claim has a unique serialization), ease of processing and availability of implementations.</t>
        <t>At a high-level that is the context of this architecture, a Claim is a COSE single-signed object (i.e. <tt>COSE_Sign1</tt>) that contains the correct set of protected headers. Although Issuers and relays may attach unprotected headers to Claims, Transparency Services and Verifiers <bcp14>MUST NOT</bcp14> rely on the presence or value of additional unprotected headers in Claims during Registration and validation.</t>
        <t>All Claims <bcp14>MUST</bcp14> include the following protected headers:</t>
        <ul spacing="normal">
          <li>algorithm (label: <tt>1</tt>): Asymmetric signature algorithm used by the Claim Issuer, as an integer, for example <tt>-35</tt> for ECDSA with SHA-384, see <eref target="https://www.iana.org/assignments/cose/cose.xhtml">COSE Algorithms registry</eref>;</li>
          <li>Issuer (label: <tt>TBD</tt>, temporary: <tt>391</tt>): DID (Decentralized Identifier, see <eref target="https://www.w3.org/TR/did-core/">W3C Candidate Recommendation</eref>) of the signer, as a string, for example <tt>did:web:example.com</tt>;</li>
          <li>Feed (label: <tt>TBD</tt>, temporary: <tt>392</tt>): the Issuer's name for the Artifact, as a string;</li>
          <li>payload type (label: <tt>3</tt>): Media type of payload as a string, for example <tt>application/spdx+json</tt></li>
          <li>Registration policy info (label: <tt>TBD</tt>, temporary: <tt>393</tt>): a map of additional attributes to help enforce Registration policies;</li>
          <li>Key ID (label: <tt>4</tt>): Key ID, as a bytestring.</li>
        </ul>
        <t>Additionally, Claims <bcp14>MAY</bcp14> carry the following unprotected headers:</t>
        <ul spacing="normal">
          <li>Receipts (label: <tt>TBD</tt>, temporary: <tt>394</tt>): Array of Receipts, defined in <xref target="I-D.birkholz-scitt-receipts"/></li>
        </ul>
        <t>In CDDL <xref target="RFC8610"/> notation, the Envelope is defined as follows:</t>
        <sourcecode type="cddl">
SCITT_Envelope = COSE_Sign1_Tagged

COSE_Sign1_Tagged = #6.18(COSE_Sign1)

COSE_Sign1 = [
  protected : bstr .cbor Protected_Header,
  unprotected : Unprotected_Header,
  payload : bstr,
  signature : bstr
]

Reg_Info = {
  ? "register_by": uint,
  ? "sequence_no": uint,
  ? "issuance_ts": uint,
  * tstr =&gt; any
}

; All protected headers are mandatory, to protect against faulty implementations of COSE
; that may accidentally read a missing protected header from the unprotected headers.
Protected_Header = {
  1 =&gt; int               ; algorithm identifier
  3 =&gt; tstr              ; payload type
  4 =&gt; bstr              ; Key ID
  ; TBD, Labels are temporary
  391 =&gt; tstr            ; DID of Issuer
  392 =&gt; tstr            ; Feed
  393 =&gt; Reg_Info        ; Registration policy info
}

Unprotected_Header = {
  ; TBD, Labels are temporary
  ? 394 =&gt; [+ SCITT_Receipt]
}
</sourcecode>
      </section>
      <section anchor="sec-claim-issuance">
        <name>Claim Issuance</name>
        <t>There are many types of Statements (such as SBOMs, malware scans, audit reports, policy definitions) that Issuers may want to turn into Claims. The Issuer must first decide on a suitable format to serialize the Statement, such as:</t>
        <ul spacing="normal">
          <li>JSON-SPDX</li>
          <li>CBOR-SPDX</li>
          <li>SWID</li>
          <li>CoSWID</li>
          <li>CycloneDX</li>
          <li>in-toto</li>
          <li>SLSA</li>
        </ul>
        <t>Once the Statement is serialized with the correct content type, the Issuer should fill in the attributes for the Registration policy information header. From the Issuer's perspective, using attributes from named policies ensures that the Claim may only be registered on Transparency Services that implement the associated policy. For instance, if a Claim is frequently updated, and it is important for Verifiers to always consider the latest version, Issuers <bcp14>SHOULD</bcp14> use the <tt>sequence_no</tt> or <tt>issuer_ts</tt> attributes.</t>
        <t>Once all the Envelope headers are set, the Issuer <bcp14>MAY</bcp14> use a standard COSE implementation to produce the serialized Claim (the SCITT tag of <tt>COSE_Sign1_Tagged</tt> is outside the scope of COSE, and used to indicate that a signed object is a Claim).</t>
      </section>
      <section anchor="sec-standard-registration-policies">
        <name>Standard registration policies</name>
        <ul empty="true">
          <li>
            <t><strong>Editor's note</strong></t>
            <t>The technical design for signalling and verifying registration policies is a work in progress.
We expect that once the formats and semantics of the registration policy headers are finalized, standardized policies may be moved to a separate draft.
For now, we inline some significant policies to illustrate the most common use cases.</t>
          </li>
        </ul>
        <t>TS implementations <bcp14>MUST</bcp14> indicate their support for registration policies and <bcp14>MUST</bcp14> check that all the policies indicated as defined in the <tt>reg_info</tt> map are supported and are satisfied before a claim can be registered. Any unsupported claims <bcp14>MUST</bcp14> be indicated separately and corresponding unknown policy entries in the map of a claim <bcp14>MUST</bcp14> be rejected. This is to ensure that all verifiers get the same guarantee out of the registration policies regardless of where it is registered.</t>
        <table anchor="tbl-initial-named-policies">
          <name>An Initial Set of Named Policies</name>
          <thead>
            <tr>
              <th align="left">Policy Name</th>
              <th align="left">Required  attributes</th>
              <th align="left">Implementation</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TimeLimited</td>
              <td align="left">
                <tt>register_by: uint</tt></td>
              <td align="left">Returns true if now () &lt; register_by at registration time. The ledger <bcp14>MUST</bcp14> store the ledger time at registration along with the claim, and <bcp14>SHOULD</bcp14> indicate it in receipts</td>
            </tr>
            <tr>
              <td align="left">Sequential</td>
              <td align="left">
                <tt>sequence_no: uint</tt></td>
              <td align="left">First, lookup in the ledger for claims with the same issuer and feed. If at least one is found, returns true if and only if the <tt>sequence_no</tt> of the new claim is the highest <tt>sequence_no</tt> in the existing claims incremented by one. Otherwise, returns true if and only if <tt>sequence_no = 0</tt>.</td>
            </tr>
            <tr>
              <td align="left">Temporal</td>
              <td align="left">
                <tt>issuance_ts: uint</tt></td>
              <td align="left">Returns true if and only if there is no claim in the ledger with the same issuer and feed with a greater <tt>issuance_ts</tt></td>
            </tr>
            <tr>
              <td align="left">NoReplay</td>
              <td align="left">None</td>
              <td align="left">Returns true if and only if the claim doesn't already appear in the ledger</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sec-registering-signed-claims">
        <name>Registering Signed Claims</name>
        <t>The same Claim may be independently registered in multiple TS. To register a Claim, the service performs the following steps:</t>
        <ol spacing="normal" type="1">
          <li>Client authentication. This is implementation-specific, and <bcp14>MAY</bcp14> be unrelated to the Issuer identity. Claims may be registered by a different party than their Issuer.</li>
          <li>Issuer identification. The TS <bcp14>MUST</bcp14> store evidence of the DID resolution for the Issuer protected header of the Envelope and the resolved key manifest at the time of Registration for auditing. This <bcp14>MAY</bcp14> require that the service resolve the Issuer DID and record the resulting document, or rely on a cache of recent resolutions.</li>
          <li>Envelope signature verification, as described in COSE signature, using the signature algorithm and verification key of the Issuer DID document.</li>
          <li>Envelope validation. The service <bcp14>MUST</bcp14> check that the Envelope has a payload and the protected headers listed above. The service <bcp14>MAY</bcp14> additionally verify the payload format and content.</li>
          <li>Apply Registration policy: for named policies, the TS should check that the required Registration info attributes are present in the Envelope and apply the check described in Table 1. A TS <bcp14>MUST</bcp14> reject Claims that contain an attribute used for a named policy that is not enforced by the service. Custom Claims are evaluated given the current Registry state and the entire Envelope, and <bcp14>MAY</bcp14> use information contained in the attributes of named policies.</li>
          <li>Commit the new Claim to the Registry</li>
          <li>Sign and return the Receipt.</li>
        </ol>
        <t>The last two steps <bcp14>MAY</bcp14> be shared between a batch of Claims recorded in the Registry.</t>
        <t>The service <bcp14>MUST</bcp14> ensure that the Claim is committed before releasing its Receipt, so that it can always back up the Receipt by releasing the corresponding entry in the Registry. Conversely, the service <bcp14>MAY</bcp14> re-issue Receipts for the Registry content, for instance after a transient fault during Claim Registration.</t>
      </section>
      <section anchor="sec-validation-of-transparent-claims">
        <name>Validation of Transparent Claims</name>
        <t>This section provides additional implementation considerations, the high-level validation algorithm is described in <xref target="validation"/>, with the Registry-specific details of checking Receipts are covered in <xref target="I-D.birkholz-scitt-receipts"/>.</t>
        <t>Before checking a Claim, the Verifier must be configured with one or more identities of trusted Transparency Services. If more than one service is configured, the Verifier <bcp14>MUST</bcp14> return which service the Claim is registered on.</t>
        <t>In some scenarios, the Verifier already expects a specific Issuer and Feed for the Claim, while in other cases they are not known in advance and can be an output of validation. Verifiers <bcp14>SHOULD</bcp14> offer a configuration to decide if the Issuer's signature should be locally verified (which may require a DID resolution, and may fail if the manifest is not available or if the key is revoked), or if it should trust the validation done by the TS during Registration.</t>
        <t>Some Verifiers <bcp14>MAY</bcp14> decide to locally re-apply some or all of the Registration policies if they have limited trust in the TS. In addition, Verifiers <bcp14>MAY</bcp14> apply arbitrary validation policies after the signature and Receipt have been checked. Such policies may use as input all information in the Envelope, the Receipt, and the payload, as well as any local state.</t>
        <t>Verifiers <bcp14>SHOULD</bcp14> offer options to store or share Receipts in case they are needed to audit the TS in case of a dispute.</t>
      </section>
    </section>
    <section anchor="sec-federation">
      <name>Federation</name>
      <t>Editor's note: This section needs work.</t>
      <t>Multiple, independently-operated transparency services can help secure distributed supply chains, without the need for a single, centralized service trusted by all parties. For example, multiple SCITT instances may be governed and operated by different organizations that do not trust one another.</t>
      <t>This may involve registering the same Claims at different transparency services, each with their own purpose and registration policy. 
This may also involve attaching multiple Receipts to the same Claims, each Receipt endorsing the Issuer signature and a subset of prior Receipts, and each TS verifying prior Receipts as part of their registration policy.</t>
      <t>For example, 
a supplier TS may provide a complete, authoritative Registry for some kind of Claims, whereas a consumer TS may collect different kinds of Claims 
to ensure complete auditing for a specific use case, and possibly require additional reviews before registering some of these claims.</t>
    </section>
    <section anchor="sec-transparency-service-api">
      <name>Transparency Service API</name>
      <t>Editor's Note: This may be moved to appendix.</t>
      <section anchor="sec-messages">
        <name>Messages</name>
        <section anchor="sec-register-signed-claims">
          <name>Register Signed Claims</name>
          <section anchor="sec-request">
            <name>Request</name>
            <artwork><![CDATA[
POST <Base URL>/entries
]]></artwork>
            <t>Body: SCITT COSE_Sign1 message</t>
          </section>
          <section anchor="sec-response">
            <name>Response</name>
            <t>One of the following:</t>
            <ul spacing="normal">
              <li>HTTP Status <tt>201</tt> - Registration was tentatively successful pending service consensus.</li>
              <li>
                <t>HTTP Status <tt>400</tt> - Registration was unsuccessful.
                </t>
                <ul spacing="normal">
                  <li>Error code <tt>AwaitingDIDResolutionTryLater</tt></li>
                  <li>Error code <tt>InvalidInput</tt></li>
                </ul>
              </li>
            </ul>
            <t>[TODO] Use 5xx for AwaitingDIDResolutionTryLater</t>
            <t>The <tt>201</tt> response contains the <tt>x-ms-ccf-transaction-id</tt> HTTP header which can be used to retrieve the Registration Receipt with the given transaction ID. [TODO] this has to be made generic</t>
            <t>[TODO] probably a bad idea to define a new header, or is it ok? can we register a new one? https://www.iana.org/assignments/http-fields/http-fields.xhtml</t>
            <t>The <tt>400</tt> response has a <tt>Content-Type: application/json</tt> header and a body containing details about the error:</t>
            <t><tt>json
{
  "error": {
    "code": "&lt;error code&gt;",
    "message": "&lt;message&gt;"
  }
}
</tt></t>
            <t><tt>AwaitingDIDResolutionTryLater</tt> means the service does not have an up-to-date DID document of the DID referenced in the Signed Claims but is performing or will perform a DID resolution after which the client may retry the request. The response may contain the HTTP header <tt>Retry-After</tt> to inform the client about the expected wait time.</t>
            <t><tt>InvalidInput</tt> means either the Signed Claims message is syntactically malformed, violates the signing profile (e.g. signing algorithm), or has an invalid signature relative to the currently resolved DID document.</t>
          </section>
        </section>
        <section anchor="sec-retrieve-registration-receipt">
          <name>Retrieve Registration Receipt</name>
          <section anchor="sec-request-1">
            <name>Request</name>
            <artwork><![CDATA[
GET <Base URL>/entries/<Transaction ID>/receipt
]]></artwork>
          </section>
          <section anchor="sec-response-1">
            <name>Response</name>
            <t>One of the following:</t>
            <ul spacing="normal">
              <li>HTTP Status <tt>200</tt> - Registration was successful and the Receipt is returned.</li>
              <li>
                <t>HTTP Status <tt>400</tt> - Transaction exists but does not correspond to a Registration Request.
                </t>
                <ul spacing="normal">
                  <li>Error code <tt>TransactionMismatch</tt></li>
                </ul>
              </li>
              <li>
                <t>HTTP Status <tt>404</tt> - Transaction is pending, unknown, or invalid.
                </t>
                <ul spacing="normal">
                  <li>Error code <tt>TransactionPendingOrUnknown</tt></li>
                  <li>Error code <tt>TransactionInvalid</tt></li>
                </ul>
              </li>
            </ul>
            <t>The <tt>200</tt> response contains the SCITT_Receipt in the body.</t>
            <t>The <tt>400</tt> and <tt>404</tt> responses return the error details as described earlier.</t>
            <t>The retrieved Receipt may be embedded in the corresponding COSE_Sign1 document in the unprotected header, see TBD.</t>
            <t>[TODO] There's also the <tt>GET &lt;Base URL&gt;/entries/&lt;Transaction ID&gt;</tt> endpoint which returns the submitted COSE_Sign1 with the Receipt already embedded. Is this useful?</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="sec-privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Unless advertised by the TS, every Issuer should treat its Claims as public. In particular, their Envelope and Statement should not carry any private information in plaintext.</t>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>On its own, verifying a Transparent Claim does not guarantee that its Envelope or contents are trustworthy---just that they have been signed by the apparent Issuer and counter-signed by the
TS. If the Verifier trusts the Issuer, it can infer that the Claim was issued with this Envelope and contents, which may be interpreted as the Issuer saying the Artifact is fit for its intended purpose. If the Verifier trusts the TS, it can independently infer that the Claim passed the TS Registration policy and that has been persisted in the Registry. Unless advertised in the TS Registration policy, the Verifier should not assume that the ordering of Transparent Claims in the Registry matches the ordering of their issuance.</t>
      <t>Similarly, the fact that an Issuer can be held accountable for its Transparent Claims does not on its own provide any mitigation or remediation mechanism in case one of these Claims turned out to be misleading or malicious---just that signed evidence will be available to support them.</t>
      <t>Issuers <bcp14>SHOULD</bcp14> ensure that the Statements in their Claims are correct and unambiguous, for example by avoiding ill-defined or ambiguous formats that may cause Verifiers to interpret the Claim as valid for some other purpose.</t>
      <t>Issuers and Transparency Services <bcp14>SHOULD</bcp14> carefully protect their private signing keys
and avoid these keys for any purpose not described in this architecture. In case key re-use is unavoidable, they <bcp14>MUST NOT</bcp14> sign any other message that may be verified as an Envelope.</t>
      <section anchor="sec-threat-model">
        <name>Threat Model</name>
        <t>We provide a generic threat model for SCITT, describing its residual security properties when some of its actors (identity providers, Issuers, TS, and Auditors) are corrupt or compromised.</t>
        <t>This model may need to be refined to account for specific supply chains and use cases.</t>
        <section anchor="sec-claim-authentication-and-transparency">
          <name>Claim authentication and transparency.</name>
          <t>SCITT primarily supports evidence of Claim integrity, both from the Issuer (authentication) and from the TS (transparency). These guarantees are meant to hold for the long term, possibly decades.</t>
          <t>We conservatively suppose that some issuers and some TS will be corrupt.</t>
          <t>SCITT entities explicitly trust one another on the basis of their long-term identity, which maps to shorter-lived cryptographic credentials. Hence, a Verifier would usually validate a transparent signed Claim from a given Issuer, registered at a given TS (both identified in the Verifier's local authorization policy) and would not depend on any other Issuer or TS.</t>
          <t>We cannot stop authorized supply chain actors from making false claims (either by mistake or by corruption) but we can make them accountable by ensuring their Claims are systematically registered at a trustworthy TS.</t>
          <t>Similarly, we aim to provide strong residual guarantees against a faulty/corrupt TS. We cannot stop a TS from registering Claims that do not meet its stated Registration Policy, or to issue Receipts that are not consistent with their append-only Registry, but we can hold it accountable and guarantee that it will be blamed by any Auditor that replays their Registry against any contested Receipt. Note that SCITT does not require trust in a single centralized TS: different actors may rely on different TS, each registering a subset of claims subject to their own policy.</t>
          <t>In both cases, SCITT provides generic, universally-verifiable cryptographic evidence to individually blame the Issuer or the TS. This enables valid actors to detect and disambiguate malicious actors who make contradictory Claims to different entities (Verifiers, Auditors, Issuers). On the other hand, their liability and the resulting damage to their reputation are application specific, and out of scope for SCITT.</t>
          <t>Verifiers and Auditors need not be trusted by other actors. In particular, they cannot "frame" an Issuer or a TS for claims they did not issue or register.</t>
          <t><strong>Append-only log</strong></t>
          <t>If a TS is honest, then a transparent signed Claim with a correct Receipt of registration at a given position ensures that the signed claim passed its Registration Policy and was recorded at that position in its Registry.</t>
          <t>Conversely, a corrupt TS may
1. refuse or delay the registration of Claims;
2. register Claims that do not pass its Registration Policy (e.g. Claims with Issuer identities and signatures that do not verify.)
3. issue verifiable Receipts for Claims that do not match its Registry;
4. refuse access to its Registry (e.g. to Auditors, possibly after storage loss)</t>
          <t>An Auditor granted (partial) access to the Registry and to a collection of disputed Receipts will be able to replay it, detect any invalid Registration (2) or incorrect  receipt in this collection (3), and blame the TS for them. This ensures any Verifier that trust at least one such Auditor that (2,3) will be blamed to the TS.</t>
          <t>Due to the operational challenge of maintaining a globally consistent append-only Registry,
some TS may provide limited support for historical queries on the Claims they have registered,
and accept the risk of being blamed for inconsistent Registration or Issuer equivocation.</t>
          <t>Verifier and Auditors may also witness (1,4) but may not be able to collect verifiable evidence for it.</t>
          <t><strong>Availability of Transparent Signed Claims</strong></t>
          <t>Networking and Storage are trusted only for availability.</t>
          <t>Auditing may involve access to data beyond what is persisted in the TS log. For example, the registered TS may include only the hash of a detailed SBOM, which may limit the scope of auditing.</t>
          <t>Resistance to denial-of-service is implementation specific.</t>
          <t>Actors should independently keep their own record of the Claims they issue, endorse, verify, or audit.</t>
        </section>
        <section anchor="sec-confidentiality-and-privacy">
          <name>Confidentiality and privacy.</name>
          <t>The network is untrusted. All contents exchanged between actors is protected using secure authenticated channels (TLS) but, as usual, this may not exclude network traffic analysis.</t>
          <t><strong>Claims and their registration</strong></t>
          <t>The TS is trusted with the confidentiality of the claims presented for registration. Some TS may publish every claim in their logs, to facilitate their dissemination and auditing. Others may just return receipts to the client that present claims for registration, and disclose the ledger only to auditors trusted with the confidentiality of its contents.</t>
          <t>A collection of transparent Claims leaks no information about the contents of other Claims registered at the TS.</t>
          <t>Nonetheless, Issuers should carefully review the inclusion of private/confidential materials in their Claims; they may for instance remove any PII, or include instead opaque cryptographic commitments, such as hashes.</t>
          <t><strong>Queries to the Registry</strong></t>
          <t>The confidentiality of queries is implementation-specific, and generally not guaranteed. For example, while offline Claim verification is private, a TS may monitor which of its Claims are being verified from lookups to ensure their freshness.</t>
        </section>
        <section anchor="sec-cryptographic-assumptions">
          <name>Cryptographic Assumptions</name>
          <t>We rely on standard cryptographic security for signing schemes (EUF-CMA: for a given key, given the public key and any number of signed messages, the attacker cannot forge a valid signature for any other message) and for receipts schemes (log collision-resistance: for a given commitment such as a Merkle-tree root, there is a unique log such that any valid path authenticates a claim in this log.)</t>
          <t>SCITT supports cryptographic agility: the actors depend only on the subset of signing and receipt schemes they trust. This enables the gradual transition to stronger algorithms, including e.g. post-quantum signature algorithms.</t>
        </section>
        <section anchor="sec-ts-clients">
          <name>TS Clients</name>
          <t>Trust in clients that submit Claims for registration is implementation-specific. Hence, an attacker may attempt to register any Claim it has obtained, at any TS that accepts them, possibly multiple times and out of order. This may be mitigated by a TS that enforces restrictive access control and registration policies.</t>
        </section>
        <section anchor="sec-identity">
          <name>Identity</name>
          <t>The identity resolution mechanism is trusted to associate long-term identifiers with their public signature-verification keys. (The TS and other parties may record identity-resolution evidence to facilitate its auditing.)</t>
          <t>If one of the credentials of an Issuer gets compromised, SCITT still guarantee the authenticity of all claims signed with this credential that have been registered on a TS before the compromise. It is up to the Issuer to notify TS of credential revocation to stop Verifiers from accepting Claims signed with compromised credentials. [See the thread of revocation for additional details.]</t>
          <t>The confidentiality of any identity lookup during Claim Registration or Claim Verification is out of scope.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-iana-considerations">
      <name>IANA Considerations</name>
      <t>See Body <xref target="mybody"/>.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <seriesInfo name="DOI" value="10.17487/RFC8610"/>
            <seriesInfo name="RFC" value="8610"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <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>
        </reference>
        <reference anchor="RFC8152" target="https://www.rfc-editor.org/info/rfc8152">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8152"/>
            <seriesInfo name="RFC" value="8152"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <date month="July" year="2017"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined 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>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9162" target="https://www.rfc-editor.org/info/rfc9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <seriesInfo name="DOI" value="10.17487/RFC9162"/>
            <seriesInfo name="RFC" value="9162"/>
            <author fullname="B. Laurie" initials="B." surname="Laurie">
              <organization/>
            </author>
            <author fullname="E. Messeri" initials="E." surname="Messeri">
              <organization/>
            </author>
            <author fullname="R. Stradling" initials="R." surname="Stradling">
              <organization/>
            </author>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962.  It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6838" target="https://www.rfc-editor.org/info/rfc6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <seriesInfo name="DOI" value="10.17487/RFC6838"/>
            <seriesInfo name="RFC" value="6838"/>
            <seriesInfo name="BCP" value="13"/>
            <author fullname="N. Freed" initials="N." surname="Freed">
              <organization/>
            </author>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization/>
            </author>
            <author fullname="T. Hansen" initials="T." surname="Hansen">
              <organization/>
            </author>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols.  This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.birkholz-scitt-receipts" target="https://www.ietf.org/archive/id/draft-birkholz-scitt-receipts-01.txt">
          <front>
            <title>Countersigning COSE Envelopes in Transparency Services</title>
            <seriesInfo name="Internet-Draft" value="draft-birkholz-scitt-receipts-01"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Maik Riechert" initials="M." surname="Riechert">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft</organization>
            </author>
            <date day="5" month="September" year="2022"/>
            <abstract>
              <t>   A transparent and authentic ledger service in support of a supply
   chain's integrity, transparency, and trust requires all peers that
   contribute to the ledgers operations to be trustworthy and authentic.
   In this document, a countersigning variant is specified that enables
   trust assertions on Merkle-tree based operations for global supply
   chain ledgers.  A generic procedure for producing payloads to be
   signed and validated is defined and leverages solutions and
   principles from the Concise Signing and Encryption (COSE) space.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="PBFT" target="https://doi:10.1145/571637.571640">
          <front>
            <title>Practical byzantine fault tolerance and proactive recovery</title>
            <seriesInfo name="ACM Transactions on Computer Systems, Volume 20, Issue 4" value=""/>
            <author initials="M." surname="Castro" fullname="Miguel Castro">
              <organization>Microsoft Research</organization>
            </author>
            <author initials="B." surname="Liskov" fullname="Barbara Liskov">
              <organization>MIT Laboratory for Computer Science</organization>
            </author>
            <date year="2002" month="November"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="sec-attic">
      <name>Attic</name>
      <t>Not ready to throw these texts into the trash bin yet.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAB32VmMAA8V963Ib15XufzxFH/mHSBmALF+SmEqcUJQUc2JZGpGOJ+VK
mQ30BtlRoxvpbpCCLZ1nmUc4zzBPdtZ9r91oyM5UnTmumokINHbvy9rr+q21
ZrPZpC/7Kpxkp3V22i5vyj4s+20bslXTZpfttuvvmra/2WV5XcDfed1t8jbU
ffa0vC77vMoutptNtcvObvKy7ib5YtGG25Ps4uz88jIZcFI0yzpfw5uKNl/1
s0XZvrlpqp9m3bLs+1nuHp198umk6+GFP+ZVU8Mv+nYbJuWmpX91/aeffPIl
PALzyOFNYblty343ubs+yS6fPJ28uTvJzus+tHXoZ0/xXZNl3p9kXV9Mlk3d
hbrbdifZLnSTbrtYl11XNnW/28B7zp9dPp9sypNJlvXNkp/Jsg42oA2rzv7e
reOfb9p8XTR39Y/NpodxOvxtvu2bH8vixw08Vr6FN4flbDKBT2+a9mQyy2Cj
TrKv59kT2QL4Ce/M16F+4z9tWljT8zbf1jfNKrTZxfklDi97vPdFWOdldZLd
wChz3d4/dWU/X9mT8yLgCmA9Abbk9U2AufRt3nUh++0X8M2yKWAe93/z+adf
fnEf/4adPcme5u0aDqTo6Ylt3bfw4Z9Du87rna7ndJ49DVV5Xef97Jv8Nt8W
tqzTum/KOox8DwvM6/KnHLfuJHtRLtuma1Z99jp0ASnCzfXTR9lFTw9mr5u8
iHM9e/Io+/T5kzjbs3y9aMviOsQtyeu+qP601vHny2btl/LdX3QVZ/PsebNF
0rHZn4WiLZfu4/+pSa/4jb9m2n/Dze9uNnBngk38b801fJZ8kU799PULN9dH
jz7Jnm+rBb51ZLZffvtvH5ztjt4G9CVv+xPQzMiEJ3UDZNOXtwFvyuvnZ7/7
zaNPYMCnT7+Rvx998Sn8/fLiGf/95aPf4N+X/NdvfvfZ704mZb3yo5zPns4H
7KQNy1Buetia18/Onp2/uryA5149eX6Jz8PtZp73qs2XfbkELrbY/QQ0gkS6
yrdVD9e/CsDsloH43qZt8MHbkMG4zW1odzxK3l7jzt30/aY7efiwaMqTR5/M
Hz36/IuHX/z20W8+++0c/+fzT+hpvf/47xn9/4wP78Uc9hNOoZEP+fRelNfb
UKXfED8YJbjBkE/m2Tdl96a5TYZ8kreLvM3Tr3jM88vsm3zRtHnftDvi/WfN
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

-->

</rfc>
