Guida Introduttiva
al Programma di Crittografia a Chiave
Pubblica
PGP (Pretty Good Privacy)
di Giorgio
Chinnici [Nimrod]
Versione 1.4.1 - Ottobre 1996
Documento scritto in HTML da Luca Zanin (vagus@to.flashnet.it)
Indice
0. Scopo della Presente Guida
1. Perche' la Crittografia
2. La Crittografia a Chiave Pubblica
3. Status e Versioni
4. Dove Reperirlo
5. Come si Usa
5.1 Installazione e Generalita'
5.2 Generazione della Coppia di Chiavi
5.3 Gestione delle Chiavi
5.4 Codifica e Firma
5.5 Decodifica e Verifica della Firma
5.6 Il File di Configurazione config.txt
5.7 Codifica e Decodifica Convenzionale
6. I Keyservers
7. Considerazioni sulla Sicurezza
7.1 La Sicurezza delle Chiavi Pubbliche
7.2 Norme di Sicurezza per le Chiavi Pubbliche
7.3 Altre Importanti Norme di Sicurezza
8. Come Opera
9. Shell Windows per PGP
10. Risorse e documentazione
11. Problemi Vari
11.1 Editor con "Word Wrap"
11.2 PC con Piu' Dischi Fissi
0. Scopo della Presente
Guida
Ho voluto semplicemente scrivere, come dice il titolo, una introduzione
al PGP. I criteri che ho seguito sono:
- spiegare rapidamente e chiaramente di che cosa si tratta;
- mettere il lettore in grado di cominciare ad usare il PGP;
- fornire alcune utili informazioni.
La presente Guida quindi non ha pretese di completezza, ma contiene
l'essenziale; non vuole ostituire alcun manuale o documento esistente sul
PGP, ne' rappresentare una guida di riferimento.
Questa Guida contiene solo delle informazioni di pubblico dominio: pertanto,
come e' consuetudine, si declina ogni responsabilita' per l'uso che ne
verra' fatto.
Torna all'indice
1. Perche' la Crittografia
PGP (Pretty Good Privacy) e' un programma di crittografia a chiave pubblica,
che e' diventato lo standard de facto per l'utilizzo della crittografia
nella posta elettronica.
Con PGP e' possibile codificare un messaggio in modo che olo il destinatario
possa leggerlo, e non una terza persona. Inoltre, e' possibile autenticare
il mittente ed il messaggio. Questo risponde alla esigenza fondamentale
di riservatezza e sicurezza della corrispondenza privata.
La corrispondenza per posta elettronica ha da un lato innumerevoli
vantaggi, ma purtroppo presenta intrinsecamente un basso grado di sicurezza.
E' infatti molto semplice per una terza persona andare a leggere messaggi
privati destinati ad altri, oppure alterare un messaggio inviato da un
altro, oppure ancora inviarne uno con il nome di un altro.
"Ma io non ho nulla da nascondere" si potra' pensare. Certo,
nessuno di noi ha qualcosa da nascondere, pero' vogliamo lo stesso proteggere
la nostra corrispondenza da occhi ed orecchie indiscrete, vogliamo riaffermare
il diritto alla privacy, diritto elementare di liberta' in uno Stato democratico
gia' garantito dalla legge per quanto riguarda la posta ordinaria ed il
telefono.
L'articolo 15 della Costituzione della Repubblica Italiana garantisce
la privacy per qualunque forma di corripondenza. Anche se parliamo di pastasciutta,
vogliamo lo stesso mettere il nostro messaggio dentro una busta: il PGP
e' quella busta. Si corrono poi dei rischi di frode quando si trasmettono
per posta elettronica senza crittografia dati riservati.
Purtroppo negli ultimi tempi si assiste ad una campagna di disinformazione
circa Internet e la Telematica in generale. Non viene risparmiata la crittografia,
vista da alcuni come strumento per malintenzionati o societa' segrete.
Si tratta invece di uno strumento di liberta' da mettere a disposizione
di tutti, e la cui diffusione riveste quindi una importanza fondamentale,
in vista del ruolo sempre maggiore assunto dalla telematica quale quotidiano
mezzo di comunicazione su scala mondiale.
La realizzazione del programma PGP ha introdotto una cultura nuova
della crittografia, perche' ha consentito di fornire questo strumento,
prima riservato a pochi iniziati, a chiunque, rendendolo quindi utilizzabile
estensivamente quale normale strumento di privacy e sicurezza, e non (solo)
quale strumento di protezione di segreti.
Torna all'indice
2. La Crittografia a Chiave Pubblica
Il problema storico della crittografia classica si puo' riassumere in questo
modo: per potere cifrare un messaggio si deve utilizzare una chiave (segreta)
con cui effettuare la cifratura. La stessa chiave deve essere usata per
decodificare il messaggio cifrato.
Se Alice vuole inviare il messaggio codificato al destinatario Mad Hatter,
ha il problema di fare avere a quest'ultimo la chiave segreta, con la quale
egli potra' decodificare il messaggio. Se pero' Mad Hatter sta all'altro
capo del mondo e non c'e' un canale sicuro per trasmettere la chiave, questo
sistema non puo' funzionare, perche' la chiave puo' essere intercettata.
Per esempio, se io non voglio che un messaggio e-mail sia letto da
altri, sarebbe inutile codificarlo in modo convenzionale e poi inviare
la chiave usata per la codifica ancora per e-mail.
Il problema viene risolto brillantemente dalla crittografia a chiave pubblica,
alla cui base sta un'idea semplice e geniale. Ogni utente genera, mediante
una funzione di PGP, una coppia di chiavi. L'algoritmo matematico che effettua
questa operazione e' tale che:
- un messaggio codificato con una chiave della coppia puo' essere decodificato
solo con l'altra chiave della stessa coppia;
- non e' materialmente possibile, data una chiave della coppia, ricavare
l'altra. Ogni utente tiene per se' una chiave della propria coppia, denominata
chiave segreta, e diffonde il piu' possibile l'altra, denominata chiave
pubblica.
Questo risolve tutti i problemi posti sopra.
Privacy
Alice vuole inviare un messaggio a Mad Hatter, e codifica quel messaggio
usando la chiave pubblica di quest'ultimo. Solo Mad Hatter, che ha la corrispondente
chiave segreta, e' in grado di decodificare e leggere il messaggio.
Autenticazione del mittente
Alice codifica il suo messaggio con la propria chiave privata. Chiunque,
avendo accesso alla chiave pubblica di Alice, puo' decodificare quel messaggio.
Se la decodifica riesce, si e' allora sicuri che esso e' stato scritto
da Alice, l'unica a possedere la corrispondente chiave segreta. Alice ha
posto la sua "firma" elettronica sul messaggio.
Autenticazione del mittente e del messaggio
E' possible autenticare, facendo un passo in piu', oltre al mittente
anche il contenuto del messaggio. Alice effettua un "hashing"
del suo messaggio. Si tratta di una funzione unidirezionale, che a partire
da un certo messaggio ricava un valore di lunghezza fissa, detto hash,
che caratterizza il messaggio: una sorta di "checksum". Se il
messaggio viene alterato, l'hash non corrisponde piu'. Alice attacca allora
in fondo al suo messaggio il corrispondente hash. Alice puo' codificare
con la propria chiave privata ("firmare") tutto l'insieme, oppure
lasciare il messaggio vero e proprio in chiaro e firmare solo l'hash. Chiunque
puo' decodificare l'insieme ricevuto o il solo hash con la chiave pubblica
di Alice, ed e' cosi' sicuro del fatto che il messaggio proviene da quel
mittente.
Se inoltre, una volta effettuata la decodifica, messaggio ed hash si
corrispondono, si e' sicuri che nessuno dei due e' stato alterato in qualche
maniera. In pratica, la firma elettronica realizzata dal PGP effettua sempre
l'autenticazione sia del mittente sia del messaggio. Essa ha dunque le
stesse funzioni della firma ordinaria su un documento cartaceo.
Trasmissione della chiave
Col sistema di crittografia a chiave pubblica non c'e', come nella
crittografia convenzionale, una sola chiave usata per entrambe le funzioni
di codifica e decodifica, e che deve essere posseduta solo dal mittente
e dal destinatario. Pertanto non si pone il problema di dovere trasmettere
in modo sicuro quella chiave. Ogni utente deve semplicemente tenere al
sicuro la propria chiave segreta, e puo' diffondere senza alcun problema
la propria chiave pubblica. Anzi, piu' questa viene diffusa e meglio e'.
Il PGP consente di effettuare tutte queste funzioni mediante semplici comandi.
E' possibile avere varie funzioni insieme. Due procedure comuni sono per
esempio:
- per la corrispondenza privata: firmare un messaggio e contemporaneamente
codificarlo per un certo destinatario;
- per i messaggi pubblici o privati: effettuare l'hash di un messaggio
e firmarlo per autenticarne il mittente ed il contenuto, ma lasciando il
messaggio stesso in chiaro; questa procedura viene comunemente chiamata
firma in chiaro, ed e' quello che io ho fatto per il presente testo.
Torna all'indice
3. Status e Versioni
Il PGP e' stato realizzato da Philip Zimmermann negli Stati Uniti. In seguito
anche altri hanno lavorato alle versioni successive. Il norvegese Stale
Schumacher e' l'autore della versione Internazionale. Il programma e' freeware,
quindi puo essere liberamente utilizzato e copiato senza dovere pagare
nulla, se per uso non commerciale.
Inoltre, e' un programma aperto, nel senso che i sorgenti, scritti
in C, sono di pubblico dominio. Il PGP e' disponibile per DOS (con versioni
compilate sotto Windows 3.1 e Windows 95), OS/2, Mac, Amiga, Atari e, mediante
compilazione dei relativi sorgenti, Unix e VMS.
Le versioni per piattaforme diverse sono tutte compatibili tra di loro:
un file codificato p. es. con PGP per DOS puo' essere decodificato con
PGP per Unix, e viceversa.
Le versioni piu' recenti del programma sono:
- (Per utenti USA) Versione MIT: PGP 2.6.2 Per ragioni di copyright non
puo' essere esportata legalmente dagli USA, ma e' legale utilizzarla una
volta che la si ottenga da una fonte fuori dagli USA. Genera messaggi non
leggibili dalla versione 2.3a. Files per DOS: pgp262.zip (eseguibile e
files di supporto), pgp262s.zip (sorgenti e files di supporto).
- (Per utenti non USA) Versione Internazionale: PGP 2.6.3i Adattamento
della 2.6.2 fatto dal norvegese Stale Schumacher in modo da non sottostare
al brevetto americano. Puo' trattare chiavi fino a 2048 bit (nelle altre
versioni il limite e' 1024). Corregge alcuni bugs ed aggiunge alcune "features",
sia rispetto alla versione USA 2.6.2, sia rispetto alla precedente versione
internazionale 2.6.2i tuttora utilizzabile e molto diffusa. Inoltre, la
versione 2.6.3i presenta delle versioni dell'eseguibile pgp.exe compilate
a 32 bit. E' compatibile con tutte le precedenti versioni 2.x. Non e' legale
negli USA.
Questa e' la versione consigliata per utenti non residenti negli USA.
Files per DOS:
- pgp263i.zip (eseguibile a 16 bit e files di supporto): per DOS, va
bene in ogni caso;
- pgp263ix.zip (eseguibile a 32 bit e files di supporto): per DOS da
solo e per DOS sotto Windows 3.1, richiede processore 386 o superiore,
e software per gestione a 32 bit (p. es. win32);
- pgpwin32.zip (eseguibile a 32 bit, compilato espressamente per Win95,
e files di supporto): per DOS sotto Windows 95 e Windows NT.
- pgp263is.zip (sorgenti e files di supporto).
Queste due versioni, USA ed Internazionale, sono compatibili tra di loro.
Tutti i files compressi, ove non diversamente speificato, contengono
inoltre un dettagliato manuale in due volumi di Philip Zimmermann, in formato
ASCII.
Vi e' poi una versione commerciale, proposta da ViaCrypt, nota come
PGP 2.7.1
Torna all'indice
4. Dove Reperirlo
Il PGP si puo' trovare su moltissimi siti Internet dove si trovano anche
files di documentazione e informazioni varie.
Segnalo i siti seguenti.
WWW
The International PGP Home Page (il miglior sito PGP!): http://www.ifi.uio.no/pgp/
Nimrod/PGP (in italiano, links ai files pgp del precedente): http://www.serve.com/nimrod/pgp.html
FTP
ftp://ftp.informatik.uni-hamburg.de/pub/virus/crypt/pgp/
ftp.ox.ac.uk/pub/crypto/pgp/
DSI - Universita' Statale di Milano: ftp://ftp.dsi.unimi.it/pub/security/crypt/PGP/
Torna all'indice
5. Come si Usa
5.1 Installazione e Generalita'
In quanto segue si fa riferimento a scopo di esemplificazione all'ambiente
DOS (ove non diversamente specificato, i nomiqui usati per i files sono
a titolo di esempio). L'uso del PGP su altri sistemi e' del tutto identico.
L'installazione del PGP non presenta particolari difficolta'. Per installare
una versione DOS nel directory c:\pgp occorre semplicemente: * scompattare
il file compresso in c:\pgp con "pkunzip"; al suo interno c'e'
un altro file zip; * scompattare in c:\pgp, con "pkunzip -d",
l'ulteriore file compresso contenuto all'interno del primo (prima di farlo,
fate una copia di questo file zip interno: vi servira' in seguito se volete
verificarne la firma); · aggiungere le seguenti righe ad autoexec.bat:
SET PGPPATH=C:\PGP
SET PATH=C:\PGP;%PATH% (aggiunge c:\pgp al "path")
SET TZ=MET-1DST
Una volta installato, il programma si usa mediante comandi dal prompt del
DOS; un esempio di comando e' il seguente: pgp -sta c:\doc\testo.txt (questo
comando firma in chiaro il file c:\doc\testo.txt, producendo un file ASCII,
ed e' quello che io ho usato per il presente testo).
In un generico comando, quindi, alla parola "pgp" possono
seguire, in vario ordine:
le opzioni, introdotte dal segno "-"
identificativi d'utente
nomi di files.
I comandi disponibili possono essere classificati secondo diverse categorie:
comandi per la gestione delle chiavi, per codificare, per decodificare,
ecc.
E' molto importante leggere i manuali. Essi contengono anche una "Quick
Reference", elenco sintetico di tutti i comandi, che conviene estrarre
e tenere a portata di mano. Lo stesso elenco si puo' inoltre avere a video
con il comando di help: pgp -h
Torna all'indice
5.2 Generazione della Coppia di Chiavi
La prima cosa da fare, subito dopo l'installazione, e' la generazione delle
chiavi.
Generate la vostra coppia di chiavi con il comando: pgp -kg
PGP vi chiede di:
Scegliere la lunghezza delle chiavi. Vi vengono proposte tre alternative,
delle quali la terza genera chiavi di 1024 bit. Con la versione internazionale
2.6.3i e' possibile generare chiavi della lunghezza di 2048 bit digitando
appunto il numero 2048 invece di scegliere una delle tre alternative proposte.
Suggerisco di generare chiavi a 2048 bit, a meno che non abbiate un sistema
particolarmente lento (386 o inferiori), nel qual caso e' preferibile generare
chiavi a 1024 bit.
Scegliere il vostro "User Name", chiamato anche "User
ID". Generalmente, si usa nome e cognome seguito dall'indirizzo e-mail
in parentesi angolari, p. es.: Mad Hatter <mad.hatter@wonderland.it>
(E' possibile assegnare alle chiavi piu' identificativi, cosa che si fa
quando si hanno piu' indirizzi e-mail, per esempio.) Questo e' cio' che
viene anche suggerito a video dalla messaggistica di pgp, ed e' la cosa
preferibile. In alternativa, se e' facile che il vostro indirizzo e-mail
cambi, per creare il vostro "User Name" potete far seguire il
vostro nome e cognome, anzicche' dall'indirizzo e-mail, da un qualunque
altro dato che vi identifichi.
Scegliere la vostra "Pass Phrase". E' molto importante,
perche' si tratta della frase di accesso che vi permette di utilizzare
la vostra chiave segreta (p. es. per firmare un messaggio da voi scritto,
o per decodificare un messaggio a voi indirizzato). Senza la pass phrase
la vostra chiave segreta e' inutilizzabile. E' una password estesa: puo'
essere un testo molto lungo contenente qualunque carattere. Scegliete una
frase lunga che non sia intuibile (niente dati personali!), nell'eventualita'
che la vostra chiave segreta vada in mano a terzi. Deve pero' trattarsi
di una frase costruita in modo che potete facilmente ricordarla (importante!).
Ancora meglio se intercalate dei caratteri non alfabetici ed usate maiuscole
e minuscole, sempre a patto che non rischiate poi di non riuscire a ricordare
la frase esatta.
Due esempi:
- La losanga del nonno di Carla che cadde in mare
- c$hi Va da#quel%la parte domani MATTINA
Premere casualmente dei tasti, procedura i cui tempi vengono usati
da PGP per la generazione dei numeri casuali necessari all'algoritmo.
A questo punto, PGP genera la vostra coppia di chiavi. Assumendo che
il directory in cui e' installato PGP sia c:\pgp, trovate: la vostra chiave
segreta nel file c:\pgp\secring.pgp (secret ring); la vostra chiave pubblica
nel file c:\pgp\pubring.pgp (public ring). Questi nomi sono di default.
Se state usando PGP internazionale 2.6.3i, la procedura termina qui.
Se usate un'altra versione, c'e' ancora una cosa da fare subito.
Firmate la vostra chiave pubblica con il comando: pgp -ks "id"
dove id e' l'identificativo d'utente, che va posto tra virgolette.
Puo' essere lo User Name che avete usato prima; PGP riconosce anche una
parte dello User Name, p. es. solo il nome o solo l'indirizzo e-mail. Per
seguire l'esempio precedente, potete digitare quindi: pgp -ks "Mad
Hatter" Lo scopo di questa operazione e' di rendere impossibili determinate
manipolazioni della chiave pubblica da parte di terzi (vedi: Considerazioni
sulla Sicurezza). Per poter effettuare questa operazione, PGP vi chiede
di digitare la pass phrase, come sempre avviene quando occorre impiegare
la chiave segreta.
La versione internazionale 2.6.3i esegue automaticamente questa procedura
di auto-firma della propria chiave pubblica, senza chiedere nulla. Quindi,
se poi cercate esplicitamente di firmare la vostra chiave con pgp -ks,
vi compare un messaggio di errore che vi comunica che la vostra chiave
e' gia' firmata da voi.
Torna all'indice
5.3 Gestione delle Chiavi
Il secret ring (file secring.pgp) contiene la vostra chiave segreta e va
tenuto riservato. PGP va a cercare la vostra chiave segreta in questo file
tutte le volte che volete decodificare un messaggio a voi indirizzato,
oppure volete firmare un messaggio.
Il public ring (file pubring.pgp) e' destinato a contenere, insieme alla
vostra, tutte le chiavi pubbliche che userete: e' il vostro database personale
di chiavi pubbliche, una sorta di agenda del telefono. PGP infatti, tutte
le volte che volete codificare un messaggio destinato all'utente Cheshire
Cat, va a cercare la chiave pubblica di quest'ultimo nel vostro public
ring.
Lo stesso avviene quando volete verificare una firma. All'inizio, il
public ring contiene solo la vostra chiave pubblica, poi a mano a mano
potete aggiungere quelle di altre persone con cui corrispondete.
Aggiungete al vostro public ring una o piu' chiavi pubbliche contenute
nel file c:\chiavi\keys.asc con il comando: pgp -ka c:\chiavi\keys.asc
Potete aggiungere in questo modo la mia chiave pubblica, che trovate
in fondo al presente testo, usando come nome file nel comando appena visto
quello del presente testo con il suo path. In tal caso infatti PGP considera
solo le chiavi contenute nel file, ed ignora tutto il resto. Quando aggiungete
una chiave, PGP vi chiede se volete certificarla. Rispondete NO (n) (vedi:
Considerazioni sulla Sicurezza).
Esaminate il contenuto del vostro public ring con il comando: pgp -kv
E' possibile estrarre una copia di una o piu' chiavi pubbliche (tipicamente
la vostra) dal vostro public ring. Questa operazione consiste nel copiare
la chiave in un file ASCII armored in modo da poterla passare ad altri
utenti che la inseriranno nel loro public ring con la procedura descritta
sopra.
Estraete la vostra chiave pubblica con il comando: pgp -kxa "Mad
Hatter" c:\chiavi\cappell.asc
Essa sara' allora contenuta nel file ASCII c:\chiavi\cappell.asc, che
potete distribuire. Io ho seguito questa procedura ed ho poi copiato il
file ASCII ottenuto in fondo a questo testo.
Torna all'indice
5.4 Codifica e Firma
Codificate il file c:\doc\mess.txt per l'utente Cheshire Cat, e firmatelo,
con il comando: pgp -esta c:\doc\mess.txt "Cheshire Cat" -o c:\crypt\gatto.txt
* Viene prodotto il file codificato c:\crypt\gatto.txt. Se omettete l'opzione
"o" e relativo nome di file, il file prodotto sara' c:\doc\mess.pgp,
quindi nello stesso directory del file in chiaro, con lo stesso nome ma
con estensione "pgp".
* Se omettete l'opzione "s" (sign), quindi digitate -eta, il
file viene codificato ma non firmato.
* Se omettete l'opzione "e" (encrypt), quindi digitate -sta,
il file viene firmato in chiaro, ma non codificato.
Non e' detto che il file da codificare e/o firmare sia un testo, bensi'
puo' essere indifferentemente un file binario qualunque.
PGP vi chiede in ogni caso di digitare la vostra pass phrase, in modo
da poter utilizzare la vostra chiave segreta.
Inoltre, la prima volta che codificate un messaggio per Cheshire Cat,
PGP vi chiedera' se volete davvero adoperare la chiave pubblica di questo
utente pur non essendo certificata. Rispondete SI (y) (vedi: Considerazioni
sulla Sicurezza).
In ogni caso, e' importante che il comando per codificare e/o firmare (nonche'
quello per estrarre la vostra chiave pubblica) contenga sempre l'opzione
"a" (ASCII Armor), come si vede dal comando riportato sopra.
Il motivo e' il seguente. Quando si invia un file per e-mail, esso passa
attraverso e arriva su sistemi di tipo molto diverso. Qualunque sistema
pero' e' in grado di riconoscere e trattare caratteri ASCII il cui codice
decimale e' compreso tra 0 e 127 (il cosiddetto ASCII basso). Percio' e'
indispensabile che un file inviato per e-mail sia formato esclusivamente
da tali caratteri (file ASCII armored o semplicemente ASCII), e non da
caratteri qualsivoglia. PGP trasforma, mediante l'opzione "a",
il file prodotto in modo che sia ASCII armored.
Torna all'indice
5.5 Decodifica e Verifica della Firma
Decodificate il messaggio codificato c:\crypt\notizie.pgp, e verificatene
la firma, con il comando: pgp c:\crypt\notizie.pgp -o c:\doc\nuove.txt
* Viene prodotto il messaggio in chiaro c:\doc\nuove.txt. Se omettete l'opzione
"o" e relativo nome di file, il file prodotto sara' c:\crypt\notizie,
quindi nello stesso directory del file in chiaro, con lo stesso nome e
senza alcuna estensione.
* Questo comando ha molteplici funzioni, perche' agisce indifferentemente
su codifica e firma. Se il messaggio di partenza era codificato, il comando
citato lo decodifica. Se in aggiunta esso era anche firmato, il comando
verifica inoltre la firma (e quindi l'autenticita' del mittente e del messaggio
stesso). Se era solo firmato, viene semplicemente verificata la firma.
Potete verificare in questo modo la mia firma su questo testo, usando
come nome file nel comando appena visto quello del presente testo (pgpintro.txt)
con il suo path.
Torna all'indice
5.6 Il File di Configurazione config.txt
PGP usa un file di configurazione, chiamato config.txt, che si trova nella
directory in cui e' stato installato il programma, per esempio c:\pgp.
Si tratta di un file ASCII, che puo' essere modificato con un normale editor
di testo come Notepad (prima di modificarlo e' buona norma fare sempre
una copia di back-up!). In config.txt le righe di commento (ignorate da
PGP) sono precedute dal carattere "#".
Il file config.txt contiene dei comandi di configurazione, che forniscono
a PGP una serie di informazioni che il programma usa per le varie operazioni.
Un comando di configurazione consiste nell'assegnare ad una variabile un
determinato valore. Nel config.txt originario, quasi tutti questi comandi
sono preceduti da "#", come le righe di commento, per cui i comandi
stessi sono inattivi. Per renderli attivi, occorre cancellare il carattere
"#" ed assegnare alla variabile presente nella riga il valore
che si desidera.
Qui di seguito vengono elencate le variabili piu' importanti di config.txt.
* Il proprio User ID. Ogni volta che Mad Hatter vuole firmare un file o
un testo, PGP va a cercare in config.txt qual'e' lo User ID della chiave
segreta di Mad Hatter, da usare per la firma. Se non trova la variabile
MyName configurata, prende lo User ID aggiunto piu' di recente al secret
ring di Mad Hatter. Se quest'ultimo contiene una sola chiave segreta, non
c'e' percio' alcuna differenza. E' pero' buona norma configurare in ogni
caso la variabile MyName. Per farlo, togliete il carattere "#"
e scrivete il vostro User ID completo nella riga di config.txt: # MyName
= "John Q. Public" che percio' diventa ad esempio: MyName = "Mad
Hatter <mad.hatter@wonderland.it>"
* ASCII Armor. La variabile Armor fa in modo che automaticamente ogni file
codificato e/o firmato sia anche ASCII armored. Togliete semplicemente
il carattere "#" in testa alla riga: # Armor = on # Use -a flag
for ASCII armor whenever applicable che percio' diventa: Armor = on # Use
-a flag for ASCII armor whenever applicable
* Codifica per se' stessi La variabile EncryptToSelf fa si' che ogni file
che Mad Hatter codifica per Alice o per altri utenti PGP venga anche codificato
per se' stesso, ossia per lo User ID specificato in MyName. In tal modo,
Mad Hatter ha la possibilita' di decodificare il file, cosa che non potrebbe
piu' fare se questo fosse stato codificato solo per Alice. Togliete semplicemente
il carattere "#" in testa alla riga: # EncryptToSelf = on #Encrypt
all messages with your own public key che percio' diventa: EncryptToSelf
= on # Encrypt all messages with your own public key
* Posizione di public ring e secret ring Normalmente, PGP cerca per le
sue operazioni il public ring ed il secret ring nel directory c:\pgp. Nel
caso in cui i due ring si trovino in un altro directory o su un'altra unita',
occorre specificarne il path in config.txt, modificando le righe: # PubRing
= "a:\pubring.pgp" # SecRing = "a:\secring.pgp" Questo
per esempio va fatto nel caso in cui teniate per ragioni di sicurezza (vedi:
Altre Importanti Norme di Sicurezza) public ring e secret ring su un dischetto.
Torna all'indice
5.7 Codifica e Decodifica Convenzionale
Con PGP e' possibile utilizare anche la crittografia convenzionale. Non
vengono in tal caso utilizzate chiavi pubbliche e private, ma semplicamente
una pass phrase con la quale codificare convenzionalmente il file.
Codificate il file c:\doc\mess.txt convenzionalmente con il comando:
pgp -c c:\doc\mess.txt.
PGP vi chiedera' di digitare una pass phrase. Attenzione: per ovvie
ragioni di sicurezza, questa non deve MAI essere uguale alla pass phrase
della propria chiave segreta PGP della crittografia a chiave pubblica.
Per ogni files da codificare occorre una pass phrase: ovviamente si puo'
usare sempre la stessa, volendo, ma MAI una pass phrase corrispondente
ad una chiave segreta.
Decodificate il messaggio codificato c:\crypt\notizie.pgp, codificato
convenzionalmente, con lo stesso comando usato normalmente per la decodifica:
pgp c:\crypt\notizie.pgp
PGP si accorge che il file e' codificato convenzionalmente e vi chiede
la corrispondente pass phrase, con la quale effettua la decodifica.
Alice puo' voler adoperare la crittografia convenzionale:
* se ha modo di concordare una pass phrase con il destinatario del
suo messaggio in modo sicuro, per esempio di persona. Potendo pero' usare
il sistema a chiave pubblica con tutti i suoi vantaggi non c'e' alcun motivo
per voler fare questo, neanche in questa condizione.
* se vuole codificare dei files del suo computer per proteggerli da
occhi indiscreti, ma poi sara' sempre lei a decodificarli con la pass phrase
che ha scelto. Anche in questo caso, Alice puo' molto piu' semplicemente
e convenientemente usare PGP normalmente come crittografia a chiave pubblica,
e codificare i files scegliendo se' stessa come destinatario.
In entrambi i casi, se usa comunque la crittografia a chiave pubblica:
* un ulteriore vantaggio e' quello di non dover inventare e ricordare
altre pass phrase oltre alla pass phrase della propria chiave segreta.
* ancora un ulteriore vantaggio e' dato dal fatto che e' possibile
firmare il file (cosa non realizzabile con la crittografia convenzionale)
garantendo cosi' l'identita' del mittente e l'integrita'del file.
Torna all'indice
6. I Keyservers
Sono dei database automatici di chiavi pubbliche PGP, accessibili ed utilizzabili
da tutti. Ogni Keyserver ha in pratica un enorme public ring, a cui tutti
possono aggiungere la propria chiave pubblica e da cui e' possibile estrarre
una chiave pubblica di cui si ha bisogno. Una sorta di elenco pubblico
del telefono. Tutte le operazioni avvengono per e-mail in modo automatico.
Di Keyservers ce ne sono diversi in tutto il mondo, e si aggiornano
automaticamente tra di loro, quindi e' sufficiente utilizzarne uno qualunque.
Di solito sono gestiti presso Universita', quali ad esempio il MIT negli
Stati Uniti e il Dipartimento di Scienze dell'Informazione dell'Universita'
Statale di Milano.
Per utilizzare quest'ultimo, scrivete a: <pgp-public-keys@dsi.unimi.it>
mettendo il comando nel campo SUBJECT.
I comandi piu' importanti sono:
HELP - Si ottengono le istruzioni.
ADD - Per aggiungere la propria chiave pubblica (la chiave stessa
va messa nel corpo del messaggio).
INDEX - Lista tutte le chiavi contenute nel Keyserver.
GET - Si ricevono tutte le chiavi del Keyserver (non conviene
perche' sono troppe!).
GET [id] - Si riceve la chiave dell'utente avente l'identificativo
[id].
MGET stringa - Si ottengono tutte le chiavi il cui identificativo
contiene 'stringa'.
* Se inviate la vostra chiave pubblica in un messaggio avente come Subject:
ADD essa viene aggiunta al Keyserver.
* Se inviate un messaggio vuoto con Subject: GET Giorgio Chinnici [Nimrod]
ricevete la mia chiave pubblica.
I Keyservers possono essere utilizzati da WWW all'indirizzo: http://www-swiss.ai.mit.edu/~bal/pks-commands.html
Torna all'indice
7. Considerazioni sulla Sicurezza
7.1 La Sicurezza delle Chiavi Pubbliche
Questo argomento e' estremamente importante, in quanto la gestione delle
chiavi pubbliche rappresenta il punto debole del PGP.
La crittografia a chiave pubblica, avendo eliminato la necessita' di
trasmettere una chiave segreta, riduce praticamente a zero il rischio che
qualcuno si impadronisca della chiave segreta. Tuttavia, la gestione delle
chiavi e' il punto debole anche di questo sistema di crittografia, perche'
una chiave pubblica puo' non essere sicura.
Il problema sostanzialmente e' il seguente. Quando Mad Hatter riceve la
chiave pubblica di Alice, non ha modo di essere sicuro che quella chiave:
- appartenga effettivamente ad Alice (Cheshire Cat potrebbe avere sostituito
la chiave di Alice con la propria ed avere successivamente intercettato
i messaggi destinati ad Alice);
- non sia stata manipolata (Cheshire Cat potrebbe ad esempio aver aggiunto
alla chiave un indirizzo e-mail). E' possibile cioe' ipotizzare determinati
"attacchi" che Cheshire Cat, sfruttando questo tipo di "debolezza",
puo' mettere in atto allo scopo di introdursi nelle comunicazioni tra Alice
e Mad Hatter.
Va rimarcato che le dimensioni del problema sono completamente diverse
nei due sistemi di crittografia:
- Il sistema convenzionale a chiave unica pone alla comunicazione per
e-mail problemi di sicurezza cosi' grossi da essere di fatto inutilizzabile.
Non avrebbe infatti alcun senso pensare di inviare la chiave segreta sullo
stesso canale non sicuro. Inoltre, una chiave segreta per sua stessa natura
non puo' essere diffusa pubblicamente, per cui non e' possibile applicare
questo sistema di crittografia come strumento di privacy.
Gli "attacchi", nel sistema a chiave pubblica sono azioni
piuttosto complesse da effettuare, ed hanno quindi probabilita' ridotte
in circostanze normali. Inoltre essi sono, mediante una serie di norme
di sicurezza, prevenibili.
E' quindi fondamentale attenersi alle norme di sicurezza. In linea di principio,
perche' Mad Hatter abbia la certezza che la chiave pubblica di Alice non
e' falsa o manipolata, occorre che egli abbia ottenuto la chiave non per
e-mail o da una banca dati, ma tramite un incontro personale, una persona
fidata, o altro canale sicuro. In tal caso, Mad Hatter puo' firmare egli
stesso la chiave, oppure che la chiave sia firmata (con il comando: pgp
-ks "Alice") da un utente March Hare del quale Mad Hatter possiede
una chiave sicura.
PGP ha un sistema di gestione della sicurezza delle chiavi, e ne tiene
conto in fase di utilizzo delle chiavi stesse. In pratica, PGP sa quale
chiave e' sicura e quale no secondo le definizioni precedenti, ed avverte
l'utente.
L'incontro personale e simili, ove sia possibile farlo con facilita' (p.
es. i due utenti abitano nella stessa citta') e' sempre preferibile, per
scambiarsi le chiavi pubbliche e per firmarle a vicenda. Inoltre, in casi
in cui la sicurezza deve essere assoluta (p. es. comunicazione di segreti
industriali) non ci si deve mai fidare di una chiave non sicura ottenuta
per via telematica. Se pero' ci si attenesse sempre strettamente a questa
norma, si potrebbe fare un uso molto limitato del PGP. Normalmente quindi
si utilizzano senz'altro chiavi ottenute per e-mail, attenendosi pero'
alle norme di sicurezza seguenti.
Torna all'indice
7.2 Norme di Sicurezza per le Chiavi
Pubbliche
Non firmate mai una chiave pubblica che non avete ottenuto in modo assolutamente
sicuro. Questo e' molto importante, perche' firmando la chiave di Alice,
Mad Hatter la dichiara sicura. Benche' sia accettabile usare una chiave
pubblica non canonicamente sicura, non la si deve dichiarare tale se non
lo e'. Infatti, quando la chiave viene passata da Mad Hatter a Mock Turtle,
questi avrebbe una falsa informazione che invaliderebbe tutto il sistema
di sicurezza delle chiavi pubbliche.
Utilizzate occasioni di incontro personali per scambiare e firmare reciprocamente
le proprie chiavi pubbliche. In tal modo si crea una "rete"
di certificazione. Ogni firma di un altro utente su una chiave rende inoltre
sempre piu' difficile manipolare o sostituire quella chiave, perche' bisognerebbe
riprodurre le firme.
Firmate voi stessi la vostra chiave pubblica, e firmate inoltre ogni
indirizzo e-mail od indentificativo che vi aggiungete. Se Mad Hatter
segue questa norma, e' impossibile per Cheshire Cat aggiungere lui un indirizzo
alla chiave di Mad Hatter, perche' questo sarebbe l'unico non firmato da
Mad Hatter.
Diffondete il "fingerprint" della vostra chiave pubblica.
Il fingerprint e' un hash di 128 bit, ossia 32 cifre esadecimali, della
chiave pubblica, e la identifica univocamente. Alice puo' ottenerlo a video
per la sua chiave pubblica con il comando: pgp -kvc "Alice" Il
fingerprint presenta il vantaggio di essere facilmente leggibile. Alice
diffonde il suo fingerprint scrivendolo sulla sua pagina WWW, in messaggi
pubblici, su documenti cartacei (ad es. biglietti da visita), su cui non
puo' essere contraffatto senza che la cosa si scopra. Mad Hatter legge
il fingerprint di Alice da varie fonti, e lo confronta con quello ottenuto
dalla chiave pubblica di Alice che Mad Hatter ha nel proprio public ring.
Se sono identici, cio' garantisce l'autenticita' della chiave di Alice
che Mad Hatter ha. Se Mad Hatter e' in grado di riconoscere Alice al telefono,
egli puo' verificare la chiave di Alice telefonicamente, confrontando il
fingerprint sul proprio video con quello che lei gli detta al telefono.
Torna all'indice
7.3 Altre Importanti Norme di Sicurezza
Mantenete una copia di sicurezza, su un dischetto tenuto in luogo sicuro,
del vostro secret ring e public ring, nell'eventualita' di un crash del
vostro computer.
Non lasciate il vostro secret ring su un computer cui hanno accesso altre
persone, come potrebbe essere quello dell'ufficio. In tal caso usate invece
secret ring e public ring da un dischetto che tenete con voi o in luogo
sicuro.
Non scrivete la vostra pass phrase da nessuna parte, ma ricordatela bene
a memoria.
Ricordate che un file cancellato con un semplice comando di "delete"
puo' successivamente essere recuperato. Se percio' volete eliminare definitivamente
il messaggio in chiaro che avete codificato dovete farne il "wipe"
o cancellazione definitiva. Cio' viene realizzato da varie utility, e dallo
stesso PGP usando l'opzione "w" nel comando di codifica.
Cancellate in modo sicuro il file c:\doc\testo.txt con il comando: pgp
-w c:\doc\testo.txt
Torna all'indice
8. Come Opera
Il PGP utilizza in realta' una intera collezione di algoritmi, tra i piu'
sicuri ed internazionalmente conosciuti nel campo della crittografia. Allo
scopo di illustrare il processo messo in atto da PGP, supponiamo di partire
da un messaggio che deve essere firmato e codificato. La sequenza delle
operazioni e' la seguente.
A. PGP applica l'algoritmo di hashing MD5 per generare l'hash del messaggio,
avente lunghezza fissa pari a 128 bit. L'hash viene attaccato al messaggio.
B. PGP applica l'algoritmo di compressione dati ZIP per comprimere l'insieme
messaggio piu' hash ottenuto in A.
C. PGP applica un algoritmo di generazione numeri casuali per generare
una sequenza di 128 bit casuali.
D. PGP applica l'algoritmo di crittografia convenzionale IDEA per codificare
il messaggio compresso ottenuto in B, usando come chiave ("session
key") il numero casuale generato in C.
E. PGP applica l'algoritmo di crittografia a chiave pubblica RSA per codificare
la session key. Il risultato viene attaccato al messaggio codificato ottenuto
in D. La crittografia convenzionale e' molto piu' veloce di quella a chiave
pubblica. PGP unisce i vantaggi della crittografia a chiave pubblica e
la velocita' di quella convenzionale, Il messaggio viene in realta' codificato
convenzionalmente, ed e' la session key usata che viene codificata con
l'algoritmo a chiave pubblica.
F. PGP applica l'algoritmo di ASCII Armor Radix-64 per trasformare il messaggio
ottenuto in E in modo che esso contenga solo caratteri ASCII bassi. Questo
algoritmo trasforma ogni gruppo di tre bytes in un gruppo di quattro bytes.
Il messaggio ottenuto in F e' quello finale, che puo' essere inviato per
e-mail. Il destinatario esegue la sequenza inversa di operazioni.
Gli algoritmi utilizzati da PGP sono considerati assolutamente sicuri.
Per esempio, l'algoritmo di crittografia a chiave pubblica RSA si basa
sul prodotto di due numeri primi. Per poter ricavare una chiave privata
dalla corrispondente chiave pubblica occorrerebbe fattorizzare questo prodotto.
Nel caso di chiavi a 1024 bit, e' stato stimato che una rete di un milione
di computers impiegherebbe 10^10 anni a risolvere il problema, un tempo
pari all'eta' dell'Universo!
Poi, ci sarebbe ancora il problema di ricavare la pass phrase. E questo
per una sola coppia di chiavi tra tutte quelle esistenti al mondo.
Torna all'indice
9. Shell Windows per PGP
PGP e' un programma DOS, e quindi sotto Windows 3.1 e Windows 95 va utilizzato
da una finestra DOS. Allo scopo di rendere piu' semplice ed automatico
possibile l'uso di PGP sono stati sviluppate diverse shell per Windows.
Si tratta semplicemente di programmi Windows per mezzo dei quali e' possibile
usare dialog box e pulsanti per le varie operazioni di PGP; per effettuare
queste operazioni, la shell Window lancia automaticamente PGP in una finestra
DOS. Il programma PGP deve quindi essere gia' stato in precedenza installato
e configurato.
Per i principianti di PGP, consiglio comunque di usare il programma cosi'
com'e' da DOS, senza alcuna shell. In tal modo si comprendono molto meglio
i meccanismi di PGP. Dopo essersi impratichiti si puo' passare all'uso
di una shell Windows.
Ne esistono diverse.
Trovate elenchi completi con descrizione presso:
- PGP tools & add-ons for Windows http://www.ifi.uio.no/pgp/winutils.shtml
- Using Microsoft Windows with PGP http://www.lcs.com/winpgp.html
- Scott Hauert's collection of PGP Front Ends & Shells for Windows
http://www.primenet.com/~shauert/pgpwins.htm
Trovate le shell anche nei siti ftp citati in "Dove Reperirlo"
Segnalo qui tre ottime shell.
- PGP Win Front 3.1, freeware http://www.ugali.com/pwf/ Versione Win3.1,
gira perfettamente anche sotto Win95 Richiede vb300.dll
- PGPClick 2.5, shareware 5 US$ http://www.ncinter.net/~rewilson/pgpkey.html
Versioni Win3.1 e Win95 Richiede i run-time files di VB 4.0, rispettivamente
a 16 e 32 bit.
- AEgis Shell 3.0, beta-test http://www.aegisrc.com/beta3.htm Versioni
Win3.1 e Win95
Torna all'indice
10. Risorse e documentazione
* Siti WWW:
- The International PGP Home Page: http://www.ifi.uio.no/pgp/ Nimrod/PGP,
- in italiano: http://www.serve.com/nimrod/pgp.html
- PGP-Users Mailing List Home Page http://www.rivertown.net/~pgp/
- Crypto-Log: Internet Guide to Cryptography http://www.enter.net/%7Echronos/cryptolog.html
- Cryptography, PGP, and Your Privacy http://world.std.com/~franl/crypto.html
- Email Privacy FAQ http://www.four.net/~kto/emailfaq.html
* Newsgroups:
- alt.security.pgp
- comp.security.pgp.announce
- comp.security.pgp.discuss
- comp.security.pgp.resources
- comp.security.pgp.tech
- Si parla anche di PGP nel gruppo di discussione italiano sulla sicurezza:
it.comp.sicurezza.varie
* FAQ: "PGP Frequently Asked Questions" da alt.security.pgp:
http://www.prairienet.org/~jalicqui/pgpfaq.txt
- ftp://ftp.prairienet.org/pub/providers/pgp/pgpfaq.txt
- "PGP 2.6.3i" FAQ: http://www.ifi.uio.no/pgp/FAQ.shtml
Torna all'indice
11. Problemi Vari
11.1 Editor con "Word Wrap"
Puo' presentarsi a volte il seguente problema. Alice scrive un proprio
messaggio con un Editor dotato di "Word Wrap", ossia di "a
capo" automatico. Puo' trattarsi di un Editor quale Notepad oppure
di quello interno ad un programma di gestione della posta elettronica,
quale Eudora. Alice firma poi in chiaro il messaggio. Al momento di preparare
il messaggio da spedire, il programma di e-mail (Eudora, Offline Mailer
ecc.) puo' introdurre esplicitamente il carattere di "a capo"
alla fine di ogni riga del messaggio, alterando cosi' di fatto il messaggio
stesso. Come conseguenza, Mad Hatter, che riceve il messaggio e ne verifica
la firma, trova che la firma non corrisponde al messaggio!
Rimedio: Alice puo' rinunciare al "Word Wrap", andando
a capo a mano ad ogni riga (che e' meglio mantenere al di sotto dei 70
caratteri).
Torna all'indice
11.2 PC con Piu' Dischi Fissi
Alice ha piu' di un disco fisso, oppure diverse partizioni sullo stesso
disco fisso. Alice ha installato PGP non sul disco C: bensi' sul disco
D:, nel directory d:\pgp. Si verifica un piccolo problema: PGP va a cercare
comunque il file di configurazione config.txt in c:\pgp, e non trovandolo,
emette un messaggio di errore.
Rimedio: Alice crea il directory vuoto c:\pgp e ci mette una copia
del file d:\pgp\config.txt.
Torna all'indice