---
# System prepended metadata

title: '[TC3] Projet - *CSC*'
tags: [TC3, S2, CSC]

---

FLE : 
* quel niveau de sécurité logicielle pour les clients ? Pour les serveurs ? Audité etc. ?
* À l'usage, comment ça marche ? Suffisamment simple pour M. Toutlemonde (but de signal), plus compliqué ? Si la sécurité (crypto de bout en bout) et complexe et si la vérification est contournable, quel niveau de sécurité au final ? 


# [TC3] Projet - *CSC*
###### tags: `CSC`, `S2`, `TC3`

Cet article est une présentation de Matrix, un protocole de communication décentralisé, temps-réel et de son implémentation la plus connue, Element, autrefois nommé Riot. Leurs intérêts principaux résident dans leur décentralisation et leur encryption end-to-end.

## Matrix 

Le protocole Matrix est un protocole open source conçu pour permettre des communications en temps réel, décentralisées et sécurisées. 

Ce protocole s'appuie sur une architecture de type "fédérée". Ce type d'architecture est conçu pour permettre aux utilisateurs de disposer d'une vue unique sur un ensemble de données présentes sur des systèmes à priori indépendants. 

L'architecture de Matrix repose donc sur des "home-serveurs" indépendants les uns des autres et pouvant offrir des fonctionnalités différentes. Chaque utilisateur crée un compte et se connecte sur le serveur de son choix. Il obtient alors un identifiant unique au format `@username:homeserveur.xxx`. 
Les différents home-serveurs sont connectés ensemble via internet et leurs échanges sont normalisés par le protocole. 

Ce système permet donc à tous les utilisateurs de rejoindre des salons de discussion ou de joindre des utilisateurs sur n'importe quel serveur Matrix. 

![](https://i.imgur.com/miIu7eu.gif)

L'animation ci-dessus présente les échanges de messages entre trois personnes, Alice, Bob et Charlie, qui sont en contact au sein d'un même salon de discussion. Chaque utilisateur est ici connecté à son propre home-serveur. Une fois un message envoyé par un utilisateur, il est répliqué sur tous les home-serveurs des personnes présentes dans le salon de discussion. Enfin, les messages sont communiqués aux clients de messagerie.

Une des forces de Matrix est le support du chiffrement de bout en bout. Cette fonctionnalité consiste à envoyer les messages chiffrés depuis le client Matrix de l'émetteur. Ces messages seront ensuite déchiffrés uniquement par le client du destinataire. Pour y parvenir, le protocole se base sur les librairies Olm et MegaOlm qui implémentent un algorithme de Double Ratchet. Cet algorithme a été inventé en 2013. Après un premier échange de clé avec un contact, cet algorithme permet une gestion automatisée et continue des clés de session en se basant sur un algorithme de Diffie–Hellman et un algorithme basé sur une fonction de dérivation des clés. Cela permet de rendre les messages normalement indéchiffrables lors de leur transit et lors de leur stockage sur les serveurs. 

Un autre aspect interessant du protocole Matrix est la présence de passerelles ou de ponts. Ces serveurs spécialisés permettent de faire le lien entre l'environnement Matrix et d'autres applications telles que Discord, des serveurs IRC, ou des salons Jitsi Meet. Les messages sont donc acheminés entres les salons matrix et ceux des différentes applications extérieures. Attention cependant, ces ponts sont souvent synonymes de perte de la protection des données puisqu’entre le serveur passerelle et l'application cible le niveau de sécurité est celui de l'application cible, et donc, généralement moins élevé que celui de l'environnement Matrix. 
Les differentes options de sécurité peuvent être activés ou non (notamment en fonction de si l'utilisateur utilise une séssion vérifiée ou non). Matrix ne cherche pas systematiquement à garantir un haut niveau de sécurité, mais garantie une grande transparance. Pour chaque conversation differente, l'état de la sécurité est clairement indiqué par la présence d'une icone spécifique pour le chiffrement de bout en bout. 
Enfin, la plupart des home-serveur disposent d'un code source ouvert et donc facilement auditable. 

Le schéma ci-dessous résume l'organisation du réseau Matrix : 
![](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Diagramme_Matrix_fr.svg/339px-Diagramme_Matrix_fr.svg.png)

## Element 
Element, nommé avant 2020 Riot, est l'implémentation la plus connue et la plus utilisée du protocole Matrix expliqué ci-dessus. Il s'agit d'une application de messagerie instantanée qui ne nécessite pas de numéro de téléphone, mais qui présente l'ensemble des fonctionnalités traditionnelles attendues de ce type d'application, et dont le maître mot est sécurité. En effet, elle se distingue de ses concurrents de par son chiffrement de bout en bout, qui assure un niveau de sécurité supérieur. De plus, elle offre la possibilité d’auto-héberger l'application et le serveur de discussion, minimisant ainsi au maximum les intrusions, et observations, et ainsi permettant de fuir les publicités redondantes. L'utilisateur peut de cette manière prendre le contrôle de ses données.

L'utilisation d'Element est relativement simple pour les utilisateurs. Ils ont simplement à choisir un home serveur (matrix.org est proposé par défaut) et à indiquer le nom d'utilisateur de la personne avec laquelle ils souhaitent communiquer. Ils peuvent également creér des salons de discussions (conversation de groupe) ou en rejoindre (par ajout direct ou invitation). 


Element est un projet qui en inspire plus d'un. Effectivement, plusieurs versions dérivées sont connues : le gouvernement français a fait un fork de l'application, nommé Tchap. Mais c'est surtout Thales, géant de la sécurité, qui s'en est inspirée pour son projet de Citadel Team, fait qui appuie la crédibilité d'Element.


## Sources
+ https://matrix.org/
+ https://matrix.org/docs/guides/introduction
+ https://fr.wikipedia.org/wiki/Matrix_(protocole)
+ https://en.wikipedia.org/wiki/Federated_architecture
+ https://fr.wikipedia.org/wiki/Element_(logiciel)
+ https://doc.ubuntu-fr.org/element
+ https://en.wikipedia.org/wiki/Federated_architecture