Oct 262010
 

crypto2

Ovvero usare la posta elettronica in piena sicurezza

Articolo originale di Maurizio Antonelli

Oltre che come documentazione per gli interessati, spero vivamente che possa far aumentare la consapevolezza della non sicurezza dello strumento “posta elettronica” e contribuisca a far adottare agli utenti gli adeguati strumenti di implementazione.

Iniziamo con questo concetto fondamentale: “La posta elettronica non è uno strumento sicuro”.

Infatti, quasi tutte le e-mail che viaggiano in rete sono in chiaro, senza alcuna forma di codifica. Come ben saprete, un messaggio di posta elettronica, da quando parte dal PC del suo mittente a quando arriva al PC del suo destinatario, attraversa diverse macchine in rete, ognuna delle quali si occupa di “instradarlo” nella giusta direzione. Chiunque si trovi ai comandi di una qualsiasi di queste macchine può quindi visualizzare (sniffare) questi messaggi, con grande rischio per la privacy del mittente e del destinatario.



Ancora: viaggiano in chiaro anche UserID e Password nella fase di autenticazione ai server POP3 (posta in entrata) e SMTP (posta in uscita). Per questo motivo è sempre buona norma utilizzare dei server che forniscano il servizio di autenticazione tramite criptazione in TSL o in SSL, onde evitare che qualcuno prenda il controllo della propria casella e-mail.

Altro problema: il mittente di un’e-mail non è mai garantito. Con pochissimi accorgimenti si può far credere ai più sprovveduti di essere chiunque.

Ad esempio con Mozilla Thunderbird. Nella configurazione degli account di posta chiunque può impostare un falso mittente. Posso far credere a chiunque di essere un’autorità, una banca o qualsiasi altra cosa. Semplicemente così posso “imbrogliare” tranquillamente il 90%-95% degli utenti. In pochi saranno in grado di accorgersi delle anomalie che saranno ancora presenti comunque negli header del messaggio di posta. Ulteriori trucchetti, che non illustro qui, possono far scomparire anche queste restanti tracce… Et voilà… Il gioco è fatto.

Criptiamo la posta

Iniziamo con il criptare la posta. In questo modo potrà leggere correttamente il nostro messaggio solo chi vorremo noi.

Il mondo da sempre è pieno di sistemi di codifica. I più semplici: anagrammare le parole, sostituire i caratteri e molti altri metodi, più o meno sofisticati.

Facciamo un esempio:

la nostra e-mail viaggerà in rete sotto forma di byte, sotto forma di valori X compresi tra 0 e 255. Sostituiamo a questi valori X i valori X+2 per X compreso tra 0 e 253. Sostituiamo poi a 254 e 255 rispettivamente 0 e 1. Abbiamo appena inventato una chiave di codifica. Solo chi possiederà questa chiave (perché l’ha avuta da me o perché l’ha scoperta) sarà in grado di capire il contenuto del messaggio, gli altri no.

Quello illustrato sopra è un semplice esempio di codifica a chiave simmetrica: mittente e destinatario useranno la stessa chiave, il primo per codificare ed il secondo per decodificare.

Non è un sistema utile per quello che sarà il nostro scopo, poiché non sarà un sistema estendibile a terzi. Se, infatti, un utente A ed un utente B utilizzano una chiave di codifica per le proprie comunicazioni, questa non potrà essere utilizzata da A con l’utente C. Infatti, decaderebbe la privacy tra A e B.

Se l’utente A, per superare questo problema, inventasse ed utilizzasse una chiave per ogni altro utente, avrebbe da gestire un numero enorme di sistemi di codifica e ben presto il sistema diventerebbe difficilmente gestibile.

Soluzione al problema: il certificato a chiave asimmetrica.

Verrà adottato un sistema che utilizzerà un certificato composto da due chiavi distinte, una privata ed una pubblica.

La chiave privata dovrà rimanere esclusivamente nelle mani del proprietario del certificato. Andrà conservata con assoluta attenzione. Verrà utilizzata dall’utente possessore per decriptare i messaggi che saranno indirizzati a lui ed in più sarà utilizzata per apporre al messaggio una firma digitale che ne garantirà la reale identità del mittente.

La chiave pubblica potrà, invece, essere distribuita al mondo intero, senza il rischio di incorrere in alcun pericolo. Essa verrà utilizzata per criptare i messaggi indirizzati al proprietario del relativo certificato; solo il possessore della relativa chiave privata potrà decriptare il messaggio. Chiunque altro vedrà una serie di byte/caratteri senza alcun significato. Inoltre, verrà utilizzata per verificare la firma digitale che è stata apposta con la chiave privata.

La chiave pubblica potrà essere distribuita senza controllo a chiunque. Il fatto che cada in mani estranee non costituirà alcun pericolo. La massima attenzione dovrà essere rivolta esclusivamente alla chiave privata, che dovrà rimanere rigorosamente nelle mani del leggittimo proprietario. Se quest’ultima non cadrà in mani estranee, il sistema sarà sicuro al 100% (anche se in molti dipartimenti di matematica stanno continuando a verificarne la totale sicurezza).

Proviamo a capire come possa funzionare un certificato a chiave asimmetrica. L’esempio che segue non è applicabile per quelle che saranno le nostre finalità, però dà un’idea chiara di come in matematica esistano delle funzioni non biunivoche adatte allo scopo.

Immaginiamo di dover trasmettere questi dati: 4, -2, -1 e 5. Ora la chiave pubblica, con cui cripterò la sequenza dei quattro numeri, consisterà nell’elevare al quadrato ognuno di essi. Avremo così: 16, 4, 1 e 25. Un altro utente che avrà in mano soltanto questa chiave pubblica sarà in grado di decriptare i dati? La risposta è no. Infatti, partiamo dal primo dato: 16. Sappiamo, dalla chiave pubblica, che è il risultato di un numero che è stato elevato al quadrato. Operazione inversa: la radice quadrata; ma la radice quadrata di 16 non è univoca. Il risultato è sì 4, ma è anche -4. Come facciamo a sapere quale dei due prendere? Con la sola chiave pubblica non possiamo.

Come detto sopra, l’esempio non è utilizzabile: il procedimento di criptazione è troppo semplice per essere efficiente; però rende molto bene l’idea di come funzioni matematiche non invertibili maggiormente complicate, possano essere utilizzate per il nostro fine.

Trovando delle funzioni molto più adatte, posso raggiungere il mio scopo: creare un certificato a doppia chiave con cui poter criptare con la pubblica e poter decriptare solo ed esclusivamente con la privata.

A questo punto distribuirò la chiave pubblica e chiunque potrà criptarci i messaggi a me indirizzati. Solo ed esclusivamente io, possessore della relativa chiave privata, potrò decifrare le e-mail.

Ora vediamo un altro possibile utilizzo di un certificato a chiave asimmetrica. Immaginiamo di poter effettuare un’operazione tramite la chiave privata su di un messaggio scritto da me. Questa operazione, tenendo conto del mittente e di ogni singolo carattere che compone il messaggio, darà un risultato univoco che potrà essere ottenuto solo ed esclusivamente se la suddetta operazione sia stata effettuata con la mia chiave privata. Il risultato sarà una sorta di checksum, poiché tiene conto di tutti i singoli byte che compongono la mail. Se il mittente fosse un altro o se un solo carattere fosse differente, la checksum sarebbe diversa.

Chi è in possesso della chiave pubblica non potrà effettuare la stessa operazione ottenendo lo stesso risultato, però potrà effettuare una verifica sul fatto che quel risultato può averlo prodotto solo ed esclusivamente la chiave privata ad essa collegata.

Ho appena trovato il sistema per firmare digitalmente il mio messaggio: esso è stato inviato sicuramente dal proprietario della chiave privata; in più, tramite la checksum, posso essere anche sicuro che durante il suo tragitto la mail non ha subito alterazioni di alcun genere; nemmeno un carattere è stato modificato.

Ora c’è una piccola attenzione da mantenere. Io dovrò distribuire la mia chiave pubblica. Per questo le strade sono tre: incontro di persona “face to face”, anche attraverso i key-party, dei veri e propri incontri organizzati per scambiarsi le chiavi pubbliche; la posso mettere sul mio sito internet personale; oppure ci sono a disposizione dei key-server dove ognuno può inserire la propria chiave pubblica e dove gli utenti possono fare delle ricerche, come se fossero degli elenchi on-line. La cosa da verificare in tutti i casi è che la chiave pubblica sia realmente della persona che si pensa. Se sono sicuro che la chiave sia di tizio, ma in realtà è di caio, il sistema dell’autenticazione è fortemente compromesso.

L’autenticazione sarà sempre meglio farla di persona. Anche un sito web può dare garanzie; ad esempio, chi mi conosce, sa benissimo che maury.it è il mio sito e quindi segue che la chiave che si trova su http://www.maury.it/gpg posso averla inserita lì solo io, quindi è mia; però in tutti gli altri casi, l’autenticazione faccia a faccia è la garanzia più sicura.

Io personalmente porto sempre in tasca un foglietto con su scritto il codice del mio certificato GnuPG: 0x51F1316C. In questa maniera, chiunque mi incontri, può chiedermi il codice e verificare così che quella che ha trovato sul mio sito web, su un key-server o sulle mie e-mail firmate (tante volte avessi allegato la chiave pubblica) sia veramente mia; una volta che l’autenticazione la faccio io di persona, può stare sicurissimo che quel certificato è realmente mio.

Vediamo ora come procurarci un certificato digitale.

Alcune aziende rilasciano dei certificati secondo lo standard S/MIME. Questo standard è supportato nativamente dalla maggior parte dei client e-mail, quindi non ci sarà bisogno di installare plugin e/o estensioni aggiuntivi.

La prima azienda che segnalo e Thawte. È sudafricana e rilascia gratuitamente certificati ad uso personale. Thawte, con il classico sistema del “Rispondi a questa e-mail…” può verificare l’autenticità del vostro indirizzo di posta elettronica. Per l’identità anagrafica, per poter inserire cioè nel certificato il vostro nome ed il vostro cognome, utilizza il sistema dei notai: il Web Of Trust. Gente autenticata e reputata affidabile dalla ditta (i notai) viene delegata a dare un punteggio da 10 a 35, in base alla propria anzianità di servizio, dopo aver verificato personalmente l’identità di un nuovo utente. Un utente, raggiungendo 50 punti, viene dichiarato autenticato da Thawte e quindi avrà nome e cognome inseriti nel certificato. Al raggiungimento di 100 punti si diviene notai e si può autenticare quindi altri utenti. Naturalmente il sistema dell’identità anagrafica è soggetta alla serietà dei notai; per la veridicità dell’indirizzo e-mail bisogna, invece, fidarsi di Thawte; sarà questa azienda a fare da garante. I notai Thawte sono ormai in tutto il mondo; alcuni autenticano in maniera gratuita, altri chiedono delle piccole cifre; sul sito si possono trovare i notai più vicini alla propria zona. Se qualcuno avesse bisogno, io sono notaio e, conoscendo altri notai, posso far avere l’autenticazione praticamente al volo, in maniera totalmente gratuita, dato che mi piace fare divulgazione di sicurezza informatica per pura passione.

Altri certificati digitali vengono rilasciati anche da ditte italiane tipo GlobalTrust, Poste Italiane e diversi istituti bancari. GlobalTrust rilascia anch’essa certificati gratuiti per uso personale. Le altre, invece, come servizio a pagamento: agli sportelli avverrà la procedura di autenticazione e poi verrà rilasciato il software contenente il certificato in appositi CD-ROM.

Con questo sistema la firma digitale è valorizzata da delle authority riconosciute. Thawte è riconosciuta a livello mondiale da diversi anni. Le altre, invece, all’estero potrebbero avere meno fiducia: non so quanta credibilità possa avere, ad esempio, in Canada una mail certificata da un’authority come Poste Italiane.

Questo sistema delle authority potrebbe non piacermi: voglio essere io l’unico garante della mia identità. Quindi ho bisogno di uno strumento per crearmi da me un certificato digitale a chiave asimmetrica. Ecco GnuPG.

Fine della prima parte di questo interessante articolo, a breve la seconda parte dove sarà illustrato in dettaglio l’utilizzo di GPG con email.

Popular Posts:

Flattr this!

  One Response to “Criptografia e Firma Digitale con GnuPG”

  1. […] 7 usi pratici In un precedente articolo abbiamo visto i concetti base di cifratura e chiave asimettrica applicati alla posta elettronica. […]

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*