JUNe/OTR

Aus RWTH Jabber

Wechseln zu: Navigation, Suche
Bild:JUNe-mini.jpg Dieser Artikel wird von den am Jabber University Network beteiligten Universitäten gemeinsam verwendet. Aus diesem Grund ist der Artikel allgemein gehalten und nicht spezifisch für eine bestimmte Universität. Dadurch sparen wir eine Menge Arbeit und können euch insgesamt eine umfangreichere Dokumentation bieten.


Inhaltsverzeichnis


[Bearbeiten] Off-the-Record Messaging

Die OTR-Verschlüsselung ist eine Alternative zu OpenPGP. Es besteht ein grundlegender Unterschied zu OpenPGP im Ansatz: Während bei OpenPGP noch Jahre nachdem die Konversation geführt wurde, zweifelsfrei nachweisbar ist, dass der Gesprächspartner zu einem bestimmten Zeitpunkt eine bestimmte Aussage getätigt hat, sind bei OTR alle Nachrichten im Nachhinein abstreitbar (vgl. unten "Deniability"). OTR versucht damit den Charakter von "informellen Plaudereien", wie sie häufig über Instant Messaging geführt werden nachzubilden. OTR wird mittlerweile sowohl von Adium, mcabber, Kopete und CenterIM nativ unterstützt. Für andere Clients wie Pidgin, Psi, Miranda und Trillian sind Plugins verfügbar.

Bei der OTR-Verschlüsselung werden verschiedene bewährte Verfahren miteinander kombiniert. Verwendet werden beispielsweise das symmetrische Kryptoverfahren AES, der Diffie-Hellman-Schlüsselaustausch, die Hash-Funktion SHA-1 und seit OTR 3.1 auch das Socialist Millionaire Protokoll. [1]

[Bearbeiten] Eigenschaften

  • Verschlüsselung (Encryption): Niemand kann die Nachrichten mitlesen. [2]
  • Beglaubigung (Authentication): Man kann sich sicher sein, dass der Empfänger derjenige ist, für den man ihn hält. [2]
  • Abstreitbarkeit (Deniability): Verschlüsselte Nachrichten enthalten keine elektronische Signatur. Es ist also möglich, dass jemand Nachrichten nach einer Konversation so fälscht, dass sie von einem selbst zu stammen scheinen. Während eines Gespräches kann der Empfänger aber gewiss sein, dass die empfangenen Nachrichten authentisch und unverändert sind. [2]
  • Folgenlosigkeit (Perfect Forward Secrecy): Wenn man seinen privaten Schlüssel verloren hat, so hat dies keine Auswirkung auf die Kompromittierung bisher getätigter Gespräche. [2]
  • OTR ist vom Instant-Messaging Protokoll unabhängig, da nur gewöhnliche Chat-Nachrichten verwendet werden. D.h. die Verschlüsselung funktioniert auch über Transports hinweg, solange nur der andere Client ebenfalls OTR versteht. Dies hat den Nachteil, dass Steuerungsdaten im Chatfenster erscheinen.
  • Ein Client mit OTR Unterstützung kann automatisch erkennen, ob das gegenüber ebenfalls OTR versteht. Dazu wird an die erste Nachricht eine kodierte Zeichenkette aus Leerzeichen und Tabulatoren angehängt.

[Bearbeiten] Funktionsweise

Zunächst einmal hat jeder Nutzer, ähnlich wie bei OpenPGP, einen privaten und einen öffentlichen Schlüssel. Wollen zwei Nutzer miteinander chatten, werden die öffentlichen Schlüssel ausgetauscht. Um sicherzustellen, dass es sich beim Gegenüber auch wirklich um die Person handelt für die sie sich ausgibt, gibt es verschiedene Möglichkeiten:

  1. Vergleich der Fingerprints der öffentlichen Schlüssel über einen sicheren bzw. zumindest anderen Kanal, z.B. Offline oder per Telefon.
  2. Authentifizierung über ein vorher (z.B. Offline) vereinbartes Passwort. Diese Methode wird jedoch noch nicht von jedem Client unterstützt.
  3. Authentifizierung über ein geteiltes Geheimnis (shared-secret). Beide Seite formulieren jeweils eine Frage, die außer der richtigen Person niemand beantworten kann. Hierfür ist kein sicherer Kanal erforderlich. Auch diese Methode wird noch nicht von jedem Client unterstützt.

Durch den korrekten Austausch der öffentlichen Schlüssel wurden nun die Punkte Encryption und Authentication realisiert, die auch bei OpenPGP gegeben sind. Um auch die Punkte Deniability und Perfect Forward Secrecy zu erreichen wird ein Session-Schlüssel eingesetzt. Für jede Chat-Session wird zufällig ein neuer AES Session-Schlüssel erzeugt, der über das Diffie-Hellman-Protokoll und die (durch die öffentlichen Schlüssel) sichere Verbindung ausgetauscht wird. Die eigentliche Kommunikation geschieht dann nur noch mit der schnellen, symmetrischen AES-Verschlüsselung.

