Benutzer-Werkzeuge

Webseiten-Werkzeuge


Chatten per XMPP über RKor.Info

Hier ist Instant Messaging in der »XMPP Welt« beschrieben. Delta Chat erlaubt das Chatten per Email.

Warum nicht WhatsApp?

Ich habe hier, hier oder hier unter Kormann.Info schon dargelegt, warum die im Internet am weitesten verbreiteten Instant Messenger (und soziale Medien) für mich nicht in Frage kommen. Die Stärken des Internets sind offene Standards und seine dezentrale Struktur, die durch WhatsApp (und Facebook) mit Füssen getreten werden.

Ein demokratischer Messenger für alle ist nicht WhatsApp, sondern basiert – zum Beispiel – auf XMPP. Dann ist der Chatter Kunde und nicht Ware.

Wie funktioniert es?

Das Extensible Messaging and Presence Protocol XMPP ist ein quelloffener Standard mit einer Server/Client-Architektur ganz analog zu WhatsApp – technisch und historisch richtiger wäre es umgekehrt – mit dem kleinen aber feinen Unterschied, dass es keine zentrale Anlaufstelle, sondern viele Server gibt. Wer Messages verschicken möchte, kann sich einen XMPP Client – einige Vorschläge finden sie weiter unten – besorgen oder einen Web Client nutzen, sich bei einem Server seiner Wahl anmelden – neben diesem Server finden sie Vorschläge zum Beispiel hier oder hier – und den Kreis der Chatter erweitern.

Die Registrierung: Jabber Identifier

Ihre Registrierung – hier bei RKor.Info – entspricht der Erstellung eines persönlichen Jabber Identifiers JID (mit Passwort), in meinem Fall robert@rkor.info, also der Nutzer (Node) robert auf der XMPP Domain rkor.info. Ein anderes Beispiel ist rokoinfo@jabber.de, der Nutzer rokoinfo auf dem Server oder besser der Domain jabber.de.

Die Struktur einer JID ist also analog zu einer Emailadresse, sie könnte theoretisch gleich sein (das gab es mal), muss aber nicht.

Leider musste ich die öffentliche Registrierung im März 2020 wegen Vandalismus einstellen, bitte fragen sie per Email an. So klein kann ein Service gar nicht sein, dass sich nicht ein Schwachkopf findet, der versucht Unsinn damit anzustellen…

Die Grundlagen

Die Basisfunktion von XMPP ist der Chat oder das Gespräch zwischen zwei Teilnehmern oder JIDs, die nicht notwendigerweise in der gleichen Domain liegen müssen. Spricht also robert@rkor.info mit rokoinfo@jabber.de, so verbindet sich mein Client oder meine Benutzeroberfläche mit dem Server rkor.info. Dieser leitet die Nachricht weiter an die Domain jabber.de, und dieser an den dortigen Teilnehmer rokoinfo@jabber.de. Das geht selbst dann, wenn letzter gerade nicht online ist: Die Nachricht wird einfach so lange auf einem Server von jabber.de zwischengespeichert.

Letztendlich ist das identisch zu den aus XMPP entwickelten proprietären Lösungen WhatsApp oder – ehemals – Google Talk, es gibt bei diesen lediglich sehr zur Freude der NSA, des BND und der Firmen selbst nur einen Server – genauer riesige Serverfarmen – und damit ein geschlossenes Ökosystem. Dessen Daten lassen sich wunderbar sammeln und analysieren. Dabei sind vor allem die Metadaten interessant, weniger die Chatinhalte.

Der Multi-User Chat stellt bereits eine Erweiterung XEP-0045 des XMPP-Protokolls dar. Darin können sich mehrere JIDs – auch nicht notwendigerweise aus einer Domain – unterhalten, ganz analog zum älteren Internet Relay Chat. Es ist wie das Gemurmel in einer Lobby, in meinem Beispiel lobby@chat.rkor.info.

XMPP Clients

XMPP Clients gibt es fast wie Sand am Meer, entweder als Browseranwendung, also einem Web Client, oder als Programm oder neudeutsch App.

Auf dem Server RKor.Info ist der Web Client Converse installiert, bei dem Sie sich mit einer JID aus der Domain RKor.Info anmelden können. Der MUC lobby@chat.rkor.info, »Roberts Lobby« steht allen offen.

