Capitolo 13. Iniziare con GnuPG

Primi passi con GnuPG

Vi siete mai preoccupati di verificare se la vostra e-mail è sicura? È abbastanza semplice immaginare che il vostro interlocutore leggerà la vostra email, ma è altresì vero che altre persone potrebbero tentare di leggere le vostre email.

Nel posta tradizionale le vostre lettere vengono spedite con le buste, e trasportate da un ufficio postale all'altro fino al più vicino alla destinazione. Ma spedire posta attraverso internet è molto meno sicuro; le e-mail vengono trasmesse in chiaro da un server all'altro. Non ci sono procedimenti speciali per proteggere la vostra corrispondenza da occhi indiscreti.

Per proteggere la vostra privacy Red Hat Linux include GnuPG, la GNU Privacy Guard, che viene installata per default durante una tipica installazione di Red Hat Linux.

GnuPG è un tool per rendere sicure le comunicazioni. È una sostituzione open source della tecnologia di cifratura PGP (Pretty Good Privacy, un' applicazione molto popolare). Con GnuPG, potete cifrare i vostri dati ed autenticare la corrispondenza tramite una firma digitale. GnuPG offre anche la possibilità di decifrare PGP ver. 5.x.

GnuPG è compatibile con altri standard di cifratura, e la vostra corrispondenza sicura sarà probabilmente compatibile con le applicazioni per le e-mail su altre piattaforme, come Windows o MacOS.

GnuPG utilizza una public key cryptography per permettere agli utenti scambi sicuri di dati. In uno schema di public key cryptography vengono generate due chiavi una public key e una private key. Potete inviare la vostra public key con altri utenti o con un keyserverma non dovreste mai rivelare la vostra private key.

La cifratura dipende dall'utilizzo delle chiavi Nella cifratura convenzionale o simmetrica, entrambe le transazione ( in e out ) hanno la stessa chiave, che viene utilizzata per decodificare la corrispondenza di entrambi. Nella crittografia tipo public key, coesistono due chiavi: una public key e una private key. Una persona o una organizzazione mantengono segreta la private key e pubblicano la loro public key. I dati codificati con la public key possono solo essere decodificati con la private key; i dati codificati con la private key possono solo essere decodificati con la public key.

SuggerimentoAlcune informazioni sul prompt della shell
 

Come per molti altri tool per Red Hat Linux potete trovare informazioni su GPG nelle pagine man e info. Dal prompt della shell digitate man gpg o info gpg per ricevere aiuto in merito ai comandi ed alle opzioni di GPG.

Un analisi approfondita sulla crittografia, va oltre lo scopo di questo capitolo; sono stati scritti interi volumi sull'argomento. In questo capitolo, quindi, speriamo di essere comunque esaurienti in merito a GnuPG in modo da permettervi di trasferire in modo sicuro i vostri dati. Per maggiori informazioni su GnuPG, si veda il sito http://www.gnupg.org/. Se volete apprendere di più in merito ad applicazioni GPG, o PGP consultate la la sezione Dove trovare maggiori informazioni.

Ci sono dverse interfacce grafiche per GnuPG, come SeaHorse, che è incluso in Red Hat Linux 7.0. In ogni modo molti task in GnuPG possono essere eseguiti velocemente dal prompt della shell.

Generare una Keypair

Per iniziare ad usare GnuPG, dovete per prima cosa generare una nuova keypair -- una chiave pubblica ed una privata.

Ecco una veloce sintesi dei passi necessari.

Per generare una keypair, aprite una finestra xterm ed al prompt digitate:

gpg --gen-key
		  

Vi verrà chiesto di selezionare un certo numero di opzioni, come il tipo e la lunghezza della chiave che volete creare. Sono anche disponibili opzioni di default, che potete decidere di utilizzare premendo Enter. Se non avete buone ragioni per fare diversamente, potrebbe essere un'ottima scelta lasciare le opzioni di default.

Inserite uno user ID, con il vostro nome, l'indirizzo di e-mail ed un commento opzionale. Quindi inserite una passphrase (si tratta di una frase che viene utilizzata come password), la quale, come password, deve essere univoca e sicura a sufficienza, in modo da impedire che qualcun altro la possa scoprire. Una passphrase può essere una singola parola o una frase. Ovviamente qualunque cosa scegliate assicuratevi di ricordarla !

ImportanteUna breve nota
 

La crittografia public key è estremamente sicura ma non a prova di bomba. Il suo "tallone di Achille" è la vulnerabilità della passphrase. Scegliendo come passphrase la vostra data di nascita o il vostro indirizzo non renderete difficile il compito di chi cerca di scoprire le vostre chiavi. Provate a scegliere qualcosa al di fuori dell'ordinario, come un mix di lettere e numeri.

Dopo averle create, le vostre chiavi pubbliche e private vengono inserite nella directory .gnupg. Per visualizzare le vostre chiavi digitate gpg --list-keys. Vederete le vostre nuove chiavi in questo modo:

[newuser@localhost newuser]$ gpg --list-keys
/home/newuser/.gnupg/pubring.gpg
-----------------------------------------
pub  1024D/B7085C8A 2000-04-18 Your Name <you@yourisp.net>
sub  1024g/E12AF9C4 2000-04-18
	

Generare un certificato

Una volta creato il vostro keypair, dovreste creare un revocation certificate (certificato di revoca) per la vostra chiave pubblica. Se vi doveste dimenticare la vostra passphrase, o se venisse scoperta, potete pubblicare questo certificato per informare gli utenti che questa chiave public non deve essere utilizzata.

NotaPerchè "revocare" una chiave appena creata?
 

Quando create un certificato, non revocate la chiave appena creata. Semplicemente offrite a voi stessi un modo sicuro per richiamare la chiave da un uso pubblico. Supponiamo che vi dimenticate la passphrase, cambiate ISP, o vi capita un crash di un hard disk. Richiamando il certificato avete la possibilità di escludere la vostra chiave public.

La vostra firma digitale sarà valida per chi legge la vostra corrispondenza prima che la chiave venga revocata, e sarete in grado di decifrare i messaggi ricevuti prima della sua revoca. Per generare un certificato di revoca utilizzate il comando --gen-revoke.

[newuser@localhost newuser]$ gpg --output revoke.asc --gen-revoke  <you@yourisp.net>
	

Si noti che se omettete --output revoke.asc, il vostro certificato di ritiro verrà inviato allo "standard output," che è lo schermo del vostro monitor. Potete copiare ed incollare l'output in un file di vostra scelta utilizzando un editor di testo come Pico, ma è più semplice ridirigere l'output in un file. In questo modo potete tenere il certificato in modo da utilizzarlo successivamente, o copiarlo in un floppy.

Le operazioni di creazione del certificato saranno simili a:

[newuser@localhost newuser]$ gpg --output revoke.asc --gen-revoke  <you@yourisp.net>

sec  1024D/823D25A9 2000-04-26  Your Name <you@yourisp.net>

Create a revocation certificate for this key? y
                                               
You need a passphrase to unlock the secret key for
user: "Your Name <you@yourisp.net>"
1024-bit DSA key, ID 823D25A9, created 2000-04-26

ASCII armored output forced.
Revocation certificate created.

	

Una volta che il certificato è stato creato, (revoke.asc), verrà inserito nella vostra login directory. Dovete assicurarvi che il file sia sicuro, quindi copiatelo in un floppy disk e mettetelo in un luogo sicuro. Se non sapete come copiare un file in un dischetto con Red Hat Linux, andate alla la sezione Usare i dischetti nel Capitolo 17.)

