Off-the-Record

Aus Cowboy's Wiki
Wechseln zu: Navigation, Suche
Off-the-Record
600X WIKIPEDIA LOGO.svgEntwickler Das OTR-Team
Aktuelle 600X WIKIPEDIA LOGO.svgVersion 4.0.0-1
(9. September 2012)
600X WIKIPEDIA LOGO.svgBetriebssystem 600X WIKIPEDIA LOGO.svgMicrosoft Windows, 600X WIKIPEDIA LOGO.svgLinux, 600X WIKIPEDIA LOGO.svgFreeBSD, 600X WIKIPEDIA LOGO.svgOpenBSD, 600X WIKIPEDIA LOGO.svgNetBSD, 600X WIKIPEDIA LOGO.svgMac OS X
600X WIKIPEDIA LOGO.svgProgrammier­sprache Java(java-otr) bzw. C(libotr)
Kategorie Plugin
Lizenz 600X WIKIPEDIA LOGO.svgLGPL/600X WIKIPEDIA LOGO.svgGPL (600X WIKIPEDIA LOGO.svgFreie Software)
600X WIKIPEDIA LOGO.svgDeutschsprachig ja
otr.cypherpunks.ca/

Off-the-Record Messaging (zu deutsch: inoffizielle; vertrauliche, nicht für die Öffentlichkeit bestimmte Nachrichtenvermittlung) ist ein 600X WIKIPEDIA LOGO.svgProtokoll zur Nachrichten-Verschlüsselung von 600X WIKIPEDIA LOGO.svgInstant Messaging. Im Gegensatz zur Übertragung der 600X WIKIPEDIA LOGO.svgverschlüsselten Nachrichten mittels 600X WIKIPEDIA LOGO.svgOpenPGP (oder in seltenen Fällen auch mittels 600X WIKIPEDIA LOGO.svgX.509-Zertifikat) kann man beim Off-the-Record Messaging später nicht mehr feststellen, ob ein bestimmter 600X WIKIPEDIA LOGO.svgSchlüssel von einer bestimmten Person genutzt wurde (deniability; Prinzip der 600X WIKIPEDIA LOGO.svgAbstreitbarkeit). Dadurch lässt sich nach Beenden der Unterhaltung von niemandem (auch keinem der beiden Kommunikationspartner) beweisen, dass einer der Kommunikationspartner eine bestimmte Aussage gemacht hat.

Umgesetzt wird dieses Prinzip durch kombinierte Verwendung des 600X WIKIPEDIA LOGO.svgsymmetrischen Kryptoverfahrens 600X WIKIPEDIA LOGO.svgAES, des 600X WIKIPEDIA LOGO.svgDiffie-Hellman-Schlüsselaustauschs und der 600X WIKIPEDIA LOGO.svgHashfunktion 600X WIKIPEDIA LOGO.svgSHA-1. Die beiden Entwickler, Ian Goldberg und Nikita Borisov, stellen eine 600X WIKIPEDIA LOGO.svgBibliothek, ein Plugin für 600X WIKIPEDIA LOGO.svgPidgin sowie einen OTR-600X WIKIPEDIA LOGO.svgAIM-Proxy zur Verfügung. Die Bibliothek ist unter der 600X WIKIPEDIA LOGO.svgLGPL lizenziert. Das mit der Bibliothek mitgelieferte Toolkit um Nachrichten zu fälschen, das Pidgin-Plugin und die 600X WIKIPEDIA LOGO.svgProxy-Software sind dagegen unter der 600X WIKIPEDIA LOGO.svgGPL lizenziert.

Ziele des Projektes

In den Statuten des Projektes sind die folgenden vier Eckpfeiler definiert:

Verschlüsselung (Encryption)
Niemand kann die Nachrichten mitlesen.
Beglaubigung (Authentication)
Man kann sich sicher sein, dass der Empfänger derjenige ist, für den man ihn hält.
Abstreitbarkeit (Deniability)
Verschlüsselte Nachrichten enthalten keine 600X WIKIPEDIA LOGO.svgelektronische 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.
Folgenlosigkeit (600X WIKIPEDIA LOGO.svgPerfect Forward Secrecy)
Wenn man seinen langlebigen privaten Schlüssel verloren hat, so hat dies keine Auswirkung auf die Kompromittierung bisher getätigter Gespräche.

Technische Umsetzung

Der folgende Abschnitt stellt vereinfacht die Funktion des OTR-600X WIKIPEDIA LOGO.svgProtokolls in Version 2[1] dar.

Überblick

