OMEMO (XEP-0384) — это расширение для открытого протокола XMPP, которое реализует сквозное шифрование для нескольких клиентов. OMEMO было разработано Андреасом Штраубом (Andreas Straub). OMEMO использует Olm, реализацию протокола Signal, для обмена ключами и для синхронизации сообщений между несколькими клиентами, даже если некоторые из них отключены.[1] Имя OMEMO это рекурсивный акроним для «OMEMO Multi-End Message and Object Encryption» (OMEMO многоконечные сообщения и шифрование объектов). OMEMO кроме того базируется на протоколе Personal Eventing Protocol (PEP, XEP-0163) [2] и предоставляет совершенную прямую секретность (Perfect Forward Secrecy) и правдоподобное отрицание (англ. plausible deniability).
Самый распространенный способ шифрования для мессенджеров, OTR, тоже поддерживает совершенную прямую секретность и правдоподобное отрицание, но требует чтобы все участники были в сети. OpenPGP поддерживает офлайн сообщения, но не предоставляет прямую конфиденциальность и правдоподобие. Olm и, соответственно, OMEMO поддерживают все три требования.[2][3]
Кроме того, существующие решения шифрования мессенджеров, такие как OTR, подвергались критике за отсутствие в них интеграции XMPP. Разработчики Empathy, официальный мессенджер оболочки Gnome, указали это как причину из-за которой эта часто желаемая функция[4] не была встроена.[5] Благодаря интеграции в чат протоколы, OMEMO является улучшением в этом отношении.
Протокол был разработан и реализован Андреасом Штраубом в 2015 году в рамках инициативы Google Summer of Code. Целью проекта была реализация многоконечного сквозного шифрования на базе Axolotl для Android мессенджера Conversations[6]. Оно было встроено в Conversations осенью 2015 года и одновременно предложено Фонду стандартов XMPP (XMPP Standards Foundation, XSF) в качестве расширения (XMPP Extension Protocol, XEP), которое было принято как XEP-0384 в декабре 2016 года.
С сентября 2016 года спецификация OMEMO больше не использует протокол Signal, а вместо этого применяет собственную реализацию Olm, написанную для сетевого протокола Matrix.[7]
В октябре 2015 года проект ChatSecure объявил, что планирует создать свой шифрующий мессенджер на основе «Conversations» и работать над мессенджер OMEMO для iOS.[8] Эта поддержка OMEMO доступна с января 2017 года.[9]
Первая экспериментальная версия расширения OMEMO для кросс-платформенного клиента XMPP Gajim была опубликована 26 декабря 2015 года.[10]