Premier Training & Business Partner Red Hat

Cifratura e Decifratura file tramite GPG su RHEL / CentOS 6

Michele Milaneschi
Ti piacerebbe diventare anche tu uno di noi e
pubblicare i tuoi articoli nel blog degli RHCE italiani?

GNU Privacy Guard o anche detto GPG è un software sotto licenza free che permette di scambiare dati in maniera cifrata tramite l’uso della chiave pubblica e privata generate dai rispettivi utenti.

Questo ci potrebbe servire nel momento in cui ad esempio 2 utenti di 2 host diversi vogliono passarsi tra di loro dei dati in maniera cifrata.

Per iniziare verifichiamo se GPG è installato su tutte e 2 gli host interessati:

rpm -qa | grep gpg

gpg

E come vediamo è gia installato.

Nel caso non fosse installato procederemo alla sua installazione tramite il seguente comando:

yum install gpg

A questo punto iniziamo la creazione della coppia di chiavi su uno dei 2 host.

Nel nostro caso le creeremo su PC1;
L’utente che creerà le chiavi sarà root.

Su PC2 invece l’utente michele ingloberà la chiave pubblica creata su PC1 per cifrare i file che saranno poi inviati e decifrati su PC1 tramite la corrispettiva chiave privata.

CONFIGURAZIONE PC1

L’utente root procederà alla creazione delle coppie di chiavi:

gpg --gen-key

Selezioneremo l’algoritmo RSA ( default ) scegliendo l’opzione 1

Ci verrà chiesta la lunghezza della chiave e noi lasceremo 2048 per avere una certa sicurezza, mentre per il periodo di validità della chiave non daremo nessuna scadenza.

gpg2

Ci verranno chieste altre informazioni per associare il nostro UserID alla chiave e infine ci viene chiesto se inserire una passphare cioè una password che andrà immessa ogni volta che useremo la nostra chiave privata.

Alla fine della procedura verranno create le 2 chiavi.

Per vedere la lista delle chiavi basterà dare il seguente comando:

gpg --list-keys

gpg3

Adesso dobbiamo esportare la chiave pubblica, spostarla su PC2, e farla acquisire dall’utente michele che la userà per cifrare i file che i 2 utenti si scambieranno.

Esportazione della chiave pubblica:

La struttura del comando sarà la seguente:

gpg --export UID > nome_file_esportato

Nel nostro caso il comando sarà il seguente:

gpg --export 3D134E58 > gpg.pub

gpg4

Copiamo la chiave pubblica sulla home di michele su PC2 ( 192.168.0.100 ):

scp gpg.pub michele@192.168.0.100:/home/michele

gpg5

CONFIGURAZIONE PC2

Sulla nostra macchina che abbiamo chiamato PC2, l’utente michele si trova sulla propria Home Directory la chiave pubblica appena copiata.

Per poterla usare per cifrare i file la chiave deve essere importata tramite il seguente comando:

gpg --import gpg.pub

gpg6

Se durante l’importazine della chiave avete una serie di errori con riferimento ad un problema di clock sappiate che i 2 host devono essere sincronizzati con un server ntp e quindi la data e l’ora devono essere esatte.

A questo punto l’utente michele può cifrare i file con cui poi scambierà con l’utente root di PC1.

Facciamo l’esempio in cui l’utente michele deve cifrare il file fatture presente nella propria home.

La struttura del comando sarà la seguente:

gpg --encrypt --recipient UID nome_file_da_cifrare

Nel nostro caso il comando sarà il seguente:

gpg --encrypt --recipient 3D134E58 fatture

gpg7

Adesso tramite il comando scp lo inviamo all’utente root di PC1 che lo decifrerà con la relativa chiave privata:

scp fatture.gpg <a href="mailto:root@192.168.0.34">root@192.168.0.34</a>:/root

gpg8

Adesso andiamo a decifrarlo tramite il seguente comando:

gpg --decrypt fatture.gpg

Verrà subito chiesta la passphare che abbiamo inserito in fase di creazione delle coppie di chiavi:

gpg9

Al termine avremo il nostro file in chiaro:

gpg10

Per concludere vediamo i 2 comandi per la rimozione delle chiavi.

Rimozione chiave Pubblica:

gpg --delete-key UID

