-----BEGIN PGP SIGNED MESSAGE----- LEGGERE LE AVVERTENZE IN FONDO AL DOCUMENTO IN DIRETTA DAL MONDO Micro & Personal Computer 3/1996 (testo consegnato alla redazione) PGP CRITTOGRAFIA PER LE MASSE: ISTRUZIONI PER L'USO (seconda parte) Abbiamo visto nella prima puntata i principi ispiratori del PGP. Vediamone ora l'uso concreto, cercando di sfatare il falso mito della "difficolta'" dell'uso di PGP. di Fabrizio Ruggeri PGP puo' essere usato in due modi: o direttamente tramite comandi impartiti dalla linea di comando, e in questo caso il suo funzionamento non e` molto diverso dal funzionamento di programmi di compressione quali PKZip, sia sfruttando il supporto per PGP previsto in alcuni gestori di posta elettronica quali MMMR, Amira, o Thor, sia servendosi di appositi programmi detti "shell per PGP" che presentano dei semplici menu' all'utente per le varie opzioni, analogamente a quanto avviene con i programmi di interfaccia grafica per i compressori. Il caso degli utenti Windows e` particolare perche', oltre alle "shell", esiste un apposito programma shareware, WPGP, che consente di fare in modo che il proprio programma per Windows supporti il PGP come se fosse stato scritto appositamente. In questo modo puo' essere aggiunto pieno supporto di PGP a programmi come WinQWK, Eudora, Pegasus ecc. L'installazione di PGP e` semplicissima. In genere si tratta semplicemente di decomprimere il pacchetto in una directory e di assegnare una o due (a seconda delle piattaforme) variabili di ambiente, ad esempio: SET PGPPATH=C:\COM\PGP\. Nulla di difficile. Anche inserire PGP nel percorso di ricerca e` utile se usate molto PGP da linea di comando, o fare comunque in modo che il comando "pgp" lanci PGP da qualsiasi directory. Si potra' personalizzare facilmente il file config.txt in base alle proprie esigenze. Vediamo dunque PGP in pratica, analizzandone il funzionamento dalla linea di comando il che rendera' la trattazione valida per tutte le numerose piattaforme su cui e` stato portato e consentira' di spiegare piu' agevolmente il suo funzionamento interno. GENERARE UNA CHIAVE Con il comando "pgp -kg" si dice a PGP di originare la propria coppia di chiavi PGP. "-kg" sta per "key generation", cioe` generazione di una chiave. Salvo casi particolari, questa operazione va fatta una sola volta, o meglio va ripetuta solo al momento di generare una nuova chiave, cosa che e` bene fare una volta ogni 4/5 anni. Durante la procedura PGP vi chiedera' di scegliere una dimensione della chiave. Consigliamo una dimensione di 1024 bit per conciliare robustezza (comunque eccezionale) con la rapidita' di esecuzione. Se userete spesso questa chiave su un calcolatore molto lento, forse e` meglio usare 512 bit. Per dare un'idea, io trovo che la mia chiave da 1024 bit fosse accettabilmente pratica anche su un 286. Se siete proprio pignoli, o se volete fare durare la vostra chiave molti anni, scegliete di generare una chiave di dimensioni maggiori. PGP vi chiedera' anche di inserire una "frase di accesso" cioe` un codice alfanumerico segreto composto anche di piu' parole. Dovrete digitare alla tastiera questo codice ogni volta che volete FIRMARE oppure DECRITTARE un testo, non sceglietelo quindi troppo lungo o complesso. Ovviamente non sceglietelo ovvio. Zimmermann, l'autore, raccomanda di fare riferimento a un qualche elemento della vostra infanzia. Non usate cose semplici da indovinare come date di nascita, nomi di donna, ecc. Potrete, di tanto in tanto, cambiare questa frase di accesso. PGP creera' una chiave pubblica e una chiave privata. La chiave privata, quella segreta, personale, che non deve circolare, viene scritta nel file SECRING.PGP. La chiave pubblica viene scritta nel file PUBRING.PGP dove andranno anche tutte le altre chiavi pubbliche, quelle delle persone con le quali corrisponderete. Questi file non devono necessariamente risiedere sul disco rigido, per chi lavora in ambiente di rete ad esempio e` sicuramente piu' sicuro scriverli su dischetto. PGP puo' essere istruito a leggerli da dischetto quando ne ha bisogno. FIRMARE UN TESTO Generata la vostra chiave pubblica, potete gia' da ora firmare i testi che scrivete anche a persone che non usano PGP, lasciando il testo in chiaro. Diffondendo inoltre la vostra chiave pubblica (v. riquadro "come si ottiene una chiave pubblica") permetterete a chiunque di scrivervi messaggi che solo voi potrete decifrare. Vediamo ora come si firma un testo. Avvertiamo i lettori che le linee di comando proposte sono solo esempi. Si possono passare a PGP linee di comando incomplete, nel qual caso PGP anziche' rifiutarsi di fare il proprio lavoro chiedera' molto amichevolmente uno per uno tutti gli argomenti che gli servono. Supponiamo che voi abbiate scritto un testo ASCII, il file TESTO, da firmare e inviare come messaggio di posta elettronica, in chiaro. Basta dare il comando "pgp -s testo" (dove s sta per "sign", firmare) e PGP vi chiedera' di digitare la vostra frase di accesso, quella che avete dato al momento di creare la chiave. Digitate la vostra frase segreta, ovviamente se qualcuno e` presente chiedetegli di non guardare oppure, se non ve la sentite, ricordatevi di cambiare la frase segreta in seguito. Digitata la vostra frase segreta, PGP vi dice che ha creato la firma per quel file in un file TESTO.ASC, che contiene sia il testo che, accodata, la firma. Potete distribuire ora il testo con la firma in calce, che altri utenti di PGP, in possesso della vostra chiave pubblica, potranno decifrare. Accenniamo che potete anche fare in modo che la firma sia separata dal testo, cioe` in un file a parte. Potete distribuire il testo TESTO e la firma separata TESTO.ASC e chiunque puo' controllare che la firma sia vostra. Se solo una persona deve firmare il testo, si usa la funzione che permette di accodare la firma direttamente al testo. E' cosi' che in genere operano i gestori di posta elettronica che supportano PGP. La possibilita' di distribuire la firma separata dal testo e` invece utile sia quando si devono mettere piu' firme a un documento (ad es. un contratto) sia quando il programmatore vuole "firmare" un programma in modo che chiunque abbia la sua chiave pubblica possa controllare che non sia infetto da virus. Anche un solo bit di cambiamento di TESTO verrebbe individuato da PGP che negherebbe, a un controllo, la validita' di TESTO.ASC come firma della persona X per il file TESTO. Siccome questi file devono spesso viaggiare attraverso i serventi postali di Internet, molti dei quali gestiscono solo i testi in ASCII puro (a 7 bit) l'uso di caratteri a 8 bit (IBM-PC, Mac oppure ISO usati da Windows, Amiga e Unix) porrebbe problemi sia a Internet sia a PGP che rileverebbe quasi sempre delle modifiche. Esiste allora l'opzione "-a" tramite la quale si dice a PGP di usare solo caratteri a 7 bit. La linea di comando sarebbe quindi "pgp -sa testo" e il file che si ottiene, TESTO.ASC, e` del tutto idoneo a viaggiare in Internet. Naturalmente dovra' essere, per le stesse ragioni, scritto a 7 bit anche il testo originale, TESTO. Se usate PGP per la posta elettronica la cosa piu' pratica da fare e` configurarlo in modo che usi sempre l'opzione "a" ogni volta che possa essere impiegata. Configurare PGP e` molto semplice. Basta aprire il suo file CONFIG.TXT, cercare la linea #Armor = on # Use -a flag for ASCII armor whenever applicable e levare il simbolo di diesis # in prima colonna. Questo simbolo ha l'effetto del comando REM nei file CONFIG.SYS e AUTOEXEC.BAT dei PC. Levandolo, l'istruzione "Armor = on" diventa attiva, e PGP usa l'opzione -a ogni volta che sia possibile. Ogni volta quindi che usate il comando "pgp - - - -s" PGP eseguira' in realta' il comando "pgp -sa". Questo in sintesi e` quanto c'e` da sapere per quanto riguarda la _firma_ di testi che rimangono in chiaro. Si potrebbe precisare che PGP in realta' opera comunque una compressione sui testi, che quindi anche quando non sono cifrati non rimarrebbero in chiaro, se non si attiva la funzione "ClearSig = on" nel CONFIG.TXT. Comunque nelle ultime versioni di PGP il config.txt preconfigurato presenta gia' questa opzione attivata. Ad ogni buon conto controllate. CRITTOGRAFARE UN MESSAGGIO Per quanto riguarda invece le operazioni di crittazione supponiamo che io voglia mandare un testo crittato al mio amico Mario Rossi, personaggio detto per inciso niente affatto fittizio. Per potergli inviare un messaggio crittato, cioe` che solo lui puo' leggere, devo avere la sua chiave pubblica. Supponiamo che io l'abbia presa da un servente delle chiavi pubbliche, su Internet (ma ci sono anche altri modi per diffonderla, v. riquadro). Mi ritrovo un file che contiene la sua chiave pubblica, eventualmente in mezzo a svariate altre informazioni. Supponiamo che questo file si chiami PIPPO.TXT. Per importarla nel mio mazzo di chiavi pubbliche, PUBRING.PGP, mi basta dare il comando: "pgp -ka pippo.txt" PGP cerca nel file pippo.txt tutte le nuove chiavi pubbliche. Trovera' quindi quella di Mario Rossi e mi chiedera' se deve aggiungerla al file PUBRING.PGP. Gli diro' di si'. Mi chiedera' anche se devo "controfirmare" la sua chiave (v. riquadro "La certificazione della firma") gli diro' di no visto che l'ho ottenuta da un canale insicuro. Ora che ho importato la chiave di Mario Rossi nel mio file di chiavi pubbliche PUBRING.PGP posso controllare il contenuto con il comando "pgp - - - -kv" (key view = vedi le chiavi) e PGP mi mostrera' il contenuto del mio mazzo di chiavi, che per ora conterra' solo la mia chiave pubblica e quella di Mario. L'emissione sara' qualcosa come quella del riquadro ESEMPIO 1. Posso anche usare -kvv per avere una descrizione di tutte le chiavi con le eventuali controfirme. A questo punto ho importato la chiave di Mario Rossi nel mio file pubring.pgp con -ka e so come controllare che effettivamente la chiave sia effettivamente presente con -kv. Posso quindi scrivere un messaggio cifrato a Mario Rossi. PGP usera' la chiave pubblica di Mario e solo Mario potra' leggerlo. Sara' come se io chiudessi il messaggio per Mario con un lucchetto che lui mi ha dato e di cui lui solo possiede la chiave. Se il file si chiama TESTO la linea di comando e` "pgp -e testo" dove "e" sta per "encrypt" cioe` "critta". Visto che non ho indicato per chi va fatta la crittazione PGP mi chiedera' quale chiave pubblica devo usare. Diro' "Mario.Rossi" che e` una stringa che compare nell'etichetta della sua chiave pubblica, cioe` sotto la colonna "User ID". Avrei anche potuto immettere direttamente il comando "pgp -e testo Mario.Rossi". Avrei anche potuto usare "pgp -e testo Rossi@agora" ad esempio. Notate che una stessa chiave puo' avere piu' di una etichetta, ad esempio una per l'indirizzo Internet, una per quello FidoNet e una per quello PacketRadio. La mia chiave ad esempio ha due diversi indirizzi Internet. PGP non mi chiedera' di immettere frasi segrete. Infatti non sto ne' firmando ne' decrittando. Sto facendo una cosa che chiunque puo' fare, cioe` chiudere un messaggio per Mario Rossi con il lucchetto che mi ha dato Mario Rossi. Anche in questo caso, visto che il testo deve viaggiare per posta elettronica, bisogna usare l'opzione "a". Quindi il comando a rigore e` "pgp - - - -ea testo" ma avendo io l'opzione "usa sempre -a" attiva non ho bisogno di mettere "a" anche nella linea di comando. Cio' che PGP crea, a seguito di questo comando, e` un file dal contenuto incomprensibile. Ne avete un esempio nel riquadro ESEMPIO2. Tutto cio' che e` compreso fra le linee "begin pgp message" e "end pgp message", comprese queste linee, e` il messaggio cifrato. Notate che in questo messaggio compaiono solo caratteri a 7 bit, il messaggio puo' quindi viaggiare tranquillamente per Fidonet o Internet. Ora che ho scritto questo messaggio potrei volerlo decrittare e leggere io stesso, magari perche' per distrazione ho cancellato l'originale in chiaro. Siccome pero' l'ho crittato indicando solo Mario Rossi come destinatario, mi sara' impossibile decrittarlo a mia volta. Dovrei quindi, se voglio conservare la possibilita' di leggerlo, crittarlo anche per me. La linea di comando sara' ad esempio: "pgp -e testo Mario.Rossi fruggeri" Le ultime versioni di PGP hanno pero' un'opzione "encrypt to self" che puo' essere attivata in modo che PGP critti sempre anche "per se stessi" (levando un # al file config.txt). Inoltre programmi come Amira e MMMR, che vedremo in seguito, permettono comunque di fare in modo che la crittazione avvenga sempre anche per se' stessi. CRITTARE E FIRMARE Posso, oltre che cifrare il testo, volerlo anche firmare. In questo modo Mario Rossi, se ha avuto la mia chiave pubblica da me personalmente ed e` quindi certo della autenticita' della mia chiave pubblica in suo possesso, puo' accertarsi che sia veramente io l'autore del messaggio. La linea di comando sara': "pgp -es testo Mario.Rossi". "-es" dice a PGP che deve sia crittare "-e" sia firmare "-s". PGP mi chiedera' la frase segreta, visto che sto firmando un testo. Quando Mario Rossi ricevera' il mio messaggio, supponendo che lo abbia salvato in un file RUGGERI, gli bastera' dare il comando "pgp ruggeri" il comando "pgp" usato senza parametri e con argomento un file dice a PGP di esaminare quel file e fare da se' automaticamente le operazioni eventualmente necessarie. PGP decrittera' i messaggi crittati proponendo all'utente in quali file salvarli, esaminera' le chiavi pubbliche che eventualmente trovera' e, se sono nuove cioe` se mancano nel file PUBRING.PGP chiedera' all'utente se le vuole aggiungere, esaminera' le firme dei messaggi e dira' se il messaggio firmato e` "autentico" oppure no. Insomma voi date un file a PGP che lui quello che deve fare lo sa. PGP incorpora anche un raffinato controllo delle accentate. Basta dire a PGP nel config.txt quale tipo di lettere accentate si usa, e usare l'opzione "t" da linea di comando (oppure, come per "a", fare in modo che PGP la usi sempre anche senza specificarlo). L'opzione "t" fa in modo che le lettere accentate vengano sempre rese correttamente indipendentemente dalla macchina che le ha scritte e da quella che le legge. Posso usare le accentate sul mio Amiga senza preoccuparmi se il mio corrispondente ha un Amiga, un Mac o un PC. Lui le leggera' correttamente. Bene, il grosso dell'uso con linea di comando e` tutto qui. "-e" per crittare, "-s" per firmare, "-ka" per importare una chiave. Se ora vogliamo passare a qualcuno una chiave pubblica, ad esempio la nostra, ci bastera' "estrarla" da PUBRING.PGP in formato ASCII in modo che possa circolare per posta. Per estrarre la mia chiave pubblica in un file mi basta dare il comando: "pgp -kxa fruggeri Ruggeri.asc" e PGP estrarra' nel file ruggeri.asc la mia chiave pubblica in formato trasportabile. Come gia' detto potevo anche scrivere -kx perche' la "a" e` implicita nella mia configurazione. Il file che si ottiene e` quello dell'ESEMPIO 3, e puo' essere inviato alla propria BBS, a un servente pubblico di chiavi PGP che la dara' a chiunque ne faccia richiesta, puo' essere scritto su un dischetto e passato a mano, nel quale caso la trasmissione sara' "sicura" e sara' possibile per chi riceve la chiave controfirmarla e anche controllare le eventuali firme dei testi. ALTRE OPZIONI PGP ha anche altre opzioni, che scoprirete da soli leggendo la docuementazione. Ad esempio l'opzione "solo per i suoi occhi", "-m", che se usato in fase di crittazione permette la decrittazione del testo solo a schermo, impedendo la scrittura a disco. Usato in fase di decrittazione "-m" consente di vedere il testo direttamente a schermo, usando il proprio visualizzatore preferito (indicato in config.txt) oppure quello incorporato in PGP. USO CON GESTORI DI POSTA ELETTRONICA Sebbene sia semplice, potreste trovare PGP noioso nell'uso. Dover creare un file per ogni messaggio, digitare il nome del destinatario, indicare un file diverso per ogni messaggio da decrittare e andarlo poi a leggere puo' essere alla lunga scomodo. Per un uso confortevole di PGP basta usare un gestore di posta elettronica che ne supporti l'uso, come Amira, PGP o Thor. Al momento di salvare il testo bastera' dire al programma "crittalo con PGP" e sara' il gestore di posta elettronica a fare tutto il lavoro, passando i parametri a PGP, chiedendovi eventualmente la frase di accesso. In lettura bastera' dire al programma di decrittare il testo, e il programma lo decrittera' in genere mostrandolo a schermo e poi chiedendo se deve accodarlo a un file (cosa che si rivelera' impossibile se chi lo ha scritto ha usato l'opzione "-m"). Spesso e` possibile sfruttare dai gestori di posta elettronica anche funzioni di uso meno frequente, come la crittazione "solo per i suoi occhi" oppure l'estrazione di chiavi pubbliche, l'accodamento della propria chiave pubblica ecc. con domande fatte dal programma al momento opportuno. Talvolta e` necessario indicare in configurazione al programma dove trovare l'eseguibile PGP e i suoi file di dati CONFIG.TXT, PUBRING.PGP e SECRING.PGP. USO CON "SHELL" Esistono apposite "shell" per DOS che consentono, a chi proprio non ne vuole sapere della linea di comando, di adoperare PGP usando dei semplici menu'. Ad esempio si potra' scegliere l'opzione "gestione chiavi" e si trovera' un menu' con opzioni come queste: aggiungi chiave - elimina chiave - aggiungi etichetta chiave - modifica etichetta chiave - modifica grado di attendibilita' di una chiave pubblica estrai chiave in un file - ecc. Anche a questi programmi va talvolta indicato dove trovare PGP e i file di dati. USO CON WINDOWS Il programma WPGP consente di operare con quasi qualsiasi gestore di posta elettronica (anzi quasi qualsiasi programma) per Windows come se questo fosse stato studiato per supportare PGP. Si scrivera' ad esempio il testo normalmente con Eudora, WinQWK o WorldGroup Manager, poi si trascinera' l'iconcina "critta" sopra la finestra e WPGP crittera' il testo e lo inserira' nella finestra al posto di quello in chiaro. Eudora o WinQWK "non si accorgeranno di niente" sara' come se aveste digitato voi il testo crittato da tastiera. Analogamente, ricevendo un messaggio crittato, bastera' trascinarvi sopra l'apposita iconcina e WPGP passera' il contenuto del messaggio a PGP, ricevera' da questo il testo decrittato e lo mettera' nella finestra senza, anche questa volta, che WorldGroup manager si accorga di nulla. Sara' come se il mittente avesse inviato il testo in chiaro. CONCLUSIONE La panoramica fornita da' una spiegazione esauriente dei principi fondamentali di uso di PGP. Il programma comunque consente di fare molte cose, e noi siamo lieti di rimandare l'utente al manuale di PGP, molto esaustivo e il cui difetto, l'essere poco chiaro a un principiante, contiamo aver superato con questa introduzione. Esiste anche un manuale in italiano per PGP scritto da Giorgio Chinnici (reperibile su MPnet). Una raccomandazione importante in chiusura. L'uso di PGP ha senso se si seguono le elementari norme di buon senso indicate nel manuale. Non ha invece senso se la frase d'accesso e` "1996", se lasciate che chiunque vi guardi mentre la digitate, se il file con la chiave segreta viene lasciato dappertutto e dovunque, se certificate le chiavi altrui senza avere la "sicura certezza" della sua autenticita', se prendete per "certa" una firma riconosciuta da PGP come "autentica" ma controllata in base a una chiave pubblica ottenuta non di persona. E per finire davvero, un'ultima considerazione: PGP e` divertente! Provatelo e ve ne accorgerete anche voi. RIQUADRO: SITI INTERNET SU PGP Elenchi Domande Frequenti (FAQ): PGP Frequently Asked Questions http://www.prairienet.org/~jalicqui/pgpfaq.txt ftp://ftp.prairienet.org/pub/providers/pgp/pgpfaq.txt Where to Get the Latest PGP Program FAQ ftp://ftp.uu.net/usenet/news.answers/pgp-faq/where-is-PGP.Z WWW: The International PGP Home Page http://www.ifi.uio.no/~staalesc/PGP/home.html Fran Litterio's PGP Page (from the Virtual Library) http://draco.centerline.com:8080/~franl/pgp/pgp.html The Official Bug List for MIT PGP 2.6.2 http://www.mit.edu:8001/people/warlord/pgp-faq.html The Phil Zimmermann Legal Defense Fund Page http://www.netresponse.com/zldf FTP: ftp://ftp.dsi.unimi.it/pub/security/crypt/PGP/ ftp://ftp.informatik.uni-hamburg.de/pub/virus/crypt/pgp/ ftp://ftp.csua.berkeley.edu/pub/cypherpunks/pgp/ Infine ecco alcuni bollettini USENET sulla crittografia in generale alt.anonymous Anonimato e reindirizzatori anonimi alt.anonymous.messages Invio di messaggi anonimi crittati alt.security Della sicurezza in generale alt.security.index indice di alt.security alt.security.pgp PGP alt.society.civil-liberty Diritti civili (riservatezza inclusa) comp.society.privacy Della riservatezza in generale comp.security.announce Annunci di varchi nella sicurezza sci.crypt Metodi di crittazione/decrittazione Consigliamo a chi fosse interessato, come prima cosa, la lettura della FAQ (elenco, in inglese, di domande frequenti) sulla crittografia a chiave pubblica e sull'algoritmo RSA, inserita periodicamente in vari bollettini tra i quali news.answers. RIQUADRO: COME SI OTTIENE UNA CHIAVE PUBBLICA Nell'attesa di spiegare il funzionamento concreto di PGP spieghiamo per ora come si ottengono e si distribuiscono le chiavi pubbliche. Le chiavi pubbliche sono inserite nei "serventi delle chiavi pubbliche" che in tutto il mondo quotidianamente si scambiano le nuove chiavi. Pertanto chi inserisce una chiave in un servente sa che verra' ritrasmessa a tutti gli altri serventi. In Italia il servizio e` svolto dal sito DSI.UNIMI.IT del dipartimento informatico dell'Universita' di Milano. Si puo' ottenere una chiave da un servente in due modi: tramite PE oppure tramite la "ragnatela", usando un navigatore quale Netscape, Mosaic o Lynx. Per ottenere una chiave pubblica per posta (o piu' chiavi contemporaneamente) basta inviare all'indirizzo "pgp-public-keys@dsi.unimi.it" un messaggio di posta elettronica composto dal solo titolo (o "oggetto") con il comando GET seguito dalla chiave che volete. Non c'e` bisogno di inserire tutta l'etichetta della chiave, basta una stringa significativa. Alcuni esempi: GET Peter Simons (la chiave di Peter Simons) GET dubois@csn.org (la chiave di Philip Dubois) MGET compuserve.com (tutte le chiavi degli utenti CompuServe) Notate che in questo caso, al contrario di quanto avviene con i comandi per le liste postali, il comando deve trovarsi nell'OGGETTO e non nella prima riga del corpo del messaggio. Per inviare una chiave pubblica (anche non vostra) al servente la procedura e` la stessa. L'oggetto del messaggio conterra' semplicemente ADD e il corpo conterra' la chiave. Per ottenere la chiave pubblica tramite la ragnatela bisogna puntare il sito: http://www-swiss.ai.mit.edu/~bal/pks-commands.html con un navigatore che supporti i moduli, quale ALynx o Netscape. Il resto e` intuitivo, si da' la stringa da cercare, si ottiene un elenco di chiavi la cui etichetta presenta quella stringa, e si puo' chiedere la chiave. RIQUADRO: LA CERTIFICAZIONE DELLA FIRMA E LA CERTEZZA DELL'IDENTITA' DEL CORRISPONDENTE. Tutto il meccanismo sopra esposto avrebbe una grave falla. Io posso trovare in un servente pubblico una chiave PGP di Valeria Marini, la chiave riporta anche un indirizzo elettronico, supponiamo che sia vmarini@mpnet.it. Posso prendere questa chiave pubblica e usarla per spedire un messaggio crittato a vmarini@mpnet.it. Ma come faccio a sapere che quella firma e quella chiave sono effettivamente di Valeria Marini? Mi arriva una risposta, firmata con quella chiave. Come posso sapere che effettivamente quella risposta sia stata scritta da lei? Potrebbero anche essere di un Mario Rossi che si e` divertito a fare il burlone. E prendiamo la mia chiave pubblica. Io l'ho inserita nei serventi pubblici, ma nulla impedisce a un buontempone di inviare a sua volta a un servente pubblico una nuova chiave o un'altra chiave, magari revocando la mia, spacciandosi per me. Se poi il buontempone e` il mio amministratore di rete cioe` Mario Chisari, e qualcuno mi scrive usando quella chiave pubblica, Mario potrebbe decrittare i messaggi che mi vengono inviati, e fare cose molto piu' turpi, come ad esempio sostituirsi a me anche nella firma (e` il caso dell'"uomo in mezzo", "man in the middle", descritto nella documentazione di PGP). Ci sono due modi per risolvere l'ambiguita', dando "certezza" alla chiave pubblica. Uno e` quello di ricorrere a una certificazione esterna, un ente certificatore. Il notaio Ceralacca prende di persona le chiavi dal sig. Riservato, il Sig. Schivo e dal Sig. Timido. Nessuno di questi tre signori ha preso di persona la chiave dagli altri due, ma si fida dell'onesta' del notaio e dunque puo' considerare valide le chiavi degli altri due. Se i signori suddetti riconoscono le chiavi certificate da Ceralacca come valide, i contratti firmati con esse potranno avere valore legale davanti a un giudice. Questo sistema ha l'inconveniente dell'accentramento. Posso fidarmi della certificazione operata dal notaio Ceralacca? Tutto si regge su di lui. E non c'e` il rischio che questo modo di fare dia origine di fatto a un "grande certificatore" che poi, sempre di fatto, avrebbe il potere di un "grande fratello"? Nel mondo delle comunicazioni private PGP ha quindi introdotto un altro metodo di certificazione, quello che potremmo definire della "cerchia di conoscenze". Io e il Sig. Riservato ci siamo visti e ci siamo accertati, tramite esibizione reciproca di documenti, della nostra identita'. Ci siamo scambiati le chiavi su dischetti. Per me, la chiave del Sig. Riservato e` certa, come pure per lui la mia. Per me, i messaggi firmati con quella chiave sono sicuramente suoi. Durante questo incontro, che per brevita' supponiamo avvenuto alla presenza di un elaboratore, io ho controfirmato la chiave del sig. Riservato e lui la mia. Ora la chiave del Sig. Riservato riporta una cosa come: "controfirmata da Fabrizio", e viceversa. Io mi sono anche incontrato col Sig. Timido, e ho fatto con lui la stessa operazione. La mia chiave e` dunque controfirmata sia da Timido che da Riservato. Il sig. Timido non si e` mai incontrato col sig. Riservato. Se tuttavia Timido gli scrivesse un messaggio firmato, il sig. Riservato troverebbe che il messaggio e` stato crittato con una chiave controfirmata da Ruggeri, e PGP confronterebbe la controfirma con quella della sua propria chiave, e gli direbbe che si', la controfirma di Ruggeri e` autentica. Per essere piu' chiaro, PGP sa che chi ha controfirmato la chiave del sig. Timido e` effettivamente chi ha generato la chiave di Ruggeri. Se quindi Riservato conosce la chiave di Ruggeri come vera, allora sapra' che effettivamente Ruggeri ha controfirmato la chiave di Timido e, se si fida di Ruggeri, sara' certo della identita' di Timido. A questo punto il sig. Riservato prendera' cognizione del messaggio con la certezza che e` stato veramente scritto da Timido, perche' - e nella misura in cui - si fida di Ruggeri cioe` di me e della mia comprensione del funzionamento di PGP. Questo sistema consente di fare a meno di grandi enti di certificazione. Sembra assurdo ma le "reti" di certificazione si formato abbastanza rapidamente. Del resto la necessita' della certificazione si avverte in genere limitatamente a persone che, se non hanno rapporti di affari, hanno comunque rapporti intimi e frequenti. In genere i messaggi firmati in Internet non sono verificabili, perche' e` raro che si conosca, ad esempio, qualcuno che conosce di persona Phil Zimmermann, che vive negli Stati Uniti. Tuttavia il lettore trovera' che, nell'uso pratico, il sistema funziona egregiamente. Durante le consuete riunioni di telematici si provvede a scambi di chiavi e certificazioni che poi rendono le comunicazioni postali possibili non solo sotto l'aspetto della cifratura ma anche di quello della certificazione. Si noti comunque che e` sempre possibile crittare un messaggio, anche senza certificarlo, e decrittare un messaggio, anche se e` firmato con una chiave sulla cui veridicita' siamo incerti. RIQUADRO ESEMPIO1: Key ring: 'Dati:com/PGP/pubring.pgp' Type Bits/KeyID Date User ID pub 1024/36407979 1995/06/24 mario rossi pub 1024/FEA57711 1995/01/29 Fabrizio Ruggeri Fabrizio Ruggeri RIQUADRO ESEMPIO2: - - - -----BEGIN PGP MESSAGE----- Version: 2.6.3i hIwCi1nb9TZAeXkBBACmnydXRBtuEeh2AUgvrGhWUqLHag4lkXleCmOsyzE2prmA X1BZLWbynctX+itHrmdeLslSg9HO2+beXd5YPkYy4JRfWjJj8aQI9JNwrVWhY76X BcM+43n9R4d6hQirInlnDXSkszf/NBriZEpjMkwaO/dtGUCj3zmrb6Lge/CGd4SM Ah/6QWn+pXcRAQQAkXLFeDWyNp2Rq56WVBdU3n/FoXARsM1cZSPkU5aZSgLpp2sp MbTYSAxrdo+Ear8Y8AwLFXUK3HDQTQ6mc47PXEyE0Xj/u8SOH/1j6g4t4XE4Aqcn FHAPqkoVOyFaQGYFYIpM59ynu4leUgjmhNyHZBaJAVfAtmHiIcqYHruZ+FimAAAA Mr0qBVEVhXXu1ksHOCEjsh0L8AdZAOBbmCV1l9Tih4RDOJrgKdd+j/xC8XSz9EKs oSv5 =N6UE - - - -----END PGP MESSAGE----- RIQUADRO: ESEMPIO 3 - UN ESEMPIO DI CHIAVE PUBBLICA (la mia) Type Bits/KeyID Date User ID pub 1024/FEA57711 1995/01/29 Fabrizio Ruggeri Fabrizio Ruggeri - - - -----BEGIN PGP PUBLIC KEY BLOCK----- Version: 2.6.3i mQCNAi8rgC0AAAEEANT5B96HtJCZyOlcCzqS/khHWr8+wip0lKW99Yl0uDJ++Gl0 0MLVEtE82j1YCU4kG9bVK7h835RDZfpmUvd/ZClvr4QFDzFpaJu40auqsHpP/0gF oyl6Dh8LDO7uJ+FMLBZFBfm8TMqPdXNZ7oeobF/SDW+08NOZaR/6QWn+pXcRAAUR tCRGYWJyaXppbyBSdWdnZXJpIDxmcnVnZ2VyaUBtcG5ldC5pdD6JAJUDBRAxHO53 od+8j2uxeDkBAQpOBACDrcpzFSg355jGD1k59b63S0hbd30xSt9Df51JkFeHQNET ovP+S+41lJwQdzM04nwPzXhdFX79cIyBswdKGQhPHb1hscwsssLCg8GBtQt5Qyr0 4FZX/mhpmFcU2InCudQKOCesczP1kfkK+4MhShMUO1zbu3rSRLE1knamjHp3gLQp RmFicml6aW8gUnVnZ2VyaSA8Ri5SdWdnZXJpQGFnb3JhLnN0bS5pdD6JAJUDBRAx IQyPod+8j2uxeDkBARfzBADOyoowEgdSWCKCV8nZDFtrUBWaOz5pDQ3larCVcjSd zMPu8GRByao7C35bwfMNkvTrduhIobPFdeveTMpgqMyYRrTZk8tJVnWdNh15Z2+B 1GY/N0uaEIWiahzC12C6zjLKbvTMW+us8JsKrevup9I6wDEAnrPwsgburHL//Rxm QokAlQMFEC9zZuCska17wjDm4QEBxc0D/0LUAkyh2UcCFkgN8946N3ooCBhE/lJb Ut7cUxS+slxe+ud2xBg+YroUQDj8wJIq90Z4DTokaXKetr+6tebqPHvhorQ4TCrB ZwSeCNJ1kemx/K+kxCoz0zADikafviWrbnI3aq6GtSYTgcX6JZWolcd6nW6yI6LI QJ82dO2/ujZdiQCVAgUQL3WQ4/DC8PRP01ChAQGTtwQAufF5Akjjkwiq3/zNO7uS +MpUsQctb2qUk7LwZqEo0EekZiAs5K9wFQMl9vwE4iXE9wUo1J0ZH6/zXsXSI86I gWO1fNPw5ls4oAcKmGEIsyGXqnbdn+C/WQOYjqb7Ksd1tIbqlxV/7E5qdKMfinPL /4axAP8NCH+OPKmyOxdJa8OJAJUDBRAveByO+4OgODv8Jn0BAf0dA/0arh5phDsT Pj6UEAEssYmYca7kjEYP67RQXaCExypcKCoMnGrZsxuuCsZ/97HQwNyRgRhOu1pJ 9f9NSCT70vhf0DZeP5BC/GFa3AWt1fcl069sFYxglke7NH3uwtu2YkW9ZTx2gfn+ djFZNXlle6q57nymMVGcynpmjLAImpoF3Q== =JAJ5 - - - -----END PGP PUBLIC KEY BLOCK----- RIQUADRO: Quando riassuntivo dei comandi di PGP Questo sotto e` quanto appare a schermo al comando pgp -h. Esistono anche versioni italiane di questa schermata. I parametri sono intuitivi. Le operazioni con le chiavi cominciano tutte per k. Here's a short summary of commands in PGP 2.6.3i: Generate new key pair: pgp -kg [keybits] Add key: pgp -ka keyfile [keyring] Extract key: pgp -kx[a] userid keyfile [keyring] View key(s): pgp -kv[v] [userid] [keyring] View fingerprint: pgp -kvc [userid] [keyring] Check & view in detail: pgp -kc [userid] [keyring] Remove userid or key: pgp -kr userid [keyring] (Repeat for multiple userids on a key) Edit trust params: pgp -ke userid [keyring] Add another userid: pgp -ke your_userid [keyring] Edit passphrase: pgp -ke your_userid [keyring] Sign a key in pubring: pgp -ks other_id [-u sign_id] [keyring] Remove a sig from key: pgp -krs userid [keyring] Revoke, dis/enable: pgp -kd userid [keyring] Encrypt: pgp -e[a] textfile TO_id [TO_id2 TO_id3...] Sign: pgp -s[a] textfile [-u MY_id] Sign & encrypt: pgp -se[a] textfile TO_id [TO_id2 TO_id3...][-u MY_id] Make detached cert: pgp -sb[a] [+clearsig=on] mainfile [-u MY_id] (Can do binaries) (clearsig=on may be set in CONFIG.TXT) Encrypt with IDEA only: pgp -c textfile Decrypt or check sig: pgp [-d] [-p] cryptogram (-d to keep pgp data, -p for original file name) Check detached cert: pgp certfile [mainfile] (If root of filenames are the same omit [mainfile]) Use [a] for ASCII output Use [-o outfile] to specify an output file Use [-@ textfile] to specify additional userids when encrypting Use [-z"pass phrase"] to specify your pass phrase Use [+batchmode] for errorlevel returns Use [f] for stream redirection ( pgp -f[ARGS] outfile ) Use [w] to wipe plaintext file (encryption operations) Use [m] to force display of plaintext only (no output file) Use [t] to alter line endings for unix, etc. - --------------------------------------- AVVERTENZE: Questo file e` reperibile sul sistema telematico MPnet (Tel: 06/82000829) nella libreria TEXT, nome file PGP2P.TXT e in Internet con LUR: http://www.agora.stm.it/F.Ruggeri/home.htm La distribuzione di questo file attraverso sistemi telematici, CD-ROM, Internet, e il richiamo da altre pagine della ragnatela sono permessi ed incoraggiati, purche' gratuitamente ed integralmente, e purche' siano citati autore ed estremi della testata e volume di pubblicazione. L'autore ne mantiene comunque tutti i diritti. Per qualsiasi uso al di fuori di quelli sopra consentiti, o per qualsiasi esigenza, l'autore puo' essere contattato per Posta Elettronica ai seguenti indirizzi: Internet: F.Ruggeri@agora.stm.it Fidonet: Fabrizio Ruggeri presso Mercurio BBS (2:335/326) Chiave PGP disponibile sui serventi pubblici - ---------------------------------------- -----BEGIN PGP SIGNATURE----- Version: 2.6.3i Charset: cp850 iQCVAgUBMgsrUx/6QWn+pXcRAQEnnQQAx8NpXM8QT78E7k5Q6myOyUobl+91G/jR Ax81yRNJ2zd5nb/rDJt3lTcLYsrA5sAF9dlla0HrgB5O0wW+AGSMf28QoYYOTr83 fy0pBh6XDlWiBpubNz0JeGXDt1q7bepWH9Vuj4GWX+8c9tIAEITT8kTiWiwmtfC8 Oqtmg97Y218= =xof7 -----END PGP SIGNATURE-----