← Tous les articles

L'enveloppe de groupe n'existe pas

Votre cercle familial ressemble à une seule conversation : vous partagez une position, tout le monde la voit. Sous le capot, cette phrase cache un problème qui occupe les cryptographes depuis des années. L’enveloppe scellée que nous décrivons depuis le début est un objet fondamentalement à deux : verrouillée sur votre téléphone, déverrouillée sur un seul autre. Il n’existe pas de cadenas que trois personnes pourraient ouvrir avec trois clés privées différentes.

Chaque application chiffrée de bout en bout qui propose des groupes doit donc choisir une astuce. Il y en a deux, elles ne sacrifient pas la même chose, et Fenzly a délibérément choisi la plus têtue. Ce billet explique les deux, et le prix que nous payons pour notre choix.

Le raccourci de l’industrie : une clé pour toute la salle

L’astuce populaire fonctionne ainsi. À la création d’un groupe, chaque membre génère une clé d’envoi pour ce groupe, et la remet une fois, par enveloppes scellées à deux, à chacun des autres membres. Dès lors, envoyer un message au groupe coûte un seul chiffrement : tout le monde détient déjà la clé qui l’ouvre. La plupart des grandes messageries utilisent une variante de ce principe, et Matrix a la sienne pour les grands salons.

C’est un compromis parfaitement honorable, car pour les grands groupes c’est le seul qui passe à l’échelle : un chiffrement par message, que la salle compte dix membres ou dix mille.

Mais regardez ce qui a été troqué. La propriété du « cadenas neuf pour chaque message » gagne un astérisque : la même clé d’envoi ouvre toute une série de messages jusqu’à sa rotation, si bien qu’une clé qui fuite en lit plus d’un. L’auto-guérison après compromission n’advient qu’aux rotations de clés, pas en continu. Et chaque changement de membres déclenche une cérémonie de redistribution, de nouvelles clés pour tout le monde, exactement le genre de comptabilité où les bugs de messagerie de groupe ont historiquement élu domicile. Rien de scandaleux : c’est le coût documenté du raccourci.

Le choix de Fenzly : pas de raccourci

Un message de cercle Fenzly prend le chemin têtu : une enveloppe scellée individuellement par membre, à chaque fois. Quand vous partagez une position avec un cercle de six, votre téléphone la scelle cinq fois, une par autre membre, chacune dans son propre canal à deux avec son propre ratchet qui tourne sans fin.

Ce que cela achète, concrètement :

Chaque message vers chaque membre conserve les pleines garanties du canal à deux : la confidentialité persistante avec un cadenas réellement neuf à chaque fois, et l’auto-guérison continue, sans clé de groupe dont la fuite ouvrirait une série de messages.

Les changements de membres cessent d’être des cérémonies. Retirer quelqu’un d’un cercle signifie que votre téléphone arrête simplement de sceller des enveloppes pour lui ; il n’y a pas de clé de groupe à faire tourner, pas de fenêtre où une erreur laisserait le partant continuer de lire. Ajouter quelqu’un signifie commencer à sceller pour lui. La partie difficile de la cryptographie de groupe, la chorégraphie des rotations, n’existe tout simplement pas ici.

Et une conséquence de plus, discrète mais qui nous est chère : une clé de groupe partagée exige en général que quelqu’un coordonne sa distribution, ce qui en pratique amène le serveur à savoir qui est dans le groupe. Les enveloppes à deux, non. C’est une partie de ce qui permet au serveur d’être structurellement ignorant de vos cercles : il voit des enveloppes partir vers des destinataires que l’expéditeur a nommés, et rien d’autre.

Le prix, honnêtement

Le coût est arithmétique et nous n’allons pas le cacher : sceller une fois par membre signifie qu’un cercle de dix coûte neuf chiffrements par message, là où le raccourci en coûte un. Les ingénieurs appellent cela O(n) : le travail croît avec la taille du groupe.

Voici pourquoi nous avons signé quand même. Une mise à jour de position pèse quelques centaines d’octets, et une opération de scellement prend largement moins d’une milliseconde sur n’importe quel téléphone moderne. Neuf scellements, ce n’est toujours rien, invisible à côté de ce que consomment le GPS ou l’écran. Le compromis ne devient mauvais qu’autour de salles de plusieurs centaines de membres, et c’est précisément le point : Fenzly est construit pour des cercles, pas pour des stades. Une famille, quelques proches, une petite équipe. À cette échelle, le chemin têtu ne coûte rien de mesurable et ne renonce à rien du tout.

Le corollaire honnête : n’attendez jamais de groupes à mille membres dans Fenzly. Ce n’est pas une fonctionnalité manquante ; c’est le marché que nous avons conclu, les garanties les plus fortes à l’échelle d’une famille, en échange de ne pas jouer au réseau social.

Et la limite qui ne disparaît jamais : le serveur voit toujours que quelque chose a quitté votre téléphone vers N destinataires. Le contenu est scellé ; l’existence du trafic, non, comme nous l’avons déjà dit.


Il reste une question en suspens dans ce chapitre : cette machinerie qui scelle tout cela, d’où vient-elle au juste ? La prochaine fois : Olm et Matrix, l’origine, les audits, et qui d’autre fait confiance au moteur qui tourne dans Fenzly.