106 lines
5.1 KiB
Org Mode
106 lines
5.1 KiB
Org Mode
:PROPERTIES:
|
|
:ID: 2e51f7e7-cf37-45d3-b7c4-c136d4e3cc64
|
|
:mtime: 20220313180139
|
|
:ctime: 20220226100700
|
|
:END:
|
|
#+title: matrix
|
|
|
|
* Introduction
|
|
* Protocole de communication ouvert (specs ouvertes) pour la communication en temps réel (messagerie).
|
|
* Passerelle avec différents fournisseurs de services (xmpp, Skype, IRC, ...).
|
|
* Sécurisé (chiffrement de bout en bout activé par défaut).
|
|
* Décentralisé (possibilité d'héberger son propre serveur).
|
|
* Distribué/fédéré: chaque participant conserve l'historique de ses conversations (réplication entre les différents serveurs).
|
|
* Appels voix & vidéo basés sur WebRTC.
|
|
* Contrairement à XMPP (envoi de messages), Matrix fonctionne comme git : synchronisation de serveurs (conversation complète).
|
|
* Matrix is /transport agnostic/: JSON/HTTP pourrait être remplacé.
|
|
|
|
#+DOWNLOADED: https://upload.wikimedia.org/wikipedia/commons/b/bd/Diagramme_Matrix_fr.svg @ 2022-02-26 10:29:56
|
|
#+ATTR_ORG: :width 400
|
|
[[file:Introduction/Diagramme_Matrix_fr_2022-02-26_10-29-56.svg]]
|
|
|
|
* Long-term secret = private key.
|
|
|
|
* Les serveurs Home
|
|
** API
|
|
* Synchro des messages et de l'état des rooms entre serveurs, en temps réel.
|
|
* Synchro de l'historique des messages sur d'autres serveurs (à la git pull) : en cas d'offline, le serveur peut
|
|
récupérer les historiques auprès d'autres serveurs afin de combler le trou.
|
|
* Récupérer le profil et la présence d'un utilisateur.
|
|
** Implémentations
|
|
* Synapse (implémentation de référence) en Python/twisted.
|
|
* Dendrite (implémentation de 2nd génération - plus scalable/performant) en Go.
|
|
* Conduit (simple/rapide/reliable) en Rust.
|
|
* Construct (orienté performances avec un min de deps) en C++.
|
|
|
|
* Les serveurs d'application
|
|
** API
|
|
* Possède un accès privilégié à un serveur Home.
|
|
* Peut souscrire au trafic d'un server.
|
|
* Peut /mascarade/ comme un utilisateur virtuel.
|
|
|
|
** Serveurs d'intégration
|
|
* Permet d'intégrer de nouveaux services.
|
|
*** Exemples
|
|
* Etherpad:
|
|
* RSS bot:
|
|
* Grafana: publication de dashboards grafana pour un affichage directement sur les clients.
|
|
* Jitsi:
|
|
* Matrix-content-scanner:
|
|
|
|
** Les bridges
|
|
* Unifier différents /réseaux/ ensemble (ie: signal, IRC, ...).
|
|
*** Types de bridges
|
|
* /Bridgebot/:
|
|
* /Puppeted/: L'usage du bridge est transparent pour les utilisateurs.
|
|
|
|
* Les clients
|
|
** API client-server
|
|
* Conçue pour être user-friendly.
|
|
** Implémentations UI
|
|
* Element (implémentation de référence avec le plus de features) pour WebApp/desktop(electron)/IOS/Android.
|
|
* Ditto (réalisé avec React) pour IOS/Android.
|
|
* Nio (réalisé avec Switch) pour IOS.
|
|
* Pattle (réalisé avec flutter) pour IOS/Android.
|
|
* FluttyChat.
|
|
* Seaglass: client matrix pour IOS.
|
|
* Spectral: client matrix desktop écrit en c++ avec QtQuick control.
|
|
* Quaternion: client IM desktop écrit en c++ avec Qt5.
|
|
* Nheko reborn: client matrix desktop écrit en c++17 avec Qt.
|
|
* Mirage: client matrix desktop configurable et opérable avec le clavier (à la Emacs).
|
|
* Fractal: client matrix desktop écrit en rust.
|
|
** Implémentations console
|
|
* weechat-matrix:
|
|
* gomuks: client matrix pour terminal écrit en go.
|
|
* matrixcli: client matrix en ligne de commande.
|
|
* matrix-commander: client matrix cli simple supportant le chiffrement E2E et la vérif. emoji.
|
|
* tchap: client développé par le gouvernement français (inclus l'intégration du matrix-content-server).
|
|
|
|
* Les espaces (TODO)
|
|
* Public /space/: l'annuaire hiérarchisé et public de Matrix.org.
|
|
* Restricted /space/: pour les organisations, permet de regrouper des /rooms/ dans un même domaine.
|
|
* private /space/: pour un usage personnel
|
|
|
|
* P2P (TODO)
|
|
|
|
* OSS
|
|
Matrix utilise les OSS suivants:
|
|
* olm: Librairie implémentant un /double-ratchet/ (basé sur les specs de Signal).
|
|
* [[https://gitlab.matrix.org/matrix-org/olm/blob/master/docs/megolm.md][megolm]]: Librairie réalisant un /ratchet/ crypto basé sur AES pour les communications de groupe.
|
|
|
|
* Inconvénients
|
|
* Backward secrecy (/future secrecy/ ou /post-compromise security/, le vol de la clé privée d'un correspondant ne
|
|
compromet pas la confidentialité des communications futures) faible (tant que la session n'est pas renouvellée).
|
|
* [[https://fr.wikipedia.org/wiki/Confidentialit%C3%A9_persistante][Confidentialité persistante]] (/forward secrecy/ ou /perfect forward secrecy/, le vol de la clé privée d'un
|
|
correspondant ne compromet pas la confidentialité des communications passées) faible (dépend de la fréquence de
|
|
renouvellement des clés).
|
|
|
|
* Optimisations réalisées
|
|
* Lazy loading members: Ne charger les métadonnées que des personnes communiquant dans la /room/ (réduction de la RAM consommée).
|
|
|
|
* Références
|
|
* [[https://fr.wikipedia.org/wiki/Matrix_(protocole)][Wikipedia]]
|
|
* [[https://www.youtube.com/watch?v=cD8xbci4wAY][Matrix - Open, Secure, Decentralised, Real-Time Communication Across Networks - Oleg Fiksel]]
|
|
* [[https://www.youtube.com/watch?v=9cjUzftDuoQ][Matrix in the French State What happens when a government adopts open source & open standards for all its internal communication? by Matthew Hodgson]]
|
|
* [[https://2021.commcon.xyz/talks/matrix-101][Matrix 101 - Thibault Martin]]
|