SWT3 Protocol Specification

Sovereign Witness Traceability (SWT3) -- Cryptographic Witness Anchors for AI Systems and Regulated Infrastructure
Version:
1.0
Status:
Proposed Standard
Date:
August 2026
Publisher:
Tenable Nova LLC

Status of This Document

This is version 1.0 of the SWT3 Protocol Specification, published August 2026 by Tenable Nova LLC.

Normative sections of this specification are versioned. Breaking changes to normative sections increment the major version number. Additive extensions that do not alter existing normative requirements increment the minor version number. The UCT Registry governance process is documented in Section 19.

The fingerprint algorithm (Section 7), anchor format (Section 6), and clearing level definitions (Section 9) are locked as of this version. Implementations conforming to version 1.0 will remain compatible with all future 1.x versions of this specification.

This specification is published by Tenable Nova LLC as the protocol's originating organization. As multi-stakeholder adoption progresses, governance of the SWT3 protocol, UCT Registry, and test vector suite is expected to transition to a multi-stakeholder body. Organizations contributing to the protocol's development, implementation, or adoption are invited to participate in shaping its governance structure.

Patent pending.

RFC 2119 Notation: The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. Normative sections define binding requirements for conformant implementations. Informative sections provide context, guidance, and examples.

Contents

  1. Scope normative
  2. Normative References normative
  3. Terms and Definitions normative
  4. Status of This Document informative
  5. Protocol Overview informative
  6. Anchor Format normative
  7. Fingerprint Algorithm normative
  8. Factor Schema normative
  9. Clearing Protocol normative
  10. Signing Protocol normative
  11. Verification Algorithm normative
  12. Witness Payload Schema normative
  13. Lifecycle Chains normative
  14. Provider-Deployer Evidence Chains normative
  15. Universal Control Taxonomy informative
  16. Conformity Requirements normative
  17. Security Considerations informative
  18. Test Vectors normative
  19. Registry Considerations informative
  20. Protocol Adoption Rationale informative
  21. Reference Implementations informative
  22. Bibliography informative

1. Scope Normative

This specification defines the SWT3 (Sovereign Witness Traceability) protocol for generating, signing, and verifying cryptographic witness anchors. A witness anchor is a deterministic, independently verifiable attestation record computed from observed operational facts.

This specification covers:

This specification does NOT cover:

The SWT3 protocol is industry-agnostic, framework-neutral, and designed for cross-language interoperability. It operates independently of any specific AI provider, cloud platform, or regulatory regime.

2. Normative References Normative

The following documents are referenced normatively in this specification. For dated references, only the edition cited applies. For undated references, the latest edition applies.

ReferenceTitle
RFC 2119Key words for use in RFCs to Indicate Requirement Levels (Bradner, 1997)
RFC 6234US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF) (Eastlake & Hansen, 2011)
RFC 2104HMAC: Keyed-Hashing for Message Authentication (Krawczyk, Bellare & Canetti, 1997)
FIPS 204Module-Lattice-Based Digital Signature Standard (ML-DSA) (NIST, 2024)
ISO 8601:2019Date and time format
RFC 4648The Base16, Base32, and Base64 Data Encodings (Josefsson, 2006)

3. Terms and Definitions Normative

For the purposes of this specification, the following terms and definitions apply. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

TermDefinition
Witness AnchorA deterministic, cryptographically verifiable attestation record encoding observed operational facts as a structured token string.
FingerprintA 12-character hexadecimal string derived from the SHA-256 hash of a domain-separated input containing tenant identity, procedure identifier, factors, and timestamp.
FactorA numeric value (integer) encoding an observed operational measurement. Each witness anchor contains exactly three factors: factor_a, factor_b, and factor_c.
Clearing LevelAn integer (0-3) specifying the information density permitted in a witness payload. Higher clearing levels progressively remove metadata before transmission.
ProcedureA named operation in the Universal Control Taxonomy (UCT) that a witness anchor attests to. Identified by a dotted-namespace format (e.g., AI-INF.1).
UCTUniversal Control Taxonomy. The namespace registry that defines all valid procedure identifiers, organized by domain.
TenantAn organizational entity whose identity is bound into the fingerprint computation. Tenants are isolated; cross-tenant fingerprint collision is computationally infeasible.
EnclaveA deployment environment containing one or more witnessed systems. Enclave integrity is computed from the collective fingerprints of all anchors within it.
Lifecycle ChainA sequence of related witness anchors linked by a shared chain identifier, representing a multi-stage operation (e.g., emergency override initiation through resolution).
CJT FieldsCompliance Jurisdiction and Traceability metadata fields that survive all clearing levels: jurisdiction, legal_basis, purpose_class, agent_id, and cycle_id.
VerdictThe binary outcome of a witnessed operation: PASS or FAIL. Verdict evaluation logic is procedure-specific and defined by the implementing platform, not by this specification.

