Articoli
Home
Il Mio Personal Firewall
Linux : Un router...
Adsl-Usb HOWTO / Part. 1
Adsl-Usb HOWTO / Part. 2
GnuPG: GNU Privacy Guard
SPAM: mailfilter
Periferiche SCSI e backup
Periferiche USB-storage
SAVANT-PHP Template System
PHP-PEAR: Flexy
Miscellaneous
Repository
SOFTWARE Credits
Links
http://www.pluto.linux.it
http://www.php.net
http://pear.php.net
http://www.apt-get.org
L'autore
Chi è costui?
PublicKey

W3C XHTML


W3C CSS


GnuPG [^GNU Privacy Guard^]

di Giuseppe Lucente


Indice


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.

GnuPG LOGO

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:

capture image

Clicca per ingrandire

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 ...

Autore: Beppe
Ultimo aggiornamento: 03/01/2004 - 14:21:27
Pagina elaborata in 0.00150108337402 secondi

Ricerca nel sito