🇬🇧 🇳🇱 🇫🇷

BeLibre

Autonomie Numérique

BeLibre

Le pigeon qui revint : comment la Belgique a discrètement choisi les logiciels libres pour ses communications

Logo Belgian Secure Communications

Imaginez : nous sommes en 1914. Quelque part sur le front occidental, un petit pigeon est lâché avec un message attaché à sa patte. Il ne sait pas pourquoi. Il ne sait pas pour qui. Il vole, tout simplement — fiable, invisible, infatigable — et livre le message.

Pendant des siècles, le pigeon a été l’étalon-or des communications sécurisées. Pas de fils à intercepter. Pas de serveur central à pirater. Décentralisé par nature. Et étonnamment difficile à intercepter.

C’est à ce pigeon que nous avons pensé en voyant le logo de BSC — Belgian Secure Communications. Cercle doré. Couleurs belges. Et en son centre : un grand oiseau blanc aux ailes déployées. Une discussion a immédiatement éclaté dans notre chat BeLibre. « C’est un aigle ? On n’est quand même pas américains ! » Quelqu’un a proposé : « un faucon peut-être ? » Et puis, après un bref silence : « Looks like a pigeon. Communication bird. Makes sense. »

Nous ne savons toujours pas avec certitude si l’oiseau du logo est bien un pigeon. Mais la métaphore tient quoi qu’il en soit.

Beam : pas un secret, mais pas de publicité non plus

Le 18 mars 2026, un article paraît sur Computable.be : le gouvernement belge lance sa propre application de messagerie sécurisée pour les fonctionnaires. Elle s’appelle Beam — un remplacement de WhatsApp, destiné à la défense, à la police et aux services publics. Développée par Belgian Secure Communications (BSC), un organisme gouvernemental assez récent sous tutelle du ministère de la Justice.

L’article décrit Beam comme une « application développée semi-en interne ». Le ton est donné : mystérieux, fermé, fait maison.

Mais est-ce vraiment le cas ?

La méthode du détective : devtools et intuition

Emma ouvre la version web de Beam, lance les devtools du navigateur et reconnaît immédiatement ce qu’il voit : les requêtes réseau trahissent sans ambiguïté l’empreinte d’Element et de Synapse, les deux briques open source les plus utilisées de l’écosystème Matrix. Un petit détour par l’endpoint de version confirme son intuition. (Vous voulez les détails ? Lisez la suite en bas de l’article, dans la « section nerds ».)

Beam est un rebranding d’Element, le client le plus populaire pour le protocole Matrix. Pas un secret — mais pas non plus explicitement mentionné sur le site officiel. Dommage qu’ils aient aussi supprimé le lien « Powered by Matrix » en bas de la page de connexion.

Matrix : le standard ouvert qui gagne discrètement

Matrix est un protocole de communication ouvert et décentralisé. Les messages ne sont pas stockés sur un seul serveur central quelque part dans la Silicon Valley, mais distribués sur une fédération de serveurs — comparable au fonctionnement du courrier électronique, mais avec chiffrement de bout en bout.

Il existe depuis 2014, et pourtant il n’a jamais atteint le grand public. Discord a gagné le marché. WhatsApp a gagné les familles. Mais Matrix a discrètement conquis les gouvernements : le gouvernement français fonctionne sur Tchap (un fork de Matrix), la Bundeswehr l’utilise, l’OTAN dispose de son propre client Element, et maintenant c’est au tour de la fonction publique belge.

Matrix est le pigeon du monde numérique : pas le plus rapide, pas le plus beau, mais remarquablement fiable. Et ce ne sont pas les créatures les plus difficiles à élever soi-même — chaque organisation peut monter son propre pigeonnier adapté à son contexte.

Ce que BSC a vraiment construit : un fork de Synapse

Derrière le client Element tourne un serveur. Chez Beam, il s’appelle beam.belgium.be, et il s’avère qu’il n’y a pas un mais au moins 15 instances Synapse distinctes derrière, vraisemblablement une par domaine ou service.