Esportare la vostra Public Key

Prima di poter usare una public key crittografata, gli altri devono avere una copia della vostra public key. Per mandare la vostra chiave agli altri utenti o ad un keyserver, dovete esportarela.

Per esportare la chiave, potete visualizzarla su una pagina Web o copiarla in un e-mail, digitando i seguenti comandi:

[newuser@localhost newuser]$ gpg --armor --export <you@yourisp.net> > mykey.asc
[newuser@localhost newuser]$
	  

Non vedete nulla, perchè non solo esportate la vostra chiave public, ma ridirigete l'output in un file chiamato per esempio, mykey.asc. Senza l'aggiunta di > mykey.asc, la chiave verrà visualizzata sull schermo come standard output.

Ora il file mykey.asc può venire inserito in una e-mail o esportato in un keyserver. Per vedere la chiave digitate il comando less mykey.asc per aprire il file e digitate Q per uscire.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org

mQGiBDkHP3URBACkWGsYh43pkXU9wj/X1G67K8/DSrl85r7dNtHNfLL/ewil10k2
q8saWJn26QZPsDVqdUJMOdHfJ6kQTAt9NzQbgcVrxLYNfgeBsvkHF/POtnYcZRgL
tZ6syBBWs8JB4xt5V09iJSGAMPUQE8Jpdn2aRXPApdoDw179LM8Rq6r+gwCg5ZZa
pGNlkgFu24WM5wC1zg4QTbMD/3MJCSxfL99Ek5HXcB3yhj+o0LmIrGAVBgoWdrRd
BIGjQQFhV1NSwC8YhN/4nGHWpaTxgEtnb4CI1wI/G3DK9olYMyRJinkGJ6XYfP3b
cCQmqATDF5ugIAmdditnw7deXqn/eavaMxRXJM/RQSgJJyVpbAO2OqKe6L6Inb5H
kjcZA/9obTm499dDMRQ/CNR92fA5pr0zriy/ziLUow+cqI59nt+bEb9nY1mfmUN6
SW0jCH+pIQH5lerV+EookyOyq3ocUdjeRYF/d2jl9xmeSyL2H3tDvnuE6vgqFU/N
sdvby4B2Iku7S/h06W6GPQAe+pzdyX9vS+Pnf8osu7W3j60WprQkUGF1bCBHYWxs
YWdoZXIgPHBhdWxnYWxsQHJlZGhhdC5jb20+iFYEExECABYFAjkHP3UECwoEAwMV
AwIDFgIBAheAAAoJEJECmvGCPSWpMjQAoNF2zvRgdR/8or9pBhu95zeSnkb7AKCm
/uXVS0a5KoN7J61/1vEwx11poLkBDQQ5Bz+MEAQA8ztcWRJjW8cHCgLaE402jyqQ
37gDT/n4VS66nU+YItzDFScVmgMuFRzhibLblfO9TpZzxEbSF3T6p9hLLnHCQ1bD
HRsKfh0eJYMMqB3+HyUpNeqCMEEd9AnWD9P4rQtO7Pes38sV0lX0OSvsTyMG9wEB
vSNZk+Rl+phA55r1s8cAAwUEAJjqazvk0bgFrw1OGO9m7fEeDlvPSV6HSA0fvz4w
c7ckfpuxg/URQNf3TJA00Acprk8Gg8J2CtebAyR/sP5IsrK5l1luGdk+l0M85FpT
/cen2OdJtToAF/6fGnIkeCeP1O5aWTbDgdAUHBRykpdWU3GJ7NS6923fVg5khQWg
uwrAiEYEGBECAAYFAjkHP4wACgkQkQKa8YI9JamliwCfXox/HjlorMKnQRJkeBcZ
iLyPH1QAoI33Ft/0HBqLtqdtP4vWYQRbibjW
=BMEc
-----END PGP PUBLIC KEY BLOCK-----
	

