OMEMO è un'estensione dell'Extensible Messaging and Presence Protocol (XMPP) per la crittografia end-to-end multi-client sviluppata da Andreas Straub. Secondo Straub, OMEMO utilizza l'algoritmo Double Ratchet "per fornire una crittografia da multi-end a multi-end, consentendo la sincronizzazione sicura dei messaggi tra più client, anche se alcuni di essi non sono in linea". Il nome "OMEMO" è un acronimo ricorsivo che sta per "OMEMO Multi-End Message and Object Encryption".
È uno standard aperto basato sull'algortimo Double Ratchet e sul Personal Eventing Protocol (PEP, XEP-0163).
OMEMO offre segretezza futura e negabilità con la sincronizzazione dei messaggi e la consegna offline.
Rispetto a OTR, il protocollo OMEMO offre chat crittografate molti-a-molti, accodamento dei messaggi offline, forward secrecy, trasferimento di file, verificabilità e negabilità a scapito di un overhead leggermente più grande delle dimensioni dei messaggi.[1]
Il protocollo è stato sviluppato e implementato per la prima volta da Andreas Straub come progetto al Google Summer of Code del 2015. L'obiettivo del progetto era quello di implementare uno schema di crittografia da multi-end a multi-end basato sull'algoritmo Double Ratchet in un client per Android di messaggistica istantanea basato su XMPP, chiamato Conversations.
È stato introdotto in Conversations e presentato alla XMPP Standards Foundation (XSF) come XMPP Extension Protocol (XEP) proposto nell'autunno 2015 ed è stato accettato come XEP-0384 a dicembre 2016.
Nel luglio 2016, il progetto ChatSecure ha annunciato che avrebbero implementato OMEMO nelle versioni successive. ChatSecure v4.0 supporta OMEMO ed è stato pubblicato il 17 gennaio 2017.[2][3]
Una prima versione sperimentale di un plugin OMEMO per il client XMPP multipiattaforma Gajim è stata resa disponibile il 26 dicembre 2015.
Nel giugno 2016, la società di consulenza di sicurezza informatica no profit Radically Open Security ha pubblicato un'analisi del protocollo OMEMO.[4]
Client selezionati che supportano OMEMO (esiste anche un elenco completo dei client [5] ):