Kategorien
Bits & Dykes

Verschlüsseltes Instant Messaging: Jabber / XMPP revisited

XMPP-LogoEs ist gut drei Jahre her, dass verschlüsseltes Instant Messaging hier im Blog zuletzt thematisiert wurden. Susanne schrieb damals über verschlüsseltes Chatten auf Smartphones und PCs. Seitdem hat sich viel getan. Wenig überraschend ist, dass weiterhin zentralisierte, kommerzielle Dienste die Nase vorn haben: Eine Firma, eine App, deren Server. Die verbreitetsten Player sind wohl derzeit Whatsapp, Signal, Threema und Telegram. Signal ist die einzige Software darunter, deren Quellcode für Clients und Server offen einsehbar ist. (Wobei die Signal-Firma OpenWhisperSystems keinen Wert darauf legt, dass Menschen anfangen, eigene Signal-Server zu betreiben, die mit dem Firmenserver kommunizieren können. Auch eigene Builds der App, bei denen das proprietäre Google Cloud Messaging rausgenommen wird, finden dort keine Unterstützung. Signal ist also quelloffen und zentralisiert.)

Einiges spricht dafür, eine freie, dezentrale Chat-Alternative zu nutzen:

  • Man kann eine eigene Kommunikationsinfrastruktur betreiben, in der man sich für oder gegen bestimmte Funktionen entscheiden kann, statt sie „aufgedrückt“ zu bekommen. Bei Jabber ist es z.B. möglich, abgeschottete Server für geschlossene Gruppen zu betreiben – oder aber solche, die mit dem Rest der Welt kommunizieren können. Mir fallen auch etliche beliebte Dienste, die von den Betreiberfirmen geschlossen wurden, etwa Vine oder Google Reader. Wenn dahingegen eine freie Software nicht weiterentwickelt wird, können sich andere finden und den Quellcode weiterverwenden. Oder die Server werden auf eine alternative freie Software umgestellt, denn selten gibt es tatsächlich nur eine freie Software für eine Sache.
  • Ein dezentral aufgebautes Universum kann schwerer beeinträchtigt, überwacht oder abgeschafft werden.
  • Die Datenhoheit liegt nicht bei einer irgendeiner Firma, sondern bei den Betreiber*innen der Server. Wer einem Serverbetreibenden die eigenen Daten nicht anvertrauen mag, kann sich einen anderen Server suchen.
  • Man kann in einem Jabber-Client mehrere Accounts haben. Egal, ob das mehrere Accounts auf demselben Server oder auf verschiedenen Server sind – Ihr könnt verschiedene Identitäten trennen. Das geht bei keiner App, die Eure Telefonnummer als Identifier verwendet.

Dezentrale Dienste haben es schwer: Sie basieren auf der Idee, dass nicht alle Teilnehmenden ihre Accounts beim selben Anbieter haben. Das bekannteste Beispiel ist E-Mail – man kann mit allen kommunizieren, egal, bei welchem Provider die Leute sind. Man muss nur zusehen, wie man den anderen die eigene Adresse zukommen lässt. Heute bieten etliche Messenger quasi ein zentrales Telefonbuch an, das den Nutzer*innen diesen Aufwand erspart. Das ist zwar praktisch, hat aber auch zur Folge, dass man nicht entscheiden kann, wer aus dem eigenen Bekanntenkreis mitbekommt, ob man die App auch hat. Man kann also nicht Whatsapp installieren, um mit einem ausgewählten Personenkreis darüber zu kommunizieren, weil alle anderen dann auch anfangen, Nachrichten darüber zu schicken. Das ist ja auch einer der Gründe, weshalb es schwer ist, sich später wieder dagegen zu entscheiden – weil eben alle anderen auch dort sind (der so genannte Netzwerkeffekt).

„Jabber ist längst tot“, sagen die Leute. Und doch lohnt es sich, mal wieder einen Blick auf diese alte Chat-Technologie zu werfen, denn da ist in den letzten zwei Jahren viel passiert. Vorher war es mühsam bis unmöglich, Jabber / XMPP auf mobilen Endgeräten zu nutzen, und das hat sich geändert.

Es gab zwar seit langem die Ende-zu-Ende-Verschlüsselung OTR („Off the Record“), doch damit war Verschlüsseln nur zwischen genau zwei Endgeräten möglich, z.B. von meinem zu deinem Computer. Wenn die Teilnehmenden also mit weiteren Geräten online gehen, z.B. mit ihren Telefonen, dann bekommen sie dort Zeichensalat, genauer: die verschlüsselten Chats, die nur für den Computer bestimmt sind und nur dort entschlüsselt werden können. OTR-Verschlüsselung ist außerdem darauf ausgelegt, dass die verschlüsselte Sitzung zwischen den beteiligten Geräten nicht abbricht und dass zwischendrin keine Nachrichten verloren gehen. Die instabilen Internetverbindungen von Smartphones waren also ein großes Hindernis.

