Sei sulla pagina 1di 31

Guida Introduttiva al Programma di Crittografia a Chiave Pubblica

PGP (Pretty Good Privacy) di Giorgio Chinnici V1.1 - Aprile 1995


NOTA: Questo testo puo' essere liberamente diffuso e riprodotto con
qualunque mezzo, purche' nella sua interezza.
==============================================================
"Well! I've often seen a cat without a grin," thought Alice; "but a grin
without a cat! It's the most curious thing I ever saw in all my life!"
(Lewis Carroll - Alice's Adventures in Wonderland)

Indice
1.
2.
3.
4.
5.
6.

7.
8.

9.
10.

Scopo della Presente Guida


Perche' la Crittografia
La Crittografia a Chiave Pubblica
Status e Versioni
Dove Reperirlo
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
I Keyservers
Considerazioni sulla Sicurezza 7.1 La Sicurezza delle Chiavi
Pubbliche 7.2 Norme di Sicurezza per le Chiavi Pubbliche 7.3 Altre
Norme di Sicurezza
Come Opera
I Tools


=== 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 sostituire alcun manuale o documento
esistente sul PGP, ne' rappresentare una guida di riferimento.
=== 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 solo 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
pasta asciutta, 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.
Un solo esempio: numeri di carte di credito. Questa e' una cosa sempre
piu' comune su Internet ed altre Reti Telematiche, dove e' possibile
acquistare merci per e-mail.
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.
=== 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 scegliere una
chiave (segreta) con cui effettuare la cifratura.
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.
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' una sola chiave
segreta usata per entrambe le funzioni di codifica e decodifica, per cui
non si pone il problema di dovere trasmettere 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.
=== 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
programma e' freeware, quindi puo essere liberamente utilizzato e

copiato senza dovere pagare nulla. Inoltre, e' un programma aperto,


nel senso che i sorgenti, scritti in C, sono di pubblico dominio.
Il PGP e' disponibile per DOS, 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:
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.
Corregge alcuni bugs presenti nelle versioni 2.6 e 2.6.1. Files per DOS:
pgp262.zip (eseguibile), pgp262s.zip (sorgenti).
Versione Internazionale: PGP 2.6.i
Adattamento della 2.6.1 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). E' compatibile con tutte
le precedenti versioni 2.x. Non e' legale negli USA. Questa e' la
versione che di solito viene consigliata per utenti non residenti negli
USA. Files per DOS: pgp26i.zip (eseguibile), pgp26is.zip (sorgenti)
Queste due versioni sono compatibili tra di loro. Tutti i files compressi

citati 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
=== 4. Dove Reperirlo ===
Il PGP si puo' trovare, oltre che su diverse BBS italiane, su moltissimi
siti Internet dove si trovano anche files di documentazione e
informazioni varie.
Segnalo i seguenti:
ftp://ftp.informatik.uni-hamburg.de/pub/virus/crypt/pgp/
ftp://ftp.dsi.unimi.it/pub/security/crypt/PGP/ (sito ftp del DSI Universita' Statale di Milano: qui e' disponibile la versione
italiana)
http://www.ifi.uio.no/~staalesc/PGP/

Tra la documentazione interessante ivi presente segnalo:


PGP FAQ (Frequently Asked Questions)
Per e-mail, il PGP puo' essere ottenuto:

scrivendo ad Alcei alcei@alcei.sublink.org


alcei@alcei.sublink.org;
alcei@alcei.sublink.org
alcei@alcei.sublink.org
per la versione 2.6.i, scrivendo a hypnotech-request@ifi.uio.no
hypnotech-request@ifi.uio.no
hypnotech-request@ifi.uio.no con
hypnotech-request@ifi.uio.no
Subject: Per ricevere:
GET pgp26i.zip eseguible DOS (uuencoded)
GET pgp26is.zip sorgenti DOS (uuencoded)
GET pgp26is.tar.gz sorgenti UNIX (uuencoded)
Segnalo inoltre il Forum Internet dedicato al PGP:
Newsgroup: alt.security.pgp
=== 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 nomi qui 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' 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
+++ 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. Conviene generare chiavi di
1024 bit.
Scegliere il vostro "User Name". Usate il vostro nome e cognome
seguito dal vostro indirizzo e-mail in parentesi angolari, p. es.:

Mad Hatter mad.hatter@wonderland.it


