<?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-ietf-scitt-architecture-00" 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-ietf-scitt-architecture-00"/>
    <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="December" day="08"/>
    <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-ietf-scitt-architecture/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        SCITT Working Group 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>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-scitt/draft-ietf-scitt-architecture"/>.</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-02.txt">
          <front>
            <title>Countersigning COSE Envelopes in Transparency Services</title>
            <seriesInfo name="Internet-Draft" value="draft-birkholz-scitt-receipts-02"/>
            <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="24" month="October" year="2022"/>
            <abstract>
              <t>   A transparent and authentic Transparent Registry service in support
   of a supply chain's integrity, transparency, and trust requires all
   peers that contribute to the Registry 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 registries.  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:
H4sIALPTkWMAA8V963LbVpbufz4FjvPDkkPS16QTOZ20LNsTzfg2ltKZrlQq
AglQRAQCbACUzMQ+zzKPcJ5hnuys+14bBB1nqs6cVM20RYIb+7L2un5rrclk
MuqKrsyPkuMqOW7my6LL592myZNF3STnzabtbuqmW26TtMrg77Rq12mTV13y
tLgsurRMzjbrdblNTpZpUbWjdDZr8uuj5Ozk9Pw8GnCU1fMqXcGbsiZddJMi
7xaTdl503SR1j03u3Ru1Hbzsl7SsK3i6azb5qFg39K+2e3Dv3tf3HoxgDim8
JZ9vmqLbjm4uj5LzJ09HVzdHyWnV5U2Vd5On+J7RPO2OkrbLRvO6avOq3bRH
yTZvR+1mtiratqirbruG95w+O38+WhdHoyTp6jk/kyQtLL7JF639vV2FP6+a
dJXVN9Uv9bqDcVr8bbrp6l+K7Jc1PFa8gzfn88loBJ8u6+ZoNElgk46S76fJ
k6K5Wtblb/AT3pXv8+rKf1o3sKbnTbqplvUib5Kz03McXvZ354t8lRblUbKE
UaYzGeVvbdFNF/bkNMtxBbCeHLbk7TKHuXRN2rZ58pcv4Jt5ncE8bn/56MHX
X9zGv2Fnj5KnabOCA8k6emJTdQ18+C95s0qrra7neJo8zcviskq7yYv0Ot1k
tqzjqquLKh/4HhaYVsVvKW7dUfKymDd1Wy+65G3e5kgRbq4P7idnHT2YvK3T
LMz15Mn95MHzJ2G2J+lq1hTZZR62JK26rPzbSsefzuuVX8oP/6arOJkmz+sN
ko7N/iTPmmLuPv6fmvSC3/gp0/4Hbn67XMOdyW3i/6gv4bPoi3jqx29furne
v38veb4pZ/jWgdl+/epfPzrbLb0N6Eve9jegmYEJj6oayKYrrnO8KW+fn3z1
5f17MODTpy/k7/tfPIC/X58947+/vv8l/n3Of3351cOvjkZFtfCjnE6eGr0L
O2nyeV6sO9iat89Onp2+OT+D5948eX6Oz8PtZn73pknnXTEHDjbb/gY0gkS6
SDdlB9e/zIHRzXPieeumxgev8wTGra/zZsujpM0l7tyy69bt0d27WV0c3b83
vX//0Rd3v/jL/S8f/mWK//PoHj2t9x//PaH/n/DhvZzCfsIp1PIhn97L4nKT
l/E3xA8GCa435JNp8qJor+rraMgnaTNLmzT+isc8PU9epLO6Sbu62RLfP6lX
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
Ghh2vqpRES9B6iTEQnCEPG3KIleuSQxtidsS8dIF2JYoI5qMVDS8oSa3kTOC
1KVNxsMplO8iC8/LBVEc3Mu6QZKbgaKHNAa7j7ItWLKxnZIckOowpo1SJjeG
dZvYGvPZwpDLtMngvHPWGcA4qUnwg6zpjOsJBzlUtYKMQzrioMfyUlrRNoEq
mgZmWJGF6vXbOdn1XoyRqG1yGFcpBwfwLrro8GMlpuimyQ9VWcCxn5yP+e7u
Tgs9AsjwQPyucSJKRLGZ0pvjalN2BWxrNFwQGbLQNl2ZrAkrujFjzyQ63Ctv
se68TkW2ybyD+PS6ZUMWK/50w5pTmpgjH+jxEqR7t1zBxe5u8rzS47aZ6sDi
cgCNGj1PVR1NRH8cTODIBSC6hur4sCwRAk7Zi1Qv1KpYt+9uamLKNB88FbyY
Yu8ROzjlK3pkcmyMauhVjlQBnzOBwsqbNojhnieKpb063IhSqhzlQ218htgC
2U3sEiGaavOO3F45DP4Y34NGIU3qRD0K/4+mxTrUGMzuskCvIg9Hl1M42Gjk
dwfXsUX1aJYj2YLpQ45YcwjAoQORw1RZNWZjMBC98h8kLdmRTLbERBfZOTA+
MLZrGncFvC9vQAEAUVhf1psWzZ14d2xazlbpLGJWMBtoW9S0cQucNUeOE55B
UFuAv+G2MIsZnszpQnZJZOKa3I0iEpk9hN1Gd3WjCy2CJT8eNuWvixSNCvgQ
PeE22Dhc+OFXp8z2cLuJj4n3nedQ2GmgY53vJF7j3ku8difnwfuS2vuUVojO
6sWiN8CfuJvsjFDZwS9VB5DjAHpr9fZ7P5F9WYJau0kvc9MNMtpHfQ7/N61Y
QBy/OYXHtyBxdbL7lHV2Q2a0BcY9/d6gVi3P4NvmqEA4pfvALThl/yBc4g1+
dyh7iuooESFeHFAR1xLgCK665IAdjOhL267RzgBiATEPAiFJQZdSAU98uTHe
RhOCpbaHrMr154bjzegCirUDt2mOXvAzUCbVQHjGhg8KQXKtg7SOjxWN5Ndn
z4KZXIjtre6U3jUnYqpBAhQlb+sKGFRHbjT1IWAgjDdnsanmemNpioPXBZmJ
8Cpy/JAVR2MzN2CVQy81Pa6/nfAGRDJGY1a0Qaa2y1o1jPXhA1DOZ5/BQO6c
XtWsszBNoQ8I2E/WJrde/nB2fmvM/5u8ek3/fvvs3384ffvsKf777PvjFy/s
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

-->

</rfc>
