Titus Stahl

Sichere Kommunikation mit XMPP und OTR

Update: 21 November 2016 – I now recommend Riot as the best encrypted messenger, as it has similar security to Signal and it is just as decentralized as XMPP.

Update: Ich habe diesen Post im Dezember 2014 geändert und empfehle nun “ChatSecure” unter Android statt “Xabber”, das seit längerem keine Sicherheitsupdates erhalten hat.

Um Direktnachrichten zu versenden bzw. Online-Konversationen zu führen, benutzen die meisten Personen entweder SMS oder Apps wie WhatsApp, Google Hangouts oder Facebook Chat. Viele dieser Apps haben Sicherheitslücken und alle von ihnen haben zwei schwerwiegende Nachteile: Erstens sind die Nachrichten, die darüber verschickt werden, unverschlüsselt und können daher entweder von den Mobilfunkbetreibern (im Fall von SMS) bzw. den Anbietern der entsprechenden Dienste überwacht werden — und damit natürlich immer auch von der NSA oder ähnlich unfreundlichen Organisationen. Zweitens handelt es sich bei den entsprechenden Apps um geschlossene Systeme (sog. “walled gardens”). Das heißt, man kann nur mit denjenigen kommunizieren, die im gleichen System ein Konto haben.

Glücklicherweise gibt es ein alternatives, dezentrales und freies System namens XMPP, das zusammen mit dem OTR-Verschlüsselungsverfahren beide Probleme vermeidet. Im Folgenden wird erklärt, wie man ein XMPP-Konto einrichtet und OTR aktiviert. Wenn man XMPP auch auf dem PC benutzt, kann man darüber hinaus damit sogar telefonieren und Videogespräche führen, also Skype ersetzen.

Die Einrichtung dieses Systems sowohl auf dem Handy und dem PC sollte in maximal 20 Minuten zu erledigen sein. Falls die hier beschriebenen Optionen nicht ausreichen, gibt es auf der Website “PRISM-Break” eine Übersicht über alle Anwendungen, die XMPP bzw. OTR unterstützen.

OTR mit XMPP

Was ist XMPP?

XMPP ist eine Abkürzung für den etwa bürokratischen Namen “Extensible Messaging and Presence Protocol”. Das bezeichnet einen Standard für Direktnachrichten, auf den sich verschiedene Anbieter geeinigt haben, so dass Personen, unabhängig davon, ob sie beim einen oder anderen Anbieter sind, miteinander kommunizieren können. Wie bei E-Mail hat auch bei XMPP jede Person eine Adresse der Form “meinname@anbieter.com”, die sie bei einem beliebigen Anbieter angelegt hat. Wie bei E-Mail (und anders als bei WhatsApp und Co.) kann jede und jeder mit allen anderen Personen, unabhängig von deren Anbieter, kommunizieren. Wie bei E-Mail sind zudem die meisten Konten kostenlos und man kann, wenn man mit einem Anbieter nicht mehr zufrieden ist, einfach zu einem anderen wechseln, ohne dass man all seine Kontakte verliert.

Was ist OTR?

OTR steht für “Off-the-Record” und ist ein Verschlüsselungsverfahren für Direktnachrichten, das für jedes damit verschlüsselte Gespräch folgende vier Eigenschaften garantiert:

  1. Vertraulichkeit: Niemand außer den Teilnehmern kann ein Gespräch mitlesen.
  2. Authentizität: Wenn Teilnehmer ihre OTR-Schlüssel einmal abgeglichen haben (das geht mit dem Handy in 10 Sekunden), wissen sie garantiert, dass sie mit der richtigen Person kommunizieren.
  3. Perfekte Vorwärtsverschlüsselung (engl. “perfect forward secrecy”): Selbst wenn ein Angreifer den Schlüssel einer Person erbeutet (etwa das Handy stiehlt oder Schadsoftware auf dem Computer installiert), kann er die vergangenen Gespräche dieser Person nicht nachträglich entschlüsseln (Das hilft natürlich nur, wenn man nicht Protokolle seiner Chats im Klartext auf dem Handy speichert!).
  4. Abstreitbarkeit: Die Teilnehmer einer Konversation wissen sicher, dass eine Nachricht von der anderen Person stammt, sie können dies aber nicht gegenüber Dritten beweisen, oder in anderen Worten: Man kann jederzeit gegenüber Dritten bestreiten, eine Nachricht versandt zu haben.

Damit hat eine Konversation über OTR genau die gleichen Eigenschaften wie ein unüberwachtes persönliches Gespräch zwischen zwei Personen. Insbesondere durch die beiden letzten Eigenschaften geht OTR über konventionelle Verschlüsselung (etwa mit PGP) hinaus und ist daher im Zweifelsfall vorzuziehen. Zudem kommt hinzu, dass die Benutzung von OTR viel einfacher ist als die von PGP, da der Austausch und die Einrichtung von Verschlüsselung ohne Zutun des Benutzers funktioniert.

Auf Android

