Olm et Matrix : d'où vient le moteur de chiffrement de Fenzly
Depuis le début de cette série, nous décrivons le chiffrement de Fenzly comme un chiffrement de bout en bout à Double Ratchet, de la même famille de protocoles que Signal. Cette phrase a deux moitiés, et nous n’avons jamais expliqué que la première. Ce billet est consacré à la seconde : le moteur concret qui tourne dans Fenzly s’appelle Olm, et il est né d’un projet nommé Matrix. L’un et l’autre méritent une vraie présentation, car lorsque vous confiez la position de votre famille à une application, c’est en réalité à cette machinerie que vous faites confiance.
Matrix, en bref
Matrix est un standard ouvert de communication en temps réel, lancé en 2014 par Matthew Hodgson et Amandine Le Pape. L’idée derrière est plus ancienne que les messageries, et meilleure que la plupart d’entre elles : la communication devrait fonctionner comme l’email. Personne ne possède l’email ; chacun peut faire tourner un serveur ; les serveurs se parlent. Matrix applique cela à la messagerie instantanée — un réseau ouvert et décentralisé sans entreprise unique au milieu, aujourd’hui piloté par une fondation à but non lucratif, avec Element comme application la plus connue.
Un tel réseau a un problème que les applications centralisées n’ont pas : on ne peut pas se contenter de faire confiance au « serveur », puisque n’importe qui peut en opérer un. Matrix avait donc besoin d’un chiffrement de bout en bout où le serveur est présumé indigne de confiance dès le premier jour. Si cette hypothèse vous rappelle quelque chose, c’est la prémisse du serveur aveugle, atteinte par le chemin inverse.
Olm : le Double Ratchet, réimplémenté dans l’ouvert
Le Double Ratchet — le mécanisme du « cadenas neuf pour chaque message » que nous avons décrit au début de la série — a été inventé par l’équipe derrière l’application Signal, et publié comme spécification ouverte. Cette publication était le but : la cryptographie gagne la confiance en étant examinée, pas en restant secrète.
Olm est l’implémentation de cette famille d’algorithmes par le projet Matrix, publiée en 2016 sous la licence permissive Apache, précisément pour que des projets extérieurs à Matrix puissent l’adopter, l’étudier et l’embarquer. Et étudiée, elle le fut : en 2016, la société de sécurité NCC Group a audité publiquement la bibliothèque, conclusions intégralement publiées — défauts trouvés, défauts corrigés, rapport lisible par tous. C’est la culture dans laquelle Olm a grandi.
Du C au Rust : vodozemac
Le logiciel vieillit, et le logiciel cryptographique vieillit le plus vite là où on le voit le moins : gestion mémoire, canaux auxiliaires, primitives qui étaient acceptables il y a dix ans. En 2021, l’équipe Matrix a réécrit le moteur de zéro en Rust, un langage conçu pour éliminer des classes entières de bugs mémoire. Cette réécriture s’appelle vodozemac.
En 2022, vodozemac est passé par un audit de sécurité indépendant mené par Least Authority — cofinancé, détail parlant, par l’agence qui numérise le système de santé allemand, laquelle pariait précisément sur cette machinerie. En 2024, le projet Matrix a officiellement déprécié l’ancienne bibliothèque C et fait de vodozemac le moteur recommandé.
Fenzly fait tourner vodozemac — le successeur Rust audité, pas l’original déprécié — à travers une fine couche d’intégration que nous maintenons nous-mêmes.
La comparaison avec Signal
La comparaison honnête est courte : c’est le même algorithme cœur, issu de la même spécification publiée, avec deux histoires différentes autour.
L’application Signal implémente le Double Ratchet au sein d’un service centralisé unique, avec sa propre couche d’accord de clés et sa propre mécanique de groupes. Olm implémente le même ratchet pour un monde ouvert et fédéré, sous une licence qui permet à chacun de l’utiliser. Les deux offrent les propriétés qui comptent : chiffrement de bout en bout, confidentialité persistante (les messages d’hier restent scellés même si la clé d’aujourd’hui fuite), et auto-guérison après une compromission.
Les vraies différences sont aux marges : les détails de l’accord de clés, et surtout les groupes. Matrix ajoute un mécanisme séparé (Megolm) pour rendre efficaces les salons immenses, au prix de garanties par membre affaiblies. Fenzly utilise délibérément le seul cœur pair-à-pair : votre cercle compte une poignée de personnes, pas un salon de mille membres, alors chaque message est scellé individuellement pour chacun, en conservant les garanties les plus fortes pour tout le monde. Pourquoi ce choix passe très bien à l’échelle d’une famille — et pas à celle d’un stade — mérite un billet à part.
Qui se fie à cette machinerie
Olm n’est pas une bibliothèque obscure ; c’est peut-être l’implémentation du Double Ratchet la plus déployée en dehors de Signal lui-même. La fonction publique française communique sur Tchap, une plateforme bâtie sur Matrix avec des centaines de milliers d’utilisateurs mensuels. L’armée allemande a construit BwMessenger sur Matrix, étendu ensuite aux autres administrations allemandes. Et l’agence de santé allemande a choisi Matrix comme standard de messagerie sécurisée de son système de santé national — potentiellement 150 000 organisations manipulant les données les plus sensibles qui soient.
Rien de tout cela ne prouve que le code est parfait. Cela prouve quelque chose de plus utile : des institutions sérieuses, avec des modèles de menace sérieux et leurs propres auditeurs, continuent d’aboutir à la même machinerie.
Ce que cela signifie pour Fenzly, honnêtement
Pourquoi avoir choisi ce moteur ? Trois raisons, dites simplement. La famille d’algorithmes est la bonne — le Double Ratchet publié et étudié. L’implémentation est celle qui est maintenue et auditée indépendamment, dans un langage sûr en mémoire. Et la licence convient à notre projet : le client Fenzly est à code fermé, il nous fallait donc un moteur dont la licence le permet — la licence permissive d’Olm existe exactement pour cela, là où certaines alternatives ne l’autorisent pas.
Et les frontières honnêtes, comme toujours. « Audité » désigne la bibliothèque cryptographique au cœur du moteur — pas Fenzly dans son ensemble ; personne n’a audité notre application, et nous ne nous parerons pas des lauriers de la bibliothèque. Un audit est un examen à un instant donné, pas une auréole : des chercheurs continuent de sonder ce code, c’est exactement ainsi que la cryptographie ouverte doit fonctionner, et c’est une raison de confiance plutôt que d’inquiétude. Enfin, utiliser Olm ne fait pas de Fenzly un membre du réseau Matrix — pas de fédération, aucun serveur Matrix impliqué ; nous utilisons le moteur, sur notre propre infrastructure aveugle.
Le verrou qui protège la position de votre famille a été forgé dans l’ouvert, examiné en public, et des armées, des gouvernements et des hôpitaux s’y fient. Nous pensons que c’est le seul genre de verrou qui vaille.
La prochaine fois : partager sa position n’est pas un interrupteur oui/non dans Fenzly — les différents modes de partage d’un cercle, et comment choisir le bon pour chacun.