Synapse est l’implémentation de Matrix sur laquelle Beam se base, développée par Element (la société derrière Matrix). Elle est sous licence AGPLv3 — ce qui signifie que quiconque la modifie et la propose comme service doit publier le code source. Et c’est ce que BSC a fait correctement : en bas de la page de copyright de beam.belgium.be se trouve discrètement un lien vers leur organisation GitHub : bsc-oss, sous laquelle le dépôt Beam Synapse est rendu disponible. Pas de fanfare. Pas de communiqué de presse. Juste une obligation silencieuse honorée. Exactement comme il se doit.

La chaîne de version de leur serveur révèle qu’il s’agit d’une version personnalisée : 1.147.1+pg2. BSC utilise très probablement la version FOSS de Synapse, complétée par un module propriétaire non publié, qui — d’après leurs autres modifications — porte très vraisemblablement le nom PG. Plus de détails dans la section technique ci-dessous.

La Belgique n’est pas seule : l’armée silencieuse de Matrix en Europe

En creusant les détails de Beam, une question s’impose : où en sont les autres gouvernements européens ? La réponse est saisissante.

Matrix mène une progression silencieuse dans les communications gouvernementales depuis des années, sans que les grandes publications tech n’y prêtent vraiment attention. Un aperçu de ce qui tourne déjà :

La France a ouvert la voie dès 2017. Le résultat, c’est Tchap, déployé dans tous les ministères, sur 60 serveurs Matrix dans un réseau fermé. En 2025, Tchap compte près de 300 000 utilisateurs actifs par mois. Le 4 août 2025, le Premier ministre Bayrou a officialisé l’utilisation de Tchap par circulaire — comme service de messagerie sécurisée destiné à remplacer WhatsApp et Telegram dans tous les ministères. Côté budget, c’est remarquablement efficace : en 2024, le budget de Tchap s’élevait à 1,5 million d’euros — soit 0,50 euro par utilisateur actif. La DINUM, la Direction interministérielle du numérique, est par ailleurs devenue le premier gouvernement au monde à rejoindre la Matrix.org Foundation en tant que membre Silver.

L’Allemagne a peut-être adopté Matrix de la manière la plus systématique de tous les pays européens. La Bundeswehr utilise BwMessenger (plus de 100 000 utilisateurs actifs), un BundesMessenger existe pour le secteur public au sens large, et 2,5 millions d’écoliers en Rhénanie-du-Nord-Westphalie communiquent via Matrix. ZenDiS (le Centre pour la Souveraineté Numérique de l’Administration Publique) fait tourner Matrix comme colonne vertébrale d’OpenDesk, la plateforme de travail souveraine pour l’ensemble du gouvernement allemand. Le programme P20 pour les 20 forces de police allemandes a recommandé Matrix comme protocole de messagerie uniforme.

La Pologne est allée encore plus loin : le ministère de la Défense nationale a construit Merkury 2.0 entièrement en interne sur la base du code open source de Matrix — pas un fork d’Element prêt à l’emploi, mais développé de toutes pièces.

L’OTAN expérimente NI2CE (NATO Interoperable Instant Communication Environment), une messagerie Matrix auto-hébergée. La vision architecturale est remarquable : chaque nation héberge sa propre instance, et ces instances se fédèrent pour former un réseau souverain. La Bundeswehr peut continuer à utiliser BwMessenger, les Français Tchap, les Belges Beam — et ils peuvent quand même communiquer entre eux via la couche de fédération Matrix.

Outre l’Allemagne et la France, les États-Unis (US Navy, rendu public par les sénateurs Wyden et Schmitt), le Royaume-Uni, l’Ukraine, la Suède, l’Autriche, l’Estonie et le Luxembourg déploient tous des systèmes basés sur Matrix. Il y a actuellement au moins 16 gouvernements qui utilisent des logiciels basés sur Matrix pour leurs communications — un chiffre qu’Element a rendu public en janvier 2025. Étant donné que ce sont généralement les parties les plus soucieuses de sécurité au sein des gouvernements qui adoptent Matrix en premier, ces déploiements ne peuvent souvent pas être cités publiquement. Fin 2025, Matrix suivait déjà plus de 25 pays — et le chiffre continue de croître.