Ein XMPP-Konto anlegen

Wer eine E-Mail-Adresse bei Web.de oder GMX hat, hat damit auch bereits ein XMPP-Konto (die XMPP-Adresse ist dann einfach die E-Mail-Adresse und das Passwort ist auch das gleiche).

Wenn man aber eine andere XMPP-Adresse haben will, beschreiben die folgenden Schritte, wie man bei der Suchmaschine “DuckDuckGo” ein kostenloses XMPP-Konto anlegt. Wenn man sowieso alles mit OTR verschlüsselt, ist es aber eigentlich auch egal, ob der Anbieter vertrauenswürdig ist.

  1. Folgenden Link aufrufen: https://duck.co/my/register
  2. Einen beliebigen Benutzernamen und ein beliebiges Passwort angeben. Die Angabe einer E-Mail-Adresse ist freiwillig.
  3. Nach erfolgreichem Abschicken des Formulars gleich wieder ausloggen.

“ChatSecure” installieren

  1. Aus dem Play Store die App “ChatSecure” installieren oder einfach aus dem F-Droid-Store.
  2. Nach Aufruf der App einfach eine der angebotenen Optionen zur Kontohinzufügung nutzen.
  3. Wenn das vorhandene Konto genutzt wird, dann als Benutzernamen “deinsoebengewaehlterbenutzername@dukgo.com” (nicht “duck.co”!) eingeben und als Passwort das vorhin gewählte Passwort. Alle anderen Optionen so lassen. Man kann aber auch einfach direkt aus der App heraus bei einem der vorgeschlagenen Anbieter ein Konto erstellen.
  4. Im Hauptmenü durch “Kontakt hinzufügen” Kontakte hinzufügen.
  5. Kontakte finden sich auch vielleicht mit der Zeit, wenn man seine XMPP-Adresse der eigenen E-Mail-Signatur hinzufügt.
  6. Sobald man eine Verbindung mit einer anderen Person hergestellt hat und diese Person einmal im “echten Leben” trifft, kann man ihre OTR-Signatur verifizieren, indem man (im Chat, über das OTR-Menü) wechselseitig einen QR-Code aufruft und mit dem Handy einscannt. Dies stellt sicher, dass die Verschlüsselung nicht von einem Angreifer attackiert werden kann, der sich unter falscher Identität zwischen beide Konten schaltet.

Auf iOS: ChatSecure

Auf iOS gibt es ebenfalls eine App namens “ChatSecure”, die XMPP und OTR unterstützt und die hoffentlich ähnlich funktioniert.

Auf dem PC: Jitsi

Auf PCs (und Macs) bietet die App “Jitsi” eine gute Unterstützung für XMPP und OTR, für Macs soll angeblich auch “Adium” gut funktionieren. Anders als bei Android muss man hier kein Konto vorab anlegen, sondern kann dies direkt im Zuge der Installation machen.

(Anmerkung: Auch wenn man im Prinzip auf dem Handy und dem PC das gleiche Konto verwenden kann, gibt es im Moment keine zuverlässige Möglichkeit, die OTR-Schlüssel vom einen zum anderen zu übertragen, so dass die Kommunikationspartner bei jedem Wechsel zwischen Handy und PC die Verschlüsselung neu aktivieren müssen. Daher ist es im Moment am einfachsten, auf jedem einzelnen Gerät ein neues Konto zu verwenden.)

  1. Die Anwendung “Jitsi” von https://jitsi.org/ herunterladen und installieren.
  2. Nach dem ersten Start erscheint ein großes Einstellungsfenster, in dem man Accounts angeben kann. Dieses Fenster einfach schließen, ohne etwas auszufüllen.
  3. Im nun erscheinenden Hauptfenster im Menü “Werkzeuge” – “Einstellungen” wählen.
  4. Im Reiter “Konten” “Hinzufügen” wählen.
  5. Als Netzwerk “XMPP” auswählen.
  6. Den Kontrollkasten “Neues XMPP-Konto erstellen” aktivieren (falls man das zuvor erstellte Konto auch hier verwenden will, natürlich nicht).
  7. Benutzername und Passwort eingeben. Wenn man die Voreinstellungen beibehält, ist die resultierende XMPP-Adresse “benutzername@jit.si”.
  8. “Hinzufügen” klicken.
  9. Nun im Einstellungsfenster auf dem Reiter “Sicherheit” im Unterreiter “Chat” das erstellte Benutzerkonto auswählen und über “Neu erstellen” einen OTR-Schlüssel generieren.
  10. Nach Schließen des Einstellungsfensters können nun über das Suchfeld oben neue Adressen dem eigenen Adressbuch hinzugefügt werden.
  11. Beim ersten Gespräch mit einem neuen Kontakt kann im Chat-Menü “Sicheres Gespräch” die Verschlüsselung gestartet werden.
  12. Hier muss man jetzt auch bei Gelegenheit die OTR-Signatur anderer Personen verifizieren — das kann man am besten telefonisch machen.