<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.1 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scitt-architecture-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.1 -->
  <front>
    <title abbrev="SCITT Architecture">An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-03"/>
    <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>
    <author initials="S." surname="Lasker" fullname="Steve Lasker">
      <organization>RKVST</organization>
      <address>
        <postal>
          <city>Seattle</city>
          <country>United States</country>
        </postal>
        <email>steve.lasker@rkvst.com</email>
      </address>
    </author>
    <date year="2023" month="October" day="16"/>
    <area>Security</area>
    <workgroup>SCITT</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 89?>

<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 document defines a generic, interoperable and scalable architecture to enable transparency across any supply chain with minimum adoption barriers.
It provides flexibility, enabling interoperability across different implementations of Transparency Services with various auditing and compliance requirements.
Producers can register their Signed Statements on any Transparency Service, with the guarantee that all Consumers will be able to verify them.</t>
    </abstract>
    <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>
    <?line 98?>

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>This document describes a scalable and flexible, decentralized architecture to enhance auditability and accountability across various existing and emerging supply chains.
It achieves this goal by enforcing the following complementary security guarantees:</t>
      <ol spacing="normal" type="1"><li>
          <t>Statements made by Issuers about supply chain Artifacts must be identifiable, authentic, and non-repudiable</t>
        </li>
        <li>
          <t>Such Statements must be registered on a secure append-only Log, so that their provenance and history can be independently and consistently audited</t>
        </li>
        <li>
          <t>Issuers can efficiently prove to any other party the Registration of their Signed Statements; verifying this proof ensures that the Issuer is consistent and non-equivocal when producing Signed Statements</t>
        </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 on an immutable, append-only Log.
The next guarantee is achieved by implementing the append-only Log using a verifiable data structure (such as a Merkle Tree <xref target="MERKLE"/>).
Lastly, the Transparency Service verifies the identity of the Issuer, and conformance to a Registration Policy associated with the instance of the Transparency Service.
As the Issuer of the Signed Statement and conformance to the Registration Policy are confirmed, an endorsement is made as the Signed Statement is added to the append-only Log.</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 Transparency Service is implemented and operates.
Each service <bcp14>MAY</bcp14> enforce its own Registration Policies for authorizing entities to register their Signed Statements to the append-only Log.
Some Transparency Services may also enforce authorization policies limiting who can write, read and audit specific Feeds or the full registry.
It is critical to provide interoperability for all Transparency Services instances as the composition and configuration of involved supply chain entities and their system components is ever-changing and always in flux, so it is implausible to expect all participants to choose a single vendor or registry.</t>
      <t>A Transparency Service provides visibility into Signed Statements associated with various supply chains and their sub-systems.
