Magazine Informatica

HowTo: crea e gestisci la tua chiave GPG

Creato il 01 settembre 2010 da Idl3

Per crearci la nostra personale chiave GPG dobbiamo usare GNU Privacy Guard (GnuPG o GPG), un programma libero che ci permette di crittografare e de-crittografare dati, firmare file (anche i pacchetti di Debian e derivate), scambiare email crittografate con altre persone che conoscono la nostra chiave pubblica e di cui conosciamo la chiave pubblica, ecc. Per utilizzarlo come si deve dobbiamo creare la nostra chiave.

GNU Privacy Guard

GNU Privacy Guard

Non e’ lo scopo di questo post spiegare cosa fa GPG, comunque (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.”

HowTo: crea e gestisci la tua chiave GPGCominciamo allora la creazione della nostra chiave, aprite un terminale e scrivete:
$ gpg --gen-key
il comando vi restituira’ questo output:

gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Per favore scegli che tipo di chiave vuoi:
   (1) DSA and Elgamal (default)
   (2) DSA (firma solo)
   (5) RSA (firma solo)
Cosa scegli? 

Scegliamo 1 (dobbiamo scrivere 1 e dare l’invio) oppure 2, o 5 (decidete voi). In questo esempio scelgo 1.

Ora ci chiede a quanti bits dev’essere la chiave:

DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)

Se ad esempio noi scegliamo 2048, allora dobbiamo scriverlo (possiamo anche scegliere 4096, basta scriverlo).

Adesso ci chiede la scadenza della chiave, per quanto tempo sara’ valida:

La dimensione richiesta della chiave è 2048 bit
Per favore specifica per quanto tempo la chiave sarà valida.
         0 = la chiave non scadrà
        = la chiave scadrà dopo n giorni
      w = la chiave scadrà dopo n settimane
      m = la chiave scadrà dopo n mesi
      y = la chiave scadrà dopo n anni
Chiave valida per? (0)

Scriviamo 0 e premiamo invio. Tanto se volessimo revocarla lo possiamo fare, senza bisogno di mettere a monte una data di scadenza. Se pensate di perdere il certificato di revoca e dimenticare la frase segreta conviene mettiate una scadenza. Ci chiede una conferma:

Key does not expire at all
Is this correct? (y/N)

Scriviamo y e premiamo invio.

HowTo: crea e gestisci la tua chiave GPGSiamo a buon punto, ora dobbiamo inserire i nostri dati, infatti ci chiede:

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) "

Nome e Cognome:

E noi li digitiamo e premiamo invio, poi ci chiede:

Indirizzo di Email:

scriviamo anche questo, poi un commento:

Commento:

Non sottovalutate il commento, potete scrivere il vostro pseudonimo, o il vostro indirizzo email principale, magari camuffato per evitare gli spider spam, ad esempio: indirizzoemail AT server DOT com.

Hai selezionato questo User Id:
    "Babbo Natale (regali AT polonord DOT net) "

Modifica (N)ome, (C)ommento, (E)mail oppure (O)kay/(Q)uit?

Se e’ tutto corretto diamo l’OK premendo la O e dando invio.

Ora ci chiede la cosa piu’ importante:

Ti serve una passphrase per proteggere la tua chiave segreta.

Inserisci la passphrase:

Mi raccomando, che sia lunga e complessa, ma qualcosa che vi possiate ricordare, una strofa di una poesia scritta da voi ma della quale vi vergognate troppo per renderla pubblica sarebbe l’ideale.

Dopo aver digitato due volte la frase cominciamo a muovere il mouse o pigiare qualche tasto della tastiera, se non lo facciamo e’ possibile appaia piu’ volte questa scritta:

Dobbiamo generare un mucchio di byte casuali. È una buona idea eseguire
qualche altra azione (scrivere sulla tastiera, muovere il mouse, usare i
dischi) durante la generazione dei numeri primi; questo da al generatore di
numeri casuali migliori possibilità di raccogliere abbastanza entropia.

Ultimate le sue cose ci scrivera’:

gpg: key NUMERI marked as ultimately trusted
chiavi pubbliche e segrete create e firmate.

gpg: controllo il trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   2  signed:   1  trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: depth: 1  valid:   1  signed:   0  trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: il prossimoi controllo del trustdb sarà fatto il 2014-09-10
pub   1024D/NUMERI 2010-09-01
      Key fingerprint = BLAB LABL ABLA BLAB LABL  ABLA BLAB LABL ABLA BLAB
uid                Babbo Natale (regali AT polonord DOT net)
sub   2048g/B2A9289A 2010-09-01

Abbiamo finito. Adesso la vostra chiave GPG e’ stata creata, scrivete su un terminale:
$ gpg --list-keys
e vedrete che nell’elenco c’e’ anche la vostra chiave appena creata.

Altri comandi sono:
$ gpg --fingerprint
per vedere le “impronte digitali” delle chiavi, e:
$ gpg --list-sigs
per vedere le firme.

E’ buona norma appena creata la chiave, creare il suo certificato di revoca, indispensabile nel caso la nostra chiave diventasse compromessa (qualcuno scopre la frase segreta) o inutilizzabile (perdiamo il possesso dell’email o dimentichiamo la frase segreta). Allora generiamo il certificato di revoca:
$ gpg --gen-revoke NOSTRACHIAVE
copiamolo e conserviamolo in un posto sicuro (stampiamolo o incolliamolo in un file di testo).

Se o quando dovremo utilizzarlo, bastera’ importarlo:
$ gpg --import REVOCA.txt
e aggiornare la nostra chiave sui server [1]:
$ gpg --keyserver SERVER --send-keys NOSTRACHIAVE