4. Status of This Document Informative

This is version 1.0 of the SWT3 Protocol Specification, published August 2026 by Tenable Nova LLC.

Normative sections of this specification are versioned. Breaking changes to normative sections increment the major version number. Additive extensions that do not alter existing normative requirements increment the minor version number. The UCT Registry governance process is documented in Section 19.

The fingerprint algorithm (Section 7), anchor format (Section 6), and clearing level definitions (Section 9) are locked as of this version. Implementations conforming to version 1.0 will remain compatible with all future 1.x versions of this specification.

This specification is published by Tenable Nova LLC as the protocol's originating organization. As multi-stakeholder adoption progresses, governance of the SWT3 protocol, UCT Registry, and test vector suite is expected to transition to a multi-stakeholder body. Organizations contributing to the protocol's development, implementation, or adoption are invited to participate in shaping its governance structure.

Patent pending.

5. Protocol Overview Informative

The SWT3 protocol operates in three phases:

Phase 1: Witness. An observed operational fact (e.g., an AI inference, a guardrail evaluation, a model integrity check) is captured as three numeric factors with associated metadata.

Phase 2: Mint. A witness anchor is deterministically computed from the factors, tenant identity, procedure identifier, and timestamp. The anchor is optionally signed with HMAC-SHA256 or ML-DSA-65. Clearing is applied to remove metadata according to the specified level before transmission.

Phase 3: Verify. Any party with knowledge of the input components can independently recompute the fingerprint using standard SHA-256 and compare it to the anchor's claimed fingerprint. No proprietary tooling, API access, or platform account is required for verification.

The protocol is architecturally neutral. It does not prescribe how evidence is collected, where anchors are stored, or how verdicts are evaluated. These concerns are delegated to the implementing platform.

6. Anchor Format Normative

A witness anchor token is a hyphen-delimited string with the following structure:

SWT3-{TIER}-{PROVIDER}-{UCT}-{PROCEDURE}-{VERDICT}-{EPOCH}-{FINGERPRINT}

6.1 Field Definitions

FieldDescriptionTypeConstraints
SWT3Protocol identifierLiteralAlways the string SWT3
TIERDeployment tierChar(1)E (Enclave), S (SaaS), H (Hybrid)
PROVIDERInfrastructure providerStringVULTR, AWS, AZURE, GCP, HYBRID, ON-PREM, or other registered provider codes
UCTUniversal Control Taxonomy domainString2-4 uppercase alphanumeric characters (e.g., ACC, NET, AI)
PROCEDUREProcedure identifier (normalized)StringNamespace prefix stripped, hyphens and periods removed (e.g., AI-INF.1 becomes AIINF1)
VERDICTBinary outcomeLiteralPASS or FAIL
EPOCHTimestampIntegerUnix epoch in seconds
FINGERPRINTEvidence fingerprintHex(12)First 12 characters of the SHA-256 fingerprint (Section 7)

6.2 Normalization Rules

6.3 Example

SWT3-E-VULTR-AI-AIINF1-PASS-1774800000-2e16e2fe92dd

Decomposition:

SegmentValueMeaning
SWT3ProtocolSWT3 protocol anchor
ETierEnclave deployment
VULTRProviderVultr infrastructure
AIUCTAI/ML governance domain
AIINF1ProcedureAI-INF.1 (Inference Provenance)
PASSVerdictOperation passed
1774800000EpochUnix timestamp (seconds)
2e16e2fe92ddFingerprintSHA-256 derived, 12 hex chars

7. Fingerprint Algorithm Normative

7.1 Canonical Formula

The fingerprint MUST be computed as follows:

