Signal Integration Protocol (Outside → Inside)
Signal is the primary distribution channel because it provides end-to-end encryption and a familiar UX for users.
Roles
- Outside: sender of seed bundles (default)
- Inside: receiver-only by default
Outside sending flow
- Generate or ingest new seed profiles.
- Validate profiles (basic reachability + template sanity).
- Package profiles into a bundle, encrypt with age (X25519), and sign with Ed25519.
- Send as a Signal message containing a single URI:
snb://v2:<base64url(wrapper_json)>. - Use disappearing messages when possible.
Inside receiving flow
- Listen only for messages from explicitly trusted senders.
- Extract the
snb://URI from message text. - Verify signature against the trusted key list.
- Check timestamps/expiry.
- Decrypt payload (v2).
- Merge profiles into the encrypted local store.
- Apply revocations immediately.
Optional Inside health reports
Default is receive-only. If the user explicitly enables it, Inside may send a minimal health report:
- aggregate success rate by protocol family
- coarse failure reasons (e.g., UDP blocked, SNI reset suspected)
- no domains, no visited traffic metadata, no stable identifiers