Breve introduzione a PGP

Torna alla Home Page

Introduzione

Crittografia
Uso di PGP
Configurazione
Comandi Principali
Keyservers
Crittografia e legge
PGP in Windows
Per saperne di più

Introduzione

L'utilizzo della posta elettronica (E-mail) in campo medico è, almeno in Italia, agli inizi. Se, però, si riproducesse l'evoluzione osservata in altri paesi quali gli USA, la comunicazione tra i medici e tra medici e pazienti via posta elettronica potrebbe aumentare in modo esponenziale. Si riproporrebbe allora il problema della sicurezza dei dati che già ora si propone per le transazioni commerciali.
Nell'interazione medico-paziente via E-mail sono due le necessità di sicurezza che si impongono:
    1. I dati trasmessi dal medico sono riservati e la loro segretezza deve essere protetta.
    2. I messaggi che giungono al medico da parte dei pazienti devono essere firmati in modo inconfondibile per evitare che altre persone oltre al diretto interessato possano carpire informazioni riservate.

La E-mail è un mezzo di comunicazione rapido e per certi versi più comodo di quello telefonico; uno dei suoi svantaggi principali, però, è la mancanza intrinseca di privacy, imposta dalla struttura stessa di Internet: il messaggio di posta elettronica non differisce sostanzialmente da una cartolina che può essere letta senza problemi in uno qualsiasi dei passaggi cui è sottoposta nel tragitto da mittente a destinatario. Dando un'occhiata agli headers (intestazioni) di qualsiasi messaggio di E-mail ci si rende subito conto che questo, prima di arrivare a destinazione, transita attraverso numerosi nodi: in ognuno di questi il messaggio può venire intercettato e letto (oltre che copiato e archiviato senza che mittente e destinatario ne sappiano nulla!).


Crittografia
Torna all'inizio

Crittografia

La crittografia non è un mezzo per nascondere messaggi particolarmente riservati; si tratta semplicemente dell'equivalente elettronico di inserire il messaggio in una busta, per evitare che il postino e qualsiasi impiegato dell'ufficio postale possano facilmente leggere la vostra corrispondenza.

I sistemi di crittografia classici si basano sul concetto di crittografia a chiave segreta: il messaggio da crittografare viene sottoposto ad un algoritmo e la chiave per svelarne il significato deve essere tenuta segreta e consegnata soltanto ai destinatari del messaggio. Applicando questo sistema alla E-mail si verrebbe a creare il problema di come consegnare al destinatario la chiave segreta: la trasmissione della chiave segreta per E-mail comporterebbe di nuovo il problema della facile intercettazione con totale inaffidabilità del sistema.

La soluzione dell'enigma sta nell'uso di un sistema di crittografia a chiave pubblica. Il più noto sistema a chiave pubblica è l'RSA (Rivest-Shamir-Adleman), originariamente sviluppato dal governo degli Stati Uniti.

    Il principio base su cui si fonda la sicurezza dell'algoritmo RSA sta nel fatto che è relativamente facile moltiplicare due enormi numeri primi per ottenere il loro prodotto, mentre è molto più difficile fare il processo inverso: trovare cioè due fattori primi di un dato numero composto. E' questa natura a senso unico dell'RSA che permette di generare una chiave crittografica e di renderla pubblica senza permettere che il messaggio venga decifrato.

    Eliminando la necessità di trasmettere la chiave pubblica si riducono quasi a zero i rischi di frode: è stato stimato che, usando chiavi a 1024 bit, una rete di un milione di computers riuscirebbe a ricavare la chiave segreta da una chiave pubblica in circa 1010 (10 miliardi) di anni!

Sull'algoritmo RSA si basa un programma denominato PGP (Pretty Good Privacy), che è attualmente il più usato mezzo di autenticazione per comunicazioni E-mail su Internet e che è stato sviluppato all'inizio degli anni '90 da Philip Zimmermann, un programmatore specializzato in sistemi di crittografia.

Con questo sistema ogni persona a cui si vogliano inviare i messaggi dispone di due chiavi crittografiche: una segreta e una pubblica. La chiave pubblica, così chiamata perché deve essere diffusa, serve al mittente per crittografare il messaggio: una volta criptato il messaggio potrà essere decifrato soltanto dal possessore della chiave segreta e da nessun altro.

