Cryptographic Integrity
TRF safeguards authenticity, integrity, and non-repudiation with layered cryptography. Hashes detect tampering, signatures prove authorship, timestamps anchor evidence in time, and certificate checks tie everything to trusted authorities.
Hashing and Package Integrity
Artifact hashes
Every artifact stores a SHA-256 hash calculated from canonical JSON (hash field excluded):
{
"id": "req:FUNC-001",
"type": "requirement",
"title": "System response time",
"content": "The system shall respond to user input within 100ms",
"created": "2024-01-15T10:30:00Z",
"hash": "sha256:a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890"
}
import hashlib
import json
def calculate_artifact_hash(artifact):
content = {k: v for k, v in artifact.items() if k != 'hash'}
canonical = json.dumps(content, sort_keys=True, separators=(',', ':'))
return hashlib.sha256(canonical.encode('utf-8')).hexdigest()
Package metadata
manifest.json records aggregate hashes and Merkle roots so clients can verify entire archives:
{
"manifest": {
"content_hash": "sha256:package_level_hash",
"artifact_count": 1247,
"link_count": 2834,
"verification": {
"algorithm": "merkle_tree",
"root_hash": "sha256:merkle_root_hash"
}
}
}
Digital Signatures
Artifact signatures
Teams may sign critical artifacts with organizational certificates:
{
"signatures": {
"artifact_signatures": [
{
"artifact_id": "req:FUNC-001",
"signer": "requirements-team@example.com",
"algorithm": "RSA-SHA256",
"signature": "base64-encoded-signature",
"certificate": "X.509-certificate",
"timestamp": "2024-01-15T10:30:00Z",
"hash_verified": "sha256:a1b2c3d4e5f6..."
}
]
}
}
Package signatures
Archive-wide signatures cover all artifacts and attachments:
{
"package_signature": {
"signer": "build-system@example.com",
"algorithm": "RSA-SHA256",
"signature": "base64-encoded-package-signature",
"certificate": "X.509-certificate-chain",
"timestamp": "2024-01-20T15:30:00Z",
"scope": "complete_package",
"signed_hash": "sha256:package_content_hash"
}
}
Multi-party approvals
Supply chains can attach multiple signatures to the same package:
{
"multi_party_signatures": [
{
"party": "supplier-a@example.com",
"role": "component_developer",
"signature": "base64-signature-a",
"certificate": "supplier-a-cert",
"timestamp": "2024-01-18T14:00:00Z"
},
{
"party": "integrator@example.com",
"role": "system_integrator",
"signature": "base64-signature-b",
"certificate": "integrator-cert",
"timestamp": "2024-01-20T16:00:00Z"
},
{
"party": "auditor@certification-body.com",
"role": "independent_auditor",
"signature": "base64-signature-c",
"certificate": "auditor-cert",
"timestamp": "2024-01-22T09:30:00Z"
}
]
}
Timestamping and Chronology
Trusted timestamps
RFC 3161 tokens bind evidence to trusted time sources:
{
"timestamp_token": {
"tsa_url": "http://timestamp.example.com/tsa",
"token": "base64-encoded-timestamp-token",
"hash_algorithm": "SHA-256",
"timestamp": "2024-01-20T15:30:00.123Z",
"accuracy": "±1 second",
"tsa_certificate": "X.509-tsa-certificate"
}
}
Chronology checks
Clients validate creation/modified order and dependency timing:
def validate_chronology(artifacts):
for artifact in artifacts:
created = artifact['created']
modified = artifact.get('modified', created)
if modified < created:
raise ChronologyError(f"Artifact {artifact['id']} modified before creation")
for dep_id in artifact.get('dependencies', []):
dep_artifact = find_artifact(dep_id)
if dep_artifact['created'] > created:
raise ChronologyError(f"Dependency {dep_id} created after dependent {artifact['id']}")
Certificate Management
Chains and revocation
TWPacks carry certificate metadata so verifiers can trace PKI trust roots:
{
"certificate_chain": [
{
"level": "end_entity",
"subject": "CN=build-system@example.com",
"issuer": "CN=Example CA",
"serial": "1234567890",
"not_before": "2024-01-01T00:00:00Z",
"not_after": "2025-01-01T00:00:00Z",
"public_key": "RSA-2048-key",
"certificate": "base64-encoded-cert"
},
{
"level": "intermediate",
"subject": "CN=Example CA",
"issuer": "CN=Root CA",
"certificate": "base64-encoded-intermediate-cert"
},
{
"level": "root",
"subject": "CN=Root CA",
"issuer": "CN=Root CA",
"certificate": "base64-encoded-root-cert"
}
]
}
{
"revocation_check": {
"method": "OCSP",
"ocsp_url": "http://ocsp.example.com",
"response": "base64-encoded-ocsp-response",
"status": "good",
"checked_at": "2024-01-20T15:30:00Z"
}
}
Verification Workflows
CLI sequence
tw validate package.twpack --check-structure
tw validate package.twpack --check-hashes
tw validate package.twpack --check-signatures
tw validate package.twpack --check-certificates
tw validate package.twpack --check-timestamps
tw validate package.twpack --full
CI/CD integration
name: Verify Evidence Package
on:
pull_request:
paths: ['evidence/*.twpack']
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install TRF CLI
run: curl -sSL https://get.trf.dev | sh
- name: Verify Package Integrity
run: |
for package in evidence/*.twpack; do
tw validate "$package" --full --strict
done
- name: Check Certificate Status
run: tw certificate-status evidence/*.twpack --check-revocation
Trust Models
Hierarchical PKI
Root CA (Industry Standard)
├── Automotive CA
│ ├── OEM Certificate
│ └── Supplier Certificate
├── Medical Device CA
│ ├── Manufacturer Certificate
│ └── Testing Lab Certificate
└── Software CA
├── Developer Certificate
└── CI/CD System Certificate
Web and consensus models
{
"trust_relationships": [
{
"trustor": "org-a@example.com",
"trustee": "org-b@example.com",
"level": "full",
"established": "2024-01-01T00:00:00Z",
"attestation": "base64-encoded-attestation"
},
{
"trustor": "org-b@example.com",
"trustee": "org-c@example.com",
"level": "limited",
"scope": ["test_results", "design_documents"],
"established": "2024-01-15T00:00:00Z"
}
]
}
{
"consensus_verification": {
"required_signatures": 2,
"participants": [
"developer@example.com",
"reviewer@example.com",
"quality-assurance@example.com"
],
"signatures_received": 3,
"consensus_achieved": true,
"finalized_at": "2024-01-20T16:00:00Z"
}
}
Operational Practices
Key management
tw keygen --algorithm RSA-4096 --output org-keypair.pem
tw sign package.twpack --key hsm://slot-1 --certificate org-cert.pem
tw verify package.twpack --public-key org-public.pem
Secure storage
{
"storage_security": {
"encryption": "AES-256-GCM",
"key_derivation": "PBKDF2-SHA256",
"integrity_check": "HMAC-SHA256",
"access_control": {
"read": ["audit-team", "compliance-officer"],
"write": ["build-system"],
"admin": ["security-admin"]
}
}
}
Audit logging
{
"audit_log": [
{
"timestamp": "2024-01-20T15:30:00Z",
"action": "signature_verification",
"package": "evidence-v1.2.twpack",
"result": "success",
"verified_by": "audit-system",
"signature_count": 3,
"certificate_status": "valid"
},
{
"timestamp": "2024-01-20T15:35:00Z",
"action": "hash_verification",
"artifact_count": 1247,
"failed_artifacts": [],
"result": "success"
}
]
}
These controls ensure every TWPack delivers verifiable, tamper-evident evidence from creation through audit.