Tecnologia e Digital Hacks
17-04-2008

Criptiamo i dati trasmessi in rete - Email sicure

In attesa dell'articolo (in preparazione) riguardante la decifrazione delle chiavi di rete wifi, vediamo come vivere più tranquilli sfruttando la crittografia. Se infatti abbiamo una rete compromessa, oppure ad essere compromesso è il nostro veicolo di trasmissione web o lo stesso server di dati, il metodo migliore per essere sicuri che le informazioni verranno lette solo dal destinatario è criptarle. Se una volta questa operazione poteva essere considerata lunga e scomoda, ad oggi essa è diventata pratica e veloce. Per farvi un'idea (l'obbiettivo raggiunto alla fine di questo tutorial) ecco come si presenta la mia interfaccia GMAIL adesso:

Prima un po' di teoria crittografica - da Wikipedia

Fino a pochi anni fa l'unico metodo crittografico esistente era quello della "crittografia simmetrica", in cui si faceva uso di un'unica chiave sia per proteggere il messaggio che per renderlo nuovamente leggibile. Il problema è portare in giro la chiave senza che venga scoperta. La ricerca sulla crittografia simmetrica ha negli anni prodotto dei sistemi crittografici di tutto rispetto (ultimo tra tutti il cifrario Rijndael, scelto per il nuovo standard AES per essere utilizzato nel prossimo ventennio, pensionando l'ormai datato DES).

La vera novità del secolo scorso è l'invenzione di una tecnica crittografica che utilizza chiavi diverse per cifrare e per decifrare un messaggio, facilitando incredibilmente il compito di distribuzione delle chiavi. Infatti in questo caso non c'è bisogno di nascondere le chiavi o le password: c'è una chiave per crittografare, che chiunque può vedere, e una per decifrare che ha solo il destinatario. In altre parole, se A vuole ricevere un messaggio segreto da B, manda a B una scatola vuota con un lucchetto aperto senza chiavi. B mette dentro il messaggio, chiude il lucchetto, e rimanda il tutto ad A, che è l'unico ad avere le chiavi. Chiunque può vedere passare la scatola, ma non gli serve a niente. A non deve correre rischi con le sue chiavi. Il funzionamento di questo sistema è basato sul fatto che è molto facile moltiplicare due numeri primi (che sono la chiave privata, quella che solo A conosce per decifrare), ma è molto difficile trovare i fattori primi di un numero (la chiave pubblica, che chiunque può vedere e che si usa per crittografare). Siccome la crittografia asimmetrica è molto lenta se si devono spedire grandi quantità di dati, spesso si usa questo tipo di crittografia per scambiarsi una chiave con cui iniziare una comunicazione in crittografia simmetrica, molto più semplice, veloce e sicura.

Attualmente il programma probabilmente più utilizzato per la crittografia, che noi vediamo in questo articolo, è GPG, cioé GNU Privacy Guard, che "unisce" entrambi i sistemi.

GPG - da Wikipedia

GPG cifra i messaggi utilizzando una coppia di chiavi (pubblica e privata) generate dall'utente. Le chiavi pubbliche possono essere scambiate tra gli utenti in vari modi, principalmente email e keyserver. Tuttavia bisogna prestare particolare attenzione alla corrispondenza tra chiave e (presunta) identità: il problema di tutti i sistemi di crittografia asimmetrica è la certificazione dell'autenticità della chiave, solitamente risolto con la presenza di un'autorità centrale oppure con la firma delle chiavi (un utente firma la chiave pubblica di un altro utente per certificarne l'effettiva autenticità). Su questo delicato punto si basa anche la firma digitale di file (messaggi) per garantire l'autenticità del contenuto e del mittente. GPG non fa utilizzo di algoritmi brevettati (o con ambiti di utilizzo ristretti da particolari licenze) come IDEA, presente in PGP sin dalle prime versioni. Vengono invece usati algoritmi come Digital Signature Algorithm (DSA), ElGamal, CAST5, Triple DES (3DES), AES e Blowfish. È tuttavia ancora possibile utilizzare IDEA ma si deve scaricare un apposito plugin (e, in alcuni paesi, registrare una licenza di utilizzo). Come prevede lo standard OpenPGP, GPG è un sistema di crittografia "ibrido", che combina algoritmi a chiave simmetrica a causa della loro velocità e algoritmi a chiave pubblica per la facilità di scambio delle chiavi: ogni volta che si deve cifrare un messaggio viene generata una chiave di sessione (utilizzata un'unica volta, per l'algoritmo simmetrico) che viene a sua volta cifrata con la chiave pubblica del destinatario. Si noti come questo passaggio renda impossibile la lettura del messaggio anche al mittente (a meno che questo non cifri la chiave di sessione anche con la propria chiave pubblica, opzione che è possibile abilitare).

 Per scaricare GPG è sufficiente

Dopo aver installato e aperto il programma ci verrà chiesto di creare la nostra chiave.

Inseriamo i nostri dati (nome, cognome, email) ed una passhprase il più possibile complicata (qualcosa del genere: "II4VG2tVoU1LibISaAbNxcOWcZuP34Vq9Q8jG53n").

Ci verrà anche chiesto di fare un backup: salviamo la chiave (e la passhprase) dentro un floppy o masterizziamola in un cd che andremo subito a mettere al sicuro.

L'interfaccia di GPG si dovrebbe presentare all'incirca così:

Come vedete la mia chiave (pubblica e privata) è rappresentata con il simbolo giallo.

Le altre sono alcune chiavi pubbliche che trovo guardando nella pagina di contatto dei siti, o nei keyserver. Altrimenti posso provare a chiedere la chiave pubblica tramite email. Per inviare la nostra chiave pubblica ci basta cliccare col tasto destro sulla nostra e scegliere "Export keys".

Per importare una chiave pubblica, ad esempio, è sufficiente salvarla in un blocco di testo (ad esempio trovate la mia su http://blog.nicolamoretti.com/others/old_blog/files/2f76c77eb3a9e073641f9a7e0432146d_public.key) e selezionarla tramite il tasto "import".

Per criptare un file possiamo spostarci nel "File manager" (pulsante Files), selezionare il file da criptare e premere il tasto Encrypt. A questo punto possiamo scegliere la key del destinatario in modo che lui solo possa poi decriptarlo.

La firma

Con GPG possiamo anche firmare i nostri dati. In questo modo chi li riceverà potrà essere sicuro che questi sono stati inviati proprio da noi. Infatti una firma può essere effettuata solamente da chi possiede la chiave privata. L'importante è che il destinatario abbia la nostra chiave pubblica reale.

Estensione per Firefox 

Firefox possiede una potentissima estensione - FireGPG - che ci permette di velocizzare estremamente queste operazioni. Dopo averla installata e configurata (Strumenti-> FireGPG -> Opzioni | ad esempio io ho dovuto usare il path alternativo "C:\Programmi\GNU\GnuPG\gpg.exe"),

potremo infatti selezionare un qualsiasi testo, cliccare col tasto destro, scegliere FireGPG e criptarlo e/o firmarlo.

Ecco un esempio:

diventa

 

FireGPG inoltre è perfettamente integrato con Gmail.

 

Quando riceviamo un'email firmata l'estensione controlla la validità della firma segnalandocela a fine messaggio. Decripta le email ricevute

e permette criptare e/o firmare le email in invio con un semplice tasto (vedi immagine iniziale).


0 Commenti a “Criptiamo i dati trasmessi in rete - Email sicure”