Empfehlenswert sind für Windows Pidgin, für Linux Gajim oder Pidgin, und für Android Conversations. Sie unterscheiden sich neben den unterschiedlichen Rechnerplattformen noch in ihrem Funktionsumfang und ihrer Anwenderfreundlichkeit. Conversations ist der anwenderfreundlichste, bei den Lösungen für PCs geht die Flexibilität und Funktionenvielfalt immer etwas auf deren Kosten.

Auf Basis von GTK+/Vala entsteht Dino, ein sehr moderner und stylischer Client, zunächst für die Linux-Welt.

Diese nativen Programme können sich außerdem JID und Passwort merken, so dass Sie sich im Gegensatz zum Web Client nicht jedes Mal selbst einloggen müssen. Das übernimmt der native Client.

Noch Fragen? Die FAQs

Registrierung

Q Es klappt einfach nicht: Ich kann mich nicht registrieren!

Q Ich kann den angegebenen Link zur Registrierung nicht erreichen.

Chat & Converse

Q Ich kann JIDs unter »Alle« nicht löschen.

Q Mein neu angelegter Kontakt erscheint unter »Unbestätigte Kontakte«. Was bedeutet das?

Q Ich würde die Kontakte unter »Ungruppiert« gerne anders organisieren. Wie geht das?

Q Ich würde gerne Bilder oder Dateien an meinen Kontakt senden. Wie geht das?

Q Kann ich meine Nachrichten Ende-zu-Ende verschlüsseln?

Sonstiges

Q Ich will keinen weiteren Instant Messenger installieren?

Q Gibt es eigentlich noch andere sinnvolle Messaging-Lösungen?

Zur Technik

Der XMPP Server von RKor.Info

RKor.Info nutzt eine der am weitesten verbreiteten XMPP Serversoftware, ejabberd. Sie ist so eingestellt, dass Sie sich selbst registrieren können. Der Node muss dabei mindestens vier Zeichen umfassen. Sie können aus Gründen der Sicherheit in einem bestimmten Zeitintervall nur eine begrenzte Anzahl an Registrierungen vornehmen.

Wenn Sie offline sind, merkt sich der Server bis zu 1000 Mitteilungen an Ihre JID. Sie können außerdem von verschiedenen Clients – zum Beispiel Web, Handy und PC – gleichzeitig und mit der gleichen JID angemeldet sein. Die unterschiedlichen Clients verlängern die JID nach einem Schrägstrich um die »Resource«, also zum Beispiel robert@rkor.info/conversations. Sie können einen Chat am Rechner beginnen und ihn nahtlos im Bus am Handy weiterführen.

Verschlüsselung

»Post Snowden« spielt Verschlüsselung eine immer größere Rolle. Der MUC lobby@chat.rkor.info gilt dabei als unverschlüsselt, was nicht heißt, dass Ihre Mitteilungen unverschlüsselt über das Internet transportiert werden. RKor.Info erzwingt die Verschlüsselung zwischen Client und Server ganz analog zu HTTPS. Die Verschlüsselung für Verbindungen von Server zu Server wird nicht erzwungen, sie ist aber der Regelfall. Auf dem Server liegt Ihre Mitteilung aber unverschlüsselt vor, was grundsätzlich ein Mitschneiden der Chats auf dem Server erlauben würde, aber bei RKor.Info nicht gemacht wird. Was soll ich auch mit den Daten?

Das können Sie nun glauben, müssen Sie aber nicht. Abhilfe schaffen Ende-zu-Ende Verschlüsselungen wie OMEMO (Are we OMEMO yet?), OpenPGP oder OTR. Die Verschlüsselungsprotokolle müssen dabei immer von beiden Clients beherrscht werden. Die älteren Verfahren OTR und OpenPGP haben gegenüber dem modernen OMEMO einige Einschränkungen. Der oben beschriebene Pidgin spricht alle drei Verfahren über Plugins, Gajim – ebenfalls über Plugins – und Conversations sprechen OpenPGP und OMEMO, und Converse beherrscht OMEMO (Stand: Januar 2020).

