OMEMO

OMEMO是由Andreas Straub开发的XMPP协议的端到端加密扩展程序。Straub 称OMEMO使用双棘轮算法以“提供多端到多端加密，允许在多个客户端之间安全地同步消息，即使其中一些是离线状态”。 
"OMEMO 是"OMEMO Multi-End Message and Object Encryption"的递归缩写。
它是一个基于双棘轮算法和个人事件协议（Personal Eventing Protocol, XEP-0163）的开放标准。
OMEMO 提供前向保密、消息同步和离线传达。

特性 
与OTR（XMPP的另一个加密扩展）相比，OMEMO协议提供多端到多端加密通信、离线消息队列、前向保密、文件传输和建立在略微更大的消息体积上的可核实性和可否认性。

历史 
该协议最初是作为Google编程之夏一个计划，由Andreas Straub于2015年开发，计划的目的是实现使用双棘轮算法的多端到多端加密协议到名为Conversations的Andorid即时通信客户端，该协议于Conversations首次实现并被提交至XMPP标准基金会 (XSF)，并在2016年12月被接受，成为扩展。

2016年7月，ChatSecure计划也宣布其将实现OMEMO。并在2017年1月17日的v4.0版本中支持。

跨平台XMPP客户端Gajim的OMEMO插件在2015年12月26日可用。

2016年6月，非盈利计算机安全咨询公司Radically Open Security发布了对OMEMO协议的分析。

客户端支持情况 

部分支持OMEMO的IM客户端列表:

 (macOS)
 ChatSecure (iOS)
 Conversations (Android)
Converse.js (基于浏览器)
 Dino (Linux, macOS)
 Gajim 通过官方插件 (Linux, Windows, BSD)
 Monal (iOS)
  (基于浏览器)
 Psi 通过官方插件 (Linux, Windows, macOS)
 Psi+ 通过官方插件 (Linux, Windows, macOS, Haiku, FreeBSD)
 libpurple客户端Pidgin或Finch等等，通过实验性插件 
 Adium 通过基于的libpurple插件
  通过实验性插件 (BSD, Linux, macOS, Windows)
  (iOS)

库支持情况 
 Smack使用两个模组smack-omemo and smack-omemo-signal支持OMEMO。
 XMPPFramework (macOS, iOS, tvOS)  通过OMEMOModule扩展支持OEMMO。

参考来源

外部链接 
 XEP-0384: OMEMO Encryption 
 实现OMEMO的Python库 
 C语言的OMEMO协议实现 
  - 各客户端OMEMO支持的排行榜

自由安全软件
加密协议
互联网隐私软件
即時通訊
XMPP