Während ihrer Kommunikation miteinander wählen 600X WIKIPEDIA LOGO.svgAlice und Bob 600X WIKIPEDIA LOGO.svgprivate Schlüssel LaTeX: x_1, x_2, \ldots beziehungsweise LaTeX: y_1, y_2, \ldots. Jeweils zwei, z. B. LaTeX: x_i und LaTeX: y_j, werden zur Erzeugung eines gemeinsamen Geheimnisses LaTeX: s mittels des 600X WIKIPEDIA LOGO.svgDiffie-Hellman-Schlüsselaustauschs verwendet. Aus diesem Geheimnis LaTeX: s werden die Schlüssel LaTeX: K_{AES} und LaTeX: K_{MAC} berechnet.

LaTeX: K_{AES} dient zur Verschlüsselung jeder Nachricht mittels 600X WIKIPEDIA LOGO.svgAdvanced Encryption Standard (AES) im 600X WIKIPEDIA LOGO.svgCounter Mode. Dadurch wird die 600X WIKIPEDIA LOGO.svgsymmetrische 600X WIKIPEDIA LOGO.svgBlockchiffre AES zur 600X WIKIPEDIA LOGO.svgStromchiffre. Zur anfänglichen 600X WIKIPEDIA LOGO.svgAuthentifizierung verwenden Alice und Bob 600X WIKIPEDIA LOGO.svgdigitale Signaturen, wodurch sie sich während der Unterhaltung sicher sein können, mit wem sie kommunizieren. LaTeX: K_{MAC} dient zur Authentifizierung einer einzelnen Nachricht mittels der 600X WIKIPEDIA LOGO.svgHashfunktion SHA-1 (600X WIKIPEDIA LOGO.svgSecure Hash Algorithm), welche als 600X WIKIPEDIA LOGO.svgMessage Authentication Code (MAC) verwendet wird.

Beim Senden von Nachrichten werden neue private Schlüssel LaTeX: x_{i+1} bzw. LaTeX: y_{j+1} und die dazugehörigen AES- und MAC-Schlüssel erzeugt. Die nicht mehr verwendeten privaten Schlüssel werden gelöscht, damit Alice nicht mehr mit ihren Nachrichten in Verbindung gebracht werden kann. Dies führt aber auch dazu, dass Alice nachträglich weder ihre eigenen noch die Nachrichten von Bob lesen kann. Zudem werden nicht mehr verwendete MAC-Schlüssel veröffentlicht, so dass jede andere Person die Nachrichten von Alice hätte signieren können.

Für den Diffie-Hellman-Schlüsselaustausch werden eine 1536 Bit 600X WIKIPEDIA LOGO.svgPrimzahl LaTeX: p und eine 600X WIKIPEDIA LOGO.svgPrimitivwurzel LaTeX: g 600X WIKIPEDIA LOGO.svgmodulo LaTeX: p mit LaTeX: 2 \le g \le p-2 benötigt. Alle Exponentiationen erfolgen dann modulo dieser Primzahl.

Initialisierung

Zu Beginn eines Gesprächs müssen initiale Schlüssel ausgetauscht werden und die Authentizität der Gesprächsteilnehmer überprüft werden, d. h. Alice und Bob müssen sich jeweils sicher sein, mit wem sie kommunizieren. Dies verhindert, dass Alice beispielsweise anstatt mit Bob mit der Angreiferin 600X WIKIPEDIA LOGO.svgEve einen Schlüsselaustausch durchführt. Der ganze Vorgang wird Authenticated Key Exchange (AKE) genannt und mit dem SIGMA-Protokoll[1] umgesetzt:

  1. Alice und Bob wählen private Schlüssel LaTeX: x_1 respektive LaTeX: y_1 (min. 320 600X WIKIPEDIA LOGO.svgBit lang), tauschen die dazugehörigen 600X WIKIPEDIA LOGO.svgöffentlichen Schlüssel LaTeX: g^{x_1} bzw. LaTeX: g^{y_1} aus und erhalten durch das 600X WIKIPEDIA LOGO.svgDiffie-Hellman-Verfahren ein gemeinsames Geheimnis LaTeX: s = \left ( g^{x_1} \right )^{y_1} = \left ( g^{y_1} \right )^{x_1} = g^{x_1 \cdot y_1}.
  2. Mittels LaTeX: s kann nun ein sicherer Kanal geschaffen werden, über diesen sich jeder Kommunikationsteilnehmer mit Hilfe einer 600X WIKIPEDIA LOGO.svgdigitalen Signatur gegenüber dem anderen authentifiziert. Derzeit unterstützt OTR nur den 600X WIKIPEDIA LOGO.svgDigital Signature Algorithm.

