Jabber verschlüsseln mit OpenPGP und OTR

Wer eine sichere Kommunikation benötigt muss dafür nicht zwangsläufig verschlüsselte e-Mails verwenden. Auch das freie IM-Protokoll Jabber bietet die Möglichkeit den Datenstrom zu verschlüsseln. Dabei wird zwischen den beiden Kommunikationspartnern verschlüsselt (End-to-End), was bedeutet, dass selbst der Administrator des Jabberservers keine Möglichkeit hat die Unterhaltung zu belauschen. Einem privaten Gespräch mit der Freundin steht also nichts mehr im Wege.

Warum End-to-End verschlüsseln, wenn man sowieso eine verschlüsselte Verbindung zum Server herstellt (SSL/TLS)? Zum einen ist nicht bei allen Jabberservern SSL verfügbar und selbst wenn man sich selbst via SSL zu seinem Server verbindet, kann der Partner sich unverschlüsselt zum Server verbinden. Das bedeutet, die SSL-Verschlüsselung endet spätestens beim eigenen Server, danach kann der Datenstrom unverschlüsselt weitergeleitet werden. Zum anderen unterliegt diese Form der Verschlüsselung dem Einfluss des Admins. Es ist also möglich, dass der Admin am Ende den Datenstrom abfängt und mitliest. Die End-to-End Verschlüsselung setzt direkt bei den Clients der beiden Partner an und verschlüsselt dort die Daten - der Admin kann nicht mehr mitlesen.

Es gibt heutzutage zwei Varianten, wie man seine Jabberkommunikation zuverlässig verschlüsseln kann: OpenPGP und OTR.

OpenPGP

Die Verschlüsselung mit GPG-Schlüsseln ist die "klassische" Variante. Man verwendet hier, genau wie bei E-Mails, den öffentlichen Schlüssel seines Gegenüber, um die Nachricht an ihn zu verschlüsseln. Dieser kann die Nachricht dann mit seinem privaten Schlüssel wieder lesbar machen.

Die Vorteile von OpenPGP:

  • Ein Großteil der verfügbaren IM-Clients beherrscht die Verschlüsselung via OpenPGP. Wenn man seine Kommunikation verschlüsseln möchte, kann man in den meisten Fällen bei seinem Lieblingsclient bleiben.
  • Die Verschlüsselung mit OpenPGP wird schon sehr lange bei E-Mails praktiziert und ist dadurch schon sehr ausgereift. Man kann sich darauf verlassen, dass die Kommunikation tatsächlich sicher ist. Es ist eher unwahrscheinlich, dass sich im PGP-Algorhytmus noch kritische Schwachstellen befinden.

Die Nachteile:

  • Um mit OpenPGP vertrauenswürdig kommunizieren zu können, muss man dessen Funktionsweise verstanden haben.
  • Es muss ein neuer Schlüssel erstellt und mit dem Gegenüber ausgetauscht werden.
  • Man muss für den Schlüssel ein sicheres Passwort festlegen, sich merken und zu Anfang jeder Kommunikation eingeben.
  • Da sich die Schlüssel in den meisten Fällen über längere Zeit nicht ändern, lässt sich über die gesamte Lebensdauer des Schlüssels die Kommunikation im nachhinein öffnen. D.h., wenn es einem Angreifer gelingt einen der beiden privaten Schlüssel zu kompromitieren, kann er nicht nur zukünftige Nachrichten mitlesen, er kann auch alle Nachrichten in der Vergangenheit lesen, was ein entscheidender Nachteil  für OpenPGP ist.
  • Durch eine Signatur kann später zweifelsfrei nachgewiesen werden, dass eine Nachricht von einem bestimmten Nutzer kam. Dies mag bei der E-Mailkommunikation erwünscht sein, aber bei IM kann dies von Nachteil sein.