fingerprint = SHA256("WITNESS:{tenant_id}:{procedure_id}:{factor_a}:{factor_b}:{factor_c}:{timestamp_ms}").hex()[:12]

Where:

ComponentTypeDescription
WITNESSLiteral stringDomain separation prefix. REQUIRED.
tenant_idStringTenant identifier (e.g., ENCLAVE_PROD)
procedure_idStringOriginal procedure ID with full punctuation (e.g., AI-INF.1)
factor_aIntegerFirst factor, rendered as a decimal string (e.g., 1, 5000)
factor_bIntegerSecond factor, rendered as a decimal string
factor_cIntegerThird factor, rendered as a decimal string
timestamp_msIntegerMillisecond-precision Unix epoch, rendered as a decimal string

7.2 Computation Steps

  1. Construct the input string by concatenating all components with colon (:, U+003A) separators.
  2. Encode the input string as UTF-8.
  3. Compute the SHA-256 digest (per RFC 6234).
  4. Encode the digest as lowercase hexadecimal.
  5. Truncate to the first 12 characters.
  6. The result is the anchor fingerprint.

7.3 Encoding Rules

7.4 Legacy Formula

Implementations MUST also support verification against the legacy formula for backward compatibility with anchors minted before version 1.0:

fingerprint_legacy = SHA256("{procedure_id}:{tenant_id}:{factor_a}:{factor_b}:{factor_c}:{timestamp_ms}").hex()[:12]

The legacy formula differs from the canonical formula in two ways: (1) the WITNESS: domain separation prefix is absent, and (2) the procedure_id and tenant_id fields are in reversed order.

When verifying an anchor, implementations MUST attempt the canonical formula first. If verification fails, implementations MUST attempt the legacy formula before reporting a verification failure.

When minting new anchors, implementations MUST use the canonical formula exclusively.

7.5 Determinism

The fingerprint algorithm is fully deterministic. Given identical inputs, any conforming implementation in any programming language MUST produce an identical fingerprint. This property is verified by the test vectors in Section 18.

8. Factor Schema Normative

8.1 Structure

Every witness anchor contains exactly three factors:

FactorField NameTypeDescription
Afactor_aIntegerFirst measurement dimension
Bfactor_bIntegerSecond measurement dimension
Cfactor_cIntegerThird measurement dimension (context, delta, or method code)

8.2 Semantics

Factor semantics are procedure-specific. This specification defines the factor structure but does not prescribe procedure-level semantics. Procedure-specific factor definitions are maintained in the UCT Registry (Section 15).

The following common evaluation patterns are observed across procedures:

Pattern 1: Threshold Comparison

Pattern 2: Presence/Verification

Pattern 3: Inverse Threshold

8.3 Constraints

9. Clearing Protocol Normative

9.1 Clearing Levels

The clearing protocol defines four levels of information density control. Higher levels progressively remove metadata from the witness payload before transmission.

LevelNameDescription
0AnalyticsAll metadata retained. Full forensic capability.
1StandardRaw evidence purged after factor extraction. Hashes, model identity, and context retained. Default level.
2SensitiveHashes and model identity retained. All contextual metadata removed.
3ClassifiedFactors only. Model identity hashed. All other metadata destroyed.

9.2 Field Survival Matrix

The following table specifies which payload fields survive each clearing level. "Y" = retained, "N" = destroyed before transmission.

FieldLevel 0Level 1Level 2Level 3
procedure_idYYYY
factor_a, factor_b, factor_cYYYY
clearing_levelYYYY
anchor_fingerprintYYYY
anchor_epochYYYY
fingerprint_timestamp_msYYYY
ai_prompt_hashYYYN
ai_response_hashYYYN
ai_system_prompt_hashYYYN
ai_model_idYYYN (hashed)
ai_latency_msYYNN
ai_input_tokensYYNN
ai_output_tokensYYNN
ai_contextYYNN
payload_signatureYYYY
signing_key_idYYYY
jurisdictionYYYY
legal_basisYYYY
purpose_classYYYY
agent_idYYYY
cycle_idYYYY
lifecycle_chain_idYYYY
lifecycle_stageYYYY

9.3 CJT Field Guarantee

The following Compliance Jurisdiction and Traceability (CJT) fields MUST survive all clearing levels (0 through 3):

Implementations MUST NOT clear CJT fields regardless of clearing level. These fields are required for regulatory traceability across jurisdictions.

