Quando si ha la necessità di cifrare al meglio file o conversazioni sensibili, la scelta del metodo di cifratura ricadrà, probabilmente, tra quelli a chiave asimmetrica, considerati i più sicuri e robusti. Il tool d’eccellenza per l’ambiente Linux è sicuramente GnuPG che implementa perfettamente le migliori tecnologie di cifratura. Molto semplice da usare via terminale e comodo per eventuali script bash.
Consideriamo GnuPG installato e funzionante. Chiunque voglia provare ad installare GnuPG da sorgenti può farlo servendosi della guida ufficiale del progetto, in italiano, disponibile qui.
Cifratura-Decifratura simmetrica
Utile per cifrare file, utilizza la stessa passphrase per cifrare e decifrare le informazioni. E’ quindi sconsigliabile il suo utilizzo su rete. Per iniziare, create un documento di testo “esempio” contenente qualche riga di testo.
Per criptare il file digitare:
gpg -c esempio
A questo punto vi verrà chiesta la passphrase e successivamente generato il file (binario criptato) esempio.gpg.
Per decriptare il file utilizzate il comando:
gpg -o file_decifrato -d esempio.gpg
passphrase
Il comando -o dirige l’output in file_decifrato che rimarrebbe altrimenti stampato a video nel terminale.
Generazione delle chiavi
L’algoritmo predefinito è DSA/ElGamal con una lunghezza della chiave DSA di 1024bit e 2048bit di default per ELG-E (1024-4096). Per accedere alla creazione guidata del paio di chiavi eseguite:
gpg -gen-key
Il comando ci mostrerà il seguente output. Sono evidenziate le scelte che spetta a voi compiere:
Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days y
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
Key is valid for? (0) 10
Key expires at Wed 12 Sep 2007 06:12:58 PM CEST
Is this correct? (y/N)You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
“Heinrich Heine (Der Dichter)” Real name: Domiziano
Email address: [email protected]
Comment: un po di commenti servono per generare le chiavi
You selected this USER-ID:
“Domiziano (un po di commenti servono per generare le chiavi)” Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
A questo punto, dopo qualche secondo, verranno generate le vostre importanti chiavi. Quella privata non dovrà mai uscire dal vostro pc mentre quella pubblica dovrete inviarla a chi vorrà comunicare, in forma sicura, con voi.
Per esportare la chiave pubblica in formato Ascii utilizzare la seguente direttiva:
gpg -export -a UID > pub.key
Dove UID è il nome reale, nel mio caso Domiziano, e l’output verrà girato al file pub.key che potrete successivamente inviare a chi volete.
Per esportare la chiave privata ed eseguire dunque un backup, utilizzare:
gpg -export-secret-key -a UID > priv.key
Cifratura-Decifratura chiave asimmetrica
Effettuiamo la cifratura del file “esempio” per il destinatario “gigi” che possiede la chiave pubblica oppure con destinatario il nostro UID per essere leggibile solo da noi stessi:
gpg -ear Domiziano esempio
Opzioni: -e per cifrare, -a per restituire un file ascii 7 bit, -r per cifrare l’utente. Se volessimo creare un file binario sostituiamo la -a con -c .
A questo punto avremo il file esempio.asc (esempio.gpg se -c) pronto per essere inviato.
Una volta giunto a destinazione il destinatario dovrà decifrare il file:
gpg -o file_decifrato -d esempio.asc
Dopo aver inserito la passphrase verrà generato il file decifrato. Attenzione, è importante che la chiave pubblica, quella cioè di chi ha inviato il file da decifrare, sia stata importata nel database delle chiavi.
Per importare una chiave pubblica:
gpg -import public.key
Interfacce grafiche
Per chi vuole tutto a portata di mouse esistono delle comode interfacce grafiche, installabili separatamente, in grado di supplire alla maggior parte delle operazioni prima trattate in modo visuale:
Buona comunicazione…sicura!
di Domiziano Russo - TuxJournal.net