Die ersten beiden Argumente mögen für den fortgeschrittenen Anwender erstmal nicht so stark wiegen, aber ich persönlich habe festgestellt, dass sich Personen mit GPG etwas schwer tun, wenn sie noch nie damit zu tun hatten. Dies erhöht auch die Hemmschwelle eine solche Technik einzusetzen und dauerhaft zu benutzen. Und wer hat nicht einige Kontakte der Kategorie "ich möchte das einfach nur benutzen" in seinem Roaster?

OpenPGP verwenden

Da ich derzeit Kopete benutze, hier eine kurze Anleitung, wie man den Client für OpenPGP-Verschlüsselung einrichtet. Die Vorgehensweise ist aber bei den meisten anderen Clients ähnlich.

  1. Einen neuen Schlüssel erstellen. Statt einer E-Mailadresse wird die Jabber ID eigegeben. Es gibt die Möglichkeit einen Kommentar oder Beschreibung einzugeben. Hier sollte man angeben, dass es sich um einen Schlüssel für eine Jabber ID handelt, damit es keine Verwechslungen gibt.
  2. Schlüssel austauschen. Auf einen Schlüsselserver hochladen, auf der eigenen Webseite/Blog veröffentlichen, dem Gegenüber zuschicken oder persönlich übergeben. Den öffentlichen Schlüssel des Kommunikationspartners in den Schlüsselbund importieren.
  3. Modul aktivieren und privaten Schlüssel angeben. Über Einstellungen -> Module einrichten ... den Dialog für die Modulkonfiguration aufrufen und "Kryptographie" aktivieren. Danach den privaten Schlüssel angeben.
    Modul "Kryptographie" Konfiguration des Kryptographie Moduls
  4. Nun den öffentlichen Schlüssel des Gegenüber einrichten. Dazu mit einem Rechtsklick auf den Nick das Kontextmenü öffnen und den Menüpunkt "Öffentlichen Schlüssel auswählen...".
    "Öffentlichen Schlüssel auswählen"
  5. Verschlüsselung starten. Im Nachrichtenfenster Extras -> Nachrichten verschlüsseln auswählen. Man kann nun verschlüsselt kommunizieren.

OTR

OTR bzw Off-The-Record-Messaging ist eine relativ neue Methode die Kommunikation von IM zu verschlüsseln. Sie wurde spezielle für die Anforderungen von IM entwickelt und kombiniert verschiedene kryptografische Verfahren (AES, Diffie-Hellman-Schlüsseltausch, SHA-1).

Die Vorteile von OTR:

  • Die Verwendung ist sehr viel einfacher als bei OpenPGP. Man muss weder die Funktionsweise verstehen, noch irgendwelche Schlüssel selbst austauschen oder sich um die Sicherheit von Passwörtern Gedanken machen.
  • Die Schlüssel werden automatisch ständig gewechselt. Wird ein Schlüssel kompromittiert kann nicht der gesamte Nachrichtenbestand von Monaten gelesen werden.
  • OTR bietet deniability, d.h. es kann später nicht mehr nachgewiesen werden, dass eine Person bestimmte Aussagen gemacht hat. Während der Kommunikation kann man sich dagegen sicher sein, dass man mit der richtigen Person spricht.

Die Nachteile von OTR:

  • OTR ist noch nicht so weit verbreitet wie OpenPGP. Die großen Clients haben mittlerweile eine native Unterstützung, wer aber lieber ein anders Programm benutzt (bspw. Gajim) wird OTR nicht nutzen können.

Plugin für Kopete installieren

Für Kubuntu 7.04 gibt es ein Paket auf kde-apps.org, wer jetzt schon 7.10 benutzt kann aus dem universe das Paket kopete-otr installieren.

OTR benutzen

  1. Modul aktivieren. Über Einstellungen -> Module einrichten... in den Dialog für die Modulkonfiguration und dort "OTR" aktivieren.
  2. Schlüssel erstellen. Im Auswahlmenü das entsprechende Jabberkonto auswählen und den Button "Erzeugen" klicken.
    Konfigurationsdialog für OTR
    Schlüssel wird erzeugt
  3. OTR Sitzung starten. Im Nachrichtenfenster Extras -> OTR Verschlüsselung -> OTR Sitzung starten auswählen. Wird zum ersten Mal eine OTR Sitzung mit dem Gegenüber initiert, muss man den entsprechenden Fingerprint bestätigen. Bei Bekannten, kann man den Fingerprint bspw. durch einen Telefonanruf verifizieren, wo man sich den Fingerprint vorlesen lässt.
    OTR Sitzung starten
    Fingerabdruck überprüfen