9.4 Hash Formulas

When hashing prompt, response, or system prompt content for inclusion in the witness payload:

hash = SHA256(text).hex()[:16]

The hash MUST be the first 16 characters of the lowercase hexadecimal SHA-256 digest of the UTF-8 encoded text.

When hashing ai_model_id at clearing level 3:

hashed_model_id = SHA256(ai_model_id).hex()[:16]

9.5 Irreversibility

Clearing is irreversible. Once metadata is destroyed at the source, it cannot be recovered, reconstructed, or reverse-engineered from the remaining fields. This property is by design and provides a sovereignty guarantee: raw evidence (prompts, responses, operational data) never leaves the developer's infrastructure at clearing level 1 or above.

10. Signing Protocol Normative

10.1 HMAC-SHA256 (Default)

The default signing algorithm is HMAC-SHA256 (per RFC 2104).

Without agent identity binding:

signature = HMAC-SHA256(signing_key, anchor_fingerprint)

With agent identity binding:

signature = HMAC-SHA256(signing_key, anchor_fingerprint + ":" + agent_id)

Where + denotes string concatenation and ":" is the literal colon character (U+003A).

The signing_key is a shared secret known to the minting party. It MUST NOT be transmitted in the witness payload.

The signing_key_id field in the payload identifies which key was used, enabling key rotation without invalidating existing anchors.

10.2 ML-DSA-65 (Post-Quantum)

Implementations MAY support ML-DSA-65 (FIPS 204) as an alternative signing algorithm for post-quantum resistance.

When signing_algorithm is ml-dsa-65:

signature = ML-DSA-65-Sign(private_key, message)

Where message follows the same construction rules as HMAC-SHA256 (fingerprint alone, or fingerprint:agent_id).

Verification is performed using the public key derived from the same seed:

valid = ML-DSA-65-Verify(public_key, message, signature)

Because ML-DSA-65 signatures are non-deterministic, cross-implementation parity is verified by round-trip testing (sign with implementation A, verify with implementation B) rather than exact signature comparison.

10.3 Profile Signing

Model trust profiles MUST be signed using the following canonical message format:

message = "PROFILE:{model_id}:{model_hash}:{generated_at}:{valid_until}:{sorted_procedures}:{coverage_score_3dp}"

Where:

10.4 Key Management

11. Verification Algorithm Normative

11.1 Single Anchor Verification

To verify a single witness anchor:

  1. Obtain the anchor's claimed fingerprint (the last segment of the anchor token).
  2. Obtain the original input components: tenant_id, procedure_id, factor_a, factor_b, factor_c, fingerprint_timestamp_ms.
  3. Compute the fingerprint using the canonical formula (Section 7.1).
  4. If the computed fingerprint matches the claimed fingerprint, the anchor is VERIFIED.
  5. If not, compute the fingerprint using the legacy formula (Section 7.4).
  6. If the legacy-computed fingerprint matches, the anchor is VERIFIED (legacy).
  7. If neither formula produces a match, the anchor is TAMPERED.

No API access, platform account, or proprietary tooling is required for verification. Any party with knowledge of the input components can perform verification using standard SHA-256.

11.2 Enclave Integrity Verification

To verify the integrity of an entire enclave (collection of anchors):

  1. Collect all anchor fingerprints in the enclave.
  2. Sort the fingerprints lexicographically (ascending).
  3. Join the sorted fingerprints with colon separators: "fp1:fp2:fp3:...".
  4. Compute SHA256(joined_string).hex() (full 64-character hexadecimal digest).
  5. The result is the enclave integrity signature.

The enclave integrity signature has the following property: identical anchors in an identical state always produce an identical signature. Any addition, removal, or modification of any anchor changes the signature.

11.3 Signature Verification

If the witness payload includes a payload_signature:

  1. Determine the signing algorithm from the signing_algorithm field (default: hmac-sha256).
  2. Construct the message: anchor_fingerprint (or anchor_fingerprint:agent_id if agent_id is present).
  3. Verify the signature using the appropriate algorithm and the signing key identified by signing_key_id.
  4. If verification succeeds, the anchor's provenance is AUTHENTICATED.
  5. If verification fails, the anchor's provenance is UNAUTHENTICATED.

