Questo tutorial descrive come installare la versione 1.4.0 (o 1.2.4) di GPG (GNU Privacy Guard) su Mac OS X 10.3 (Panther), e come configurare il sistema in tutte le sue parti ai fini dell'uso integrato con Apple Mail. Queste note sono per la maggior parte applicabili anche a Jaguar, anche se nessuna prova specifica è stata fatta a riguardo.
La comunicazione via mail è basata sul protocollo SMTP (Simple Mail Transfer Protocol), un sistema semplice ma diventato inadatto a gestire il principale mezzo di comunicazione elettronica, l'e-mail. SMTP era nato con scopi assai più limitati di quelli per cui oggigiorno è (malauguratamente) usato. In particolare, SMTP non consente una comunicazione "sicura": in altre parole, tutto il contenuto del messaggio viaggia in chiaro lungo le linee digitali. Il sistema GPG si propone di risolvere questo problema, criptando e decriptando i messaggi spediti e ricevuti.
Il meccanismo si basa sull'uso di due chiavi: una chiave pubblica, da diffondere e pubblicare, e una chiave privata, da custodire con grande cura. Le due chiavi sono generate dal sistema in modo semplice. Ogni utente GPG avrà un set di chiavi siffatto. Illustriamo il caso d'uso principale: la trasmissione di un messaggio da parte dell'utente A, e la sua ricezione da parte dell'utente B. A e B sono entrambi in possesso di una coppia di chiavi GPG. L'utente A scrive il messaggio, e all'atto di spedirlo cripta il messaggio usando la chiave pubblica di B (ed eventualmente la chiave pubblica di ogni altro destinatario C). Tale messaggio risulta decriptabile solo usando la chiave privata di B (o C). La chiave privata di B è (per ipotesi) posseduta esclusivamente da B, il quale deve evitare di condividerla o perderla. In tal modo, solo B è in grado di leggere il contenuto del messaggio. Il meccanismo è sicuro nell'ipotesi che le chiavi private non vadano perse o condivise: in tali casi, il meccanismo crolla.
Per maggiori informazioni (sintetiche, in italiano):
http://www.gnupg.org/(en)/howtos/it/GPGMiniHowto.html
Per maggiori informazioni (complete ed esaustive, in varie lingue):
http://www.gnupg.org/(en)/documentation/index.html
Allo stato attuale delle cose, non esiste una versione già compilata di GPG 1.4.0 (ossia la versione più recente) per Mac OS X. Esiste un tradizionale installer (fornito dal progetto MacGPG) che tuttavia installa la versione 1.2.4 su Panther, e la 1.2.3 su Jaguar. La 1.2.x funziona, ma la 1.4.0 fornisce notevoli migliorie, descritte alla seguente pagina: http://lists.gnupg.org/pipermail/gnupg-announce/2004q4/000186.html. Siccome noi ci accontentiamo solo del meglio, ci appare logico installare la versione 1.4.0 (e ciò è a maggior ragione valido in questo caso, visto che si parla di sicurezza). Tuttavia, l'installazione della versione 1.4.0 prevede la compilazione dei sorgenti attraverso l'uso del terminale: è pertanto necessario avere installato i Developer Tools, e una minima dimestichezza col Terminale. Chi non avesse installato i Developer Tools e/o non volesse "sporcarsi troppo le mani", può rinunciare alla versione 1.4.0 e usare la 1.2.4, la cui installazione è descritta allo Step 0. Chi vuole la 1.4.0, può andare direttamente allo Step 1.
Questo step descrive l'installazione della versione 1.2.4 di Gnu Privacy Guard, attraverso le modalità usuali di Mac OS X.
Questo step prevede che abbiate installato i Developer Tools sul vostro computer. GnuPG sarà installato a partire dal codice sorgente, che pertanto dovrà essere preventivamente compilato.
CUBE9:~ ep$ cd Desktop CUBE9:~ ep$ tar xvzf gnupg-1.4.0.tar.gz CUBE9:~ ep$ cd gnupg-1.4.0 CUBE9:~ ep$ ./configure CUBE9:~ ep$ make CUBE9:~ ep$ make check (tutti i test dovrebbero passare) CUBE9:~ ep$ sudo make install
A questo punto GPG 1.4.0 è installato sul computer. Si fa presente che i comandi "./configure" e "make" comportano un certo tempo per il loro completamento: è importante che il terminale non venga chiuso, e che il computer NON venga riavviato durante la loro esecuzione. L'esecuzione del comando "sudo" richiede l'immissione della password di root. Se non è possibile usare sudo, eseguire i seguenti comandi in alternativa (inserendo le relative password):
CUBE9:~ ep$ su username_utente_amministratore password: CUBE9:~ ep$ su root password:
Ulteriori informazioni: http://macgpg.sourceforge.net/docs/howto-build-gpg-osx.txt.asc
Fate login dentro l'utente Mac OS X che usate di solito, in particolare quello che usate di solito per spedire e rispondere a messaggi di posta elettronica. Aprite una nuova finestra di Terminale. La prima cosa da fare con GnuPG è creare una coppia di chiavi. Sul terminale digitate:
CUBE9:~ ep$ gpg --gen-key
Tale comando creerà una directory nascosta (.gnupg) dentro la vostra home, ed ivi salverà la vostra chiave privata e pubblica. Tuttavia, prima di generare le chiavi, bisognerà rispondere ad una serie di domande.
La prima domanda riguarda il tipo di chiavi che si vuole generare. Elgamal è un potente algoritmo di criptazione, e DSA è lo standard per firmare (signing) un contenuto testuale.
gpg (GnuPG) 1.4.0; Copyright (C) 2004 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. Please select what kind of key you want: (1) DSA and Elgamal (default) (2) DSA (sign only) (5) RSA (sign only) Your selection? 1
La prossima domanda riguarda la scelta della dimensione delle chiavi. In breve, più grandi sono, più sono sicure contro attacchi "brute-force".
DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096
In seguito ci viene chiesto se vogliamo stabilire una scadenza per la nostra chiave: rispondiamo di no (vogliamo che la chiave resti valida indefinitamente).
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y
Ora inseriremo il nostro nome e la casella e-mail che vogliamo proteggere tramite GnuPG. Ci verrà anche chiesto una password che useremo ogni volta che usiamo GnuPG (per esempio ogni volta che criptiamo un messaggio).
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) <heinrichh@duesseldorf.de>"
Real name: Pinco Pallino
Email address: pinco@pallino.com
Comment: my ass
You selected this USER-ID:
"Pinco Pallino (my ass) <pinco@pallino.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
mypassphrase
A questo punto la generazione delle chiavi incomincia. Come suggerito dal programma stesso, conviene muovere il mouse, usare i dischi e la tastiera per generare una chiave più complessa e diversificata. Questo processo porta via un tempo considerevole, a seconda della lunghezza della chiave scelta in precedenza.
We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. +++++..+++++++++++++++.++++++++++++++++++++++++++.......++++.---...... ++++.++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++ .....++++++++...++++++++++++++++++++++++++++++........................ gpg: /Users/ep/.gnupg/trustdb.gpg: trustdb created gpg: key 0D23884B marked as ultimately trusted public and secret key created and signed. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
Quando la generazione delle chiavi termina, GnuPG è perfettamente usabile da terminale. Tuttavia, per facilitarci la vita, installiamo un altro programma (GPGMail) che facilita l'integrazione di GPG dentro il nostro client di posta preferito, Apple Mail.
GPGMail della Sen:te fornisce un'ottima integrazione tra Mail e GPG. Dopo aver installato GPGMail nuovi oggetti grafici appariranno dentro Mail, in particolare dentro la finestra di editing di un nuovo messaggio e dentro il menu "Message", come si può vedere al passo 8. Attraverso tali oggetti e menu sarà possibile criptare o firmare (la firma comporta solo l'autenticazione del mittente (la firma, appunto) ma nessuna criptazione) con facilità i propri messaggi. Sarà inoltre possibile decifrare i messaggi ricevuti da amici.
GPGMail.mailbundle dentro la cartella ~/Library/Mail/Bundles (a partire dalla propria home directory). Se il folder Bundles non esiste, crearlo.CUBE9:~ ep$ defaults write com.apple.mail EnableBundles YES
Il comando defaults non sarà disponibile se la vostra installazione di Mac OS X non comprende il BSD Subsystem.
Per ultertiori informazioni, si faccia riferimento a http://www.sente.ch/software/GPGMail/English.lproj/GPGMail.html.
Se non si sta usando Mac OS X 10.3, saltare questo Step e andare allo Step 5. Su Panther, invece, da Terminale scrivere:
CUBE9:~ ep$ defaults write com.apple.mail BundleCompatibilityVersion 1
Questo step è facoltativo. E' possibile eventualmente saltare allo Step 6 se non si è interessati alla feature descritta nel seguito di questo step. Se si è installato GnuPG 1.4.0, si può abilitare il timeout introdotto nella versione 1.4.0 durante la ricerca di chiavi, ossia quando si sta verificando un messaggio firmato con una chiave mancante (per qualche ragione). Per abilitare questa feature, ci si deve posizionare dentro la directory ~/Library/Mail/Bundles/, ed eliminare due file presenti dentro il bundle di GPGMail. A questo scopo, è possibile scrivere i seguenti comandi nel Terminale (sostituire "ep" con lo username del vostro utente):
CUBE9:~ ep$ cd /Users/ep/Library/Mail/Bundles/ CUBE9:~ ep$ cd GPGMail.mailbundle/Contents/Frameworks/GPGME.framework CUBE9:~ ep$ cd Resources/ CUBE9:~ ep$ ls -la total 280 drwxr-xr-x 14 ep ep 476 14 May 2004 . drwxr-xr-x 6 ep ep 204 14 May 2004 .. -rw-r--r-- 1 ep ep 17992 14 May 2004 COPYING drwxr-xr-x 4 ep ep 136 14 May 2004 Danish.lproj drwxr-xr-x 4 ep ep 136 14 May 2004 English.lproj drwxr-xr-x 4 ep ep 136 14 May 2004 French.lproj drwxr-xr-x 4 ep ep 136 14 May 2004 German.lproj -rw-r--r-- 1 ep ep 603 14 May 2004 Info.plist drwxr-xr-x 4 ep ep 136 14 May 2004 Italian.lproj drwxr-xr-x 4 ep ep 136 14 May 2004 Spanish.lproj drwxr-xr-x 4 ep ep 136 14 May 2004 Swedish.lproj -rwxr-xr-x 1 ep ep 86412 14 May 2004 gpgkeys_hkp -rwxr-xr-x 1 ep ep 24100 14 May 2004 gpgkeys_ldap -rw-r--r-- 1 ep ep 293 14 May 2004 pbdevelopment.plist CUBE9:~ ep$ rm gpgkeys_hkp CUBE9:~ ep$ rm gpgkeys_ldap
Maggiori indicazioni sono disponibili a: http://www.sente.ch/software/GPGMail/English.lproj/FAQ.html
Scaricare ed installare GPGPreferences da http://prdownloads.sourceforge.net/macgpg/GPGPreferences-1.2.dmg?download (oppure http://macgpg.sourceforge.net/#files). Verrà installato un pannello dentro System Preferences relativo a GPG.
Un uso standard di GPG non richiede modifiche di alcuna opzione del pannello preferenze: i default dovrebbero andare più che bene. Eventualmente, dentro il tab "Key Server", abilitare la checkbox "Automatically retrieve keys from server while verifying".
GPG Keychain Access è un'applicazione (parte del progetto MacGPG) per la gestione delle chiavi PGP. Con tale applicazione si potranno facilmente aggiungere e rimuovere chiavi personali e di amici.
L'installazione è elementare: scaricare lo zip da http://prdownloads.sourceforge.net/macgpg/GPG_Keychain_Access.0.7.0.1.zip?download (o fare riferimento a http://macgpg.sourceforge.net/#files), decompattarlo, e trascinare la GPG Keychain Access.app dove si ritiene più opportuno (/Application/Utilities/ è un posto usuale).
Lanciando GPG Keychain Access, si dovrebbe automaticamente notare la presenza della propria chiave pubblica (tab "Public") e privata (nel tab "Secret").
Supponiamo ora che un nostro amico ci comunichi la sua chiave pubblica. Quello che vogliamo fare è aggiungere tale chiave al nostro insieme di chiavi pubbliche, poichè così quando vorremo scrivergli una mail, potremo automaticamente usare la sua chiave pubblica per criptare il messaggio. A tale scopo, conviene salvare la chiave pubblica del nostro amico su un file di puro testo. Un esempio di tale file è, per esempio, la mia chiave pubblica. Pertanto, suppondendo che vogliate scrivermi un messaggio, salvatevi la mia chiave sul vostro hard disk usando il link riportato. Quindi, andate in GPG Keychain Access, cliccate su "Import", e selezionate il file contenente la mia chiave pubblica. Essa verrà inclusa nella vostra lista di chiavi pubbliche.
Riavviare Mail.
Supponiamo ora che vogliate spedirmi un messaggio usando la chiave pubblica aggiunta allo Step 7. Intuitivamente, creerete un nuovo messaggio, proprio come fate di solito. Nella finestra di "Nuovo Messaggio" vedrete che poco sotto il campo "Subject" ("Soggetto") appare ora una nuova linea "PGP":
Abilitando la checkbox "Encrypted" sarà possibile criptare il messaggio scegliendo la chiave del destinatario. Mail (e GPGMail) dovrebbero automaticamente suggerire quale chiave usare dentro il menu a tendina "Keys". All'atto dell'invio, GPGMail chiederà di inserire la passphrase decisa durante la configurazione di GnuPG (Step 2).
In alternativa, è possibile non criptare il messaggio, e firmarlo solamente. Per fare ciò, disabilitare la checkbox "Encrypted" ed abilitare la checkbox "Signed", scegliendo la propria identità. In tal modo, il destinatario avrà sarà certo che il messaggio arriva veramente da voi.
Quando riceverete un messaggio criptato, un pulsante "Decrypt" apparirà sopra la finestra di visualizzazione in Mail:
Sarà sufficiente cliccare il pulsante ed inserire di nuovo la passphrase per descriptare il messaggio. E' possibile configurare Mail per evitare di dover immettere la passphrase ogni volta che si cripta o decripta un messaggio: ciò è descritto nello step successivo.
Se apriamo le preferenze di Mail, vedremo un nuovo pannello preferenze PGP.
Alcune note:
Esistono opportuni key-servers per la gestione e l'immagazzinamento di chiavi pubbliche. E' possibile fare ricerche in tali server per scaricare ed aggiungere al proprio mazzo le chiavi pubbliche di altre persone, in modo da poter comunicare con esse in modo sicuro ma senza dover per forza interpellarle chiedendogli la loro chiave pubblica.
Per esempio, supponiamo di voler scrivere una mail a Steve Jobs. Cercheremo la sua eventuale chiave pubblica e la aggiungeremo al nostro mazzo di chiavi:
Premendo OK, una finestra di terminale si aprirà iniziando la ricerca. Il seguente output sarà generato, con la richiesta di scegliere quale chiave aggiungere, o abortire:
CUBE9:~ ep$ gpg --search-keys "steve jobs"
gpg: searching for "steve jobs" from hkp server subkeys.pgp.net
(1) Steve 'Rim' Jobs (I am Steve 'Rim' Jobs, Karma whore extraordinaire) <
1024 bit DSA key BDD90D5B, created: 2003-12-05
(2) Steve Jobs <sjobs@apple.com>
1024 bit DSA key DB985559, created: 1998-08-17
(3) Steve Jobs <sjobs@apple.com>
Steve "Bill Clinton's Friend" Jobs <sjobs@apple.com>
1024 bit DSA key 4CE06F00, created: 1997-10-20 (revoked)
Keys 1-3 of 3 for "steve jobs". Enter number(s), N)ext, or Q)uit > 2
Possiamo scegliere una delle chiavi trovate, digitando il numero apposito (e premendo Invio):
gpg: requesting key DB985559 from hkp server subkeys.pgp.net gpg: key DB985559: public key "Steve Jobs <sjobs@apple.com>" imported gpg: Total number processed: 1 gpg: imported: 1 CUBE9:~ ep$
La chiave scelta sarà aggiunta al nostro portachiavi. Ad esempio, cliccando sul tab "Public" dentro GPG Keychain Access vedremo comparire la chiave di Steve Jobs, insieme alle altre.
Come è facile intuire, è possibile cercare ed aggiungere chiavi direttamente dal terminale, con il comando gpg --search-keys "nome della persona". Inoltre, man gpg fornirà ulteriori informazioni per chi è pratico del terminale.
Abbiamo descritto l'installazione e l'uso di GPG su Mac OS X. Questo tutorial fornisce informazioni per un uso minimale del sistema: tuttavia, GnuPG fornisce molte ulteriori feature e possibilità. Di seguito riportiamo alcuni link relativi:
Sito del progetto GNU Privacy Guard (multipiattaforma):
Sito del progetto MacGPG (Mac OS X):
http://macgpg.sourceforge.net/
Gnu Privacy Guard (GnuPG) Mini Howto (italiano):
http://www.gnupg.org/(en)/howtos/it/GPGMiniHowto.html
Home page di GPGMail:
http://www.sente.ch/software/GPGMail/
Ulteriori istruzioni per la configurazione di GnuPG su Mac OS X:
http://fiatlux.zeitform.info/en/instructions/pgp_macosx.html
Inoltre, da terminale si possono ottenere molte informazioni digitando:
% man gpg % gpg --help
Alcuni comandi utili sono, in breve:
# elenco chiavi presenti nel proprio portachiavi pubblico: % gpg --list-keys # export della propria chiave pubblica (o di qualsiasi chiave pubblica in proprio possesso): % gpg --output mia.gpg --armor --export io@example.com # importare una chiave pubblica da un file di testo: % gpg --import tizio.gpg
Se trovate inesattezze in questo tutorial, siete invitati a riportarle a Ettore Pasquini.