Fertig. Ab sofort kommuniziert man verschlüsselt. Beim nächsten mal reicht es aus, einfach die OTR Sitzung zu starten. Das ist für mich das schöne an OTR: Es ist einfach und unkompliziert zu bedienen. Selbst Tante Emma bekommt so 'ne verschlüsselte Sitzung hin.

Deshalb hier analog zu den E-Mails der Hinweis: Benutzt bitte OTR! Die Fingerprints meiner Schlüssel sind auf der GPG-Seite aufgelistet.

P.S.: Aus den Kommentaren noch der Hinweis: Die beiden Kryptoverfahren kann man natürlich (bei freien Clients) auch für ICQ/AIM, MSN, usw. benutzen - wobei man ICQ & Co. nicht wirklich benutzen will, ehrlich. 

Trackback URL für diesen Eintrag:

http://www.seqfault.de/de/trackback/28

Danke für den Tipp mit OTR!

Na hoffentlich findet der Schlüsselaustausch nicht via Jabber statt, sonst ließt der Admin nämlich trotzdem alles mit, wenn er will.

Ich praktiziere das verschlüsselte "Messaging" mit einem Freund schon länger, nur ist mir (uns) erst vor kurzem aufgefallen, dass zwar die ausgehenden Nachrichten verschlüsselt werden, jedoch im Klartext ins Log-File geschrieben werden.

Das wäre noch ein nettes "Feature", wenn die Logfiles auch verschlüsselt wären...

Greetz,
Bel

Tja eben nicht. Der Admin eines Jabbersers hat die Möglichkeit Datenpakete zu manipulieren und somit ist Diffie Hellman anfällig für Man in the middle Attacken.

Sicher ist der Mechanismus nur, wenn du die Nachricht signierst, nur da sind wir beim Henne Ei Problem, wie willst du signieren, wenn du und dein Gegenüber keine Schlüssel ausgetauscht haben?

Kannst ja mal im Wikipedia danach suchen und dir dort anschauen wie es funktioniert.

Leider wird nie auf die Gefahr und Problematik beim Schlüsseltausch eingegangen.

Schöner Beitrag der wunderbar die Vor- und Nachteile aufzeigt.

Das einzige was mir fehlt ist ein hinweiß das sich die Verschlüsselungen nicht nur auf Jabber beschränkt sondern allgemein für alle Messaging Protokolle geeignet ist. Also auch ICQ und der ganze andere Mist. Wäre vielleicht noch wichtig zu erwähnen.

Spricht eigentlich technisch was dagegen beide Verfahren zu nutzen? Also mit den Leuten die OTR haben eben OTR, mit den GPG Leuten eben GPG und wenn jemand beides hat eben auch beides. Ist das möglich?

Ich nutze ja oPGP/GPG zum verschlüsseln, mit OTR hab ich mich einfach noch zu wenig beschäftigt um es zu nutzen...

Sind denn beide Verfahren kostenlos?

X: Ja, beide sind kostenlos. - Zudem auch noch frei ;)

Hab noch ne Frage:
Sind die Verschlüsselungen, besonders OTR, sehr kompliziert?

Gerade OTR scheint besonders einfach zu sein. - Allerdings nicht ganz so nahtlos wie ohne Verschlüsselung.

Beim Programm Kopete ist mir fragwürdig aufgefallen, dass die Frage nach "Wollen sie diesen Schlüssel akzeptieren ?" leider die gesammte Kommunikation geblockt hat... - Ich konnte beim Gegenüber gar nicht nachfragen, ob der Schlüssel nun "echt" sei... :( Kleine Panne im System scheinbar... - Hätte ja gereicht, wenn ich eben "bescheid" sagen kann, dass ich den Schlüssel gern per Mail zugesand haben möchte...)

