OMEMO
OMEMO (XEP-0384) ist eine Erweiterung des Extensible Messaging and Presence Protocol (XMPP) für Multi-Client-Ende-zu-Ende-Verschlüsselung und wurde von Andreas Straub entwickelt. OMEMO benutzt Olm, eine Implementierung des Signal-Protokolls, zum Schlüsselmanagement und um Nachrichten zwischen mehreren Clients zu synchronisieren, selbst wenn davon einige offline sind.[1] Der Name „OMEMO“ ist ein rekursives Akronym für „OMEMO Multi-End Message and Object Encryption“. OMEMO basiert außerdem auf dem Personal Eventing Protocol (PEP, XEP-0163)[2] und bietet Perfect Forward Secrecy sowie glaubhafte Abstreitbarkeit (eng. plausible deniability).
Bedeutung
Die Bedeutung von OMEMO besteht in einer erheblichen Verbesserung gegenüber den bisherigen Verschlüsselungslösungen für Instant Messaging. So unterstützt die bis dato verbreitetste Verschlüsselungslösung Off-the-Record Messaging (OTR) zwar Forward Secrecy und glaubhafte Abstreitbarkeit. Allerdings muss dafür der Kommunikationspartner stets online sein, damit ihn die Nachricht erreicht. Bei der Verschlüsselung mittels OpenPGP stellt sich das Problem umgekehrt dar: Es werden zwar Offline-Nachrichten, aber weder Forward Secrecy noch glaubhafte Abstreitbarkeit unterstützt. Olm und somit auch OMEMO hingegen unterstützen sowohl Forward Secrecy und glaubhafte Abstreitbarkeit als auch Offline-Nachrichten.[3][4]
Außerdem wurde an den bisherigen Verschlüsselungslösungen für Instant Messaging kritisiert, dass ihre Integration in das zugrundeliegende Chatprotokoll fehlte. So gaben beispielsweise die Entwickler des offiziellen Messengers der Desktopumgebung Gnome (Empathy) die fehlende Integration als Grund an, das oft gewünschte Feature OTR[5] nicht zu implementieren.[6] Die Integration von OMEMO in das Chatprotokoll stellt auch insofern eine Verbesserung gegenüber OTR dar.
Geschichte
Das Protokoll wurde 2015 von Andreas Straub als Google-Summer-of-Code-Projekt entwickelt und implementiert. Ziel des Projekts war es, ein Axolotl-basiertes Multi-Ende-zu-Multi-Ende-Verschlüsselungsschema in einem XMPP-basierten Instant Messaging Client für Android, Conversations, zu implementieren. Es wurde im Herbst 2015 bei Conversations eingeführt, bei der XMPP Standards Foundation (XSF) als XMPP Extension Protocol (XEP) vorgeschlagen und als XEP-0384 im Dezember 2016 akzeptiert.[7]
Seit September 2016 nutzt die OMEMO-Spezifikation nicht mehr das Signal-Protokoll, sondern die eigens für das Matrix-Netzwerkprotokoll geschriebene Implementierung Olm.[8]
Im Oktober 2015 verkündete das ChatSecure-Projekt, dass es seinen verschlüsselnden Instant Messenger auf dem Conversations-Kern aufbauen, und an OMEMO-Unterstützung für eine iOS-Version arbeiten will.[9] Diese OMEMO-Unterstützung steht seit Januar 2017 offiziell zur Verfügung.[10]
Eine erste experimentelle Version des OMEMO-Plugins für den plattformübergreifenden XMPP-Client Gajim wurde am 26. Dezember 2015 veröffentlicht.[11]
Client-Unterstützung
- ChatSecure (iOS)[10]
- Conversations (Android)
- Converse (für Webbrowser)[12]
- blabber.im, ehemals „Pix-Art Messenger“ (Android - Conversations Fork)[13]
- Dino (Linux, OS X)[14]
- Gajim mittels Plugin (BSD, Linux, Windows)[11]
- Profanity mittels experimentellen Plugins (BSD, Linux, Windows)[15]
- Pidgin und andere libpurple-Clients mittels Plugin[16]
- Quicksy (Android - Conversations Spin-off mit Rufnummer als Identifier)
- Monal (iOS)
- aTalk (Android, inkl. Videoanruf-Funktion)
- UWPX (Windows)[17]
Server-Unterstützung
Server benötigen keine spezielle Unterstützung für OMEMO, weil dafür die Kontaktliste (roster, Teil des XMPP-Kerns) und XEP-0163 (PEP) ausreichen.
Library-Unterstützung
- Smack bietet experimentellen Support über die beiden Module smack-omemo + smack-omemo-signal[18]
Weblinks
Einzelnachweise
- Andreas Straub: OMEMO Encryption. In: Conversations Messenger Homepage. 25. Oktober 2015, abgerufen am 16. Januar 2020.
- Daniel Gultsch: OMEMO Multi-End Message and Object Encryption. Abgerufen am 23. November 2015.
- GPN16 – Axolotl erklärt – Wie funktioniert die Crypto hinter Signal und Whatsapp
- Webseite von OMEMO, siehe Abschnitt Feature Comparison, abgerufen am 16. Oktober 2016
- US$ 621.42 bounty on FreedomSponsors: Telepathy should support OTR encryption. FreedomSponsors, abgerufen am 19. Januar 2016.
- Eric Hopper: Empathy and OTR. Journal of Omnifarious, 31. August 2009, abgerufen am 18. Januar 2016.
- [Standards] NEW: XEP-0384 (OMEMO Encryption). 7. Dezember 2016, abgerufen am 23. Dezember 2016.
- XEP-0384: OMEMO Encryption – Appendix H: Revision History. Abgerufen am 22. Januar 2017.
- Chris Ballinger: ChatSecure, Conversations and Zom. ChatSecure, 2. Oktober 2015, abgerufen am 19. Januar 2016.
- ChatSecure v4.0 – OMEMO and Signal Protocol. chatsecure.org, abgerufen am 17. Januar 2017.
- Gajim plugin for OMEMO Multi-End Message and Object Encryption. Abgerufen am 24. Januar 2017.
- Offizielle Website von „Converse.js“. In: Converse.js. Abgerufen am 10. Januar 2021.
- Offizielle Website von „blabber.im“. In: blabber.im. Abgerufen am 23. November 2020.
- Dino – Modern Jabber/XMPP Client using GTK+/Vala. In: dino.im. Abgerufen am 6. November 2017.
- profanity-omemo-plugin. Abgerufen am 22. Januar 2017.
- Richard Bayerle: lurch – OMEMO for libpurple. Abgerufen am 14. Februar 2017.
- UWPX. Abgerufen am 7. Dezember 2020.
- Paul Schaub: Ignite Realtime Blog: Smack v4.2 Introduces OME… | Ignite Realtime. Abgerufen am 11. Juli 2017.