XMPP für privates Instant Messaging - Eine Einführung

18. Oktober 2021

von Singustromo

Inhaltsverzeichnis


1. Einleitung

XMPP - früher auch Jabber genannt - ist ein simples Protokoll, welches vielerlei Funktionen jenseits des Nachrichten versendens zu bieten hat. Meistens wird es allerdings als Instant Messenger verwendet.

1.1. Architektur

XMPP ist vergleichbar mit dem E-Mail-System.
Man registriert sich bei einem der vorhandenen Server - oder betreibt selber einen - und kann von dort aus mit jeder erdenklichen Person oder Organisation im XMPP-Netzwerk kommunizieren.

Jeder Benutzer hat eine JID (Jabber-ID), welche wie folgt aussieht:

benutzername@domain.de

Wer mehrere Geräte besitzt, kann diese ebenfalls gleichzeitig verwenden.
Dabei werden die Nachrichten ganz normal synchronisiert.

Alternativ kann man auch jedes einzelne Endgerät für andere erkennbar machen.
Die Jabber-ID würde dann folgendermaßen aussehen:

benutzername@domain.de/gerät

Außerdem:
Nachrichten, die zu einer solchen gerätespezifischen Jabber-ID geschickt werden, erreichen auch nur dieses Gerät.

Wie bei anderen Messengern, gibt es auch die Funktion, Gruppenchats zu gründen und an ihnen teilzuhaben. Auch können Teilnehmer von anderen Servern eingeladen werden. Dies ermöglicht einem ganz leicht, Ereignisse, wie zum Beispiel Hochtzeiten oder Umzüge zu planen.

Um einen solchen Gruppenchat beizutreten, gibt man folgende Jabber-ID an, insofern bekannt:

gruppenname@subdomain.domain.de

Als Subdomain wird häufig conference oder muc (Multi User Conferences) benutzt.
Alternativ können öffentliche Räume im XMPP-Netzwerk in vielen Clienten auch gesucht werden.

Auch ist es möglich XMPP mit anderen Protokollen oder Diensten wie WhatsApp, Twitter oder IRC zu verbinden, wodurch es den Benutzern möglich ist protokollübergreifend zu kommunizieren.
Dies ist jedoch vom Server und letzendlich vom Serverbetreiber abhängig.

Ebenfalls gibt es die Option der Ende-zu-Ende Verschlüsselung der Chats, sowohl Personen- wie auch Gruppenchats, damit keine unbefugten Dritten mitlesen können - selbst der Servereigentümer nicht.
Die herkömmliche Verschlüsselungsmethode bei XMPP ist OMEMO.

Da das Protokoll erweiterbar ist, findet die Ergänzung via Erweiterungsprotokolle, wie openPGP und OMEMO statt.

OMEMO bietet eine simple und benutzerfreundliche Multi-Client Ende-zu-Ende-Verschlüsselung, welche lediglich nur im Clienten aktiviert werden muss. Diese Verschlüsselung kann auch in Chaträumen genutzt werden und bietet einige andere zusätzliche Vorteile, deren Beschreibung außerhalb des Bereiches dieses einführenden Artikels liegt.

Zudem findet je nach Serverkonfiguration die Kommunikation mit dem Server verschlüsselt via SSL statt.
Allgemein sind die unterstützen Funktionen in erster Linie vom Server abhängig.

1.2. Vergleich WhatsApp, Telegram

Sowohl WhatsApp, wie auch Telegram bieten eine Ende-zu-Ende-Verschlüsselung an.
Allerdings ist diese - zumindest bei Telegram - optional und muss für jede Konversation explizit aktiviert werden.

Bei WhatsApp kann Facebook nachweislich trotz Verschlüsselung jede Nachricht mitlesen und diese an Behörden oder andere Organisationen weitergeben. Dies ist der Tatsache verschuldet, dass die privaten Schlüssel - welche bei einem öffentlich-privaten-Schlüsselpaar zum Entschlüsseln benutzt werden - auf den Servern von Facebook liegen.

Zudem benutzen beide Messenger eigene Verschlüsselungsverfahren, welche - wie die Messenger selbst - proprietär sind.
Bei Telegram ist zwar der Client OpenSource, allerdings ist die Serversoftware nicht quelloffen. Dadurch kann nicht nachvollzogen werden, welche Daten letztendlich gespeichert und verarbeitet werden.

Es ist also nicht auszuschließen, dass es in beiden Fällen den Entwicklern möglich ist, die Nachrichten zu lesen.
Zudem stehen die verwendeten Verschlüsselungsverfahren scharf in der Kritik, da bereits mehrere Schwachstellen entdeckt wurden.

Bei gänzlich quelloffener Software können von vielen und vor allem unabhängigen Menschen und Organisationen Sicherheitsüberprüfungen stattfinden - so gennante Security Audits.
Diese stellen, sowohl mathematisch, wie auch technisch sicher, dass die Software nach dem bestem Gewissen ohne Schwachstellen ist.
Vor allem bei Verschlüsselungen ist es wichtig, dass diese mathematisch und auch von der Implementierung her sicher sind.

