OMEMO是由Andreas Straub开发的XMPP协议的端到端加密扩展程序。Straub 称OMEMO使用双棘轮算法以“提供多端到多端加密,允许在多个客户端之间安全地同步消息,即使其中一些是离线状态”。[1] "OMEMO 是"OMEMO Multi-End Message and Object Encryption"的递归缩写。 它是一个基于双棘轮算法和个人事件协议(Personal Eventing Protocol, XEP-0163)的开放标准。[2] OMEMO 提供前向保密、消息同步和离线传达。
与OTR(XMPP的另一个加密扩展)相比,OMEMO协议提供多端到多端加密通信、离线消息队列、前向保密、文件传输和建立在略微更大的消息体积上的可核实性和可否认性。[3]
该协议最初是作为Google编程之夏一个计划,由Andreas Straub于2015年开发,计划的目的是实现使用双棘轮算法的多端到多端加密协议到名为Conversations的Andorid即时通信客户端,该协议于Conversations首次实现并被提交至XMPP标准基金会 (XSF),并在2016年12月被接受,成为XEP-0384扩展。[1]
2016年7月,ChatSecure计划也宣布其将实现OMEMO。并在2017年1月17日的v4.0版本中支持。[4][5]
跨平台XMPP客户端Gajim的OMEMO插件在2015年12月26日可用。[6]
2016年6月,非盈利计算机安全咨询公司Radically Open Security发布了对OMEMO协议的分析。[7]
部分支持OMEMO的IM客户端列表[8]: