Skip to content

Threat model

Actors and assets

Actors are an honest player, a modified or malicious client, an unauthenticated relay operator, a malicious network peer, and an operator of an authoritative room. Assets include game outcomes, hidden hands/decks, player identity and permissions, tokens and provenance, saved documents, availability, and any economic value represented by state.

Threats

  • A modified client submits illegal actions, fabricates resources, or rewrites its view; CRDT convergence does not make those claims true.
  • A peer reads private data present in a document, or a projection leaks it.
  • A relay observes, drops, reorders, floods, or routes messages and can accept arbitrary connections because the default relay is unauthenticated.
  • Key exchange without authenticated identity is vulnerable to impersonation or MITM. Generic E2E is implemented but unwired from the general sync path.
  • Attackers cause CPU/memory pressure with oversized messages, many peers, repeated actions, or unbounded document growth.
  • A host/dealer biases randomness or withholds progress.

Non-goals

This project does not claim a secure identity system, fair-shuffle proof, confidential CRDT storage, censorship resistance, perfect availability, anti-cheat guarantees, or protection from application bugs. There has been no external security audit.

Mitigate per game: validate at an authority, project least privilege, encrypt only with an authenticated key design, rate-limit and bound input/document growth, persist safely, and test failure paths. See audit status and Cuttle's limitation.