XMPP

Introduzione

Con questo post proseguiamo il nostro approfondimento sulle migliori soluzioni per la comunicazione che a nostro parere costituiscono valide alternative a quelle più note e diffuse, ma che ci sembra abbiano caratteristiche tali da consentire, soprattutto all’utente, di avere il pieno controllo sui propri dati personali.

Non è nostro intento creare dei confronti tra le soluzioni che descriviamo perché riteniamo che non sia corretto e che è l’utente a scegliere la risorsa che meglio preferisce.

Cos’è XMPP?

XMPP è un protocollo e precisamente “Extensible Messaging and Presence Protocol, un insieme di tecnologie aperte per la messaggistica istantanea, presenza, chat multi-party, chiamate vocali e video, collaborazione, middleware leggero, syndication di contenuti e routing generalizzato di dati XML.” (questa è la definizione che troviamo sul sito ufficiale di XMPP - La traduzione in italiano è nostra e non è ufficiale).

Il protocollo XMPP è stato formalizzato nel 2004 dallo IETF (The Internet Engineering Task Force) con il nome “Extensible Messaging and Presence Protocol (XMPP)”.

Sempre sul sito ufficiale, più specificamente nella sezione FAQ, leggiamo

XMPP is a powerful, open, secure, standards-based protocol. It is a freely-available technology for real-time communication, which powers a wide range of applications including instant messaging, presence, collaboration, voice and video calling, Internet of Things, tactical military messaging, mobile cloud push, and more.”.

Pertanto, questo protocollo viene utilizzato per la comunicazione in tempo reale che è potenziata da un ampio spettro di applicazioni tra le quali quelle di messaggistica, presenza, collaborazione, chiamate voce e video, Internet of Things, messaggistica tattica militare, mobile cloud push e altre.

In buona sostanza, si tratta di un potente protocollo che consente di realizzare numerose applicazioni.

In realtà, com’è spiegato nelle FAQ, il protocollo XMPP è utilizzato certamente per la messaggistica istantanea che si basa su una rete di chat federata composta da migliaia di server.

Tuttavia, sempre nelle FAQ, viene ulteriormente precisato che il protocollo XMPP è anche utilizzabile per i sistemi di segnalazione machine-to-machine (M2M), sia in presenza sia in assenza di una federazione. Con il protocollo XMPP si possono sviluppare e gestire sistemi IoT per il controllo da remoto di qualsiasi oggetto o device.

Questa breve descrizione del protocollo XMPP non lascia dubbi sulle sue potenzialità evidentemente in ambito applicativo.

Non c’è dubbio che le applicazioni più diffuse del protocollo XMPP sono quelle relative alla messaggistica istantanea, tanto che esso - che risale al 1999 - è stato utilizzato da diverse grandi società e continua ad essere ancora oggi la base per diversi progetti.

Il sito XMPP alla sezione software-server fornisce informazioni relativamente ad alcuni progetti, tra i quali menzioniamo Prosody IM.

Le caratteristiche del protocollo XMPP

Prima di proseguire nel nostro approfondimento, riteniamo utile indicare le caratteristiche del protocollo XMPP così come ufficialmente dichiarate sul sito XMPP alla sezione “Overview”.

Non c’è dubbio che si tratta di aspetti che colpiscono decisamente (la cui traduzione è nostra e non è ufficiale) e che riprendiamo dal sito web ufficiale e riportiamo di seguito:

  • Open — i protocolli XMPP sono liberi, aperti, pubblici e facilmente comprensibili; inoltre, esistono molteplici implementazioni sotto forma di client, server, componenti server e librerie di codice.
  • Standard — la Internet Engineering Task Force (IETF) ha formalizzato i protocolli di streaming XML di base come una tecnologia approvata di messaggistica istantanea e presenza.
  • Comprovato — le prime tecnologie Jabber/XMPP sono state sviluppate da Jeremie Miller nel 1998 e sono ora abbastanza stabili; centinaia di sviluppatori stanno lavorando su queste tecnologie, ci sono decine di migliaia di server XMPP in esecuzione su Internet oggi, e milioni di persone usano XMPP per la messaggistica istantanea attraverso servizi pubblici come Google Talk e implementazioni XMPP presso organizzazioni in tutto il mondo.
  • Decentralizzato — l’architettura della rete XMPP è simile a quella della posta elettronica; di conseguenza, chiunque può installare il proprio server XMPP.
  • Sicuro — qualsiasi server XMPP può essere isolato dalla rete pubblica (ad esempio, su una intranet aziendale) e una robusta sicurezza usando SASL e TLS è stata incorporata nel nucleo specifiche XMPP. Inoltre, la comunità di sviluppatori XMPP sta lavorando attivamente sulla crittografia end-to-end per alzare ulteriormente il livello di sicurezza.
  • Estensibile — usando la potenza di XML, chiunque può costruire funzionalità personalizzate sui protocolli di base; per mantenere l’interoperabilità, le estensioni comuni sono pubblicate nella serie XEP, ma si possono mantenere le proprie estensioni private se si vuole.
  • Flessibile — Le applicazioni XMPP oltre alla messaggistica instantanea includono la gestione della rete, la sindacazione dei contenuti, gli strumenti di collaborazione, la condivisione dei file, il gioco, il monitoraggio dei sistemi remoti, i servizi web, il middleware leggero, il cloud computing e molto altro.
  • Diverso — una vasta gamma di aziende e progetti open-source usano XMPP per costruire e distribuire applicazioni e servizi in tempo reale.

