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".

Logo di OMEMO

È 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.

Caratteristiche modifica

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]

Storia modifica

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]

Supporto dai client modifica

Client selezionati che supportano OMEMO (esiste anche un elenco completo dei client [5] ):

Supporto dalle librerie modifica

  • Smack supporta OMEMO utilizzando i due moduli smack-omemo e smack-omemo-signal [9]
  • XMPPFramework (macOS, iOS, tvOS) [10] supporta OMEMO tramite l'estensione OMEMOModule [11] se utilizzato in combinazione con la libreria SignalProtocol-ObjC [12] .

Note modifica

  1. ^ (EN) OMEMO Multi-End Message and Object Encryption, su conversations.im. URL consultato il 22 gennaio 2019.
  2. ^ ChatSecure iOS v3.2.3 - XMPP Push, su chatsecure.org, 25 luglio 2016. URL consultato il 7 settembre 2016.
  3. ^ ChatSecure v4.0 - OMEMO and Signal Protocol, su chatsecure.org, 17 gennaio 2017. URL consultato il 7 febbraio 2017.
  4. ^ (EN) OMEMO: Cryptographic Analysis Report (PDF), su conversations.im. URL consultato il 2016-06.
  5. ^ (EN) Are we OMEMO yet?, su omemo.top. URL consultato il 22 gennaio 2019.
  6. ^ chatsecure.org. URL consultato il 17 gennaio 2017.
  7. ^ (EN) GitHub Converse.js, su github.com. URL consultato il 20 novembre 2019.
  8. ^ dino.im. URL consultato il 6 novembre 2017.
  9. ^ (EN) Paul Schaub, Smack v4.2 Introduces OMEMO Support!, su community.igniterealtime.org. URL consultato l'11 luglio 2017.
  10. ^ GitHub XMPPFramework
  11. ^ GitHub XMPPFramework OMEMO module
  12. ^ GitHub SignalProtocol-ObjC

Collegamenti esterni modifica