--- type: concept tags: [parking, security, foundational] sources: [parking-system-architecture] updated: 2026-06-14 --- # Threat Model The **second foundational force** (with [[offline-first]]). The central insight is a **reframing of who the adversary is**. (See [[parking-system-architecture]] ยง3.) ## The key reframing Early thinking focused on protecting the database **at rest** โ€” SQLCipher, LUKS, BitLocker, TPM-sealed keys. All of that defends against **an outsider who steals the machine or boots from external media**. That is the **wrong primary threat**. The most likely adversary is the **legitimate operator at the booth**. While the app runs, the database is decrypted in memory and the operator has full authorised access *through the app*. Encryption does nothing against the classic parking fraud: **take the cash, then void/delete the entry/exit record so the books balance.** ## Consequences The controls that actually address insider/operator fraud are different in kind: - **[[append-only-event-chain]]** โ€” events appended, never edited/deleted; a "void" is itself a recorded event, hash-chained, and **[[atecc608]]-signed** (unforgeable). - **[[reconciliation]]** against an authority the operator can't alter โ€” *this is what remote sync really is*: a fraud-control mechanism, not just a backup. - **[[disk-os-hardening]]** still worthwhile (defeats boot-from-USB) but **not the main event**; with LUKS in place, SQLCipher is optional defence-in-depth. The same reframing recurs at the device layer: the [[uhppote-controller]]'s real problem is unauthenticated commands ([[uhppote-udp-protocol]]), addressed by detection ([[event-log-ingestion]]) or prevention ([[esp32-custom-controller]]).