L'autore del programma è stato processato negli Stati Uniti (e recentemente assolto) per aver reso disponibile fuori dal territorio statunitense questo tipo di crittografia, che è il più avanzato esistente e che è considerato di grande importanza militare; tanto è vero che a tutt'oggi è illegale, per un utente europeo, prelevare il programma da un sito americano, e viceversa, in quanto si compirebbe un reato di esportazione illegale di segreti militari. Sempre per i suddetti problemi legali, gli utenti non statunitensi possono utilizzare legalmente solo le versioni con un numero che termina per i: la più recente è la 2.6.3i.


Uso di PGP
Torna all'inizio

Uso di PGP

La versione 2.6.3i per MS-DOS di PGP è un programma freeware facilmente disponibile in numerosi siti di Internet. Chi non ne avesse già una copia può scaricarla dalla International PGP Home Page di Stale Schumacher clickando sulla voce Download PGP.

Per l'installazione vanno seguite le istruzioni contenute nel file SETUP.DOC incluso nel pacchetto. Essenzialmente bisogna creare una directory per il programma (in genere C:\PGP) e inserire nel file AUTOEXEC.BAT le due linee:

SET PGPPATH= [nome della directory di PGP]
SET TZ=MET-1DST

    La seconda variabile ambientale TZ (Time Zone) identifica il meridiano orario dell'utente; MET-1DST corrisponde al meridiano di Amsterdam valido per gli utenti italiani. PGP aggiunge alle chiavi e alle firme un'etichetta contenente l'ora di creazione (ora che PGP assume sia quella di Greenwich). Dato che l'MSDOS assume che l'ora sia quella della costa occidentale degli Stati Uniti (!) è necessario aggiungere questo parametro al file AUTOEXEC.BAT per correggere l'errore che si genererebbe inevitabilmente.

1. Creare una coppia di chiavi

La prima cosa da fare per usare PGP è generare la coppia di chiavi - la chiave segreta e quella pubblica - utilizzando il comando:
pgp -kg

Il programma chiede all'utente se vuole generare una chiave a 512, 768 o 1024 bits (il formato con un maggior numero di bits aumenta la sicurezza in caso di tentativo di manomissione). La versione 2.6.3i permette di creare anche chiavi a 2048 bits ma la scelta non compare nel menu iniziale; si deve digitare direttamente:

pgp -kg 2048