Non intendiamo spostare il nostro intervento su un piano molto tecnico, ma chiunque fosse interessato potrà leggere la documentazione disponibile sul sito web di XMPP.
Non v’è dubbio che per apprezzare al meglio il protocollo XMPP sarebbe opportuno avere anche minime conoscenze informatiche per comprendere l’architettura, lo sviluppo e altre dinamiche.

Proveremo comunque a dipanare i principali dubbi nel prosieguo di questo articolo.

Il “core” del protocollo

Sebbene si tratti di aspetti molto tecnici, riteniamo opportuno evidenziare quali siano le caratteristiche del core di XMPP, anche in termini di sicurezza.

Il core del protocollo è:

  • The base XML streaming layer
  • Channel encryption using Transport Layer Security (TLS)
  • Strong authentication using the Simple Authentication and Security Layer (SASL)
  • Use of UTF-8 for complete Unicode support, including fully internationalized addresses
  • Built-in information about network availability (“presence”)
  • Presence subscriptions for two-way authorization
  • Presence-enabled contact lists (“rosters”)

Chi c’è dietro a XMPP?

Tutto è chiarito sul sito di XMPP, perché leggiamo quanto segue:

”La XMPP Standards Foundation (conosciuta anche come XSF e precedentemente Jabber Software Foundation) è un’organizzazione indipendente e senza scopo di lucro per lo sviluppo di standard, la cui missione principale è quella di definire protocolli aperti per la presenza, la messaggistica istantanea e la comunicazione e collaborazione in tempo reale sulla cima dell’Extensible Messaging and Presence Protocol (XMPP) della IETF.” (N.B.: la traduzione è nostra e non è ufficiale).

Ciò è estremamente rilevante al fine di sgombrare il campo da possibili dubbi sulla eventuale presenza di soggetti “business” che, in qualche modo, possono condizionare le decisioni.

XSF è garanzia che un soggetto indipendente e senza scopo di lucro sovrintende i processi relativi al protocollo XMPP.

Sicurezza nella messaggistica: il protocollo OMEMO

Un aspetto importante riguardo allo scambio di messaggi è assicurarsi che ci siano adeguate condizioni di sicurezza in modo da ridurre al minimo i rischi.

E’ stato sviluppato il protocollo OMEMO Multy-End Message and Object Encryption che è una estensione XMPP per la crittografia sicura multi-client end-to-end.

OMEMO

OMEMO È uno standard aperto basato su un Double Ratchet e PEP che può essere usato e implementato liberamente da chiunque.

Peraltro, il protocollo è stato verificato da una terza parte.

A questa pagina è possibile consultare una piccola tabella di confronto delle caratteristiche tra OMEMO e altri protocolli.

Peraltro, a questa pagina è possibile avere traccia del progresso della integrazione di OMEMO nel client (applicazioni) XMPP.

Qual è l’utilizzo concreto per l’utente?

Sin qui abbiamo dovuto esporre alcuni aspetti probabilmente molto tecnici ma che era necessario anteporre alla parte più pratica di questo contributo.

La domanda che ci aspettiamo dal lettore è: “Quali sono gli utilizzi concreti del protocollo XMPP per l’utente?”.

Sul sito XMPP c’è la sezione “Uses” nella quale si possono consultare i progetti per ciascuna delle singole categorie indicate e precisamente :

  1. Instant Messaging;
  2. Internet of Things;
  3. Online Gaming;
  4. Social;
  5. WebRTC.

Tuttavia, XMPP probabilmente è maggiormente noto per i sistemi di messaggistica istantanea (instant messaging) e, quindi faremo riferimento a questi secondo la nostra esperienza con sistemi Apple.

Primo step: avere un account XMPP

La prima cosa da considerare è che per poter utilizzare un sistema di messaggistica istantanea con XMPP è necessario un account che è simile a un indirizzo email, appunto nella forma user@dominio.com