Esportare la public key in un Keyserver

Se scrivete solo a poche persone, potete esportare la vostra chiave public e spedirla direttamente. Se i vostri destinatari sono molti distribuire la chiave via email vi potrebbe farà perdere molto tempo. In questo Vengono in aiuto caso i Keyserver.

Figura 13-1. La Home Page di Keyserver.Net

Un keyserver è un deposito in Internet che può salvare e dstribuire la vostra chiave public a chiunque lo richieda. Ci sono molti keyserver disponibili, che si aggiornano tra di loro. Mandare la vostra chiave ad un keyserver è come distribuirla a tutti. Tutti i destinatari dovranno richiedere la vostra chiave public da un keyserver, importarla nel loro keyring, (un file dove vengono memorizzate le chiavi pubbliche e private).

SuggerimentoQuale keyserver utilizzare?
 

Poichè la maggior parte dei keyserver si sincronizzano, mandare la vostra chiave public ad uno di essi è solitamente una buona idea. Potete però preferire un keyserver particolare. Un luogo dove iniziare la ricerca del keyserver è il Keyserver.Net al sito http://www.keyserver.net; oppure al sito di Robert's Crypto & PGP Links: Keyservers http://crypto.yashy.com/www/Keyservers/

Potete mandare la vostra chiave pubblica sia dal prompt della shell o da un browser (come in Figura 13-1; dovete essere online per inviare o ricevere chiavi dai keyserver.

  • Dalla shell digitate:

    gpg --keyserver search.keyserver.net --send-key you@yourisp.net
    	      
  • Dal vostro browser andate al sito Keyserver.Net: http://www.keyserver.net e selezionate le opzioni per aggiungere la vostra PGP key.

    Il prossimo passo è copiare la vostra chiave pubblica nell'apposita area sulla pagina Web. Ecco come:

    • Aprite il vostro file contenente la chiave public (mykey.asc) creato in la sezione Esportare la vostra Public Key con un editor -- per esempio less mykey.asc

    • Usando il vostro mouse, copiate il file evidenziando le linee dal BEGIN PGP fino a END PGP, si veda la Figura 13-2.

    • Copiate il contenuto del file mykey.asc nell'appropriata area su Keyserver.Net premendo il pulsante centrale del mouse. Qundi cliccate su Submit sul keyserver. Se commettete un errore premete Reset per ricominciare.

Figura 13-2. Copiare la vostra Public Key

Si noti che state eseguendo una submit della vostra chiave su un keyserver, e la transazione vista sopra sarà sostanzialmente la stessa.

Questo è tutto. Indipendentemente che stiate usando il prompt della shell o il Web, vedrete un messaggio di conferma del submit. Ora gli utenti che vorranno comunicare con voi dovranno importare la vostra chiave public ed aggiungerla nel loro keyring.

Importare una Public Key

L'altro aspetto di un key exchange -- importare le public key degli altri nel nostro keyring -- è semplice come esportarle. Quando importate la chiave di qualcuno , potete decriptarla e verificare la firma digitale nel vostro keyring.

Uno dei metodi più semplici per importare la chiave è effettuere il download della stessa o salvarla da un sito web (come nel salvataggio della chiave di Red Hat in la sezione Importare le Key nel Capitolo 12).

Dopo aver scaricato una chiave, utilizzate il comando --import per aggiungerla al vostro keyring.

Un altro metodo consiste nell'utilizzare il comando del vostro browser Save As. Se utilizzate un browser come Navigator, e notate una chiave in un keyserver, potete salvare la pagina come testo (andate la menu File => Save As). Nel menu a tendina poi Format for saved document, selezionate Text. Qundi potete importarla. Per esempio supponiamo che abbiate appena salvato una chiave in un file di testo chiamato newkey.txt. Per importare il file digitate dal prompt della shell:

[newuser@localhost newuser]$ gpg --import newkey.txt
gpg: key F78FFE84: public key imported
gpg: Total number processed: 1
gpg:               imported: 1
[newuser@localhost newuser]$
	  

Per verificare se il processo si è concluso con successo utilizzate i comandi --list-keys dal prompt come in gpg --list-keys; dovreste vedere le vostre nuove chiavi elencate nel keyring.

Cosa sono le firme digitali?

Le firme digitali sono simili alle firme che inserite in un documento, come una e-mail.

Diversamente dalla corrispondenza tradizionale, nella quale è possibile firmare il documento, le firme digitali non possono venire falsificate. Questo perchè vengono create con un'unica chiave segreta, e può venire verificata dal vostro recipient utilizzando la chiave public.

Una firma digitale identifica un documento; in breve, significa che l'ora in cui firmate il documento è parte della firma. Se qualcuno prova a modificare il documento, la verifica della firma fallisce. Alcune applicazioni di posta elettronica cone Exmh o KMail, includono la possibilità di firmare i documenti con GnuPG.

Ci sono due tipi utili di firme diglitali: clearsigned e detached signatures. Entrambi i tipi di firma incorporano la stessa sicurezza nell'autenticazione, senza decriptare l'intero messaggio.

In un messaggio clearsigned, la vostra firma appare come un testo inserito nel contesto della lettera. Una firma detached viene mandata come file separato insieme alla corrispondenza, che è staccato dal messaggio.

Dove trovare maggiori informazioni

Esiste molta documentazione in merito alla cifratura di quella che può essere inserita in un capitolo introduttivo di GPG. Ecco alcuni spunti interessanti di ricerca:

  • Siti Web:

  • Libri:

    • La Official PGP User's Guide, Philip R. Zimmermann; MIT Press, 1995

    • PGP: Pretty Good Privacy, Simson Garfinkel; O'Reilly & Associates, 1994

    • E-Mail Security: How to Keep Your Electronic Messages Private, Bruce Schneier; John Wiley & Sons, 1995