Anonymity Coverage Across Prototypes

Each of Connect's seven research prototypes exercises a different slice of the four anonymity layers defined in the Anonymity Lifecycle taxonomy — L1 Identity, L2 Network, L3 Social, and L4 Temporal. This page maps each prototype against those layers, identifies which are structurally exercised and which are absent or deferred, and highlights the gaps that no current prototype covers.

Key finding: identity and network anonymity are exercised most consistently across the set. Temporal anonymity is the weakest. Social anonymity is only structurally exercised by Prototype 3, and only for key exchange — not for messaging or feed replication. No prototype yet exercises all four layers simultaneously at production fidelity.

This page is a different angle from the Anonymity Lifecycle, which traces the four layers across the lifecycle of a single contact relationship. Here the question is: which layer does each prototype actually exercise, and where are the research gaps?

The Four Layers

From Anonymity Lifecycle:

Coverage Matrix

Verdict codes: Full = structurally exercised as designed; Partial = some aspects present, documented limitations; Deferred = explicitly out of scope for this prototype; Out of scope = this layer is not a variable in the prototype's design space.

Layer P1 Tor Chat P2 BLE Messenger P3 Key Exchange P4 Encrypted Feed P5 WiFi Relay P6 BLE Dead Drop P7 LoRa Mesh
L1 Identity Full Full Full Full Partial Full Partial
L2 Network Full Full Full Out of scope Partial Full Full
L3 Social Deferred Partial Full Deferred Partial Partial Partial
L4 Temporal Partial Deferred Out of scope Partial Out of scope Out of scope Deferred

Rationale — Per Cell

L1 Identity:

L2 Network:

L3 Social:

L4 Temporal:

Per-Prototype Anonymity Profile

P1 — Tor Chat

L1 and L2 are the prototype's headline contributions: the .onion address as a stable but network-anonymous identity, and all traffic through Tor v3 hidden services. L4 is partially exercised via the Signal Protocol Double Ratchet — the strongest forward secrecy of any prototype in the set. L3 is not exercised because the prototype is a two-party chat with no BLE, no discovery, and no multi-contact scenario. The Tor guard node seeing the user's IP is the principal residual L2 risk, and is correctly documented in the spec. See Spec: Tor Chat.

P2 — BLE Messenger

Offline-first design gives strong L2 (no IP packets). L1 is clean: only ciphertext on disk, QR contact exchange, no PII. The critical L4 gap — static X25519 key, no ratchet — is explicitly documented. L3 is weakly present: the 8-byte truncated hash in BLE advertisements is not a full identity reveal, but it is not the fully unlinkable random beacon that P3 achieves. The prototype's primary value is empirical BLE characterisation, not anonymity fidelity. See Spec: BLE Messenger.

P3 — Proximity Key Exchange

P3 is the L3 centrepiece of the prototype suite: unlinkable BLE beacons (16 random bytes, rotated every 15–20 minutes), no identity in any advertisement, GATT challenge-response that reveals identity only to authenticated contacts. L1 is full — Ed25519 + X25519 + ML-KEM-768 key bundle, feed_id derivation matching the full system. L2 is full (offline). L4 is not applicable — the prototype carries no message content. The beacon rotation interval is the residual L3 risk: chipset fingerprinting (clock drift and RSSI signature) can correlate a device across rotation events. See Spec: Proximity Key Exchange.

P4 — Encrypted Feed

L1 is fully exercised: Ed25519 signing, feed_id derivation, audience-keyed AEAD, key material in platform keychain. L4 is partially exercised: the tombstone preserves chain integrity while dropping content, and the hash chain provides tamper detection. The Double Ratchet stub (single-key AEAD, no ratchet) is the principal L4 limitation. L2 and L3 are not variables — the prototype's transport-agnostic design deliberately excludes them. See Spec: Encrypted Feed.

P5 — WiFi Relay