mad.hatter@wonderland.it
mad.hatter@wonderland.it
mad.hatter@wonderland.it
(E' possibile assegnare alle chiavi piu' identificativi, cosa che si fa
quando si hanno piu' indirizzi e-mail, per esempio.)
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 di
lunghezza arbitraria 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.
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.
+++ 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 (pgpintro.txt) 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.


+++ 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 email, 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.
+++ 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.
=== 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
pgp-public-keys@dsi.unimi.it
pgp-public-keys@dsi.unimi.it
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
ricevete la mia chiave pubblica.
Se inviate un messaggio vuoto con Subject:
MGET .it>
ricevete tutte (o quasi!) le chiavi pubbliche appartenenti ad utenti
italiani.
Su World Wide Web, i Keyservers possono essere raggiunti
all'indirizzo: http://www-swiss.ai.mit.edu/~bal/pks-commands.html
=== 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 email, attenendosi pero' alle norme di sicurezza seguenti.
+++ 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 in molti messaggi pubblici, e
meglio ancora su documenti cartacei (ad es. biglietti da visita) su cui
non puo' essere contraffatto. 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 per 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.
+++ 7.3 Altre 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.

=== 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.
=== 9. I Tools ===
Allo scopo di rendere piu' semplice ed automatico possibile l'uso di
PGP sono stati sviluppati diversi shells e tools per varie piattaforme,
nonche' programmi di mail che integrano PGP. Presso gli indirizzi
citati in: "Dove Reperirlo" e' possibile trovarne diversi. A quegli
indirizzi aggiungo una pagina WWW specificamente dedicata a
utilities e servizi inerenti al PGP:
http://draco.centerline.com:8080/~franl/pgp/utilities.html
Segnalo qui alcuni prodotti.
AutoPGP
Autore: Stale Schumacher staalesc@ifi.uio.no
staalesc@ifi.uio.no
staalesc@ifi.uio.no
Status: Shareware $10

staalesc@ifi.uio.no

Versione: 2.12, 2.2 beta 2


Nome file: apgp212.zip, apgp22b2.zip
Descrizione: Indispensabile tool per DOS. Gestione automatica tramite
semplici direttive per offline mailer e testi ASCII. Provatelo!
Come ottenerlo:
http://www.ifi.uio.no/~staalesc/AutoPGP/
ftp://ftp.dsi.unimi.it/pub/security/crypt/PGP/
PGP Shell
Versione: 3.3
Nomefile: pgpshe33.zip
Descrizione: Shell per DOS
Come ottenerlo:
ftp://ftp.dsi.unimi.it/pub/security/crypt/ftp.informatik-PGP/shells
MMMR (Mister Magoo's Mail Reader)

Autore: Angelo Mariani a.mariani@agora.stm.it


a.mariani@agora.stm.it
a.mariani@agora.stm.it
a.mariani@agora.stm.it
Status: Shareware Lit. 30000
Versione: 3.60 (a breve la ver. 4)
Descrizione: Offline Mailer per DOS, integra PGP
Come ottenerlo: Si trova su MC-Link, Agora' ed altre BBS.
PGP Win Front
Autore: Ross Barclay rbarclay@trentu.ca
rbarclay@trentu.ca
rbarclay@trentu.ca
Status: Freeware

rbarclay@trentu.ca

Versione: 3.1
Nome file: pgpwf31.zip (oppure pwf30.zip, oppure pwf31.zip)
Descrizione: Un ottimo PGP shell per Windows 3.1
Come ottenerlo:
ftp://ftp.eff.org/pub/EFF/Policy/Crypto/Tools/PGP/
per e-mail scrivendo all'autore con Subject: GET PWF

WinPGP(tm)
Autore: Christopher W. Geib 72144.1426@compuserve.com
72144.1426@compuserve.com.
72144.1426@compuserve.com
Status: Shareware $29.

72144.1426@compuserve.com

Versione: 3.1
Nome file: pgpw31.zip
Descrizione: Un altro diffuso shell per Windows.
Come ottenerlo:
ftp://ftp.csn.net/mpj/public/pgp/
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+ |
Giorgio Chinnici Milano - Italia | giorgio.chinnici@galactica.it
giorgio.chinnici@galactica.it
giorgio.chinnici@galactica.it
giorgio.chinnici@altair.it
giorgio.chinnici@altair.it
giorgio.chinnici@altair.it | Messaggi codificati con PGP sono preferiti. |
giorgio.chinnici@galactica.it
PGP fingerprint: F3 A6 72 5F 0C C0 5A 5D 3A 69 15 9E DE 92 FE 25 +=-=giorgio.chinnici@altair.it
=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+ Crypto |
Leggi | Etere Criptoribelli e autodifesa digitale

Potrebbero piacerti anche