Per generare la chiave segreta il programma chiede di digitare una passphrase (parola d'ordine composta da una frase di lunghezza desiderata che può contenere qualsiasi tipo di carattere). La passphrase deve essere utilizzata ogni volta che si vuole decifrare un messaggio criptato con la propria chiave pubblica; è quindi importante che non venga dimenticata (anche perché il programma, per ovvii motivi di sicurezza, non dispone di nessuna opzione per il recupero della passphrase).

Finite le operazioni che richiedono qualche minuto, il programma genera due files binari:

SECRING.PGP
PUBRING.PGP

Il primo è il portachiavi contenente la chiave segreta, mentre il secondo contiene la chiave pubblica appena generata. Nel file PUBRING.PGP verranno archiviate anche tutte le chiavi pubbliche che l'utente vuole utilizzare per criptare i propri messaggi. Per aggiungere al portachiavi una nuova chiave pubblica basta usare il comando:

pgp -ka [nomefile]

dove [nomefile] indica il file che contiene la chiave da aggiungere (il file può contenere anche altro testo, in quanto pgp riconosce le chiavi dai caratteri di inizio e di fine).

La vostra chiave pubblica va poi distribuita a chi vuole inviarvi messaggi criptati. Per estrarla dal portachiavi si usa il comando:

pgp -kxa

Il programma genera un file ASCII contenente la chiave pubblica; il file può essere inviato per E-mail oppure ad un keyserver, un deposito di chiavi a cui chiunque può richiedere l'invio automatico della chiave pubblica di una persona. L'invio della vostra chiave pubblica a un keyserver non è obbligatorio, ma permette a chiunque voglia comunicarvi di recuperare la vostra chiave in modo semplice.

Per aggiungere la propria chiave al keyserver dell'università di Milano basta inviare a pgp-public-keys@dsi.unimi.it una mail avente come subject il comando ADD e la vostra chiave pubblica nel corpo del messaggio.

I keyservers sono diffusi in tutto il mondo, ma non è necessario inviare la vostra chiave a ognuno di loro in quanto provvedono loro stessi ad aggiornarsi automaticamente.

Esempio di chiave pubblica PGP estratta in formato ASCII:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i
sQTRSi01cr4BBBEEAKmdnPvixDyCbE8p3THGBkH26AwAJ7TkLH1jLbSYaEWgYVyUss DF3REesYlQnbJD0++O34yF3AG6QDhH3B4qBIi7KpSDM0u+RZUmE4kEtzQw9Sd2xpJv EI1dKfuXjT5ApLOHUPHtQNzwgzFLi4/aao80qR1fryQHRuMka3TNplEl5oBJABEBss AAG0I0Nhcm1lbG8gU2FyYWNlbm8gPG1lbEBhdWRpcHJlc3MuaXQ+
=ZpNX
-----END PGP PUBLIC KEY BLOCK-----

Fingerprint. PGP dispone di un sistema di certificazione delle chiavi pubbliche che permette a chi vuole usare una chiave di essere certo della sua autenticità. Il programma estrae dalla chiave un valore di lunghezza fissa (32 cifre esadecimali), detto fingerprint (impronta digitale), che la identifica in modo univoco. Il possessore della chiave pubblica può diffondere facilmente il proprio fingerprint per permettere ai mittenti di verificare che una certa chiave sia effettivamente la sua.
Per estrarre il fingerprint da una chiave si usa il comando:

pgp -kvc [id]

2. Crittografare un messaggio

Per crittografare un messaggio si utilizza il comando:
pgp -eat [nomefile]

    NOTA: il comando per la cifratura è -e (encryption); si aggiunge l'opzione -a (ASCII) e -t (text) per ottenere un file di testo in formato ASCII inviabile per E-mail: la combinazione dei tre parametri si indica con -eat. Usando soltanto il comando -e verrebbe generato un file binario (desinenza .PGP) funzionante ma non inviabile per E-mail.

Il programma chiede l'ID della chiave pubblica da utilizzare: si può indicare solo una parte dell'ID. Per esempio se la mia chiave pubblica ha come ID:

ID 436C919D Gilberto Lacchia < glacchia@eponet.it >

posso indicare solo Gilberto, oppure Lacchia oppure glacchia@eponet.it oppure "Gilberto Lacchia" (tra virgolette perchè contiene spazi) oppure 436C919D. Tenete presente che solo l'ID numerico esadecimale identifica univocamente una chiave, negli altri casi il programma utilizzerà la prima chiave che trova con ID corrispondente (possono esserci più chiavi con ID Gilberto o Lacchia, ecc.) Dopo che gli viene fornito l'ID il programma crea un file ASCII con desinenza .ASC. Il file così creato potrà essere decifrato solo dal possessore della chiave segreta corrispondente.

3. Firmare in chiaro

Oltre a crittografare un messaggio, PGP consente anche di verificarne l'autenticità'. Se volete inviare a qualcuno un messaggio facendo in modo che il destinatario sia in grado di verificare che il messaggio provenga effettivamente da voi, dovrete salvare il file in formato testo e quindi utilizzare il comando:
pgp -sat [nomefile]

PGP creerà un file denominato filename.asc, che e' in pratica il vostro messaggio originario (in chiaro, cioè non criptato) con l'aggiunta di un blocco di caratteri finale che rappresenta la "firma" elettronica ottenuta attraverso la vostra chiave segreta. Il destinatario del messaggio lo sottoporrà a pgp che verificherà con quale chiave è stato firmato il messaggio. Oltre a verificare il mittente pgp segnala anche se il messaggio ha subito modifiche dopo essere stato firmato. In questo modo il destinatario, è certo dell'identità del mittente, e può anche essere certo che il contenuto del messaggio corrisponde in tutto e per tutto a quello scritto dal mittente.

Naturalmente è possibile combinare i due comandi -e (cifrare) e -s (firmare) per ottenere un messaggio cifrato e firmato:

pgp -seat [nomefile]


Configurazione
Torna all'inizio

Appendice

A. Modifica del file CONFIG.TXT

Il file CONFIG.TXT contiene le opzioni che PGP carica all'avvio. Aprendo il file con un normale text editor si ottiene qualcosa di simile:

# Sample config.txt file for PGP 2.6.3i.
# Blank lines are ignored, as is anything following a '#'. # Keywords are not case-sensitive.
#Language = en
# CharSet = cp850
# TMP is the directory name for PGP scratch files, usually a RAM disk. # TMP = "e:\"
# Pager is the file viewing program used for viewing messages with -m # Pager = "list"
# ArmorLines is the maximum number of lines per packet when creating a # transport armored file. Set to 0 to disable splitting in parts. # The following commented-out settings are *not* the defaults. #MyName = "John Q. Public"
#Armor = on # Use -a flag for ASCII armor whenever applicable
# TextMode = on # Attempt to use -t option where applicable
#ClearSig = on # Use ASCII armor even for unencrypted signed messages
# KeepBinary = on # Decrypt will not delete intermediate .pgp file
# Verbose = 2 # Verbose diagnostic messages
# Verbose = 0 # Be quiet
# Compress = off # Suppress compression to aid debugging

Le voci di configurazione che sono precedute da # sono disattivate; per attivarle bisogna togliere # e modificare il valore numerico o il flag on/off dopo il segno di =. Le opzioni sono numerosissime e vengono precedute da una breve spiegazione; per conoscere in dettaglio la funzione di ognuna va consultata la documentazione ufficiale di PGP.

Ci sono alcune opzioni che può essere utile attivare:

  • MYNAME: il valore che si trova impostato è #MyName = "John Q. Public". Normalmente PGP usa l'ultima chiave aggiunta al portachiavi delle chiavi segrete per decriptare e firmare i messaggi, oppure chiede all'utente quale chiave vuole usare. Se si imposta il proprio ID tra virgolette il programma utilizzerà di default quella chiave.
  • #ARMOR = ON. Se utilizzate PGP soprattutto per i messaggi trasmessi via E-mail vi conviene togliere il segno # per attivare la funzione ASCII armor. In questo modo non è più necessario utilizzare la funzione -a in combinazione con gli altri comandi (si userà solo pgp -et per criptare, pgp -st per firmare, ecc.).
  • #TEXTMODE = ON. Di nuovo, se utilizzate soprattutto l'E-mail con PGP vi conviene attivare anche questa funzione che permette di tralasciare anche l'opzione -t sulla linea di comando.
  • #ENCRYPTTOSELF = ON. Se usate l'opzione [-w] quando cifrate un documento con la chiave pubblica di un'altra persona il file originale viene distrutto in modo da non essere più recuperabile. In questo modo il file cifrato non può essere decifrato da voi. Con l'opzione EncryptToSelf = ON ogni documento viene cifrato anche con la vostra chiave per poter essere decifrato da voi.
  • #LANGUAGE = en. Marco Giaiotto ha tradotto in italiano i due files language.it e it.hlp che consentono di avere PGP in lingua italiana (quelli per la versione 2.6.3i sono disponibili nel file pgp263i-italian.zip) .
      Il comando language = en in CONFIG.TXT va sostituito con language = it; i files language.it e it.hlp vanno copiati nella directory di PGP e language.it va rinominato language.txt A questo punto la maggior parte dei messaggi e l'help saranno in lingua italiana.

Comandi Principali
Torna all'inizio

B. Sommario dei comandi principali di PGP

Generare le chiavi pgp -kg
Estrarre una chiave pgp -kx[a] [pubring]
Aggiungere una chiave pgp -ka [pubring]
Cifrare pgp -e[a][t][w] [id2 ..] [-o ]
Firmare pgp -s[a][t] [-u ] [-o ]
Decifrare/verificare firme pgp [-o ]
Cifrare e Firmare pgp -es[t][a][w] [id2 ..][-u ] [-o ]
Listare il pubring pgp -kv[v] [id] [pubring]
Vedere il fingerprint pgp -kvc [id] [pubring]
Dettagli del pubring pgp -kc [id] [pubring]
Cancellare una chiave pgp -kr [pubring]
Aggiungere un altro userID pgp -ke [pubring]
Editare la pass phrase pgp -ke [pubring]
Firmare una chiave pgp -ks [-u ] [pubring]
Cancellare una "firma" pgp -krs [pubring]
Crittografia convenzionale pgp -c
[ a ] = Per produrre files ASCII
[ o ] = Per indicare il nome del file risultante
[ w ] = Per distruggere il testo da cifrare (dopo la codifica)
[ m ] = Per vedere il testo in chiaro solo a video
[-@] = Per specificare destinatari addizionali quando si cifra


Keyservers
Torna all'inizio

C. Keyservers

In Italia esiste il keyserver dell'università di Milano (pgp-public-keys@dsi.unimi.it) gestito da David Vincenzetti (vince@dsi.unimi.it).

Altri keyservers sono:

pgp-public-keys@uit.no
pgp-public-keys@informatik.uni-hamburg.de
pgp-public-keys@pgp.ox.ac.uk
pgp-public-keys@pgp.mit.edu
public-key-server@martigny.ai.mit.edu

Comandi accettati dai keyservers
Funzione
HELP Invia l'HELP
ADD Aggiunge una chiave
INDEX Lista tutte le chiavi contenute nel keyserver
GET Ricevete tutte le chiavi pubbliche del server (E' un file enorme, attenzione!)
GET [id] Ricevete la chiave pubblica di determinato utente
MGET xxxx <es. "mget @tin.it"> Ricevete le chiavi pubbliche che hanno come dominio tin.it
LAST [n] Ricevete tutte le chiavi caricate durante gli ultimi [n] giorni

Sul World Wibe Web potete anche raggiungere il keyserver del MIT all'indirizzo: https://pgp.mit.edu/.


Crittografia e legge
Torna all'inizio

D. Crittografia e legge italiana

In alcuni paesi la crittografia è espressamente vietata dalla legge (Francia, Russia, Iran, Iraq). In Italia la legge regola soltanto l'uso della della crittografia nella tutela del segreto di Stato. In questo campo è regolamentato l'uso degli algoritmi crittografici, la loro esportazione e distribuzione (leggi 185/90 e 222/92). La crittografia usata per impieghi privati e governativi non correlati alla tutela del segreto di stato non è nè vietato nè controllato. La Telecom Italia non pone limiti all'impiego da parte degli utenti di sistemi di cifratura sia per fonia sia per trasmissione dati. L'unica restrizione potrebbe essere individuata nel collaudo delle apparecchiature per l'omologazione che sono tenute ad adottare sistemi di cifratura che non incidano negativamente sulla funzionalita' della rete.

PGP in Windows
Torna all'inizio

E. Utilities per usare PGP in Windows

PGP per PC funziona come programma per DOS fino alla versione 2.6.3i. L'unico programma che funziona in ambiente Windows con le funzioni di PGP completamente integrate è quello distribuito dalla Pretty Good Privacy, Inc. ed è una versione a pagamento.

Per utilizzare PGP in modo più semplice con un programma che funziona in ambiente Windows (come Eudora) esistono delle applicazioni dette front-end che permettono di rimanere in Windows e di interfacciare PGP senza necessariamente passare al DOS per digitare i comandi.

Chi utilizza Eudora 3.0 per la posta elettronica può trovare anche numerosi programmi che funzionano su Eudora come plug-ins (piccole applicazioni che aggiungono funzioni ai menu di Eudora). La Qualcomm, che produce Eudora, ha annunciato da poco (17 giugno 97) che da luglio sarà disponibile, integrata in Eudora, la crittografia PGP.

Il numero di programmi front-end esistenti è sterminato; ne esistono sia freeware che shareware. Qui di seguito ne elenco alcuni. Ulteriori informazioni si possono trovare alla International PGP Home Page clickando sulla voce Products & services.

  • PGPmail è un prodotto della Pretty Good Privacy, Inc. fondata da Phil Zimmerman. è un plug-in che funziona su Eudora 3.0 e successive (sia la versione Pro che quella Light), e anche sul mail client di Netscape. Per il momento è disponibile solo per Windows 95 e Windows NT, ma esistono anche vesioni per DOS, Unix, e Macintosh. L'upgrade per gli utenti di PGP costa $ 29.95. La versione completa invece costa $ 149.95 (!). Per il momento (special offer!) viene considerato utente chi possiede la versione freeware 2.6.2. E' disponibile, sul server del MIT la versione 5.0 per Windows e Mac freeware.

  • PGPEudra, della Comerwell Software, integra completamente PGP con Eudora. Esistono diverse versioni, sia freeware che shareware.

  • EPPI. è un ottimo plug-in per Eudora, prodotto come freeware da Damon Jakob Gallaty. Esiste sia in versione a 16-bit che versione a 32-bit. (L'URL di questo software sembra modificarsi quotidianamente, buona fortuna!)

  • Peics. è un plug-in per Eudora 3.0 disponibile sia come versione freeware (Light) per uso privato che come versione estesa (Pro) per Eudora Pro.

  • WPGP di Jack Gostl è una utility front-end per Windows. WPGP è shareware e la registrazione costa sui $ 40.

  • Mollusc è un front-end shareware (costa sui $ 40) che supporta diversi mail clients (Eudora, Pegasus, Netscape, Agent, e altri).

Per saperne di più
Torna all'inizio

D. Per saperne di più

Su Internet l'argomento PGP è trattato estesamente (fin troppo!). Consiglio alcuni siti da cui è possibile ottenere tutte le informazioni necessarie sull'argomento:

The International PGP Home Page (in inglese)
http://www.pgpi.com/
E' il miglior sito internazionale su PGP. Fornisce informazioni, la documentazione ufficiale del programma, siti per scaricare le varie versioni di PGP, programmi in Windows che utilizzano PGP (cosiddetti front-end), supporti linguistici (è disponibile un help che fa sì che PGP visualizzi il suo output in italiano), links per altri siti su PGP. E' disponibile PGP 5.xx freeware per Windows!

MIT distribution site for PGP (in inglese)
http://web.mit.edu/network/pgp.html
E' il sito del MIT su PGP. Contiene documentazione, software per integrare PGP con altri programmi di posta elettronica, indicazioni di libri su PGP, links su altri siti.

Nimrod PGP (in italiano)
http://www.serve.com/nimrod/pgp.html
Ottimo sito in italiano gestito da Giorgio Chinnici. Contiene numerosissimi links su altri siti, una guida introduttiva a PGP in italiano, possibilità di scaricare numerosi programmi correlati a PGP.

Manuale di PGP (in italiano)
http://www.pgpi.com/docs/italian.html
ftp://ftp.ifi.uio.no/pub/pgp/2.x/doc/pgp262dc-italian.zip
Per coloro che vogliono sapere proprio tutto su PGP: si tratta del manuale originale scritto da Philip Zimmermann tradotto in italiano da Marco Giaiotto (è un file di più di 200 Kb).

Newsgroups che trattano di PGP:

Alt.security.pgp
Su questo newsgroup vengono pubblicate e periodicamente aggiornate le PGP FAQ (Frequently Asked Questions). Si possono ottenere anche

  1. via FTP: ftp://ftp.prairienet.org/pub/providers/pgp/pgpfaq.txt
  2. via WWW http://www.prairienet.org/~jalicqui/pgpfaq.txt
It.comp.sicurezza.pgp - Newsgroup italiano dedicato alle discussioni su PGP.

Altri newsgroups sono:

Comp.security.pgp.announce
Comp.security.pgp.discuss
Comp.security.pgp.resources
Comp.security.pgp.tech
It.comp.sicurezza.varie


Torna all'inizio
Ultimo aggiornamento
24-Ago-98

Testo a cura di Gilberto Lacchia (glacchia@eponet.it)
© Copyright 1997, Gilberto Lacchia
Torna alla Home Page