News Ticker

Cifrare e Decifrare file tramite GPG



GPG o GnuPG, si tratta di un software per lo scambio di file crittografati, tramite la generazione e l'uso di una coppia di chiavi: chiave pubblica e chiave privata.
La chiave pubblica viene usata per la cifratura dei file.
La chiave privata viene custodita segretamente e usata per decifrare i file che sono stati cifrati con la chiave pubblica.
Per lo scambio di dati sensibili questo strumento può essere veramente utile.
Procediamo alla sua installazione.
Per distribuzione Ubuntu e derivate diamo il seguente comando:

sudo apt-get install gpg

Per distribuzioni RHEL e derivate diamo il seguente comando:

yum install gpg

Creiamo adesso la coppia di chiavi:

gpg --gen-key

Durante la procedura vengono richieste una serie di informazioni, mentre per la generazione delle chiave può essere richiesto l'attesa di qualche minuto.
Per accelerare il processo di generazione delle chiavi possiamo eseguire delle attività sulla macchina tra le quali muovere il mouse piuttosto che dare da terminale i seguenti comandi:

cd /
ls -R /
find * 

Una volta terminato il processo, avremo le nostre chiavi.
Andiamo a visualizzarle:

gpg --list-key

Adesso possiamo inviare la nostra chiave pubblica su una macchina remota o locale, dove verrà usata per la cifratura di file.
Questa operazione viene eseguita esportando in un file la chiave pubblica che abbiamo generato in precedenza tramite il seguente comando:

gpg --export UID > nome_file_esportato.pub

Nel caso specifico sarà:

michele@michele-mmul ~ $ gpg --list-key
/home/michele/.gnupg/pubring.gpg
--------------------------------
pub   2048R/867736BD 2014-10-31
uid                  Michele Milaneschi 
sub   2048R/0B8DF373 2014-10-31

pub   2048R/8CE43AB0 2011-03-10
uid                  Raoul Scarazzini 
sub   2048R/3A40F0BC 2011-03-10

michele@michele-mmul ~ $ gpg --export Michele Milaneschi > pubkey.pub

Se vogliamo essere precisi, nel caso specifico sarà:

gpg --export 867736BD > pubkey.pub

Il metodo di copia della chiave sulla macchina in questione potrà essere effettuato nei metodi più consoni.

Una volta che la chiave è stata copiata dobbiamo procedere alla sua importazione.
Questo lo facciamo tramite il seguente comando:

gpg --import pubkey.pub

Fatto questo lo scambio dei file potrà avvenire in maniera cifrata, usando la chiave pubblica per cifrare i file e la chiave privata per decifrarli.
Vediamo un banale esempio di cifratura:

gpg --encrypt --recipient UID nome_file_da_cifrare

Nel caso specifico sarà:

gpg --encrypt --recipient 867736BD utenze

Una volta che il file ci viene inviato dobbiamo decifrarlo usando la nostra chiave privata.
Questo lo facciamo tramite il seguente comando:

gpg --decrypt utenze.gpg

Se durante la creazione delle chiavi abbiamo inserito una passphare, questa ci verrà chiesta durante la decifratura del file.

Per concludere se volessimo cancellare le chiavi generate daremo i seguenti comandi.
Per la rimozione della chiave pubblica usiamo il seguente comando:

gpg --delete-key UID

Per la rimozione della chiave privata usiamo il seguente comando:

gpg --delete-secret-keys UID