# Conversations (software)

Conversations è un'applicazione di messaggistica istantanea per Android che supporta l'invio di messaggi, immagini e videochiamate crittografate. Si basa in gran parte su standard aperti accettati come Extensible Messaging and Presence Protocol (XMPP) e Transport Layer Security (TLS).
Lo sviluppo è incentrato sulle comunicazioni sicure e l'implementazione di estensioni XMPP importanti per l'utilizzo mobile. Pubblicazioni specializzate ne hanno elogiato la rete di trasmissione decentralizzata e aperta, nonché l'utilizzo semplice e intuitivo già familiare in altre applicazioni. È considerato un serio tentativo di migliorare l'usabilità della messaggistica XMPP ad un livello competitivo.
Il codice sorgente del software è gestito su GitHub e pubblicato ai termini della versione 3 della GNU General Public License (GPL). Conversations può essere installato da F-Droid in cambio di una donazione facoltativa o acquistato da Google Play. Google conta oltre 100.000 installazioni al 2020.

## Storia

Il 24 gennaio 2014 è stato caricato il primo codice nel repository pubblico. La prima version 0.1 ufficiale è stata pubblicata il 24 marzo 2014 quando le chat crittografate per dispositivi mobili guadagnarono grande popolarità sulla scia delle divulgazioni sulla sorveglianza di massa del 2013 (giugno 2013–) e dell'acquisizione di WhatsApp da parte di Facebook (febbraio 2014). Ha presto ricevuto alcune recensioni positive. Nella primavera 2014 è stato incluso su Google Play e dalla versione 0.1.3 del 6 aprile 2014 nel repository di software Android alternativo F-Droid. Dalla versione 0.2 del 12 maggio è supportato l'invio di immagini (trasferimento file, come dati in chiaro o criptati con OpenPGP) e con la versione 0.4 (30 giugno) anche criptate con OTR. La versione 1.0 è uscita il 1 febbraio 2015. Andreas Straub partecipò al Google Summer of Code 2015 per conto di Conversations. Ciò produsse bozze per un nuovo standard di crittografia end-to-end (OMEMO) che vennero inviate alla XMPP Standards Foundation (XSF) per la standardizzazione. Ad ottobre 2015 il progetto ChatSecure annunciò che avrebbe basato la versione Android della sua app sul cuore di Conversations e di essere al lavoro su un'implementazione di OMEMO per iOS.
Il 23 marzo 2018, Conversations 2.0.0 è stato pubblicato. Questa versione rimosse il supporto per la crittografia OTR ed attivato OMEMO in modo predefinito (eccetto nei gruppi pubblici).
La versione 2.3.0 pubblicata a settembre 2018 introdusse il supporto per TLS 1.3.
Durante una presentazione ad una conferenza sulla sicurezza ad ottobre 2018 la Bundespolizei annunciò che avrebbero usato Conversations sui loro cellulari per le comunicazioni interne.
La versione 2.8.0, pubblicata a fine aprile 2020, ha introdotto il supporto alle chiamate audio/video attraverso Jingle.

## Caratteristiche

Conversations supporta nativamente (cioè senza plugin) la crittografia end-to-end (E2E) e quella point-to-point. L'app comunica con i server XMPP usando Transport Layer Security (TLS), mentre per la crittografia E2E è possibile scegliere OMEMO e OpenPGP.
Consente ai vari client/dispositivi di effettuare l'accesso ad un account contemporaneamente (usando XMPP) e di consegnare i messaggi a client diversi (sincronizzazione) usando l'estensione del protocollo "Message Carbons" (XEP-0280) e l'algoritmo Axolotl.
Possono essere inviati i file, con crittografia facoltativa. Le immagini vengono mostrate inline con i messaggi testuali nella schermata di conversazione.
Trattandosi di un client XMPP, Conversations fornisce intrinsecamente l'interoperabilità con altri software XMPP e non è vincolato all'infrastruttura dei server del produttore.
* Chat multi utente (MUC)
* Integrazione con la rubrica opzionale
* Supporto per account/indirizzi multipli
* Supporto alle videochiamate

### Panoramica dei XEP implementati

Conversations padroneggia i seguenti XEP, abbreviazione di XMPP Extension Protocol, le estensioni ufficiali del protocollo XMPP:
| XEP-0027: Current Jabber OpenPGP Usage XEP-0030: Service Discovery XEP-0045: Multi-User Chat (MUC) XEP-0048: Bookmarks XEP-0084: User Avatar XEP-0085: Chat State Notifications XEP-0092: Software Version XEP-0115: Entity Capabilities XEP-0163: Personal Eventing Protocol (avatar e nick) XEP-0166: Jingle (usato solo per trasferimenti file) XEP-0172: User Nickname XEP-0184: Message Delivery Receipts (solo risposta) XEP-0191: Blocking command XEP-0198: Stream Management XEP-0199: XMPP Ping XEP-0234: Jingle File Transfer | XEP-0237: Roster Versioning XEP-0245: The /me Command XEP-0249: Direct MUC Invitations (solo ricezione) XEP-0260: Jingle SOCKS5 Bytestreams Transport Method XEP-0261: Jingle In-Band Bytestreams Transport Method XEP-0280: Message Carbons XEP-0308: Last Message Correction XEP-0313: Message Archive Management XEP-0319: Last User Interaction in Presence XEP-0333: Chat Markers XEP-0352: Client State Indication XEP-0357: Push Notifications XEP-0363: HTTP File Upload XEP-0368: SRV records for XMPP over TLS XEP-0377: Spam Reporting XEP-0384: OMEMO Encryption |