Matrix, l'outil de communication

Palaiseau, le samedi 5 décembre 2020

Aujourd'hui aura été une petite journée pour ce qui est de la clôture de bugs pour le calendrier de l'avent. Au passage, une reconstruction de l'archive entière sur processeur Aarch64 aura provoqué l'apparition d'une bonne vingtaine de bugs sérieux supplémentaires, des fois qu'on se serait ennuyé pour remplir le calendrier de l'avent.

Attention : la suite de cette entrée concerne une expérience d'ingénierie inverse sur un outil de messagerie instantanée pour lequel je ne suis pas spécialiste, d'autant plus qu'il est question de cryptographie. Mes propos seront donc à prendre avec plus d'un grain de sel. Ce sont avant tout des notes pour moi, pour me rappeler de comment fonctionne le système en pratique, et comment je l'ai intégré dans mon (nouvel) outil de messagerie instantanée.

J'ai passé un petit peu de temps à essayer de comprendre comment fonctionne Matrix, qui est une infrastructure de messagerie instantanée supportant le chiffrement de bout en bout. Quelque copains ont installé un serveur Matrix sur une de leurs machines, et j'ai eu l'occasion de redécouvrir, de manière plus ou moins brutale , que l'utilisation d'applications qui font du chiffrement est compliqué. Certains message envoyés sur certains canaux me resteront probablement chiffrés à jamais.

Pour démarrer, je me suis créé un compte sur le serveur. Un compte est constitué de plusieurs informations :

Jusque là, tout va bien. Cependant, qui dit chiffrement de bout en bout, en particulier s'il est question de chiffrement asymétrique, dit :

GPG implémente ces différents composants sous différentes formes, SSH implémente également un mécanisme de certification, même si je pense que c'est assez peu connu. Matrix n'échappe pas à la règle : en plus du couple login et mot de passe, le compte va disposer d'une clé privée afin de déchiffrer les communications envoyées par les copains. Il y a également un système assez riche de session qui ont leur propre clé. Les clés de session sont notamment demandées lors des connexions via le client web. Un autre mécanisme identifie les appareils à partir desquels les connexions se font. Il me semble important de noter qu'une reconnexion via l'application web se comporte comme s'il s'agissait d'un nouvel appareil.

À ce stade, je ne suis toujours pas sûr de ce qui a pu coincer pour que je perde des messages, mais je pense que j'ai du me retrouver, entre deux connexions, dans une situation ou je n'avais plus de session valide, et donc je crois que ma clé publique ne devait plus être disponible pour que mes camarades puissent me chiffrer des messages.

Outre les échanges chiffrés, le second aspect intéressant est la vérification de l'authenticité des messages par utilisateurs certes, mais aussi par appareil. Le système de messagerie est conçu pour pouvoir être suivi depuis de nombreux client simultanément. Chacun de ces couples utilisateur et appareil va disposer de ses propre clés, et chaque client va avoir sa propre liste de couple utilisateur et appareil validés. Si un compte est piraté, et qu'il est utilisé depuis un appareil non reconnu, alors le message va être marqué comme n'étant pas certifié.

Le système supporte de nombreux clients. Il est important de repérer où se trouvent les clés privées, et à ce titre, je ne sais pas comment cette clé est stocké au départ. Dans le client web, dans les paramètres de sécurité et de vie privée du compte, il est possible de procéder à un export de la clé. Cette manœuvre est nécessaire afin de la réinjecter dans un client auxiliaire pour pouvoir conserver lisible les anciens messages.

Parlons de client lourd, Matrix est compatible avec toute une sélection de programmes à destination des ordinateurs de bureaux, des téléphones, et autres types d'ordinateurs, avec ou sans interface graphique. Naïvement, je pense que l'utilisation d'un client dédié, plutôt que le client web, permet de simplifier grandement la tâche de gestion des clés et des certifications, pour une raison très simple, je suis à peu près sûr de retrouver les éléments qui vont bien dans mon système de fichier local, ce qui est généralement bien moins évident pour une application web.

En tant qu'utilisateur d'IRC, j'ai choisi d'utiliser le greffon matrix du programme weechat, ce qui m'ai fait migrer au passage depuis le vénérable irssi vers weechat pour mes connexions IRC régulières également. Pour la partie client IRC, je ne suis pas déçu : en l'espace de quelque heures, j'ai pu obtenir une configuration bien plus proche de ce que je trouvais confortable pour me raccorder à mes serveurs habituels, qu'avec mon antique configuration plus ou moins bricolée avec irssi depuis bien 2014. Pour la partie client Matrix, j'ai un peu plus grincé des dents, mais pas tellement à cause de l'interface en mode texte, c'est plutôt en découvrant sur le tas le fonctionnement du système de clés de Matrix à la volée.

Depuis l'interface de weechat, avec le greffon pour Matrix chargé, il y a deux commandes importantes pour piloter le client :

Voici à quoi ressemble weechat avec le greffon pour Matrix une fois configurés à ma sauce :

L'interface de weechat est épurée afin de se rapprocher le plus
	possible de ce à quoi ressemble irssi.  On distingue des échanges
	textuels entre trois personnes.  La première partie du canal m'est
	illisible ; tout ce qui est échangé apparait comme étant <Unable to
	decrypt: The sender's device has not sent us the keys for this message>.
	La seconde partie de la discussion est lisible, avec un classique hello
	world.  Certains échanges non vérifiés sont marqués d'un symbole de
	danger, qui accessoirement jure avec la fonte du texte en Terminus.
	Le symbole de cadenas, qui jure tout autant que le panneau danger, dans
	la barre d'état en bas de la capture d'écran, indique que les
	communications sont chiffrées de bout en bout.

Accessoirement, Matrix permet de se raccorder à d'autres infrastructures de messagerie instantanée, comme IRC, ou des outils plus confidentiels comme Mattermost. J'ai cru comprendre que cet aspect était un peu surévalué, donc n'insiste pas trop dessus, mais reste pratique pour continuer de communiquer avec des proches qui seraient réticents à changer d'outils de messagerie.

Je pense que ça vaudrait le coup que je mette à jour mon article sur IRC. En conclusion, j'avais retranscrit certaines idées de Laurent Chemla à propos d'un système de messagerie intéropérable qui serait capable de discuter avec plein de protocoles, et qui fonctionnerait par défaut en mode chiffré de bout en bout, avec des niveaux de certification entre chaque interlocuteur. Je crois que Matrix se rapproche de ce système imaginé par Laurent.

[ICO]NameLast modifiedSize
[PARENTDIR]Parent Directory  -
[IMG]weechat-matrix-gravure.png2020-12-05 19:34 4.8K
[IMG]weechat-matrix.png2020-12-05 18:19 7.4K

  —