Jabber (XMPP) ist ein offenes Protokoll, das eine förderalistische Infrastruktur ermöglicht. Wie bei E-Mail kann man einen Anbieter wählen, der am besten die eigenen Präverenzen erfüllt und trotzdem mit allen anderen kommunizieren. Wenn der Anbieter seine Policies ändert, kann man zu einem besseren Anbieter wechseln ohne das Netzwerk der Kontakte zu verlieren, man muss nur die eigene, neue Kontaktadresse verteilen. Das unterscheidet Jabber/XMPP wesentlich von Messaging Diensten wie WhatsApp oder Threema.

Ende-zu-Ende Verschlüsselung

Jabber wurde primär für die direkte Kommunikation zwischen zwei Teilnehmern entwickelt. Für den Chat zwischen zwei Partnern gibt es folgende Verfahren zur Ende-zu-Ende Verschlüsselung der Kommunikation:
  1. "Off-the-Record" (OTR) wurde von den Cypherpunks mit dem Ziel entwickelt, möglichst einfach einsetzbar zu sein. Eine OTR-verschlüsselte Verbindung wird automatisch auf­gebaut, wenn beide Jabber-Clients dieses Feature unterstützen.

    Allerdings muss die Vertrauenswürdigkeit der Verschlüsselung von den Teilnehmern verifiziert werden. Ohne diese Prüfung könnte sich ein Lauscher als man-in-the-middle einschleichen. Die Software für diesen Angriff gibt es auch als Open Source, z.B. mod_otr für ejabberd. Für die Verifikation der Schlüssel bietet OTR drei Möglichkeiten:
    1. Vergleich der Fingerprints der Schlüssel.
    2. Verifizierung eines Passworts, das nur den beiden Partnern bekannt ist.
    3. Verifizierung durch Frage/Antwort, wobei die Antwort nicht zu erraten sein darf.
    Beide Kommunikationspartner müssen die Fingerprints der Schlüssel bzw. das gemeinsame Passwort oder die Frage/Antwort über einen unabhängigen, sicheren Kanal austauschen, bevor sie die OTR-Verschlüsselung verifizieren können.
  2. OpenPGP wurde bereits bei der Verschlüsselung von E-Mail behandelt. Die Erstellung und Austausch der Schlüssel ist etwas komplizierter als bei OTR. Die Vertrauens­würdigkeit der Verschlüsselung muss aber nicht extra verifiziert werden, da sie durch das Vertrauen in die OpenPGP-Schlüssel gegeben ist.

    Bei OpenPGP für Jabber/XMPP gibt es zwei Standards. Die meisten Jabber Clients implementieren XEP-0027, der inzwischen für obsolet erklärt wurde, da er einige Sicherheitslücken enthält. Der neuer XEP-0373 ist bisher noch als "experimentell" gekennzeichnet und wird nur von sehr wenigen Jabber Clients unterstützt.
  3. OMEMO: (OMEMO Multi-End Message and Object Encryption, XEP-384) ist eine relativ neue Ende-zu-Ende Verschlüsselung für Jabber/XMPP. Sie basiert auf Axolotl Ratchet, das von WhisperSystems für TextSecure entwickelt wurde. Sie bietet wie OTR einen automatischen Schlüsseltausch, Forward Secrecy und Deniability. Zusätzlich bietet OMEMO verschlüsselte Offline-Messages und verschlüsselten Datei­transfer via HTTPUpload für Bilder, was mit OTR nicht möglich ist. Außerdem kann OMEMO in der Regel auch problemlos mit mehreren Geräten gleichzeitig genutzt werden.

    Die Webseite Are we OMEMO yet liefert einen Überblick, wie OMEMO aktuell von welchen Jabber/XMPP unterstützt wird. Der Desktop Client Gajim sowie Conversations (Android) und ChatSecure (iOS) bieten seit längerem die gute Unterstützung für OMEMO.
     
    HINWEIS: Nach Aussage des australischen Generalstaatsanwaltes kann der britische GCHQ die Ende-zu-Ende Verschlüsselung von WhatsApp und Signal knacken. OMEMO verwendet die gleiche Verschlüsselung und basiert ebenfalls auf Axolotl Ratchet.

Ende-zu-Ende Verschlüsselung für XMPP-Erweiterungen

Jabber/XMPP bietet neben der direkten Kommunikation zwischen zwei Partnern viele Erweiterungen. Es gibt Gruppenchats, Jingle Dateitransfer oder Audio- und Video-Chats. Diese erweiterten Funktionen sind in der Regeln nicht Ende-zu-Ende verschlüsselt.

