Présentation
Le dépôt QT propose un prototype complet du cœur cryptographique et de transport d’un messager end‑to‑end encrypted (E2EE). L’ensemble est écrit en Rust, sous licence AGPL‑3.0, et regroupe plusieurs modules : core (établissement de session et Double Ratchet), transport (Noise Protocol sur WebSocket), server (acheminement sans visibilité du contenu), storage (persist‑ence chiffrée) et une interface en ligne de commande (cli). Le projet ne fournit pas d’interface graphique finale ; il s’agit d’une preuve de concept destinée à valider chaque composant par du code compilable et des tests automatisés.
Architecture cryptographique
Le module core combine X3DH pour l’échange initial de clés et une variante post‑quantique (PQXDH) afin de résister aux futures attaques de cryptanalyse quantique. Une fois la session établie, le flux de messages utilise le Double Ratchet, le même mécanisme que le protocole Signal, garantissant l’authenticité et la confidentialité même après la compromission d’une clé à long terme. Le Sealed Sender masque l’identité de l’expéditeur, empêchant le serveur de déduire qui a envoyé quel message. Tous ces éléments sont testés par plus de quatorze scénarios automatisés, incluant des cas d’échec intentionnels pour vérifier la robustesse du protocole.
Transport, persistance et résilience
Le transport repose sur le Noise Protocol Framework encapsulé dans des connexions WebSocket. Les tests réels utilisent des sockets WebSocket actifs, démontrant que le serveur supporte jusqu’à 10 000 connexions simultanées tout en consommant 124 Mo de RAM. Cette efficacité provient de la gestion fine de la mémoire de Rust et de l’absence de garbage collector. Le module storage chiffre les identités et l’historique sur disque à l’aide d’une clé dérivée d’un mot de passe ; une tentative d’ouverture avec un mot de passe erroné échoue systématiquement, comme le montre le test de persistance après un kill -9 du serveur.
Performances, limites et perspectives
Les performances observées (10 k connexions / 124 Mo) indiquent que le serveur peut être déployé sur des machines modestes, ce qui est pertinent pour des services décentralisés ou auto‑hébergés. Cependant, le projet reste incomplet : aucune interface utilisateur n’est fournie, le serveur n’est pas encore accessible publiquement, et aucune audit de sécurité externe n’a été réalisée. Ces lacunes limitent l’adoption immédiate dans des contextes de production. Le code étant ouvert, il offre néanmoins une base solide pour des recherches sur l’intégration de primitives post‑quantiques dans des messageries existantes, ainsi que pour l’évaluation de la viabilité du modèle sealed‑sender à grande échelle.