Übrigens: WhatsApp basierte ursprünglich auf XMPP, benutzt jedoch seit geraumer Zeit eine stark modifizierte Version des Protokolls, um die rund 50 Billionen Nachrichten am Tag verarbeiten zu können (Quelle: http://highscalability.com/blog/2014/2/26/the-whatsapp-architecture-facebook-bought-for-19-billion.html)

Unabhängig davon gehört WhatsApp seit geraumer Zeit zu Facebook.
Durch den Aufkauf hatte der Konzern seine Monopolstellung in Sachen Social Networking nochmals gefestigt.
Telegram verzeichnet im Jahre 2021 unglaubliche 500 Millionen Benutzer.

Große Firmen, beziehenungsweise zentralisierte Organisationen, unterliegen immer der Gefahr jederzeit kompromittiert zu werden, da sie ein lohnendes Ziel sind - sowohl für Organisationen, wie auch Regierungsorgane.

Ob man nun WhatsApp oder Telegram benutzt obliegt jedem selbst.

1.3. Vergleich Matrix

Heutzutage wird gerne das Matrix-Protokoll thematisiert, welches definitiv eine Daseinsberechtigung hat, allerdings für persönliche Zwecke im kleinen Rahmen seitens der Servereinrichtung ungeeignet ist.
Das liegt vor allem daran, dass die Server-Software sehr kompliziert ist, was die Wartung erschwert.
Wiederum ist das Matrix-Protokoll auch reicher an Funktionen.

Der Vorteil gegenüber Matrix liegt darin, dass das XMPP-Protokoll simpler und ressourcenschonender ist.
Ein XMPP-Server kann zudem schon innerhalb von 10 Minuten eingerichtet sein.

Für einen Sprach- oder Videoanruf wird bei beiden Protokollen ein separater Server benutzt, welcher als Vermittler zwischen den mit dem Server verbundenen Clienten dient. Es handelt sich dabei um einen sogenannten TURN-Server, welcher häufig auch im Verbund mit einem STUN-Server läuft.

1.4. Clienten

Da das Protokoll frei - wie in Freiheit - ist, gibt es eine große Auswahl an Clienten für jedes erdenkliche Endgerät.

Für Windows und Linux kann ich den Clienten Gajim empfehlen.
Unter Android soll der Client Conversations ebenfalls sehr gut sein, kann ich persönlich nichts darüber sagen, da ich über kein kompatibles Endgerät verfüge.

Eine vollständige Liste der verfügbaren Clienten kann hier eingesehen werden:
https://xmpp.org/software/clients/

2. Installation von Gajim

Wie im vorherigen Kapitel erwähnt, kann ich aus persönlicher Erfahrung den Clienten Gajim empfehlen.

Er unterstützt vielerlei Funktionen des Protokolls und ist benutzerfreundlich in der Bedienung.

Hier einmal eine grobe Übersicht der Funktionen:

Im folgenden Abschnitt wird beschrieben, wie der Gajim Client installiert werden kann.
Wer Android bevorzugt, kann - wie zuvor erwähnt - die Conversations-App ausprobieren.

2.1. Unter Windows

Die Installation unter Windows erfolgt wie gewohnt über einen Installer.
Gajim kann auf folgender Website heruntergeladen werden:
https://gajim.org/de/

Dort lädt man sich den Installer ganz normal herunter und führt diesen aus.

2.2. Unter Linux, BSD

Die Installation erfolgt unter Linux und BSD wie üblich über den mitgelieferten Paketmanager der jeweiligen Distribution.

2.2.1. Ubuntu und Debian

sudo apt install gajim

Plugin-Pakete, wie OMEMO, sind ebenfalls verfügbar:

sudo apt install gajim-omemo

2.2.2. Fedora

sudo dnf install gajim

2.2.3. openSUSE

sudo zypper install gajim

Auch hier steht das OMEMO-Plugin in den Paketquellen zur Verfügung:

sudo zypper install gajim-plugin-omemo

2.2.4. Arch Linux

sudo pacman -S gajim

Plugins für Gajim sind via der AUR verfügbar.

2.2.5. Gentoo

sudo emerge gajim

2.2.6. FreeBSD

Verfügbar via BSDPorts:

cd /usr/ports/net/gajim/ && make install clean

3. Nutzung von Gajim

Die Nutzung von Gajim gleicht ziemlich der Nutzung von gängigen Instant Messengern.
Für die kommende Version 4 wird aktuell von den Entwicklern die Benutzeroberfläche überarbeitet, so dass das Programm noch einmal zugänglicher und ansprechender sein wird.

3.1. Account erstellen

Wer Gajim zum ersten Mal startet, wird mit diesem Bildschirm begrüßt:

Bildschirmfoto des Willkommensbildschirms von Gajim

Wie zuvor erwähnt, gleicht das XMPP-Protokoll dem E-Mail-System, daher benötigt man bei einem Server ein Konto.
Diesbezüglich stehen einem diverse Optionen offen.

Entweder man hat schon ein Konto durch die Arbeit oder durch sonstige Organisationen und kann dieses Nutzen oder alternativ kann man sich auch bei einem öffentlichen XMPP-Server registrieren.

Wer sich nicht bei einem beliebigen Server aus dem Internet registrieren will, kann mir gerne eine E-Mail mit dem gewünschten Benutzernamen zusenden und erhält anschließend die Zugangsdaten.

Falls das einem nicht genügt, kann man immer noch selber einen XMPP-Server hosten.

3.2. Benutzeroberfläche und Funktionen

Über die Menüpunkte können verschiedene Funktionen aufgerufen werden.
Eine der wohl Wichtigsten ist das Starten, beziehungsweise das Beitreten eines Chats.
Bei dem erscheinenden Fenster kann man dann die JID (Jabber-ID) des Kontakts oder die Gruppen-ID angeben.

Hat man die Jabber-ID angegeben, kann man auch schon direkt mit dem Kontakt schreiben.
Bis der Kontakt allerdings die Anfrage angenommen hat, kann man nicht den Status einsehen.
Diese Erlaubnis muss, je nach Client, jeweils explizit gegeben oder entzogen werden.

Um OMEMO für den Chat zu aktivieren, muss folgendes gemacht werden:

  1. Klicke im Chatfenster unten rechts auf das Schloss-Symbol.
  2. Wähle "OMEMO" aus.

Hier ist ein Bildschirmfoto davon:

Bildschirmfoto des Chatsicherheits-Kontextmenüs in Gajim

Zudem ist es möglich beim Beitreten oder Starten eines Chats global im ganzen XMPP-Netzwerk nach Gruppenchats zu suchen, indem man auf den Globus klickt:

Bildschirmfoto des Gruppenchat starten-Fensters in Gajim

Hier ist einmal eine Beispielsuche:

Bildschirmfoto einer globalen Chatgruppen-Suche in Gajim

Wie zu sehen ist, werden sämtliche öffentliche Räume im XMPP-Netzwerk angezeigt.

Dies verdeutlicht nochmals die dezentrale Natur von XMPP.

Beim Menüpunkt "Konten" kann man unter "Konten bearbeiten" zusätzliche Konten hinzufügen oder die vorhandenen bearbeiten. Dazu zählt auch die Abänderung des Passworts.
Ebenfalls kann man unter diesem Menüpunkt das eigene Server-Profil, samt der persönlichen Informationen bearbeiten.

Auch bietet der Client einem die Möglichkeit, Kontakte in Gruppen zusammenzufassen. Dies hat den Vorteil, dass man eine bessere Übersicht hat und auch die Möglichkeit hat, eine Nachricht an jedem Kontakt in der jeweiligen Gruppe zu senden.

Ansonsten sind bei den meisten Servern nur Dateitransfers möglich, wenn auch der entsprechende Kontakt online ist.
In diesem Fall fungiert der Server nur als Mittelmann und speichert die Dateien selber nicht.
Dafür wird, wie zuvor erwähnt, ein TURN-Server verwendet.

4. Schlusswort

Im Allgemeinen finde ich, dass das Protokoll sehr viel Potenzial hat und ruhig öfters den E-Mails oder anderen Messengern vorgezogen werden sollte, da jeder binnen eines Mausklicks - wenn überhaupt (bei manchen Clients ist OMEMO standardmäßig aktiviert) - eine Ende-zu-Ende-Verschlüsselung einrichten kann.

Auch sind die Metadaten (Verbindungsdaten, Zeitstempel, etc.) je nach eingesetzter Datenbank auf dem Server ebenfalls verschlüsselt.
Aufgrund dessen ist die Sicherheit im Allgemeinen höher, als bei dem E-Mail-System oder anderen gängigen Messengern.

Durch diesen Artikel wurde vermittelt, was XMPP im Allgemeinen ist und vor allem wie man es verwendet.
Ich hoffe, dass dieser Artikel aufschlussreich gewesen ist und dir geholfen hat, das XMPP-Protokoll zu verstehen und zu verwenden.

Falls Fragen bestehen, können diese gerne an die auf dieser Seite gelisteten E-Mail-Adresse oder über XMPP an die folgende Jabber-ID gesendet werden: kontakt@nevrlands.de


Hat dir dieser Artikel gefallen?

Dieser Artikel wurde von Singustromo verfasst.

Für Rückmeldungen hat der Autor Kontaktdaten angegeben.

E-Mail Kontakt
singustromo@member.fsf.org

XMPP/Jabber-Adresse
singustromo@nevrlands.de

Monero
Der Autor dieses Artikels nimmt Spenden über die Kryptowährung Monero (XMR) entgegen.
Gebe als Empfänger-Adresse folgende an:
donate.nevrlands.de