Problem
There is no mechanism to trigger fleet-wide crypto-destruction in a mass-compromise or mission-abort scenario. Currently each device must be individually revoked or wiped, which is too slow when an entire field deployment is at risk.
Solution — Emergency All-Hands Wipe Broadcast
A single YubiKey-signed broadcast message triggers crypto-destruction on ALL active field devices simultaneously.
Server endpoint
POST /api/v1/mission/broadcast/destroy
Authorization: Bearer <operator_jwt>
Content-Type: application/json
{
"operator_id": "niels.weistra",
"broadcast_nonce": "base64-random-32-bytes",
"issued_at": "2026-05-14T18:45:00Z",
"signature": "base64-ecdsa-p384-signature-over-payload"
}
Signature covers: operator_id + broadcast_nonce + issued_at — verified against stored operator ECDSA P-384 public key.
Replay protection
issued_at must be within 30 seconds of server time
broadcast_nonce stored in Redis with 60s TTL — duplicate submissions rejected
Fan-out
Server marks ALL MachineStatus.mission_active machines as destroying and:
- Fans out wipe signal to all connected
itl-tpm-register agents (via long-poll or webhook)
- Each agent: clears LUKS key slot 0 (TPM-sealed), wipes AES keys from memory, writes destruction event to TPM NV
Audit
# models/broadcast.py
class BroadcastEvent(Base):
id: uuid
operator_id: str
broadcast_nonce: str
issued_at: datetime
machines_targeted: int
executed_at: datetime
signature_verified: bool
Authorization
Requires itl-broadcast-operator Keycloak role — separate from itl-cell-admin. Requires YubiKey-backed token (enforced via Keycloak auth flow policy).
MITRE ATT&CK
- T1485 — Data Destruction (authorized defensive use)
- T1486 — Data Encrypted for Impact (reverse: decrypt and destroy own keys)
Files
- New:
routers/broadcast.py
- New:
services/broadcast_wipe.py
- New:
models/broadcast.py
- New env var:
ITL_BROADCAST_OPERATOR_PUBKEY_PATH
Companion issue
- ITL.Talos.HardenedOS:
itl-tpm-register broadcast wipe receiver
Acceptance Criteria
Problem
There is no mechanism to trigger fleet-wide crypto-destruction in a mass-compromise or mission-abort scenario. Currently each device must be individually revoked or wiped, which is too slow when an entire field deployment is at risk.
Solution — Emergency All-Hands Wipe Broadcast
A single YubiKey-signed broadcast message triggers crypto-destruction on ALL active field devices simultaneously.
Server endpoint
Signature covers:
operator_id + broadcast_nonce + issued_at— verified against stored operator ECDSA P-384 public key.Replay protection
issued_atmust be within 30 seconds of server timebroadcast_noncestored in Redis with 60s TTL — duplicate submissions rejectedFan-out
Server marks ALL
MachineStatus.mission_activemachines asdestroyingand:itl-tpm-registeragents (via long-poll or webhook)Audit
Authorization
Requires
itl-broadcast-operatorKeycloak role — separate fromitl-cell-admin. Requires YubiKey-backed token (enforced via Keycloak auth flow policy).MITRE ATT&CK
Files
routers/broadcast.pyservices/broadcast_wipe.pymodels/broadcast.pyITL_BROADCAST_OPERATOR_PUBKEY_PATHCompanion issue
itl-tpm-registerbroadcast wipe receiverAcceptance Criteria
destroyingbroadcast_eventstable (append-only)broadcast_noncewithin 60s → 409itl-broadcast-operatorrole required (not standard admin)