<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-jangra-scitt-digest-evidence-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Digest-Only Evidence Logs">Digest-Only Evidence Logs: Completeness, Disclosure and Sampling over RFC 9162 Transparency Logs</title>

    <author initials="A." surname="Jangra" fullname="Anil Jangra">
      <organization>RiskRouter</organization>
      <address>
        <email>anil@riskrouter.eu</email>
      </address>
    </author>

    <date year="2026" month="October" day="08"/>

    <area>Security</area>
    <workgroup>SCITT</workgroup>
    <keyword>transparency</keyword> <keyword>evidence</keyword> <keyword>SCITT</keyword> <keyword>Merkle tree</keyword> <keyword>completeness</keyword> <keyword>selective disclosure</keyword>

    <abstract>


<?line 54?>

<t>This document describes an evidence log that records only salted digests of records held by their
makers, as leaves of an RFC 9162 Merkle tree, and three constructions over it that answer questions a
single inclusion proof cannot: whether a set of records shown is complete (completeness chains), what one
field of a sealed record said without revealing the others (selective disclosure), and whether records
were kept, checked on a sample nobody could choose (spot checks). It profiles SCITT registration so that
the log keeps a digest of each Signed Statement and never the statement. It is published as running code
with test vectors.</t>



    </abstract>



  </front>

  <middle>


<?line 64?>

<section anchor="introduction"><name>Introduction</name>

<t>Regulated firms must keep records (advice given, credit decisions, AI system logs, security logs) and,
years later, show that a record is the one that existed at the time. A transparency log can make that
showable without anyone trusting the firm or the log operator. Where records hold personal data, the log
should never receive them: only a digest of a salted record leaves its maker, so the log holds nothing that
must later be erased.</t>

<t>An inclusion proof answers "was this record sealed unchanged?". It does not answer "is this all of it?",
"what did this one field say?", or "were the records kept?". <xref target="chains"/>, <xref target="disclosure"/> and
<xref target="spot-checks"/> answer those, over an unchanged RFC 9162 tree. <xref target="scitt"/> profiles SCITT registration for
digest-only logs.</t>

<t>The key words "MUST", "MUST NOT", "SHOULD" and "MAY" 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.</t>

</section>
<section anchor="conventions"><name>Conventions</name>

<t>Hashes are SHA-256 <xref target="RFC6234"/>. A digest is written as 64 lowercase hexadecimal characters. Strings are
UTF-8. The fields of a string that is hashed or signed are joined with "|", with no spaces and no escaping;
no field may contain "|". Integers are written in ASCII decimal without leading zeros. Times inside such
strings are UTC, written <spanx style="verb">YYYY-MM-DDTHH:MM:SS.ffffffZ</spanx> with exactly six fraction digits; a reader that
receives another representation of the same instant MUST normalise it to this form before hashing or
verifying. An account identifier is a UUID <xref target="RFC9562"/> in its lowercase canonical form. A <spanx style="verb">kind</spanx> matches
<spanx style="verb">^[a-z0-9][a-z0-9.-]{0,39}$</spanx>.</t>

<t>Unless stated otherwise, signatures are ECDSA over P-256 with SHA-256 <xref target="FIPS186-5"/>, encoded as the 64-byte
concatenation r || s and then base64 <xref target="RFC4648"/>.</t>

</section>
<section anchor="records-and-digests"><name>Records and digests</name>

<t>A record is a JSON object whose keys match <spanx style="verb">^[a-z][a-z0-9_]{0,63}$</spanx> at every level and whose values are
strings, integers within plus or minus (2^53 - 1), true, false, null, arrays and objects, nested at most 32
deep. Its canonical form is the JSON Canonicalization Scheme <xref target="RFC8785"/> of the record. Its digest is</t>

<figure><artwork><![CDATA[
record_digest = SHA-256(salt || UTF-8(canonical))
]]></artwork></figure>

<t>where salt is 16 to 64 random bytes the maker keeps with the record. A record outside the profile MUST be
refused, never coerced.</t>

</section>
<section anchor="leaves-and-heads"><name>Leaves and heads</name>

<t>A leaf records <spanx style="verb">leaf_index</spanx> (assigned by the log, from 0, without gaps), <spanx style="verb">created_at</spanx> (assigned by the
log, never by the client), the recording account, a <spanx style="verb">kind</spanx>, and <spanx style="verb">record_digest</spanx>:</t>