Und genau hier setzen ein paar Leute an, um Jabber / XMPP zu verbessern und an heutige Bedürfnisse anzupassen. Die treibende Kraft dahinter heißt Daniel Gultsch. Daniel Gultsch entwickelt die Android-App Conversations. Das ist nicht nur eine wirklich schöne App, sie beinhaltet auch etliche technische Neuerungen, die genau darauf abzielen, Jabber als Messenger-Alternative auf Smartphones zu bringen. Die wichtigsten davon:

  • Conversations war der erste Jabber-Client, der zusätzlich zu OTR- und GPG-Verschlüsselung auch OMEMO-Verschlüsselung kann. Im Gegensatz zu OTR-Verschlüsselung kann OMEMO eine Nachricht für mehrere Endgeräte verschlüsseln. Damit wird das Problem beseitigt, dass ein Gerät sinnvoll entschlüsselt und ein anderes die Nachrichten nicht entschlüsseln kann. (Wer genauere Erklärungen zur Funktionsweise von OMEMO lesen möchte, kann hier oder hier schauen.) OMEMO ist erst seit wenigen Wochen ein offizielles XMPP-Feature, das noch den Status „experimentell“ hat. Das ist aus meiner Sicht ein sehr wichtiger Zwischenschritt, damit OMEMO in mehr Clients eingebaut wird. Momentan gibt es OMEMO nämlich nur in Conversations und dem Desktop-Programm Gajim. Das Team vom Guardian Project, das die Android- und iOS-App ChatSecure entwickelt, arbeitet daran, so dass bald auch iPhone-Inhaber*innen das Feature in Kürze nutzen können. [UPDATE 18.01.2017: Wie Golem heute meldete, hat ChatSecure für iOS jetzt OMEMO-Verschlüsselung eingebaut.] Es gab übrigens ein erstes Security-Audit (PDF), das OMEMO grundsätzlich „bestanden“ hat.
  • Conversations unterstützt das Teilen von Bildern in Chats per HTTP-Upload. Voraussetzung dafür ist, dass der Jabber-Server das auch unterstützt. Überhaupt gibt es etliche Funktionen, die sowohl die App als auch der Server können müssen. Deshalb pflegt Daniel eine Liste von Jabber-Servern, die einen Feature-Vergleich macht. (Wer selbst weitere Server dort eintragen möchte, kann das über ein Github-Repo tun.)
  • Conversations unterstützt die guten alten Chaträume für Gruppen-Konversationen. Jabber-Server erlauben es nämlich in der Regel, dass man selbst Konferenzräume anlegen und bestimmte Einstellungen vornehmen kann: Ist das ein öffentlich auffindbarer Raum oder ist er versteckt? Dürfen nur bestimmte Accounts reinkommen oder alle oder braucht man ein Passwort?

Habt Ihr Lust bekommen, das mal auszuprobieren? Dann braucht Ihr dafür:

  • einen Account auf einem Jabber-Server. Listen mit Jabber-Servern findet Ihr in Daniels Liste.  Nicht alle der Server haben eine offene Registrierung. Wenn Ihr einen Server auf ein paar Sicherheitsfunktionen (wie SSL-Verschlüsselung oder Software-Version) testen möchtet, könnt Ihr die Domain auf xmpp.net und auf  tls.imirhil.fr. eingeben. (Die Tests unterscheiden zwischen c2s, Client-to-Server, und s2s, Server-to-Server. Das bedeutet, dass sie einmal die Verbindung eines Jabber-Programms zum Server testen und einmal die Verbindung zwischen Jabber-Servern.)
  • einen Jabber-Client. Conversations für Android gibt es für einen kleinen (lohnenswerten) Obulus im Play Store, oder sonst kostenlos im Freie-Software-App-„Store“ F-Droid. Die Leute mit iPhones sollten zu ChatSecure greifen, wo bald auch OMEMO-Verschlüsselung funktionieren soll. Für den Computer ist Gajim zu empfehlen (Installationsanleitung für das OMEMO-Plugin).

