OMEMO
マルチクライアントエンドツーエンド暗号化のためのXMPPの拡張
From Wikipedia, the free encyclopedia
OMEMOとは、Andreas Straubによって開発された複数クライアントエンドツーエンド暗号化のためのExtensible Messaging and Presence Protocol(XMPP)の拡張である。OMEMOはDouble Ratchetアルゴリズムを使用しており、Straubは「複数の末端から複数の末端への暗号化を提供し、一部のクライアントがオフラインだとしても複数のクライアント間でメッセージを安全に同期できるようにします」と述べている[1]。「OMEMO」という名前は「OMEMO Multi-End Message and Object Encryption」の再帰的頭字語である。OMEMOはDouble RatchetアルゴリズムとPersonal Eventing Protocol(PEP、XEP-0163)に基づいたオープン標準である[2]。OMEMOはメッセージ同期とオフライン配信で後方秘匿性、前方秘匿性、否認可能性を提供する。

特徴
OTRと比較して、OMEMOプロトコルは複数対複数の暗号化チャット、オフラインメッセージの順番待ち、前方秘匿性、ファイル転送、検証可能性と否認可能性を提供するが、メッセージの大きさの計算量がわずかに大きくなる[3]。
歴史
OMEMOは2015年のGoogle Summer of CodeでAndreas Straubによって開発され初めて実装された。プロジェクトの目標はConversationsと呼ばれるAndroidのXMPPを基にしたインスタントメッセンジャーにDouble Ratchetアルゴリズムを基にした複数の末端から複数の末端への暗号化方法を実装することであった。OMEMOはConversationsに導入され、2015年秋にXMPP Extension Protocol(XEP)の提案としてXMPP Standards Foundation(XSF)に提出され、2016年12月にXEP-0384として承認された[1]。
2016年7月、ChatSecureプロジェクトは次のリリースでOMEMOを実装すると発表した。OMEMOに対応したChatSecure v4.0は2017年1月17日に公開された[4][5]。
クロスプラットフォームXMPPクライアントのGajim向けのOMEMOプラグインの最初の実験的リリースは2015年12月26日に公開された[6]。
2016年6月、非営利コンピュータセキュリティコンサルティングファームのRadically Open SecurityがOMEMOプロトコルの分析結果を公開した[7]。
クライアントの対応
OMEMOに対応するクライアントの例[注釈 1]:
- BeagleIM(macOS)[9]
- ChatSecure(iOS)[10]
- Conversations(Android)
- Converse.js(ブラウザベース)[11]
- Dino(Linux、macOS)[12]
- Gajim(Linux、Windows、BSD)[13][14]
- Kaidan(Linux)[15]
- Movim(ブラウザベース)[16]
- 公式プラグイン経由のPsi(Linux、Windows、macOS)[17]
- 公式プラグイン経由のPsi+(Linux、Windows、macOS、Haiku、FreeBSD)[18]
- 実験的プラグイン経由のPidginやFinchなどのlibpurpleを利用するクライアント[19]
- libpurpleプラグインに基づいたXtra経由のAdium[20]
- 実験的プラグイン経由のProfanity(BSD、Linux、macOS、Windows)[21]
- SiskinIM(iOS)[22]