Zwischendurch wird die Verbindung möglichst immer mit AES verschlüsselt und einzelne Nachrichten mittels 600X WIKIPEDIA LOGO.svgSHA256-600X WIKIPEDIA LOGO.svgHMAC authentifiziert.

Senden einer Nachricht

Angenommen, Alice möchte an Bob die Nachricht LaTeX: M schicken. Sie führt dabei folgende Schritte aus:

  1. Alice wählt ihren letzten von Bob empfangenen Diffie-Hellman-Schlüssel LaTeX: x_i. Dabei gilt der Schlüssel von Bob als empfangen, wenn dieser LaTeX: g^{x_i} für eine Nachricht verwendet hat, die Alice empfangen hat oder LaTeX: g^{x_i} zuvor mittels AKE (siehe Abschnitt zuvor) ausgetauscht wurde, was offensichtlich nur im Fall LaTeX: i=1 sein kann.
  2. Falls LaTeX: x_i Alices neuester Diffie-Hellman-Schlüssel ist, erzeugt sie zufällig einen neuen Schlüssel LaTeX: x_{i+1} von mindestens 320 Bit Länge.
  3. Sei LaTeX: g^{y_j} der letzte empfangene Diffie-Hellman-Schlüssel von Bob. Als empfangen gilt hier der Schlüssel wieder, wenn Bob diesen der letzten Nachricht beigefügt hat (siehe weiter unten) oder er mittels AKE ausgetauscht wurde.
  4. Das gemeinsam geteilte Diffie-Hellman-Geheimnis kann nun (modulo LaTeX: p) als LaTeX: s := \left ( g^{y_j} \right )^{x_i} berechnet werden.
  5. Berechne den AES-Schlüssel LaTeX: K_{AES} := H(s), wobei LaTeX: H(s) die ersten 128 Bit des 600X WIKIPEDIA LOGO.svgSHA-1-Hashwerts von LaTeX: s bezeichnet. LaTeX: s wurde zuvor in ein bestimmtes Datenformat gebracht und um ein 600X WIKIPEDIA LOGO.svgByte erweitert.
  6. Berechne den MAC-Schlüssel LaTeX: K_{MAC} als den 160 Bit SHA-1-Hashwert von LaTeX: K_{AES}.
  7. Für den später verwendeten 600X WIKIPEDIA LOGO.svgCounter Mode wird ein Zähler LaTeX: c benötigt, der so gewählt wird, dass das 600X WIKIPEDIA LOGO.svgTripel LaTeX: (i,j,c) nie doppelt während des gesamten Nachrichtenaustauschs mit Bob vorkommt.
  8. Die Nachricht LaTeX: M wird nun mithilfe des 600X WIKIPEDIA LOGO.svgAES-Algorithmus in 600X WIKIPEDIA LOGO.svgCounter Mode verschlüsselt. Als Schlüssel dienen dazu LaTeX: K_{AES} und der eben gewählte Zähler LaTeX: c. Die so verschlüsselte Nachricht heiße LaTeX: N.
  9. Die verschlüsselte Nachricht LaTeX: N, LaTeX: i, j, c, LaTeX: g^{x_{i+1}} und einige kryptographisch unwichtige Teile wie die Versionsnummer des Protokolls werden zu LaTeX: T zusammengefasst und davon der 600X WIKIPEDIA LOGO.svgMessage Authentication Code LaTeX: MAC_{K_{MAC}}(T) unter Verwendung des Schlüssels LaTeX: K_{MAC} berechnet. Hierbei bezeichne LaTeX: MAC_{K_{MAC}} den 600X WIKIPEDIA LOGO.svgKeyed-Hash Message Authentication Code (HMAC) unter Verwendung der Hashfunktion 600X WIKIPEDIA LOGO.svgSHA-1 und dem Schlüssel LaTeX: K_{MAC}.
  10. LaTeX: T, MAC_{K_{MAC}}(T) und alle nicht mehr verwendeten MAC-Schlüssel werden an Bob über einen unsicheren Kanal geschickt.

Empfangen einer Nachricht