La Belgique n’est donc pas pionnière, mais elle n’arrive pas non plus trop tard. Beam s’inscrit dans un mouvement qui prend de l’ampleur depuis des années, et auquel le gouvernement belge contribue désormais activement.

Le savoir est là. Utilisez-le.

C’est le point sur lequel nous souhaitons nous attarder en tant que BeLibre, car cela va au-delà de Beam seul.

En construisant Beam sur ces outils open source, BSC ne s’est pas seulement épargné une quantité considérable de travail. BSC a aussi construit quelque chose de précieux : une expertise du protocole Matrix. Une équipe de développeurs belges qui connaissent Synapse de l’intérieur et de l’extérieur. Adapter Synapse aux exigences strictes du gouvernement demande bien plus que du copier-coller : il faut comprendre comment le système fonctionne de l’intérieur. Et ce savoir existe désormais.

Cette infrastructure, répartie sur au moins 15 serveurs, tourne en production. Ce n’est pas rien. Ils tirent parti de la grande adaptabilité de Matrix. Ce n’est pas rien non plus.

Mais ce savoir est aujourd’hui enfermé dans une seule application, pour un seul public : les fonctionnaires avec une adresse e-mail gouvernementale.

Alors pourquoi s’arrêter là ?

Le protocole Matrix n’est pas réservé à la défense ou à la justice. C’est un standard ouvert — la même couche sur laquelle des écoles, des communes, des hôpitaux, des parlements et des médias publics pourraient tous communiquer. Sans dépendance aux services cloud américains. Sans abonnement auprès d’une entreprise qui peut modifier unilatéralement ses conditions d’utilisation. Sans données transitant par des fermes de serveurs hors d’Europe.

Le savoir accumulé chez BSC est un actif stratégique pour l’ensemble du secteur public belge. Nous encourageons donc explicitement les services gouvernementaux concernés — BSC, BOSA, et les gouvernements flamand, wallon et bruxellois — à ne pas cantonner cette expertise à un usage défensif interne, mais à explorer comment Matrix pourrait être déployé plus largement : pour la communication entre services publics et citoyens, pour les écoles ayant besoin d’une plateforme de collaboration sécurisée, pour les hôpitaux souhaitant discuter des données patients en toute sécurité, pour les collectivités locales qui veulent remplacer leurs groupes WhatsApp par quelque chose qu’elles maîtrisent elles-mêmes.

Le contexte géopolitique rend tout cela plus urgent que jamais. La décision des États-Unis en février 2025 d’imposer des sanctions à la Cour pénale internationale de La Haye a démontré que les États souverains ne peuvent plus supposer que les services informatiques en cloud resteront fiables quand les vents géopolitiques tournent. L’UE fonctionne sous Microsoft — et c’est une vulnérabilité, pas un choix.

Là où Computable a légèrement raté la cible

L’article de Computable affirmait que Beam est « fermé » et qu’il « exclut structurellement » le phishing grâce à son architecture fermée. C’est seulement partiellement exact.

La fédération est activée. Beam fait tourner 15 serveurs Synapse avec la fédération active. L’annuaire des salons a été manuellement désactivé sur la fédération, mais c’est un choix de configuration, pas une contrainte architecturale. Que la fédération soit activement utilisée ou simplement non désactivée reste peu clair (et nous n’avons pas creusé davantage). Très probablement, la configuration actuelle de la fédération n’autorise les connexions qu’entre les 15 déploiements de Beam eux-mêmes, pas avec d’autres instances ou le réseau Matrix au sens large.

La restriction d’accès via adresse e-mail gouvernementale est réelle et judicieuse — mais c’est un contrôle d’accès, pas la même chose qu’un système fermé.

Matrix pour tout le monde : y compris vous

BSC a choisi les standards ouverts et les logiciels libres. Pas une plateforme propriétaire d’un géant technologique américain avec tous les risques juridiques que cela implique. Pas de dépendance fournisseur. Ils construisent sur Matrix, ils utilisent un logiciel sous licence AGPLv3, et ils publient leurs modifications sur GitHub. Trois bons points pour BSC !

