Nordhavn / specs / convene / mix / DetectionTag

convene / mixdata

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

Invariants

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

spoken of by