Design-intent reference and simulation. Not a shipped product, not a medical device, no clinical claims.
Docs home | API reference
Threat model (STRIDE)
Scope: TAL edge (network proxy form factor), control plane, policy bundles, receipts, admin console. Simulation context; no clinical systems.
Assets
Policy signing key, edge receipt keys, policy bundles, receipt chains, tenancy and role bindings, the protected link to the legacy device.
Spoofing
Threat: unenrolled programmer or cloned identity requests a session. Control: enumerated devices, unknown source denied, revocation list in the signed bundle, explicit source lists for control rules. Residual: identity in the proxy form factor comes from flow metadata; strong device attestation is a production requirement.Threat: forged policy bundle. Control: Ed25519 signature over canonical digest, trusted keyId set at the edge.Threat: admin impersonation. Control: designed passkeys; demo login is flagged and must be disabled before any real tenant.Tampering
Threat: altered bundle in transit or at rest. Control: digest and signature verification, rollback refusal.Threat: altered or deleted receipts. Control: hash chain from GENESIS with per-receipt signatures; any edit breaks verification offline.Repudiation
Control: every decision and every policy action is an attributable, signed or logged event. Author and approver are recorded separately.Information disclosure
Control: proxy does not decrypt TLS; receipts carry flow metadata only. Tenancy scoping on reads. Residual: demo receipts endpoint accepts writes without auth (demo only; production requires edge identity on ingest).Denial of service
Threat: telemetry flood or bulk sync crowds out control. Control: per-flow token buckets and strict priority with control on top; per-class tail drop.Threat: control plane unreachable. Control: local policy at the edge, refresh about 5 min, hard expiry about 24 h; after expiry the edge fails closed. Preservation-First: denial never changes implant firmware or therapy.Elevation of privilege
Threat: author self-approves. Control: separation of duties enforced in the router.Threat: compromised but enrolled endpoint. Control: it is limited to the operations, classes, initiators, windows and rates its rules allow.flowchart TB
subgraph Untrusted
D[Devices and networks]
U[Admin browsers]
end
subgraph Trust boundary: edge
E[TAL edge]
end
subgraph Trust boundary: control plane
CP[Router + RBAC]
K[(Signing key secret)]
DB[(D1 events, policies, receipts)]
end
D --> E
U --> CP
CP --> K
CP --> DB
CP -- signed bundles --> EPhase 2 additions
* Stolen enrollment token: single use, hashed at rest, short TTL; a used token shows used_by in the console.
* Rogue gateway: only registered gateway keys can fetch bundles or post receipts; receipt chains are verified against that key on ingest, so forged or reordered receipts are rejected.
* Rogue device: the gateway installs only WireGuard peers named in a signed bundle; revocation removes the peer on the next bundle (SSE pushed, under a minute in practice).
* Replay of signed requests: 5 min timestamp skew window and body hash binding.
* Open proxy abuse on hosted gateways: proxy ports need a short lived device credential, destinations stay default deny, --deny-private blocks internal ranges, and cloud metadata and link local ranges are always blocked.
* Admin takeover: passkeys (phishing resistant, origin bound) and HttpOnly SameSite=Strict sessions; the bootstrap token only registers a passkey and grants no operations by itself.
* Public data exposure: the public live view redacts device names to roles and hides destination addresses.