diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-09-03 14:09:18 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-09-03 15:34:33 +0200 |
| commit | 15087b0e8fdb872602310119f14680aaa443fd93 (patch) | |
| tree | e04e37005b75593d8f23f7e0ef571f4947202027 /CLAUDE.md | |
| parent | 4d7581b23b560a2a6803cae2df91f90368c01b21 (diff) | |
| download | meshbay-15087b0e8fdb872602310119f14680aaa443fd93.tar.gz | |
docs: Windows port audit and sender key distribution decision
Add docs/WINDOWS-PORT.md with the full portability audit (what is
already portable, what blocks, implementation plan W1-W7).
Reverse structural decision 20: sender keys are distributed
GEK-wrapped, not pairwise to identity keys. The GEK is the group
secret; files and chat share the same access boundary. Per-device
chains (15.0b) remain required for correctness.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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 |