This commit is contained in:
Gilles Soulier
2026-01-05 13:13:08 +01:00
parent 8e14adafc6
commit 1d177e96a6
149 changed files with 29541 additions and 1 deletions
+64
View File
@@ -0,0 +1,64 @@
# 📄 security.md — Mesh Security Model
## 1. Principes
- **Server = control plane** : auth, ACL, signaling WebRTC, événements, notifications.
- **Clients/Agents = data plane** : média + fichiers + terminal en P2P (WebRTC).
- Le serveur ne transporte pas de flux média ni de transferts lourds (sauf fallback explicite).
## 2. Identités
- user_id : utilisateur
- peer_id : instance client web
- device_id : agent desktop
- room_id : salon (24 personnes)
## 3. Authentification
- JWT (access token court recommandé, refresh optionnel).
- WS authentifié (JWT dans query param sécurisé ou header lors du handshake).
- Rotation et révocation (à prévoir V1/V2).
## 4. Autorisations : Capability Tokens
Le serveur émet des tokens à TTL court (ex 120s) contenant:
- room_id
- peer_id (ou device_id)
- caps : ["call", "screen", "share:file", "share:folder", "terminal:view", "terminal:control"]
- contraintes optionnelles : max_size, max_rate, target_peer_id
Règles:
- aucun offer WebRTC nest accepté/relayé sans capability valide associée à laction.
- un viewer en terminal na pas le droit denvoyer `TERM_IN` sans `terminal:control`.
## 5. WebRTC sécurité
- Chiffrement natif DTLS/SRTP (média) + DTLS (DataChannel).
- Vérification fingerprint SDP côté client (V1+).
- ICE: STUN + TURN (TURN = bande passante sensible; limiter via quotas).
## 6. Terminal share (SSH preview)
- Le SSH tourne **sur la machine du partageur** (agent), via PTY.
- Aucun secret SSH (clé, mot de passe) nest transmis aux viewers.
- Mode par défaut : **preview (read-only)**.
- “Take control” : un seul contrôleur à la fois, arbitrage via serveur (capability).
- Option V2: masquage best-effort de secrets (non garanti).
## 7. Notifications (Gotify)
- Le serveur et lagent peuvent notifier Gotify.
- Ne jamais inclure de secrets dans le texte des notifications.
- Niveau de détail configurable (ex: “Nouveau message” vs contenu).
## 8. Journalisation
- Server logs: auth failures, room joins, capability issuance, signaling events (sans contenu média).
- Agent logs: démarrage/arrêt de partage, erreurs sync, diagnostics ICE.
- Politique de rétention courte (ex 714 jours) + rotation.
## 9. Menaces & mitigations (résumé)
- Usurpation peer_id → JWT + WS auth + device_id registration.
- Replay doffers → capability TTL court + nonce/session_id.
- Accès non autorisé à une room → ACL server-side + tokens scoped room_id.
- Exfiltration via terminal → preview-only par défaut + contrôle explicite.
- TURN abuse → quotas, credentials temporaires, rate limiting.
## 10. Roadmap sécurité
- Refresh tokens + révocation
- RBAC (owner/member/guest)
- E2E applicatif optionnel (au-dessus de WebRTC)
- Attestation device (optionnel)