Gajim mit OMEMO-Verschlüsselung

Seit Snowden wissen wir, dass zumindest im Jahr 2012 OTR eine der wenigen Verschlüsselungen war, gegen die selbst die allmächtig scheinende NSA kaum Mittel in der Hand hatte. Von vielen wird es unter anderem deswegen nach wie vor als der Standard zum sicheren Kommunizieren über Jabber / XMPP verwendet. Leider hat OTR design-bedingt ein paar Schwächen. So ist es zum Beispiel nicht möglich, mit mehr als einer Person OTR-verschlüsselt in Chaträumen (MUC) zu kommunizieren. Aus der selben Design-Schwäche heraus ist OTR auch nicht in der Lage, verschlüsselte Nachrichten auf mehrere Geräte (zB. Smartphone & Laptop) eines Users synchron zuzustellen.

Dies will OMEMO lösen. Zu dem Protokoll wurde vor ein paar ein neuer Audit veröffentlicht, der ein durch die Bank positives Fazit gezogen hat. Da mich die Schwächen von OTR ziemlich nerven, habe ich beschlossen mich näher mit OMEMO zu beschäftigen. Ich habe mich vor einer Weile wegen libpurple von Pidgin verabschiedet und nutze seit dem gajim.

Installation / Update von Gajim

Da OMEMO brandneue Software ist wird auch ein relativ neuer Gajim-Unterbau benötigt. Die gute Nachricht: Gajim betreibt ein eigenes PPA in der die neuste Version Ubuntu-unabhängig zur Verfügung gestellt wird.

Zunächst solltet ihr euch dort den aktuellen Schlüssel besorgen, um das PPA bei euch einzubinden. Ladet dazu gajim-dev-keyring_2016.03.29_all.deb herunter und installiert es bei euch auf dem System. Ich nutze dafür gdebi.

Nachdem dieser Schritt getan ist, müsst ihr das PPA zu euren Archiven hinzufügen. Auch hier gibt es verschiedene Wege, dies zu erreichen. Da wir im weiteren Verlauf um das Terminal eh nicht herum kommen, empfehle ich ein beherztes

sudo add-apt-repository 'deb ftp://ftp.gajim.org/debian unstable main'

gefolgt von der Aktualisierung der Paketquellen

sudo apt-get update

und dem Einspielen der Updates, unter denen sich jetzt auch gajim befinden sollte.

sudo apt-get upgrade

Wenn die Installation abgeschlossen ist, dann sollte

dpkg -l gajim

unter Version 0.16.5-1 anzeigen.

Abhängigkeiten erfüllen

Den ersten Teil der Vorraussetzungen zur Nutzung von OMEMO ist damit erfüllt. Nun müssen wir noch ein paar Abhängigkeiten installieren, bevor wir das eigentliche Plugin laden können. Um zu funktionieren braucht das Plugin das Paket python-axolotl, dass je nachdem welche Ubuntu-Version ihr benutzt, nicht als .deb vorliegt.

Unter Ubuntu 16.04 LTS liegen die benötigten Pakete als .deb vor und können so direkt installiert werden:

sudo apt install python-axolotl python-protobuf

Unter Ubuntu 14.04.5 LTS werden wir es über Pythons Installations-Skript PIP installieren. Damit das funktioniert, braucht wiederum python ein paar zusätzliche Pakete:

sudo apt-get install build-essential libssl-dev libffi-dev python-dev

Nun geht es an die Installation von python-axolotl und python-protobuf:

sudo pip install cryptography --upgrade
sudo pip install python-axolotl
sudo pip install protobuf==2.6.1 python-axolotl

Plugin installieren

Jetzt sind tatsächlich alle Vorraussetzungen erfüllt um Gajim um das Plugin OMEMO zu erweitern. Da je nachdem wie viele Konten ihr bei Gajim eingerichtet habt, die Aktivierung des Plugins eine Weile dauern kann, empfehle ich Gajim zunächst aus der Konsole heraus zu starten und um folgende Debug-Ausgabe zu erweitern:

gajim -l gajim.plugin_system.omemo=DEBUG

Über Ändern -> Plugins und die Registerkarte „Available“ könnt ihr das OMEMO-Plugin auswählen und installieren. Nach dem Klick auf „Active“ sollte im im Hintergrund liegenden Terminal-Fenster erste Status-Meldungen einfliegen. Da OMEMO nun eine Menge Schlüssel für eure einzelnen Konten erzeugt, kann dieser Vorgang durchaus einige Minuten dauern. Solange im Terminal neue Status-Meldungen einfliegen, ist alles gut.

Eine entsprechend ausgerüstet Gegenstelle (zB Smartphones mit Conversations) vorausgesetzt, steht der Kommunikation mittels OMEMO jetzt nichts mehr im Wege. Viel Spaß damit.

Danke an @nobse für den Hinweis, der die Installation unter 16.04 deutlich vereinfacht.