<figure><artwork><![CDATA[
leaf = "riskrouter-evidence-leaf|v2|" leaf_index "|" created_at "|" account "|" kind "|" record_digest
leaf hash = SHA-256(0x00 || UTF-8(leaf))
]]></artwork></figure>

<t>Leaves form the Merkle tree of <xref target="RFC9162"/>, Section 2.1, whose hashing is unchanged from <xref target="RFC6962"/>.</t>

<t>A maker MAY sign its own claim, <spanx style="verb">riskrouter-evidence-claim|v3|kind|record_digest|key_id|claimed_at</spanx>, with
a P-256 key it registered with the log; the signature is then part of a v3 leaf string, inside the tree, so
it cannot be replaced afterwards. The log verifies the signature before recording and refuses, recording
nothing, a claim that does not verify. Heads are signed by the log over
<spanx style="verb">riskrouter-evidence-head|v2|tree_size|root_hash|timestamp</spanx>. The same tree is also published as C2SP
checkpoints <xref target="C2SP-CHECKPOINT"/>, signed with a separate Ed25519 key, with tiles <xref target="C2SP-TILES"/>, so
independent witnesses can cosign them.</t>

</section>
<section anchor="chains"><name>Completeness chains</name>

<t>A maker MAY place records in numbered chains. The record carries, inside itself:</t>

<t><list style="symbols">
  <t><spanx style="verb">chain_tag</spanx>: 64 hex characters naming the chain, which SHOULD be HMAC-SHA256 of a secret the maker keeps
and the chain's name;</t>
  <t><spanx style="verb">chain_seq</spanx>: 1, 2, 3, ... without gaps;</t>
  <t><spanx style="verb">chain_prev</spanx>: the <spanx style="verb">record_digest</spanx> of the record at <spanx style="verb">chain_seq - 1</spanx>, or 64 zeros at position 1;</t>
</list></t>

<t>and the maker sends <spanx style="verb">chain_tag</spanx> and <spanx style="verb">chain_seq</spanx> beside the digest, outside the leaf. The log MUST refuse a
<spanx style="verb">chain_seq</spanx> that is not exactly the last position plus one, and a <spanx style="verb">chain_tag</spanx> already used by another
account, recording nothing.</t>

<t>On request for a tag, the log reads its current signed head first and then the chain's entries below that
head's size, and signs:</t>

<figure><artwork><![CDATA[
link line     = chain_seq "|" leaf_index "|" created_at "|" record_digest LF
links_digest  = SHA-256(UTF-8(concatenation of the link lines from `from` to `to`))
chain payload = "riskrouter-evidence-chain|v1|" chain_tag "|" length "|" tree_size "|"
                root_hash "|" timestamp "|" from "|" to "|" links_digest
]]></artwork></figure>

<t>A verifier holding the statement and the records a maker shows checks, for every position from 1 to
<spanx style="verb">length</spanx>, that a record was shown which produces the digest at that position, names that tag and position,
and names the digest of the position before. A position the statement lists and nobody showed is a record
left out. The maker alone cannot hide a chained record; hiding one requires the log to sign a statement its
own tree contradicts.</t>

</section>
<section anchor="disclosure"><name>Selective disclosure</name>

<t>To seal a record from which single fields can later be disclosed, the maker seals a commitment record:</t>

<figure><artwork><![CDATA[
field salt    = HMAC-SHA256(secret, UTF-8("riskrouter-disclosable|1|" || name))
commitment    = SHA-256(field salt || UTF-8(canonical({name: value})))
sealed record = {"format": "riskrouter-disclosable|1", "kind": kind,
                 "fields": {name: commitment, ...}}
]]></artwork></figure>

<t>and records the digest of the sealed record as any record. A disclosure carries the sealed record, its salt,
the proof, and, for each disclosed field, its value and field salt. The secret MUST NOT be disclosed: with
it, a hidden field of low entropy could be found by trial. Field names are visible; values are not.</t>

</section>
<section anchor="spot-checks"><name>Spot checks</name>

<t>To check that records were kept without receiving them all, an auditor seals a plan naming a chain, a
sample size and a future Bitcoin block height. When the block is mined, its hash is the seed, and the
positions drawn are:</t>

