<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- 
  Internet-Draft: draft-kamimura-scitt-vcp-02
  Title: A SCITT Profile for Verifiable Audit Trails in Algorithmic Trading
  Author: TOKACHI KAMIMURA
  Organization: VeritasChain Standards Organization (VSO)
  Target WG: SCITT (Supply Chain Integrity, Transparency, and Trust)
  
  Changes from -01:
  - Updated to align with VCP v1.1
  - Clarified anchoring as certification policy requirement (not protocol mandate)
  - PrevHash now OPTIONAL (anchoring supports completeness verification)
  - Added Three-Layer Architecture section
  - Clarified Policy Identification requirements
-->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     docName="draft-kamimura-scitt-vcp-02"
     category="info"
     ipr="trust200902"
     submissionType="IETF"
     consensus="true"
     xml:lang="en"
     version="3">

  <front>
    <title abbrev="SCITT-VCP">
      A SCITT Profile for Verifiable Audit Trails in Algorithmic Trading:
      The VeritasChain Protocol (VCP)
    </title>

    <seriesInfo name="Internet-Draft" 
                value="draft-kamimura-scitt-vcp-02"/>

    <author fullname="TOKACHI KAMIMURA" initials="T." surname="Kamimura">
      <organization>VeritasChain Standards Organization</organization>
      <address>
        <postal>
          <country>Japan</country>
        </postal>
        <email>kamimura@veritaschain.org</email>
        <uri>https://veritaschain.org</uri>
      </address>
    </author>

    <date year="2026" month="January" day="05"/>

    <area>Security</area>
    <workgroup>Supply Chain Integrity, Transparency, and Trust</workgroup>

    <keyword>SCITT</keyword>
    <keyword>audit trail</keyword>
    <keyword>algorithmic trading</keyword>
    <keyword>AI transparency</keyword>
    <keyword>financial services</keyword>
    <keyword>transparency service</keyword>
    <keyword>signed statement</keyword>
    <keyword>profile</keyword>

    <abstract>
      <t>This document defines a profile of the SCITT (Supply Chain 
      Integrity, Transparency, and Trust) architecture for creating 
      tamper-evident audit trails of AI-driven algorithmic trading 
      decisions and executions. The VeritasChain Protocol (VCP) applies 
      the SCITT framework to address the specific requirements of 
      financial markets, including high-precision timestamps, regulatory 
      compliance considerations (EU AI Act, MiFID II), and privacy-preserving 
      mechanisms (crypto-shredding) compatible with GDPR. This profile 
      specifies how VCP events are encoded as SCITT Signed Statements, 
      registered with Transparency Services, and verified using 
      COSE Receipts.</t>
    </abstract>

    <note removeInRFC="true">
      <name>About This Document</name>
      <t>The latest version of this document, along with implementation
      resources and test vectors, can be found at
      <eref target="https://github.com/veritaschain/vcp-spec"/>.</t>
      <t>Discussion of this document takes place on the SCITT Working
      Group mailing list (scitt@ietf.org).</t>
      <t>Changes from -01:</t>
      <ul>
        <li>Updated to align with VCP Specification v1.1</li>
        <li>Clarified that external anchoring is a certification policy 
        requirement, not a protocol-level mandate</li>
        <li>PrevHash changed from REQUIRED to OPTIONAL</li>
        <li>Added Three-Layer Architecture description (Section 3.3)</li>
        <li>Clarified Policy Identification field requirements</li>
        <li>Updated title to explicitly indicate this is a SCITT profile</li>
      </ul>
    </note>
  </front>

  <middle>
    <!-- ===== Section 1: Introduction ===== -->
    <section anchor="introduction">
      <name>Introduction</name>
      
      <t>The SCITT (Supply Chain Integrity, Transparency, and Trust) 
      architecture <xref target="I-D.ietf-scitt-architecture"/> provides 
      a framework for creating tamper-evident logs of digital artifacts 
      through Transparency Services. While SCITT was initially designed 
      for software supply chain use cases, its core primitives—Signed 
      Statements, Receipts, and Transparency Services—are applicable to 
      any domain requiring verifiable audit trails.</t>

      <t>This document specifies a SCITT profile for AI-driven algorithmic 
      trading systems in financial markets. The VeritasChain Protocol (VCP) 
      applies the SCITT architecture with domain-specific extensions:</t>

      <ul>
        <li>A schema for encoding trading events as SCITT Signed Statements</li>
        <li>Registration policies for financial audit trails</li>
        <li>Conformance tiers (Silver, Gold, Platinum) with varying 
        requirements for timing precision and cryptographic guarantees</li>
        <li>Privacy mechanisms compatible with GDPR data erasure requirements</li>
        <li>A completeness-aware design that enables omission detection 
        through external anchoring</li>
      </ul>

      <t>VCP serves as an "AI Flight Recorder" for algorithmic trading, 
      enabling post-incident reconstruction of system behavior with 
      cryptographic proof of integrity.</t>

      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", 
        "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
        "MAY", and "OPTIONAL" 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>
      </section>

      <section anchor="relationship-to-scitt">
        <name>Relationship to SCITT</name>
        <t>This document is a profile of the SCITT architecture. It:</t>
        <ul>
          <li>REQUIRES compliance with <xref target="I-D.ietf-scitt-architecture"/></li>
          <li>REQUIRES use of SCRAPI <xref target="I-D.ietf-scitt-scrapi"/> 
          for Transparency Service interactions</li>
          <li>RECOMMENDS COSE Receipts for inclusion proofs</li>
          <li>DEFINES domain-specific extensions for financial trading</li>
        </ul>
        <t>This profile does not define a new protocol; it specifies how 
        existing SCITT primitives are applied to the financial trading domain.</t>
      </section>

      <section anchor="scope">
        <name>Scope</name>
        <t>This document specifies:</t>
        <ul>
          <li>VCP Event schema as SCITT Signed Statement payload</li>
          <li>Registration Policy requirements for VCP Transparency Services</li>
          <li>Mapping of VCP concepts to SCITT terminology</li>
          <li>Three conformance tiers with specific requirements</li>
          <li>Crypto-shredding mechanism for privacy compliance</li>
          <li>Three-layer integrity architecture</li>
        </ul>
        <t>This document does not specify:</t>
        <ul>
          <li>General SCITT architecture (see <xref target="I-D.ietf-scitt-architecture"/>)</li>
          <li>SCRAPI endpoints (see <xref target="I-D.ietf-scitt-scrapi"/>)</li>
          <li>COSE Receipt format (see <xref target="RFC9052"/>)</li>
          <li>Specific regulatory mapping (covered in companion documents)</li>
          <li>Mandatory anchoring services (deployment-specific)</li>
        </ul>
      </section>
    </section>

    <!-- ===== Section 2: Terminology ===== -->
    <section anchor="terminology">
      <name>Terminology</name>
      
      <t>This document uses terminology from 
      <xref target="I-D.ietf-scitt-architecture"/>. The following terms 
      are specific to this profile:</t>
      
      <dl>
        <dt>VCP Event</dt>
        <dd>A single auditable record in the VeritasChain Protocol,
        encoded as a SCITT Signed Statement. Consists of Header, 
        Payload, and Security metadata.</dd>
        
        <dt>VCP Issuer</dt>
        <dd>An algorithmic trading system, AI model, or human operator 
        that generates VCP Events. Corresponds to SCITT Issuer.</dd>
        
        <dt>VCP Transparency Service</dt>
        <dd>A SCITT Transparency Service configured with VCP-specific 
        Registration Policies. Operates a VCP-compliant append-only log.</dd>
        
        <dt>VCP Receipt</dt>
        <dd>A COSE Receipt issued by a VCP Transparency Service, 
        proving inclusion of a VCP Event in the log.</dd>
        
        <dt>Actor</dt>
        <dd>An entity (algorithm, human operator, or system) identified 
        by ActorID that generates VCP Events.</dd>
        
        <dt>Crypto-Shredding</dt>
        <dd>A privacy technique where encrypted payload data is rendered
        permanently unrecoverable by destroying the encryption key,
        while preserving the cryptographic integrity proofs (hashes 
        and Receipts).</dd>
        
        <dt>Conformance Tier</dt>
        <dd>One of three implementation levels (Silver, Gold, Platinum)
        with increasing requirements for timing precision, anchoring
        frequency, and cryptographic guarantees.</dd>
        
        <dt>External Anchor</dt>
        <dd>A cryptographic commitment (typically a Merkle root) published 
        to an external, independent system (e.g., public blockchain, 
        timestamping authority). External anchoring supports omission 
        detection and enables third-party completeness verification.</dd>
        
        <dt>Policy Identification</dt>
        <dd>A field within the VCP Event that explicitly identifies the 
        applicable Registration Policy and conformance tier.</dd>
      </dl>

      <section anchor="terminology-mapping">
        <name>SCITT Terminology Mapping</name>
        <t>The following table maps VCP concepts to SCITT terminology:</t>
        
        <table>
          <name>VCP to SCITT Terminology Mapping</name>
          <thead>
            <tr>
              <th>VCP Concept</th>
              <th>SCITT Equivalent</th>
              <th>Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>VCP Event</td>
              <td>Signed Statement</td>
              <td>VCP Event is the payload of a Signed Statement</td>
            </tr>
            <tr>
              <td>VCP Issuer</td>
              <td>Issuer</td>
              <td>Trading system or AI model</td>
            </tr>
            <tr>
              <td>VCP Transparency Service</td>
              <td>Transparency Service</td>
              <td>With VCP Registration Policy</td>
            </tr>
            <tr>
              <td>VCP Receipt</td>
              <td>Receipt</td>
              <td>COSE Receipt with Merkle inclusion proof</td>
            </tr>
            <tr>
              <td>Hash Chain (Optional)</td>
              <td>Append-only Log</td>
              <td>VCP optionally adds per-Actor chaining</td>
            </tr>
            <tr>
              <td>External Anchor</td>
              <td>Merkle Tree Root</td>
              <td>Periodic commitment supporting completeness verification</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>

    <!-- ===== Section 3: Architecture ===== -->
    <section anchor="architecture">
      <name>Architecture</name>
      
      <t>VCP builds upon the SCITT architecture with domain-specific 
      extensions for financial trading:</t>

      <artwork type="ascii-art"><![CDATA[
  +------------------+       +-------------------------+
  |   VCP Issuer     |       |  VCP Transparency       |
  | (Trading System) |       |      Service            |
  +--------+---------+       +------------+------------+
           |                              |
           | 1. Create VCP Event          |
           | 2. Sign as COSE_Sign1        |
           |                              |
           +------ Signed Statement ----->|
           |       (via SCRAPI)           |
           |                              | 3. Validate against
           |                              |    Registration Policy
           |                              |
           |                              | 4. Append to Log
           |                              |
           |<-------- VCP Receipt --------+
           |       (COSE Receipt)         |
           |                              |
  +--------+---------+       +------------+------------+
  |    Verifier      |       |   External Anchor       |
  | (Auditor/Regul.) |       | (Timestamp/Blockchain)  |
  +------------------+       +-------------------------+
      ]]></artwork>

      <section anchor="arch-event-flow">
        <name>Event Flow</name>
        <ol>
          <li><strong>Event Generation:</strong> VCP Issuer creates a 
          VCP Event containing trading decision or execution data.</li>
          <li><strong>Signing:</strong> Event is signed using COSE_Sign1 
          <xref target="RFC9052"/> with the Issuer's private key.</li>
          <li><strong>Registration:</strong> Signed Statement is submitted 
          to VCP Transparency Service via SCRAPI POST /entries.</li>
          <li><strong>Validation:</strong> Transparency Service validates 
          against VCP Registration Policy.</li>
          <li><strong>Logging:</strong> Valid statement is appended to 
          the append-only log.</li>
          <li><strong>Receipt:</strong> COSE Receipt with Merkle inclusion 
          proof is returned to Issuer.</li>
          <li><strong>External Anchoring (when deployed):</strong> Merkle 
          root MAY be periodically anchored to an external system, enabling 
          omission detection by third parties.</li>
        </ol>
      </section>

      <section anchor="arch-hash-chain">
        <name>Per-Actor Hash Chain (Optional)</name>
        <t>VCP MAY maintain per-Actor hash chains in addition to SCITT's 
        global append-only log. When implemented, each VCP Event includes 
        a PrevHash field containing the hash of the previous event from 
        the same Actor. This enables efficient verification of a single 
        Actor's event sequence without downloading the entire log.</t>
        
        <t>Note: Per-Actor hash chains are OPTIONAL. When external anchoring 
        is deployed, it provides the primary mechanism for completeness 
        verification. Hash chains serve as a complementary local integrity 
        mechanism.</t>
        
        <artwork type="ascii-art"><![CDATA[
  Actor A:  Event_A1 --hash--> Event_A2 --hash--> Event_A3
  
  Actor B:  Event_B1 --hash--> Event_B2
  
  Global Log: [Event_A1, Event_B1, Event_A2, Event_B2, Event_A3, ...]
        ]]></artwork>
      </section>

      <section anchor="arch-three-layer">
        <name>Three-Layer Integrity Architecture</name>
        <t>VCP defines a three-layer architecture that separates concerns 
        and clarifies where integrity guarantees originate:</t>
        
        <table>
          <name>VCP Three-Layer Architecture</name>
          <thead>
            <tr>
              <th>Layer</th>
              <th>Component</th>
              <th>Guarantee</th>
              <th>Protocol Requirement</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Layer 1</td>
              <td>Event Integrity</td>
              <td>Individual event authenticity via digital signature</td>
              <td>REQUIRED</td>
            </tr>
            <tr>
              <td>Layer 2</td>
              <td>Collection Integrity</td>
              <td>Merkle tree over event collection</td>
              <td>REQUIRED</td>
            </tr>
            <tr>
              <td>Layer 3</td>
              <td>External Verifiability</td>
              <td>Merkle root anchored to external system</td>
              <td>OPTIONAL (see note)</td>
            </tr>
          </tbody>
        </table>
        
        <t>Note: Layer 3 (External Verifiability) is OPTIONAL at the protocol 
        level. However, VCP certification policies (VC-Certified program) 
        require external anchoring at tier-specific frequencies. This 
        separation allows the protocol to remain flexible while certification 
        programs can mandate stronger guarantees.</t>
        
        <t>External anchoring enables omission detection: without it, a log 
        producer could theoretically withhold events before publishing a 
        Merkle root. When deployed, anchoring allows third parties to verify 
        that the published root matches the expected state, supporting 
        "Verify, Don't Trust" principles.</t>
        
        <artwork type="ascii-art"><![CDATA[
  Layer 1: Event Integrity
  +--------+    +--------+    +--------+
  | Event1 |    | Event2 |    | Event3 |
  | (sig)  |    | (sig)  |    | (sig)  |
  +---+----+    +---+----+    +---+----+
      |            |            |
      v            v            v
  Layer 2: Collection Integrity (Merkle Tree)
  +------------------------------------------+
  |              Merkle Root                 |
  +---------------------+--------------------+
                        |
                        v (when deployed)
  Layer 3: External Verifiability
  +------------------------------------------+
  | External Anchor (Blockchain/TSA/etc.)    |
  +------------------------------------------+
        ]]></artwork>
      </section>
    </section>

    <!-- ===== Section 4: VCP Event Schema ===== -->
    <section anchor="event-schema">
      <name>VCP Event Schema</name>
      
      <t>A VCP Event is encoded as the payload of a SCITT Signed Statement. 
      The payload MUST be a JSON object conforming to the following schema:</t>

      <section anchor="schema-header">
        <name>Header Object</name>
        <t>The Header contains metadata common to all VCP Events:</t>
        
        <sourcecode type="json"><![CDATA[
{
  "Header": {
    "EventID": "01961e5f-5c0d-7000-8000-123456789abc",
    "TimestampISO": "2026-03-15T09:30:00.123456789Z",
    "TimestampInt": 1742034600123456789,
    "EventType": "ORD",
    "ActorID": "algo-momentum-001",
    "ChainID": "chain-actor-001",
    "SequenceNum": 42,
    "PolicyID": "urn:vcp:policy:silver:v1.1"
  }
}
        ]]></sourcecode>
        
        <dl>
          <dt>EventID</dt>
          <dd>REQUIRED. UUID v7 <xref target="RFC9562"/> providing 
          time-sortable unique identification.</dd>
          
          <dt>TimestampISO</dt>
          <dd>REQUIRED. ISO 8601 timestamp with nanosecond precision.</dd>
          
          <dt>TimestampInt</dt>
          <dd>REQUIRED. Integer timestamp in nanoseconds since Unix epoch.</dd>
          
          <dt>EventType</dt>
          <dd>REQUIRED. Three-letter code identifying the event type 
          (see <xref target="event-types"/>).</dd>
          
          <dt>ActorID</dt>
          <dd>REQUIRED. Identifier of the entity generating this event.</dd>
          
          <dt>ChainID</dt>
          <dd>REQUIRED. Identifier of the per-Actor hash chain.</dd>
          
          <dt>SequenceNum</dt>
          <dd>REQUIRED. Monotonically increasing sequence number within 
          the Actor's chain.</dd>
          
          <dt>PolicyID</dt>
          <dd>REQUIRED. URN identifying the Registration Policy and 
          conformance tier. Format: urn:vcp:policy:{tier}:v{version}. 
          Valid tier values: "silver", "gold", "platinum".</dd>
        </dl>
      </section>

      <section anchor="schema-payload">
        <name>Payload Object</name>
        <t>The Payload contains domain-specific data organized into modules:</t>
        
        <dl>
          <dt>VCP-TRADE</dt>
          <dd>Trading data: orders, executions, modifications, cancellations.</dd>
          
          <dt>VCP-RISK</dt>
          <dd>Risk management data: exposure, limits, margin.</dd>
          
          <dt>VCP-GOV</dt>
          <dd>Governance data: algorithm parameters, decision factors, 
          operator actions.</dd>
          
          <dt>VCP-PRIVACY</dt>
          <dd>Privacy metadata: encryption keys, retention policies.</dd>
        </dl>
        
        <sourcecode type="json"><![CDATA[
{
  "Payload": {
    "VCP-TRADE": {
      "OrderID": "ord-2026-001",
      "Symbol": "AAPL",
      "Side": "BUY",
      "Quantity": "100",
      "Price": "185.50",
      "OrderType": "LIMIT"
    },
    "VCP-GOV": {
      "AlgoID": "momentum-v2.3",
      "DecisionFactors": ["RSI_oversold", "volume_spike"],
      "ConfidenceScore": 0.87
    }
  }
}
        ]]></sourcecode>
      </section>

      <section anchor="schema-security">
        <name>Security Object</name>
        <t>The Security object contains integrity and chaining information:</t>
        
        <sourcecode type="json"><![CDATA[
{
  "Security": {
    "EventHash": "sha256:a1b2c3d4...",
    "PrevHash": "sha256:f6e5d4c3...",
    "MerkleRoot": "sha256:1234abcd...",
    "SignAlgo": "ED25519",
    "AnchorRef": "eth:0x1234...@12345678"
  }
}
        ]]></sourcecode>
        
        <dl>
          <dt>EventHash</dt>
          <dd>REQUIRED. SHA-256 hash of the canonicalized Header and 
          Payload, computed using JSON Canonicalization Scheme 
          <xref target="RFC8785"/>.</dd>
          
          <dt>PrevHash</dt>
          <dd>OPTIONAL. Hash of the previous event in this Actor's chain. 
          If present, MUST match the EventHash of the preceding event 
          (except for INIT events where it is absent).</dd>
          
          <dt>MerkleRoot</dt>
          <dd>OPTIONAL in individual events. Included in anchor (ANC) events 
          when external anchoring is deployed.</dd>
          
          <dt>SignAlgo</dt>
          <dd>REQUIRED. Signature algorithm identifier. MUST be "ED25519" 
          or "DILITHIUM3" (for post-quantum).</dd>
          
          <dt>AnchorRef</dt>
          <dd>OPTIONAL. When external anchoring is deployed, contains 
          reference to the anchor location (e.g., blockchain transaction 
          ID, TSA receipt ID).</dd>
        </dl>
      </section>

      <section anchor="event-types">
        <name>Event Types</name>
        
        <table>
          <name>VCP Event Types</name>
          <thead>
            <tr>
              <th>Code</th>
              <th>Name</th>
              <th>Description</th>
            </tr>
          </thead>
          <tbody>
            <tr><td>INIT</td><td>Initialization</td><td>Chain initialization, no PrevHash</td></tr>
            <tr><td>SIG</td><td>Signal</td><td>Trading signal generated</td></tr>
            <tr><td>ORD</td><td>Order</td><td>Order submitted</td></tr>
            <tr><td>ACK</td><td>Acknowledgment</td><td>Order acknowledged by venue</td></tr>
            <tr><td>EXE</td><td>Execution</td><td>Order executed (fill)</td></tr>
            <tr><td>CXL</td><td>Cancellation</td><td>Order cancelled</td></tr>
            <tr><td>MOD</td><td>Modification</td><td>Order modified</td></tr>
            <tr><td>RSK</td><td>Risk</td><td>Risk event or limit breach</td></tr>
            <tr><td>ERR</td><td>Error</td><td>System error</td></tr>
            <tr><td>HBT</td><td>Heartbeat</td><td>Periodic liveness signal</td></tr>
            <tr><td>CLS</td><td>Close</td><td>Position closed</td></tr>
            <tr><td>ANC</td><td>Anchor</td><td>Merkle anchor event (when anchoring deployed)</td></tr>
          </tbody>
        </table>
      </section>
    </section>

    <!-- ===== Section 5: Registration Policy ===== -->
    <section anchor="registration-policy">
      <name>Registration Policy</name>
      
      <t>A VCP Transparency Service MUST enforce a Registration Policy 
      that validates incoming Signed Statements.</t>

      <section anchor="policy-identification">
        <name>Policy Identification</name>
        
        <t>The PolicyID field MUST be explicitly included in the VCP Event 
        Header. The Transparency Service MUST validate the registration 
        request against the referenced Registration Policy and MUST NOT 
        infer, select, or substitute a policy on its own.</t>
        
        <t>Valid PolicyID formats:</t>
        <ul>
          <li>urn:vcp:policy:silver:v1.1</li>
          <li>urn:vcp:policy:gold:v1.1</li>
          <li>urn:vcp:policy:platinum:v1.1</li>
        </ul>
        
        <t>Conformance tiers (Silver, Gold, Platinum) represent additional 
        verification depth and operational requirements applied on top of 
        the same core Registration Policy, and do not define separate or 
        incompatible registration policies.</t>
      </section>

      <section anchor="validation-requirements">
        <name>Validation Requirements</name>
        
        <t>The Registration Policy MUST verify:</t>
      
      <ol>
        <li><strong>Schema Compliance:</strong> Payload conforms to VCP 
        Event schema.</li>
        <li><strong>PolicyID Present:</strong> Header contains a valid 
        PolicyID field.</li>
        <li><strong>Signature Validity:</strong> COSE_Sign1 signature is 
        valid for the registered Issuer public key.</li>
        <li><strong>Timestamp Validity:</strong> TimestampInt is within 
        acceptable bounds (not in future, not too old).</li>
        <li><strong>Chain Integrity (if PrevHash present):</strong> PrevHash 
        matches the hash of the most recent event from this Actor.</li>
        <li><strong>Sequence Monotonicity:</strong> SequenceNum is exactly 
        one greater than the previous event's SequenceNum.</li>
      </ol>

      </section>

      <section anchor="policy-tiers">
        <name>Tier-Specific Requirements</name>
        
        <t>This specification distinguishes timestamp resolution from clock 
        accuracy. Nanosecond-resolution timestamps represent the storage 
        format capability, while actual clock accuracy is explicitly recorded 
        and enforced per tier.</t>

        <table>
          <name>Conformance Tier Requirements</name>
          <thead>
            <tr>
              <th>Requirement</th>
              <th>Silver</th>
              <th>Gold</th>
              <th>Platinum</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Timestamp Resolution</td>
              <td>Millisecond</td>
              <td>Microsecond</td>
              <td>Nanosecond</td>
            </tr>
            <tr>
              <td>Clock Accuracy</td>
              <td>NTP (~10ms)</td>
              <td>NTP + drift (~1ms)</td>
              <td>PTPv2 (&lt;1μs)</td>
            </tr>
            <tr>
              <td>Merkle Anchoring Frequency</td>
              <td>Daily (if deployed)</td>
              <td>Hourly (if deployed)</td>
              <td>Per-minute (if deployed)</td>
            </tr>
            <tr>
              <td>Signature Algorithm</td>
              <td>Ed25519</td>
              <td>Ed25519</td>
              <td>Ed25519 + Dilithium (OPTIONAL)</td>
            </tr>
            <tr>
              <td>Key Storage</td>
              <td>Software</td>
              <td>Software/HSM</td>
              <td>HSM Required</td>
            </tr>
            <tr>
              <td>PrevHash Chain</td>
              <td>OPTIONAL</td>
              <td>OPTIONAL</td>
              <td>RECOMMENDED</td>
            </tr>
          </tbody>
        </table>
        
        <t>Note: Silver tier is NOT intended for regulatory-grade algorithmic 
        trading systems subject to MiFID II RTS 25, SEC Rule 17a-4, or 
        equivalent clock synchronization requirements. Silver tier is 
        appropriate for development, testing, backtesting analysis, and 
        non-regulated trading scenarios.</t>
      </section>
      
      <section anchor="certification-policies">
        <name>Certification Policy Requirements</name>
        
        <t>This document does not mandate a specific external anchoring service. 
        However, VCP certification programs (e.g., VC-Certified) impose 
        additional operational requirements beyond the base protocol:</t>
        
        <ul>
          <li><strong>VC-Certified Silver:</strong> External anchoring 
          required at minimum daily frequency.</li>
          <li><strong>VC-Certified Gold:</strong> External anchoring 
          required at minimum hourly frequency. Multiple independent anchors 
          RECOMMENDED.</li>
          <li><strong>VC-Certified Platinum:</strong> External anchoring 
          required at minimum per-minute frequency. Multiple independent 
          anchors with geographic distribution REQUIRED.</li>
        </ul>
        
        <t>Certification requirements are defined by the VeritasChain Standards 
        Organization and are separate from this protocol specification. 
        Implementations MAY be protocol-compliant without obtaining certification, 
        and certification policies MAY evolve independently of this document.</t>
        
        <t>When external anchoring is deployed, acceptable anchor targets include:</t>
        <ul>
          <li>Public blockchains (e.g., Bitcoin, Ethereum)</li>
          <li>Trusted timestamping authorities (TSA) per <xref target="RFC3161"/></li>
          <li>Other append-only public ledgers</li>
        </ul>
      </section>
    </section>

    <!-- ===== Section 6: Crypto-Shredding ===== -->
    <section anchor="crypto-shredding">
      <name>Crypto-Shredding for Privacy Compliance</name>
      
      <t>VCP supports crypto-shredding to enable GDPR-compliant data 
      erasure while preserving audit trail integrity. This mechanism 
      allows deletion of personal data without invalidating cryptographic 
      proofs.</t>

      <section anchor="shredding-mechanism">
        <name>Mechanism</name>
        <ol>
          <li><strong>Encryption:</strong> Sensitive payload fields are 
          encrypted with a per-record or per-subject Data Encryption Key (DEK).</li>
          <li><strong>Key Storage:</strong> DEK is stored separately, 
          indexed by SubjectID.</li>
          <li><strong>Hashing:</strong> EventHash is computed over the 
          encrypted payload, preserving integrity.</li>
          <li><strong>Shredding:</strong> Upon erasure request, DEK is 
          destroyed. Encrypted data becomes unrecoverable.</li>
          <li><strong>Verification:</strong> Receipt and hash chain remain 
          valid—verifiers can confirm event existence and ordering without 
          accessing decrypted content.</li>
        </ol>
      </section>

      <section anchor="shredding-privacy-module">
        <name>VCP-PRIVACY Module</name>
        <sourcecode type="json"><![CDATA[
{
  "VCP-PRIVACY": {
    "EncryptedFields": ["VCP-TRADE.ClientID", "VCP-TRADE.AccountID"],
    "KeyID": "dek-2026-001-subject-12345",
    "Algorithm": "AES-256-GCM",
    "RetentionPolicy": "GDPR-5Y"
  }
}
        ]]></sourcecode>
      </section>
    </section>

    <!-- ===== Section 7: SCRAPI Integration ===== -->
    <section anchor="scrapi-integration">
      <name>SCRAPI Integration</name>
      
      <t>VCP Transparency Services MUST implement SCRAPI 
      <xref target="I-D.ietf-scitt-scrapi"/> with the following 
      VCP-specific considerations:</t>

      <section anchor="scrapi-registration">
        <name>Registration (POST /entries)</name>
        <t>VCP Events are submitted as COSE_Sign1 Signed Statements:</t>
        
        <sourcecode type="http"><![CDATA[
POST /entries HTTP/1.1
Host: vcp-ts.example.com
Content-Type: application/cose

<COSE_Sign1 containing VCP Event payload>
        ]]></sourcecode>
        
        <t>The Transparency Service validates the VCP Registration Policy 
        and returns a COSE Receipt on success.</t>
      </section>

      <section anchor="scrapi-retrieval">
        <name>Retrieval (GET /entries/{entry_id})</name>
        <t>Retrieve a specific VCP Event by its entry ID (derived from EventID).</t>
      </section>

      <section anchor="scrapi-receipt">
        <name>Receipt (GET /entries/{entry_id}/receipt)</name>
        <t>Retrieve the COSE Receipt for a registered VCP Event, 
        containing the Merkle inclusion proof.</t>
      </section>
      
      <section anchor="scrapi-anchor">
        <name>Anchor Status (GET /anchors/{anchor_id})</name>
        <t>When external anchoring is deployed, retrieve the anchor status 
        for a Merkle root, including the external reference (e.g., blockchain 
        transaction ID).</t>
      </section>
    </section>

    <!-- ===== Section 8: Security Considerations ===== -->
    <section anchor="security">
      <name>Security Considerations</name>
      
      <section anchor="security-integrity">
        <name>Integrity Architecture</name>
        <t>VCP's three-layer architecture provides defense in depth:</t>
        <ul>
          <li><strong>Layer 1 (Event Integrity):</strong> Digital signatures 
          on individual events prevent forgery.</li>
          <li><strong>Layer 2 (Collection Integrity):</strong> Merkle trees 
          enable efficient proof of inclusion.</li>
          <li><strong>Layer 3 (External Verifiability):</strong> When deployed, 
          external anchoring supports omission detection by enabling third 
          parties to verify published Merkle roots against independent records.</li>
        </ul>
        
        <t>The optional per-Actor hash chain provides additional local 
        integrity guarantees but is not required for external verifiability.</t>
        
        <t>Mitigations against key compromise:</t>
        <ul>
          <li>Frequent Merkle anchoring to external immutable stores (when deployed)</li>
          <li>HSM-based key storage (Platinum tier requirement)</li>
          <li>Key rotation with explicit ROTATE events</li>
        </ul>
      </section>

      <section anchor="security-quantum">
        <name>Quantum Resistance</name>
        <t>Ed25519 signatures are vulnerable to attacks by cryptographically 
        relevant quantum computers. VCP provides crypto-agility 
        to address future threats:</t>
        <ul>
          <li>SignAlgo field enables algorithm negotiation and migration</li>
          <li>Post-quantum signature algorithms (e.g., ML-DSA/Dilithium) are 
          OPTIONAL and intended for experimental or high-assurance deployments</li>
          <li>Hash chain integrity based on SHA-256 provides approximately 
          128-bit post-quantum security against Grover's algorithm</li>
        </ul>
        <t>Implementers requiring post-quantum guarantees SHOULD monitor 
        CFRG and PQUIP working group outputs for updated guidance on 
        algorithm selection and migration timelines.</t>
      </section>

      <section anchor="security-timing">
        <name>Timing Attacks</name>
        <t>Clock manipulation can enable backdating of events. Mitigations:</t>
        <ul>
          <li>UUID v7 provides embedded timestamp that must match TimestampInt</li>
          <li>Transparency Service enforces timestamp bounds</li>
          <li>Platinum tier requires PTPv2 synchronization</li>
          <li>External anchoring (when deployed) provides independent timestamp attestation</li>
        </ul>
      </section>

      <section anchor="security-privacy">
        <name>Privacy Considerations</name>
        <t>VCP Events may contain sensitive trading information. Operators 
        SHOULD:</t>
        <ul>
          <li>Use crypto-shredding for personal data subject to GDPR</li>
          <li>Implement access controls on Transparency Service queries</li>
          <li>Consider encrypted payloads for highly sensitive data</li>
        </ul>
      </section>
      
      <section anchor="security-completeness">
        <name>Completeness Considerations</name>
        <t>SCITT provides inclusion proofs but does not inherently guarantee 
        completeness (i.e., that no events have been omitted). VCP addresses 
        this through a completeness-aware design:</t>
        <ul>
          <li>Sequence numbers enable detection of gaps within an Actor's chain</li>
          <li>External anchoring (when deployed) enables third-party verification 
          that the published Merkle root matches expectations</li>
          <li>Heartbeat events (HBT) provide liveness signals that support 
          detection of extended omission periods</li>
        </ul>
        <t>These mechanisms support omission detection but do not provide 
        absolute completeness guarantees. Deployments requiring strong 
        completeness assurance SHOULD implement external anchoring and 
        consider additional monitoring mechanisms.</t>
      </section>
    </section>

    <!-- ===== Section 9: IANA Considerations ===== -->
    <section anchor="iana">
      <name>IANA Considerations</name>
      
      <t>This document has no IANA actions at this time.</t>
      
      <t>Future versions of this specification may request:</t>
      <ul>
        <li>Registration of media type "application/vcp+json"</li>
        <li>Establishment of a VCP Event Type registry</li>
        <li>COSE algorithm identifiers for VCP-specific extensions</li>
        <li>URN namespace for VCP Policy IDs</li>
      </ul>
    </section>
  </middle>

  <back>
    <!-- ===== References ===== -->
    <references>
      <name>References</name>
      
      <references>
        <name>Normative References</name>
        
        <reference anchor="RFC2119"><front><title>Key words for use in RFCs to Indicate Requirement Levels</title><author fullname="S. Bradner"/><date month="March" year="1997"/></front><seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="2119"/></reference>
        <reference anchor="RFC8174"><front><title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title><author fullname="B. Leiba"/><date month="May" year="2017"/></front><seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="8174"/></reference>
        <reference anchor="RFC8785"><front><title>JSON Canonicalization Scheme (JCS)</title><author fullname="A. Rundgren"/><date month="June" year="2020"/></front><seriesInfo name="RFC" value="8785"/></reference>
        <reference anchor="RFC9052"><front><title>CBOR Object Signing and Encryption (COSE)</title><author fullname="J. Schaad"/><date month="August" year="2022"/></front><seriesInfo name="RFC" value="9052"/></reference>
        <reference anchor="RFC9562"><front><title>Universally Unique IDentifiers (UUIDs)</title><author fullname="K. Davis"/><date month="May" year="2024"/></front><seriesInfo name="RFC" value="9562"/></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"/>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet"/>
            <date year="2024"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture"/>
        </reference>
        
        <reference anchor="I-D.ietf-scitt-scrapi">
          <front>
            <title>SCITT Reference APIs</title>
            <author fullname="Orie Steele" initials="O." surname="Steele"/>
            <date year="2024"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-scrapi"/>
        </reference>
      </references>
      
      <references>
        <name>Informative References</name>
        
        <reference anchor="RFC3161"><front><title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title><author fullname="C. Adams"/><date month="August" year="2001"/></front><seriesInfo name="RFC" value="3161"/></reference>
        <reference anchor="RFC6962"><front><title>Certificate Transparency</title><author fullname="B. Laurie"/><date month="June" year="2013"/></front><seriesInfo name="RFC" value="6962"/></reference>
      </references>
    </references>

    <!-- ===== Appendix A: Complete Example ===== -->
    <section anchor="appendix-example">
      <name>Complete VCP Event Example</name>
      
      <t>The following is a complete VCP v1.1 Event encoded as JSON, ready 
      to be wrapped in a COSE_Sign1 Signed Statement:</t>
      
      <sourcecode type="json"><![CDATA[
{
  "Header": {
    "EventID": "01961e5f-5c0d-7000-8000-123456789abc",
    "TimestampISO": "2026-03-15T09:30:00.123456789Z",
    "TimestampInt": 1742034600123456789,
    "EventType": "ORD",
    "ActorID": "algo-momentum-001",
    "ChainID": "chain-actor-001",
    "SequenceNum": 42,
    "PolicyID": "urn:vcp:policy:gold:v1.1"
  },
  "Payload": {
    "VCP-TRADE": {
      "OrderID": "ord-2026-001",
      "Symbol": "AAPL",
      "Side": "BUY",
      "Quantity": "100",
      "Price": "185.50",
      "OrderType": "LIMIT",
      "TimeInForce": "DAY"
    },
    "VCP-GOV": {
      "AlgoID": "momentum-v2.3",
      "DecisionFactors": ["RSI_oversold", "volume_spike"],
      "ConfidenceScore": 0.87,
      "RiskCheckPassed": true
    }
  },
  "Security": {
    "EventHash": "sha256:a1b2c3...",
    "PrevHash": "sha256:f6e5d4...",
    "SignAlgo": "ED25519"
  }
}
      ]]></sourcecode>
      
      <t>Note: PrevHash is OPTIONAL. AnchorRef would be included after 
      external anchoring is performed.</t>
    </section>

    <!-- ===== Appendix B: JSON Schema ===== -->
    <section anchor="appendix-schema">
      <name>JSON Schema Reference</name>
      <t>The complete JSON Schema for VCP Events is available at:</t>
      <t><eref target="https://veritaschain.org/schema/vcp-event-v1.1.json"/></t>
    </section>
    
    <!-- ===== Appendix C: Changes from -01 ===== -->
    <section anchor="appendix-changes">
      <name>Changes from draft-kamimura-scitt-vcp-01</name>
      <t>This section summarizes the changes from version -01 to -02:</t>
      <ul>
        <li>Updated title to explicitly indicate this is a SCITT profile</li>
        <li>Updated to align with VCP Specification v1.1</li>
        <li>Clarified that external anchoring is a certification policy 
        requirement, not a protocol-level mandate (new Section 5.4)</li>
        <li>PrevHash changed from REQUIRED to OPTIONAL</li>
        <li>Added Three-Layer Architecture section (Section 3.3)</li>
        <li>Added PolicyID as a REQUIRED field in the Header</li>
        <li>Added Completeness Considerations section (Section 8.5)</li>
        <li>Clarified that this profile does not define a new protocol</li>
        <li>Removed unused informative references</li>
      </ul>
    </section>

    <!-- ===== Acknowledgements ===== -->
    <section anchor="acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>The authors thank the members of the VeritasChain Standards
      Organization Technical Committee for their contributions to
      this specification. This work builds upon the SCITT architecture
      developed by the IETF SCITT Working Group, and the Certificate 
      Transparency work in <xref target="RFC6962"/>.</t>
      <t>Special thanks to the SCITT WG participants who provided feedback 
      on draft-kamimura-scitt-vcp-01, which informed the improvements in 
      this version.</t>
    </section>
  </back>
</rfc>