gpg11

Rimozione chiave Privata:

gpg –delete-secret-keys UID

gpg12
GNU Privacy Guard o anche detto GPG è un software sotto licenza free che permette di scambiare dati in maniera cifrata tramite l’uso della chiave pubblica e privata generate dai rispettivi utenti.

Questo ci potrebbe servire nel momento in cui ad esempio 2 utenti di 2 host diversi vogliono passarsi tra di loro dei dati in maniera cifrata.

Per iniziare verifichiamo se GPG è installato su tutte e 2 gli host interessati:

rpm -qa | grep gpg

gpg

E come vediamo è gia installato.

Nel caso non fosse installato procederemo alla sua installazione tramite il seguente comando:

yum install gpg

A questo punto iniziamo la creazione della coppia di chiavi su uno dei 2 host.

Nel nostro caso le creeremo su PC1;
L’utente che creerà le chiavi sarà root.

Su PC2 invece l’utente michele ingloberà la chiave pubblica creata su PC1 per cifrare i file che saranno poi inviati e decifrati su PC1 tramite la corrispettiva chiave privata.

CONFIGURAZIONE PC1

L’utente root procederà alla creazione delle coppie di chiavi:

gpg --gen-key

Selezioneremo l’algoritmo RSA ( default ) scegliendo l’opzione 1

Ci verrà chiesta la lunghezza della chiave e noi lasceremo 2048 per avere una certa sicurezza, mentre per il periodo di validità della chiave non daremo nessuna scadenza.

gpg2

Ci verranno chieste altre informazioni per associare il nostro UserID alla chiave e infine ci viene chiesto se inserire una passphare cioè una password che andrà immessa ogni volta che useremo la nostra chiave privata.

Alla fine della procedura verranno create le 2 chiavi.

Per vedere la lista delle chiavi basterà dare il seguente comando:

gpg --list-keys

gpg3

Adesso dobbiamo esportare la chiave pubblica, spostarla su PC2, e farla acquisire dall’utente michele che la userà per cifrare i file che i 2 utenti si scambieranno.

Esportazione della chiave pubblica:

La struttura del comando sarà la seguente:

gpg --export UID &gt; nome_file_esportato

Nel nostro caso il comando sarà il seguente:

gpg --export 3D134E58 &gt; gpg.pub

gpg4

Copiamo la chiave pubblica sulla home di michele su PC2 ( 192.168.0.100 ):

scp gpg.pub michele@192.168.0.100:/home/michele

gpg5

CONFIGURAZIONE PC2

Sulla nostra macchina che abbiamo chiamato PC2, l’utente michele si trova sulla propria Home Directory la chiave pubblica appena copiata.

Per poterla usare per cifrare i file la chiave deve essere importata tramite il seguente comando:

gpg --import gpg.pub

gpg6

Se durante l’importazine della chiave avete una serie di errori con riferimento ad un problema di clock sappiate che i 2 host devono essere sincronizzati con un server ntp e quindi la data e l’ora devono essere esatte.

A questo punto l’utente michele può cifrare i file con cui poi scambierà con l’utente root di PC1.

Facciamo l’esempio in cui l’utente michele deve cifrare il file fatture presente nella propria home.

La struttura del comando sarà la seguente:

gpg --encrypt --recipient UID nome_file_da_cifrare

Nel nostro caso il comando sarà il seguente:

gpg --encrypt --recipient 3D134E58 fatture

gpg7

Adesso tramite il comando scp lo inviamo all’utente root di PC1 che lo decifrerà con la relativa chiave privata:

scp fatture.gpg <a href="mailto:root@192.168.0.34">root@192.168.0.34</a>:/root

gpg8

Adesso andiamo a decifrarlo tramite il seguente comando:

gpg --decrypt fatture.gpg

Verrà subito chiesta la passphare che abbiamo inserito in fase di creazione delle coppie di chiavi:

gpg9

Al termine avremo il nostro file in chiaro:

gpg10

Per concludere vediamo i 2 comandi per la rimozione delle chiavi.

Rimozione chiave Pubblica:

gpg --delete-key UID

gpg11

Rimozione chiave Privata:

gpg –delete-secret-keys UID

gpg12

Info about author

Michele Milaneschi

RHCE Consultant