Transparence et sécurité

Dernière mise à jour : 16 octobre 2026

Une promesse de confidentialité ne vaut que si on peut la vérifier. Cette page dit ce que le serveur voit, ce qu'il garde, ce qui reste hors de sa portée, et ce que nous ne garantissons pas. Les noms de fichiers cités sont ceux du code source.

Votre position

  • Arrondie sur votre appareil, avant l'envoi. Pour les notifications de proximité et le choix de la zone radio, le navigateur ramène la position à une case d'environ 1 km (src/lib/coarse.ts) : la position précise ne quitte jamais votre appareil. Le serveur arrondit encore par prudence, ce qui ne change rien à une valeur déjà arrondie.
  • Le radar calcule les distances sur votre appareil et ne demande au serveur qu'une zone d'environ 2 km.
  • Une annonce publie un repère à une dizaine de mètres, que vous choisissez de publier. Elle n'est pas liée visiblement à son auteur.

La radio : ce qui est chiffré

  • Messages écrits : chiffrés de bout en bout (ECDH P-256, HKDF, AES-256-GCM) dans le navigateur, src/lib/radio-e2ee.ts.
  • Voix : chiffrée de bout en bout, trame par trame, dans votre navigateur (AES-GCM, flux insérables WebRTC de LiveKit, dans un worker servi par notre propre origine). Chaque personne a une clé de voix dérivée de sa clé d'expéditeur, remise aux autres membres dans un message privé chiffré. Le serveur audio (SFU) ne reçoit que des trames qu'il ne peut pas déchiffrer. Un navigateur qui ne sait pas chiffrer la voix ne peut pas rejoindre : il n'y a pas de repli en clair. Cela vaut pour les groupes « autour de moi » (src/lib/radio-session.ts) comme pour les canaux à prise de parole limitée (src/lib/canal-session.ts, src/lib/voice-keys.ts) : dans un canal, celle ou celui qui parle remet sa clé de voix à chaque membre dans un bloc chiffré.
  • Les clés sont créées à chaque entrée dans un groupe et oubliées à la sortie. Rien n'est enregistré : ni la voix, ni les messages.

Limites assumées. Le serveur voit des métadonnées : qui est connecté, à quel groupe, à quelle heure, quand quelqu'un parle, et l'adresse réseau de la connexion (inévitable pour établir une liaison). Les clés publiques transitent par le serveur : un serveur actif et malveillant pourrait en substituer une. Pour s'en protéger, comparez le code de sécurité affiché dans la radio avec celui de votre interlocuteur, par un autre canal. Enfin, une personne présente dans le groupe peut toujours répéter ce qu'elle a entendu.

Journaux et conservation

DonnéeDurée
Journal d'accès du serveur web (pages vues, adresses réseau)Aucun : désactivé (deploy/Caddyfile)
Journaux techniques des services (erreurs)3 fichiers de 5 Mo par service, écrasés en boucle : quelques jours au plus
Journal du serveur audioAvertissements et erreurs seulement ; salle supprimée 1 minute après la dernière personne
Limitation des abus (par adresse réseau)En mémoire seulement, jamais écrite sur disque
Position de proximité (arrondie à ~1 km)Effacée après 6 heures sans mise à jour, et à la désactivation
Annonce expirée30 jours après expiration, puis effacée
Notifications dans l'application30 jours après lecture, 90 jours au plus
Observations d'affluence1 jour
Sessions de connexionJusqu'à leur échéance, puis effacées
Compte suppriméEffacé de la base immédiatement ; encore présent dans les sauvegardes jusqu'à 14 jours

Les tâches d'effacement sont dans src/lib/expiry.ts et deploy/backup.sh. Nous ne vendons rien et ne partageons aucune donnée à des fins publicitaires.

Vérifier par soi-même

  • Code source : https://17octobre.app/code/
  • Le trafic réseau et le code JavaScript servi sont publics et peuvent être inspectés : ils doivent correspondre à ce qui est décrit ici. Tout écart est un défaut que nous voulons connaître.
  • Audit indépendant : bienvenu, y compris anonyme et bénévole. Le périmètre, les règles et le canal de signalement sont décrits dans le fichier SECURITY.md du code source. Contact : contact@17octobre.app.

Voir aussi la politique de confidentialité et les règles.