Signature verification is independent of fingerprint verification. An anchor can be VERIFIED (fingerprint matches) but UNAUTHENTICATED (signature does not match), or vice versa.

12. Witness Payload Schema Normative

12.1 Required Fields

The following fields MUST be present in every witness payload:

FieldTypeDescription
procedure_idStringUCT procedure identifier (e.g., AI-INF.1)
factor_aIntegerFirst factor
factor_bIntegerSecond factor
factor_cIntegerThird factor
clearing_levelInteger0, 1, 2, or 3
anchor_fingerprintString(12)Computed fingerprint (Section 7)
anchor_epochIntegerUnix epoch in seconds
fingerprint_timestamp_msIntegerMillisecond timestamp used in fingerprint computation

12.2 Optional Fields

FieldTypeDescription
ai_model_idStringModel identifier (e.g., gpt-4o)
ai_prompt_hashString(16)SHA-256[:16] of the prompt text
ai_response_hashString(16)SHA-256[:16] of the response text
ai_system_prompt_hashString(16)SHA-256[:16] of the system prompt
ai_latency_msIntegerInference latency in milliseconds
ai_input_tokensIntegerInput token count
ai_output_tokensIntegerOutput token count
ai_contextStringFreeform context (cleared at level 2+)
agent_idStringAI agent identity
cycle_idStringMulti-agent interaction chain identifier
payload_signatureString(64)HMAC-SHA256 signature (hex)
signing_algorithmStringhmac-sha256 (default) or ml-dsa-65
signing_key_idStringKey identifier for rotation support
signing_key_versionIntegerKey version number
policy_version_hashStringHash of the governance policy version
jurisdictionStringISO 3166-1 alpha-2 country code
legal_basisStringLegal processing basis (e.g., Art. 6(1)(f))
purpose_classStringProcessing purpose classification
authorization_idStringPre-inference gate authorization identifier
referencesArrayRelated anchor fingerprints
revocation_targetStringFingerprint of the anchor being revoked
revocation_reasonIntegerRevocation reason code (0-6)
lifecycle_chain_idStringLifecycle chain identifier (Section 13)
lifecycle_parentStringParent anchor fingerprint in the chain
lifecycle_stageStringCurrent lifecycle stage
escalation_chain_idStringCross-chain escalation link

12.3 Revocation Reason Codes

CodeMeaning
0unspecified
1model_recall
2policy_violation
3data_contamination
4consent_withdrawal
5regulatory_order
6error_correction

12.4 Validation Rules

13. Lifecycle Chains Normative

13.1 Chain Identifier Formula

A lifecycle chain identifier links multiple witness anchors into a single operational sequence. The chain ID is computed as:

chain_id = "LC-" + SHA256("LIFECYCLE:{tenant_id}:{procedure_id}:{initiator_fingerprint}:{timestamp_ms}").hex()[:16]

Where:

The chain ID is a fixed-length string: the literal prefix LC- followed by 16 lowercase hexadecimal characters.

13.2 Lifecycle Stages

The following canonical stage codes are defined:

StageCodeTerminal
initiated0No
checkpoint1No
escalated2No
resolved3Yes
abandoned4Yes
superseded5Yes

13.3 Cross-Chain Escalation

When an event in one lifecycle chain triggers a new chain (e.g., a drift detection escalates to an emergency override), the new chain's initiating anchor SHOULD include the escalation_chain_id field referencing the originating chain.

14. Provider-Deployer Evidence Chains Normative

14.1 Problem Statement

Organizations that provide AI models to third parties (whether through open-weight distribution, API access, cloud platform hosting, or embedded integration) face a common challenge: demonstrating that downstream deployers are operating the model with appropriate controls, without accessing the deployer's infrastructure or proprietary data.

14.2 Delegation Anchors

A model provider MAY mint delegation anchors (procedure AI-DEL.1) to formally record the relationship between the provider's tenant and one or more deployer tenants.

The delegation anchor encodes:

14.3 Deployer Attestation Flow

  1. The deployer integrates the SWT3 SDK and witnesses operations under their own tenant identity.
  2. Anchors flow to the deployer's own tenant, maintaining tenant isolation.
  3. The provider queries aggregated coverage metrics across deployer tenants via the platform API.
  4. The provider sees anchor fingerprints, procedure coverage percentages, verdict distributions, and clearing levels. The provider never sees raw deployer data.

