Aktualisierungen als RSS-Feed oder im Changelog.

Privacy-Handbuch

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.

    Für hohe Sicherheitsansprüche kann 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 über einen unabhängigen Kanal.
    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.

    Leider hat OMEMO das gute Konzept zur Verifizierung von Schlüsseln nicht von OTR übernommen. D. Gulsch hat nachträglich das Essay Blind Trust Before Verification geschrieben (wobei er Ideen von OTR aufgreift) und die Verifizierung mit QR-Codes eingeführt, was einige andere Implementierungen übernommen haben.

    Aus der Einführung von Blind Trust und der zeitversetzten Verifizierung von Schlüsseln ergab sich ein neues Problem. Es war möglich, dass für einen Kommunikationspartner sowohl verifizierte wie auch unverifizierte Schlüssel vorhanden waren. Hmmm...
    1. Wenn unverifizierte Schlüssel weiterhin verwendet werden dürfen, dann ist die Verifizierung einzelner Schlüssel sinnlos und man kann komplett darauf verzichten, dachten sich die Entwickler von Zom.
    2. Wenn verifizierte Schlüssel vorhanden sind, dann dürfen unverifizierte Schlüssel für diesen Kommunikationspartner nicht mehr verwendet werden und werden abgelehnt, dachten sich die Entwickler von Conversation.
    Man kann nicht sagen, welche von den beiden Gruppen Recht hat, da es kein Angreifer­modell für OMEMO gibt und damit unklar ist, gegen welche Angriffe OMEMO eigentlich schützen soll. Wenn OMEMO nur gegen passive Angreifer schützen soll und dafür die Multi-Client Fähigkeit erhalten bleiben soll, dann hätten das Zom-Team recht. OMEMO wäre dann aber deutlich schwächer als andere Verschlüsselungen für Messenger.

    Die Multi-Client Fähigkeit ist ein Tor für motivierte, aktive Angreifer, die sich in eine nicht verifizierte OMEMO Kommunikation einklinken können und als "zusätzliches Gerät" eines Kommunikationsparters den verschlüsselten Chat belauschen. Dafür benötigt er nur die Login Credentials des Opfers auf dem Jabber Server, die mit Phishing abgegriffen werden könnten oder evtl. beim Admin des Servers erfragt werden könnten (z.B. mit einer Bestandsdatenauskunft wenn die Passwörter nicht als Hash gespeichert werden, wie es beim Jabber Server des CCC jahrelang üblich war.)

    Um die Sicherheitslevel zu vergleichen: eine nicht verifizierte OMEMO Verschlüsselung könnte mit einem erfolgreichen Phishing Angriff, einer Bestandsdatenauskunft oder vom Admin des Servers kompromittiert werden. Bei einer verifizierten Verschlüsselung mit OMEMO braucht man dafür den Bundestrojaner. Erst die Verifikation der Schlüssel bietet echte Ende-zu-Ende Sicherheit gegen mitlesende "falsche Freunde".
    • Nutzer der Android App Conversations können die Schlüssel mit QR-Codes bei einem Face-2-Face Treffen untereinander verifiziert.
      (Wenn man in Conversations 2.0 den Schlüssel eines Kommunikationspartners verifiziert hat, kann dieser Partner kein anderes Gerät mehr nutzen. Jeder andere Schlüssel wird von Conversations abgelehnt und die Multi-Client Fähigkeit von OMEMO ist damit erledigt.)
    • Die QR-Codes von der iOS App Chatsecure sind nicht mit Conversations kompatibel. Wenn man nicht das gleiche Smartphone OS nutzt kann man die Schlüssel nicht anhand der QR-Codes verifizieren. Unschön.
    • Die Smartphone App Zom vertraut allen Schlüsseln ohne Möglichkeit der Verifizierung. Es gibt keine Möglichkeit, einen "falschen" Schlüssel zu sperren. Sehr einfach nutzbar aber auch unsicher. Zom empfehlen wir daher garnicht.
    • Nutzer von Gajim müssen jeden Schlüssel anhand des Fingerprint vor der Verwendung bestätigen und klicken daher meist einfach auf "Ok", ohne weiter darüber nachzudenken und die Schlüssel wirklich zu prüfen. Auch nicht gut.
    Chaos in unklarer Spezifikation und in den Implementierungen ist das Gegenteil von Sicherheit bei Kryptografie und OMEMO ist leider ein Beispiel dafür.

    Die Webseite Are we OMEMO yet liefert einen Überblick, wie OMEMO aktuell von welchen Jabber Clients unterstützt wird. Der Desktop Client Gajim sowie Conversations (Android) und ChatSecure (iOS) bieten seit längerem Unterstützung für OMEMO.

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 Krypto-Plugins für die OTR- und OMEMO-Verschlüsselung für Gajim sind EXPERIMENTELL. Für das Gajim-OTR Plugin gibt es folgende Warnung:
      There are some bugs that can led to accidently sending plaintext.
      Das OTR-Plugin steht deshalb für Gajim 1.0 nicht mehr zur Verfügung.

      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 OMEMO-Plugin mit "Masterschlüsseln" für die Dienste zum Download anbieten. (Nicht für hohe Sicherheits­anforderungen 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 ist nicht auditiert, TLS v1.2 ist nur teilweise implementiert und außerdem schützt die Implementierung nur teilweise gegen die Lucky13 Attack.)
  3. Für Android empfehlen wir die App Conversations, die OMEMO und OpenPGP beherrscht (leider kein OTR mehr). Für iPhones gibt es ChatSecure.

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