PCH-02-006-vault-id-privacy-note.patch.md

1.8 KB · raw

rendered · source

PCH-02-006 — vault_id LAN-linkability privacy note (doc-only)

Severity: Informational Target file: src/shared/sync-identity.ts:62-67 (computeVaultId docblock) Report: peach-code-review.md, Finding PCH-02-006

Decision

Documentation only. The property is inherent to peer discovery (peers must recognise "same vault" before exchanging entries); the fix is to state the privacy consequence where the identifier is minted, with the existing mitigation pointers.

Exact edit — extend the computeVaultId docblock

// BEFORE (sync-identity.ts:62-67)
/**
 * Stable per-vault identifier carried in the mDNS TXT record and the
 * first WebSocket handshake. Receiver rejects the connection if its
 * own vault_id differs — prevents a paired-but-different-vault peer
 * from corrupting the registry.
 */

// AFTER
/**
 * Stable per-vault identifier carried in the mDNS TXT record and the
 * first WebSocket handshake. Receiver rejects the connection if its
 * own vault_id differs — prevents a paired-but-different-vault peer
 * from corrupting the registry.
 *
 * PRIVACY NOTE (PCH-02-006): vault_id is stable across sessions and is
 * broadcast over mDNS during LAN sync discovery. A passive observer on the
 * same network can therefore (a) link every device sharing this vault as
 * belonging to one user, and (b) observe when sync activity occurs. This is
 * inherent to the discovery design and is one-way — the master key is not
 * recoverable from the BLAKE3 output. It never leaves the local network.
 * Users who need LAN unlinkability should leave sync disabled; "rotate sync
 * identity" (vault.ts rotateSyncIdentity) re-keys the root key and with it
 * this identifier.
 */

No tests — comment-only change.

Save message (integration)

docs: PCH-02-006 document vault_id LAN-linkability privacy note at computeVaultId