Se doveste perdere la chiave pubblica, potete ricrearla con la chiave privata:
$ gpgsplit --no-split --secret-to-public CHIAVEPRIVATA.gpg >CHIAVEPUBBLICA.gpg

Adesso potete importare le chiavi pubbliche dei vostri contatti:
$ gpg --import CHIAVEPUBBLICA.gpg

esportare le vostre chiavi pubbliche (da dare ai vostri contatti):
$ gpg --output MIACHIAVEPUBBLICA.gpg --armor --export [email protected]

cifrare un documento:
$ gpg --output DOCUMENTO.gpg --encrypt --recipient [email protected] DOCUMENTO.odt
se il documento lo dobbiamo inviare a qualcuno cifrato, lo cifriamo con la sua chiave pubblica:
$ gpg --output DOCUMENTO.gpg --encrypt --recipient [email protected] DOCUMENTO.odt

decifrarlo (ci verra’ chiesta la nostra frase segreta, e se l’abbiamo mandato alla Befana, la Befana lo decifrera’ con la sua frase segreta):
$ gpg --output DOCUMENTO.odt --decrypt DOCUMENTO.gpg

Possiamo anche firmare documenti:
$ gpg --output DOCUMENTO.sig --sign DOCUMENTO.odt
e per aprirli dobbiamo decriptarli:
$ gpg --output DOCUMENTO.odt --decrypt DOCUMENTO.sig

o firmarli in chiaro (il documento non viene modificato se non per qualche riga all’inizio e alla fine del documento stesso):
$ gpg --clearsign DOCUMENTO.odt

Possiamo usare i server per prelevare le chiavi dei nostri contatti:
$ gpg --keyserver SERVER --recv-key CHIAVECONTATTO
e spedire la nostra:
$ gpg --keyserver SERVER --send-key NOSTRACHIAVE

Ovviamente possiamo anche modificare la nostra chiave:
$ gpg --edit-key NOSTRACHIAVE
ci verra’ chiesto un comando:

Command> 

a questo punto abbiamo varie opzioni:
adduid aggiunge un altro UID;
uid 1 imposta un UID primario (se abbiamo piu’ di un UID) dobbiamo poi dare il comando primary;
addkey possiamo cosi’ aggiungere un’altra chiave, ad esempio da usare solo per criptare, ci verra’ chiesto:

Please select what kind of key you want:
   (2) DSA (sign only)
   (4) Elgamal (encrypt only)
   (5) RSA (sign only)
   (6) RSA (encrypt only)

e noi ad esempio rispondiamo 4, o 6 (usatelo se nel creare la chiave avete selezionato 2 o 5, ossia se la vostra chiave e’ solo per firmare).

Ovviamente dopo ogni modifica ricordate di propagare la vostra chiave attraverso i server (ne basta uno, si aggiornano tra di loro tanto):
$ gpg --keyserver SERVER --send-key NOSTRACHIAVE

Per firmare una chiave (da fare solo se siete assolutamente certi della sua autenticita’, generalmente solo se conoscete direttamente il proprietario della chiave) occorre dare questo comando:
$ gpg --edit-key CHIAVEDAFIRMARE
e quando ci viene chiesto un comando:

Command> 

scriviamo:
sign
indichiamo il grado di fiducia e decidiamo se tenere per noi questo giudizio o propagarlo e cosi’ abbiamo firmato la chiave. A questo punto esportiamo la chiave firmata:
$ gpg --export -a CHIAVEFIRMATA > CHIAVEFIRMATA.key
e mandiamola al proprietario.

Se qualcuno firma la nostra chiave e ci manda la copia firmata, possiamo importarla nel nostro portachiavi:
$ gpg --import NOSTRACHIAVEFIRMATA.key
e aggiornarla sui server:
gpg --keyserver SERVER --send-keys NOSTRACHIAVE

Le informazioni indispensabili per firmare la chiave sono l’UID e il fingerprint, abbiamo visto sopra come ottenere queste informazioni.

Infine per cancellare la chiave pubblica di un nostro contatto:
$ gpg --delete-key SUACHIAVEPUBBLICA

o per cancellare la nostra chiave privata:
$ gpg --delete-secret-key NOSTRACHIAVE
dopo possiamo cancellare anche la nostra chiave pubblica:
$ gpg --delete-key NOSTRACHIAVE

Prendetevi come abitudine quella di aggiornare le chiavi pubbliche in vostro possesso con frequenza. Questo per evitare di mandare email crittografate a qualcuno con la sua chiave pubblica compromessa (ricordate la possibilita’ di revocare una chiave). Dunque una volta al mese (o prima di mandare email crittografate) diamo questo comando:
$ gpg --refresh-keys --keyserver pool.sks-keyservers.net

Per migliori informazioni leggetevi il manuale lungo o quello breve. Ci sono piccoli accorgimenti utili per prendervi cura della sicurezza delle vostre chiavi, potete leggerli in questo breve ma utile post “Taking good care of your keyring“. Domani scrivero’ un post sempre su GPG ma questa volta su come creare delle chiavi piu’ sicure, utilizzando l’algoritmo SHA-2.

[1] Qui trovate una lunga lista di server pubblici: 5.1 Lista di keyserver pubblici. Ricordate che i server si aggiornano tra loro, quindi basta mandare le chiavi in un solo server perche’ vengano propagate su tutti quanti. [↩]


[^] torna su | post<li> | HowTo: crea e gestisci la tua chiave GPG



Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :