Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Sicurezza dell'instant messaging

I programmi di chat non sono sicuri al cento per cento. Le comunicazioni viaggiano senza protezione ed è facile intercettarle. Ecco come proteggere le proprie comunicazioni
I programmi di chat non sono sicuri al cento per cento. Le comunicazioni viaggiano senza protezione ed è facile intercettarle. Ecco come proteggere le proprie comunicazioni
Link copiato negli appunti

L'instant messaging è una forma di comunicazione più rapida e meno dispersiva del telefono o della posta elettronica. È diffusa in uffici, case, scuole, aziende e in tutti i posti in cui arrivi una connessione Internet. Ma c'è un problema di fondo: non sono sicuri al cento per cento. In questo articolo vedremo quindi cosa si rischia utilizzando questi sistemi e come prevenire tali problemi con dei semplici software gratuiti.

Sistemi, protocolli e vulnerabilità

Un sistema di instant messaging è formato sostanzialmente da due parti

  • Il client cioè il programmino installato sul nostro PC
  • Il protocollo che viene utilizzato

Il protocollo quindi non è legato unicamente a quel client, ed è per questo che esistono programmi come Digsby e Pidgin, ossia soluzioni che permettono all'utente di utilizzare con lo stesso applicativo più sistemi di messaggistica istantanea.

È quindi facile comprendere che un primo punto debole è certamente il programma che utilizzeremo per accedere al sistema scelto; ricordiamo sempre che dietro a un programma c'è un essere umano, ma soprattutto c'è un'orda di persone che cerca di scoprire costantemente gli errori commessi dal programmatore!

Per rendersi conto delle vulnerabilità esistenti basta cercarle sul web, scoprendo la numerosità e la varietà delle stesse: vanno dal classico Denial Of Service, al Buffer Overflow per l'esecuzione di codice arbitrario, fino ad arrivare a bug più innovativi che permettono di attivare la webcam della vittima a sua insaputa. La protezione dai bug dei programmi è sempre la più semplice e l'unica efficace: mantenere il programma aggiornato all'ultima versione disponibile e diffidare da richieste o da contatti sospetti.

Un discorso più interessante è possibile farlo sui protocolli utilizzati dai vari sistemi di messaggistica. Su Wikipedia è disponibile un'utile tabella comparativa tra i vari protocolli. Tra le funzionalità offerte, il costo, la licenza sotto cui sono rilasciati, ciò che balza all'occhio per i sistemi più diffusi citati sopra è che nessuno di loro prevede nativamente la cifratura dei dati. Ciò vuol dire che tutto ciò che scriviamo nel nostro programmino, viaggia sulla rete in chiaro fino al destinatario.

Per vedere quello che scriviamo quindi sarà sufficiente intercettare il traffico, niente di più! Questo problema però non è definibile come "bug", infatti è semplicemente stata una scelta dei progettisti che hanno ideato il protocollo per un utilizzo che non richiedeva alcun requisito di sicurezza. Il problema è nato nel momento in cui si è chiesto al protocollo di fare qualcosa per cui non era destinato, come per esempio trasportare in modo sicuro comunicazioni sensibili. Ma quindi, quando bisogna preoccuparsi? Nel prossimo paragrafo chiariremo anche questo dubbio.

Scenari

Nel paragrafo precedente è stato detto che bisogna intercettare il traffico generato da un utente per intercettare le sue conversazioni. Perciò gli scenari a cui ci riferiamo sono differenti dall'ambito casalingo, ma possono essere principalmente reti con più utenti come uffici o campus. Questi luoghi sono sempre più cablati con una concezione "switched lan", dove ogni dominio di collisione è limitato al proprio segmento fisico di rete, al contrario degli hub utilizzati in passato. Infatti in quest'ultimo caso bastava essere un utente della rete per intercettare tutto il traffico degli altri utenti, ma nelle reti attuali un malintenzionato deve ingegnarsi in uno dei seguenti modi:

  • Men in the Middle con Arp Spoofing: inviando Arp Reply gratuity, la macchina attaccante indica il proprio indirizzo MAC come quello del default gateway. Analogamente al Default Gateway dice di essere la macchina che origina il flusso di dati. In questo modo la comunicazione avviene attraverso il malintenzionato, in modo (quasi) trasparente agli interlocutori. L'unico modo per
  • Porta in SPAN sullo Switch: sugli apparati di rete è possibile impostare una porta per ricevere una copia di tutto il traffico che transita sulle altre porte (SPAN). Così facendo gli utenti non potranno mai sapere di essere spiati o meno dal malintenzionato.
  • Log sul default gateway: il default gateway è il punto di uscita del traffico di tutti gli utenti. Generalmente si tratta di un Gateway o di un Firewall o di una macchina che ricopre entrambi i ruoli. In ogni caso basterebbe loggare il traffico per intercettare tutte le comunicazioni in uscita.

Una volta messa in atto una strategia delle tre citate sopra, tutte le nostre conversazioni saranno sotto gli occhi dell'attaccante:

Figura 1: sniffing di una passwordsniffing di una password con wireshark

Nell'immagine c'è un esempio di traffico sniffato con Wireshark, quindi un semplice elenco di pacchetti che transitano per la nostra interfaccia di rete. La conversazione intercettata è evidenziata: i caratteri digitati sulla tastiera vengono codificati in ASCII percorrono a ritroso tutta la pila protocollare fino ad arrivare a livello 3 dove compaiono nel payload dei pacchetti IP. Durante questo tragitto alla conversazione vengono aggiunti caratteri di controllo, caratteri speciali, ma ci sono dei programmi che a partire da questo traffico, riconoscono le conversazioni e le formattano in un modo ordinato, magari suddiviso per utente, favorendo ancora di più il lavoro del malintenzionato.

Con il tempo i sistemi di messaggistica istantanea hanno aggiunto ulteriori servizi alla chat: trasferimento file, videochiamata  e così via. Ma poiché la decisione di non prevedere alcuna protezione dei dati è stata presa in fase progettuale del sistema, tale vulnerabilità si è ripercossa su tutte le funzionalità aggiuntive così come per la chat. Sarà quindi possibile intercettare un file trasferito con la stessa facilità con cui saranno intercettate le comunicazioni.

Contromisure

Come in tutti i casi di protezione di dati, la soluzione più ovvia è trasmettere dei dati comprensibili solo dal legittimo destinatario, detto in breve "cifrare i nostri dati". Sono stati sviluppate diverse applicazioni a supporto dei sistemi di istant messaging: prendendo come esempio MSN Messenger, è disponibile per gli utenti un'estensione del client chiamato Messenger Plus!. Tramite questa applicazione possiamo aggiungere a Messenger un'insieme di funzionalità aggiuntive, tra cui crYpt. Per l'installazione di questo componente bisogna dotarsi di Messenger Plus! e successivamente scaricare lo script del programma dal link appena citato.

Da questo momento in poi, crYpt ci mette a disposizione 4 comandi testuali da digitare nella classica finestra di conversazione: /crypt <testo> per cifrare una porzione di testo, /autocrypt ON o OFF per abilitare o disabilitare la cifratura di tutti i messaggi e /cryptpassword <password> per stabilire la chiave da utilizzare durante la cifratura. Il testo da noi digitato sarà quindi protetto da un non ben specificato sistema di cifratura a 128 bit, con un sistema di chiave precondivisa. Ovviamente sarà necessario che anche il nostro interlocutore abbia installato lo stesso componente e che la chiave inserita dopo il comando /cryptpassword sia la stessa.

Come in tutti i sistemi a chiave simmetrica precondivisa, il problema risiede nello scambio della chiave stessa: quando scambiarsela e in che modo? Il problema è noto nel campo della crittografia, ed è risolto dai sistemi a cifratura asimmetrica, anche detti a chiave pubblica e privata.

Questi concetti sono stati applicati anche ai sistemi di messaggistica oggetto dell'articolo, implementandoli in diversi software. Un esempio è SimpLite, un programma utilizzabile gratuitamente nella sua versione base, disponibile per la maggior parte dei sistemi di instant messaging (MSN, ICQ/AIM, Yahoo!, Google) e integrabile perfettamente con i principali client.

L'installazione del programma è intuitiva, e viene seguita da un wizard di configurazione durante il quale verrà chiesto di indicare il programma di messaggistica utilizzato, il tipo di connessione (se diretta, via proxy e così via) e verrà richiesto, come già visto in altri programmi, di muovere il mouse in modo casuale per generare le chiavi di cifratura. Così facendo creeremo dell'entropia all'interno del proprio sistema rendendo le chiavi il più possibile casuali. Quest'ultime sono effettivamente le chiavi pubblica e privata legate al nostro account che saranno utilizzate con il sistema RSA per autenticare i nostri interlocutori.

Una volta terminata la configurazione, insieme al nostro client di messaggistica verrà avviato anche SimpLite, che resterà in attesa di conversazioni.

Figura 2: Interfaccia di SimpLiteInterfaccia di SimpLite

Quando verrà inviato o ricevuto un messaggio, SimpLite rileverà se una copia del programma è utilizzata anche dal nostro interlocutore. In tal caso verrà avviato un sistema di autenticazione che richiederà la nostra conferma per accettare o meno la chiave pubblica ricevuta; in caso affermativo sarà avviata un'autenticazione RSA e saranno create delle chiavi di cifratura valide unicamente per quella sessione.

Da questo momento in poi SimpLite provvederà a cifrare i nostri messaggi (e quindi a decifrare i messaggi ricevuti) mediante l'algoritmo AES con una chiave a 128 bit. Nell'interfaccia del programma potremmo tenere traccia delle conversazioni in atto (sotto le voci Authenticated/Encrypted e Unencrypted) suddivise per sicurezza.

Se il malintenzionato a questo punto intercettasse il nostro traffico, non potrebbe decifrare nulla, poiché solo il proprietario della chiave pubblica con cui abbiamo cifrato il messaggio potrà farlo (tramite la sua chiave privata). Eventuali modifiche apportate al pacchetto verrebbero inoltre identificate. SimpLite infatti protegge l'integrità dei messaggi con l'hashing SHA1, ossia una funzione non invertibile che genera un digest univoco del nostro messaggio.

In questo modo, le nostre conversazioni che prima viaggiavano in chiaro, con SimpLite diventano canali di comunicazione autenticati, protetti e integri, pronti per trasportare anche dati sensibili.

Ti consigliamo anche