OMEMO versucht diese Lücke zu schließen. Es funktionieren folgende Features: Im Moment ist die Situation mit den erweiterten XMPP-Features und OMEMO etwas chaotisch und unübersichtlich. Man kann sich (noch) nicht darauf verlassen, dass es funktioniert.

Jabber Clients 

Um Jabber/XMPP zu nutzen installiert man einen Instant Messaging Client, erstellt einen (meist) kostenlosen Account auf einem Jabber-Server, aktiviert die OTR- oder OpenPGP-Verschlüsselung und kann loslegen. (Vorbereitung: 3-5min).
  1. Für den Desktop PC gibt es mit Plugins aufmotzbare, Feature-reiche Jabber Clients wie z.B. Gajim, Pidgin und andere, bei denen der Spaßfaktor im Vordergrund steht und Sicherheit der Kommunikation nur eine untergeordnete Rolle spielt.

    Wir haben uns einige Feature-reiche Jabber Clients für Linux angeschaut:
    • Wenn man Pidgin für Debian verwenden will, dann wird zusätzlich das Paket "gstreamer-plugins-bad" installiert, damit man sofort via Video und Audio chatten kann. Die Codecs in diesem Paket enthalten viele Bugs, deshalb heißen sie BAD. Die Installation dieser Codecs ist ein Sicherheitsrisiko! Wenn diese Codecs installiert wurden, kann unter Umständen der Aufruf einer bösartigen Webseite im Browser Google Chrome ausreichen, um den Computer zu kompromittieren.

      Wenn man das Paket "gstreamer-plugins-bad" deinstalliert, dann ist auch Pidgin weg. Debianer müssten sich einen sicheren Pidgin selbst bauen.
       
    • Die Crypto-Plugins für die OTR- und OMEMO-Verschlüsselung für Gajim sind EXPERIMENTELL und man muss sie mit dem Plugin Installer installieren. Seit 2013 gibt es einen Bug im Gajim Plugin Installer, die SSL-Zertifikate für die Verbindung zum Download Server wurden nicht verifiziert (der Bug wurde Dez. 2016 gefixt), aber Zertifikatspinning fehlt noch. Außerdem gibt es keine Verifikation für die Integrität der herunter­geladenen Plugin Archive (Bug #79 von 2013).

      Wenn ein böser Bube die Ende-zu-Ende Verschlüsselung eines Gajim Nutzers kompromittieren möchte (z.B. ein Geheimdienst mit 150 Mio. € Budget zum Knacken von Messengern Diensten), dann könnte er einen eigenen Server aufsetzen, das Opfer via DNS-Manipulation auf den Server leiten und ein modifiziertes OTR- oder OMEMO-Plugin mit "Masterschlüssel" für die Dienste zum Download anbieten. Die Gajim E2E-Crypto ist also nicht für hohe Sicherheitsanforderungen geeignet.
       
    • Pidgin und Gajim haben eine vorbereitete Proxy Konfiguration für Tor Onion Router und suggerieren damit, dass es möglich wäre, Tor mit diesen beiden Jabber Clients zu nutzen. Kann man machen - aufgrund von Bugs und Features sollte man aber NICHT erwarten, dass man anonym bleibt, siehe: Gajim + Tor.
    Wer in erster Linie Spaß an der Kommunikation haben möchte, kann als Linux User den bevorzugten Jabber Client mit der Paketverwaltung installieren und aktuell halten. Windows und MacOS Nutzer finden Installationspakete auf den Webseiten der Projekte.
  2. Daneben gibt es für den Desktop PC auf Sicherheit optimierte Jabber Clients wie den TorMessenger oder CoyIM (beide noch im Beta Stadium), die aus Sicherheitsgründen nur Plain XMPP mit OTR können und keine Erweiterungen wie Gruppenchats oder Dateitransfer unterstützen. Nur diese beiden Clients sind auch für die Nutzung via Tor Onion Router geeignet, wenn man wirklich anonym bleiben will.

    TorMessenger und CoyIM sollten immer(!) in Kombination mit Tor Hidden Jabber Servern genutzt werden, deshalb werden sie im Kapitel Anonymes Instant Messaging mit Tor vorgestellt. Beim TorMessenger ist der Grund offensichtlich, bei CoyIM liegt es an der grottenschlechten TLS Package von Golang für die Transportverschlüsselung.

    Die TLS Package von Golang kann keine aktuellen AES-GCM Cipher verwenden sondern nur AES-CBC-SHA Ciphersuiten, die außerdem noch via Lucky13 Attack (2013) angreifbar sind, und RC4 Cipher, die nach den Empfehlungen der IETF (RFC 7465) und des BSI (TR-02102-2) nicht mehr genutzt werden sollten. Da den Entwicklern der TLS Package von Golang die Probleme mit Lucky13 bekannt sind, werden RC4 Cipher bevorzugt. Diese Schwäche von CoyIM kann man kompensieren, wenn Tor Onion Router die Transportverschlüsselung zum Hidden Jabber Server sicherstellt.
  3. Für Android empfehlen wir die App Conversations, die OTR, OpenPGP und OMEMO beherrscht. Für iPhones gibt es ChatSecure. Ein neues Projekt ist Zom, das als Nachfolger von ChatSecure für Android und iPhone ein modernes GUI mit dem Unterbau von Conversations verbindet.

Jabber Server  

Um Jabber/XMPP für die Kommunikation nutzen zu können, muss man einen Account auf einem Jabber Server anlegen. Es gibt eine große Auswahl von Servern und es fällt schwer, eine Auswahl zu treffen. Folgende Kriterien kann man beachten:
  1. Um die moderne OMEMO Verschlüsselung verwenden zu können, muss der Server die notwendigen Erweiterungen XEP-0163 und XEP-0280 unterstützen. Ob der bevorzugte Server diese Extensions unterstützt, kann man entweder selbst mit dem Java Programm ComplianceTester for XMPP prüfen oder auf der Webseite von D. Gultsch nachschauen, wo man die Testergebnisse für einige Server findet.
  2. Wenn man Jabber/XMPP auch auf dem Android Smartphone verwenden möchte, dann kann man mit Server Push Notifications (XEP-0357) den Akku schonen.
  3. Der Server sollte eine SSL/TLS Verschlüsselung nach dem Stand der Technik bieten. Das kann man beim IM Observatory prüfen oder mit dem CryptCheck, indem man folgende URL aufruft: https://tls.imirhil.fr/xmpp/<domain.tld>
  4. Die SSL/TLS Transportverschlüsselung bietet nur hinreichende Sicherheit und schützt gegen passive Lauscher am Draht. Ein potenter Angreifer, der gültige X509 Zertifikate faken kann (z.B. Geheimdienste), könnte mit einem gezielten Angriff als man-in-the-middle die SSL/TLS Verschlüsselung aushebeln. Tor Hidden Services bieten hohe Sicherheit und schützen auch gegen diese Angriffe. Wer hohe Sicherheit benötigt, sollte ein Jabber Server mit Tor Hidden Service nutzen (siehe Tor Onionland). Hinweise zur Konfiguration der Jabber Clients gibt es im Kapitel Anonymisierungsdienste.
  5. Für langfristige Nutzung könnte man darüber nachdenken, ob es ein plausibles Konzept zur Finanzierung der Server gibt oder ob man mit dem Risiko leben möchte, dass der Betrieb kurzfristig eingestellt werden könnte weil der Admin keine Lust mehr hat.
Ein kleine Liste der von uns empfohlenen XMPP-Servern:
Server OMEMO möglich Tor Hidden Service Bemerkungen
conversations.im ja kostenpflichtig (8 € pro Jahr), von XMPP-Profis betreut
jabber.calyxinstitute.org   nein ijeeynrc6x2uy5ob.onion TLS+DANE, erzwingt OTR
draugr.deja jfel5icoxf3nmftl.onionseit 2005 spenden-finanziert
mailbox.org ja kqiafglit242fygz.onionnur für Kunden, TLS+DANE
jabber.cat jasybzodlxacch7st7.onionauch Frauen können IT und die Jabber-Katze ist gut
trashserver.net jam4c722bvc2r7brnn.onion  mit Spenden finanziert, mit Webchat Interface

Die Aufzählung ist unvollständig, als kleine Anregung gedacht. Umfangreichere Listen gibt es bei D. Gultsch, bei jabberes.org, bei xmpp.org oder im Wiki ubuntuusers.

Bei spendenfinanzierten Servern kann man für private Accounts 10-15 € pro Jahr investieren, um den Betreiber zu einem langfristigen und stabilen Betrieb des Dienstes zu motivieren.

Anonymisierungsdienste verwenden

Verschlüsseltes Instant Messaging in Kombination mit Anonymisierunsgdiensten wie Tor Onion Router ist auch für potente Geheimdienste wie die NSA ein Alptraum. Es gibt keine Metadaten, starke Verschlüsselung wie OTR kann noch nicht gebrochen werden und eine Zuordnung von Traffic zu IP-Adressen wird durch die Anonymisierungsdienste verhindert.

Wie man Jabber mit Tor kombiniert, ist im Kapitel Anonymisierungsdienste beschrieben.
Lizenz: Public Domain