14.4 Evidence Aggregation Without Data Access

The evidence aggregation model preserves deployer sovereignty:

14.5 Cross-Provider Interoperability

A deployer building applications on models from multiple providers uses a single SWT3 integration. The same anchors, minted under the deployer's tenant, can be referenced by any provider with an established delegation relationship. This eliminates the need for deployers to maintain separate compliance systems per provider.

14.6 Distribution Model Neutrality

The delegation mechanism is identical regardless of how the model reaches the deployer:

Distribution ModelExampleDelegation Type Code
Open-weightModel weights distributed for local deployment0
API accessModel served via inference API1
Cloud platformModel hosted on provider's cloud infrastructure2
EmbeddedModel integrated into provider's application3

15. Universal Control Taxonomy Informative

15.1 Overview

The Universal Control Taxonomy (UCT) defines the namespace for all valid procedure identifiers. As of version 1.0, the taxonomy contains 114 AI-specific procedures organized across 62 namespaces.

15.2 Namespace Registry

Procedure identifiers follow the format AI-{NAMESPACE}.{NUMBER} for AI-specific procedures. The following namespaces are defined:

INF, MDL, GRD, SEC, RAG, SKILL, TOOL, ID, ACC, REV, FAIR, DATA, HITL, EXPL, CHAIN, VIO, CHR, SAFE, HW, TRUST, FIN, GOV, ENV, MARK, BASE, LIC, SBOM, REDTEAM, CONSENT, MULTI, DRIFT, AUDIT, INCIDENT, PMM, PERF, ROBUST, CYBER, TRANS, WATERMARK, DPIA, AUTO, DUALUSE, SUPPLY, METAGOV, DEL, CAP, COST, JUR, LCM, LOG, IMPACT, MOB, EMRG, ASSESS, ENG, REACH, DECOM, RECOMM, FREEZE

Non-AI procedures use domain-specific prefixes (e.g., SC-7.6 for network security, AC-2.1 for access control).

15.3 Namespace Governance

Published namespace codes are never removed, renamed, or redefined. New namespace codes require demonstrated need across two or more regulatory frameworks. The UCT Registry is the authoritative source for all procedure definitions and is publicly available.

15.4 Framework Crosswalks

Each procedure in the UCT Registry is mapped to one or more regulatory framework requirements through bidirectional crosswalks. As of version 1.0, crosswalks are maintained for 36 regulatory frameworks across 12 jurisdictions.

16. Conformity Requirements Normative

16.1 Conformance Levels

This specification defines three conformance levels:

Level 1: Minimal

An implementation at Level 1 MUST:

Level 2: Standard

An implementation at Level 2 MUST satisfy all Level 1 requirements and additionally:

Level 3: Full

An implementation at Level 3 MUST satisfy all Level 2 requirements and additionally:

16.2 Conformity Statement

An implementation conforms to this specification at a given level if and only if it satisfies all MUST-level requirements for that level and all levels below it. Conformance is independently verifiable via the test vectors in Section 18.

16.3 Partial Conformance

An implementation that satisfies some but not all requirements of a given level MUST NOT claim conformance at that level. It MAY claim conformance at the highest level for which all requirements are satisfied.

17. Security Considerations Informative

17.1 Fingerprint Properties

Fingerprints are 12 hexadecimal characters (48 bits of entropy from the SHA-256 output). This truncation is intentional: fingerprints serve as evidence identifiers, not as security tokens. The full SHA-256 digest is not needed because:

17.2 Signing Key Security

17.3 Clearing as Privacy Mechanism

Clearing levels provide information density control, not encryption. Clearing at level 1+ ensures that raw prompts, responses, and operational data never leave the developer's infrastructure. However, the metadata that does survive (hashes, factors, model identifiers at levels 0-2) could be correlated with external data sources by a sufficiently motivated adversary.

Organizations processing highly sensitive data SHOULD use clearing level 2 or 3.

17.4 Domain Separation

The WITNESS: prefix in the fingerprint formula provides domain separation, preventing cross-protocol collision. The following domain separation prefixes are reserved by this specification:

PrefixUsage
WITNESS:Fingerprint computation
LIFECYCLE:Lifecycle chain ID computation
PROFILE:Model trust profile signing
SWT3:LEAF:Merkle tree leaf hashing
SWT3:NODE:Merkle tree node hashing

