Home / Istruzioni / GnuPG  Not f'd - you won't find me on Facebook  Identi.ca  Twitter  YouTube  Flickr  Instagram  LinkedIn  Reddit  Social

GNU Privacy Guard

Creazione chiave

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.

Non e' lo scopo di questo scritto 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.

Cominciamo 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.
Siamo 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.

GPG piu' sicura

Chissa' quanti di voi avranno la propria chiave GNU Privacy Guard (GPG) [1], crittografata in SHA-1 (il più diffuso algoritmo della famiglia SHA). Come saprete i fratelli maggiori di SHA-1 sono molto piu' sicuri. Allora perche' non crittografare con questi? Lo possiamo fare cambiando le configurazioni di GPG (alcune versioni sono gia' impostate per usare l'SHA-2).

Apriamo allora il file di configurazione di GPG col nostro fidato editor di testo:
nano ~/.gnupg/gpg.conf
e aggiungiamoci queste poche ma importanti righe:

personal-digest-preferences SHA256
cert-digest-algo SHA256
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed

In questo modo stiamo dicendo a GPG di utilizzare il piu' sicuro algoritmo di codifica SHA2 al posto di SHA1.
A questo punto seguiamo quanto visto prima su come creare la nostra chiave GPG, pero' alla domanda [2]:

Please select what kind of key you want:
   (1) DSA and Elgamal (default)
   (2) DSA (sign only)
   (5) RSA (sign only)
Your selection? 

noi scegliamo 5 e in seguito quando ci viene chiesto a quanti bits vogliamo la chiave indichiamo 4096. Adesso possiamo firmare documenti e altri file con una chiave piu' sicura.

Fonte: Debian.org - Creating a new GPG key

Vi e' un altro problema di sicurezza, questa volta e' dovuto al fattore umano, ossia si basa sul fatto che possiamo distrarci e non prestare sufficiente attenzione ai keyID (identificativi della chiave). Generalmente questi li vediamo nel formato a 32 bit, ad esempio 0x21371253. E' stato dimostrato come sia possibile falsificare l'identita' con una chiave col medesimo keyID. Risulta dunque importante modificare il file di configurazione per dire a GnuPG di mostrarci i keyID lunghi, quelli a 64 bit, ad esempio 0x15EFCD0721371253 e soprattutto occorre analizzare sempre l'impronta digitale della chiave (key fingerprint). Dunque apriamo il file di configurazione:
nano ~/.gnupg/gpg.conf
e aggiungiamo queste due righe:

  # Mostra keyid lunghi e impronte digitali
  keyid-format 0xlong
  with-fingerprint

Creazione revoca

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 [3]:
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 regali@polonord.net

Usare la chiave

Per cifrare un documento:
gpg --output DOCUMENTO.gpg --encrypt --recipient regali@polonord.net DOCUMENTO.odt
se il documento lo dobbiamo inviare a qualcuno cifrato, lo cifriamo con la sua chiave pubblica:
gpg --output DOCUMENTO.gpg --encrypt --recipient befana@camino.net 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

Modificare la chiave

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

Firmare chiavi

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.

Cancellare chiave

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

Aggiornare chiavi

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


 

[1] Soprattutto dopo aver letto quanto scritto in precedenza. []
[2] Dalla versione 1.4.0 di GNUPG le opzioni sono differenti, dunque bastera' scegliere l'opzione (1) RSA and RSA (default). []
[3] 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. []


Commenti su Identi.ca.
Flattr this