P5's primary research question is L2 at the relay boundary: what does a relay operator see when all content is E2E encrypted? The answer — sender/recipient feed_id hashes, message size, timestamps — is the prototype's key finding, and constitutes a partial L3 violation (pairwise edges visible to relay). L1 is partial because the truncated feed_id and stable session tokens are a simplification the full system resolves with ephemeral identifiers. L4 is not a relay concern — phone-side static-key AEAD is the same limitation as P2. See Spec: WiFi Relay.

P6 — BLE Dead Drop

The delay-tolerant, fixed-location variant of P5's relay model. L1 and L2 are clean: phone encrypts before deposit, relay holds only hash-routed ciphertext, no internet uplink. The 8-byte recipient hash is a partial L3 mitigation — stable for a given feed_id but not the full identifier. No forward secrecy (Tink AEAD, static key): L4 is absent. The prototype's value is demonstrating the asynchronous BLE relay model, not anonymity completeness. See Spec: BLE Dead Drop.

P7 — LoRa Mesh

L2 is strong: no internet infrastructure, ISM-band radio, all relay nodes carry opaque ciphertext. L1 is partially compromised by the cleartext Meshtastic node ID required for flood-routing duplicate suppression — a structural constraint of the Meshtastic firmware layer, flagged as an open question in the spec. L3 inherits the same node-ID problem. L4 is explicitly deferred: static X25519 shared secrets, no ratchet, EU duty-cycle constraints make a ratchet handshake impractical. See Spec: LoRa Radio Mesh.

Gaps

Gap 1 — No prototype exercises all four layers simultaneously

The full system requires L1 + L2 + L3 + L4 to hold simultaneously. The prototype suite reaches full coverage of L1 and L2 across multiple prototypes, but no single prototype fully exercises L3 (only P3, and only for key exchange — not for messaging or feed replication) or L4 at production fidelity with a real transport (P1 has the ratchet but no BLE/WiFi; P2 has the transport but defers the ratchet). A future integration prototype combining P3 (discovery), P4 (feed), and P1's Double Ratchet over a P5-style relay would be the first end-to-end four-layer exercise.

Gap 2 — Temporal anonymity (L4) has no transport-on-device prototype

P1 implements the Double Ratchet, but only over Tor — no BLE or WiFi Direct. P2 defers forward secrecy. P7 explicitly excludes it. The only L4 exercise is P4's partial hash-chain-and-tombstone work, which is not a ratchet. No prototype has yet run the Double Ratchet over a BLE or WiFi transport with real device constraints (Doze, background restrictions, OEM BLE stack bugs). The feasibility of per-message ratchet steps under real BLE throughput and battery constraints is unknown — this is the most significant open question across the set.

Gap 3 — Social anonymity (L3) is not exercised in any messaging or feed-replication scenario

P3 exercises L3 for key exchange only. For the feed replication scenario (P4) and the relay scenarios (P5, P6, P7), L3 controls — no global namespace, no friends-of-friends, ephemeral pairwise identifiers at the relay — are either deferred or explicitly noted as partial violations. The production architecture requires relay sessions to use ephemeral pairwise identifiers rather than stable feed_id hashes. No prototype has implemented this.

Gap 4 — Relay social graph metadata is a finding with no resolution prototype

P5 correctly identifies that a relay storing (sender_feed_id, recipient_feed_id, timestamp) tuples creates social graph edges visible to the operator. The production mitigation (SimpleX-style ephemeral queue IDs) is referenced but not prototyped. Until a relay prototype implements ephemeral pairwise identifiers, the L3 guarantee at the relay layer remains unvalidated. See also Threat Composition for the cross-layer treatment of this gap.

Gap 5 — Meshtastic node ID is an unresolved L1/L3 leak in P7

The cleartext 4-byte node ID required for Meshtastic flood-routing duplicate suppression is a structural constraint of the firmware. The open question — whether ephemeral node IDs can rotate without breaking relay functionality — requires firmware modifications outside the prototype scope. Until resolved, P7 cannot claim full L1 or L3 coverage.

Open Questions

Cross-References