Skip to content

Commit 44abbfc

Browse files
committed
docs: clarify relay compromise and courtesy signal security
- Document that unsigned courtesy signals (e.g., bond_fail) are not authenticated by the relay and may be injected or dropped. - Clarify that relay compromise does not allow decryption of E2E content or forgery of signed envelopes.
1 parent 14f2a36 commit 44abbfc

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

SPEC.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,9 @@ Normative relay behavior:
200200
**5 minutes** (relay-enforced TTL, fixed from session creation — no TTL
201201
refresh on activity). The channel stores **at most one message**
202202
(single-slot overwrite); see §6.2 for the ping-pong invariant.
203+
Unsigned courtesy signals on this channel (e.g. `bond_fail`; §6.2 step 4)
204+
carry no relay-side authentication — a compromised relay MAY inject or drop
205+
them (§11.2 `bond_fail is courtesy-only`).
203206
- **Inbox POST idempotency.** When an envelope with the same `id` is posted
204207
again, the relay MUST return success (`204`) only if the wire bytes are
205208
byte-identical to the stored envelope; otherwise it MUST reject with
@@ -577,9 +580,13 @@ this.** Therefore:
577580
back. This is an accepted two-generals outcome, not a verification bug;
578581
implementations SHOULD surface the asymmetry to the human operator.
579582
- **Relay compromise:** worst case = drop/delay/reorder messages and learn
580-
metadata (who talks to whom, when, sizes). It can never read or forge
581-
content. Metadata privacy (sealed sender) is a future extension
582-
(Appendix B), not a v1 property — do not claim it.
583+
metadata (who talks to whom, when, sizes). It cannot decrypt E2E-protected
584+
envelope or artifact plaintext, and cannot forge valid signed envelopes or
585+
substitute artifact ciphertext without detection (hash/signature checks).
586+
Unsigned pair-channel courtesy signals (e.g. `bond_fail`; §6.2 step 4) are
587+
not authenticated relay-side and MAY be injected or dropped — see the
588+
`bond_fail is courtesy-only` bullet above. Metadata privacy (sealed sender)
589+
is a future extension (Appendix B), not a v1 property — do not claim it.
583590
- **Artifact fetch is unauthenticated.** `GET /artifact/{hash}` returns the
584591
stored ciphertext blob to any caller who knows the hash. The relay cannot
585592
decrypt artifact content; confidentiality rests on the per-artifact key

0 commit comments

Comments
 (0)