<figure><artwork><![CDATA[
for counter = 0, 1, 2, ...
  h = SHA-256(UTF-8("riskrouter-spot-check|v1|" seed "|" population "|" counter))
  x = the first 8 bytes of h, big-endian, unsigned
  skip if x >= 2^64 - (2^64 mod population)
  position = 1 + (x mod population), kept unless already drawn
until min(sample, population) positions are drawn
]]></artwork></figure>

<t>where population is the chain's signed <spanx style="verb">length</spanx>. The maker shows the records at those positions, which are
checked as in <xref target="chains"/>.</t>

</section>
<section anchor="scitt"><name>SCITT profile</name>

<t>Registration under policy <spanx style="verb">riskrouter-scitt-profile|1</spanx> <xref target="I-D.ietf-scitt-architecture"/> accepts a COSE_Sign1
<xref target="RFC9052"/> signed ES256 with a key the caller registered, with CWT claims <spanx style="verb">iss</spanx> and <spanx style="verb">sub</spanx> in the protected
header <xref target="RFC9597"/>, and a hash envelope <xref target="I-D.ietf-cose-hash-envelope"/> whose payload is 32 bytes, so the
artifact never reaches the log. The log keeps one leaf of kind
<spanx style="verb">scitt.statement</spanx> whose digest is SHA-256 of the statement re-encoded with an empty unprotected header, and
returns an RFC 9942 receipt <xref target="RFC9942"/> over the tree root. This departs from the architecture's expectation
that a Transparency Service stores statements, deliberately: the log holds no content.</t>

</section>
<section anchor="time"><name>Time</name>

<t>Each new signed head is sent to RFC 3161 <xref target="RFC3161"/> time-stamping authorities and anchored in Bitcoin
through OpenTimestamps <xref target="OPENTIMESTAMPS"/>. Neither is a qualified time stamp in the sense of EU law unless its authority is.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>A digest of a guessable record can be confirmed by anyone who guesses it; makers MUST salt records. A seal
shows a record existed unchanged no later than its leaf's time; it does not show the record is true. A
chain shows nothing about records that were never chained; whether every record of a kind must be chained
is a policy question for the maker's supervisor. A log operator that colludes with a maker could accept a
second chain position out of turn; its signed chain statements and heads, saved by holders and cosigned by
witnesses, are what make such a fork evidence against the operator. On a log the maker runs itself, a
chain is the maker's own word. Spot-check seeds rely on the auditor announcing a block height before it is
mined, provable by the plan's leaf time.</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>The log holds digests, short kinds, account identifiers, chain tags and times. Records, salts, chain
secrets and disclosure secrets stay with makers. A chain statement reveals how many records a chain holds
and when they were sealed, to anyone holding its tag.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<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>
<reference anchor="RFC4648">
  <front>
    <title>The Base16, Base32, and Base64 Data Encodings</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <date month="October" year="2006"/>
    <abstract>
      <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4648"/>
  <seriesInfo name="DOI" value="10.17487/RFC4648"/>
</reference>
<reference anchor="RFC6234">
  <front>
    <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <date month="May" year="2011"/>
    <abstract>
      <t>Federal Information Processing Standard, FIPS</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6234"/>
  <seriesInfo name="DOI" value="10.17487/RFC6234"/>
</reference>
<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
    <author fullname="B. Jordan" initials="B." surname="Jordan"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
      <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8785"/>
  <seriesInfo name="DOI" value="10.17487/RFC8785"/>
</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="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="RFC9942">
  <front>
    <title>CBOR Object Signing and Encryption (COSE) Receipts</title>
    <author fullname="O. Steele" initials="O." surname="Steele"/>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
    <author fullname="C. Fournet" initials="C." surname="Fournet"/>
    <date month="June" year="2026"/>
    <abstract>
      <t>CBOR Object Signing and Encryption (COSE) Receipts prove properties of a Verifiable Data Structure (VDS) to a verifier. VDSs and associated Proof Types enable security properties, such as minimal disclosure, transparency, and non-equivocation. Transparency helps maintain trust over time and has been applied to certificates, end-to-end encrypted messaging systems, and supply chain security. This specification enables concise transparency-oriented systems by building on Concise Binary Object Representation (CBOR) and COSE. The extensibility of the approach is demonstrated by providing CBOR encodings for Merkle inclusion and consistency proofs.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9942"/>
  <seriesInfo name="DOI" value="10.17487/RFC9942"/>
