This document is a Proposed Standard published by Tenable Nova LLC (DBA TeNova), the originating organization of the SWT3 protocol. It defines the normative requirements for SWT3-conformant implementations and the informative guidance for adopters.
This specification is open for public review and comment. Feedback, errata reports, and proposals for new UCT codes should be submitted via the SWT3 public issue tracker. All substantive changes are versioned and documented in Appendix A.
The path to ratification: Proposed Standard → Draft Standard (two independent implementations passing the conformance test suite) → Full Standard (adoption by a recognized standards body or regulatory citation). This document will be updated to reflect maturity transitions as they occur.
SWT3 (Sovereign Witness Traceability) is an open protocol for cryptographically anchoring evidence to immutable witness records while preserving data sovereignty. The "3" in SWT3 represents the three phases of the evidence lifecycle:
SWT3 does not prescribe how evidence is collected (Provenance). It defines how evidence is fingerprinted and anchored (Verification), and how raw evidence can be sovereignly purged while preserving cryptographic proof (Clearing). This separation allows any evidence collection tool to produce SWT3-compatible anchors, while any platform can consume and verify them without vendor lock-in.
Today, compliance evidence across every regulated industry relies on administrative trust: the assumption that whoever controls the database, the log file, or the cloud account has not altered the data. This model has three fundamental weaknesses:
SWT3 resolves all three. A cryptographic fingerprint proves integrity without requiring trust in the custodian. The Clearing Protocol destroys raw evidence while preserving the proof. And the self-describing anchor format makes every record portable and independently verifiable by any system with SHA-256 support.
| Term | Definition |
|---|---|
| Witness | The act of observing a state and recording its factors at the point of origin |
| Factor | A measurable input to a determination (e.g., open port count, patch age, sensor reading) |
| Factor Matrix | The structured triple (factor_a, factor_b, factor_c) captured during Provenance |
| Anchor | A self-describing cryptographic receipt binding factors to a verdict at a specific point in time |
| Fingerprint | The truncated SHA-256 digest that seals the anchor |
| Verdict | The determination outcome: PASS, FAIL, INHERITED, LAPSED, or UNKNOWN |
| Enclave | A trust boundary within which anchors share a common verification chain |
| Clearing | Controlled purging of raw evidence after anchoring, preserving the cryptographic proof while destroying source telemetry |
| Administrative Trust | The legacy trust model where data integrity depends on trusting the custodian rather than independent mathematical verification |
An SWT3 anchor is a structured string token with the following format:
SWT3-{TIER}-{PROVIDER}-{UCT}-{PROCEDURE}-{VERDICT}-{EPOCH}-{FINGERPRINT}
| Field | Width | Values | Description |
|---|---|---|---|
Protocol | 4 | SWT3 | Fixed protocol identifier |
Tier | 1 | E, S, H | Deployment tier: Enclave, SaaS, Hybrid |
Provider | 2-6 | AWS, GCP, AZURE, etc. | Infrastructure provider |
UCT | 2-3 | See Section 5 | Universal Control Taxonomy domain code |
Procedure | 2-6 | e.g. SC76, AC21 | Procedure identifier (alphanumeric, normalized) |
Verdict | 4-9 | PASS, FAIL | Compliance determination |
Epoch | 10 | Unix timestamp | Seconds since Unix epoch at witness time |
Fingerprint | 12 | Hex string | First 12 characters of SHA-256 digest |
-)SWT3swt3-anchor = protocol "-" tier "-" provider "-" uct "-" procedure "-"
verdict "-" epoch "-" fingerprint
protocol = %s"SWT3" ; case-sensitive
tier = %x45 / %x53 / %x48 ; "E" / "S" / "H"
provider = 2*6ALPHA ; e.g., AWS, GCP, AZURE
uct = 2*3ALPHA ; UCT Registry code
procedure = 1*(ALPHA / DIGIT) ; normalized ID, no hyphens
verdict = %s"PASS" / %s"FAIL" ; normative verdicts
epoch = 10DIGIT ; Unix seconds
fingerprint = 12HEXDIG ; truncated SHA-256
SWT3-E-AWS-NET-SC76-PASS-1773316622-96b7d56c0245
SWT3-S-AWS-ACC-AC21-FAIL-1773400000-a3f7c2e91b04
SWT3-H-AZURE-CFG-CM61-INHERITED-1773500000-d2620f999950
SWT3-E-ON-PREM-CRY-SC28-PASS-1773600000-b1a9c3d4e5f6
UCT is a framework-agnostic classification system that maps every witnessed control into a
domain. UCT codes are the bridge that allows SWT3 anchors to carry consistent meaning across
compliance frameworks. A CRY anchor has the same semantic meaning whether it
originated from a NIST SC-13 check, a PCI-DSS Requirement 4 assessment, or a HIPAA
§164.312(a)(2)(iv) encryption review.
Core codes represent the fundamental security domains present in every major compliance framework. All SWT3 implementations MUST recognize core codes.
| Code | Domain | Description |
|---|---|---|
ACC | Access Control | Authorization, privileges, least privilege, account management |
AUD | Audit & Accountability | Logging, log retention, audit review, event correlation |
CFG | Configuration Management | Baselines, hardening, change control, inventory |
CRY | Cryptography | Encryption at rest, in transit, key management, certificate lifecycle |
IDN | Identity & Authentication | Authentication mechanisms, MFA, credential management |
INT | System Integrity | Patching, file integrity monitoring, malware defense, code signing |
NET | Network Security | Firewalls, segmentation, boundary protection, traffic filtering |
BCP | Business Continuity | Backup, disaster recovery, contingency planning, availability |
GOV | Governance & Policy | Security policy, planning, system security plans, authorization |
IRP | Incident Response | Detection, response, recovery, lessons learned |
PHY | Physical Security | Facility access, media protection, environmental controls |
Extended codes represent specialized domains for specific regulatory contexts or industry verticals. Implementations SHOULD recognize extended codes relevant to their compliance scope. Unrecognized extended codes MUST NOT cause verification failure.
| Code | Domain | Description |
|---|---|---|
AI | AI / ML Governance | Model integrity, algorithmic fairness, AI risk management |
ACQ | Supply Chain | Vendor risk, third-party assessment, supply chain integrity |
DEV | Secure Development | SDLC, code review, application security testing |
EVI | Evidence & Artifacts | Ingested proof artifacts, external evidence anchoring |
MON | Continuous Monitoring | Ongoing surveillance, posture dashboards, trend analysis |
PRI | Privacy | PII protection, consent management, data subject rights |
RSK | Risk Management | Risk assessments, POA&Ms, vulnerability prioritization |
VUL | Vulnerability Management | Scanning, patching cadence, remediation tracking |
UCT codes map consistently across major compliance frameworks:
| UCT | NIST 800-53 | SOC 2 (TSC) | HIPAA | PCI-DSS 4.0 | ISO 27001:2022 |
|---|---|---|---|---|---|
ACC | AC | CC6.1, CC6.3 | §164.312(a)(1) | Req 7, 8 | A.5.15, A.8.3 |
AUD | AU | CC7.2 | §164.312(b) | Req 10 | A.8.15 |
CFG | CM | CC8.1 | §164.310(d)(2)(iii) | Req 2 | A.8.9 |
CRY | SC-8, SC-13, SC-28 | CC6.1 (enc.) | §164.312(a)(2)(iv) | Req 3, 4 | A.8.24 |
IDN | IA | CC6.1 (auth.) | §164.312(d) | Req 8 | A.8.5 |
INT | SI | CC7.1 | §164.312(c)(1) | Req 5, 6, 11 | A.8.7 |
NET | SC | CC6.6 | §164.312(e)(1) | Req 1 | A.8.20, A.8.21 |
SWT, UCT, NIL, ERR, RAW, TBD) MUST NOT be assigneduct-proposal. Each proposal must include: (a) the proposed 3-letter code, (b) the domain name, (c) mappings to at least two compliance frameworks, and (d) justification for why existing codes do not cover the domainThe fingerprint is the cryptographic core of SWT3. It binds the evidence factors to the anchor in a deterministic, reproducible way.
The fingerprint input is a colon-separated string with a WITNESS: domain separator
prefix, followed by exactly six fields:
WITNESS:{tenant_id}:{procedure_id}:{factor_a}:{factor_b}:{factor_c}:{timestamp_ms}
| Field | Type | Description |
|---|---|---|
WITNESS | literal | Domain separator prefix (REQUIRED) |
tenant_id | string | The organization/tenant identifier |
procedure_id | string | Procedure identifier in original format (e.g., SC-7.6) |
factor_a | integer | Baseline/threshold factor |
factor_b | integer | Measured/observed factor |
factor_c | integer | Delta factor (typically factor_b - factor_a) |
timestamp_ms | integer | Millisecond-precision Unix timestamp at witness time |
procedure_id in the fingerprint input retains its original
format (e.g., SC-7.6), while the anchor token uses the normalized form (e.g., SC76).
The anchor is human-readable; the fingerprint is cryptographic.
fingerprint = SHA-256(input_string)[0:12]
1. Encode the input string as UTF-8 bytes
2. Compute the SHA-256 digest
3. Convert to lowercase hexadecimal
4. Truncate to the first 12 characters
Given identical inputs, the fingerprint MUST always produce the identical output. This property enables cross-platform verification: an anchor minted in Python can be verified in TypeScript, Go, Rust, or any language with SHA-256 support.
Input: "WITNESS:DEMO_ENCLAVE:SC-7.6:4:3:-1:1773316622000"
SHA-256: 96b7d56c0245... (64 hex chars)
Fingerprint: 96b7d56c0245 (first 12 hex chars)
Twelve hexadecimal characters provide 48 bits of entropy (248 = ~281 trillion combinations). This provides collision resistance sufficient for compliance ledgers while keeping anchors human-readable and auditor-friendly. The full 64-character digest SHOULD be stored alongside the anchor for maximum verification fidelity.
To verify an anchor, a verifier needs:
procedure_id, tenant_id, factor_a,
factor_b, factor_c, timestamp_msAlgorithm:
1. Extract claimed_fingerprint from anchor token (last segment)
2. Construct input string using the canonical formula (Section 6.1)
3. Compute SHA-256 of UTF-8 encoded input
4. Truncate to 12 hex characters
5. Compare: recomputed == claimed_fingerprint
6. Return VERIFIED if match, TAMPERED if mismatch
| Status | Meaning |
|---|---|
CERTIFIED TRUTH | Fingerprints match. Evidence integrity confirmed. |
TAMPERED | Fingerprints do not match. Evidence or factors have been modified. |
INVALID TOKEN | Anchor does not conform to SWT3 format. |
An enclave is a collection of anchors sharing a trust boundary (typically a single tenant or organization). Enclave integrity is computed as:
1. Collect all anchor fingerprints in the enclave
2. Sort fingerprints lexicographically
3. Join with colons: "fp1:fp2:fp3:..."
4. Compute SHA-256 of the joined string
5. The full 64-character hex digest is the Enclave Integrity Signature
Property: The same set of anchors in the same state always produces the same signature. Any addition, removal, or modification of an anchor changes the signature. This enables point-in-time integrity snapshots.
The Clearing Protocol is the third pillar of SWT3 and the mechanism by which data sovereignty is achieved without sacrificing integrity. After an anchor is minted and its fingerprint is sealed, the raw evidence used during Provenance SHOULD be purged from the witness system. Only the Factor Matrix, the timestamp, and the anchor token persist.
The cryptographic proof survives the data. The fingerprint remains independently verifiable even after the raw evidence that produced the factors has been destroyed. This is the core insight of SWT3: integrity does not require data retention.
| Level | Name | Behavior | Verification |
|---|---|---|---|
| 0 | RETAIN | Raw evidence retained alongside factors. Maximum forensic capability, maximum attack surface. | Self-contained |
| 1 | FACTOR-ONLY | Raw evidence purged after factor extraction. Factors and anchor persist. RECOMMENDED default. | Self-contained |
| 2 | ANCHOR-ONLY | Factors purged after fingerprint computation. Only the anchor token persists. | Requires out-of-band factor exchange |
| 3 | SOVEREIGN | All local evidence destroyed after anchor is transmitted. The minting system retains nothing. | Requires out-of-band factor exchange |
Clearing MUST be irreversible. Once raw evidence is purged, it MUST NOT be recoverable from the witness system. Implementations that offer a "soft delete" or "recoverable purge" MUST NOT claim SWT3 Clearing compliance.
SWT3 anchors are designed to embed naturally into NIST OSCAL (Open Security Controls Assessment Language) documents. This section defines the canonical mapping between SWT3 evidence and OSCAL Assessment Results.
An SWT3 anchor maps to an OSCAL Assessment Result observation as follows:
{
"results": [{
"uuid": "<generated>",
"title": "SWT3 Automated Assessment",
"start": "<witnessed_at ISO-8601>",
"observations": [{
"uuid": "<generated>",
"title": "<procedure_id> Evidence Observation",
"description": "Automated evidence collection for <procedure_id>",
"methods": ["TEST"],
"relevant-evidence": [{
"description": "SWT3 Witness Anchor: <swt_token>",
"links": [{ "href": "#swt3-protocol", "rel": "evidence-source" }]
}],
"props": [
{ "name": "swt3-anchor", "value": "<full SWT3 token>" },
{ "name": "swt3-fingerprint", "value": "<12-char fingerprint>" },
{ "name": "swt3-factor-a", "value": "<factor_a>" },
{ "name": "swt3-factor-b", "value": "<factor_b>" },
{ "name": "swt3-factor-c", "value": "<factor_c>" },
{ "name": "swt3-timestamp-ms", "value": "<timestamp_ms>" }
]
}],
"findings": [{
"uuid": "<generated>",
"title": "<procedure_id> Finding",
"target": {
"type": "objective-id",
"target-id": "<control-id>",
"status": { "state": "<satisfied|not-satisfied>" }
}
}]
}]
}
| SWT3 Verdict | OSCAL Finding Status | Additional Properties |
|---|---|---|
PASS | satisfied | |
FAIL | not-satisfied | |
INHERITED | satisfied | inheritance-source property |
LAPSED | not-satisfied | lapse-reason property |
UNKNOWN | not-satisfied | assessment-pending: true |
SWT3-enabled OSCAL documents SHOULD include a back-matter resource identifying the protocol:
{
"back-matter": {
"resources": [{
"uuid": "<generated>",
"title": "SWT3 Protocol Specification v1.3",
"description": "Sovereign Witness Traceability Protocol for evidence integrity",
"props": [
{ "name": "type", "value": "protocol-specification" },
{ "name": "version", "value": "1.3.0" }
],
"rlinks": [{
"href": "https://tenova.io/specs/swt3-v1.3"
}]
}]
}
}
This section defines the application of SWT3 to artificial intelligence and machine learning systems. The AI Witnessing Profile enables cryptographic attestation of model behavior, safety controls, and operational integrity throughout the AI lifecycle.
The AI Witnessing Profile addresses requirements from:
AI procedures use the AI UCT code and follow the naming convention
AI-{DOMAIN}.{SEQUENCE}.
| Procedure | Domain | Description | Regulatory Basis |
|---|---|---|---|
AI-INF.1 | Inference Provenance | Witness that a specific model produced a specific output | EU AI Act Art. 12, AI RMF MEASURE 2.6 |
AI-INF.2 | Inference Latency | Witness response time against SLA thresholds | AI RMF MANAGE 2.2 |
AI-INF.3 | Inference Volume | Witness request throughput for capacity governance | AI RMF MANAGE 2.4 |
AI-MDL.1 | Model Integrity | Witness that deployed weights match approved registry hash | EU AI Act Art. 9(4)(b), AI RMF MANAGE 1.3 |
AI-MDL.3 | Model Drift | Witness accuracy degradation against baseline | AI RMF MEASURE 1.1 |
AI-GRD.1 | Guardrail Enforcement | Witness that required safety filters were active | EU AI Act Art. 9(4)(a), AI RMF MANAGE 4.1 |
AI-GRD.3 | PII Redaction | Witness PII detection and scrubbing | GDPR Art. 25, AI RMF GOVERN 1.7 |
AI-FAIR.1 | Bias Measurement | Witness demographic parity or equalized odds metrics | EU AI Act Art. 10(2)(f), AI RMF MEASURE 2.11 |
AI-HITL.1 | Human Review | Witness that a human reviewed an AI-generated decision | EU AI Act Art. 14, AI RMF GOVERN 1.4 |
AI-EXPL.1 | Explainability | Witness that an explanation was generated alongside output | EU AI Act Art. 13, AI RMF GOVERN 1.5 |
AI-EXPL.2 | Confidence Score | Witness model confidence against minimum threshold | AI RMF MEASURE 2.9 |
AI-TOOL.1 | Tool Call | Witness an AI agent's tool/function call with outcome | EU AI Act Art. 12(1), AI RMF GOVERN 1.7 |
AI-ID.1 | Agent Identity | Witness that an AI agent's cryptographic identity was asserted | EU AI Act Art. 12(1), AI RMF MAP 1.1 |
AI-ACC.1 | Access Control | Witness an AI agent's access to external resources with scope | EU AI Act Art. 9(4)(c), AI RMF MANAGE 2.4 |
AI-REV.1 | Anchor Revocation | Witness the revocation of a previously-issued anchor with reason | EU AI Act Art. 14(4)(d), Art. 20 |
AI-SEC.1 | Adversarial Detection | Witness adversarial threat detection (prompt injection, jailbreak) | EU AI Act Art. 15(4), AI RMF MANAGE 4.1 |
AI-SEC.2 | Input Validation | Witness input validated and sanitized before inference | EU AI Act Art. 15(3), AI RMF MEASURE 2.7 |
AI-GOV.6 | Scope Definition | Attest AI risk management scope (systems, tolerances, clearing) | NIST AI RMF GOVERN 1.3 |
AI-GOV.7 | Resource Allocation | Attest budget, staffing, compute allocated for AI governance | NIST AI RMF GOVERN 2.2 |
AI-RISK.1 | Risk Identification | Attest risk register exists with sources and categories | EU AI Act Art. 9, AI RMF MAP 2.1 |
AI-IR.1 | Incident Response | Attest AI-specific incident response capability exists | AI RMF MANAGE 3.1 |
AI-IMPACT.1 | Societal Impact | Attest community-level impact assessment conducted | AI RMF MAP 5.2 |
AI systems present unique clearing considerations. Prompts may contain PII, trade secrets, medical records, or classified information.
| Context | Recommended Level | Rationale |
|---|---|---|
| Internal analytics | Level 0 (RETAIN) | Full forensic capability for model debugging |
| B2B SaaS inference | Level 1 (FACTOR-ONLY) | Factors retained, prompts/responses cleared |
| Healthcare / PII | Level 2 (ANCHOR-ONLY) | Factors may reveal PHI; only anchor persists |
| Classified / defense | Level 3 (SOVEREIGN) | Nothing persists on the minting system |
| Regulation | Article / Function | Requirement | SWT3 Procedure |
|---|---|---|---|
| EU AI Act | Art. 9(4)(a) | Risk management measures operational | AI-GRD.1, AI-GRD.2 |
| EU AI Act | Art. 12(1) | Automatic logging capability | AI-INF.1 |
| EU AI Act | Art. 13 | Transparency and information | AI-EXPL.1, AI-EXPL.2 |
| EU AI Act | Art. 14 | Human oversight | AI-HITL.1, AI-HITL.2 |
| EU AI Act | Art. 72 | Post-market monitoring | AI-MDL.3, AI-FAIR.1 |
| NIST AI RMF | GOVERN 1.4 | Oversight mechanisms | AI-HITL.1, AI-HITL.2 |
| NIST AI RMF | MEASURE 2.6 | Traceability of outputs | AI-INF.1 |
| NIST AI RMF | MANAGE 1.3 | Deployment integrity | AI-MDL.1, AI-MDL.2 |
| EU AI Act | Art. 12(3) | Record-keeping corrections | AI-REV.1 |
| EU AI Act | Art. 50(2) | AI system identification | AI-ID.1 |
| GDPR | Art. 17 | Right to erasure | AI-REV.1 |
| EU AI Act | Art. 15(3-4) | Cybersecurity, adversarial robustness | AI-SEC.1, AI-SEC.2 |
| NIST AI RMF | GOVERN 1.3 | Risk management scope definition | AI-GOV.6 |
| NIST AI RMF | MAP 2.1 | Risk source identification | AI-RISK.1 |
| NIST AI RMF | MANAGE 3.1 | AI incident response | AI-IR.1 |
| NIST AI RMF | MAP 5.2 | Societal impact assessment | AI-IMPACT.1 |
SWT3 witnessing extends beyond application-layer SDKs to infrastructure-level integration. The protocol defines a two-layer architecture for inference serving platforms (e.g., NVIDIA Dynamo, vLLM, TGI):
| Layer | Integration Point | Dependencies | Use Case |
|---|---|---|---|
| Layer 1: Decorator | Endpoint function wrapper | Zero platform deps | Quick adoption, any serving framework |
| Layer 2: Service Graph | Platform-native interceptor | Platform SDK required | Deep integration, native metrics, health probes |
Both layers produce identical SWT3 anchors and use the same fingerprint formula.
Configuration is via a single DSN environment variable
(SWT3_DSN=https://{api_key}@{endpoint}/{tenant_id}), enabling
infrastructure teams to deploy witnessing through standard container
orchestration without code changes.
Infrastructure-layer witnessing captures factors that application-layer SDKs cannot observe: GPU utilization, queue depth, batch scheduling decisions, and inference engine version. These factors flow through the same clearing protocol and appear as standard SWT3 anchors in the compliance ledger.
SWT3 defines three conformance levels. Each level builds on the previous one.
An implementation that can mint valid SWT3 anchors. Requirements:
An implementation that can verify SWT3 anchors produced by any Level 1 system. Requirements:
An implementation that mints, verifies, and clears per the full protocol. Requirements:
Implementations MAY extend the metadata field with additional properties. Implementations MUST NOT modify the fingerprint algorithm or anchor format.
The 12-character (48-bit) fingerprint is not intended as a cryptographic signature. It is a verification shortcut. Systems requiring full cryptographic assurance SHOULD store and verify against the full 64-character SHA-256 digest.
Factor values (especially factor_a thresholds) may reveal security posture details.
Implementations SHOULD apply access controls to factor data and leverage the Clearing Protocol
at Level 1 or higher for sensitive environments.
The timestamp_ms is a critical input to the fingerprint. An attacker who can control
the timestamp can forge a valid fingerprint with different factors. Implementations MUST ensure
timestamps are generated by trusted sources (system clock, NTP-synchronized) and not accepted
from untrusted input.
At 48 bits, the birthday paradox threshold is approximately 224 (~16.7 million) anchors before a 50% collision probability. For most compliance ledgers (tens of thousands of anchors), this provides adequate uniqueness. Enclave integrity verification uses the full 64-character digest.
The following test vectors are canonical. Any conformant implementation MUST produce these exact fingerprints given these inputs. If your implementation produces a different fingerprint for any vector, it is not SWT3-conformant.
| # | Input String | Expected Fingerprint |
|---|---|---|
| 1 | WITNESS:ACME_PROD:AI-INF.1:1:1:0:1774800000000 |
32241a3056cd |
| 2 | WITNESS:AWS_NITRO_ENCLAVE:AI-INF.2:5000:8000:1:1774800001000 |
4ed784765e6c |
| 3 | WITNESS:ACME_PROD:AI-GRD.1:2:3:0:1774800002000 |
0a64120bbdc7 |
| 4 | WITNESS:AZURE_TRUSTED_EXEC:AI-MDL.1:1:0:1:1774800003000 |
c36d477b3c2d |
| 5 | WITNESS:ACME_DEFENSE:AI-FAIR.1:15:15:0:1774800004000 |
53180f5ae221 |
To validate your implementation against these vectors:
For each vector:
1. Construct the input string exactly as shown (UTF-8)
2. Compute SHA-256 of the input string
3. Convert digest to lowercase hexadecimal
4. Take the first 12 characters
5. Compare against the expected fingerprint
6. All 5 vectors MUST match for conformance
| Case | Input String | Expected |
|---|---|---|
| All-zero factors | WITNESS:AZURE_TRUSTED_EXEC:AI-DATA.1:0:0:0:1774800009000 |
289eb7452237 |
| Large factors | WITNESS:DEMO_ENCLAVE:AI-INF.3:10000:9500:0:1774800008000 |
05010820e5a4 |
The complete set of 13 fingerprint vectors, 2 signing vectors, and 5 hash vectors is available
at github.com/tenova-labs/swt3-ai in
test-vectors.json.
Implement a working SWT3 fingerprint in any language with SHA-256 support. These examples
use test vector #1 and should produce fingerprint 32241a3056cd.
import hashlib
# Construct the canonical input string
input_str = "WITNESS:ACME_PROD:AI-INF.1:1:1:0:1774800000000"
# Compute SHA-256 and truncate to 12 hex chars
digest = hashlib.sha256(input_str.encode("utf-8")).hexdigest()
fingerprint = digest[:12]
print(fingerprint) # 32241a3056cd
import { createHash } from "crypto";
// Construct the canonical input string
const input = "WITNESS:ACME_PROD:AI-INF.1:1:1:0:1774800000000";
// Compute SHA-256 and truncate to 12 hex chars
const digest = createHash("sha256").update(input, "utf8").digest("hex");
const fingerprint = digest.slice(0, 12);
console.log(fingerprint); // 32241a3056cd
# One-liner: compute fingerprint from the canonical input
echo -n "WITNESS:ACME_PROD:AI-INF.1:1:1:0:1774800000000" \
| openssl dgst -sha256 \
| cut -d' ' -f2 \
| cut -c1-12
# Output: 32241a3056cd
# Python: full witness lifecycle in 4 lines
pip install swt3-ai
python -m swt3_ai.demo
# TypeScript: full witness lifecycle
npx swt3-demo
Both demos mint 3 SWT3 anchors locally with no API keys, no signup, and no network calls. They demonstrate the full Provenance, Verification, and Clearing lifecycle.
Paste any SWT3 anchor token into the public verifier to confirm your fingerprint matches: sovereign.tenova.io/verify. The verifier recomputes the fingerprint from the stored factors and returns CERTIFIED TRUTH or TAMPERED. No account required.
This section explains how to use SWT3 anchors in assessment reports, conformity assessments, and audit findings. It is intended for C3PAOs, Notified Bodies, internal auditors, and assessors working with SWT3-enabled systems.
When reviewing an SWT3-enabled system, the assessor should:
The following template shows how to reference an SWT3 anchor in an assessment finding:
SWT3-E-AWS-NET-SC76-PASS-1773316622-96b7d56c0245For assessments covering hundreds or thousands of anchors, use enclave-level verification rather than verifying each anchor individually:
# Request the JSON ledger export for the assessment period
# Then verify all anchors in one command:
swt3-verify --enclave --from 2026-01-01 --to 2026-06-30
# Output: Enclave Integrity Signature (64-char SHA-256)
# If even one anchor in the period has been altered, the signature changes.
# Compare against the system's claimed signature to confirm integrity.
This approach verifies the entire assessment period in a single operation. The Enclave Integrity Signature can be recorded in the assessment report as aggregate evidence of ledger integrity.
For assessments producing OSCAL-formatted results, use the mapping in Section 9 to embed SWT3 anchors directly into the Assessment Results document. Each anchor becomes an observation with props containing the factor values, and each verdict maps to an OSCAL finding status.
Traditional compliance evidence (screenshots, log exports, configuration dumps) requires the assessor to trust that the evidence has not been altered between collection and review. SWT3 evidence does not require this trust. The assessor independently recomputes the fingerprint from the factors and confirms the match. If the evidence has been altered, the fingerprint breaks. This is a mathematical guarantee, not an organizational one.
The following open-source reference implementations are available:
| Package | Language | Registry | Capabilities | License |
|---|---|---|---|---|
swt3-ai |
Python | PyPI | Full SDK: OpenAI, Anthropic, Bedrock, LiteLLM adapters, clearing engine, OTel exporter | Apache 2.0 |
@tenova/swt3-ai |
TypeScript | npm | Full SDK: ES6 Proxy adapters, streaming, Vercel AI SDK, OTel exporter | Apache 2.0 |
swt3-ai |
Rust | crates.io | Core: fingerprint minting, verification, HMAC signing | Apache 2.0 |
swt3-ai |
C# | NuGet | Core: fingerprint minting, verification, HMAC signing | Apache 2.0 |
swt3-ai |
Ruby | RubyGems | Core: fingerprint minting, verification, HMAC signing | Apache 2.0 |
@tenova/swt3-mcp |
TypeScript | npm | MCP Server for AI compliance witnessing via Model Context Protocol | Apache 2.0 |
@tenova/libswt3 |
TypeScript | npm | Protocol reference: mint, parse, verify, enclave verification, CLI | Apache 2.0 |
All implementations share a common set of test vectors ensuring cross-language fingerprint parity. The same anchor minted in Python produces an identical fingerprint in Rust, C#, Ruby, and TypeScript. Community implementations in additional languages (Go, Java, Swift) are welcome; see the contribution guide for conformance requirements.
When referencing this specification in academic papers, assessment reports, regulatory filings, or standards submissions, use one of the following formats:
TeNova. "SWT3 Protocol Specification v1.3: Sovereign Witness Traceability Protocol."
Proposed Standard. Tenable Nova LLC, April 2026.
https://tenova.io/specs/swt3-v1.3
@techreport{swt3-v1.3,
title = {SWT3 Protocol Specification v1.3:
Sovereign Witness Traceability Protocol},
author = {{Tenable Nova LLC (DBA TeNova)}},
year = {2026},
month = {April},
type = {Proposed Standard},
url = {https://tenova.io/specs/swt3-v1.3},
note = {Apache 2.0. Patent pending.}
}
See Section 9.3 for the canonical OSCAL back-matter resource entry.
Related documents: Design Rationale (why each protocol decision was made) | MCP Compliance Binding (SWT3 + Model Context Protocol)
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | 2026-02-26 | Initial specification. Core anchor format, fingerprint algorithm, verification, clearing protocol. |
| 1.1.0 | 2026-03-15 | Canonical fingerprint formula with WITNESS: domain separator. Legacy fallback defined. |
| 1.2.0 | 2026-03-29 | AI Witnessing Profile (Section 10). UCT Extended codes. Cross-framework portability table. |
| 1.3.0 | 2026-04-17 | RFC 2119 notation. ABNF grammar. Conformance levels. OSCAL integration. Test vectors. Section numbering standardized. Proposed Standard status. |