This document describes the attack surface of UATP and how we mitigate threats. For a trust protocol, transparency about threats is itself a form of trust.
Asset
Criticality
Description
User Private Keys
Critical
Ed25519 signing keys
Capsule Integrity
Critical
Proof that content hasn't been modified
Timestamp Accuracy
High
Proof of when capsules were created
User Privacy
High
Content of reasoning/decisions
System Availability
Medium
API uptime
Goal : Forge capsules, steal keys, compromise proofs
Capability : Network access, known vulnerabilities
2. Malicious Insiders (UATP Operators)
Goal : Forge user capsules, access private data
Capability : Server access, database access
Mitigation : Zero-trust architecture makes this impossible (see below)
3. Compromised Dependencies
Goal : Supply chain attacks
Capability : Malicious code in dependencies
Mitigation : Pinned dependencies, security scanning
Goal : Mass surveillance, targeted compromise
Capability : Extensive resources, zero-days
Mitigation : Defense in depth, cryptographic minimalism
Attack Vectors & Mitigations
Attack
Impact
Mitigation
Status
Steal private key from server
Critical
Keys never on server - user-sovereign architecture
Mitigated
Steal private key from user device
Critical
Keys encrypted with PBKDF2 (480k iterations) + Fernet
Mitigated
Brute-force passphrase
Critical
High iteration count, minimum 8-char passphrase
Mitigated
Memory extraction
High
Keys cleared after use (best-effort in Python)
Partially mitigated
Attack
Impact
Mitigation
Status
UATP forges user signature
Critical
Impossible - UATP never has private keys
Mitigated
Attacker forges signature
Critical
Ed25519 cryptographic security
Mitigated
Modify capsule content
Critical
SHA-256 hash + signature verification
Mitigated
Replay old capsule
Medium
RFC 3161 timestamps from external TSA
Mitigated
C. Timestamp Manipulation
Attack
Impact
Mitigation
Status
UATP backdates timestamp
High
External TSA (DigiCert) - UATP can't control
Mitigated
TSA compromise
High
Multiple TSA support planned
Planned
Network time attacks
Medium
TSA uses authenticated time sources
Mitigated
Attack
Impact
Mitigation
Status
UATP reads capsule content
High
Content stays local unless user publishes
Mitigated
Database breach
Medium
Only hashes stored on server
Mitigated
Network sniffing
Medium
TLS required for all connections
Mitigated
Attack
Impact
Mitigation
Status
API flooding
Medium
Rate limiting, caching
Implemented
Resource exhaustion
Medium
Request size limits
Implemented
TSA unavailability
Low
Graceful degradation, retry logic
Implemented
Attack
Impact
Mitigation
Status
Malicious dependency
High
Dependency pinning, Dependabot
Implemented
Compromised PyNaCl
Critical
Audited library, minimal dependencies
Accepted risk
CI/CD compromise
High
Branch protection, signed commits
Implemented
┌─────────────────────────────────────────────────────────────┐
│ USER DEVICE (Trusted) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Private Key │ │ Capsule │ │ Signing │ │
│ │ (encrypted)│ │ Content │ │ Operation │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
│ Only hash transmitted
▼
┌─────────────────────────────────────────────────────────────┐
│ UATP SERVER (Untrusted) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Hash │ │ Timestamp │ │
│ │ Storage │ │ Request │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
│ Hash for timestamping
▼
┌─────────────────────────────────────────────────────────────┐
│ EXTERNAL TSA (Independent) │
│ ┌─────────────┐ │
│ │ RFC 3161 │ DigiCert / FreeTSA │
│ │ Timestamp │ (Not controlled by UATP) │
│ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
By design, UATP operators cannot :
❌ Forge user signatures (no access to private keys)
❌ Read capsule content (stays on user device)
❌ Backdate timestamps (external TSA)
❌ Modify existing capsules (hash verification)
❌ Decrypt user keys (passphrase never transmitted)
Risk
Likelihood
Impact
Acceptance
Python memory not fully cleared
Medium
Medium
Accepted - language limitation
Single TSA dependency
Low
Medium
Planned multi-TSA
Cryptographic breakthrough
Very Low
Critical
Monitoring, PQ-ready
User loses passphrase
Medium
High
User responsibility
We assume:
User's device is not fully compromised
Ed25519 remains cryptographically secure
SHA-256 remains collision-resistant
External TSAs operate honestly
TLS provides transport security
If a security incident occurs:
Affected users notified within 24 hours
Public disclosure within 72 hours
Post-mortem published
Mitigation deployed
Security issues: Kayron@houseofcalloway.com
See SECURITY.md for responsible disclosure process.