Bob empfängt die weiter oben erzeugten Daten von Alice und führt folgende Schritte durch:

  1. Bob hat entweder LaTeX: g^{x_i} bereits durch eine alte Nachricht von Alice oder per AKE erhalten. Dadurch kann er dasselbe Diffie-Hellman-Geheimnis durch LaTeX: s := \left ( g^{x_i} \right )^{y_j} = g^{x_i \cdot y_j} = \left ( g^{y_j} \right )^{x_i} berechnen, wobei LaTeX: i und LaTeX: j die in LaTeX: T enthaltenen Indizes bezeichnen.
  2. Ebenso kann er wie Alice LaTeX: K_{AES} und LaTeX: K_{MAC} berechnen.
  3. Mithilfe von LaTeX: K_{MAC} berechnet er LaTeX: MAC_{K_{MAC}}(T) und vergleicht den erhaltenen Wert mit dem von Alice übermittelten. Dadurch ist die 600X WIKIPEDIA LOGO.svgAuthentizität der Nachricht geprüft und gegen einen 600X WIKIPEDIA LOGO.svgMan-in-the-middle-Angriff geschützt.
  4. Mithilfe von LaTeX: K_{AES} und LaTeX: c, welches in dem durch Alice versandten LaTeX: T enthalten ist, entschlüsselt er die Nachricht LaTeX: N mit dem 600X WIKIPEDIA LOGO.svgAES-Algorithmus in 600X WIKIPEDIA LOGO.svgCounter Mode und erhält LaTeX: M zurück. Dies funktioniert, da AES symmetrisch ist, also zum Ver- und Entschlüsseln denselben Schlüssel LaTeX: (K_{AES},c) verwendet.

Überprüfung der Ziele

Verschlüsselung (Encryption)
Das verwendete Kryptosystem 600X WIKIPEDIA LOGO.svgAES wurde eingehenden 600X WIKIPEDIA LOGO.svgkryptoanalytischen Prüfungen unterzogen und gilt als praktisch berechnungssicher.
Beglaubigung (Authentication)
Mittels AKE und 600X WIKIPEDIA LOGO.svgdigitalen Signaturen kann sich Bob (auch zu einem späteren Zeitpunkt) sicher sein, dass Alice den öffentlichen Schlüssel LaTeX: g^{x_1} gewählt hat. Da mithilfe dieses Schlüssels die nächste Nachricht und damit auch der nächste Schlüssel LaTeX: g^{x_2} signiert wird, kann sich Bob auch bei allen darauf folgenden Nachrichten der Identität seines Gesprächspartners sicher sein.
Abstreitbarkeit (Deniability)
Alice verwendet ihre 600X WIKIPEDIA LOGO.svgdigitale Signatur nur zu Beginn des Gesprächs. Alle nachfolgenden Nachrichten werden mit den MAC-Schlüsseln LaTeX: K_{MAC} signiert. Da zum Erzeugen der MAC-Schlüssel das gemeinsame Geheimnis LaTeX: s benötigt wird, kann sich Bob sicher sein, dass Alice die Nachricht signiert hat. Jedoch kann er dies niemand anderem beweisen, da genauso er die Nachricht hätte signieren können. Hinzu kommt, dass durch die Veröffentlichung nicht mehr verwendeter MAC-Schlüssel niemand mehr die Authentizität der Nachrichten überprüfen kann, da jeder sie hätte signieren können. Nur Bob kann sich sicher sein, dass Alice die Nachricht geschickt hat, da zum Zeitpunkt des Empfangs nur sie beide den dazugehörigen MAC-Schlüssel kennen. Durch die Verwendung einer digitalen Signatur zum Beginn des Gesprächs kann jedoch niemand abstreiten, dass ein Gespräch stattgefunden hat.
Folgenlosigkeit (600X WIKIPEDIA LOGO.svgPerfect Forward Secrecy)
Verliert Alice ihren langlebigen privaten Schlüssel, so kann daraus keiner der kurzlebigen privaten Schlüssel LaTeX: x_1, x_2, \ldots hergeleitet werden, da diese nie veröffentlicht und kurz nach ihrer Verwendung gelöscht wurden. Da nur diese kurzlebigen privaten Schlüssel zum Verschlüsseln und Signieren der Nachrichten verwendet wurden, ist trotz des Verlusts des langlebigen privaten Schlüssels das Gespräch nicht kompromittiert worden.

Ein weiteres Sicherheitskonzept ist die Fälschbarkeit. Durch die zur Verschlüsselung verwendete 600X WIKIPEDIA LOGO.svgStromchiffre (AES im Counter Mode), bei der der 600X WIKIPEDIA LOGO.svgKlartext einfach mit einem 600X WIKIPEDIA LOGO.svgXOR verknüpft wird, um den 600X WIKIPEDIA LOGO.svgGeheimtext zu erhalten, kann bei erfolgreichem Erraten eines Teils des Klartexts der Angreifer den Geheimtext so modifizieren, dass dieser Teil sich zu einem beliebigen Text entschlüsselt. Dies verringert nicht die Sicherheit, da Bob sich durch das Signieren der Nachricht mit dem MAC-Schlüssel sicher sein kann, dass die verfälschte Nachricht nicht von Alice stammt. Im Nachhinein kann aber der Angreifer diese Nachricht signieren, da der zugehörige MAC-Schlüssel veröffentlicht wurde. So wird erschwert, dass Alice durch den Inhalt einer Nachricht mit ihr in Verbindung gebracht werden kann, da nachträglich die Nachricht für jeden signierbar und beschränkt modifizierbar ist.