These Signed Statements (and corresponding Statement payload) make claims about the Artifacts produced by a supply chain.
A Transparency Service endorses specific and well-defined metadata about these Artifacts that is captured in Statements.
Some metadata is selected (and signed) by the Issuer, indicating, e.g., "who issued the Statement" or "what type of Artifact is described" or "what is the Artifact's version"; whereas additional metadata is selected (and countersigned) by the Transparency Services, indicating, e.g., "when was the Signed Statement about the Artifact registered in the Registry".
Producing a Transparent Statement may be considered a form of notarization.
A Statements payload content <bcp14>MAY</bcp14> be encrypted and opaque to the Transparency Services, if so desired: however the metadata <bcp14>MUST</bcp14> be transparent in order to warrant trust for later processing.
Transparent Statements provide a common basis for holding Issuers accountable for the Statement payload about Artifacts they release and (more generally) principals accountable for auxiliary Signed Statements from other Issuers about the original Signed Statement about an Artifact.
Issuers may Register new Signed Statements about Artifacts, but they cannot delete or alter Signed Statements previously added to the append-only Log.
A Transparency Service may restrict access to Signed Statements through access control policies.
However, third parties (such as Auditors) would be granted access as needed to attest to the validity of the Artifact, Feed or the entirety of the Transparency Service.</t>
      <t>Trust in the Transparency Service itself is supported both by protecting their implementation (using, for instance, replication, trusted hardware, and remote attestation of a system's operational state) and by enabling independent audits of the correctness and consistency of its Registry, thereby holding the organization that operates it accountable.
Unlike CT, where independent Auditors are responsible for enforcing the consistency of multiple independent instances of the same global Registry, each Transparency Service is required 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>Breadth of access is critical so the Transparency Service specified in this architecture cater to two types of audiences:</t>
      <ol spacing="normal" type="1"><li>
          <t>Producers: organizations, stakeholders, and users involved in creating or attesting to supply chain artifacts, releasing authentic Statements to a definable set of peers; and</t>
        </li>
        <li>
          <t>Consumers: organizations, stakeholders, and users involved in validating supply chain artifacts, but can only do so if the Statements are known to be authentic.
Consumers <bcp14>MAY</bcp14> be producers, providing additional Signed Statements, attesting to conformance of various compliance requirements.</t>
        </li>
      </ol>
      <t>Signed Statement Issuers rely on being discoverable and represented as the responsible parties for their registered Signed Statements via Transparency Services in a believable manner.
The issuer of a Signed Statement must be authenticated and authorized according to the registration policy of the Transparency Service.
Analogously, Transparent Statement Consumers rely on verifiable trustworthiness assertions associated with Transparent Statements and their processing provenance in a believable manner.
If trust can be put into the operations that record Signed Statements in a secure, append-only log via online operations, the same trust can be put into the resulting transparent statement, issued by the Transparency Services and that can be validated in offline operations.</t>
      <t>The Transparency Services 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 interoperability guaranteed by the Transparency Services is enabled via core components (architectural constituents) that come with prescriptive requirements (that are typically hidden away from the user audience via APIs but can be relied upon as non functional requirements).
Many of the data elements processed by the core components are based on the Concise Signing and Encryption standard specified in <xref target="RFC9052"/>, which is used to produce Signed Statements about Artifacts and to build and maintain a Merkle tree that functions as an append-only Log for corresponding Signed Statements.</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 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="sec-use-cases">
      <name>Use Cases</name>
      <t>The building blocks defined in SCITT are intended to support applications in any supply chain that produces or relies upon digital artifacts, from the build and supply of software and IoT devices to advanced manufacturing and food supply.</t>
      <t>Detailed use cases are maintained in a separate document <xref target="I-D.ietf-scitt-software-use-cases"/>.</t>
    </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>Auditor:</dt>
        <dd>
          <t>an entity that checks the correctness and consistency of all Transparent Statements issued by a Transparency Service.</t>
        </dd>
        <dt>Consumer of Signed Statements:</dt>
        <dd>
          <t>Define here.</t>
        </dd>
        <dt>Envelope:</dt>
        <dd>
          <t>metadata and an Issuer's signature is added to a Statement via a COSE Envelope by the Issuer to produce a Signed Statement.
An Envelope contains the identity of the Issuer and other information to help components responsible for validation that are part of a Transparency Services to identify the software Artifact referred to in a Signed Statement.
In essence, a Signed Statement is a COSE Envelope wrapped around a Statement binding the metadata included in the Envelope to a Statement.
In COSE, an Envelope consists of a protected header (included in the Issuer's signature) and an unprotected header (not included in the Issuer's signature).</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 Signed Statements about the same Artifact.
In COSE, Feed is a dedicated header attribute in the protected header of the Envelope.</t>
        </dd>
        <dt>Issuer:</dt>
        <dd>
          <t>an entity that creates Signed Statements about software Artifacts in the supply chain.
An Issuer may be the owner or author of Artifacts, or an independent third party such as a reviewer or an endorser.</t>
        </dd>
        <dt>Append-only Log (converges Ledger and Registry):</dt>
        <dd>
          <t>the verifiable append-only data structure that stores Signed Statements in a Transparency Service.
SCITT supports multiple Log and Receipt formats to accommodate different Transparency Service implementations, such as historical Merkle Trees and sparse Merkle Trees.</t>
        </dd>
        <dt>Receipt:</dt>
        <dd>
          <t>a Receipt is a cryptographic proof that a Signed Statement is recorded in the Registry. Receipts are based on COSE Signed Merkle Tree Proofs <xref target="I-D.draft-steele-cose-merkle-tree-proofs"/>; they consist of a Registry-specific inclusion proof, a signature by the Transparency Service of the state of the Registry, and additional metadata (contained in the signature's protected headers) to assist in auditing.</t>
        </dd>
        <dt>Registration:</dt>
        <dd>
          <t>the process of submitting a Signed Statement to a Transparency Service, applying the Transparency Service's Registration Policy, storing it in the Registry, producing a Receipt, and returning it to the submitting Issuer.</t>
        </dd>
        <dt>Registration Policy:</dt>
        <dd>
          <t>the pre-condition enforced by the Transparency Service before registering a Signed Statement, rendering it a Signed Statement, based on metadata contained in its COSE Envelope (notably the identity of its Issuer) and on prior Signed Statements already added to a Registry.</t>
        </dd>
        <dt>Registry:</dt>
        <dd>
          <t>the verifiable append-only data structure that stores Signed Statements in a Transparency Service often referred to by the synonym log or ledger.
Since COSE Signed Merkle Tree Proofs (<xref target="I-D.draft-steele-cose-merkle-tree-proofs"/>) support multiple Merkle Tree algorithms, SCITT supports different Transparency Service implementations of the Registry, such as historical Merkle Trees or sparse Merkle Trees.</t>
        </dd>
        <dt>Signed Statement:</dt>
        <dd>
          <t>an identifiable and non-repudiable Statement about an Artifact made by an Issuer.
In SCITT, Signed Statements are encoded as COSE signed objects; the payload of the COSE structure contains the issued Statement.</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>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 Transparency Service to provide many security guarantees about its Registry.
The identity of a Transparency Service is captured by a public key that must be known by Verifiers in order to validate Receipts.</t>
        </dd>
        <dt>Transparent Statement:</dt>
        <dd>
          <t>a Signed Statement that is augmented with a Receipt created via Registration in a Transparency Service (the receipt is stored in the unprotected header of COSE Envelope of the Signed Statement).
A Transparent Statement remains a valid Signed Statement, and may be registered again in a different Transparency Service.</t>
        </dd>
        <dt>Verifier:</dt>
        <dd>
          <t>an entity that consumes Transparent Statements (a specialization of Signed Statement Consumer), verifying their proofs and inspecting their Statement payload, either before using corresponding Artifacts, or later to audit an Artifact's provenance on the supply chain.</t>
        </dd>
      </dl>
    </section>
    <section anchor="mybody">
      <name>Definition of Transparency</name>
      <t>In this document, the definition of transparency is intended to build over abstract notions of Registry and Receipts.
Existing transparency systems such as Certificate Transparency are instances of this definition.</t>
      <t>A Signed Statement 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.
Signed Statements can be made transparent by attaching a proof of Registration by a Transparency Service, in the form of a Receipt that countersigns the Signed Statement and witnesses its inclusion in the Registry of a Transparency Service.
By extension, the document may say an Artifact (e.g., a firmware binary) is transparent if it comes with one or more Transparent Signed Statements from its author or owner, though the context should make it clear what type of Signed Statements 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 Transparency Services 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 (more recent Signed Statements) that subsume older entries (less recent Signed Statements).</t>
      <t>Anyone with access to the Registry can independently verify its consistency and review the complete list of Transparent Statements registered by each Issuer.
However, the Registries of separate Transparency Services are generally disjoint, though it is possible to take a Transparent Statement 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 to produce Signed Statements.
Similarly, reputable Transparency Services 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 (<xref target="sec-consistency"/>) through Receipts, that is, given two valid Receipts the Transparency Service may be asked to produce a cryptographic proof that they are consistent.
Failure to produce this proof can indicate that the Transparency Services 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="656" width="552" viewBox="0 0 552 656" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
            <path d="M 184,64 L 184,88" fill="none" stroke="black"/>
            <path d="M 184,128 L 184,144" fill="none" stroke="black"/>
            <path d="M 184,416 L 184,432" fill="none" stroke="black"/>
            <path d="M 192,224 L 192,240" fill="none" stroke="black"/>
            <path d="M 208,304 L 208,336" fill="none" stroke="black"/>
            <path d="M 240,176 L 240,200" fill="none" stroke="black"/>
            <path d="M 240,256 L 240,272" fill="none" stroke="black"/>
            <path d="M 240,368 L 240,392" fill="none" stroke="black"/>
            <path d="M 240,448 L 240,600" fill="none" stroke="black"/>
            <path d="M 288,224 L 288,240" fill="none" stroke="black"/>
            <path d="M 296,128 L 296,144" fill="none" stroke="black"/>
            <path d="M 296,416 L 296,432" fill="none" stroke="black"/>
            <path d="M 320,496 L 320,520" fill="none" stroke="black"/>
            <path d="M 352,496 L 352,520" fill="none" stroke="black"/>
            <path d="M 368,272 L 368,336" fill="none" stroke="black"/>
            <path d="M 392,144 L 392,192" fill="none" stroke="black"/>
            <path d="M 456,192 L 456,240" fill="none" stroke="black"/>
            <path d="M 472,336 L 472,472" fill="none" stroke="black"/>
            <path d="M 472,488 L 472,600" fill="none" stroke="black"/>
            <path d="M 488,272 L 488,336" fill="none" stroke="black"/>
            <path d="M 512,128 L 512,144" fill="none" stroke="black"/>
            <path d="M 512,192 L 512,464" fill="none" stroke="black"/>
            <path d="M 544,144 L 544,192" fill="none" stroke="black"/>
            <path d="M 152,32 L 224,32" fill="none" stroke="black"/>
            <path d="M 152,64 L 224,64" fill="none" stroke="black"/>
            <path d="M 152,96 L 216,96" fill="none" stroke="black"/>
            <path d="M 256,96 L 328,96" fill="none" stroke="black"/>
            <path d="M 104,112 L 120,112" fill="none" stroke="black"/>
            <path d="M 352,112 L 496,112" fill="none" stroke="black"/>
            <path d="M 152,128 L 216,128" fill="none" stroke="black"/>
            <path d="M 256,128 L 328,128" fill="none" stroke="black"/>
            <path d="M 392,144 L 544,144" fill="none" stroke="black"/>
            <path d="M 200,160 L 224,160" fill="none" stroke="black"/>
            <path d="M 256,160 L 280,160" fill="none" stroke="black"/>
            <path d="M 392,192 L 544,192" fill="none" stroke="black"/>
            <path d="M 208,208 L 272,208" fill="none" stroke="black"/>
            <path d="M 296,240 L 456,240" fill="none" stroke="black"/>
            <path d="M 208,256 L 272,256" fill="none" stroke="black"/>
            <path d="M 368,272 L 488,272" fill="none" stroke="black"/>
            <path d="M 256,288 L 360,288" fill="none" stroke="black"/>
            <path d="M 248,304 L 296,304" fill="none" stroke="black"/>
            <path d="M 112,320 L 128,320" fill="none" stroke="black"/>
            <path d="M 320,320 L 368,320" fill="none" stroke="black"/>
            <path d="M 248,336 L 296,336" fill="none" stroke="black"/>
            <path d="M 368,336 L 488,336" fill="none" stroke="black"/>
            <path d="M 200,400 L 280,400" fill="none" stroke="black"/>
            <path d="M 200,448 L 280,448" fill="none" stroke="black"/>
            <path d="M 256,480 L 304,480" fill="none" stroke="black"/>
            <path d="M 368,480 L 496,480" fill="none" stroke="black"/>
            <path d="M 280,528 L 448,528" fill="none" stroke="black"/>
            <path d="M 112,544 L 128,544" fill="none" stroke="black"/>
            <path d="M 256,576 L 424,576" fill="none" stroke="black"/>
            <path d="M 168,608 L 320,608" fill="none" stroke="black"/>
            <path d="M 376,608 L 520,608" fill="none" stroke="black"/>
            <path d="M 112,624 L 128,624" fill="none" stroke="black"/>
            <path d="M 152,640 L 304,640" fill="none" stroke="black"/>
            <path d="M 360,640 L 504,640" fill="none" stroke="black"/>
            <path d="M 152,640 L 168,608" fill="none" stroke="black"/>
            <path d="M 256,576 L 280,528" fill="none" stroke="black"/>
            <path d="M 304,640 L 320,608" fill="none" stroke="black"/>
            <path d="M 360,640 L 376,608" fill="none" stroke="black"/>
            <path d="M 424,576 L 448,528" fill="none" stroke="black"/>
            <path d="M 504,640 L 520,608" fill="none" stroke="black"/>
            <path d="M 152,32 C 143.16936,32 136,39.16936 136,48" fill="none" stroke="black"/>
            <path d="M 224,32 C 232.83064,32 240,39.16936 240,48" fill="none" stroke="black"/>
            <path d="M 152,64 C 143.16936,64 136,56.83064 136,48" fill="none" stroke="black"/>
            <path d="M 224,64 C 232.83064,64 240,56.83064 240,48" fill="none" stroke="black"/>
            <path d="M 152,96 C 143.16936,96 136,103.16936 136,112" fill="none" stroke="black"/>
            <path d="M 216,96 C 224.83064,96 232,103.16936 232,112" fill="none" stroke="black"/>
            <path d="M 256,96 C 247.16936,96 240,103.16936 240,112" fill="none" stroke="black"/>
            <path d="M 328,96 C 336.83064,96 344,103.16936 344,112" fill="none" stroke="black"/>
            <path d="M 496,112 C 504.83064,112 512,119.16936 512,128" fill="none" stroke="black"/>
            <path d="M 152,128 C 143.16936,128 136,120.83064 136,112" fill="none" stroke="black"/>
            <path d="M 216,128 C 224.83064,128 232,120.83064 232,112" fill="none" stroke="black"/>
            <path d="M 256,128 C 247.16936,128 240,120.83064 240,112" fill="none" stroke="black"/>
            <path d="M 328,128 C 336.83064,128 344,120.83064 344,112" fill="none" stroke="black"/>
            <path d="M 200,160 C 191.16936,160 184,152.83064 184,144" fill="none" stroke="black"/>
            <path d="M 224,160 C 232.83064,160 240,167.16936 240,176" fill="none" stroke="black"/>
            <path d="M 256,160 C 247.16936,160 240,167.16936 240,176" fill="none" stroke="black"/>
            <path d="M 280,160 C 288.83064,160 296,152.83064 296,144" fill="none" stroke="black"/>
            <path d="M 208,208 C 199.16936,208 192,215.16936 192,224" fill="none" stroke="black"/>
            <path d="M 272,208 C 280.83064,208 288,215.16936 288,224" fill="none" stroke="black"/>
            <path d="M 208,256 C 199.16936,256 192,248.83064 192,240" fill="none" stroke="black"/>
            <path d="M 272,256 C 280.83064,256 288,248.83064 288,240" fill="none" stroke="black"/>
            <path d="M 224,288 C 215.16936,288 208,295.16936 208,304" fill="none" stroke="black"/>
            <path d="M 224,288 C 232.83064,288 240,280.83064 240,272" fill="none" stroke="black"/>
            <path d="M 256,288 C 247.16936,288 240,280.83064 240,272" fill="none" stroke="black"/>
            <path d="M 248,304 C 239.16936,304 232,311.16936 232,320" fill="none" stroke="black"/>
            <path d="M 296,304 C 304.83064,304 312,311.16936 312,320" 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 296,336 C 304.83064,336 312,328.83064 312,320" fill="none" stroke="black"/>
            <path d="M 224,352 C 215.16936,352 208,344.83064 208,336" fill="none" stroke="black"/>
            <path d="M 224,352 C 232.83064,352 240,359.16936 240,368" fill="none" stroke="black"/>
            <path d="M 256,352 C 247.16936,352 240,359.16936 240,368" fill="none" stroke="black"/>
            <path d="M 256,352 C 264.83064,352 272,344.83064 272,336" fill="none" stroke="black"/>
            <path d="M 200,400 C 191.16936,400 184,407.16936 184,416" fill="none" stroke="black"/>
            <path d="M 280,400 C 288.83064,400 296,407.16936 296,416" fill="none" stroke="black"/>
            <path d="M 200,448 C 191.16936,448 184,440.83064 184,432" fill="none" stroke="black"/>
            <path d="M 280,448 C 288.83064,448 296,440.83064 296,432" fill="none" stroke="black"/>
            <path d="M 256,480 C 247.16936,480 240,472.83064 240,464" fill="none" stroke="black"/>
            <path d="M 304,480 C 312.83064,480 320,487.16936 320,496" fill="none" stroke="black"/>
            <path d="M 368,480 C 359.16936,480 352,487.16936 352,496" fill="none" stroke="black"/>
            <path d="M 496,480 C 504.83064,480 512,472.83064 512,464" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="480,600 468,594.4 468,605.6" fill="black" transform="rotate(90,472,600)"/>
            <path class="jump" d="M 472,488 C 478,488 478,472 472,472" fill="none" stroke="black"/>
            <polygon class="arrowhead" points="368,288 356,282.4 356,293.6" fill="black" transform="rotate(0,360,288)"/>
            <polygon class="arrowhead" points="360,520 348,514.4 348,525.6" fill="black" transform="rotate(90,352,520)"/>
            <polygon class="arrowhead" points="360,112 348,106.4 348,117.6" fill="black" transform="rotate(180,352,112)"/>
            <polygon class="arrowhead" points="328,520 316,514.4 316,525.6" fill="black" transform="rotate(90,320,520)"/>
            <polygon class="arrowhead" points="328,320 316,314.4 316,325.6" fill="black" transform="rotate(180,320,320)"/>
            <polygon class="arrowhead" points="304,240 292,234.4 292,245.6" fill="black" transform="rotate(180,296,240)"/>
            <polygon class="arrowhead" points="248,600 236,594.4 236,605.6" fill="black" transform="rotate(90,240,600)"/>
            <polygon class="arrowhead" points="248,392 236,386.4 236,397.6" fill="black" transform="rotate(90,240,392)"/>
            <polygon class="arrowhead" points="248,200 236,194.4 236,205.6" fill="black" transform="rotate(90,240,200)"/>
            <polygon class="arrowhead" points="192,88 180,82.4 180,93.6" fill="black" transform="rotate(90,184,88)"/>
            <polygon class="arrowhead" points="136,624 124,618.4 124,629.6" fill="black" transform="rotate(0,128,624)"/>
            <polygon class="arrowhead" points="136,544 124,538.4 124,549.6" fill="black" transform="rotate(0,128,544)"/>
            <polygon class="arrowhead" points="136,320 124,314.4 124,325.6" fill="black" transform="rotate(0,128,320)"/>
            <polygon class="arrowhead" points="128,112 116,106.4 116,117.6" fill="black" transform="rotate(0,120,112)"/>
            <g class="text">
              <text x="188" y="52">Artifact</text>
              <text x="408" y="100">Decentralized</text>
              <text x="508" y="100">Identifier</text>
              <text x="28" y="116">Issuer</text>
              <text x="184" y="116">Statement</text>
              <text x="292" y="116">Envelope</text>
              <text x="416" y="164">DID</text>
              <text x="448" y="164">Key</text>
              <text x="500" y="164">Manifest</text>
              <text x="236" y="228">Signed</text>
              <text x="340" y="228">COSE</text>
              <text x="392" y="228">Signing</text>
              <text x="240" y="244">Statement</text>
              <text x="428" y="292">Transparency</text>
              <text x="52" y="324">Transparency</text>
              <text x="272" y="324">Receipt</text>
              <text x="424" y="324">Service</text>
              <text x="72" y="340">Service</text>
              <text x="240" y="420">Transparent</text>
              <text x="240" y="436">Statement</text>
              <text x="36" y="548">Verifier</text>
              <text x="308" y="548">Verify</text>
              <text x="384" y="548">Transparent</text>
              <text x="352" y="564">Statement</text>
              <text x="32" y="628">Auditor</text>
              <text x="200" y="628">Collect</text>
              <text x="268" y="628">Receipts</text>
              <text x="420" y="628">Replay</text>
              <text x="464" y="628">Log</text>
            </g>
          </svg>
        </artwork>
        <artwork type="ascii-art"><![CDATA[
                 .----------.
                |  Artifact  |
                 '----+-----'
                      v
                 .----+----.  .----------.  Decentralized Identifier
Issuer      --> | Statement ||  Envelope  +<------------------.
                 '----+----'  '-----+----'                     |
                      |             |           +--------------+---+
                       '----. .----'            | DID Key Manifest |
                             |                  |                  |
                             v                  +-------+------+---+
                        .----+----.                     |      |
                       |  Signed   |    COSE Signing    |      |
                       | Statement +<-------------------'      |
                        '----+----'                            |
                             |               +--------------+  |
                          .-' '------------->+ Transparency |  |
                         |   .-------.       |              |  |
Transparency -->         |  | Receipt +<-----+   Service    |  |
     Service             |   '---+---'       +------------+-+  |
                          '-. .-'                         |    |
                             |                            |    |
                             v                            |    |
                       .-----+-----.                      |    |
                      | Transparent |                     |    |
                      |  Statement  |                     |    |
                       '-----+-----'                      |    |
                             |                            |    |
                             |'-------.     .-------------)---'
                             |         |   |              |
                             |         v   v              |
                             |    .----+---+-----------.  |
Verifier     -->             |   / Verify Transparent /   |
                             |  /      Statement     /    |
                             | '--------------------'     |
                             v                            v
                    .--------+---------.      .-----------+-----.
Auditor      -->   / Collect Receipts /      /   Replay Log    /
                  '------------------'      '-----------------'
]]></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 and registering Signed Statements, and auditing Transparent Statements.</t>
      <t>In order to accommodate as many Transparency Service implementations as possible, this document only specifies the format of Signed Statements (which must be used by all Issuers) and a very thin wrapper format for Receipts, which specifies the Transparency Service identity and the agility parameters for the Merkle Tree Proof.
Most of the details of the Receipt's contents are specified in the COSE Signed Merkle Tree Proof document <xref target="I-D.draft-steele-cose-merkle-tree-proofs"/>.</t>
      <t>This section describes at a high level, the three main roles and associated processes in SCITT: Issuers and the Signed Statement issuance process, Transparency Service and the Signed Statement Registration process, as well as Verifiers of the Transparent Statements and the Receipt validation process.</t>
      <section anchor="sec-signed-statement-issuance-and-registration">
        <name>Signed Statement Issuance and Registration</name>
        <section anchor="sec-issuer-identity">
          <name>Issuer Identity</name>
          <t>Before an Issuer is able to produce Signed Statements, it must first create its <xref target="DID-CORE">decentralized identifier</xref> (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 Transparency Services will be able to register their Signed Statements.
To facilitate interoperability, all Transparency Service implementations <bcp14>MUST</bcp14> support the <tt>did:web</tt> method <xref target="DID-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 Statements about Artifacts, to simplify authorization by Verifiers and auditing.
If an issuer uses multiple DIDs (for instance, because their clients support different resolution methods), they <bcp14>MUST</bcp14> ensure that statements signed under each DID are consistent.</t>
          <t>Issuers <bcp14>MAY</bcp14> update their DID Document at any time, for instance to refresh their signing keys or algorithms, but they <bcp14>SHOULD NOT</bcp14> remove or change any of their previous keys unless they intend to revoke all Signed Statements that are registered as Transparent Statements issued with those keys.</t>
          <t>The Issuer's DID appears in the protected header of Signed Statements' Envelopes, while the version of the key from the DID Document used to sign the Signed Statement is written in the <tt>kid</tt> header.</t>
          <t><tt>kid</tt> <bcp14>MUST</bcp14> either be an absolute URL, or a relative URL. Relative URL <bcp14>MUST</bcp14> be relative to an <tt>iss</tt> value. When relative URL is used, <tt>iss</tt> <bcp14>MUST</bcp14> also be present in the protected header.</t>
          <t>Resolving <tt>kid</tt> <bcp14>MUST</bcp14> return an identity document of a registered content type (a set of public keys).
In the case of <tt>kid</tt> being an absolute DID URL, the identity document is called a DID Document, and is expected ot have content type <tt>application/did+json</tt>.</t>
          <t>To dereference a DID URL, it first <bcp14>MUST</bcp14> be resolved. After that the fragment is processed according to the media type.</t>
          <t>For example, when resolving <tt>did:example:123#key-42</tt>, first, the identity document for <tt>did:example:123</tt> is resolved as content type <tt>application/did+json</tt>, next, the fragment <tt>#key-42</tt> is dereferenced to a verification method that contains a <tt>publicKeyJwk</tt> property.</t>
          <t>The content type of <tt>publicKeyJwk</tt> is expected to be <tt>application/jwk+json</tt>.</t>
          <t>The details of both <tt>DID resolution</tt> and <tt>DID dereferencing</tt> are out of scope for this document.</t>
          <t>The <tt>iss</tt> or <tt>kid</tt>, might not be DID URLs, however the following interfaces <bcp14>MUST</bcp14> be satisfied in order to ensure issuer identity documents, and associated keys are discoverable in a consistent manner.</t>
          <section anchor="sec-resolving-identity-documents">
            <name>Resolving Identity Documents</name>
            <t>The value of <tt>id</tt> might be found the <tt>iss</tt> or <tt>sub</tt> claims if they are present in the protected header or payload.</t>
            <sourcecode type="sh"><![CDATA[
resolve = (id: string, accept: \
  content_type = 'application/did+json') =>
  idDocument (of content type application/did+json)
]]></sourcecode>
            <t>For example:</t>
            <sourcecode type="sh"><![CDATA[
did:example:123
]]></sourcecode>
            <t>Might resolve to:</t>
            <sourcecode type="json"><![CDATA[
{
  "id": "did:example:123",
  "verificationMethod": [{
    "id": "#key-42",
    "type": "JsonWebkey",
    "controller": "did:example:123",
    "publicKeyJwk": {
      "kty": "EC",
      "crv": "P-384",
      "alg": "ES384",
      "x": "LCeAt2sW36j94wuFP0gN...Ler3cKFBCaAHY1svmbPV69bP3RH",
      "y": "zz2SkcOGYM6PbYlw19tc...rd8QWykAprstPdxx4U0uScvDcYd"
    }
  }]
}
]]></sourcecode>
            <t>Editor note, we might wish to eliminate this intermediate identity document content type, by treating it as an alterative encoding of <tt>application/jwk-set+json</tt> or <tt>application/cose-key-set</tt>.</t>
            <t>However, there is no media type fragment processing directive that would enable dereferencing the known key set content types, listed above.</t>
            <section anchor="sec-comment-on-oidc">
              <name>Comment on OIDC</name>
              <t>For well known token types, such as <tt>id_token</tt> or <tt>access_token</tt>.</t>
              <t><tt>iss</tt> <bcp14>MUST</bcp14> be a URL, and it <bcp14>MUST</bcp14> have keys discoverable in the following way:</t>
              <t><tt>iss</tt> can be used to build a <tt>.well-known</tt> URL to discovery the issuer's configuration.</t>
              <t>For example, <tt>iss</tt> <tt>contoso.example</tt> will have the following open id connect configuration URL.</t>
              <t><tt>https://contoso.example/.well-known/openid-configuration</tt>.</t>
              <t>This URL will resolve to a JSON document which contains the property:</t>
              <t><tt>jwks_uri</tt>, for example <tt>https://contoso.example/.well-known/jwks.json</tt></t>
              <t>This URL will resolve to a JSON document of content type <tt>application/jwk-set+json</tt>, which will contain specific keys... for example:</t>
              <sourcecode type="json"><![CDATA[
{
  "keys": [
    {
      "alg": "RS256",
      "kty": "RSA",
      "use": "sig",
      "n": "wW9TkSbcn5FV3iUJ-812sqTvwT...YzXrnMZ7WgbMPXmHU8i4z04zw",
      "e": "AQAB",
      "kid": "NTBGNTJEMDc3RUE3RUVEOTM4NDcEFDNzEyOTY5NDNGOUQ4OEU5OA",
      "x5t": "NTBGNTJEMDc3RUE3RUVEOTM4NDcEFDNzEyOTY5NDNGOUQ4OEU5OA",
      "x5c": [
        "MIIDCzCCAfOgAwIBAgIPng0XRWwsd...f5GOGwJS+u/nSYvqCFt57+g3R+"
      ]
    },
    {
      "alg": "RS256",
      "kty": "RSA",
      "use": "sig",
      "n": "ylgVZbNR4nlsU_AbU8Zd7ZhVfm...fo5BLa3_YLWazqcpWRXn9QEDWw",
      "e": "AQAB",
      "kid": "aMIKy_brQk3nLd0PKd9ln",
      "x5t": "-xcTyx47q3ddycG7LtE6QCcETbs",
      "x5c": [
        "MIIC/TCCAeWgAwIBAgIJH62ygzAPG...xCxmHAbK+KdTka/Yg2MadFZdA=="
      ]
    }
  ]
}
]]></sourcecode>
              <t>If SCITT wanted to be interoperable with OIDC, we would define key dereferencing in a way that was compatible with how OIDC handles it today.</t>
            </section>
          </section>
          <section anchor="sec-dereferencing-public-keys">
            <name>Dereferencing Public Keys</name>
            <t><tt>kid</tt> is always present in the protected header.</t>
            <t>If <tt>iss</tt> is also present, <tt>kid</tt> <bcp14>MUST</bcp14> be a relative URL to <tt>iss</tt>, otherwise <tt>kid</tt> <bcp14>MUST</bcp14> be an absolute URL that starts with <tt>iss</tt>.</t>
            <t><tt>id</tt> = <tt>kid</tt> if <tt>iss</tt> is undefined, or <tt>iss</tt> + <tt>#</tt> + <tt>kid</tt> when <tt>iss</tt> is defined.</t>
            <t>See also <eref target="https://datatracker.ietf.org/doc/draft-ietf-cose-cwt-claims-in-headers/">draft-ietf-cose-cwt-claims-in-headers</eref>.</t>
            <sourcecode type="sh"><![CDATA[
dereference = (id: string, accept: \
  content_type = 'application/jwk+json') =>
  publicKeyJwk (of content type application/jwk+json)
]]></sourcecode>
            <t>For example, when DIDs are used:</t>
            <sourcecode type="http"><![CDATA[
did:example:123#key-42
]]></sourcecode>
            <t>Might dereference to:</t>
            <sourcecode type="json"><![CDATA[
{
  "kty": "EC",
  "crv": "P-384",
  "alg": "ES384",
  "x": "LCeAt2sW36j94wuFP0gNEIHDzqR6Nh...er3cKFBCaAHY1svmbPV69bP3RH",
  "y": "zz2SkcOGYM6PbYlw19tcbpzo6bEMYH...d8QWykAprstPdxx4U0uScvDcYd"
}
]]></sourcecode>
          </section>
        </section>
        <section anchor="sec-naming-artifacts">
          <name>Naming Artifacts</name>
          <t>Many Issuers issue Signed Statements 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 Signed Statements 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 Signed Statements under the same key.</t>
        </section>
        <section anchor="sec-signed-statement-metadata">
          <name>Signed Statement Metadata</name>
          <t>Besides Issuer, Feed and kid, the only other mandatory metadata in a Signed Statement is the type of the Payload, indicated in the <tt>cty</tt> (content type) 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 Signed Statement to be registered, if it was signed recently.
While the Issuer is free to add any information in the payload of the Signed Statements, the Transparency Services (and most of its Auditors) can only be expected to interpret information in the Envelope.</t>
          <t>Such metadata, meant to be interpreted by the Transparency Services during Registration Policy evaluation, <bcp14>SHOULD</bcp14> be added to the <tt>reg_info</tt> header, unless the data is private (in which case, it <bcp14>MAY</bcp14> be sent to the Transparency Service as an additional input during registration).</t>
          <t>While the header <bcp14>MUST</bcp14> be present in all Signed Statements, 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 Transparency Services.
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">
        <name>Transparency Service</name>
        <t>The role of Transparency Service can be decomposed into several major functions.
The most important is maintaining a Registry, the verifiable data structure that records Signed Statements, and enforcing a Registration Policy.
It also maintains a service key, which is used to endorse the state of the Registry in Receipts.
All Transparency Services <bcp14>MUST</bcp14> expose standard endpoints for Registration of Signed Statements and Receipt issuance, which is described in <xref target="sec-messages"/>.
Each Transparency Service also defines its own Registration Policies, 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 Transparency Service.
Each of these components <bcp14>MUST</bcp14> be carefully protected against both external attacks and internal misbehavior by some or all of the operators of the Transparency Service.
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 Signed Statements registered by a given Issuer via a certain Feed. Implementations of Transparency Services <bcp14>SHOULD</bcp14> avoid using the service identity and extending the Registry in auditing endpoints, except if it is necessary to compute a Registry consistency proofs. Other evidence to support the correctness and completeness of the audit response <bcp14>MUST</bcp14> be computed from the Registry.</t>
        <section anchor="sec-service-identity-remote-attestation-and-keying">
          <name>Service Identity, Remote Attestation, and Keying</name>
          <t>Every Transparency Service <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 <bcp14>MUST</bcp14> be stable for the lifetime of the service, so that all Receipts remain valid and consistent.
The Transparency Service 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>A Transparency Service <bcp14>MAY</bcp14> provide extra evidence that it is securely implemented and operated, enabling remote authentication of the hardware platforms and/or software TCB that run the Transparency Service.
If present, this additional evidence <bcp14>MUST</bcp14> be recorded in the Registry and presented on demand to Verifiers and Auditors.
Examples for Statements that can improve trustworthy assessments of Transparency Services are RATS Conceptual Messages, such as Evidence, Endorsements, or corresponding Attestation Results (see <xref target="RFC9334"/>.</t>
          <t>For example, consider a Transparency Service implemented using a set of replicas, each running within its own hardware-protected trusted execution environments (TEEs).
Each replica <bcp14>MAY</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 can be supplemented with 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 Transparency Service that accepts to register any valid Signed Statement offered by anonymous Issuers would only provide limited value, or no value, to verifiers.
As a consequence, some form of authorization is needed prior to registration of Signed Statements to ensure completeness of audit.
More advanced use case will rely on the Transparency Service performing additional domain-specific checks before a Signed Statement is accepted.
For example, some Transparency Services may validate the content of Signed Statements.</t>
          <t>We use the term "registration policies" to refer to the checks that are performed before a Signed Statement is registered given a set of input values.
This baseline specification leaves the implementation of the registration policy to the provider of the Transparency Services and its users.</t>
          <t>As a minimum we expect that a deployment authenticates the Issuer of the Signed Statement, which requires some form of trust anchor.
As defined in <xref target="RFC6024"/>, "A trust anchor represents an authoritative entity via a public key and associated data.
The public key is used to verify digital signatures, and the associated data is used to constrain the types of information for which the trust anchor is authoritative."
The Trust Anchor may be a certificate, a raw public key or other structure, as appropriate. It can be a non-root certificate when it is a certificate.</t>
          <t>A provider of a Transparency Service is, however, expected to indicate what registration policy is used in a given deployment and inform its users about changes to the registration policy.</t>
        </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.
The Registry is only required to support concise Receipts (i.e., whose size grows at most logarithmically in the number of entries in the Registry) that can be encoded as a COSE Signed Merkle Tree Proof.</t>
          <t>It is possible to offer multiple signature algorithms for the COSE signature of receipts' Signed Merkle Tree, or to change the signing algorithm at later points.
However, the Merkle Tree algorithm (including its internal hash function) cannot easily be changed without breaking the consistency of the Registry.
It is possible to maintain separate Registries for each algorithm in parallel but the Transparency Service is then responsible for proving their mutual consistency.</t>
          <section anchor="sec-finality">
            <name>Finality</name>
            <t>A Registry is append-only: once a Signed Statement is registered and becomes a Transparent Statement, it cannot be modified, deleted, or moved.
In particular, once a Receipt is returned for a given Signed Statement, the registered Signed Statement 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.
Transparency Service implementations <bcp14>MAY</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>
                <t>the Transparency Service defines and enforces deterministic Registration Policies that can be re-evaluated based solely on the contents of the Registry at the time of Registration, and must then yield the same result.</t>
              </li>
              <li>
                <t>the ordering of entries, their cryptographic contents, and the Registry governance may be non-deterministic, but they must be verifiable.</t>
              </li>
              <li>
                <t>a Transparency Service <bcp14>MAY</bcp14> store evidence about the resolution of DIDs into DID Documents.</t>
              </li>
              <li>
                <t>a Transparency Service <bcp14>MAY</bcp14> additionally support verifiability of client authentication and access control.</t>
              </li>
            </ul>
          </section>
          <section anchor="sec-governance-and-bootstrapping">
            <name>Governance and Bootstrapping</name>
            <t>Transparency Services <bcp14>MAY</bcp14> document their governance rules and procedures for operating the Registry and updating its code (e.g., relying on Transparent Statements about code updates, secured on the Registry itself, or on some auxiliary Transparency Service).
Governance procedures, their auditing, and their transparency are implementation specific.</t>
            <ul spacing="normal">
              <li>
                <t>Governance may be based on a consortium of members that are jointly responsible for the Transparency Services, or automated based on the contents of an auxiliary governance Transparency Service.</t>
              </li>
              <li>
                <t>Governance typically involves additional records in the Registry to enable its auditing.
Hence, the Registry may contain both Transparent Statements and governance entries.</t>
              </li>
              <li>
                <t>Issuers, Verifiers, and third-party Auditors may review the Transparency Service governance before trusting the service, or on a regular basis.</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
      <section anchor="validation">
        <name>Verifying Transparent Statements</name>
        <t>For a given Artifact, Verifiers take as trusted inputs:</t>
        <ol spacing="normal" type="1"><li>
            <t>the distributed identifier of the Issuer (or its resolved key manifest),</t>
          </li>
          <li>
            <t>the expected name of the Artifact (i.e., the Feed),</t>
          </li>
          <li>
            <t>the list of service identities of trusted Transparency Services.</t>
          </li>
        </ol>
        <t>When presented with a Transparent Statement for an Artifact, Consumers verify its Issuer identity, signature, and Receipt.
They may additionally apply a validation policy based on the protected headers present both in the Envelope, the Receipt, or the Statement itself, which may include security-critical or Artifact-specific details.</t>
        <t>Some Verifiers may systematically resolve Issuer DIDs to fetch the latest corresponding DID documents.
This behavior strictly enforces the revocation of compromised keys: once the Issuer has updated its Statement to remove a key identifier, all Signed Statements include the corresponding <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 Transparency Service's Registration Policy and the scrutiny of other Verifiers.
Although this weakens their guarantees against key revocation, or against a corrupt Transparency Services, they can still keep the Receipt and blame the Issuer or the Transparency Services at a later point.</t>
      </section>
    </section>
    <section anchor="sec-signed-statement-issuance-registration-and-verification">
      <name>Signed Statement Issuance, Registration, and Verification</name>
      <t>This section details the interoperability requirements for implementers of Signed Statements issuance and validation libraries, and of Transparency Services.</t>
      <section anchor="sec-signed-statement-envelope">
        <name>Signed Statement Envelope</name>
        <t>Signed Statements are CBOR encoded <xref target="RFC8949"/> and protected by CBOR Object Signing and Encryption (COSE <xref target="RFC9052"/>). Additionally, it contains at least one or more headers and a set of statements as its payload.
Although Issuers and other parties <bcp14>MAY</bcp14> attach unprotected headers to Signed Statements, Transparency Services and Verifiers <bcp14>MUST NOT</bcp14> rely on the presence or value of additional unprotected headers in Signed Statements during Registration and validation.</t>
        <t>All Signed Statements <bcp14>MUST</bcp14> include the following protected headers:</t>
        <ul spacing="normal">
          <li>
            <t>algorithm (label: <tt>1</tt>): Asymmetric signature algorithm used by the Issuer of a Signed Statement, as an integer. For example, <tt>-35</tt> is the registered algorithm identifier for ECDSA with SHA-384, see <xref target="IANA.cose">COSE Algorithms Registry</xref>.</t>
          </li>
          <li>
            <t>Issuer (label: <tt>TBD</tt>, temporary: <tt>391</tt>): DID (Decentralized Identifier <xref target="DID-CORE"/>) of the signer, as a string. <tt>did:web:example.com</tt> is an example of a DID.</t>
          </li>
          <li>
            <t>Feed (label: <tt>TBD</tt>, temporary: <tt>392</tt>): The Issuer's name for the Artifact, as a string.</t>
          </li>
          <li>
            <t>Content type (label: <tt>3</tt>): Media type of payload, as a string. For example, <tt>application/spdx+json</tt> is the media type of SDPX in JSON encoding.</t>
          </li>
          <li>
            <t>Registration Policy info (label: <tt>TBD</tt>, temporary: <tt>393</tt>): A map of additional attributes to help enforce Registration Policies.</t>
          </li>
          <li>
            <t>Key ID (label: <tt>4</tt>): Key ID, as a bytestring.</t>
          </li>
        </ul>
        <t>In CDDL <xref target="RFC8610"/> notation, a Signed_Statement is defined as follows:</t>
        <sourcecode type="cddl"><![CDATA[
Signed_Statement = 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 .within (~time),
  ? "sequence_no": uint,
  ? "issuance_ts": uint .within (~time),
  ? "no_replay": null,
  * tstr => any
}

Protected_Header = {
  1 => int               ; algorithm identifier
  3 => tstr              ; payload type
  4 => bstr              ; Key ID
  ; TBD, Labels are temporary
  391 => tstr            ; DID of Issuer
  392 => tstr            ; Feed
  393 => Reg_Info        ; Registration Policy info
}

Unprotected_Header = {
  ; TBD, Labels are temporary
  ? 394 => [+ Receipt]
}
]]></sourcecode>
        <t>There are many types of Statements (such as SBOMs, malware scans, audit reports, policy definitions) that Issuers may want to turn into Signed Statements.
An Issuer must first decide what Statements to include. For a software supply chain, payloads describing the software artifacts may, for example, include</t>
        <ul spacing="normal">
          <li>
            <t>JSON-SPDX</t>
          </li>
          <li>
            <t>CBOR-SPDX</t>
          </li>
          <li>
            <t>SWID</t>
          </li>
          <li>
            <t>CoSWID</t>
          </li>
          <li>
            <t>CycloneDX</t>
          </li>
          <li>
            <t>in-toto</t>
          </li>
          <li>
            <t>SLSA</t>
          </li>
        </ul>
        <t>Once the Statement is serialized with the correct media-type/content-format, an 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 Signed Statement may only be registered on Transparency Services that implement the associated policy.
For instance, if a Signed Statement 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>
      </section>
      <section anchor="sec-registering-signed-statements">
        <name>Registering Signed Statements</name>
        <t>The same Signed Statement may be independently registered by multiple Transparency Services.
To register a Signed Statement, the Transparency Service performs the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Issuer Key Discovery:</strong> The Transparency Service <bcp14>MUST</bcp14> perform DID resolution of the Issuer's key and store evidence of the lookup. This step may require that the service retrieves the Issuer DID in real-time, or relies on retrieving cached resolution.</t>
          </li>
          <li>
            <t><strong>Signature verification:</strong> The Transparency Service <bcp14>MUST</bcp14> verify the signature of the Signed Statement, as described in RFC 9360, using the signature algorithm and verification key of the Issuer DID document.</t>
          </li>
          <li>
            <t><strong>Signed Statement validation:</strong> The Transparency Service <bcp14>MUST</bcp14> check that the Signed Statement includes a Statement payload and the protected headers listed above.
The Transparency Service <bcp14>MAY</bcp14> additionally verify the Statement payload format and content.</t>
          </li>
          <li>
            <t><strong>Apply Registration Policy:</strong> For named policies, the Transparency Service <bcp14>MUST</bcp14> check that the required Registration info attributes are present in the headers and apply the check described in Table 1. A Transparency Service <bcp14>MUST</bcp14> reject Signed Statements that contain an attribute used for a named policy that is not enforced by the service. Custom Signed Statements are evaluated given the current Registry state and the entire Envelope, and may use information contained in the attributes of named policies.</t>
          </li>
          <li>
            <t>Register the Signed Statement to the append-only log</t>
          </li>
          <li>
            <t>Return the Transparent Statement, which includes the Receipt
Details about generating Receipts are described in <xref target="Receipt"/>.</t>
          </li>
        </ol>
        <t>The last two steps may be shared between a batch of Signed Statements recorded in the Registry.</t>
        <t>A Transparency Service <bcp14>MUST</bcp14> ensure that a Signed Statement is registered before releasing its Receipt, so that it can always back up the Receipt by releasing the corresponding entry (the now Transparent Statement) in the Registry. Conversely, the Transparency Service <bcp14>MAY</bcp14> re-issue Receipts for the Registry content, for instance after a transient fault during Signed Statement registration.</t>
      </section>
      <section anchor="Receipt">
        <name>Transparent Statements and Receipts</name>
        <t>When a Signed Statement is registered by a TS a Transparent Statement is created. This Transparent Statement consists of the Signed Statement and a Receipt.
Receipts are based on COSE Signed Merkle Tree Proofs (<xref target="I-D.draft-steele-cose-merkle-tree-proofs"/>) with an additional wrapper structure that adds the following information:</t>
        <ul spacing="normal">
          <li>
            <t>version: Receipt version number; <bcp14>MUST</bcp14> be set to <tt>0</tt> for implementation of this document.</t>
          </li>
          <li>
            <t>ts_identifier: The DID of the Transparency Service that issued the Receipt. Verifiers <bcp14>MAY</bcp14> use this DID as a key discovery mechanism to verify the Receipt; in this case the verification is the same as for Signed Statement and the signer <bcp14>MAY</bcp14> include the <tt>kid</tt> header parameter. Verifiers <bcp14>MUST</bcp14> support the <tt>did:web</tt> method, all other methods are optional.</t>
          </li>
        </ul>
        <t>We also introduce the following requirements for the COSE signature of the Merkle Root:</t>
        <ul spacing="normal">
          <li>
            <t>The SCITT version header <bcp14>MUST</bcp14> be included and its value match the <tt>version</tt> field of the Receipt structure.</t>
          </li>
          <li>
            <t>The DID of issuer header (like in Signed Statements) <bcp14>MUST</bcp14> be included and its value match the <tt>ts_identifier</tt> field of the Receipt structure.</t>
          </li>
          <li>
            <t>TS <bcp14>MAY</bcp14> include the Registration policy info header to indicate to verifiers what policies have been applied at the registration of this Statement.</t>
          </li>
          <li>
            <t>Since <xref target="I-D.draft-steele-cose-merkle-tree-proofs"/> uses optional headers, the <tt>crit</tt> header (id: 2) <bcp14>MUST</bcp14> be included and all SCITT-specific headers (version, DID of TS and Registration Policy) <bcp14>MUST</bcp14> be marked critical.</t>
          </li>
        </ul>
        <t>The TS may include the registration time to help verifiers decide about the trustworthiness of the Transparent Statement.
The registration time is defined as the timestamp at which the TS has added this Signed Statement to its Registry.</t>
        <sourcecode type="cddl"><![CDATA[
Receipt = [
    version: int,
    ts_identifier: tstr,
    proof: SignedMerkleTreeProof
]

; Additional protected headers
; in the COSE signed_tree_root of the SignedMerkleTreeProof
Protected_Header = {
  390 => int         ; SCITT Receipt Version
  394 => tstr        ; DID of Transparency Service (required)
  ? 395 => Reg_info  ; Registration policy information (optional)

  ; Other COSE Signed Merkle Tree headers
  ; (e.g. tree algorithm, tree size)

  ; Additional standard COSE headers
  2 => [+ label]            ; Critical headers
  ? 4 => bstr               ; Key ID (optional)
  ? 33 => COSE_X509         ; X.509 chain (optional)
}

; Details of the registration info, as provided by the TS
RegistrationInfo = {
  ? "registration_time": uint .within (~time),
  * tstr => any
}
]]></sourcecode>
      </section>
      <section anchor="sec-signed-statement-issuance">
        <name>Signed Statement 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 Signed Statements.
An Issuer must first decide on a suitable format to serialize the Statement payload. For a software supply chain, payloads describing the software artifacts may, for example, include</t>
        <ul spacing="normal">
          <li>
            <t>JSON-SPDX</t>
          </li>
          <li>
            <t>CBOR-SPDX</t>
          </li>
          <li>
            <t>SWID</t>
          </li>
          <li>
            <t>CoSWID</t>
          </li>
          <li>
            <t>CycloneDX</t>
          </li>
          <li>
            <t>in-toto</t>
          </li>
          <li>
            <t>SLSA</t>
          </li>
        </ul>
        <t>Once the Statement is serialized with the correct media-type/content-format, an Issuer <bcp14>MUST</bcp14> fill in the attributes for the Registration Policy information header.
From the Issuer's perspective, using attributes from named policies ensures that the Signed Statement may only be registered on Transparency Services that implement the associated policy.
For instance, if a Signed Statement is frequently updated, and it is important for Verifiers to always consider the latest version, Issuers may use the <tt>sequence_no</tt> or <tt>issuer_ts</tt> attributes.</t>
        <t>Once all the Envelope headers are set, an Issuer <bcp14>MUST</bcp14> use a standard COSE implementation to produce an appropriately serialized Signed Statement (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 Signed Statement).</t>
      </section>
      <section anchor="sec-registering-signed-statements-1">
        <name>Registering Signed Statements</name>
        <t>The same Signed Statement may be independently registered in multiple Transparency Services.
To register a Signed Statement, the service performs the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Client authentication:</strong> This is implementation-specific and <bcp14>MAY</bcp14> be unrelated to the Issuer identity.
Signed Statements may be registered by a different party than their Issuer.</t>
          </li>
          <li>
            <t><strong>Issuer identification:</strong> The Transparency Service <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 resolves the Issuer DID and record the resulting document, or rely on a cache of recent resolutions.</t>
          </li>
          <li>
            <t><strong>Envelope signature verification:</strong> As described in COSE signature, using the signature algorithm and verification key of the Issuer DID document</t>
          </li>
          <li>
            <t><strong>Envelope validation:</strong> The service <bcp14>MUST</bcp14> check that the Envelope includes a Statement payload and the protected headers listed above
The service <bcp14>MAY</bcp14> additionally verify the Statement payload format and content.</t>
          </li>
          <li>
            <t><strong>Apply Registration Policy:</strong> for named policies, the Transparency Service must check that the required Registration info attributes are present in the Envelope and apply the check described in Table 1.
A Transparency Service <bcp14>MUST</bcp14> reject Signed Statements that contain an attribute used for a named policy that is not enforced by the service.
Custom Signed Statements are evaluated given the current Registry state and the entire Envelope, and <bcp14>MAY</bcp14> use information contained in the attributes of named policies.</t>
          </li>
          <li>
            <t>Commit (register) the new Signed Statement to the Registry</t>
          </li>
          <li>
            <t>Sign and return the Receipt</t>
          </li>
        </ol>
        <t>The last two steps <bcp14>MAY</bcp14> be shared between a batch of Signed Statements recorded in the Registry.</t>
        <t>A Transparency Service <bcp14>MUST</bcp14> ensure that a Signed Statement is registered before releasing its Receipt, so that it can always back up the Receipt by releasing the corresponding entry (the now Transparent Statement) in the Registry.
Conversely, the service <bcp14>MAY</bcp14> re-issue Receipts for the Registry content, for instance after a transient fault during Signed Statement Registration.</t>
      </section>
      <section anchor="sec-validation-of-transparent-statements">
        <name>Validation of Transparent Statements</name>
        <t>The high-level validation algorithm is described in <xref target="validation"/>; the algorithm-specific details of checking Receipts are covered in <xref target="I-D.draft-steele-cose-merkle-tree-proofs"/>.</t>
        <t>Before checking a Transparent Statement, 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 Transparent Statement is registered on.</t>
        <t>In some scenarios, the Verifier already expects a specific Issuer and Feed for the Transparent Statement, while in other cases they are not known in advance and can be an output of validation.
Verifiers <bcp14>MAY</bcp14> be configured to re-verify the Issuer's signature locally, but this requires a fresh resolution of the Issuer's DID, which <bcp14>MAY</bcp14> fail if the DID Document is not available or if the statement's signing key has been revoked. Otherwise, the Verifier trusts the validation done by the Transparency Service 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 Transparency Services.
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 Statement payload, as well as any local state.</t>
        <t>Verifiers <bcp14>MAY</bcp14> offer options to store or share the Receipt of the Transparent Statement for auditing the Transparency Services in case a dispute arises.</t>
      </section>
    </section>
    <section anchor="sec-federation">
      <name>Federation</name>
      <t>This topic is still under discussion, see <eref target="https://github.com/ietf-wg-scitt/draft-ietf-scitt-architecture/issues/79">issue 79</eref></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 Transparency Service instances may be governed and operated by different organizations that do not trust one another.</t>
      <t>This may involve registering the same Signed Statements at different Transparency Services, each with their own purpose and Registration Policy.
This may also involve attaching multiple Receipts to the same Signed Statements, each Receipt endorsing the Issuer signature and a subset of prior Receipts, and each Transparency Service verifying prior Receipts as part of their Registration Policy.</t>
      <t>For example,
a supplier's Transparency Service may provide a complete, authoritative Registry for some kind of Signed Statements, whereas a Consumer's Transparency Service may collect different kinds of Signed Statements
to ensure complete auditing for a specific use case, and possibly require additional reviews before registering some of these Signed Statements.</t>
    </section>
    <section anchor="sec-transparency-service-api">
      <name>Transparency Service API</name>
      <section anchor="sec-messages">
        <name>Messages</name>
        <t>All messages are sent as HTTP GET or POST requests.</t>
        <t>If the Transparency Service cannot process a client's request, it <bcp14>MUST</bcp14> return an HTTP 4xx or 5xx status code, and the body <bcp14>MAY</bcp14> contain a JSON problem details object (<xref target="RFC7807"/>) with the following fields:</t>
        <ul spacing="normal">
          <li>
            <t>type: A URI reference identifying the problem.
To facilitate automated response to errors, this document defines a set of standard tokens for use in the type field within the URN namespace of: "urn:ietf:params:scitt:error:".</t>
          </li>
          <li>
            <t>detail: A human-readable string describing the error that prevented the Transparency Service from processing the request, ideally with sufficient detail to enable the error to be rectified.</t>
          </li>
        </ul>
        <t>Error responses <bcp14>MUST</bcp14> be sent with the <tt>Content-Type: application/problem+json</tt> HTTP header.</t>
        <t>As an example, submitting a Signed Statement with an unsupported signature algorithm would return a <tt>400 Bad Request</tt> status code and the following body:</t>
        <sourcecode type="json"><![CDATA[
{
  "type": "urn:ietf:params:scitt:error:badSignatureAlgorithm",
  "detail": "The Statement was signed with an unsupported algorithm"
}
]]></sourcecode>
        <t>Most error types are specific to the type of request and are defined in the respective subsections below.
The one exception is the "malformed" error type, which indicates that the Transparency Service could not parse the client's request because it did not comply with this document:</t>
        <ul spacing="normal">
          <li>
            <t>Error code: <tt>malformed</tt> (The request could not be parsed).</t>
          </li>
        </ul>
        <t>Clients <bcp14>MUST</bcp14> treat 500 and 503 HTTP status code responses as transient failures and <bcp14>MAY</bcp14> retry the same request without modification at a later date.
Note that in the case of a 503 response, the Transparency Service <bcp14>MAY</bcp14> include a <tt>Retry-After</tt> header field per <xref target="RFC7231"/> in order to request a minimum time for the client to wait before retrying the request.
In the absence of this header field, this document does not specify a minimum.</t>
        <section anchor="sec-register-signed-statement">
          <name>Register Signed Statement</name>
          <section anchor="sec-request">
            <name>Request</name>
            <sourcecode type="http"><![CDATA[
POST <Base URL>/entries
]]></sourcecode>
            <t>Headers:</t>
            <ul spacing="normal">
              <li>
                <t><tt>Content-Type: application/cose</tt></t>
              </li>
            </ul>
            <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>
                <t>Status 201 - Registration is successful.
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Header <tt>Location: &lt;Base URL&gt;/entries/&lt;Entry ID&gt;</tt></t>
                  </li>
                  <li>
                    <t>Header <tt>Content-Type: application/json</tt></t>
                  </li>
                  <li>
                    <t>Body <tt>{ "entryId": "&lt;Entry ID"&gt; }</tt></t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Status 202 - Registration is running.
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Header <tt>Location: &lt;Base URL&gt;/operations/&lt;Operation ID&gt;</tt></t>
                  </li>
                  <li>
                    <t>Header <tt>Content-Type: application/json</tt></t>
                  </li>
                  <li>
                    <t>(Optional) Header: <tt>Retry-After: &lt;seconds&gt;</tt></t>
                  </li>
                  <li>
                    <t>Body <tt>{ "operationId": "&lt;Operation ID&gt;", "status": "running" }</tt></t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Status 400 - Registration was unsuccessful due to invalid input.
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Error code <tt>badSignatureAlgorithm</tt></t>
                  </li>
                  <li>
                    <t>TBD: more error codes to be defined, see <eref target="https://github.com/ietf-wg-scitt/draft-ietf-scitt-architecture/issues/17">#17</eref></t>
                  </li>
                </ul>
              </li>
            </ul>
            <t>If HTTP code 202 is returned, then clients must wait until Registration succeeded or failed by polling the Registration status using the Operation ID returned in the response.
Clients <bcp14>MUST NOT</bcp14> report registration is complete until an HTTP code 202 response has been received. A time out of the Client <bcp14>MUST</bcp14> be treated as a registration failure, even though the transparency service may eventually complete the registration.</t>
          </section>
        </section>
        <section anchor="sec-retrieve-operation-status">
          <name>Retrieve Operation Status</name>
          <section anchor="sec-request-1">
            <name>Request</name>
            <sourcecode type="http"><![CDATA[
GET <Base URL>/operations/<Operation ID>
]]></sourcecode>
          </section>
          <section anchor="sec-response-1">
            <name>Response</name>
            <t>One of the following:</t>
            <ul spacing="normal">
              <li>
                <t>Status 200 - Registration is running
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Header: <tt>Content-Type: application/json</tt></t>
                  </li>
                  <li>
                    <t>(Optional) Header: <tt>Retry-After: &lt;seconds&gt;</tt></t>
                  </li>
                  <li>
                    <t>Body: <tt>{ "operationId": "&lt;Operation ID&gt;", "status": "running" }</tt></t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Status 200 - Registration was successful
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Header: <tt>Location: &lt;Base URL&gt;/entries/&lt;Entry ID&gt;</tt></t>
                  </li>
                  <li>
                    <t>Header: <tt>Content-Type: application/json</tt></t>
                  </li>
                  <li>
                    <t>Body: <tt>{ "operationId": "&lt;Operation ID&gt;", "status": "succeeded", "entryId": "&lt;Entry ID&gt;" }</tt></t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Status 200 - Registration failed
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Header <tt>Content-Type: application/json</tt></t>
                  </li>
                  <li>
                    <t>Body: <tt>{ "operationId": "&lt;Operation ID&gt;", "status": "failed", "error": { "type": "&lt;type&gt;", "detail": "&lt;detail&gt;" } }</tt></t>
                  </li>
                  <li>
                    <t>Error code: <tt>badSignatureAlgorithm</tt></t>
                  </li>
                  <li>
                    <t>TODO: more error codes to be defined, see <eref target="https://github.com/ietf-wg-scitt/draft-ietf-scitt-architecture/issues/17">#17</eref></t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Status 404 - Unknown Operation ID
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Error code: <tt>operationNotFound</tt></t>
                  </li>
                  <li>
                    <t>This can happen if the operation ID has expired and been deleted.</t>
                  </li>
                </ul>
              </li>
            </ul>
            <t>If an operation failed, then error details <bcp14>MUST</bcp14> be embedded as a JSON problem details object in the <tt>"error"</tt> field.</t>
            <t>If an operation ID is invalid (i.e., it does not correspond to any submit operation), a service may return either a 404 or a <tt>running</tt> status.
This is because differentiating between the two may not be possible in an eventually consistent system.</t>
          </section>
        </section>
        <section anchor="sec-retrieve-signed-statement">
          <name>Retrieve Signed Statement</name>
          <section anchor="sec-request-2">
            <name>Request</name>
            <sourcecode type="http"><![CDATA[
GET <Base URL>/entries/<Entry ID>
]]></sourcecode>
            <t>Query parameters:</t>
            <ul spacing="normal">
              <li>
                <t>(Optional) <tt>embedReceipt=true</tt></t>
              </li>
            </ul>
            <t>If the query parameter <tt>embedReceipt=true</tt> is provided, then the Signed Statement is returned with the corresponding Registration Receipt embedded in the COSE unprotected header.</t>
          </section>
          <section anchor="sec-response-2">
            <name>Response</name>
            <t>One of the following:</t>
            <ul spacing="normal">
              <li>
                <t>Status 200.
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Header: <tt>Content-Type: application/cose</tt></t>
                  </li>
                  <li>
                    <t>Body: COSE_Sign1</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Status 404 - Entry not found.
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Error code: <tt>entryNotFound</tt></t>
                  </li>
                </ul>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="sec-retrieve-registration-receipt">
          <name>Retrieve Registration Receipt</name>
          <section anchor="sec-request-3">
            <name>Request</name>
            <sourcecode type="http"><![CDATA[
GET <Base URL>/entries/<Entry ID>/receipt
]]></sourcecode>
          </section>
          <section anchor="sec-response-3">
            <name>Response</name>
            <t>One of the following:</t>
            <ul spacing="normal">
              <li>
                <t>Status 200.
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Header: <tt>Content-Type: application/cbor</tt></t>
                  </li>
                  <li>
                    <t>Body: SCITT_Receipt</t>
                  </li>
                </ul>
              </li>
              <li>
                <t>Status 404 - Entry not found.
                </t>
                <ul spacing="normal">
                  <li>
                    <t>Error code: <tt>entryNotFound</tt></t>
                  </li>
                </ul>
              </li>
            </ul>
            <t>The retrieved Receipt may be embedded in the corresponding COSE_Sign1 document in the unprotected header.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="sec-privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Unless advertised by a Transparency Service, every Issuer must treat Signed Statements it registered (rendering them Transparent Statements) as public.
In particular, Signed Statements' Envelopes and Statement payload <bcp14>MUST NOT</bcp14> carry any private information in plaintext.</t>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>On its own, verifying a Transparent Statement 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
Transparency Service.
If the Verifier trusts the Issuer, it can infer that an Issuer's Signed Statement 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 Transparency Service, it can independently infer that the Signed Statement passed the Transparency Service Registration Policy and that has been persisted in the Registry.
Unless advertised in the Transparency Service Registration Policy, the Verifier cannot assume that the ordering of Signed Statements in the Registry matches the ordering of their issuance.</t>
      <t>Similarly, the fact that an Issuer can be held accountable for its Transparent Statements does not on its own provide any mitigation or remediation mechanism in case one of these Transparent Statements turned out to be misleading or malicious---just that signed evidence will be available to support them.</t>
      <t>Issuers <bcp14>MUST</bcp14> ensure that the Statement payloads in their Signed Statements are correct and unambiguous, for example by avoiding ill-defined or ambiguous formats that may cause Verifiers to interpret the Signed Statement as valid for some other purpose.</t>
      <t>Issuers and Transparency Services <bcp14>MUST</bcp14> carefully protect their private signing keys and avoid these keys being used for any purpose not described in this architecture document.
In cases where key re-use is unavoidable, keys <bcp14>MUST NOT</bcp14> sign any other message that may be verified as an Envelope as part of a Signed Statement.</t>
      <section anchor="sec-threat-model">
        <name>Threat Model</name>
        <t>The document provides a generic threat model for SCITT, describing its residual security properties when some of its actors (identity providers, Issuers, Transparency Services, 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-signed-statement-authentication-and-transparency">
          <name>Signed Statement Authentication and Transparency</name>
          <t>SCITT primarily supports checking of Signed Statement authenticity, both from the Issuer (authentication) and from the Transparency Service (transparency).
These guarantees are meant to hold for extensive periods of time, possibly decades.</t>
          <t>It can never be assumed that some Issuers and some Transparency Services will not 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 Statement originating from a given Issuer, registered at a given Transparency Service (both identified in the Verifier's local authorization policy) and would not depend on any other Issuer or Transparency Services.</t>
          <t>Authorized supply chain actors (Issuers) cannot be stopped from producing Signed Statements including false assertions in their Statement payload (either by mistake or by corruption), but these Issuers can made accountable by ensuring their Signed Statements are systematically registered at a trustworthy Transparency Service.</t>
          <t>Similarly, providing strong residual guarantees against faulty/corrupt Transparency Services is a SCITT design goal.
Preventing a Transparency Service from registering Signed Statements that do not meet its stated Registration Policy, or to issue Receipts that are not consistent with their append-only Log is not possible.
In contrast Transparency Services can be hold accountable and they can be called out by any Auditor that replays their Registry against any contested Receipt.
Note that the SCITT Architecture does not require trust in a single centralized Transparency Service: different actors may rely on different Transparency Services, each registering a subset of Signed Statements subject to their own policy.</t>
          <t>In both cases, the SCITT Architecture provides generic, universally-verifiable cryptographic proof to individually blame Issuers or the Transparency Service.
On one hand, this enables valid actors to detect and disambiguate malicious actors who issue contradictory Signed Statements to different entities (Verifiers, Auditors, Issuers), otherwise known as 'equivocation'.
On the other hand, their liability and the resulting damage to their reputation are application specific, and out of scope of the SCITT Architecture.</t>
          <t>Verifiers and Auditors need not be trusted by other actors.
In particular, so long as actors maintain proper control of their signing keys and identity infrastructure they cannot "frame" an Issuer or a Transparency Service for Signed Statements they did not issue or register.</t>
          <section anchor="sec-append-only-log">
            <name>Append-only Log</name>
            <t>If a Transparency Service is honest, then a Transparent Statement including a correct Receipt ensures that the associated Signed Statement passed its Registration Policy and was recorded appropriately.</t>
            <t>Conversely, a corrupt Transparency Service may</t>
            <ol spacing="normal" type="1"><li>
                <t>refuse or delay the Registration of Signed Statements,</t>
              </li>
              <li>
                <t>register Signed Statements that do not pass its Registration Policy (e.g., Signed Statement with Issuer identities and signatures that do not verify),</t>
              </li>
              <li>
                <t>issue verifiable Receipts for Signed Statements that do not match its Registry, or</t>
              </li>
              <li>
                <t>refuse access to its Registry (e.g., to Auditors, possibly after storage loss).</t>
              </li>
            </ol>
            <t>An Auditor granted (partial) access to a 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 Transparency Service for them.
This ensures any Verifier that trusts at least one such Auditor that (2,3) will be blamed to the Transparency Service.</t>
            <t>Due to the operational challenge of maintaining a globally consistent append-only Log,
some Transparency Services may provide limited support for historical queries on the Signed
Statements they have registered, and accept the risk of being blamed for inconsistent
Registration or Issuer equivocation.</t>
            <t>Verifiers and Auditors may also witness (1,4) but may not be able to collect verifiable evidence for it.</t>
          </section>
          <section anchor="sec-availability-of-transparent-signed-statement">
            <name>Availability of Transparent Signed Statement</name>
            <t>Networking and Storage are trusted only for availability.</t>
            <t>Auditing may involve access to data beyond what is persisted in the Transparency Services.
For example, the registered Transparency Service 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 may want to independently keep their own record of the Signed Statements they issue, endorse, verify, or audit.</t>
          </section>
        </section>
        <section anchor="sec-confidentiality-and-privacy">
          <name>Confidentiality and Privacy</name>
          <t>According to Zero Trust Principles any location in a network is never trusted.
All contents exchanged between actors is protected using secure authenticated channels (e.g., TLS) but, as usual, this may not exclude network traffic analysis.</t>
          <section anchor="sec-signed-statements-and-their-registration">
            <name>Signed Statements and Their Registration</name>
            <t>The Transparency Service is trusted with the confidentiality of the Signed Statements presented for Registration.
Some Transparency Services may publish every Signed Statement in their logs, to facilitate their dissemination and auditing.
Others may just return Receipts to clients that present Singed Statements for Registration, and disclose the Append-only Log only to Auditors trusted with the confidentiality of its contents.</t>
            <t>A collection of Signed Statements must not leak information about the contents of other Signed Statements registered on the Transparency Service.</t>
            <t>Nonetheless, Issuers must carefully review the inclusion of private/confidential materials in their Statements.
For example, Issuers must remove Personally Identifiable Information (PII) as clear text in the statement.
Alternatively, Issuers may include opaque cryptographic statements, such as hashes.</t>
          </section>
          <section anchor="sec-queries-to-the-registry">
            <name>Queries to the Registry</name>
            <t>The confidentiality of queries is implementation-specific, and generally not guaranteed.
For example, while offline Envelope validation of Signed Statements is private, a Transparency Service may monitor which of its Transparent Statements are being verified from lookups to ensure their freshness.</t>
          </section>
        </section>
        <section anchor="sec-cryptographic-assumptions">
          <name>Cryptographic Assumptions</name>
          <t>SCITT relies on standard cryptographic security for signing schemes (EUF-CMA: for a given key, given the public key and any number of signed messages, an 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 Signed Statement in this log.)</t>
          <t>The SCITT Architecture 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-transparency-service-clients">
          <name>Transparency Service Clients</name>
          <t>Trust in clients that submit Signed Statements for Registration is implementation-specific.
Hence, an attacker may attempt to register any Signed Statement it has obtained, at any Transparency Service that accepts them, possibly multiple times and out of order.
This may be mitigated by a Transparency Service 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.
(Transparency Services and other parties may record identity-resolution evidence to facilitate its auditing.)</t>
          <t>If one of the credentials of an Issuer gets compromised, the SCITT Architecture still guarantees the authenticity of all Signed Statements signed with this credential that have been registered on a Transparency Service before the compromise.
It is up to the Issuer to notify Transparency Services of credential revocation to stop Verifiers from accepting Signed Statements signed with compromised credentials.</t>
          <t>The confidentiality of any identity lookup during Signed Statement Registration or Transparent Statement Verification is out of scope.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD; <xref target="mybody"/>.</t>
      <section anchor="sec-urn-sub-namespace-for-scitt-urnietfparamsscitt">
        <name>URN Sub-namespace for SCITT (urn:ietf:params:scitt)</name>
        <t>IANA is requested to register the URN sub-namespace <tt>urn:ietf:params:scitt</tt>
in the "IETF URN Sub-namespace for Registered Protocol Parameter Identifiers"
Registry <xref target="IANA.params"/>, following the template in <xref target="RFC3553"/>:</t>
        <sourcecode type="output"><![CDATA[
   Registry name:  scitt

   Specification:  [RFCthis]

   Repository:  http://www.iana.org/assignments/scitt

   Index value:  No transformation needed.
]]></sourcecode>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="E. Messeri" initials="E." surname="Messeri"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="RFC6024">
          <front>
            <title>Trust Anchor Management Requirements</title>
            <author fullname="R. Reddy" initials="R." surname="Reddy"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>A trust anchor represents an authoritative entity via a public key and associated data. The public key is used to verify digital signatures, and the associated data is used to constrain the types of information for which the trust anchor is authoritative. A relying party uses trust anchors to determine if a digitally signed object is valid by verifying a digital signature using the trust anchor's public key, and by enforcing the constraints expressed in the associated data for the trust anchor. This document describes some of the problems associated with the lack of a standard trust anchor management mechanism and defines requirements for data formats and push-based protocols designed to address these problems. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6024"/>
          <seriesInfo name="DOI" value="10.17487/RFC6024"/>
        </reference>
        <reference anchor="RFC7807">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <date month="March" year="2016"/>
            <abstract>
              <t>This document defines a "problem detail" as a way to carry machine- readable details of errors in a HTTP response to avoid the need to define new error response formats for HTTP APIs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7807"/>
          <seriesInfo name="DOI" value="10.17487/RFC7807"/>
        </reference>
        <reference anchor="RFC7231">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems. This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7231"/>
          <seriesInfo name="DOI" value="10.17487/RFC7231"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <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>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC3553">
          <front>
            <title>An IETF URN Sub-namespace for Registered Protocol Parameters</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <author fullname="T. Hardie" initials="T." surname="Hardie"/>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <date month="June" year="2003"/>
            <abstract>
              <t>This document describes a new sub-delegation for the 'ietf' URN namespace for registered protocol items. The 'ietf' URN namespace is defined in RFC 2648 as a root for persistent URIs that refer to IETF- defined resources. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="73"/>
          <seriesInfo name="RFC" value="3553"/>
          <seriesInfo name="DOI" value="10.17487/RFC3553"/>
        </reference>
        <reference anchor="IANA.params" target="http://www.iana.org/assignments/params">
          <front>
            <title>Uniform Resource Name (URN) Namespace for IETF Use</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.cose" target="http://www.iana.org/assignments/cose">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="DID-CORE" target="https://www.w3.org/TR/did-core/">
          <front>
            <title>Decentralized Identifiers (DIDs) v1.0</title>
            <author>
              <organization>W3C</organization>
            </author>
            <date year="2022" month="July" day="22"/>
          </front>
        </reference>
        <reference anchor="DID-WEB" target="https://w3c-ccg.github.io/did-method-web/">
          <front>
            <title>did:web Decentralized Identifiers Method Spec</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-steele-cose-merkle-tree-proofs">
          <front>
            <title>Concise Encoding of Signed Merkle Tree Proofs</title>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   This specification describes verifiable data structures and
   associated proof types for use with COSE.  The extensibility of the
   approach is demonstrated by providing CBOR encodings for RFC9162.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-steele-cose-merkle-tree-proofs-01"/>
        </reference>
        <reference anchor="PBFT">
          <front>
            <title>Practical byzantine fault tolerance and proactive recovery</title>
            <author fullname="Miguel Castro" initials="M." surname="Castro">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Barbara Liskov" initials="B." surname="Liskov">
              <organization>MIT Laboratory for Computer Science</organization>
            </author>
            <date month="November" year="2002"/>
          </front>
          <seriesInfo name="ACM Transactions on Computer Systems" value="vol. 20, no. 4, pp. 398-461"/>
          <seriesInfo name="DOI" value="10.1145/571637.571640"/>
          <refcontent>Association for Computing Machinery (ACM)</refcontent>
        </reference>
        <reference anchor="MERKLE">
          <front>
            <title>A Digital Signature Based on a Conventional Encryption Function</title>
            <author fullname="Ralph C. Merkle" initials="R." surname="Merkle">
              <organization/>
            </author>
            <date year="1988"/>
          </front>
          <seriesInfo name="Advances in Cryptology — CRYPTO ’87" value="pp. 369-378"/>
          <seriesInfo name="DOI" value="10.1007/3-540-48184-2_32"/>
          <seriesInfo name="ISBN" value="[&quot;9783540187967&quot;, &quot;9783540481843&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="I-D.ietf-scitt-software-use-cases">
          <front>
            <title>Detailed Software Supply Chain Uses Cases for SCITT</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer Institute for Secure Information Technology</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>ARM</organization>
            </author>
            <author fullname="Dick Brooks (REA)" initials="D." surname="Brooks">
              <organization>REA</organization>
            </author>
            <author fullname="Bob Martin" initials="B." surname="Martin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Brian Knight" initials="B." surname="Knight">
              <organization>Microsoft</organization>
            </author>
            <date day="15" month="September" year="2023"/>
            <abstract>
              <t>   This document includes a collection of representative Software Supply
   Chain Use Case Descriptions.  These use cases aim to identify
   software supply chain problems that the industry faces today and acts
   as a guideline for developing a comprehensive solution for these
   classes of scenarios.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-software-use-cases-01"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
D5//sJe8/nbw5c5u+dvV3fIKVvTzu5+K7PTvj3+cjk7Pf5q9eP1l8uDd/Qfv
lnYQGvbg+4NnzvxM9l9dPfvm1dW3x6dH472L18fwvx+Oz65OH7w6Gh8/P3r1
7nh1dvXzw1dHr745e/39g7Pj1w/PnAW/fVj9OwYZG6DRF6cncPXfHR4eTM6m
B8uTZwfTk/Nsev+nix+XZQQbnjz85uyb5beXXyy2s8uf7347fF49fPzFdO/i
iw0Z5Bem1/1/+0Gs0ukPfx+9uniQpeXrNwej11/+PXr895sfJjNcV/7w2ctw
783PL38M3/02nv948VP25Pvjox8/6STC05PvVm9Gxfe3e9nL6P75d9GTNGuA
evB2fLV6++Dxb3tRtBp/8/hldfzo+8Px8dWoXA/Rw+0rgGj8o0L02xePdlfT
dwfn38DK3x6+nb04GH33xXfR1W24/fN09zSMnv89OvjqqxpIe/iXcMCTiTgo
llwK0ak8YnpSkGqOpJx4JPMLrtdAfMHnGSRJYmEcZi4h1/KCm2pGwmLROBqQ
wCxKuXxflUfhSsXNI2/Ac1YWQQ4pVZdG6ykXFP64DnsyETpML5W5vtJ3dVri
KZ7iDHCg1/oc5LnE8jm1F3wN3hiDMI2M9knvE++Ct76StxNnOWgnoqoXpP3z
11+AIkX/T0+T3meel6cxiYqy2GAz/3CazJBsMF5WAxauB0k2kJzQXzaVMmNc
N0bb3wJstIHNNpDZ7U8aZ3vLiN6uTvwnpW9VyVT6duXN9fK3vtmUv0VVJtNf
WDBvZwpPzY7qUrkIzK5w7m7ME9CZO3iyb1Pubcq83fLu8cmLo3e/XTx6dQO3
9yOCb7fQO5q/yx+Njk9/fgGjrJN+5cLjBXsVzrzckR5Xm1K7JEk3nWn61khq
8/TZ4mmqDAD4/RLfeVGFYoCgugcYuSm1BcUyn8xEsqY4x3E+zbDS/ogco7dk
CmJTiptc1EyEKjnY3daHloxxTEhjQ8uQhQ43zbCR20QVEboKHHjG29JNofes
sJvGBk4+Ern8PL4xt7ieli1pUNQALucCovmx3dpagz2MyXS0aak8lcQO9EeV
FHiu5bhpxyhOwzLZrkNeWA6cnWF1MGqI4lTx6EjOJ5/hyuZ+nWsmk8YsGiBf
j6vVNSe36x3fsqer5Nst6luq+bBtQZySUC6064oUk6f+TOSGsljY2lCgke9p
Ak0xrpMr+KCc3pEa76Wj9SXfA5mfuAQ44htrLP1obNDWATOhCmhYpymSCFoH
O4Wz+Um3Lc7C7jhQKmU+E3czupBsKWRTCxTLfTvmM5Nf27YWp9oH9eHRU+hT
gabKlSGketnaMn4RV6NqawQSo11JihaL/wJphlto+hrg/gYXqRb3vuOyCBQ5
5kVyh2o7pk9pT44yJhuuFDIt5SQ73f2iwtu8rSTDCpCyercOJ3JJe8xCSFRs
cCSW1vvc1yh+9vt7tShm4ZwqucM9j2xxFi3Cb7/wu6AZHwq6kkpMfdnicAIp
+0cuO8kX1TJcbMTQUkULIFGABNz7hBxOMdypKhmX2oOqowDwGRIQKZQlyQeY
b7gAejuThG9N6CR9OCxGCQARtWw0D5BvAC8EHxbCy9kkWWLnfBhPNYYfQaTl
62fzimlh6/LYcIlRDV2xNmogiGLul0HEi8Lf0byQwly/As0wRQs5z4/umSU2
1KyGc621loVT5HpNhyCnimlLeQXNztZq1a0tfbjbF4qJTrq36bUCjKKlsqPk
GjI/aStUgohrMzIPOl3v7O96i2CzBSZhdAr/12wtv/NVi8ThlLDRqBFn0V5F
RI7wBwwvsRAp+tSPO2tuE1C0F9/aRjM6G3vOKF0WCTVsW1N6GvlF4q3w8qTs
qavhsP9RglePLTHQM6VM2XFskrC0RFgXCROI8BOlVzJUqZNNNrGqFGXSYHQV
+kkwPbJA6kfpnreayixfaqIBViHBTlxIlsT/L+vSnISW0Bx3oX44BCcvRexr
mTchZXDTJG+6xQtM+ubIVRCxfdkiy4zKenV8/NRHdJNmzoqHSEjt9dSV3p5j
JjOV/Xi2eockEgTd5+EirYIrIDQFue8358+eXwG6Yl9TzEKpJTtqAp6CfYYh
GOSPx8pwizQTrVxLtz+lIK0SkyttLnDpjOoOStfaJQBxNcY67fEqF0eNIpNF
jvbwLJ5BSvC7bNG/4xqp0Qxh+G0RcxoPc0npuddKBvyENE1QFfmJy/phKyw0
9aEkOww+OeNRhIrwLk8iJ326bAvx4yoZ+ohLD03QpNk7APYtasEiCaJ4GqNF
m1hbTsDF2+uImW7aElcJGAbEPk1qpFtblG9EvUgjc9hM6jlxShvWAZD6grG9
5jx/ZIMeHPJFuoMA4MShVtQd4sAWIGEKBfo67LzXOybjeCu1tQZ6UyGjDuB+
o3g4P7itghuqSvMwkYAiVbWo3PtNmE5MbS0lICA42GRhUR/Maa4py0HmA6eQ
vslEV/O5GcT4Zf0eMilocyho1VZkW04iMTQByFzwQnLM/NaSw87i3jaxS5VQ
v3+iU5CQRcCk6IK78cCqz6vIKxuPhJqsCUazmZaG6tGbOL+tmq/c2lRUSioR
A221cD8fTpaSuN6gWgQt1logHhOy3+pdXOTkTqASUZIZJ2Ug+jYjUImqOoEW
3EOyq/oMAlOrxcBdL0Ln5lFaIJdBodzHdNXV0i5yOuhqRxVb0d+JOdKU6WCe
hhWK13SLt6nwj5QDujp8JnLgortZDMXAGaMmV3p3qLFuwQaptOdFS+i4tkig
0OCZVO/2g+9Ue8R6HKQu8yHVA8AoU3EmrU9N0wDqMwkEih/spMu4+4uDq0sq
XQ50dEGFtFi0s2hyLJvrg0pqWD0bTGpVUpyySRdUqR91JGq4OTDNwCk42rMC
aB+tzvo/DgpogrzYKJQ7S+cXFTWQtEmVNyq0LTgwsHKJ8t/4LSCaiH13SZFn
Eu4OcgoGTZEkJ5N4mBtqdrlbKgoeRK5BLBgGgTH6bnlWuLcNbDSl9RQZFRG7
I+JZUKMm5Ogpd6sh1YmhRl7fMgExFgLdkUvkrbZBBNjdl8Fu0dSooI2eCLER
Q2lNJ023Tnaj76G/SKyFEpba9Y6KcDSAKgyzVXnoJDXMCMhO7nesRGW3vfQR
1kEwEhBV00KRUK2R7JQhS44iAnWixJJPGJrT56rR+kG7W3Mr8AOtQCGVZPss
uJtiLF4sbmKaZHGxQbP6dXqcDVSqCykkoGAyBJ6IlinX6uPqF+YmJJ2WGSC8
ZJ7wO89EObJWW7ZTyoRIsnxHdWM6EnSxeHSgXN8X1JTvqpwwtTY4oF1IRPIb
LnwebDQbuADibEiMr/Q4wmG1OLeWg+Y9Iz6s25AjObPQbAgUW68IH/RmYWlK
qoWvMONFpXF4p02G/VZjcmHaetDIsgUZi3XaXmkqD1FLI2TQiJDau36plknZ
PPCleZqvOEba6ZXzKU2IGx1tPUTn7i6AgoDudCucovRcG/D+7gPsh7Fx4D1r
qwGyiZDvS6WBPiRnsZbiUMRaWB4XXEKJz+1+be0yUuFDuwJYRc/S0tpo7ttk
MChCrX6jgphr20X6yMAxWqBuLyn9PQ03RDTFZw74Ga1+4PYkRjN6ES49PlCI
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
AkUjmBUBAA==

-->

</rfc>