Durch die Verwendung des Diffie-Hellman-Protokolls spielt es keine Rolle für bereits gesendete Nachrichten, wenn einer der privaten Schlüssel kompromittiert wird. Auch dann nicht, wenn der Angreifer im Besitz der verschlüsselten Nachrichten ist. Man generiert einfach einen neuen privaten Schlüssel und die Kommunikation ist wieder sicher. Da für die eigentliche Kommunikation nur die AES-Verschlüsselung verwendet wird, erhalten die Nachrichten keine digitale Signatur.

[Bearbeiten] Clients

[Bearbeiten] Pidgin

Es gibt ein offizielles Plugin von den OTR Entwicklern. Linux-Distributoren (z.B. Fedora) bieten das Plugin zum Teil bereits als fertiges Paket an.

[Bearbeiten] Konfiguration

Unter Werkzeuge -> Plugins -> Off-the-Record Messaging kann man das Plugin dann aktivieren und konfigurieren.

Als erstes muss man einen privaten Schlüssel generieren, indem man auf Generieren drückt. Dies kann einige Minuten dauern. Nachdem der Schlüssel erzeugt wurde, kann man die OTR-Verschlüsselung benutzen. Durch einen Haken bei der Option 'Privaten Nachrichtenversand automatisch aktivieren' stellt Pidgin automatisch fest, ob das gegenüber ebenfalls ein OTR-Plugin hat und aktiviert die Verschlüsselung nach der ersten Nachricht.

Bild:pidgin-otr-config.jpg

[Bearbeiten] Psi

Es gibt inzwischen OTR-Plugins für Psi 0.11 bis Psi 0.13. Die Plugins werden wahrscheinlich mit neueren/älteren Versionen von Psi nicht ohne Modifikationen funktionieren. Zudem erfordern die "Plugins" diverse Modifikationen am Psi-Quellcode, sind also nicht ganz so leicht zu installieren.

[Bearbeiten] Installation in Linux (Psi 0.12)

Dem Plugin liegt eine Anleitung bei wie der modifizierte Psi-Quellcode und das Plugin zu compilieren sind. Für jemanden der schon mal eine Linux-Anwendung kompiliert hat, ist die Sache jedoch nicht weiter kompliziert. Beim Psi 0.12 muss man jedoch, nachdem das configure Skript ausgeführt wurde, noch die Datei conf.pri editieren und die folgenden beiden Zeilen am Ende anfügen:

DEFINES += PSI_PLUGINS
CONFIG += psi_plugins

Dann geht es wie gewohnt mit make und make install weiter.

Nachdem man das Plugin kompiliert hat, platziert man die erhaltene Datei libpsi-otr.so im Ordner ~/.psi/plugins oder /usr/local/share/psi/plugins/. Den Ordner plugins muss man ggf. selbst erzeugen.

[Bearbeiten] Konfiguration

Im den Psi-Optionen findet man im Abschnitt Plugins dann schließlich das OTR-Plugin. Ein privater Schlüssel wird automatisch erzeugt, sobald man das erste mal eine verschlüsselte Verbindung aufbaut. Während der Schlüssel erzeugt wird, erscheint ein komisches unbeschriftetes Fenster, welches man einfach ignorieren sollte. Die Schlüsselerzeugung kann einige Minuten dauern. Bild:psi-otr-config.jpg

[Bearbeiten] Bekannte Bugs (Version 0.4)

  • Wenn der Haken bei Automatically start private messaging aktiv ist versucht das Plugin auch in Gruppenchats eine OTR-Verbindung aufzubauen. Dies äußert sich darin, dass jeder (nicht nur der ersten) eigenen Nachricht eine Folge von Leerzeichen angehängt wird. Hier ein Patch für psi-otr-0.4 bzw. psi-0.12 vom 5.9.2008:
(psiaccount.cpp, Zeile 3521 - 2525)
#ifdef PSI_PLUGINS
if (!nm.body().isEmpty() && m.type() != "groupchat") {             // <-- Hier!
nm.setBody(PluginManager::instance()->outgoingMessage(this, nm.to(), nm.body()));
}
#endif
  • Psi unterstützt bisher nur OTR 3.0. Zur Authentifikation steht daher nur die Fingerprint-Methode zur Verfügung. Shared-Secret-Authentifikation wird nicht unterstützt. Eine Unterstützung ist jedoch für die nächste Version geplant.
  • Mehrere Ressourcen werden nicht unterstützt, eine verschlüsselte Kommunikation ist nur zur Ressource mit der höchsten Priorität möglich.
  • Lange Nachrichten mit mehr als 488 Zeichen werden vom OTR-Plugin still unterdrückt. Die Nachricht geht verloren ohne das eine Fehlermeldung erscheint. Hat man die Funktion Automatically start private messaging aktiviert, liegt die Grenze bei einigen Zeichen weniger.

[Bearbeiten] Gajim

Zwischenzeitlich wurde OTR mal von Gajim nativ unterstützt, jedoch schließlich wieder entfernt. Es gibt jedoch einen Gajim-Branch mit OTR-Unterstützung. (ungetestet)

[Bearbeiten] Kopete

Kopete kann möglicherweise OTR via Plugin. (ungetestet)

[Bearbeiten] Quellen

[1] - Wikipedia (EN) - Off-the-Record_Messaging
[2] - Wikipedia (DE) - Off-the-Record_Messaging
Persönliche Werkzeuge