Abschließend noch ein paar Worte zum Drumherum! Denn Ihr könnt Euch nie in totaler Sicherheit wiegen. Nur weil Ihr mit Jabber nicht über einen kommerziellen, geschlossenen Anbieter chattet, heißt das nicht, dass Ihr automatisch mehr Sicherheit habt.

  • Wem gebt Ihr die Daten? Wer einen Jabber-Server betreibt, kann auch Dinge über Euch herausfinden, z.B. wer in Eurer Kontaktliste steht oder wen Ihr blockiert habt. Haltet Ausschau nach vertrauenswürdigen Server-Betreiber*innen oder lernt, selbst einen Server zu betreiben.
  • Wer Euren Jabber-Server betreibt, ist auch in der Verantwortung, den Server aktuell zu halten. Das mag eins der Hauptprobleme an verteilten Kommunikationsinfrastrukturen sein: Werden Probleme bekannt oder neue Funktionen eingebaut, dann dauert es ewig, bis die Änderungen draußen in der Welt sind, weil so viele Individuen sie erst einspielen müssen, die vielleicht gerade gar keine Zeit dafür haben.
  • Nutzt wirklich die Ende-zu-Ende-Verschlüsselung, sonst kann mindestens der*die Server-Betreiber*in auch die Nachrichten lesen. Wenn Euer Umfeld noch keine OMEMO-fähigen Programme hat, dann nehmt lieber OTR als keine Verschlüsselung. Nehmt es in Kauf, dass ein Gerät unleserlichen Crypto-Schmu erhält.
  • Seid Euch bewusst, dass immer (und bei jeder Software) Sicherheitslücken bekannt werden können. Dazu gehören mitunter Basics. Wie kommen Plugins in Gajim? Wird da wirklich von Gajim verifiziert, dass das OMEMO-Plugin von der richtigen Stelle heruntergeladen wird? Diese und viele andere Fragen kann man eigentlich immer stellen und dabei meist offene Fragen finden. Der Unterschied zu Software mit nicht-öffentlichem Quellcode ist lediglich, dass man sie sich angucken und nach so etwas selbst suchen kann.
  • Beschäftigt Euch mit der expliziten Überprüfung Eurer Kontakte. Sie haben in der App öffentliche Schlüssel, die Ihr bei Gelegenheit prüfen solltet, um sicher zu sein, dass das andere Endgerät, an das verschlüsselte Nachrichten gehen, tatsächlich im Besitz der Person ist, mit der Ihr chatten wollt. Das ist zugegebermaßen nicht in jeder App besonders intuitiv gestaltet. (Für Conversations wird das hier in einem Artikel erklärt.)

Lange Rede, kurzer Sinn: Probiert es doch selbst aus! Wenn Ihr jetzt sagt, dass Ihr schon vier Messenger auf dem Telefon habt, dann frage ich: Was spricht gegen einen fünften, der Euch einen anderen Umgang mit Euren Accounts und Daten erlaubt? Ich halte es für problematisch, Kommunikation dermaßen zu zentralisieren, dass – wie im Falle von Whatsapp – über eine Milliarde Menschen über ein und dieselbe Firma miteinander chatten. Der jüngste Aufreger über die Frage, ob Whatsapp eine Backdoor enthält, zeigt, wie schnell die Welt schwankt zwischen „Hurra, Whatsapp hat gute Verschlüsselung!“ und „OMG, jetzt war deren Verschlüsselung gar nicht sicher?“ Davor ist keine Technologie gefeit, aber es ist ja schon eine gute Frage, wie viele Menschen auf einmal davon betroffen sind, wenn an einer Stelle was schief läuft…

3 Antworten auf „Verschlüsseltes Instant Messaging: Jabber / XMPP revisited“

Vielen Dank für die interessante Aufstellung!
Ich bin ähnlicher Meinung, dass wir weg von diesem „ein Messenger-ein-Server“-Prinzip kommen müssen.
Ach was tät ich dafür, wenn endlich meine Kontakte ihren Hintern von Whatsapp bewegen und nachziehen würden.

Ein super Artikel. Vielen Dank.
Bin nämlich auch gerade dabei einen eigenen Server für meine Familie & Freunde aufzusetzen. Denn Whatsapp kommt mir nie auf mein Smartphone^^
Habe als Server Prosody genommen, der sich recht einfach installieren lässt und Dank Lets encrypt ist auch alles verschlüsselt.
Nur hakt es bei der Konfiguration etwas, gerade die wichtigen MUCs laufen noch nicht.
Hat jemand eine guten Seite mit einer ordentlichen Anleitung parat?
Oder noch besser eine Grundkonfiguration, welche besonders für Conversations empfohlen wird.

Gruß Tommy

Hallo Tommy, danke für Deinen Kommentar. Ich finde es auch schwierig, gute Doku zu Prosody zu finden, die offizielle ist ja sehr knapp.

Ich kann jetzt hier kurz reinpasten, wie ich es gemacht habe, das ist aber glaub ich nicht viel anders als in der Doku.

Du brauchst DNS-Einträge und SSL-Zertifikate, die auch für conference.example.org gelten.


-- im allgemeinen Teil der Datein
muc_log_by_default = false -- Disabled logging by default
muc_log_all_rooms = false
max_history_messages = 20 -- no. of messages that can be retrieved when joining a room


-- im Abschnitt "components" :
Component "conference.example.org" "muc"
restrict_room_creation = "local"
max_history_messages = 0
modules_enabled = {
"muc",
"mam_muc",
}

Du könntest auch mal bei der XMPP-Community fragen, ob sie vielleicht ein MUC-Howto machen könnten. Das ist eine kleine Gruppe von Leuten, die öffentliche Server betreiben und vorhaben, nach und nach bessere Doku aufzubauen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.