</reference>
<reference anchor="RFC3161">
  <front>
    <title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title>
    <author fullname="C. Adams" initials="C." surname="Adams"/>
    <author fullname="P. Cain" initials="P." surname="Cain"/>
    <author fullname="D. Pinkas" initials="D." surname="Pinkas"/>
    <author fullname="R. Zuccherato" initials="R." surname="Zuccherato"/>
    <date month="August" year="2001"/>
    <abstract>
      <t>This document describes the format of a request sent to a Time Stamping Authority (TSA) and of the response that is returned. It also establishes several security-relevant requirements for TSA operation, with regards to processing requests to generate responses. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3161"/>
  <seriesInfo name="DOI" value="10.17487/RFC3161"/>
</reference>

<reference anchor="FIPS186-5" >
  <front>
    <title>Digital Signature Standard (DSS)</title>
    <author >
      <organization>National Institute of Standards and Technology</organization>
    </author>
    <date year="2023" month="February"/>
  </front>
  <seriesInfo name="FIPS" value="186-5"/>
</reference>


    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC6962">
  <front>
    <title>Certificate Transparency</title>
    <author fullname="B. Laurie" initials="B." surname="Laurie"/>
    <author fullname="A. Langley" initials="A." surname="Langley"/>
    <author fullname="E. Kasper" initials="E." surname="Kasper"/>
    <date month="June" year="2013"/>
    <abstract>
      <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
      <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6962"/>
  <seriesInfo name="DOI" value="10.17487/RFC6962"/>
</reference>
<reference anchor="RFC7942">
  <front>
    <title>Improving Awareness of Running Code: The Implementation Status Section</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <date month="July" year="2016"/>
    <abstract>
      <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
      <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="205"/>
  <seriesInfo name="RFC" value="7942"/>
  <seriesInfo name="DOI" value="10.17487/RFC7942"/>
</reference>
<reference anchor="RFC9562">
  <front>
    <title>Universally Unique IDentifiers (UUIDs)</title>
    <author fullname="K. Davis" initials="K." surname="Davis"/>
    <author fullname="B. Peabody" initials="B." surname="Peabody"/>
    <author fullname="P. Leach" initials="P." surname="Leach"/>
    <date month="May" year="2024"/>
    <abstract>
      <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
      <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9562"/>
  <seriesInfo name="DOI" value="10.17487/RFC9562"/>
</reference>
<reference anchor="RFC9597">
  <front>
    <title>CBOR Web Token (CWT) Claims in COSE Headers</title>
    <author fullname="T. Looker" initials="T." surname="Looker"/>
    <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
    <date month="June" year="2024"/>
    <abstract>
      <t>This document describes how to include CBOR Web Token (CWT) claims in the header parameters of any CBOR Object Signing and Encryption (COSE) structure. This functionality helps to facilitate applications that wish to make use of CWT claims in encrypted COSE structures and/or COSE structures featuring detached signatures, while having some of those claims be available before decryption and/or without inspecting the detached payload. Another use case is using CWT claims with payloads that are not CWT Claims Sets, including payloads that are not CBOR at all.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9597"/>
  <seriesInfo name="DOI" value="10.17487/RFC9597"/>
</reference>

<reference anchor="I-D.ietf-scitt-architecture">
   <front>
      <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
         <organization>Microsoft Research</organization>
      </author>
      <author fullname="Cedric Fournet" initials="C." surname="Fournet">
         <organization>Microsoft Research</organization>
      </author>
      <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
         <organization>ARM</organization>
      </author>
      <author fullname="Steve Lasker" initials="S." surname="Lasker">
         </author>
      <date day="10" month="October" year="2025"/>
      <abstract>
	 <t>   Traceability in supply chains is a growing security concern.  While
   verifiable data structures have addressed specific issues, such as
   equivocation over digital certificates, they lack a universal
   architecture for all supply chains.  This document defines such an
   architecture for single-issuer signed statement transparency.  It
   ensures extensibility, interoperability between different
   transparency services, and compliance with various auditing
   procedures and regulatory requirements.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-22"/>
   
</reference>

