[matrix] – Ein offener Standard für Echtzeitkommunikation

13.12.2022 | Sebastian Neumann in allgemein

Merkmale

Die Entwicklung von Matrix wird von der Matrix.org Foundation [4] betreut. Sie versteht sich als neutrale Hüterin des Standards, die im Namen der gesamten Matrix-Community fungiert. Seit Juni 2019 hat Matrix die Beta-Phase verlassen und ist vollständig für den Produktiveinsatz geeignet. Es kann für Instant Messaging, VoIP/WebRTC-Signalisierung, Kommunikation im IoT oder überall dort zum Einsatz kommen, wo für das Veröffentlichen und Abonnieren von Daten eine standardisierte API bei gleichzeitiger Verfolgung des Gesprächsverlaufs benötigt wird.

Nutzer:innen können sich bei einem Matrix-Server anmelden oder einen eigenen Server betreiben, um etwa die Kommunikation innerhalb einer Organisation oder eines Unternehmens zu ermöglichen.

Vorteile auf einem Blick:

  • offener Standard
  • Ende-zu-Ende-Verschlüsselung (E2EE)
  • Unabhängigkeit von zentralen Providern
  • verteilte Serverinfrastruktur (Föderation)
  • zeigt keine IP eines Users an andere User
  • keine E-Mail oder Telefonnummer für Registrierung notwendig
  • kein Zugriff auf das Adressbuch notwendig
  • Client kann über Tor anonym zum Server verbinden
  • Interoperabilität zu anderen Plattformen
  • große Auswahl an Clients für nahezu jedes Device und OS
  • im Browser funktionsfähig (via WebRTC)
  • Synchronisierung über mehrere Geräte (multiclient-fähig)

Die Messenger-Matrix [5] des Kuketz-Blog [6], die einen Überblick über verschiedene Merkmale diverser Messenger bietet, weist allerdings zurecht auf ein Problem hin: »Wer hat uns verraten? Die Metadaten!« Multiclient-Fähigkeit und dezentrale/föderale Struktur machen es technisch sehr schwierig, Metadaten generell zu vermeiden. Erinnert sei in diesem Zusammenhang an den Vortrag des Signal-Gründers Moxie Marlinspike auf dem 36C3.[7]

Funktionsweise

Matrix ist eigentlich eher ein dezentraler Speicher als ein Nachrichtenprotokoll. Eine Nachricht wird beim Senden über alle Server repliziert, deren Benutzer:innen an einer bestimmten Konversation beteiligt sind. Das ähnelt der Replizierung von Commits zwischen Git-Repositories. Es gibt somit in einer Matrix-Konversation, die sich über mehrere Server erstreckt, keine zentrale Kontrollinstanz und keinen Single Point of Failure.

Das impliziert, dass jeder Server die volle Souveränität über die Daten seiner Benutzer:innen hat. Jede:r Einzelne kann ihren/seinen eigenen Server wählen oder betreiben und am gesamten Matrix-Netzwerk teilnehmen.

Auf matrix.org wird der Nachrichtenversand in Räumen zwischen dezentralen Servern in einer interaktiven Animation anschaulich dargestellt:

Matrix verwendet standardmäßig HTTPS- und JSON-APIs für den Datenaustausch [8], kann aber auch anspruchsvollere Transportmittel wie WebSockets [9] oder mit extrem niedriger Bandbreite über CoAP-Proxy und Noise-Encryption nutzen.[10]

Möglichkeiten

Der offizielle Matrix-Client heißt Element [11], es gibt aber eine Vielzahl weiterer Clients [12] für jeden Geschmack und jedes gängige OS. Oder man nutzt das Webinterface im Browser, in das übrigens auch E2EE integriert ist.

Element ist am weitesten verbreitet und entwickelt, folglich am user-freundlichsten und bietet den bekannten Komfort, den auch andere Messanger haben: Sprachnachrichten, Umfragen, Gruppen- & Einzelchats, ansprechendes UI etc.

Durch die verteilte Server-Struktur ist es möglich, Chatverläufe auf mehreren Clients und Browsern gleichzeitig offen und synchron zu halten.

Ein anderes nützliches Feature sind »Spaces«, die eine weitere Möglichkeit sind, Räume und Personen zu gruppieren.

Threads können in Element bereits aktiviert werden, sind aber noch in der Beta-Phase. Dieses Feature lässt zukünftig sicherlich einige Entwicklerteams überlegen, von Slack auf Matrix zu wechseln.

Matrix bietet eine API an, mit der sich Bots einem Raum hinzufügen und steuern lassen. Folglich existieren eine Vielzahl an Bot-Projekten [13]. So ist es, um nur einige Beispiele zu nennen, möglich, RSS-Feeds in Matrix-Räumen [14] zu lesen, Nachrichten mittels HTTP POST-Requests in Matrix-Räumen zu posten [15], oder sich ein persönliches Assistenz- und Administrationstool [16] einzurichten.

Bridges [17] ermöglichen die Interoperabilität mit anderen Plattformen wie Signal, Telegram oder Mastodon u.v.m. Zur Wahrheit gehört aber auch, das einige Bridges z.T. datenschutzrechtlich bedenklich sind. Beeper [18] treibt es auf die Spitze und macht mit der Integration von 15 Netzwerken Matrix-Brücken zum Geschäftsmodell [19] und auch Element bietet mittlerweile die »One chat app« für Signal, Telegram und WhatsApp [20] zum kleinen Preis an.

Resümee

Für einen ersten Eindruck, zum Testen oder für einen eigenen Chatserver für den innersten Familien-/Freundeskreis z.B. auf einem Raspberry Pi ist die Installation und das Setup mit Docker sehr schnell und einfach realisierbar.[21] [22] Kompliziert wird es beim Aufsetzen eines STUN- und TURN-Servers für Video- und Audiointegration oder beim manuellen Einrichten einiger Bridges. Für das Server Setup mit Ansible und Docker gibt es ein hilfreiches und umfangreiches Repository.[23] Alles in allem handelt es sich bei Matrix um ein mittlerweile etabliertes [24] und gut dokumentiertes [25] OSS-Projekt, welches im privaten und öffentlichen Sektor immer mehr Anklang findet.

Sebastian Neumann
Sebastian Neumann
Sebastian ist seit 2022 als Linux Consultant und Trainer bei B1 Systems tätig. Aus seinem früheren Leben als Geistes- und Sozialforscher ist sein Interesse an komplexen gesellschaftspolitischen Fragen bis heute geblieben. Wenn er nicht gerade neue Technologien der OSS-Welt ausprobiert und zu verstehen versucht, denkt er über deren Wechselwirkungen in den Ordnungen des Wissens nach.

 


Haben Sie Anmerkungen oder Nachfragen? Melden Sie sich unter blog%b1-systems.de
Col 2