GnuPG [^GNU Privacy Guard^]
Indice
- Premessa
- Brevi cenni storici
- Caratteristiche dello strumento
- Installazione e configurazione
- Gestione chiavi
- APPENDICE 'A': esportazione delle chiavi.
- APPENDICE 'B': cattura di una sessione
Premessa
La posta elettronica è assolutamente il servizio piu' utilizzato al mondo, e proprio per questa sua particolare diffusione soffre di alcune mancanze o meglio dire lacune che tendono a renderlo un servizio di natura INSICURO. Un insicurezza che per sola ignoranza viene molto spesso trascurata. Chiunque conosce almeno le basi di funzionamento di tale servizio saprà sicuramente che nella maggior parte delle volte l'intero processo di trasmissione è perfettamente in chiaro, o piu' semplicemente i dati attraversano la rete in maniera LEGGIBILI A TUTTI.
NOTA:Per maggiori dettagli riguardo questo vedere l'APPENDICE 'B' - CATTURA DI UNA SESSIONE in fondo all'articolo.Ovviamente ulteriori commenti a questa affermazione sono assolutamente inutili, in questi casi la sola idea di PRIVACY quella grossa parola fatta spesso oggetto di argomentazione politiche diventa della banale utopia! Per fortuna anche dalla parte di noi utenti gli strumenti necessari per rinforzare la sicurezza non mancano ma purtroppo nella maggior parte dei casi vengono semplicemente ignorati.
Spesso e volentieri sono stato oggetto delle seguente
domanda:
Che cosa indica quell'link 'PUBLICKEY' sulla tua HOME-PAGE ? E
soprattutto a che diavolo serve quello stringone inutile di
numeri e lettere senza senso?
Perfettamente normale chiedere a cosa servano; se fosse solo
questo il problema, mi interromperei qui. Girovagando per
NEWSGROUP spesso mi sono imbattutto con personaggi che
affermavano che OUTLOOK-EXPRESS cifrasse le e-mail con algoritmi
basati su 3DES, o che attraverso l'icona del lucchetto di KMAIL
sia possibile inviare messaggi tramite qualche algoritmo di
cifratura cyber-spaziale (mi chiedo ancora dove l'hanno
letto)
Questo non è vero; o meglio attraverso queste funzioni
possiamo interfacciare il ns. client di posta ad un programma che
si occupi delle cifratura dei messaggi ma il client da solo...non
fa nulla!!!
Brevi cenni storici
Nel 1991 un tale di nome Phil Zimmermann diede vita ad un progetto che mirava allo sviluppo di un strumento che potesse fornire protezione e riservatezza dei dati attraverso un sistema di autenticazione a chiave pubblica:Pretty Good Privacy o piu' semplicemente PGP. In breve tempo divenne lo strumento di crittografia piu' diffuso.
La release iniziali furono rilasciate in versione OPEN-SOURCE
ma piu' in la nel tempo il progetto venne rivisto da alcune
società trasformando di fatto tale strumento in un
prodotto commerciale!
Da qui l'esigenza di poter fruire nuovamente di un strumento
capace di offrire le stesse caratteristiche ed ecco nascere il
successore di PGP ma in versione completamente OPEN-SOURCE:
GnuPG ovvero GNU Privacy Guard
Caratteristiche dello strumento
Prima di tutto è bene ricordare che nonostante l'articolo ruoti attorno hai sistemi GNU\LINUX lo stesso GnuPG sia disponibile per il download anche in una versione per MS WINDOWS. Fatta questa premessa vediamo di analizzare le peculiarità di questo fantastico strumento: innanzitutto è rilasciato con licenza GPL è quindi liberamente redistribubile.L'home-page raggiungibile all'indirizzo http://www.gnupg.org/ dispone di moltissima documentazione e per tutti coloro che trovano difficoltà a comprendere l'inglese, esiste anche una versione del sito in italiano:http://www.gnupg.org/it/gnupg.html
Fino ad ora si è parlato del suo impiego assieme al servizio di posta elettronica, ma le possibilità di utilizzo non si fermano di certo qui. Anche se non vedremo caso per caso i vari utilizzi è doveroso ricordare che attraverso questo strumento è possibile inoltre cifrare e decifrare documenti e file, verificare le chiavi dei programmi prelevati da internet ecc...
Prima di entrare completamente nei dettagli un'ultima importante nota: GnuPG è generalmente in grado di interagire con PGP eccetto qualche limitazione sui algoritmi di cifratura come specificato sulla stessa HOME-PAGE:
GnuPG is a complete and free replacement for PGP. Because it does not use the patented IDEA algorithm, it can be used without any restrictions. GnuPG is a RFC2440 (OpenPGP) compliant application.
Il significato è abbastanza chiaro: GnupPG è liberamente utilizzabile senza alcuna restrizione in quanto non fa uso di algoritmi proprietari tipo 'IDEA' che ricordo invece viene utilizzato attraverso PGP.
Configurazione
Chiusa questa doverosa ed importante introduzione scendiamo nei dettagli di configurazione. Partiremo da una situazione in cui il software sia già installato sulla macchina, e sia arrivato il momento di passare alla fase di configurazione.
Come punto di partenza creiamo le nostre chiavi. Tale operazione si concretizza facilmente attraverso il seguente comando:
[root:~] gpg --gen-key
gpg (GnuPG) 1.0.6; Copyright (C) 2001 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
Please select what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)
Your selection? 1
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024)
Requested keysize is 1024 bits
Please specify how long the key should be valid.
0 = key does not expire
'n' = key expires in n days
'nw' = key expires in n weeks
'nm' = key expires in n months
'ny' = key expires in n years
Key is valid for? (0) 0
You need a User-ID to identify your key;
the software constructs the user id
from Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) heinrichh@duesseldorf.de "
Real name: Giuseppe Lucente
Email address: indirizzo_e-mail
Comment: nocomment
You selected this USER-ID:
"Giuseppe Lucente (nocomment) 'indirizzo_e-mail' "
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
Enter passphrase: xxxxxxxxxx
Repeat passphrase: xxxxxxxxxx
...
public and secret key created and signed.
Osservando bene tutto l'output si deduce facilmente che l'operazione è alquanto semplice, ben guidata e soprattutto strettamente personale; non prevede insomma punti ostici.
La nostre 2 chiavi [pubblica e privata] generate attraverso la
procedura di qui sopra e tutte le informazioni a seguito sono
state raccolte nella directory $HOME/.gnupg
E' arrivato il momento di gestire il nostro mazzo di chiavi.
Gestione chiavi
Il nostro caro e vecchio amico ROGER RABBIT :o) ha deciso di inviarci la sua chiave pubblica (in seguito lo faremmo anche noi!); d'ora in poi le e-mail che scambiaremo con lui saranno solo cifrate. La sua chiave pubblica ci è pervenuta sotto forma di file di testo, e spetta a noi il compito di gestirla...:
[root: ~]gpg --import roger-rabbit.asc
CHIAVE IMPORTATA! Non ci resta altro che convalidarla, ovvero marchiare la chiave del nostro amico ROGER come valida e affidabile. Come al solito, è piu' difficile a dirsi che a farsi. Prima dobbiamo ottenere l'ID della chiave:
[root: ~]gpg --fingerprint
pub 1024D/F286A583 2003-05-12 Roger Rabbit 'I'am Roger' rogger-rabbit@domain.tdl
Key fingerprint = AA30 8B67 E4BE 744C 5B64 5440 71D9 E1C7 F193 CAB6
sub 1024g/80A39C70 2002-02-14
// l'ID della chiave si trova in alto: F286A583
Ora che abbiamo ottenuto quest'ultima informazione e siamo sicuri che la chiave in nostro possesso è proprio del nostro amico ROGER possiamo procedere alla sua convalida finale:
[root: ~]gpg --edit-key F286A583 ---> l'ID della chiave gpg (GnuPG) 1.0.6; Copyright (C) 2001 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. Secret key is available. pub 1024D/F286A583 created: 2002-02-14 expires: never trust: -/u sub 1024g/80A39C70 created: 2002-02-14 expires: never Roger Rabbit 'I'am Roger' roger-rabbit@domain.tdl // AL PROMPT DIGITIAMO TRUST Command> trust pub 1024D/F286A583 created: 2002-02-14 expires: never trust: -/u sub 1024g/80A39C70 created: 2002-02-14 expires: never Roger Rabbit 'I'am Roger' roger-rabbit@domain.tdl Please decide how far you trust this user to correctly verify other users' keys (by looking at passports, checking fingerprints from different sources...)? 1 = Don't know ---># Chiave sconosciuta 2 = I do NOT trust ---># Non convalidarla 3 = I trust marginally ---># Marginale 4 = I trust fully ---># Pienamente affidabile s = please show me more information m = back to the main menu // CONVALIDIAMO A PIENO LA CHIAVE DI ROGER, SCEGLIAMO '4' Your decision? 4 Command> quit
Bene, è arrivato il momento di inviare il nostro primo
messaggio cifrato; una volta configurato il nostro client di
posta preferito per l'utilizzo di GnuPG, sarà sufficente
specificare durante l'invio del messaggio di utilizzare la chiave
pubblica di ROGER e il gioco è fatto.
NOTA: ovviamente a sua volta ROGER dovrà essere in
possesso della sua chiave privata per la lettura del messaggio e
della nostra chiave pubblica in caso di risposta.
E se volessimo apporre una firma ad un file o piu' semplicemente cifrare l'interno contenuto di un file e spedirlo al nostro amico roger ? Detto fatto:
[root:~]gpg --encrypt --output file.asc --recipient roger-rabit@domain.tdl
... e una volta ottenuto ROGER potrà decifrarlo tramite:
[root:roger]gpg --output file --decrypt file.asc
Con quest'ultimo passaggio si completa la fase di configurazione e successivo utilizzo di GnuPG. In questo articolo abbiamo esplorato le funzionalita' minime di GnuPG, mi sarebbe piaciuto parlare anche della creazione dei certificati di revoca, l'esportazione e l'importazione di chiavi attraverso i keyserver, ma purtroppo le enormi possibilità offerte da questo programma non ci consentono di affrontarle tutte in questa sede... magari lo vedremo piu' avanti in un secondo articolo.
Per il momento non posso che lasciarvi agli appendici finali.
APPENDICE 'A': esportazione delle chiavi.
Una delle funzionalità piu' interessanti offerte da GnuPG è la possibilità di esportare le nostre chiavi pubbliche per permetterci di pubblicarle magari sulla nostra HOME-PAGE e renderle così liberamente scaricabili, ma piu' semplicemente per inviarle ad un amico in maniera che quest'ultimo possa utilizzarle per contattarci.
Per poter fruire di questa funzionalità è sufficente digitare:
gpg --armor --export roger-rabbit@domain.tdl oppure attraverso -----> gpg --armor --export roger-rabbit@domain.tdl > roger-rabbit.asc
APPENDICE 'B': CATTURA DELLA SESSIONE
L'unico modo per capire a fondo il problema è vedere
realemente cosa puo' accadere. Per rendere il discorso piu'
vicino alla realta' catturiamo usando uno sniffer un'intera
connessione ad un server POP3! Piu' semplicemente vediamo cosa si
puo' ottenere catturando il traffico durante un banale controllo
di posta elettronica. Chiaramente sia il server sia l'utente
utilizzati sono fittizi.
Qui ci va un importantissimo chiarimento: questa non vuole essere
assolutamente una guida alla violazione di sistemi informatici ne
tanto meno una tutorial alle tecniche di sniffing di traffico che
ricordo sono operazioni ILLEGALI. Si tratta solamente di una
banale dimostrazione per aiutare maggiormente alla comprensione
del discorso.
Detto questo incominciamo: l'indirizzo IP del server è
127.0.0.1 (locale ovviamente), creiamo inoltre un utente di nome
'test' facendo finta che esso sia un'utente della nostra LAN.
E la passwd? dovete scoprirla voi;o)
Ipotizziamo quindi che il nostro utente voglia scaricare la posta attraverso il suo CLIENT preferito, sia esso KMAIL, MUTT, OUTLOOK EXPRESS, EVOLUTION, la cosa poco importa. Nel momento in qui esegue la connessione al server il nostro sniffer è in ascolto e puo' quindi catturare le informazioni sensibili. L'immagine qui sotto riporta il risultato:
Interessante notare il livello di dettagli che abbiamo ottenuto, e soprattutto con che semplicità. Immagino ora sia chiaro quale sia la password dell'utente fittizio vero? ;o) NOTA: volendo dirla proprio tutta oltre alle credenziali di accesso alla mailbox abbiamo ottenuto anche altre informazioni importanti, tipo le SEQUENCE NUMBER che aprono parallelamente un'altro tipo di problema: l'hijacking della connessione, non trattate in questa sede.
Credo che a questo punto sia facile comprendere il succo del
discorso e il grosso problema. Giriamo la situazione: ora siamo
noi l'utente test e qualcuno all'interno della nostra LAN ha
ottenuto se pur illegalmente queste informazioni. E' abbastanza
chiaro che costui puo' leggersi comodamente la nostra posta.
Inizia ad essere poco bello lo scenario vero ?
Se il maledetto sciacallo ha conoscenze anche basilari sulla
cosa, sarà molto difficile poterlo smascherare. C'è
pero' un'aspetto da tenere in considerazione per quanto sia
piuttosto scomodo operare in questa maniera.Generalmente
l'attivazione di uno sniffer porta le schede di rete in uno stato
diverso, una modalita' abbastanza singolare chiamata 'PROMISCUA'
che consente alle stesse di catturare i dati grezzi. Accorgersi
di questo cambiamento potrebbe essere un valido campanello
d'allarme. Ma purtroppo anche in questo caso le forti limitazioni
si fanno sentire: basta una banale NIDS in funzione sulla
macchina (es. SNORT) ed ecco che questa informazione non ci serve
piu' a nulla.
Valutiamo a questo punto cosa sia possibile fare.
Parte del problema si potrebbe risolvere usando delle
apparecchiatura hardware che eseguano routing tipo un switch o un
router piuttosto che l'utilizzo di un semplice HUB. Questo
perchè le apparecchiature di routing non lavorano in
broadcast, ma anche questa è una soluzione di fortuna poco
affidabile; basta porre il ns. programma di cattura a monte su di
una macchina perimetrale per ritrovarci nuovamente punto e a
capo.
L'intero problema è legato al funzionamento del protocollo
TCP che si basa su un legame di fiducia. La strada migliore da
percorrere è lo scambio dei dati attraverso protocolli di
rete piu' robusti e sicuri. Qui la fa da padrone SSL/TLS
ma anche l'utilizzo di autenticazione APOP garantirebbe un
buon grado di sicurezza. Perquanto sia sicuramente la soluzione
migliore sono veramente pochi i sistemi in circolazione che
forniscono tale livello di protezione.
In questi casi GnuPg e programmi analoghi possono essere una reale soluzione hai problemi appena visti. Ma perchè ? La risposta è molto semplice: come fa lo sciacallo una volta ottenute le nostre credenziali di accesso a leggere le nostre e-mail se esse sono state preventivamente protette attraverso GnuPG ? HE HE HE ...
Ultimo aggiornamento: 03/01/2004 - 14:21:27
Pagina elaborata in 0.00150108337402 secondi