Da eine Version von kopete-otr für Debian lenny nicht aufzutreiben war habe ich eine erstellt. Das ganze gibts unter http://blog.gauner.org/2007/12/05/kopete-otr-for-debian-lenny/.

Verständnissproblem zu OpenPGP:
>>2.Schlüssel austauschen. Auf einen Schlüsselserver hochladen, auf der eigenen Webseite/Blog veröffentlichen, dem Gegenüber zuschicken oder persönlich übergeben. Den öffentlichen Schlüssel des Kommunikationspartners in den Schlüsselbund importieren.<<

Wenn er auf einer Webseite oder sonstwo (unverschlüsselte email...) veröffentlicht wird, wo ist dann der Sinn am Schlüssel?

Doch natürlich. Das ist der Punkt mit dem Diffie-Hellman-Schlüsselaustausch. Mit diesem Verfahren kann man seine Schlüssel auch über unsichere Kanäle austauschen ohne dass die Sicherheit der Schlüssel kompromittiert werden kann.
Das Einzige, was zuverlässig verifiziert werden muss ist der Fingerprint.

Gut, die Logfiles werden vom Client erstellt und lokal auf der Festplatte abgespeichert - stellen in diesem Kontext also noch kein Sicherheitsrisiko da. Bei Verschlüsselung via OpenPGP sind die Nachrichten auch in den Logs AFAIK verschlüsselt, da bin ich mir aber nicht sicher.
Die Verschlüsselung von Logs ist bei OTR zudem problematisch. Wie gesagt werden die Schlüssel ständig geändert. Die Nachrichten, die heute also verschlüsselt ins Log geschrieben werden, können morgen nicht mehr gelesen werden.

Wenn man hier mehr Sicherheit braucht könnte man entweder das Loggen abschalten oder die Logfiles in eine verschlüsselte Containerdatei schreiben lassen (Stichwort: Truecrypt, Cryptsetup/LUKS), sofern man nicht sowieso schon eine vollverschlüsselte Festplatte hat.

> Tja eben nicht. Der Admin eines Jabbersers hat die Möglichkeit Datenpakete zu manipulieren und somit ist Diffie Hellman anfällig für Man in the middle Attacken. <

Da hast du Recht. Diffie Hellman allein ist durch eine Man-in-the-Middle Attacke angreifbar, aber ich glaube du hast da was übersehen ...

> Sicher ist der Mechanismus nur, wenn du die Nachricht signierst, nur da sind wir beim Henne Ei Problem, wie willst du signieren, wenn du und dein Gegenüber keine Schlüssel ausgetauscht haben? <

Message Authentication Codes vergessen? OTR verwendet MACs, um die Integrität von Nachrichten sicherzustellen, womit MITM-Attacken ins Leere laufen.

> Leider wird nie auf die Gefahr und Problematik beim Schlüsseltausch eingegangen. <

Der Schlüsseltausch ist bei asymmetischen Kryptoverfahren unproblematisch, wenn man die Korrektheit des Schlüssels anhand des Fingerprints verifizieren kann.

> Wäre vielleicht noch wichtig zu erwähnen. <
Du hast recht. Danke für den Hinweis, ich habe es in den Text aufgenommen.

> Spricht eigentlich technisch was dagegen beide Verfahren zu nutzen? <
Nein, dagegen spricht nichts. Man kann Kopete mit Sicherheit auch so einrichten, dass er bei den OTR-Kontakten automatisch OTR verwendet.

> [...] und wenn jemand beides hat eben auch beides. <
Ich würde, wenn ich die Wahl zwischen OTR und oPGP hätte, eher OTR nehmen, da es für IM einfach besser geeignet ist.

> Sind die Verschlüsselungen, besonders OTR, sehr kompliziert? <
Inwiefern kompliziert? Wenn du die Bedienung meinst, da ist OTR relativ einfach zu benutzen (s. o.). Einen Schlüssel generieren, Fingerprint austauschen und OTR-Sitzung starten.