Présentation du problème

La mise en place de groupes de discussion dans des systèmes décentralisés pose des défis importants, notamment en raison de l’absence d’un serveur central pour gérer les métadonnées et coordonner les interactions entre les membres. L’auteur du logiciel Kiyeovo a dû faire face à ces défis lors de la conception de son application de messagerie décentralisée.

Contexte technique

Dans les systèmes centralisés, un serveur gère les questions telles que qui est dans le groupe, quelle clé crypte les messages, et dans quel ordre les messages ont été envoyés. Même les applications à cryptage de bout en bout (E2E) comme Signal et Matrix utilisent des serveurs pour stocker les listes de membres de groupe et coordonner les événements. Cependant, dans un système décentralisé, il n’y a pas de serveur pour gérer ces tâches, ce qui oblige les développeurs à trouver des solutions alternatives.

Approches alternatives

L’auteur a examiné plusieurs approches pour gérer les groupes décentralisés, notamment l’utilisation d’un serveur de coordination, le protocole MLS (Message Layer Security) / TreeKEM, et des modèles de membership sans leader. Cependant, chacune de ces approches présente des inconvénients, tels que la centralisation, la complexité, ou les problèmes de mise à l’échelle.

Mise en œuvre de Kiyeovo

L’auteur a finalement choisi d’implémenter un système de groupes décentralisés basé sur un créateur de groupe unique, identifié par une clé Ed25519. Le créateur est responsable de la gestion des membres du groupe et de la distribution des clés de cryptage. Les messages sont cryptés à l’aide d’une clé symétrique partagée par tous les membres du groupe, et les métadonnées de groupe sont stockées dans un registre décentralisé (DHT) sous forme de journal append-only. Cette approche présente des avantages tels que la simplicité de convergence et la sécurité, mais également des inconvénients, tels que le point de défaillance unique que représente le créateur de groupe.

Ed25519 key

Le code utilise des clés Ed25519 pour identifier le créateur de groupe et assurer l’authenticité des mises à jour de membership. Les messages sont cryptés à l’aide de l’algorithme XChaCha20-Poly1305, et les clés sont distribuées aux membres du groupe via des messages de contrôle signés.