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 als experimentelles XEP akzeptiert.[7] 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.[8] Auch Gajim arbeitete an einer OMEMO Unterstützung und veröffentlichte eine erste experimentelle Version des OMEMO-Plugins am 26. Dezember 2015.[9] Diese OMEMO-Unterstützung steht seit Januar 2017 offiziell zur Verfügung.[10] Seit September 2016 nutzt die OMEMO-Spezifikation nicht mehr das Signal-Protokoll, sondern die eigens für das Matrix-Netzwerkprotokoll geschriebene Implementierung Olm. 2017 wurde Olm durch das SignalProtocol abgelöst.[11] Mit der Implementierung von OMEMO in den Monal Client rückte im Januar 2020 das Problem von unterschiedlicher Initialisierungsvektoren in den Vordergrund und sorgte für Kompatibilitätsprobleme zwischen den verschiedenen OMEMO Implementierungen.[12][13] Im März 2020 wurde mit der Version 0.4.0 des OMEMO XMPP Extension Protocol's der Initialisierungsvektor festgelegt und die XMPP-Clients wurden auf den neuen Initialisierungsvektor umgestellt.[14]
Client-Unterstützung
- c0nnect PRO (Android - Conversations Fork)[15]
- ChatSecure (iOS)[10]
- Conversations (Android)
- Converse (für Webbrowser)[16]
- blabber.im, ehemals „Pix-Art Messenger“ (Android - Conversations Fork)[17]
- Dino (Linux, OS X)[18]
- Gajim mittels Plugin (BSD, Linux, Windows)[9]
- Profanity mittels experimentellen Plugins (BSD, Linux, Windows)[19]
- Pidgin und andere libpurple-Clients mittels Plugin[20]
- Quicksy (Android - Conversations Spin-off mit Rufnummer als Identifier)
- Monal (iOS)
- aTalk (Android, inkl. Videoanruf-Funktion)
- UWPX (Windows)[21]
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
Weblinks
- XEP-0384: OMEMO Encryption
- OMEMO-Übersicht der Conversations-Entwickler
- Are we OMEMO yet? – Übersicht über Integration von OMEMO in Clients
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, archiviert vom (nicht mehr online verfügbar) am 25. Januar 2016; abgerufen am 19. Januar 2016. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ 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.
- ↑ Chris Ballinger: ChatSecure, Conversations and Zom. ChatSecure, 2. Oktober 2015, abgerufen am 19. Januar 2016.
- ↑ a b Gajim plugin for OMEMO Multi-End Message and Object Encryption. Abgerufen am 24. Januar 2017.
- ↑ a b ChatSecure v4.0 – OMEMO and Signal Protocol. chatsecure.org, abgerufen am 17. Januar 2017.
- ↑ XEP-0384: OMEMO Encryption – Appendix H: Revision History. Abgerufen am 22. Januar 2017.
- ↑ OMEMO ist kaputt im Ökosystem. Abgerufen am 10. August 2022.
- ↑ Daniel Gultsch: Klarstellung auf Twitter zur Initialisierungsvektor Diskussion. Abgerufen am 10. August 2022.
- ↑ XEP-0384 Spezifizierung. Abgerufen am 10. August 2022.
- ↑ Offizielle c0nnect messenger Website. In: c0nnect.de. Abgerufen am 12. Mai 2023.
- ↑ 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.