Implementations MUST NOT use these prefixes for other purposes.

18. Test Vectors Normative

All conforming implementations MUST produce identical outputs for the following test vectors. The complete test vector suite is available at test-vectors.json in the reference implementation repository.

18.1 Fingerprint Vectors

Formula: SHA256("WITNESS:{tenant}:{proc}:{fa}:{fb}:{fc}:{ts_ms}").hex()[:12]

IDTenantProcedurefafbfcTimestamp (ms)Expected
1ENCLAVE_PRODAI-INF.111017748000000002e16e2fe92dd
2AWS_NITRO_ENCLAVEAI-INF.250008000117748000010004ed784765e6c
3ENCLAVE_PRODAI-GRD.12301774800002000a0aa7669ae6f
4AZURE_TRUSTED_EXECAI-MDL.11011774800003000c36d477b3c2d
5ACME_DEFENSEAI-FAIR.115150177480000400053180f5ae221
6SAAS_TENANT_42AI-MDL.21101774800005000c7e61c16ee94
7AWS_NITRO_ENCLAVEAI-EXPL.28592017748000060002f2b989bb5c6
8ENCLAVE_PRODAI-HITL.11101774800007000afbab8c9e098
9DEMO_ENCLAVEAI-INF.31000095000177480000800005010820e5a4
10AZURE_TRUSTED_EXECAI-DATA.10001774800009000289eb7452237

The complete test vector suite contains 55 fingerprint vectors covering edge cases (all-zero factors, large values, multiple tenant types, all clearing levels). See test-vectors.json for the full set.

18.2 Signing Vectors

Algorithm: HMAC-SHA256. Key: test-signing-key

IDFingerprintAgent IDExpected Signature
1019eaf85fcbaagent-00700ff82da1659e2e6a7fa875c781ed4635976c8136b8dc2c24672adb8673cb112
2019eaf85fcba(none)d844102f40fb5dad449a2f57922f5b23f73ffb3a026b5bd5fd537ebe5c6c44d0

Vector 1 message: 019eaf85fcba:agent-007

Vector 2 message: 019eaf85fcba

18.3 Hash Vectors

Formula: SHA256(input).hex()[:16]

InputExpected
Hello, world!315f5bdb76d078c4
(empty string)e3b0c44298fc1c14
What is the meaning of life?318f903a83b4d30d
gpt-4o-2024-11-20:fp_abc1230f6b04241d237297
You are a helpful fraud detection assistant. Flag any transaction over $10,000.479eaa1ee804f844

18.4 Profile Signing Vectors

FieldValue
Modelgpt-4o
Hashabc123
ProceduresAI-GRD.1, AI-INF.1, AI-MDL.1
Score0.667
Generated At1700000000000
Valid Until1700086400000
Expected MessagePROFILE:gpt-4o:abc123:1700000000000:1700086400000:AI-GRD.1,AI-INF.1,AI-MDL.1:0.667

Signing key: test-key-123

Expected HMAC-SHA256: bdce7111c3a6e9968a5de1973f3a977aadb42c2d7327f38de79729019c7baa42

Note: Procedures in the message MUST be sorted lexicographically.

18.5 ML-DSA-65 Vectors

ML-DSA-65 signatures are non-deterministic. Conformance is verified by round-trip testing:

  1. Generate a keypair from seed 60ef3bf0e31e764953cf67c6806d0c6512ce54a6e83a9328b7042b3896cf8f40 (32 bytes, hex).
  2. The derived public key MUST be 1952 bytes (3904 hex characters).
  3. Sign message 019eaf85fcba:agent-007. The signature will differ on each invocation.
  4. Verify the signature using the derived public key. Verification MUST succeed.
  5. Sign message 019eaf85fcba (without agent_id). Verification MUST succeed.
  6. Verify that the public key derived from the same seed is identical across implementations.

18.6 Lifecycle Chain Vectors

Formula: "LC-" + SHA256("LIFECYCLE:{tenant}:{proc}:{fp}:{ts_ms}").hex()[:16]