So weit, so schön, für eine sichere Kommunikation über öffentliche Kanäle sind allerdings noch zwei weitere Punkte einzuhalten: (1) Sie müssen sich sicher sein, dass der geheime Teil des Schlüssels vom Client erzeugt wurde und auch beim Client bleibt, und (2) dass der Serverbetreiber nicht unbemerkt einen weiteren Client in die Unterhaltung einschmuggelt oder den Schlüssel heimlich austauscht. Nur dann ist dieser wirklich nicht imstande der Unterhaltung zu folgen. Bei FOSS, also »Free and Open Source Software«, können sich Spezialisten den Quellcode ansehen, und beide Punkte überprüfen und bestätigen. Bei geschlossenen Systemen ist das letztlich nur durch die Einschaltung Dritter möglich, und müsste für jede neue Software-Version wiederholt werden. Das ist schwierig bis unmöglich. Einfacher ist hierbei sich Gedanken zu machen über das Geschäftsmodell des Betreibers und die Rechtslage im jeweiligen Betreiberland.

Für wirkliche Ende-zu-Ende-Verschlüsselung mit OMEMO müssen Sie also die Identität der Geräte eines Teilnehmers über deren Fingerprints überprüfen. Für meine JID robert@rkor.info lauten die OMEMO Fingerprints (Stand: Januar 2024, als QR Code hinter den Programmnamen, zum Beispiel für den Scan mit Conversations):

Gajim 6B3449BD CFCE64D8 C608BDE1 FD954BEF DEB60A9F B12C034C 7E172C4D 7CB9C816

Conversations 39C1B5BD C58296A0 D2EBED5F 57F02A85 D6C5C249 A2BF8753 29E40A22 A258A10A

Dino 1202541F D907B59C A6143F93 68D4BBF9 69E08DFB 4CE3471A B139538E 3733EF44

In Conversations wird diese Identifikation über den gegenseitigen Scan von QR Codes bewerkstelligt. Der Hinweis über die Verschlüsselung von Nachrichten wechselt dann vom Schloss – E2E-verschlüsselt und ohne Identifikation vertraut – zum Schild, also verschlüsselt und Gerät über einen Seitenkanal wie den hier platzierten QR Codes und Fingerprints identifiziert. Gajim und Dino spucken auf Verlangen die Fingerprints aus.

Dateiübertragung

Neben den reinen Mitteilungen lassen sich auch Bilder oder allgemein Daten über einen XMPP-Server übertragen. Im Fall von RKor.Info funktioniert dies über einen verschlüsselten HTTP Upload (XEP-0363). Ihr Upload (max. 100 MiB pro Upload, max. 256 MiB insgesamt) liegt über einen begrenzten Zeitraum (14 Tage) auf dem Server und kann von dort durch den Client des Gesprächspartners verschlüsselt wieder heruntergeladen werden. Typischerweise unterstützen XMPP Clients dabei: Sie werden wie Chatbeiträge oder Anhänge dazu behandelt.

Viel Spaß beim Chatten!

Anhang: Für Neugierige hier noch mehr »Tech Sprech«

  • Weiterführende Links zum Thema XMPP und Instant Messenger finden Sie im Wiki unter Kormann.Info.
  • Sehr kenntnisreich und gut lesbar ist The State of Mobile XMPP in 2016 des Hauptentwicklers von Conversations, Daniel Gultsch.
  • Ein schön gemachtes Tutorial (20min Film) des Konkurrenzprodukts Tigase erklärt den Informationsaustausch (XMPP-Protokoll) zwischen Client und Server.
  • Theoretisch kann ein XMPP Client seinen Benutzer über neue Nachrichten informieren. Technisch nennt sich das Server Push, und ist grundsätzlich in XMPP kein Problem. Kniffelig wird das allerdings auf Handys durch die Beschränkungen der Hersteller, siehe dazu »An Excurse on Push« in obigem Artikel von Daniel Gultsch. Auf Android kann man die App Conversations für Benachrichtigungen freischalten und erhält die Hinweise des Servers, nicht aber auf iOS.
  • Dateiübertragung: Ihre übertragene Datei oder Ihr Bild liegt für den oben angegebenen Zeitraum verschlüsselt auf dem Server, unverschlüsselt ist lediglich der Dateiname. Das OMEMO Plugin von Gajim reicht den Inhalt des Links aber ohne Entschlüsselung – häufig ein Bild an den Bildbetrachter – weiter. Der ImageDownloader von Daniel Gultsch liefert einen Ausweg.
  • Android Conversations startet den Dienst XmppConnectionService, dessen irregulärer Abbruch zum Verlust von Nachrichten führen kann. Also Vorsicht mit dem »Abschiessen« von Conversations.

Seiten-Werkzeuge