Matrix pour les néophytes
Présentation
Matrix est un protocole de communication en temps réel décentralisé et fédéré possédant une architecture similaire à celle des courriels. Lorsqu’on en envoie un à une personne, on ne se soucie pas de savoir si le serveur sur lequel il a créé son compte est le même que le nôtre (gmail, outlook, protonmail, etc…). De la même manière dans Matrix, chaque personne peut choisir le serveur sur lequel il souhaite s’inscrire, et peut interagir avec une autre personne sans se préoccuper de son serveur (sauf cas exceptionnel où un serveur l’empêche explicitement). C’est le principe de la fédération.
Inscription et connexion
Comme Matrix n’est que le nom du protocole, il faut passer par une application pour l’utiliser, appelée un client. Il en existe plusieurs qui seront listés plus bas, mais le principal et celui développé par l’équipe derrière Matrix s’appelle Element. Celui-ci est disponible aussi bien sur pc, via navigateur ou bien bureau, que sur Android et IOS.
Création du compte et connexion
De même que sur fédi, la fédération entre en jeu dès maintenant, où il faut choisir le serveur qui va vous accueillir. Vous trouverez sur ces deux liens des listes de serveurs Matrix publics. Selon la juridiction que vous souhaitez, vous choisirez le pays en conséquence, mais pour éviter les latences, il vaut mieux choisir un serveur physiquement proche de vous, donc dans le même pays, et ayant un ping de moins de 500 ms de préférence. Il fut un temps où le serveur par défaut et le principal, matrix.org, laggait beaucoup à cause de son nombre d’utilisateurs, mais il semblerait que ce n’est plus le cas.
Si je devais recommander des serveurs français, je proposerais matrix.tedomum.net, converser.eu (mais il parait que ça lag un peu maintenant), mais matrix.org peut faire l’affaire.
Maintenant que le serveur d’accueil est choisi, il faut se procurer Element ici et passer à l’inscription.
Je conseille de télécharger la version bureau pour ne pas dépendre d’un site web pour utiliser Matrix et aussi pour éviter de voir sa session supprimée si jamais le cache du navigateur était vidé, ce qui a son importance pour le chiffrement.
Commençons par la version bureau/web d’Element.
Voici la page d’accueil du client. Cliquez sur « Créer un compte ».
Vous pouvez ensuite entrer directement les informations nécessaires si vous voulez utiliser le serveur de matrix.org. Sinon, cliquez sur « Modifier » comme sur la capture d’écran ci-dessous.
Maintenant dans le champ « Autre serveur d’accueil », entrez l’instance choisie, ici par exemple converser.eu. Veillez à bien entrer le nom du serveur indiqué sur les liens, pour tedomum.net, il faut entrer « matrix.tedomum.net ».
Le nom d’utilisateur est inchangeable, et sera l’identifiant à donner aux personnes voulant vous contacter. Votre adresse Matrix prend une forme similaire à celle des courriels. Pour un courriel, votre adresse a la forme <nom d’utilisateur>@<serveur>, pour Matrix ça sera @<nom d’utilisateur>:<serveur>. Par exemple, si votre nom d’utilisateur est « kircheis » sur le serveur d’accueil matrix.tedomum.net, votre identifiant sera @kircheis:tedomum.net.
Maintenant, le client devrait vous proposer de configurer la sauvegarde sécurisée. Cette dernière est un coffre fort des clés de chiffrement de messages. En somme, vous allez avoir un deuxième mot de passe qui servira à récupérer vos clés de chiffrement bout en bout et donc l’historique de vos messages lorsque vous vous connecterez sur un nouvel appareil. Comme tous les messages privés sont par défaut chiffrés de bout en bout, je vous invite à le faire et cliquer sur continuer. Si vous ne savez pas ce qu’est le chiffrement (bout en bout), je vous invite à sauter cette étape et lire la suite. Vous pourrez toujours configurer ceci plus tard.
Passons maintenant à la connexion. C’est exactement le même principe. Si vous êtes sur autre chose que matrix.org, vous devez encore cliquer sur « Modifier » puis entrer votre serveur d’accueil puis mettre votre nom d’utilisateur et mot de passe.
Même chose sur téléphone.
Cliquez sur « Autre » si vous avez un serveur d’accueil différent de matrix.org et entrez-le dans le champ proprosé, sinon cliquez sur « matrix.org ».
Chiffrement
EXPLICATION
Avant de parler du chiffrement bout en bout, parlons d’abord du chiffrement. Chiffrer un message consiste à modifier d’une certaine façon, en suivant une méthode et avec une clé de chiffrement, un message de sorte à le rendre inintelligible pour quiconque ne saurait pas comment ni avec quelle clé le message a été chiffré.
Par exemple, une méthode de chiffrement simple est le chiffrement par décalage, connu aussi sous le nom de code de César, où l’on utilise l’alphabet pour décaler des lettres d’un certain nombre. Ici, il n’existe que 26 clés de chiffrement possible car il n’y a que 26 lettres, on ne peut pas décaler une lettre de plus de 26 fois, décaler une lettre 27 fois revient à la décaler 1 fois. Prenons la clé 17, et appliquons-la au message à chiffré suivant : cc sava Alice. On décalera donc chaque lettre de 17 lettre dans l’alphabet, donc c devient t, s devient j, ce qui donne : tt jrmr Rcztv. Cette méthode de chiffrement est même dite symétrique, car la clé de chiffrement et de déchiffrement est la même, ici 17.
Eh bien il existe des méthodes chiffrements plus complexes. La seconde catégorie est dite asymétrique, composée d’une clé publique et d’une clé privée. Cela signifie que la clé pour transformer un message, la clé publique, n’est pas la même que la clé pour le déchiffrer, la clé privée. Il y a divers algorithmes mathématiques pour faire ça, par exemple le RSA, très utilisé entre autre par les banques. Ici, Alice va donner sa clé publique à quiconque veut lui envoyer un message et utilisera sa clé privée, qu’elle doit bien garder secrète, pour déchiffrer les messages que les gens veulent lui envoyer. De même, elle utilisera la clé publique de ses interlocuteurs pour chiffrer les messages à leur envoyer.
Dans les salons Matrix qui ne sont pas chiffrés de bout en bout, et c’est le cas sur beaucoup de plateforme comme Discord ou Telegram, qui n’offre pas de chiffrement bout en bout dans les conversations de groupe c’est de la merde n’utilisez pas ça pour la sécurité bordel, le chiffrement se fait du client (vous) au serveur avant de transmettre le message au destinataire. Dans ce cas, le serveur possède les clés de déchiffrement des messages et peut donc les lire. Ce n’est pas le cas avec le chiffrement bout en bout.
Le chiffrement bout en bout (abrégé E2EE pour end to end encryption), est la fonctionnalité de Matrix vous permettant de ne pas avoir à faire confiance en votre serveur d’accueil si jamais vous ne voulez ou ne pouvez pas héberger une instance vous-même.
En effet, le chiffrement bout en bout est un système de communication où seules les personnes qui communiquent peuvent lire les messages échangés. Cela signifie que le serveur par lequel transite ces messages est incapable de voir quoique ce soit d’intelligible, et donc que l’administrateur de celui-ci, ayant accès aux données du serveur, sera incapable de comprendre le contenu de vos messages chiffrés de bout en bout.
Un aspect important de ce système est qu’il faut pouvoir s’assurer que la personne avec qui vous communiquez est bien celle que vous croyez. Il faut aussi pouvoir s’assurer, dans le cas où plusieurs appareils seraient impliqués par les deux partis, que chaque appareil utilisé soit bien utilisé par la bonne personne et ne soit pas un imposteur qui aurait réussi à se connecter avec le compte de votre interlocuteur. Pour cela, il y a en gros deux façon de faire.
La première est d’utiliser une autorité tierce, un serveur central par exemple, qui va avoir une base de donnée des utilisateurs et leur clé publique de chiffrement. Pour communiquer avec Alice, il va donc falloir que vous entriez son identifiant et ce serveur va vous donner sa clé publique. Ce système est pratique pour les utilisateurs car ces derniers n’ont pas besoin d’une opération supplémentaire pour s’envoyer des messages sécurisés facilement. Whatsapp et Signal utilisent cette méthode. Pour utiliser un ordinateur, ces deux services vous demandent de scanner un QR code avec votre téléphone, ce qui servir d’outil de confiance pour valider votre appareil et pouvoir l’utiliser et synchroniser les conversations.
La seconde méthode, celle utilisée par Matrix, XMPP, Session ou encore Olvid, consiste à laisser les utilisateurs s’échanger ces clés publiques, via un procédé simplifié, et laisse donc l’utilisateur gérer la confiance dans les appareils. Dans le chiffrement bout en bout, comme il est important que le téléphone d’Alice mais aussi son ordinateur fassent confiance au téléphone et à l’ordinateur de Bob, il faudrait en théorie s’échanger les clés publiques pour chaque appareil ce qui donnerait 2*2 échanges de clés à faire pour Alice et Bob : le téléphone d’Alice va devoir échanger ses clés avec le téléphone de Bob mais aussi avec son ordinateur. Vous comprendrez donc que normalement, étant donné que les messages ne sont chiffrés que vers les appareils actifs, si vous vous connectez avec un nouvel appareil, il ne pourra pas avoir l’historique des messages car cet appareil n’aura jamais reçu les clés lui permettant de lire les messages.
Heureusement, sur Matrix, il existe la signature croisée, qui déporte la vérification des appareils aux possesseurs de ceux-ci. Ici, vous allez donc vérifier la clé de signature croisée de votre interlocuteur, et vous et ce dernier devrez vous assurer que tous vos appareils sont dignes de confiance, c’est à dire que vous vous êtes bien connectés dessus. Ainsi, vous n’avez plus <nombre d’appareils que vous possédez>*<nombre d’appareils de votre interlocuteur> échanges de clés à faire, mais <nombre d’appareils que vous possédez>+1 (la clé de signature croisée avec votre intercoluteur).
Notons que dans le cas de Session, les clés publiques sont les identifiants des utilisateurs, ce qui est une approche intéressante.
La première approche, qui est un peu celle d’un annuaire, peut présenter des problèmes de vie privée (le serveur sait à qui parle qui), ou de sécurité en étant potentiellement une cible privilégiée d’attaque.
Pour plus de détails sur le chiffrement bout en bout et en particulier sur le compromis de Matrix pour avoir de la récupération de messages antérieurs et du chiffrement E2EE avec plusieurs appareils (c’est en anglais) : https://blog.soykaf.com/post/encryption/
Maintenant que vous savez à quoi sert la signature croisée, il est temps de la mettre en place.
Mise en place de la signature croisée et la sauvegarde sécurisée
Il faut savoir que les messages privés sont chiffrés de bout en bout, donc si vous tenez à l’historique, je vous conseille d’activer la sauvegarde sécurisée. Ce mot de passe ou cette clé seront aussi votre clé de signature croisée.
Si vous ne l’avez pas encore fait, il suffit de se rendre dans Paramètres -> Sécurité et vie privée -> Configurer
Vous avez donc le choix entre Générer une clé de sécurité que vous devez garder précieusement quelque part (dans un gestionnaire de mot de passe par exemple) ou bien saisir un mot de passe.
Vérifier ses appareils et échange de clé
Grâce à la sainte clé de signature croisée, vous allez pouvoir discuter assez facilement en messagerie instantanée sans trop avoir à vous prendre la tête avec les échanegs de clés. Nous allons d’abord commencer par voir comment vous pouvez vérifier vous-même vos appareils. Cette opération est importante si vous souhaitez récupérer l’historique de vos messages lorsque vous vous connectez à un nouvel appareil, par exemple si vous changez d’ordiphone.
Lors de votre connexion sur un nouvel appareil, vous recevrez une notification sur votre autre appareil vous indiquant que vous vous êtes connecté ailleurs, et vous invitant à vérifier cet appareil.
Attention, à chaque fois que vous vous connecterez sur un client, il sera considéré comme étant un nouvel appareil, une nouvelle session en somme, même si vous vous connectez depuis la même machine. Il est donc déconseillé de se déconnecter après chaque utilisation de Matrix, sauf si devoir vérifier votre appareil à chaque fois ne vous dérange pas.
Si vous cliquez sur « Utiliser la clé de sécurité », vous serez invité à entrer votre second mot de passe ou la clé générée par Element, celle que vous avez obtenue lors de la partie précédente. Vous aurez alors accès à tout l’historique et votre session sera considérée comme étant digne de confiance.
Si vous cliquez sur « Vérifier vos appareils » ou bien « Utiliser un autre identifiant », vous lancerez la vérification en direct où vous devrez confirmer que vous voyez bien les mêmes emojis sur les deux sessions.
Suivant l’appareil sur lequel vous avez cliqué sur le bouton, vous obtiendrez:
Et sur l’autre appareil, devant accepter la demande de vérification, vous devriez avoir ceci :
Vous aurez ainsi l’écran suivant sur vos deux appareils :
Ici, vous pouvez voir que les émojis correspondent sur les deux sessions, vous pouvez donc cliquer sur « Ils correspondent ».
Sur ordiphone, Android en particulier mais ce sera similaire sur iOS, la procédure est la même, sauf que vous pourrez vérifier votre session à l’aide d’un QR si vous le souhaitez.
Cliquez sur « Vérifier cette session » sur votre autre appareil ou votre ordiphone et vous devriez obtenir cet écran après avoir accepté :
Là, vous devriez avoir le choix entre un QR code ou une vérification par émoji. Cliquez sur l’option qui vous convient.
Et voilà, votre session est vérifiée, vous avez maintenant des appareils dignes de confiance et accès à l’historique de vos messages !
Je vous conseille de renommer vos appareils afin de vous savoir lesquels vous utilisez. Cela aide si jamais vous vous faîtes hacker. Personnellement je donne des noms trop mignons à mes ordinateurs et ordiphones :
Pour changer ces noms : Paramètres -> Sécurité et vie privée -> Cliquer sur le nom public d’un appareil pour le changer.
Pensez aussi à supprimer un appareil que vous n’utilisez plus. Si vous vous déconnectez de celui-ci, l’appareil devrait disparaître de votre liste, mais si vous ne l’avez pas fait avant de ne plus y avoir accès, vous pouvez révoquer la session en question en cochant votre appareil et en cliquant sur “Supprimer n session(s)”, n étant le nombre d’appareils cochés.
Maintenant penchons-nous sur l’échange de clé de signature croisée.
L’échange de clé de signature croisée
Il existe deux modes d’utilisation sur Matrix. Un mode où vous choisissez un peu de faire confiance aux gens et donc vous ne vous souciez pas d’échanger vos clés de signature croisée, et dans ce cas pas de bouclier rouge pour vous. La plupart du temps, vous n’avez pas besoin de vous en préocuper, tout devrait à peu près bien fonctionner, pour peu que chacun vérifie tout de même ses appareils.
Maintenant, si vous êtes un peu paranoïaque prudent, ou qu’un message ne passe plus, vous allez devoir échanger vos clés de signature croisée avec les gens. Vous n’êtes pas obligés de le faire avec tout le monde, tant que tout fonctionne, tout va bien. Moi-même je n’ai pas vérifié toutes les clés de signature croisée de tous mes contacts, et pourtant la majorité de mes contacts quotidiens utilisent Matrix !
Bon, pour vérifier l’appareil de quelqu’un, il faut se rendre sur son profil. Pour ça, il suffit de cliquer sur son image de profil dans une conversation, ou sur lui dans la liste des personnes présentes dans un salon sur la droite sur l’application bureau.
Pour avoir le bouton « Vérifier » sur téléphone, il faudra que vous soyiez avec lui dans un salon chiffré.
Sur téléphone, accepter une demande de vérification prend cette forme :
Une fois que vous aurez cliqué, vous devriez avoir cet écran sur le panneau de droite :
Là, vous êtes censé utiliser un moyen de communication tier, un vocal, ou bien la vraie vie, pour comparer vos émojis, et confirmer qu’ils sont identiques, puis valider s’ils le sont. De mon côté, j’ai fait des irl où nous récitions religieusement les émojis en même temps pour les vérifier et les valider.
Si l’un des deux utilise un ordiphone, et que vous êtes tous les deux ensembles, il pourra scanner un QR code pour vérifier l’appareil.
Maintenant que la technique et la sécurité sont terminées, passons à une partie un peu plus amusante, quelques fonctionnalités notables d’Element.
Prise en main et fonctionnalités notables
Si Element jouit de plusieurs fonctionnalités similaires à Discord comme par exemple la mise en page du texte via le markdown, il en possède quelques unes intéressantes et différentes.
Créer, rejoindre des salons
Les adresses des salons sont de la forme #nom_du_salon:serveur. Il est possible d’ajouter autant d’adresses locales que l’on souhaite si on a les droits suffisants.
Créer un salon : cliquer sur le + à droite de la catégorie salons et suivre les instructions
Rejoindre un salon : /join #nom_du_salon:nom_du_serveur (seulement pour rejoindre) ou cliquer sur le + à droite de la catégorie salons et tapez ce qui suit le /join dans la commande précédente.
Par exemple, pour rejoindre le salon public de Temps Modernes, il suffit de taper la commande /join #salledeconf:helianthine.solar.
Mentions, mots-clés et notifications
Sur Element, il est possible d’avoir une liste de mots clés sur laquelle vous serez mentionné lorsque quelqu’un les écrira. Une mention avec l’aide de l’autocorrection de pseudo sur Element ressemble à ceci :
Le message est en rouge, on peut voir la différence avec les messages du dessous, en blanc.
Par défaut, juste écrire le nom affiché de quelqu’un le mentionne aussi. Actuellement, mon nom affiché (ou pseudo) est le même que mon identifiant, Julia, mais si c’était Marie, la mention serait sur Marie.
La mention est en bas de l’image.
Pour les mots-clés, la mention aura la même forme que cette dernière. Par exemple, j’ai « Bloodborne » comme mot-clé car c’est le meilleur jeu de l’univers pour l’instant (Elden Ring est extrêment prometteur et ambitieux, saura-t-il le détrôner ?), la mention a cette tête :
Pour ajouter des mot-clés, il faut être sur un client web/bureau d’Element puis :
Paramètres -> Paramètres de notification -> Cliquer sur « Mots-clés » (vous pouvez aussi mettre les notifications sur mot-clé en sonore) -> Entrer les mots-clés séparés par une virgule -> Ok
Sur le client bureau/web, vous pouvez avoir une liste des messages vous mentionnant, directement ou via mots-clés, en cliquant sur l’icône de cloche en haut à droite.
Les widgets
Si vous avez des droits suffisants sur un salon, vous pouvez ajouter des widgets, bots ou ponts à celui-ci.
Les widgets sont des fonctionnalités supplémentaires sous forme de webapp qui viendront s’afficher en haut du salon dans une fenêtre (dé)pliable. Par exemple, il est possible d’ajouter un widget de gdoc pour pouvoir donner accès à celui-ci à tous les membres du salon et ainsi écrire dedans ensemble.
Ici, nous nous en servons comme un répertoire de liens intéressants, que nous avons pu récolter au fil de nos conversations. Je trouve que Sézane c’est sympa, mais un peu surcôté.
Un autre exemple de widget, vous pouvez voir qu’on peut y mettre un direct. C’était le défilé de Channel.
Pour ajouter un widget, cliquez sur le bouton avec un « i » en haut à droite pour déplier le panneau latéral droit, et ensuite cliquez sur « Ajouter des widgets, passerelles et robots ».
Je vous laisse découvrir les différents widgets disponibles. Je ne m’attarderai que sur le Custom Widget, une option qui permet d’ajouter un widget personnalisé, comme son nom l’indique. Attention, il faut que le lien que vous entriez soit une webapp. Cela peut servir si par exemple vous utilisez une instance différente d’étherpad (une alternative autohébergeable à gdoc) que celle de base.
Ces widgets peuvent aussi servir à diffuser un direct dans la conversation et se servir de ce salon comme du chat de ce direct.
Sticker personnalisés
Commençons d’abord par expliquer comment ça fonctionne.
Ici, Element ne supporte pas officiellement les pack de stickers personnalisés. En effet, nous allons changer de sélectionneur de sticker pour en utiliser un personnalisable, auquel on pourra ajouter des packs de stickers.
Les manipulations suivantes sont à faire depuis un client bureau/web.
Pour commencer vous devez activer les stickers, en cliquant sur le cercle à droite de l’icône des émojis, puis envoyez un sticker au hasard pour confirmer qu’ils sont actifs. Cette étape est importante pour la suite.
Ici, pour les néophytes, vous allez squatter le sélectionneur de quelqu’un, un sélectionneur créé exprès pour les lecteurs. En cliquant sur le lien à copier ci-dessous, vous pouvez voir quels stickers sont disponibles.
Copiez https://sticker.walpurgis.sorcie.re -> Tapez /devtools dans n’importe quelle conversation -> Cliquer sur « Explorer les données du compte » -> Cliquer sur « m.widgets » (si absent, activez les stickers comme décrit ci-dessus) -> Cliquer sur « Modifier » et remplacer le lien du champ « url » par le lien copié -> Cliquer sur « Envoyer ».
Si vous avez un bug dédoublant les stickers envoyés, il suffit de quitter Element et de le relancer.
Pour ceux qui ont un peu d’expérience ou n’ont pas peur de linux et ont un site web, rendez-vous sur ce repo git contenant de multiples packs de stickers ainsi qu’un script pour les gérer, en créer et modifier vos packs de stickers actifs.
Pour rappel, il est possible d’avoir un site web gratuitement sur GitHub via GitHub Pages.
Autres clients
Il existe de multiples clients pour utiliser Matrix et Element n’est que l’un d’eux, même s’il est le principal et celui qui a les fonctionnalités les plus à jours.
Une liste des clients est disponible à cette adresse, mais ceux que je démarquerai sont les suivants :
- fluffychat, un client orienté ordiphone mais disponible sur pc aussi, qui malgré son absence de stickers et de space, permet déjà d’utiliser et avoir des émojis personnalisés. En revanche, ces derniers ne seront visibles que pour les autres utilisateurs de fluffychat et sur Element bureau/web. Eh oui, pas besoin de Discord nitro les cocus.
- ShildiChat, un fork d’Element, ce qui signifie qu’il a les mêmes fonctionnalités et devrait rester à jour, mais avec une interface différente et quelques fonctionnalités supplémentaires, comme la possibilité de pouvoir marquer comme non-lu.
Conclusion
Malgré ses quelques problèmes de performance entre autre liés à Synapse qui est fait en Python, Matrix est un protocole de communication très prometteur et dont j’encourage vivement l’utilisation dans l’optique de prendre un peu d’indépendance numérique. Non seulement il permet l’autohébergement, mais en plus il offre du chiffrement bout en bout dans des messageries de groupes et avec de multiples appareils, fonctionnalité que beaucoup d’applications de messagerie instantanées populaires n’ont pas : c’est vous que je regarde Discord et Telegram. Une fonctionnalité primordiale aujourd’hui qui donne la possibilité de ne même pas avoir besoin de faire confiance en votre hébergeur.
Si vous pensez que ces plateformes populaires ont tendance à bannir pour rien, ou que vous-même avez déjà perdu votre compte, il serait peut-être temps de passer à autre chose plutôt que de chouiner et de démoraliser les autres et d’encourager à la migration : la décentralisation est le seul garant technique de la liberté d’expression sur internet.
Ce point devrait être développé dans mon prochain article sur l’indépendance numérique à l’échelle d’un particulier, mais je me devais d’écrire ce tuto avant l’article en question : il me semble important de pouvoir proposer des solutions aux problèmes plutôt que de me contenter de les exposer.
Si vous êtes conscient des problèmes liés à l’indépendance numérique mais que votre seul argument pour ne pas migrer est que vous n’aurez (presque) personne à qui parler, eh bien pour commencer je rappelle que Temps Modernes possède un salon ouvert au public dans lequel vous pouvez échanger avec les rédacteurs et autres lecteurs du site ou bien tapez /join ##salledeconf:helianthine.solar. Ensuite, c’est aussi à vous d’être pionnier sur l’indépendance numérique et de pousser vos contacts à migrer, histoire d’avoir des gens dessus. C’est pour ça que j’ai écrit cet article. Partagez-leur ce tuto, partagez-leur un autre tuto Matrix je m’en fiche, juste migrez et encouragez à la migration. La migration ne vous empêche pas d’utiliser les autres messageries instantanées, je vous invite seulement à limiter leur usage le plus possible et utiliser des moyens de communication dans lesquels vous pourrez avoir confiance. J’ai bien réussi à avoir l’immense majorité de mes contacts proches et quotidiens sur Matrix, vous le pouvez aussi, les récalcitrants se comptant sur les doigts d’une main, en étant pessimiste.