Et Matrix n’est pas réservé aux gouvernements.

  • Créer un compte est possible sur des serveurs comme matrix.org, tchncs.de ou l’un des dizaines d’autres serveurs publics.
  • Créer votre propre groupe est à peine plus difficile que de créer un groupe WhatsApp, et peut parfaitement le remplacer.
  • Héberger votre propre serveur est techniquement faisable pour une école, une commune ou une association avec son propre serveur. Il faut quelques connaissances techniques, mais moins que vous ne le pensez, et c’est bien documenté. Vous obtenez ainsi un contrôle total sur vos données.
  • Utiliser Element comme client fonctionne sur ordinateur, mobile et dans le navigateur (ou l’un des autres clients, comme FluffyChat sur votre téléphone), et est entièrement compatible avec l’infrastructure Beam (même si BSC ne vous laissera probablement pas accéder à leurs serveurs).

Le gouvernement belge a discrètement envoyé un signal : les standards ouverts sont à la hauteur pour la défense et la justice. S’ils conviennent aux secrets d’État, ils conviennent certainement à votre communauté scolaire, votre comité de quartier, ou votre association — même pour votre famille et vos amis.

Pour finir : cet oiseau

Nous ne savons toujours pas avec certitude ce qu’est l’oiseau sur le logo BSC : aigle, faucon, ou pigeon après tout ?

Mais restons-en au pigeon. Car le pigeon livre le message : sans serveur central, sans abonnement, et sans politique de confidentialité de 47 pages.

Matrix fait de même. Et maintenant aussi le gouvernement belge.


Pour les nerds : analyse technique du fork BSC de Synapse

Cette section s’adresse au lecteur techniquement curieux. Pas intéressé par l’aspect technique ? Vous pouvez parfaitement vous arrêter ici. La suite explique uniquement comment Emma a découvert tout cela et quelles sont les différences techniques.

Pour ceux qui veulent savoir exactement ce que BSC a modifié par rapport à Synapse en amont : un diff direct a été réalisé entre le dépôt GitHub public de BSC et la version upstream correspondante. Voici les modifications les plus notables, des plus anodines aux plus significatives.

🔍 Comment Emma a identifié Beam

La page de connexion de Beam envoie des requêtes en rafale vers /_synapse/client/rendezvous — l’endpoint que Synapse utilise pour la connexion par QR code. Après un rechargement de la page, config.json du client Element Web est récupéré, incluant des chemins d’icônes spécifiques à Element.

L’endpoint de version sur web.beam.belgium.be/version renvoie MS4wLjI= — base64 pour 1.0.2. Le même endpoint sur app.element.io/version renvoie 1.12.12 en texte brut. Deux versions différentes, mais le même endpoint et le même format : l’empreinte ne ment pas.

⏱️ TTL du rendezvous : de 1 à 5 minutes

La connexion par QR code (rendezvous) expire après 1 minute dans Synapse standard. BSC a prolongé ce délai à 5 minutes. Probablement pragmatique : les fonctionnaires disposant d’appareils gérés de manière centralisée ont parfois besoin de plus de temps pour effectuer la procédure de couplage.

🔔 Son de notification activé par défaut

Dans le code Rust pour les règles de push, SOUND_ACTION a été ajouté à la règle de notification par défaut pour les messages. En clair : Beam joue un son par défaut à la réception de nouveaux messages, alors que Synapse en amont est silencieux. Une petite modification avec un grand impact sur l’usage quotidien.

🔒 Manhole entièrement et soigneusement supprimé

Synapse dispose d’une fonctionnalité de débogage appelée « manhole » — en substance un shell Python interactif accessible via TCP qui donne un accès direct à l’état interne du processus en cours d’exécution. Pratique pour les développeurs, potentiellement catastrophique si laissé ouvert accidentellement en production.

BSC ne s’est pas contenté de le désactiver — ils l’ont activement bloqué : quiconque définit l’option manhole dans la configuration reçoit désormais une erreur bloquante au démarrage. L’écouteur a été supprimé de la liste des types d’écouteurs connus, du parseur de configuration, de la configuration des workers, et des arguments de ligne de commande. Cinq endroits distincts dans la base de code — un travail soigné.

