Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Come generare e gestire chiavi GPG su Linux

Impariamo a creare e gestire le nostre chiavi crittografiche GPG per rendere più sicuro lo scambio dei dati
Impariamo a creare e gestire le nostre chiavi crittografiche GPG per rendere più sicuro lo scambio dei dati
Link copiato negli appunti

I numerosi attacchi informatici su vasta scala degli ultimi anni hanno fatto comprendere a milioni di persone l'importanza dei protocolli e delle procedure di sicurezza informatica. Una delle principali strategie per incrementare la sicurezza del proprio workflow consiste nell'implementare un sistema di crittografia. In questo tutorial illustreremo come generare e gestire le proprie chiavi GPG sulle distribuzioni Linux. Per semplicità prenderemo a modello GnuPG e Ubuntu 22.04 LTS.

In buona sostanza GnuPG (Gnu Privacy Guard) sfrutta un algoritmo di crittografica a chiave pubblica che consente di scambiare dati e informazioni in sicurezza. Tale sistema prevede che ogni utente abbia una coppia di chiavi, una pubblica ed una privata. Quest'ultima viene salvata e protetta in modo tale da assicurare la riservatezza. La chiave pubblica può essere condivisa con le persone con cui si desidera comunicare o condividere documenti.

In Rete è possibile reperire diversi software che forniscono una GUI user-friendly per GnuPG. Ad esempio il progetto KDE, noto ambiente grafico open source basato sulle librerie Qt, mette a disposizione kgpg, un altro tool molto noto è Seahorse che può essere utilizzato per gestire password e diverse chiavi GPG. Quest'oggi però ci affideremo quasi esclusivamente alla shell per offrire una panoramica quanto più completa possibile dell'argomento.

Generare una GPG key con GnuPG

Creare una chiave GPG con GnuPG è abbastanza semplice. Si tratta infatti di una procedura alla portata di tutti che può essere svolta senza problemi anche da un utente alle prime armi approdato da poco su una distribuzione Linux. Partiamo quindi aprendo il terminale e digitiamo tale comando:

gpg --full-gen-key

Cosi facendo abbiamo indicato appunto a GnuPG, che si trova preinstallato su Ubuntu, di generare la nostra chiave.

GPG key

Dopo pochi istanti dovrebbe quindi avviarsi un wizard di configurazione che consente di scegliere i parametri desiderati:

Selezionare il tipo di chiave desiderato:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (solo firma)
(4) RSA (solo firma)

Il primo step di questo processo di setting prevede la selezione dell'algoritmo. Di base GnuPG offre un parametro consigliato: "RSA and RSA". Si tratta di un'ottima opzione, RSA infatti è un algoritmo di crittografia asimmetrica che consente di godere di una robusta protezione. Quindi a questo punto digitiamo 1 per proseguire con il prossimo step:

La lunghezza delle chiavi RSA è compresa tra 1024 e 4096 bit.
Dimensione chiave desiderata? (2048)

Anche in questo caso è possibile affidarsi all'impostazione di default proposta da GnuPG. Tuttavia se desiderate avere la massima protezione, magari per utilizzare tale chiave per il proprio ambiente di lavoro, potete optare per una chiave a 4096 bit, digitando appunto tale cifra all'interno delle parantesi:

Dimensione chiave desiderata? (4096)

Una chiave cosi robusta è necessaria per poter firmare pacchetti .deb per Debian e distribuzioni derivate. Quindi, per fare un esempio concreto, uno sviluppatore software interessato a distribuire il proprio programma anche su Linux è praticamente obbligato ad adottare tale configurazione.

Proseguendo nel wizard di generazione della chiave ci viene domandando se desideriamo definire una data di scadenza per la GPG key:

Key is valid for? (0)

Impostare un ciclo di vita predefinito alla propria chiave permette di limitare i danni in caso di furto o smarrimento della chiave. Inoltre scegliendo di non impostare un periodo di validità è necessario ricordarsi di revocare il relativo permesso di utilizzo della GPG key ai programmi o ai pacchetti software che non si intende più utilizzare o supportare. L'adozione di uno o dell'altro parametro dipende dalle vostre esigenze. In ogni caso potete sempre lasciare l'opzione di default o impostare la validità di un anno digitando il numero di giorni corrispondenti:

Key is valid for? (365)

Il passaggio successivo prevede invece la generazione di una sorta di identificativo per l'utente. Viene infatti richiesto: il nome, l'indirizzo email ed un commento per catalogare la chiave. Successivamente si deve impostare una passphrase, in pratica una password, per poter proteggere la GPG key. Si consiglia di inserire una passphrase molto robusta, magari rivolgendosi ad un password manager per generarla, oppure una breve ma che sia difficile da indovinare per uno sconosciuto.

È essenziale non dimenticare o smarrire mai la nostra passphrase perché questo comporta di fatto la perdita completa della chiave appena generata. Una volta inserita la nuova passphrase si avvia automaticamente la generazione della GPG key.

Ultimata la procedura otteniamo un output del genere:

gpg: key D812HAFAH2 marked as ultimately trusted
chiavi pubbliche e segrete create e firmate.
pub 1024D/D812HAFAH2 2023-04-01
Key fingerprint = D812HAFAH2 D812HAFAH22644D812HAFAH2D812HAFAH2
uid UtentediProva <maildiprova@test.it>
sub 2048g/D812HAFAH2 2023-04-01
gpg: key D812HAFAH2 marked as ultimately trusted
public and secret key created and signed.

La nostra chiave è dunque ora identificabile con l'ID D812HAFAH2. Ora, se lo si desidera, è possibile indicare a bash di sfruttare la key come chiave predefinita all'interno del terminale digitando il comando:

export GPGKEY=D812HAFAH2

Ovviamente si deve sostituire D812HAFAH2 con l'ID della vostra GPG key. Fatto questo bisogna riavviare il servizio sfruttato dalla distribuzione per gestire la cifratura. Questo comando varia in base alla distribuzione o alla nostra configurazione. Su Ubuntu, ad esempio, è possibile che sia Seahorse:

sudo systemctl stop seahorse-agent

oppure il classico gpg-agent:

sudo systemctl stop seahorse-agent

Probabilmente se utilizziamo KDE come ambiente grafico il comando corretto è questo:

sudo systemctl stop kgpg-agent

Infine confermiamo il nostro setting cosi:

source ~/.bashrc

Revocare un certificato

Se abbiamo scelto di non far scadere mai una GPG key potrebbe verificarsi la situazione in cui sia necessario generare un certificato di revoca per bloccare la pubblic key associata ad una chiave privata smarrita o compromessa. Fortunatamente l'operazione è semplicissima, basta scrivere questo in bash:

gpg --output revoke.asc --gen-revoke D812HAFAH2

Ricordiamoci sempre di sostituire D812HAFAH2 con l'ID della nostra chiave.

Importare una chiave GPG già configurata

Se invece è necessario importare una chiave generata su un altro sistema possiamo farlo sfruttando sempre GnuPG:

gpg --import /home/utente/FiledellachiavePubblicaRicevuta.gpg

Possiamo poi ripetere la medesima operazione con una chiave privata:

gpg --allow-secret-key-import --import /home/utente/FiledellachiavePrivataRicevuta.gpg

Ti consigliamo anche