FreeSpeech

Documentation technique

Pour ceux qui veulent vérifier ou réimplémenter. Les documents complets sont dans le dépôt de code, en français et en anglais.

Documents

DocumentContenu
sources/PROTOCOL.fr.mdLe protocole : identité, contacts, messages, pièces jointes, groupes, multi-serveur, push, transport WebSocket.
sources/ARCHITECTURE.fr.mdComposants, cryptographie, stockage chiffré, schéma de la base, modèle de sécurité et limites connues.
state.fr.mdÉtat d'avancement : ce qui est fait, testé, et ce qui reste.
sources/SERVER_INSTALLATION.fr.mdInstaller son propre serveur relais, public ou privé (ASP.NET Core 10, nginx, systemd). sources/DEPLOYMENT.fr.md en donne l'exemple concret.
sources/ADMINISTRATION.fr.mdAdministrer un relais ou une passerelle push sans redémarrer : invitations, bannissements, serveurs voisins, journaux, suivi.
sources/DEPLOYMENT_PUSH.fr.mdInstaller la passerelle push (une clé par relais, maintenance, limites).
sources/CONSOLE_ADMIN.mdConsole d'administration web (édition Pro) : installation, rôles, double authentification, audit.
sources/diagrams/14 schémas explicatifs, en français et en anglais.

Chaque document existe en français (.md) et en anglais (.en.md).

Cryptographie en bref

UsagePrimitive
Identité (clés dérivées de 3 phrases)Argon2id (32 Mio, t = 3), puis HKDF-SHA256
Accord de clé d'un messageX25519 éphémère par message, puis HKDF-SHA256
ChiffrementChaCha20-Poly1305
SignatureEd25519, liée à l'expéditeur, au destinataire et à un type de message
GroupesClé partagée par époque, renouvelée à chaque changement de composition
Pièces jointesMorceaux de 48 Kio, arbre de Merkle SHA-256
Base localeSQLite chiffré par SQLCipher, clé dérivée des phrases
Serveur à serveurRequêtes signées HMAC-SHA256, fenêtre de 120 s, nonce à usage unique

La cryptographie est implémentée avec BouncyCastle (code managé, portable sur Android et iOS), et vérifiée par des vecteurs de test figés.

Ce que la conception protège, et ce qu'elle ne protège pas

Protégé

Limites assumées

Signaler une faille : contact@rebisway.com.

Héberger son serveur

Un serveur relais est une application ASP.NET Core 10 derrière nginx. Il ne stocke aucun message. Un serveur privé n'a besoin d'aucune déclaration : donnez son adresse dans votre fiche de contact. Un serveur public peut s'associer à d'autres serveurs publics par échange d'un secret partagé (liste blanche administrée à la main). Un serveur privé peut en outre ne recevoir que les personnes qu'il a invitées. Le guide pas à pas est sources/SERVER_INSTALLATION.fr.md ; l'administration au quotidien est dans sources/ADMINISTRATION.fr.md.

Serveur de référence : https://fs.rebisway.com (Réglages → Serveurs → ajouter).

Déplacement d'un client vers un serveur frère
Bascule d'un client vers un serveur frère.
Notifications via plusieurs passerelles
Notifications : plusieurs passerelles et disjoncteur.

Licence

FreeSpeech est un logiciel libre. Le code est publié sous licence GNU AGPL v3 ou ultérieure : vous pouvez l'étudier, le modifier et le redistribuer selon ses termes. Le serveur étant un service réseau, quiconque en exploite une version modifiée doit en offrir le code source à ses utilisateurs. Une licence commerciale distincte est possible sur demande, pour intégrer FreeSpeech dans un produit qui ne peut pas respecter l'AGPL : contact@rebisway.com. La console d'administration web (édition Pro) est distribuée séparément ; elle n'utilise que les API d'administration publiques des serveurs.