Jump to content

OMEMO: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Teufel (talk | contribs)
m Features: Spelling/grammar/punctuation correction
Removing link(s) / list item(s) Wikipedia:Articles for deletion/Monal (software) closed as soft delete (XFDcloser)
 
(40 intermediate revisions by 21 users not shown)
Line 1: Line 1:
{{Short description|Extension to XMPP for multi-client end-to-end encryption}}
{{Use mdy dates|date=October 2023}}
[[File:OMEMO logo.svg|thumb|Logo of OMEMO]]
[[File:OMEMO logo.svg|thumb|Logo of OMEMO]]
'''OMEMO''' is an extension to the Extensible Messaging and Presence Protocol ([[XMPP]], "Jabber") for multi-client [[end-to-end encryption]] developed by Andreas Straub. According to Straub, OMEMO uses the [[Double Ratchet Algorithm]] "to provide multi-end to multi-end encryption, allowing messages to be synchronized securely across multiple clients, even if some of them are offline".<ref name="omemo-new-xep"/> The name "OMEMO" is a [[recursive acronym]] for "OMEMO Multi-End Message and Object Encryption".
'''OMEMO''' is an extension to the Extensible Messaging and Presence Protocol ([[XMPP]]) for multi-client [[end-to-end encryption]] developed by [[Andreas Straub]]. According to Straub, OMEMO uses the [[Double Ratchet Algorithm]] "to provide multi-end to multi-end encryption, allowing messages to be synchronized securely across multiple clients, even if some of them are offline".<ref name="omemo-new-xep"/> The name "OMEMO" is a [[recursive acronym]] for "OMEMO Multi-End Message and Object Encryption".
It is an open standard based on the Double Ratchet Algorithm and the [[Personal Eventing Protocol]] (PEP, XEP-0163).<ref name="home"/>
It is an open standard based on the Double Ratchet Algorithm and the [[Personal Eventing Protocol]] (PEP, XEP-0163).<ref name="home"/>
OMEMO offers future and [[forward secrecy]] and deniability with message synchronization and offline delivery.
OMEMO offers future and [[forward secrecy]] and deniability with message synchronization and offline delivery.
Line 11: Line 13:
It was introduced in Conversations and submitted to the [[XMPP Standards Foundation]] (XSF) as a proposed [[XMPP Extension Protocol]] (XEP) in the autumn of 2015 and got accepted as [https://xmpp.org/extensions/xep-0384.html XEP-0384] in December 2016.<ref name="omemo-new-xep"/>
It was introduced in Conversations and submitted to the [[XMPP Standards Foundation]] (XSF) as a proposed [[XMPP Extension Protocol]] (XEP) in the autumn of 2015 and got accepted as [https://xmpp.org/extensions/xep-0384.html XEP-0384] in December 2016.<ref name="omemo-new-xep"/>


In July 2016, the [[ChatSecure]] project announced that they would implement OMEMO in the next releases. ChatSecure v4.0 supports OMEMO and was released on January 17, 2017.<ref>{{cite web|url=https://chatsecure.org/blog/chatsecure-v323-xmpp-push/|title=ChatSecure iOS v3.2.3 - XMPP Push|date = 2016-07-25|accessdate = 2016-09-07}}</ref><ref>{{cite web|url=https://chatsecure.org/blog/chatsecure-v4-released/|title=ChatSecure v4.0 - OMEMO and Signal Protocol|date = 2017-01-17|accessdate = 2017-02-07}}</ref>
In July 2016, the [[ChatSecure]] project announced that they would implement OMEMO in the next releases. ChatSecure v4.0 supports OMEMO and was released on January 17, 2017.<ref>{{cite web|url=https://chatsecure.org/blog/chatsecure-v323-xmpp-push/|title=ChatSecure iOS v3.2.3 - XMPP Push|date = 2016-07-25|access-date = 2016-09-07}}</ref><ref>{{cite web|url=https://chatsecure.org/blog/chatsecure-v4-released/|title=ChatSecure v4.0 - OMEMO and Signal Protocol|date = 2017-01-17|access-date = 2017-02-07}}</ref>


A first experimental release of an OMEMO plugin for the cross-platform XMPP client [[Gajim]] was made available on December 26, 2015.<ref name="gajim-omemo-initial-commit"/>
A first experimental release of an OMEMO plugin for the cross-platform XMPP client [[Gajim]] was made available on December 26, 2015.<ref name="gajim-omemo-initial-commit"/>
Line 17: Line 19:
In June 2016, the non-profit computer security consultancy firm Radically Open Security published an analysis of the OMEMO protocol.<ref>[https://conversations.im/omemo/audit.pdf OMEMO: Cryptographic Analysis Report]. June 2016</ref>
In June 2016, the non-profit computer security consultancy firm Radically Open Security published an analysis of the OMEMO protocol.<ref>[https://conversations.im/omemo/audit.pdf OMEMO: Cryptographic Analysis Report]. June 2016</ref>


== Client Support ==
== Client support ==
<!-- PLEASE RESPECT ALPHABETICAL ORDER -->
<!-- PLEASE RESPECT ALPHABETICAL ORDER -->
Selected clients supporting OMEMO (full list of clients also exists<ref>{{Cite web|url=http://omemo.top/|title=Are we OMEMO yet?|website=Are we OMEMO yet?|language=en-US|access-date=2019-01-22}}</ref>):
Selected clients supporting OMEMO (full list of clients also exists<ref>{{Cite web|url=http://omemo.top/|title=Are we OMEMO yet?|website=Are we OMEMO yet?|language=en-US|access-date=2019-01-22}}</ref>):


* [[ChatSecure]] ([[iOS]])<ref>{{Cite web|url=https://chatsecure.org/blog/chatsecure-v4-released/|title=ChatSecure v4.0 - OMEMO and Signal Protocol|website=chatsecure.org|access-date=2017-01-17}}</ref>
* [https://beagle.im/ BeagleIM] ([[macOS]])<ref>{{Cite web|url= https://tigase.org/blog/beagleim-and-siskin-just-got-oemo-support/|title=Beagle OMEMO support|date=July 7, 2019 }}</ref>
* [[ChatSecure]] ([[iOS]])<ref>{{Cite web|url=https://chatsecure.org/blog/chatsecure-v4-released/|title=ChatSecure v4.0 - OMEMO and Signal Protocol|website=chatsecure.org|date=17 January 2017 |access-date=2017-01-17}}</ref>
* [[Conversations (software)|Conversations]] ([[Android (operating system)|Android]])
* [[Conversations (software)|Conversations]] ([[Android (operating system)|Android]])
* [[Cryptocat]] - No open XMPP client, works only with Cryptocat server ([[Linux]], [[OS X]], [[Microsoft Windows|Windows]])<ref>{{Cite web|url=https://crypto.cat/security.html#encryption|title=Cryptocat - Security|website=crypto.cat|access-date=2016-05-24}}</ref>
*Converse.js ([[Web browser|Browser]]-based)<ref>{{Cite web|url=https://github.com/conversejs/converse.js/issues/497|title=XEP-0384: OMEMO Encryption · Issue #497 · conversejs/converse.js|website=GitHub|language=en|access-date=2019-11-20}}</ref>
* Dino ([[Linux]], [[OS X]])<ref>{{Cite web|url=https://dino.im|title=Dino - Modern Jabber/XMPP Client using GTK+/Vala
* Dino ([[Linux]], [[macOS]])<ref>{{Cite web|url=https://dino.im|title=Dino - Modern Jabber/XMPP Client using GTK+/Vala
|website=dino.im|access-date=2017-11-06}}</ref>
|website=dino.im|access-date=2017-11-06}}</ref>
* [[Gajim]] ([[Linux]], [[Microsoft Windows|Windows]], [[Berkeley Software Distribution|BSD]])<ref name="gajim-omemo"/><ref>{{Cite web |last=Developers |first=Gajim |title=Gajim 1.8.0 |url=https://gajim.org/post/2023-05-27-gajim-1.8.0-released/ |access-date=2023-06-15 |website=Gajim |language=en}}</ref>
* [[Gajim]] via plugin ([[Berkeley Software Distribution|BSD]], [[Linux]], [[Microsoft Windows|Windows]])<ref name="gajim-omemo"/>
* Kaidan ([[Linux]])<ref>{{Cite web |url=https://www.kaidan.im/2023/05/05/kaidan-0.9.0/ |title=Kaidan 0.9: End-to-End Encryption & XMPP Providers |date=2023-05-05 |access-date=2023-10-20 |website=Kaidan}}</ref>
* [[Psi_(instant_messaging_client)|Psi]] via plugin ([[Linux]], [[Microsoft Windows|Windows]])<ref name="psi-omemo"/>
* [[Movim]] ([[Web browser|Browser]]-based)<ref>{{Cite web|url=https://mov.im/?node/pubsub.movim.eu/Movim/end-to-end-encryption-in-movim-omemo-is-finally-there-yudZPP/|title=End to end encryption in Movim - OMEMO is (finally) there!|website=mov.im|access-date=2021-12-15}}</ref>
* [[Psi_(instant_messaging_client)#History|Psi+]] via plugin ([[Linux]], [[Microsoft Windows|Windows]])<ref name="psi-plus-omemo"/>
* [[Psi (instant messaging client)|Psi]] via official plugin ([[Linux]], [[Microsoft Windows|Windows]], [[macOS]])<ref name="psi-omemo"/>
* [[Psi (instant messaging client)#History|Psi+]] via official plugin ([[Linux]], [[Microsoft Windows|Windows]], [[macOS]], [[Haiku_(operating_system)|Haiku]], [[FreeBSD]])<ref name="psi-plus-omemo"/>
* [[libpurple]] clients such as [[Pidgin (software)|Pidgin]] or Finch via experimental plugin <ref name="lurch"/>
* [[libpurple]] clients such as [[Pidgin (software)|Pidgin]] or Finch via experimental plugin <ref name="lurch"/>
* [[Adium]] via an Xtra based on the libpurple plugin<ref name="Lurch4Adium"/>
* [[Adium]] via an Xtra based on the libpurple plugin<ref name="Lurch4Adium"/>
* [[Profanity (instant messaging client)|Profanity]] via plugin ([[Berkeley Software Distribution|BSD]], [[Linux]], [[macOS]], [[Microsoft Windows|Windows]])<ref name="profanity-omemo"/>
* [[Profanity (instant messaging client)|Profanity]] via experimental plugin ([[Berkeley Software Distribution|BSD]], [[Linux]], [[macOS]], [[Microsoft Windows|Windows]])<ref name="profanity-omemo"/>
* [https://siskin.im/ SiskinIM] ([[iOS]])<ref name="beagle-siskin-announcement">{{Cite web
* Zom ([[Android (operating system)|Android]], [[iOS]])<ref>{{Cite web|author=|url=https://zom.im/|title=Zom mobile messenger}}</ref>
|url=https://tigase.net/blog-entry/beagleim-and-siskinim-just-got-omemo-support
|title=BeagleIM and SiskinIM just got OMEMO support
|website=tigase.net
|access-date=2019-06-07}}</ref>


== Library Support ==
== Library support ==
* Smack supports OMEMO using the two modules smack-omemo and smack-omemo-signal<ref>{{Cite web|url=https://community.igniterealtime.org/blogs/ignite/2017/06/06/smack-v42-introduces-omemo-support|title=Ignite Realtime Blog: Smack v4.2 Introduces OME... {{!}} Ignite Realtime|last=Schaub|first=Paul|date=|website=community.igniterealtime.org|language=en|archive-url=|archive-date=|dead-url=|access-date=2017-07-11}}</ref>
* Smack supports OMEMO using the two modules smack-omemo and smack-omemo-signal<ref>{{Cite web|url=https://community.igniterealtime.org/blogs/ignite/2017/06/06/smack-v42-introduces-omemo-support|title=Ignite Realtime Blog: Smack v4.2 Introduces OME... {{!}} Ignite Realtime|last=Schaub|first=Paul|website=community.igniterealtime.org|date=6 June 2017|language=en|access-date=2017-07-11}}</ref>
* XMPPFramework ([[macOS]], [[iOS]], [[tvOS]]) <ref>https://github.com/robbiehanson/XMPPFramework</ref> supports OMEMO via the OMEMOModule extension <ref>https://github.com/robbiehanson/XMPPFramework/blob/master/Extensions/OMEMO/OMEMOModule.h</ref> when used in conjunction with the SignalProtocol-ObjC library <ref>https://github.com/ChatSecure/SignalProtocol-ObjC</ref>.
* XMPPFramework ([[macOS]], [[iOS]], [[tvOS]]) <ref>{{Cite web|url=https://github.com/robbiehanson/XMPPFramework|title=Robbiehanson/XMPPFramework|website=[[GitHub]] |date=26 October 2021}}</ref> supports OMEMO via the OMEMOModule extension <ref>{{Cite web|url=https://github.com/robbiehanson/XMPPFramework/blob/master/Extensions/OMEMO/OMEMOModule.h|title = Robbiehanson/XMPPFramework| website=[[GitHub]] |date = 26 October 2021}}</ref> when used in conjunction with the SignalProtocol-ObjC library.<ref>{{Cite web|url=https://github.com/ChatSecure/SignalProtocol-ObjC|title = SignalProtocolObjC| website=[[GitHub]] |date = 30 January 2021}}</ref>


== References ==
== References ==
Line 44: Line 53:
|title= OMEMO Multi-End Message and Object Encryption
|title= OMEMO Multi-End Message and Object Encryption
|author= Daniel Gultsch
|author= Daniel Gultsch
|accessdate= 2015-11-23}}</ref>
|access-date= 2015-11-23}}</ref>


<ref name="gajim-omemo-initial-commit">{{cite web
<ref name="gajim-omemo-initial-commit">{{cite web
Line 59: Line 68:
|author= Bahtiar Gadimov
|author= Bahtiar Gadimov
|display-authors=etal
|display-authors=etal
|accessdate= 2016-12-04}}</ref>
|access-date= 2016-12-04}}</ref>


<ref name="psi-omemo">{{cite web
<ref name="psi-omemo">{{cite web
|url= https://github.com/psi-im/plugins/tree/master/dev/omemoplugin
|url= https://github.com/psi-im/plugins/tree/master/generic/omemoplugin
|title= OMEMO for Psi · GitHub
|title= OMEMO for Psi · GitHub
|author= Vyacheslav Karpukhin
|author= Vyacheslav Karpukhin
|website= [[GitHub]]
|accessdate= 2018-03-04}}</ref>
|access-date= 2018-03-04}}</ref>


<ref name="psi-plus-omemo">{{cite web
<ref name="psi-plus-omemo">{{cite web
|url= https://github.com/psi-plus/psi-plus-snapshots/tree/master/src/plugins/dev/omemoplugin
|url= https://github.com/psi-plus/psi-plus-snapshots/tree/master/plugins/generic/omemoplugin
|title= Psi+ snapshots
|title= Psi+ snapshots
|author= Vyacheslav Karpukhin
|author= Vyacheslav Karpukhin
|website= [[GitHub]]
|accessdate= 2018-03-04}}</ref>
|access-date= 2018-03-04}}</ref>


<ref name="omemo-new-xep">{{cite web
<ref name="omemo-new-xep">{{cite web
Line 77: Line 88:
|title=<nowiki>[Standards]</nowiki> NEW: XEP-0384 (OMEMO Encryption)
|title=<nowiki>[Standards]</nowiki> NEW: XEP-0384 (OMEMO Encryption)
|date = 2016-12-07
|date = 2016-12-07
|accessdate = 2016-12-23}}</ref>
|access-date = 2016-12-23}}</ref>


<ref name="profanity-omemo">{{cite web
<ref name="profanity-omemo">{{cite web
Line 83: Line 94:
|title=profanity-omemo-plugin: A Python plugin to use (axolotl / Signal Protocol) encryption for the profanity XMPP messenger
|title=profanity-omemo-plugin: A Python plugin to use (axolotl / Signal Protocol) encryption for the profanity XMPP messenger
|author= René Calles
|author= René Calles
|website=[[GitHub]]
|accessdate=2017-01-10}}</ref>
|access-date=2017-01-10}}</ref>


<ref name="lurch">{{cite web
<ref name="lurch">{{cite web
Line 89: Line 101:
|title=lurch - OMEMO for libpurple
|title=lurch - OMEMO for libpurple
|author= Richard Bayerle
|author= Richard Bayerle
|website=[[GitHub]]
|accessdate=2017-02-12}}</ref>
|access-date=2017-02-12}}</ref>


<ref name="Lurch4Adium">{{cite web
<ref name="Lurch4Adium">{{cite web
Line 95: Line 108:
|title=Lurch4Adium - OMEMO Xtra for Adium
|title=Lurch4Adium - OMEMO Xtra for Adium
|author= Olivier Mehani
|author= Olivier Mehani
|website=[[GitHub]]
|accessdate=2017-06-08}}</ref>
|access-date=2017-06-08}}</ref>


}}
}}
Line 104: Line 118:
* [https://github.com/omemo/python-omemo Python library for implementing OMEMO in other clients]
* [https://github.com/omemo/python-omemo Python library for implementing OMEMO in other clients]
* [https://github.com/gkdr/libomemo OMEMO protocol implementation in C]
* [https://github.com/gkdr/libomemo OMEMO protocol implementation in C]
* [http://omemo.top/ OMEMO Top] - OMEMO support toplist in instant message clients


{{Cryptographic software}}
{{Cryptographic software}}


[[Category:End-to-end encryption]]
[[Category:Free security software]]
[[Category:Free security software]]
[[Category:Cryptographic protocols]]
[[Category:Cryptographic protocols]]

Latest revision as of 06:34, 30 October 2024

Logo of OMEMO

OMEMO is an extension to the Extensible Messaging and Presence Protocol (XMPP) for multi-client end-to-end encryption developed by Andreas Straub. According to Straub, OMEMO uses the Double Ratchet Algorithm "to provide multi-end to multi-end encryption, allowing messages to be synchronized securely across multiple clients, even if some of them are offline".[1] The name "OMEMO" is a recursive acronym for "OMEMO Multi-End Message and Object Encryption". It is an open standard based on the Double Ratchet Algorithm and the Personal Eventing Protocol (PEP, XEP-0163).[2] OMEMO offers future and forward secrecy and deniability with message synchronization and offline delivery.

Features

[edit]

In comparison with OTR, the OMEMO protocol offers many-to-many encrypted chat, offline messages queuing, forward secrecy, file transfer, verifiability and deniability at the cost of slightly larger message size overhead.[3]

History

[edit]

The protocol was developed and first implemented by Andreas Straub as a Google Summer of Code project in 2015. The project's goal was to implement a double-ratchet-based multi-end to multi-end encryption scheme into an Android XMPP-based instant messaging client called Conversations. It was introduced in Conversations and submitted to the XMPP Standards Foundation (XSF) as a proposed XMPP Extension Protocol (XEP) in the autumn of 2015 and got accepted as XEP-0384 in December 2016.[1]

In July 2016, the ChatSecure project announced that they would implement OMEMO in the next releases. ChatSecure v4.0 supports OMEMO and was released on January 17, 2017.[4][5]

A first experimental release of an OMEMO plugin for the cross-platform XMPP client Gajim was made available on December 26, 2015.[6]

In June 2016, the non-profit computer security consultancy firm Radically Open Security published an analysis of the OMEMO protocol.[7]

Client support

[edit]

Selected clients supporting OMEMO (full list of clients also exists[8]):

Library support

[edit]
  • Smack supports OMEMO using the two modules smack-omemo and smack-omemo-signal[23]
  • XMPPFramework (macOS, iOS, tvOS) [24] supports OMEMO via the OMEMOModule extension [25] when used in conjunction with the SignalProtocol-ObjC library.[26]

References

[edit]
  1. ^ a b "[Standards] NEW: XEP-0384 (OMEMO Encryption)". December 7, 2016. Retrieved December 23, 2016.
  2. ^ Daniel Gultsch. "OMEMO Multi-End Message and Object Encryption". Retrieved November 23, 2015.
  3. ^ "OMEMO Multi-End Message and Object Encryption". conversations.im. Retrieved January 22, 2019.
  4. ^ "ChatSecure iOS v3.2.3 - XMPP Push". July 25, 2016. Retrieved September 7, 2016.
  5. ^ "ChatSecure v4.0 - OMEMO and Signal Protocol". January 17, 2017. Retrieved February 7, 2017.
  6. ^ Bahtiar Gadimov (December 26, 2015). "Initial OMEMO commit". dev.gajim.org. Retrieved September 8, 2017.
  7. ^ OMEMO: Cryptographic Analysis Report. June 2016
  8. ^ "Are we OMEMO yet?". Are we OMEMO yet?. Retrieved January 22, 2019.
  9. ^ "Beagle OMEMO support". July 7, 2019.
  10. ^ "ChatSecure v4.0 - OMEMO and Signal Protocol". chatsecure.org. January 17, 2017. Retrieved January 17, 2017.
  11. ^ "XEP-0384: OMEMO Encryption · Issue #497 · conversejs/converse.js". GitHub. Retrieved November 20, 2019.
  12. ^ "Dino - Modern Jabber/XMPP Client using GTK+/Vala". dino.im. Retrieved November 6, 2017.
  13. ^ Bahtiar Gadimov; et al. "Omemogajimplugin · Wiki · gajim / gajim-plugins · GitLab". Retrieved December 4, 2016.
  14. ^ Developers, Gajim. "Gajim 1.8.0". Gajim. Retrieved June 15, 2023.
  15. ^ "Kaidan 0.9: End-to-End Encryption & XMPP Providers". Kaidan. May 5, 2023. Retrieved October 20, 2023.
  16. ^ "End to end encryption in Movim - OMEMO is (finally) there!". mov.im. Retrieved December 15, 2021.
  17. ^ Vyacheslav Karpukhin. "OMEMO for Psi · GitHub". GitHub. Retrieved March 4, 2018.
  18. ^ Vyacheslav Karpukhin. "Psi+ snapshots". GitHub. Retrieved March 4, 2018.
  19. ^ Richard Bayerle. "lurch - OMEMO for libpurple". GitHub. Retrieved February 12, 2017.
  20. ^ Olivier Mehani. "Lurch4Adium - OMEMO Xtra for Adium". GitHub. Retrieved June 8, 2017.
  21. ^ René Calles. "profanity-omemo-plugin: A Python plugin to use (axolotl / Signal Protocol) encryption for the profanity XMPP messenger". GitHub. Retrieved January 10, 2017.
  22. ^ "BeagleIM and SiskinIM just got OMEMO support". tigase.net. Retrieved June 7, 2019.
  23. ^ Schaub, Paul (June 6, 2017). "Ignite Realtime Blog: Smack v4.2 Introduces OME... | Ignite Realtime". community.igniterealtime.org. Retrieved July 11, 2017.
  24. ^ "Robbiehanson/XMPPFramework". GitHub. October 26, 2021.
  25. ^ "Robbiehanson/XMPPFramework". GitHub. October 26, 2021.
  26. ^ "SignalProtocolObjC". GitHub. January 30, 2021.
[edit]