Safe PerimeterBorn Between 2 Generals

Architecture

Everything converges, and nothing is retained

The matching happens on the child’s band. No server is told where anybody was, because no server is ever sent a position.

Footage: generated (OpenAI Sora 2) — abstract, depicts nothing and no one

The design problem is to let two devices establish that they are close to each other without either one learning who the other is, and without any server learning where either of them was. This is a solved problem, and the solution has been deployed at national scale before.

The shape is the one used by exposure-notification systems: a per-day key, short-lived identifiers derived from it, and matching performed entirely on the receiving device against a published list. It is adapted here in one important way — the population whose keys are published is a small, legally defined set rather than everybody.

The flow

Safe Perimeter data flow The supervision authority publishes a daily list of pseudonymous keys. The monitored device derives a rotating identifier from its own key and broadcasts it. The child's band receives broadcasts, downloads the key list, and matches locally. Location never leaves the band. Only a tier 3 or tier 4 encounter produces an outbound record, and it goes to the guardian device. Supervision authority enrols, assesses, revokes publishes daily key list Monitored device holds its own daily key broadcasts a rotating id every 15 minutes The child’s band receive-only radio matches keys locally runs the tier classifier keeps the local log never transmits an id Guardian device receives T2 and above holds the audible alert Officer / dispatch T3 queue, T4 referral every read is audited key list (public, pseudonymous) rotating id, over the air encounter record only enrolment status, tier, revocations — no locations no location ever reaches a server

The dashed red line is the point of the whole architecture: it is a path that does not exist. The band holds the location history and never sends it anywhere. A guardian, an officer, an operator, and an attacker who takes the entire service all learn the same thing about where a child has been, which is nothing.

The scheme

A key a day, an identifier a quarter hour

Neither one carries a name, and yesterday’s identifiers cannot be linked to today’s without the key that generated them.

Footage: generated (OpenAI Sora 2) — abstract, depicts nothing and no one

Derivation

DTK(day)      = HMAC-SHA256( master_secret, "SP-DTK|" + day )   [first 16 bytes]
RPI(day, win) = HMAC-SHA256( DTK(day),      "SP-RPI|" + win )   [first 16 bytes]

  master_secret   never leaves the monitored device
  DTK             published daily by the supervision authority
  RPI             broadcast over the air, rotating every 15 minutes
  win             the quarter-hour index within the day (0–95)

The band receives an RPI, downloads the day’s DTK list, and re-derives every candidate RPI to test for a match. It never uploads what it heard. A passive observer sees only 16 opaque bytes that change four times an hour.

Token derivation

Real HMAC-SHA256, computed by your browser’s WebCrypto
Daily key
Identifier now
Identifier next window
Same key, next day
    Key list per day
    Per 14-day window
    Identifiers per subject per day
    96

    Change the day and the daily key changes completely, which is what makes yesterday’s broadcasts unlinkable to today’s. Change the window and the identifier changes while the key stays the same — the band can still match it, an observer cannot follow it. The key-list size is the number that decides whether this design is practical: at county scale it is tens of kilobytes a day, which any device can hold. At national scale it is not, which is why the keys must be partitioned by region.

    Retention

    RecordWhere it livesHow longWho can read it
    Received identifiersBand only14 days, then destroyedNobody — not exportable
    Position trackBand only72 hours, rollingNobody. Not synced, not backed up
    T1 log entriesBand only30 daysGuardian, on the device, on request
    T2 notificationsGuardian device90 daysGuardian
    T3 / T4 encounter recordCase systemPer jurisdiction’s evidence rulesOfficer, subject, subject’s counsel — every read logged
    Daily key listPublic14 days rollingEveryone, by design — see the residual risk in the threat model

    What the supervision authority never receives

    Not a position, not a track, not a heat map, not a count of encounters that did not escalate. It receives enrolment status changes and tier-3-and-above records. If the authority wants aggregate statistics it has to ask for them as a deliberate, separately authorised collection — not harvest them as a side effect of the alerting system.