diff options
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -675,9 +675,13 @@ anything that assumes one key per person. gathering, one ISP validated. **ICE/STUN (WebRTC) is the traversal path**, for native clients too (via `aiortc` in Python) - Argon2id 256 MB was applied to the **hub only**; `crypto.py` keystore is still 64 MB -- Sender keys must be distributed **pairwise to identity keys**, never GEK-derived โ and - **per device, never per person** (2026-08-17). Two devices sharing one sending chain - both advance it, producing key/nonce reuse: that is C1 again, one level down. +- ~~Sender keys must be distributed pairwise to identity keys, never GEK-derived.~~ + **Reversed 2026-09-03:** sender keys are distributed **GEK-wrapped**. The GEK is the + group secret; files and chat share the same access boundary. Pairwise distribution + added complexity for a separation (files vs chat) that has no meaning in this + platform's group model. Sender keys remain **per device, never per person** + (2026-08-17). Two devices sharing one sending chain both advance it, producing + key/nonce reuse: that is C1 again, one level down. `GroupSenderKeyStore.add_sender` currently does `self._states[dist.sender_id] = ...`, so a second device under the same `sender_id` silently overwrites the first. Revoking a device must rotate, like revoking a member. See `docs/devel-phases-next.md` ยง15.0b |