OMEMO
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.
Caratteristiche
modificaRispetto 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
modificaIl 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
modificaClient selezionati che supportano OMEMO (esiste anche un elenco completo dei client [5] ):
- BeagleIM (macOS)
- ChatSecure (iOS) [6]
- Conversations (Android)
- Converse.js (basato su browser) [7]
- Dino (Linux, macOS) [8]
- Gajim tramite plugin ufficiale (Linux, Windows, BSD)
- Monal (iOS)
- Psi tramite plugin ufficiale (Linux, Windows, macOS)
- Psi + tramite plugin ufficiale (Linux, Windows, macOS, Haiku, FreeBSD)
- client libpurple come Pidgin o Finch tramite plugin sperimentali
- Adium tramite un Xtra basato sul plugin libpurple
- Profanity tramite plugin sperimentale (BSD, Linux, macOS, Windows)
- SiskinIM (iOS)
Supporto dalle librerie
modificaNote
modifica- ^ (EN) OMEMO Multi-End Message and Object Encryption, su conversations.im. URL consultato il 22 gennaio 2019.
- ^ ChatSecure iOS v3.2.3 - XMPP Push, su chatsecure.org, 25 luglio 2016. URL consultato il 7 settembre 2016.
- ^ ChatSecure v4.0 - OMEMO and Signal Protocol, su chatsecure.org, 17 gennaio 2017. URL consultato il 7 febbraio 2017.
- ^ (EN) OMEMO: Cryptographic Analysis Report (PDF), su conversations.im. URL consultato il 2016-06.
- ^ (EN) Are we OMEMO yet?, su omemo.top. URL consultato il 22 gennaio 2019.
- ^ chatsecure.org. URL consultato il 17 gennaio 2017.
- ^ (EN) GitHub Converse.js, su github.com. URL consultato il 20 novembre 2019.
- ^ dino.im. URL consultato il 6 novembre 2017.
- ^ (EN) Paul Schaub, Smack v4.2 Introduces OMEMO Support!, su community.igniterealtime.org. URL consultato l'11 luglio 2017.
- ^ GitHub XMPPFramework
- ^ GitHub XMPPFramework OMEMO module
- ^ GitHub SignalProtocol-ObjC
Collegamenti esterni
modifica- Sito ufficiale, su conversations.im.
- XEP-0384: Crittografia OMEMO (sperimentale)
- Libreria Python per l'implementazione di OMEMO in altri client
- Implementazione del protocollo OMEMO in C
- OMEMO Top - Elenco dei client di messaggistica istantanea che supportano OMEMO