<reference anchor="I-D.ietf-cose-hash-envelope">
   <front>
      <title>COSE Hash Envelope</title>
      <author fullname="Orie Steele" initials="O." surname="Steele">
         </author>
      <author fullname="Steve Lasker" initials="S." surname="Lasker">
         </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <date day="15" month="November" year="2025"/>
      <abstract>
	 <t>   This document defines new COSE header parameters for signaling a
   payload as an output of a hash function.  This mechanism enables
   faster validation, as access to the original payload is not required
   for signature validation.  Additionally, hints of the hashed
   payload&#x27;s content format and availability are defined, providing
   references to optional discovery mechanisms that can help to find
   original payload content.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-cose-hash-envelope-10"/>
   
</reference>

<reference anchor="OPENTIMESTAMPS" target="https://opentimestamps.org">
  <front>
    <title>OpenTimestamps</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="C2SP-CHECKPOINT" target="https://c2sp.org/tlog-checkpoint">
  <front>
    <title>Transparency Log Checkpoints</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="C2SP-TILES" target="https://c2sp.org/tlog-tiles">
  <front>
    <title>Tiled Transparency Logs</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

</references>


<?line 226?>

<section anchor="implementation-status"><name>Implementation Status</name>

<t>(RFC Editor: please remove this section before publication.) This section follows <xref target="RFC7942"/>.</t>

<t>An implementation is published at https://riskrouter.eu/spec with test vectors (spec-vectors.json), two
independent verifiers (JavaScript and Python, standard libraries only) and a conformance suite. Its result
files are the implementer's own statements; nobody certifies an implementation.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA4VabXPbuBH+jl+B0XWm9lTS2XLixPKkrWs7E1/jOBMp02k7
dxZEQhLOFKkjKDm62Pfb++wuQFJ27poPMUWCwL4++2DBXq+nKldldqg7F25u
fdW7ybOtvty41OaJ1e+LuR/q82K5ymxlc+t9V184n2SFX5dWmzzVI4OHLp/r
YmNL/entuT45PB7ocWlyvzIlptnyNB1lptPSbv5oqY5KiyQ3S8iTlmZW9X42
+bw0PZ+4quql8poNb/QODlRiKjsvyu1Qu3xWKL+eLp33rsir7QqTXF2O3yq3
Koe6Kte+GhwcnBwMFIQyQz2yybp01VbdF+XdvCzWK9w7vxqP1Z3d4l461P+t
Wkp0dVy4K+O6+tqWd5nF3Bb3kh0jeZvZpHIbq9PaXD8qX8FityYrcgi3tV6t
HK1SJHihKDHPjF7dLuniR6XMuloU5VBp3dNilbPcZfoHNgrual2Uc5O7X00F
lYf6k/N3n4p1ZUt+aJfGZUM4yWV/L/Go5Ed9u1YqL8qlIfFocvhscHh4Ei5f
H756ES5fHL94HS6PB0fx7utXr1+GS/J0vDx4WV+evIiXR4fHh3T59urj6PD1
cY9f1LoVc64ymR65eW4qiqgRWciUqd67GI32Ozy6MUNQeag/sMZ48yr3mAx6
6WJWv+w5MMc2WeRFVsy3/GaKUBnqwcHgqIcYoDvels56Cpw4N4k51CyoUvRg
10rHJ7W6rxodT142Rnh58oour3oXfWerWQhcUyYLVyEeoOHO46TwtrcwftGz
+cZmxYof33y8/DC+ur4cjc+uIc+OxW5WNh+7JfIAaefFPpUp57Ya6kVVrfzw
++8xTV7VY/owGIadD0Yfe+fvLs//+fHm6sN4d9anyarPFza5WxUur35njWTg
VzTz9xUM3Evq4XGl8dX7yyeij11m02/hwv+fv8KrXqler6fN1CMrk0qp8cJ5
DbxYL6GuTq1PSje15Ps6UzVe1tXCVLq0SUGBURDmeJNVEEXwxFPkxMcLm6V6
usU71pVqae5siYw0XmfWbCwPxfQ1yO0AAMVctcAloABRWa4TilEvuOgqkQPK
3+PnL2uszE+NQgTOMYnLk2xN0KVXZYF1EpPnBSxyv7CQptQG8Vq1ZfWL4j7X
sEFEHr3XxiCdLIzL/X4XM2BhQI6aOVKPdMBchrwhc8EgLtX3Dmm2JlNt8JAQ
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
KgAA

-->

</rfc>