🙈 Noms d’appareils masqués pour les autres utilisateurs — un choix discutable

Dans Matrix, vous pouvez interroger les clés de chiffrement de bout en bout d’autres utilisateurs via /keys/query, y compris le nom d’affichage de leur appareil (« Laptop de Bob », « iPhone professionnel »). BSC a modifié cela : vous ne voyez plus que les noms d’appareils de vos propres équipements, pas ceux des autres.

À première vue, cela ressemble à une mesure de protection de la vie privée. Mais dans un contexte de sécurité, c’est en réalité un pas en arrière : la visibilité des noms d’appareils est précisément ce qui permet aux utilisateurs de détecter qu’un appareil inconnu ou suspect a été ajouté à leur compte. Les masquer rend la détection d’une compromission plus difficile, car les données se réduisent à de courts identifiants générés aléatoirement (ex. CNQATVTHNF). Un compromis discutable.

🧩 Le module PG Synapse : le cœur secret de Beam

C’est la modification architecturalement la plus significative, et elle englobe plusieurs changements interdépendants.

BSC a ajouté un nouveau système de callback à l’API de module Synapse : on_enrich_membership_content. Lorsque quelqu’un rejoint un salon (ou est invité, ou retiré), les modules enregistrés peuvent compléter le contenu de cet événement d’adhésion — en ajoutant des champs avant que l’événement ne soit validé et fédéré.

Pour rendre cela possible, BSC a également dû contourner le mécanisme de gel des événements de Synapse. Synapse « gèle » les événements après leur création pour empêcher les mutations non intentionnelles. BSC a ajouté une méthode unfreeze() à la classe de base des événements, et l’applique dans le callback check_event_allowed — afin que les événements puissent encore être mutés par le module.

Ce n’est pas une modification triviale. Elle rompt une garantie d’immuabilité délibérée dans Synapse, et a pour effet secondaire de modifier la sémantique de retour de check_event_allowed : là où le code en amont s’arrêtait au premier rejet ou remplacement, les callbacks de BSC itèrent désormais sur tous les gestionnaires et combinent les résultats. Cela brise la compatibilité avec les modules Synapse existants qui s’appuyaient sur le comportement d’origine.

Que fait concrètement le module ? Nous n’en sommes pas certains — le module PG Synapse n’est pas public. Mais l’architecture est claire : le module écrit des champs supplémentaires dans les événements d’adhésion, vraisemblablement pour injecter des données utilisateur provenant d’un système d’identité belge externe. Les commentaires dans les modifications font d’ailleurs explicitement référence aux adresses e-mail.

⚠️ Adresses e-mail dans la réponse sliding sync

Dans le code de sliding sync (l’API de synchronisation plus moderne pour les clients Matrix), le champ email issu des événements d’adhésion est transmis dans les données « hero » — les informations utilisateur renvoyées au client lors de la synchronisation des salons.

Si le module PG Synapse inscrit l’adresse e-mail d’un utilisateur dans l’événement d’adhésion (ce que l’architecture suggère fortement), cette adresse e-mail pourrait parvenir aux autres clients dans le même salon via le sliding sync. Que cela se produise effectivement dépend de ce que le module injecte précisément et des contrôles d’accès en place — mais c’est un point de données qui mérite une investigation approfondie.

🐳 PKI personnalisée et registre de modules privé

Le Dockerfile installe des certificats CA personnalisés (custom-cas) à plusieurs endroits dans le build — ce qui indique que BSC dispose de sa propre infrastructure de certificats interne. Le module PG Synapse est récupéré depuis un registre de paquets GitLab privé, avec un token d’accès (pg_access_token) temporairement copié dans le conteneur puis supprimé. C’est une approche courante, mais elle implique que le pipeline de build n’est pas entièrement reproductible depuis le dépôt public.

Pour finir : dans tout le diff, les modifications sont soigneusement marquées # PG_CHANGED — y compris une collection sobre mais fidèle d’espaces en fin de ligne.