Piccola notazione: alcuni server XMPP hanno il dominio con estensione .im proprio per indicare che si tratta di un sistema instant messaging.

Ci sono diverse soluzioni per creare e utilizzare un account XMPP.

  1. Posso ottenere l’account XMPP da un provider XMPP già esistente (puoi vederlo sul sito ufficiale XMPP qui: https://list.jabber.at).
  2. In alternativa, possiamo decidere di installare una risorsa XMPP open-source su un server e usarla per conto proprio.  

Nel nostro caso, abbiamo optato per entrambe le soluzioni: abbiamo ottenuto un account presso un provider XMPP già esistente e abbiamo installato sul nostro server un servizio XMPP che è Snikket. Riguardo a Snikket, rinviamo a un nostro contributo già pubblicato.

Tra i provider XMPP esistenti, abbiamo provato Tigase e Disroot. Peraltro, è possibile attivare un account anche tramite l’app Beagle che indichiamo di seguito selezionando Preferences->Account->Add.

Quali app utilizzare?

In questo paragrafo descriveremo alcune applicazioni che abbiamo provato su sistemi MacOS e iOS

Per MacOS

Su sistemi MacOS la migliore app, secondo la nostra esperienza, è Beagle che è disponibile su App Store.

Di seguito qualche immagine dell’app presente su App Store

La finestra della chat si presenta come segue

Beagle chat

Possiamo consultare i nostri contatti come nell’immagine seguente

Beagle contacts

Poiché si è detto che con il protocollo XMPP sono possibili anche chiamate e video chiamate, di seguito l’immagine di una videochiamata

Beagle videocall

Riguardo alle preferenze, è possibile gestire le impostazioni generali

Beagle prefgen

Come si vede dall’immagine è possibile scegliere OMEMO per la crittografia di default.

Poi ci sono le preferenze relative agli account

Beagle prefacc

In questa sezione è possibile creare un account qualora non lo si avesse già, cliccando sul pulsante Add; comparirà una finestra all’interno della quale vanno inserite le informazioni per la creazione dell’account.

E quelle avanzate

Beagle prefadv

Per iOS

Riguardo ad iOS, le migliori app a nostro avviso sono :

  1. Siskin IM che è disponibile su App Store;
  2. Snikket che è disponibile su App Store.

Precisiamo che Snikket è un progetto relativamente nuovo e l’app è in fase di completamento ma è basata su Siskin IM di Tigase.

Con la nuova versione 7.0.1 Siskin IM è notevolmente migliorata e molto più stabile.

La privacy

Abbiamo precisato all’inizio che XMPP è un protocollo open standard.

Riguardo alle applicazioni che abbiamo descritto e precisamente Beagle, Siskin IM e Snikket per nessuna di esse gli sviluppatori raccolgono dati personali com’è indicato su App Store.

Il protocollo XMPP, anche mediante l’estensione OMEMO, garantisce un elevato livello di sicurezza che impedisce di accedere al contenuto dei messaggi che risultano criptati sul server e e comunque trasmessi sempre criptati.

XMPP è un protocollo la cui architettura lo rende simile alle email e quindi una soluzione decentralizzata.

Nella fase di creazione di un account XMPP, è l’utente che decide come creare l’account e quindi quale sarà lo username che comporrà il suo indirizzo XMPP. Inoltre, lo stesso utente decide quale nickname utilizzare per il proprio account e cioè quale sarà il nome che gli altri vedranno. Infine, sia per la creazione dell’account sia per il suo utilizzo non è richiesto alcun numero di telefono.

L’utente, non è identificabile se non lo vuole.
L’eventuale presenza di dati identificativi dell’utente nello username potrà rilevare qualora lo stesso utente fornisse il proprio indirizzo XMPP ad altri con i quali scambiare messaggi.

Se si partecipa ad una chat di gruppo o a un canale (qui viene utilizzata l’estensione XMPP definita MUC, acronimo di Multi User Chat) viene visualizzato solo il nickname.

L’utente è l’unico a decidere del proprio account e dei relative informazioni e dati personali.

L’utente ha il controllo suoi propri dati e sul suo account, decidendo quali informazioni modificare e se intende cancellare l’account.

In conclusione, abbiamo indicato alcuni punti fondamentali ma, senza dilungarci ulteriormente sugli aspetti privacy, è sufficiente effettuare una prova creando un account XMPP per la messaggistica istantanea ed utilizzandolo.

Ci si renderà conto da subito che si è di fronte ad una risorsa del tutto diversa da quelle maggiormente note e diffuse che, al contrario, per l’attivazione dell’account richiedono il numero mobile e sono centralizzate facendo capo a un solo soggetto.

Follow us on Mastodon

Stay tuned!