DetectionTag
Purpose
The mark a recipient recognises their own cell by — cheaply, privately, and without a stable address
anyone could cluster them by. Every cell carries one. To an observer it is opaque noise, no two alike;
to a holder of the matching SealKey it is a fast test — the tag verifies under their key or it does
not — so a recipient sifts a shared edge's whole outflow with a cheap check per cell and full-unseals
only the cells that are theirs. Because the tag is freshly salted per cell it never repeats, so an
observer cannot link one of a recipient's cells to the next; the recognition lives entirely in whether
it verifies, which only a key-holder can tell.
The unlinkability against an outside observer comes from the salt and the mix; recognition among holders of the same key is deliberately possible. Truly per-recipient unlinkable detection would need the pairwise secrets of the comms layer's deferred trust arc — a refinement noted where it belongs and not pretended here.
Attributes
- value: is
Textthat carries the opaque mark the cell is recognised by, such as "dt-88f1"
Invariants
- The value is not empty.
Operations
matches
Reports whether a given SealKey recognises this tag — true when the tag verifies under that key,
false otherwise. A cheap test, run once per passing cell before any unsealing.
Result: whether the key recognises the tag, as Truth
Scenarios
The right key recognises the tag
Given: a DetectionTag minted for the holder of the SealKey "sk-0163"
When: matches is asked with the SealKey "sk-0163"
Then: the answer is true — this cell is theirs to unseal
Another key does not recognise it
Given: a DetectionTag minted for the holder of the SealKey "sk-0163", and the SealKey "sk-0264" with different material
When: matches is asked with the SealKey "sk-0264"
Then: the answer is false — not this key's cell, and no unsealing is attempted