Off-the-Record Messaging
| Off-the-Record Messaging | |
|---|---|
| Entwickler | Das OTR-Team |
| Aktuelle Version | 4.0.0 (4. September 2012) |
| Betriebssystem | Microsoft Windows, Linux, FreeBSD, OpenBSD, NetBSD, Mac OS X |
| Programmiersprache | Java(java-otr) bzw. C(libotr) |
| Kategorie | Plugin |
| Lizenz | LGPL/GPL (Freie Software) |
| Deutschsprachig | ja |
| www.cypherpunks.ca/otr | |
Off-the-Record Messaging (zu deutsch: inoffizielle; vertrauliche, nicht für die Öffentlichkeit bestimmte Nachrichtenvermittlung) ist ein Protokoll zur Nachrichten-Verschlüsselung von Instant Messaging. Im Gegensatz zur Übertragung der verschlüsselten Nachrichten mittels GPG, PGP (oder in seltenen Fällen auch mittels X.509-Zertifikat) kann man beim Off-the-Record Messaging später nicht mehr feststellen, ob ein bestimmter Schlüssel von einer bestimmten Person genutzt wurde (deniability; Prinzip der Abstreitbarkeit). 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 symmetrischen Kryptoverfahrens AES, des Diffie-Hellman-Schlüsselaustauschs und der Hashfunktion SHA-1. Die beiden Entwickler, Ian Goldberg und Nikita Borisov, stellen eine Bibliothek, ein Plugin für Pidgin sowie einen OTR-AIM-Proxy zur Verfügung. Die Bibliothek ist unter der LGPL lizenziert. Das mit der Bibliothek mitgelieferte Toolkit um Nachrichten zu fälschen, das Pidgin-Plugin und die Proxy-Software sind dagegen unter der GPL lizenziert.
Inhaltsverzeichnis |
Ziele des Projektes [Bearbeiten]
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 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.
- Folgenlosigkeit (Perfect 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 [Bearbeiten]
Der folgende Abschnitt stellt vereinfacht die Funktion des OTR-Protokolls in Version 2[1] dar.
Überblick [Bearbeiten]
Während ihrer Kommunikation miteinander wählen Alice und Bob private Schlüssel
beziehungsweise
. Jeweils zwei, z. B.
und
, werden zur Erzeugung eines gemeinsamen Geheimnisses
mittels des Diffie-Hellman-Schlüsselaustauschs verwendet. Aus diesem Geheimnis
werden die Schlüssel
und
berechnet.
dient zur Verschlüsselung jeder Nachricht mittels Advanced Encryption Standard (AES) im Counter Mode. Dadurch wird die symmetrische Blockchiffre AES zur Stromchiffre. Zur anfänglichen Authentifizierung verwenden Alice und Bob digitale Signaturen, wodurch sie sich während der Unterhaltung sicher sein können, mit wem sie kommunizieren.
dient zur Authentifizierung einer einzelnen Nachricht mittels der Hashfunktion SHA-1 (Secure Hash Algorithm), welche als Message Authentication Code (MAC) verwendet wird.
Bei Senden von Nachrichten werden neue private Schlüssel
bzw.
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 Primzahl
und eine Primitivwurzel
modulo
mit
benötigt. Alle Exponentiationen erfolgen dann modulo dieser Primzahl.
Initialisierung [Bearbeiten]
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 Eve einen Schlüsselaustausch durchführt. Der ganze Vorgang wird Authenticated Key Exchange (AKE) genannt und mit dem SIGMA-Protokoll[1] umgesetzt:
- Alice und Bob wählen private Schlüssel
respektive
(min. 320 Bit lang), tauschen die dazugehörigen öffentlichen Schlüssel
bzw.
aus und erhalten durch das Diffie-Hellman-Verfahren ein gemeinsames Geheimnis
. - Mittels
kann nun ein sicherer Kanal geschaffen werden, über diesen sich jeder Kommunikationsteilnehmer mit Hilfe einer digitalen Signatur gegenüber dem anderen authentifiziert. Derzeit unterstützt OTR nur den Digital Signature Algorithm.
Zwischendurch wird die Verbindung möglichst immer mit AES verschlüsselt und einzelne Nachrichten mittels SHA256-HMAC authentifiziert.
Senden einer Nachricht [Bearbeiten]
Angenommen, Alice möchte an Bob die Nachricht
schicken. Sie führt dabei folgende Schritte aus:
- Alice wählt ihren letzten von Bob empfangenen Diffie-Hellman-Schlüssel
. Dabei gilt der Schlüssel von Bob als empfangen, wenn dieser
für eine Nachricht verwendet hat, die Alice empfangen hat oder
zuvor mittels AKE (siehe Abschnitt zuvor) ausgetauscht wurde, was offensichtlich nur im Fall
sein kann. - Falls
Alices neuster Diffie-Hellman-Schlüssel ist, erzeugt sie zufällig einen neuen Schlüssel
von mindestens 320 Bit Länge. - Sei
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. - Das gemeinsam geteilte Diffie-Hellman-Geheimnis kann nun (modulo
) als
berechnet werden. - Berechne den AES-Schlüssel
, wobei
die ersten 128 Bit des SHA-1-Hashwerts von
bezeichnet.
wurde zuvor in ein bestimmtes Datenformat gebracht und um ein Byte erweitert. - Berechne den MAC-Schlüssel
als den 160 Bit SHA-1-Hashwert von
. - Für den später verwendeten Counter Mode wird ein Zähler
benötigt, der so gewählt wird, dass das Tripel
nie doppelt während des gesamten Nachrichtenaustauschs mit Bob vorkommt. - Die Nachricht
wird nun mithilfe des AES-Algorithmus in Counter Mode verschlüsselt. Als Schlüssel dienen dazu
und der eben gewählte Zähler
. Die so verschlüsselte Nachricht heiße
. - Die verschlüsselte Nachricht
,
,
und einige kryptographisch unwichtige Teile wie die Versionsnummer des Protokolls werden zu
zusammengefasst und davon der Message Authentication Code
unter Verwendung des Schlüssels
berechnet. Hierbei bezeichne
den Keyed-Hash Message Authentication Code (HMAC) unter Verwendung der Hashfunktion SHA-1 und dem Schlüssel
.
und alle nicht mehr verwendeten MAC-Schlüssel werden an Bob über einen unsicheren Kanal geschickt.
Empfangen einer Nachricht [Bearbeiten]
Bob empfängt die weiter oben erzeugten Daten von Alice und führt folgende Schritte durch:
- Bob hat entweder
bereits durch eine alte Nachricht von Alice oder per AKE erhalten. Dadurch kann er dasselbe Diffie-Hellman-Geheimnis durch
berechnen, wobei
und
die in
enthaltenen Indizes bezeichnen. - Ebenso kann er wie Alice
und
berechnen. - Mithilfe von
berechnet er
und vergleicht den erhaltenen Wert mit dem von Alice übermittelten. Dadurch ist die Authentizität der Nachricht geprüft und gegen einen Man-in-the-middle-Angriff geschützt. - Mithilfe von
und
, welches in dem durch Alice versandten
enthalten ist, entschlüsselt er die Nachricht
mit dem AES-Algorithmus in Counter Mode und erhält
zurück. Dies funktioniert, da AES symmetrisch ist, also zum Ver- und Entschlüsseln denselben Schlüssel
verwendet.
Überprüfung der Ziele [Bearbeiten]
- Verschlüsselung (Encryption)
- Das verwendete Kryptosystem AES wurde eingehenden kryptoanalytischen Prüfungen unterzogen und gilt als praktisch berechnungssicher.
- Beglaubigung (Authentication)
- Mittels AKE und digitalen Signaturen kann sich Bob (auch zu einem späteren Zeitpunkt) sicher sein, dass Alice den öffentlichen Schlüssel
gewählt hat. Da mithilfe dieses Schlüssels die nächste Nachricht und damit auch der nächste Schlüssel
signiert wird, kann sich Bob auch bei allen darauf folgenden Nachrichten der Identität seines Gesprächspartners sicher sein. - Abstreitbarkeit (Deniability)
- Alice verwendet ihre digitale Signatur nur zu Beginn des Gesprächs. Alle nachfolgenden Nachrichten werden mit den MAC-Schlüsseln
signiert. Da zum Erzeugen der MAC-Schlüssel das gemeinsame Geheimnis
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 (Perfect Forward Secrecy)
- Verliert Alice ihren langlebigen privaten Schlüssel, so kann daraus keiner der kurzlebigen privaten Schlüssel
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 Stromchiffre (AES in Counter Mode), bei der der Klartext einfach mit einem XOR verknüpft wird, um den Geheimtext 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 [Bearbeiten]
Eine computergestützte Kryptoanalyse des Protokolls in der Version 2 wurde von der Stanford University durchgeführt[2], wobei mehrere Schwachstellen entdeckt wurden: Durch einen Man-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 [Bearbeiten]
Native Unterstützung [Bearbeiten]
Die folgenden Clients 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. OSCAR, XMPP, MSN und YIM). Eine weitere Liste mit Programmen findet sich auf der Webseite der Entwickler.
Fester Bestandteil [Bearbeiten]
- Adium (Mac OS X) unterstützt OTR von Haus aus
- climm (Linux/Unix) unterstützt es direkt seit 0.5.4
- MCabber (Linux, mehrere BSD-Derivate, Mac OS X) unterstützt OTR direkt seit 0.9.4[3]
- CenterIM (Linux/Unix) unterstützt OTR seit Version 4.21.0
- Jitsi (früher SIP Communicator) (plattformunabhängig)
- BitlBee (plattformunabhängig), seit Version 3.0 (optional einstellbar zur Kompilierzeit)
- Gibberbot (Android) unterstützt OTR von Haus aus (nur XMPP)[4]
- Xabber (Android) unterstützt OTR nativ seit 0.9.27 (nur XMPP)[5]
- Phonix Viewer[6] (plattformunabhängig), ein Viewer für das Spiel SecondLife, unterstützt OTR-Diskussionen innerhalb des Spiels
- ChatSecure (iOS)[7]
- qutIM (plattformunabhängig) seit 0.3.1[8]
- Spark (plattformunabhängig)[9]
Plugin [Bearbeiten]
- Pidgin (plattformunabhängig) hat ein offizielles Plugin[10]
- Kopete (Linux/Unix) hat ein (seit Version 0.50.80/KDE 4.1 offizielles) Plugin
- Psi (plattformunabhängig) hat ein inoffizielles Plugin,[11] in Psi+[12] kann dieses (unter Linux) nativ verwendet werden
- Miranda IM (Microsoft Windows) hat ein Plugin[13]
- Trillian Pro (Microsoft Windows) hat ein Plugin[14]
- Irssi (plattformunabhängig) hat ein Plugin[15]
- Gajim (plattformunabhängig) hat seit Version 0.15 ein Plugin[16]
- Xchat (plattformunabhängig) hat ein Plugin[17]
- Vacuum IM (Linux/Windows)[18]
Proxy [Bearbeiten]
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 [Bearbeiten]
- ↑ a b Off-the-Record Messaging Protocol version 2 (englisch)
- ↑ Joseph Bonneau, Andrew Morrison: Finite-State Security Analysis of OTR Version 2. Stanford University, abgerufen am 13. Juli 2011 (PDF (105 kB), englisch).
- ↑ mcabber-Changelog, siehe Abschnitt „mcabber (0.9.4)“, englisch
- ↑ Gibberbot Webseite, englisch
- ↑ Xabber im Google Play Store, englisch
- ↑ Phonix Viewer, OSS
- ↑ ChatSecure-Website
- ↑ qutIM 0.3.1 Changelog auf Facebook
- ↑ Spark Changelog
- ↑ Pidgin OTR Plugin, englisch
- ↑ Psi-Patch und OTR-Plugin auf tfh-berlin.de, englisch
- ↑ Website der Psi-Entwicklerversion Psi+, englisch
- ↑ Miranda OTR Plugin, englisch
- ↑ Trillian OTR, englisch
- ↑ Irssi OTR, englisch
- ↑ Gajim OTR, englisch
- ↑ Xchat OTR, englisch
- ↑ Plugin-Sammlung für Vacuum IM
Weblinks [Bearbeiten]
- Off-the-Record-Projektseite (englisch)
- Off-the-Record Communication, or, Why Not To Use PGP – erste Veröffentlichung des OTR-Protokolls von Nikita Borisov, Ian Goldberg und Eric Brewer (englisch; PDF, 132 KB)
- Off-the-Record Messaging Protocol version 2 (englisch)
- Finite-State Security Analysis of OTR Version 2 – Joseph Bonneau & Andrew Morrison, Stanford University (englisch; PDF, 105 kB)
- Off-the-Record Messaging: Useful Security and Privacy for IM – Video von Ian Goldberg, einem der Entwickler (englisch, verschiedene Formate stehen zur Auswahl)
- Sichere Nachrichtenübermittelung mit Off-the-Record Messaging – Diplomarbeit von T. Engel an der Technische Fachhochschule Berlin (PDF, 860 kB)
respektive
(min. 320
bzw.
aus und erhalten durch das
.
für eine Nachricht verwendet hat, die Alice empfangen hat oder
sein kann.
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.
berechnet werden.
, wobei
die ersten 128 Bit des
benötigt, der so gewählt wird, dass das
nie doppelt während des gesamten Nachrichtenaustauschs mit Bob vorkommt.
.
,
und einige kryptographisch unwichtige Teile wie die Versionsnummer des Protokolls werden zu
zusammengefasst und davon der
unter Verwendung des Schlüssels
den
und alle nicht mehr verwendeten MAC-Schlüssel werden an Bob über einen unsicheren Kanal geschickt.
berechnen, wobei
und
die in
verwendet.
signiert wird, kann sich Bob auch bei allen darauf folgenden Nachrichten der Identität seines Gesprächspartners sicher sein.