Kryptoanalyse

Eine computergestützte 600X WIKIPEDIA LOGO.svgKryptoanalyse des Protokolls in der Version 2 wurde von der 600X WIKIPEDIA LOGO.svgStanford University durchgeführt[2], wobei mehrere Schwachstellen entdeckt wurden: Durch einen 600X WIKIPEDIA LOGO.svgMan-in-the-middle-Angriff ist es möglich, auf eine ältere Version des Protokolls (z. B. Version 1) zu wechseln, um so dessen Schwachstellen auszunutzen. Weiterhin ist die Abstreitbarkeit im starken Sinne, d. h. dass jeder eine Nachricht hätte signieren können, bei einem Angreifer mit vollständiger Kontrolle über das Netzwerk nicht mehr gegeben. Dieser kann die veröffentlichen MAC-Schlüssel durch zufällige Daten ersetzen, wodurch es anderen nicht mehr möglich ist, mit diesen Schlüsseln Nachrichten gültig zu signieren. Zudem haben die Autoren einen Angriff bei der Authentifizierung im AKE gefunden, der jedoch entdeckt werden kann und keine weitreichenden Folgen nach sich zieht.

Verfügbarkeit

Native Unterstützung

Die folgenden 600X WIKIPEDIA LOGO.svgClients unterstützen Off-the-Record Messaging nativ. Das schließt ein, dass man mit ihnen OTR mit allen implementierten Instant-Messaging-Protokollen verwenden kann (z. B. 600X WIKIPEDIA LOGO.svgOSCAR, 600X WIKIPEDIA LOGO.svgXMPP, 600X WIKIPEDIA LOGO.svgMSN und 600X WIKIPEDIA LOGO.svgYIM). Eine weitere Liste mit Programmen findet sich auf der Webseite der Entwickler.

Fester Bestandteil

Plugin

Proxy

Für jene Clients, die OTR nicht nativ unterstützen, gibt es einen lokalen Proxy. Das bedeutet, dass die unverschlüsselten Nachrichten zum lokal installierten Proxy gesendet, dort verschlüsselt und dann erst zum eigentlichen Empfänger gesendet werden. Derzeit unterstützt der vom OTR-Projekt zur Verfügung gestellte Proxy nur das OSCAR-Protokoll und kann daher nur mit Mac, ICQ und AIM genutzt werden. Der OTR-Proxy beherrscht SOCKS5, HTTPS und HTTP.

Einige Mac-, ICQ- und AIM-Clients, die Proxys, aber nativ kein OTR unterstützen:

Quellen

  1. 1,0 1,1 Off-the-Record Messaging Protocol version 2 (englisch)
  2. Joseph Bonneau, Andrew Morrison: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Finite-State Security Analysis of OTR Version 2}} Stanford University, abgerufen am {{#invoke:Vorlage:FormatDate|Execute}} (PDF (105 kB), english).{{#invoke:TemplatePar|check |all= url= titel= zugriff= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= archiv-url= archiv-datum= kommentar= zitat= CH= offline= |cat= Wikipedia:Vorlagenfehler/Vorlage:Internetquelle |template= Vorlage:Internetquelle }}
  3. mcabber-Changelog, siehe Abschnitt „mcabber (0.9.4)“, englisch
  4. Gibberbot Webseite, englisch
  5. Xabber im Google Play Store, englisch
  6. Phonix Viewer, OSS
  7. ChatSecure-Website
  8. qutIM 0.3.1 Changelog auf Facebook
  9. Spark Changelog
  10. Pidgin OTR Plugin, englisch
  11. Psi-Patch und OTR-Plugin auf tfh-berlin.de, englisch
  12. Website der Psi-Entwicklerversion Psi+, englisch
  13. Miranda OTR Plugin, englisch
  14. MirOTR, Miranda NG Wiki
  15. Irssi OTR, englisch
  16. Gajim OTR, englisch
  17. Xchat OTR, englisch
  18. Plugin-Sammlung für Vacuum IM

Weblinks

Quelle

600X WIKIPEDIA LOGO.svgOff-the-Record Messaging in der Wikipedia