IDTenantProcedureInitiator FPTimestamp (ms)Expected Chain ID
1ENCLAVE_PRODAI-EMRG.12e16e2fe92dd1774800000000LC-7a38936db8ecec94
2ENCLAVE_PRODAI-DRIFT.24ed784765e6c1774800001000LC-60c720a257e2d3b9
3AWS_NITRO_ENCLAVEAI-ASSESS.166209137510b1774800010000LC-9caadba335ca64cd

19. Registry Considerations Informative

19.1 Reserved Prefixes

The following domain separation prefixes are reserved by this specification and MUST NOT be used by implementations for other purposes:

PrefixUsageSection
WITNESS:Fingerprint computation7
LIFECYCLE:Lifecycle chain ID computation13
PROFILE:Profile signing messages10.3
SWT3:LEAF:Merkle tree leaf hashingN/A (separate specification)
SWT3:NODE:Merkle tree node hashingN/A (separate specification)

19.2 UCT Registry Governance

The UCT Registry is maintained as a public JSON document (uct-registry.json) in the reference implementation repository. Changes to the registry follow these rules:

19.3 Provider Code Registration

Provider codes (Section 6.1) are not centrally registered. Implementations MAY use any uppercase alphanumeric string as a provider code. The following codes are in common use: VULTR, AWS, AZURE, GCP, HYBRID, ON-PREM.

20. Protocol Adoption Rationale Informative

This section describes the considerations that motivate adoption of an open, standardized witness protocol rather than proprietary alternatives.

Assessor portability. When multiple assessment bodies (Notified Bodies, C3PAOs, auditors) understand a common evidence format, conformity assessments are faster and less expensive. A proprietary evidence format requires each assessment body to learn and maintain custom verification tooling per provider.

Deployer interoperability. A deployer building applications on models from multiple providers needs one compliance system, not N proprietary formats. SWT3 is provider-neutral and distribution-model-neutral. A single SDK integration produces evidence that is valid across all provider relationships.

Verification independence. Any party can recompute a fingerprint using standard SHA-256 with no proprietary SDK, API access, or platform account. Verification requires only the input components and a conforming SHA-256 implementation, both of which are universally available.

Cross-provider network effects. Each new provider that adopts SWT3 reduces compliance cost for every deployer already using it, and each new deployer reduces the marginal cost of the next provider's adoption. This creates a positive-sum dynamic where early adoption yields compounding returns.

Governance participation. Organizations implementing and deploying SWT3 are positioned to participate in the governance of the protocol as it matures. Early adopters of open protocols shape the standards that follow.

Historical precedent supports this pattern. TLS (formerly SSL) began as a single-vendor protocol and became the universal transport security layer. SWIFT began as a cooperative of 239 banks and became the global financial messaging standard. XBRL began at a single accounting body and became the international standard for regulatory financial reporting. In each case, the protocol's value derived from its neutrality and universal adoption, not from any single vendor's implementation.

21. Reference Implementations Informative

Conforming reference implementations are available in seven programming languages. All implementations achieve 100% parity on the test vectors in Section 18.

LanguagePackageRegistry
Pythonswt3-aiPyPI
TypeScript@tenova/swt3-ainpm
Rustswt3-aicrates.io
C#swt3-aiNuGet
Rubyswt3-aiRubyGems
Swiftswt3-aiSwift Package Index
Kotlinswt3-aiMaven Central

A Model Context Protocol (MCP) server implementation is also available:

TypePackageRegistry
MCP Server@tenova/swt3-mcpnpm

22. Bibliography Informative

The following documents are referenced informatively in this specification:

ReferenceTitle
Regulation (EU) 2024/1689Artificial Intelligence Act (European Parliament and Council, 2024)
NIST AI 100-1Artificial Intelligence Risk Management Framework (NIST, 2023)
ISO/IEC 42001:2023Artificial intelligence management system (ISO/IEC, 2023)
ISO/IEC 23894:2023Guidance on AI risk management (ISO/IEC, 2023)
W3C Verifiable Credentials Data Model v2.0(W3C, 2024)
NIST SP 800-53 Rev. 5Security and Privacy Controls for Information Systems and Organizations (NIST, 2020)
CMMC Model 2.0Cybersecurity Maturity Model Certification (DoD, 2021)
Copyright © 2026 Tenable Nova LLC. This specification is provided for informational purposes only and does not constitute legal, regulatory, or compliance advice. Consult qualified legal counsel before making compliance decisions based on this content.