UNIVERSITÀ CA’ FOSARI – VENEZIA
Facoltà di Scienze Matematiche, Fisiche e Naturali
          Corso di Laurea in Informatica




            Tesi di Laurea Triennale




           Laureando: Fabio Pustetto




  POSTA ELETTRONICA SICURA:
         X.509 E PGP


    Relatore: Chiar.mo prof. Riccardo Focardi




          Anno Accademico 2003/2004
www.unive.it        Tesi di Laurea A. A. 2003/2004       www.dsi.unive.it




              “Se la segretezza è fuorilegge,
         solamente i fuorilegge avranno segretezza”
                                                Philip R. Zimmermann




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP    Pagina 2 di 118
www.unive.it              Tesi di Laurea A. A. 2003/2004                      www.dsi.unive.it




                                        SOMMARIO


   SOMMARIO ............................................................................ 3

   PREFAZIONE.......................................................................... 5

   1     INTRODUZIONE .............................................................. 6
       1.1  Contesto normativo in Europa ......................................... 8

   2     REQUISITI..................................................................... 14
       2.1  Autenticazione ............................................................. 16
       2.2  Riservatezza/Segretezza ............................................... 16
       2.3  Integrità ...................................................................... 17
       2.4  Non ripudio.................................................................. 18

   3     TECNOLOGIE ................................................................. 19
       3.1  Algoritmi crittografici simmetrici..................................... 22
       3.2  Algoritmi crittografici asimmetrici ................................... 25
       3.3  Accenni di crittoanalisi .................................................. 27
       3.4  Hashing....................................................................... 32
       3.5  Firma .......................................................................... 34
       3.6  Come funziona in realtà ................................................ 35

   4     GESTIONE DELLE CHIAVI.............................................. 37
       4.1    Distribuzione di certificati .............................................. 39
         4.1.1     Certificate Server ................................................... 39
         4.1.2     Keyserver.............................................................. 40
       4.2    Revoca di Certificati Digitali ........................................... 40
         4.2.1     Certificate Revocation List (CRL) ............................. 41
         4.2.2     Online Certificate Status Protocol (OCSP)................. 43
       4.3    Public Key Infrastructure (PKI) ...................................... 43
       4.4    Web of Trust (WoT) ..................................................... 49
         4.4.1     Signing party: un esempio ...................................... 51

   5     X.509 ............................................................................. 54
       5.1    X.509 Certificate Format ............................................... 55
         5.1.1    Standard PKCS ...................................................... 59
         5.1.2    La versione 4......................................................... 61
       5.2    Come si ottiene un nuovo certificato .............................. 61
       5.3    Come si ottiene il certificato di un utente........................ 65



Fabio Pustetto        Posta elettronica sicura: X.509 e PGP                    Pagina 3 di 118
www.unive.it              Tesi di Laurea A. A. 2003/2004                      www.dsi.unive.it



   6     PGP................................................................................ 68
       6.1    Chiavi in PGP ............................................................... 72
         6.1.1    Key ID .................................................................. 73
         6.1.2    Key Ring ............................................................... 73
       6.2    Generazione messaggi .................................................. 74
       6.3    Horizontal Trusting = fiducia ......................................... 76
         6.3.1    Web of Trust in PGP............................................... 78
       6.4    PGP certificate format ................................................... 81

   7     IN PRATICA…................................................................ 83
       7.1    Produrre un certificato X.509v3 ..................................... 84
         7.1.1    Installare una PKI in Windows ................................ 86
         7.1.2    Installare una PKI in Linux...................................... 88
       7.2    Produrre un certificato PGP ........................................... 95
         7.2.1    PGPkeys................................................................ 97
         7.2.2    PGPmail ................................................................ 97
         7.2.3    Esempio pratico ..................................................... 98
       7.3    Confronto tra PGP e X.509 ............................................ 99

   Appendice ..........................................................................104
      Legenda delle notazioni usate nelle figure ............................104
      Algoritmo di Diffie-Hellman .................................................104
      Algoritmo RSA ...................................................................105
      Comandi principali di OpenSSL ............................................106
      Log emissione certificati .....................................................108

   Glossario............................................................................111

   Bibliografia ........................................................................115




Fabio Pustetto        Posta elettronica sicura: X.509 e PGP                    Pagina 4 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it



                              PREFAZIONE
         A fronte della rapida diffusione di tecnologie informatiche, dal
         trattamento delle informazioni alle comunicazioni, pochi si
         pongono il problema della gestione della sicurezza, nonostante
         lo studio di tecniche procede alla stessa velocità con cui gli
         intrusori riescono a violare le barriere.


         Un semplice messaggio di e-mail è diventato oramai il mezzo
         più diffuso di comunicare: è veloce, economico e consistente
         ma è privo di alcuni requisiti fondamentali: non si è sicuri di chi
         lo ha spedito, del contenuto originale del messaggio e della sua
         riservatezza. Questo è certamente irrilevante per lo scambio di
         barzellette tra colleghi, al contrario è fondamentale per
         professionisti che investono tempo, denaro e sacrifici nella loro
         professione, basata sulla comunicazione affidabile e sicura.


         La firma digitale è l’equivalente elettronico di una tradizionale
         firma apposta su carta. La sua funzione principale è perciò
         quella di attestare validità, autenticità e integrità di un
         documento. Si evita così che qualcuno possa intercettare e
         manipolare    un    documento      riservato,   spacciandolo   per
         autentico. Dal punto di vista tecnico è una codifica crittografica
         del documento.


         Questo elaborato intende fornire le nozioni fondamentali sulle
         attuali tecnologie per la sicurezza della posta elettronica e
         intende investigare le due soluzioni più usate in nei diversi casi:
         utente domestico e professionale (azienda, università, …).




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP        Pagina 5 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004        www.dsi.unive.it




   1             INTRODUZIONE




       “L’arte della guerra ci insegna a confidare non
      sulla probabilità che il nemico non arriverà, ma
      sulla nostra stessa preparazione a riceverli; non
      sulla possibilità che essi non attaccheranno ma
           sul fatto che noi abbiamo reso le nostre
                    postazioni inattaccabili”
                                              The Art of War, Sun Tzu




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP    Pagina 6 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004           www.dsi.unive.it




         L’avvento di reti “moderne” (Internet, Intranet) determina un
         utilizzo di massa delle potenzialità di connessione client-server
         al quale non è corrisposto un altrettanto rapido incremento
         della sicurezza nel nuovo ambiente.


         Il problema di Internet è che non si può mai con certezza
         sapere con chi si sta parlando o a chi si stanno inviando
         informazioni. Internet è totalmente anonima, almeno dal punto
         di vista degli utenti finali, sebbene è necessario ricordare che le
         autorità competenti hanno comunque i mezzi per identificare
         con certezza utenti nella rete commettono degli illeciti.


         Sicurezza nelle comunicazioni email significa poter richiedere
         delle condizioni o vincoli.
         Il mittente può richiedere quanto segue:
            •    I dati sono trasmessi alla persona voluta
                    o Se una spia li cattura gli deve essere impossibile
                        comprendere il testo
            •    I dati trasmessi non subiranno modifiche
                    o Se una spia riesce a catturare e modificare i dati,
                        ciò sarà segnalato a chi li riceve
            •    I dati trasmessi sono visti solo dal destinatario
                    o Solo il destinatario deve sapere in che modo poter
                        visualizzare il testo (decifrare)
            •    Il destinatario non può negare l’avvenuta ricezione del
                 messaggio inviato (servizio di notariato)
                    o La firma digitale autentica mittente, data e ora in
                        cui il messaggio è stato inviato




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP        Pagina 7 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         Analogamente il destinatario può avere la necessità di
         richiedere una o più delle seguenti condizioni:
            •     Il mittente è veramente quello dichiarato
                     o Chiunque può mandare email a nome falso; devo
                         poter riconoscere l’originale da un falso
            •     I dati ricevuti sono quelli effettivamente inviati
                     o Se il messaggio viene catturato e modificato da
                         una spia durante il tragitto, il destinatario deve
                         essere avvisato
            •     I dati ricevuti non sono stati catturati da terzi
                     o Nessuno deve poter interpretare il contenuto delle
                         nostre comunicazioni, anche se riesce a catturare
                         la nostra corrispondenza elettronica
            •     Il mittente non può negare l’invio del messaggio
                     o Avendo la certezza che il mittente è quello
                         dichiarato, non potrà disconoscere il contenuto di
                         email inviate
                     o Esempio: una grossa ditta fornisce via email un
                         preventivo per una gara d’appalto. Non potrà
                         rifiutarsi di praticare il prezzo stabilito, anche se
                         volutamente basso.


         Altre esigenze analoghe possono preoccupare i soggetti
         coinvolti, in funzione del valore che essi attribuiscono alle
         informazioni trasmesse o ricevute e quindi richiedere misure di
         sicurezza più o meno complesse.


   1.1           Contesto normativo in Europa

         L’Unione Europea, nel corso degli ultimi anni, si è impegnata sul
         fronte delle nuove forme di comunicazione. Il Parlamento



Fabio Pustetto      Posta elettronica sicura: X.509 e PGP             Pagina 8 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004           www.dsi.unive.it



         Europeo ha invitato gli Stati Membri e la Commissione Europea
         a predisporre misure consistenti per assicurare l’integrità e
         l’autenticità dei documenti trasmessi per via telematica.
         Nell’autunno del 1997 la Commissione ha adottato una
         Comunicazione rivolta al Parlamento Europeo, al Comitato
         Economico e Sociale ed al Comitato delle Regioni, sollecitando
         un disegno comune per la firma digitale e la crittografia,
         strumenti ritenuti essenziali per una maggiore sicurezza del
         commercio telematico.
         Con una successiva Comunicazione si è richiesto al Parlamento
         Europeo l’elaborazione di una direttiva che formuli un
         riconoscimento,       all’interno   dell’Unione   Europea,    delle
         sottoscrizioni elettroniche attraverso la definizione dei requisiti
         essenziali per l’armonizzazione delle legislazioni degli Stati
         membri, e determini i meccanismi di cooperazione con Paesi
         terzi per un mutuo riconoscimento sulla base di accordi
         bilaterali o multilaterali.
         Molti paesi sono ancora ad una fase preparatoria dei lavori (così
         il Regno Unito), altri, invece, hanno introdotto negli ordinamenti
         interni alcune norme significative (Francia, Germania).


         L'Italia è il primo paese europeo ad aver attribuito piena validità
         giuridica ai documenti informatici grazie alla legge Bassanini ed
         al ruolo svolto da AIPA (Autorità per l'Informatica nelle
         Pubbliche Amministrazioni), ora CNIPA (Centro Nazionale per
         l’Informatica nella Pubblica Amministrazione, [4]).


         La materia della documentazione elettronica e della firma
         digitale ha trovato una disciplina nell’ordinamento giuridico
         italiano con il D.P.R. 10 novembre 1997, n. 513, “Regolamento
         recante criteri e modalità per la formazione, l’archiviazione e la


Fabio Pustetto     Posta elettronica sicura: X.509 e PGP       Pagina 9 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004             www.dsi.unive.it



         trasmissione     di   documenti     con   strumenti   informatici   e
         telematici, a norma dell’articolo 15, comma 2, della legge 15
         marzo 1997, n.59”.
         Il risultato, prodotto dalle norme del regolamento, è la piena
         rilevanza giuridica della documentazione informatica e la sua
         equiparazione alla tradizionale documentazione “cartacea”.
         All’intenso valore giuridico della disciplina regolamentare non si
         accompagna un equivalente valore pragmatico, in quanto, per
         quest’ultimo, occorrerà attendere l’emanazione di ulteriori ed
         indispensabili        regolamenti     tecnici    di      attuazione.
         Successivamente all’emanazione di tali regolamenti, il D.P.R.
         513 diventerà pienamente operativo.


         Il regolamento si compone di tre capi.


         Il primo di questi, dedicato ai principi generali, si apre con
         l’enunciazione delle definizioni dei termini di carattere tecnico,
         utilizzati nel corso della disciplina giuridica. Alla nozione di
         documento informatico ed alla descrizione dei requisiti che lo
         caratterizzano, segue la disciplina dell’atto informatico come
         forma scritta e dell’efficacia probatoria ad esso attribuita e
         quella della validità e rilevanza attribuita alla copia di atti e
         documenti. Lo stesso capo si occupa (sommariamente) della
         disciplina delle attività da compiersi per il rilascio delle chiavi
         asimmetriche all’utente da parte dell’Autorità di certificazione,
         nonché degli obblighi inerenti entrambe le parti.


         Il secondo capo, rubricato “firma digitale”, si dedica alla validità
         e rilevanza a tutti gli effetti di legge dei contratti stipulati con
         strumenti informatici o per via telematica. L’attenzione è poi
         rivolta ai criteri di conclusione del contratto e di notifica del


Fabio Pustetto    Posta elettronica sicura: X.509 e PGP        Pagina 10 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004              www.dsi.unive.it



         documento        informatico,     nonché    alla     segretezza    della
         corrispondenza trasmessa per via informatica ed alla possibilità
         di effettuare pagamenti elettronici, come pure alla formazione
         di libri e scritture contabili, a carattere obbligatorio, in formato
         elettronico.         Le    successive      disposizioni      attengono
         all’autenticazione della firma digitale, riconosciuta ai sensi
         dell’art. 2703 cod. civ., ai criteri di validità e di applicazione
         delle chiavi di cifratura della pubblica amministrazione. Il
         secondo capo si chiude con la disciplina della firma digitale e
         del documento informatico nella pubblica amministrazione.


         Le norme di attuazione del regolamento sono contenute nel
         capo terzo, il quale pone alle pubbliche amministrazioni dei
         termini per l’adozione di piani di sviluppo e di realizzazione
         nonché di un rapporto tra costi e benefici del recupero su
         supporto informatico dei documenti e degli atti cartacei.


         Il sistema che attribuisce al documento informatico con firma
         digitale l’efficacia della scrittura privata (art.5) è così concepito:
         un’Autorità     di    certificazione,   consultata    da    un    utente
         interessato, descrive a quest’ultimo la procedura e concede il
         know how per la “generazione” di una coppia di chiavi.
         L’utente ha il dovere di custodire segretamente la propria
         “chiave privata”, che utilizzerà per apporre la firma; tuttavia, è
         data facoltà di depositare in forma segreta la chiave presso un
         notaio (secondo la disciplina del testamento segreto).
         La propria “chiave pubblica” verrà pubblicata in un registro
         telematico da parte del certificatore. Quest’ultimo, ricevuta la
         chiave pubblica dell’utente, emette un “certificato”, il quale
         garantisce la corrispondenza biunivoca tra chiave pubblica,




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP             Pagina 11 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004                 www.dsi.unive.it



         necessaria per la verifica della firma, chiave privata e soggetto
         titolare.
         Il contenuto del certificato riguarda l’indicazione delle generalità
         della persona, della corrispondente chiave pubblica e del
         termine di scadenza (art. 1, h). La validità di tale certificato è
         stabilita in una durata massima di tre anni, ma può essere
         revocato, ossia perdere validità irretroattivamente, ovvero
         sospeso per un periodo di tempo determinato.


         Il regolamento si occupa di disciplinare i requisiti dei
         certificatori, i quali hanno il delicato compito di assicurare la
         corrispondenza, e quindi la titolarità, delle chiavi asimmetriche,
         e di conseguenza della firma digitale. Con riferimento al settore
         privato, per svolgere l’attività di certificatore occorre l’inclusione
         in un apposito elenco pubblico tenuto dall’Autorità per
         l’Informatica nella Pubblica Amministrazione (art. 8, comma 3).


         Il regolamento contiene norme la cui incidenza sul diritto
         sostanziale     è     estremamente       rilevante,     pur     mancando
         un’immediata        applicabilità,   rinviata   a     successive    norme
         tecniche. (tratto da [27], [5])


         Per completezza, è utile sapere che il governo americano
         impedisce l’esportazione di software di cifratura che utilizzi
         chiavi di lunghezza tale da garantire la resistenza del cifrario
         per un periodo relativamente lungo. Un’analoga limitazione non
         si applica agli algoritmi di generazione e verifica di firme
         elettroniche a patto che questi non siano modificabili in modo
         da renderli utilizzabili per la cifratura.




Fabio Pustetto       Posta elettronica sicura: X.509 e PGP             Pagina 12 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it



         Per questo motivo PGP è stato coinvolto in varie controversie:
         nato come tool disponibile per tutti gratuitamente, il governo
         degli USA ha dichiarato che la possibilità da parte degli stranieri
         di ottenerlo, costituisce una violazione delle leggi riguardanti
         l’esportazione di armi. Per aggirare tali restrizioni, le ultime
         versioni sono prodotte fuori dagli Stati Uniti e con versioni
         diversificate.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP       Pagina 13 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004       www.dsi.unive.it




   2             REQUISITI




         “Ogni Egiziano riceve due nomi che sono
     conosciuti rispettivamente come il vero nome e il
      giusto nome, oppure il grande nome e il piccolo
     nome; mentre il giusto o piccolo nome sono resi
      pubblici, il vero o grande nome sembrano esser
                 stati nascosti attentamente”
                         The Golden Bought, Sir James George Frazer




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP   Pagina 14 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004               www.dsi.unive.it




         Come      anticipato,     la   certificazione     elettronica   consiste
         nell’utilizzare tecniche che consentano di attribuire a documenti
         elettronici la stessa validità degli analoghi cartacei e, se
         possibile, maggior sicurezza: mentre un documento cartaceo
         può essere manomesso e spacciato per autentico, con la
         certificazione elettronica ogni alterazione viene evidenziata, sia
         esso un documento testuale o un qualsiasi file binario.


         I nemici più comuni contro cui si vuole predisporre adeguate
         contromisure sono riassunte nella successiva tabella (da [39]):


           Avversario                                Scopo
        Studente                 Divertirsi curiosando nella posta altrui
        Hacker                   Verificare i sistemi di sicurezza; rubare dati
        Venditore                Pretendere di rappresentare tutta Europa
                                 Scoprire il piano strategico di mercato di un
        Uomo d’affari
                                 concorrente
        Ex dipendente            Vendicarsi per esser stato licenziato
        Cassiere                 Appropriarsi del denaro di una società
                                 Negare una promessa fatta a un acquirente
        Agente di cambio
                                 per email
        Truffatore               Rubare numeri di carta di credito
        Spia                     Scoprire la forza militare di un nemico
        Terrorista               Rubare segreti per una guerra batteriologica


         Per proteggere, cioè rendere sicuro, si intende predisporre
         contromisure di protezione per i rischi specifici.


                     Rischio                               Requisito
        Frode                                  Autenticazione
        Intercettazioni non autorizzata        Riservatezza/Segretezza
        Modifica dati                          Integrità
        Diniego                                Non ripudio


Fabio Pustetto     Posta elettronica sicura: X.509 e PGP           Pagina 15 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004                        www.dsi.unive.it




         Un testo scritto al computer è modificabile per definizione e se
         vogliamo usarlo come documento inoppugnabile dobbiamo
         renderlo “sicuro”, ossia non più modificabile senza che tale
         modifica venga segnalata. I decreti Europei ci impongono di
         ricorre alla cifratura utilizzando la tecnica delle coppie di chiavi,
         una segreta ed una pubblica, con varie attenzioni.


   2.1           Autenticazione

         L’autenticazione è il procedimento utilizzato per verificare
         l’identità dell’utente o dell’autore di un documento. Questa
         verifica richiede lo scambio di informazioni segrete tra l’utente e
         l’applicazione     che     vuole     utilizzare.     Nel     caso      di      email
         l’autenticazione ci assicura che il documento non sia un falso e
         che il mittente è proprio chi dice di essere. A tale                    scopo la
         firma elettronica accoda al testo un riassunto firmato con la
         chiave privata del mittente.
         I   certificati   X.509,      illustrati   nel     corso     del     documento,
         consentono anche l’autenticazione tra Client e Server in una
         qualsiasi interazione che deve svolgersi in modo sicuro (es
         scambio di dati sensibili o Web Server autenticati), attraverso il
         protocollo SSL/https.


   2.2           Riservatezza/Segretezza

         La segretezza consente ad utenti autorizzati di interpretare
         informazioni      riservate     negandole        a   tutti    gli     altri.    Tali
         informazioni devono essere protette sia durante le operazioni di
         memorizzazione sia durante la trasmissione in rete. I dati
         memorizzati possono essere protetti con codifica o controllo di
         accesso. Il controllo di accesso consente all’utente di utilizzare


Fabio Pustetto     Posta elettronica sicura: X.509 e PGP                    Pagina 16 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004              www.dsi.unive.it



         la propria autorizzazione per accedere alle risorse disponibili;
         l’accesso viene limitato solo agli utenti autenticati ed autorizzati.
         Per la trasmissione in rete devono essere necessariamente
         codificate. La codifica richiede l’utilizzo di una chiave che
         consenta       solo   al   legittimo   destinatario   di   decifrare   le
         informazioni.


   2.3           Integrità

         Come un sigillo protegge il documento contenuto in una busta,
         la certificazione dovrà garantire la protezione delle informazioni
         dalle eventuali modifiche apportate da altri utenti non
         autorizzati.


         Gli algoritmi, perciò si occuperanno di applicare ai dati una
         funzione hash non invertibile. Il risultato della funzione,
         chiamato valore di controllo o impronta, viene cifrato e
         accodato ai dati. Il destinatario, per assicurarsi che i dati
         ricevuti non siano stati modificati, esegue la stessa funzione di
         hash del mittente sui dati e confronta il risultato ottenuto con il
         valore di controllo accodato ai dati. Se i dati non coincidono
         significa che sono stati modificati ed il destinatario può non
         accettarli.


         L’intruso che riuscisse ad intercettare i dati durante la
         trasmissione potrebbe modificarli con successo solamente
         conoscendo la chiave di codifica applicata con il secondo
         passaggio.




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP            Pagina 17 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it



   2.4           Non ripudio

         Per qualsiasi società è importante poter stipulare accordi
         vincolanti e legalmente validi anche tramite Internet. Fornitori e
         acquirenti esigono la certezza che un contratto stipulato non
         possa essere negato da nessuna delle due parti.


         Se da un lato chi invia non può disconoscere la paternità di un
         documento firmato digitalmente, dall’altro, chi riceve non può
         negarne l’esistenza. Entrambi si possono appellare alle varie
         informazioni che si integrano nella firma digitale quali
         potrebbero essere la data e l’ora esatta di invio del documento.


         La pubblica amministrazione, per ogni Area organizzativa, deve:
            •     mantenere un registro informatico;
            •     istituire un servizio e nominare un responsabile;
            •     assicurare che venga effettuata la registrazione di
                 protocollo dei documenti scambiati con soggetti esterni,
                 come da Dpr 445/2000 (che contiene l’ex Dpr 428/98 e
                 l’ex Dpr 513/97).
         Solo così possono garantire la non ripudiabilità di un documento
         informatico.




Fabio Pustetto      Posta elettronica sicura: X.509 e PGP      Pagina 18 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004       www.dsi.unive.it




   3             TECNOLOGIE




        “Storicamente sono stati quattro i gruppi di
      persone che hanno dato il loro contributo all’arte
        della crittografia: militari, corpo diplomatico,
                  scrittori di diari e amanti …”
                                                Andrew S. Tanenbaum




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP   Pagina 19 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it




         Scopo di questo elaborato è analizzare le tecniche per
         proteggere le comunicazioni di informazioni tra elaboratori
         connessi in rete. Il modello di riferimento per reti di computer è
         ISO-OSI     (Open    System    Interconnection)    dell’International
         Standard     Organization.    Si   compone    di   7   livelli:   fisico,
         collegamento dati, rete, trasporto, sessione, presentazione,
         applicazione. Per ognuno di questi livelli esistono tecnologie e
         procedure, anche estreme, per rendere sicure le comunicazioni
         e assieme partecipano al fine. Alcune proposte sono riassunte
         da [39]:


           Livello                           Procedure
                         in ambito militare le dorsali più critiche vengono
        Fisico           racchiuse in condotte sigillate contenenti gas
                         Argo ad alta pressione (un po’ drastico, in realtà)
                         su una rete punto a punto è possibile codificare
                         ogni pacchetto appena lascia una macchina e
                         decodificarlo appena arriva a destinazione,
        Data Link        lasciando all’oscuro i livelli superiori. Questa
                         soluzione fallisce se nel tragitto si attraversano
                         router: essi infatti devono decodificare i pacchetti
                         rendendoli vulnerabili agli attacchi
                         è possibile installare un firewall per accettare o
        Rete
                         scartare pacchetti
                         è possibile codificare l’intera connessione da un
        Trasporto
                         capo all’altro (da processo a processo)
                         Vari software e algoritmi. Solo in questo livello è
        Applicazione
                         possibile garantire non ripudio e autenticazione


         La tecnologia principale su cui si basano tutte le applicazioni
         inerenti alla sicurezza è la “crittografia”. Con questo termine si
         intende la tecnica per trasformare una sequenza di dati in
         chiaro in un'altra sequenza apparentemente incomprensibile:
         proteggere i dati originali rendendoli segreti. Solamente le



Fabio Pustetto      Posta elettronica sicura: X.509 e PGP       Pagina 20 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004                         www.dsi.unive.it



         persone autorizzate a conoscere quei dati possono operare il
         processo inverso, poichè solo loro posseggono la chiave per
         decifrarli.


         La crittografia classica è basata su 2 tipi di algoritmi: a chiave
         simmetrica (o segreta) e a chiave asimmetrica (o pubblica).
         I primi sono i più semplici e veloci. Si occupano della vera e
         propria crittografia del messaggio, i secondi stati sviluppati per
         ovviare alle due più grandi lacune degli algoritmi simmetrici: il
         problema della trasmissione della chiave utilizzata e del numero
         di chiavi necessarie tra coppie di utenti. A dire la verità sono
         abbastanza complessi, ma fondamentali per tutte le recenti
         applicazioni riguardanti la sicurezza online.




                                    cifratura                   decifratura
                  testo originale               testo cifrato                 testo in chiaro



         Un algoritmo crittografico
            •    Lavora su una sequenza di dati iniziale da crittografare
                 (testo in chiaro);
            •    Genera una seconda sequenza contenente i dati
                 crittografati (testo cifrato);
            •    Basa il suo lavoro su una o più chiavi.


         La seconda tecnologia è detta hashing. Basandosi su una
         sequenza di dati potenzialmente infinita, consente di generarne
         un'altra,     molto        più     piccola     e       di   dimensione            fissa,
         “rappresentativa” del contenuto della sequenza iniziale, detta
         hash, digest, riassunto o impronta.



Fabio Pustetto       Posta elettronica sicura: X.509 e PGP                     Pagina 21 di 118
www.unive.it              Tesi di Laurea A. A. 2003/2004                www.dsi.unive.it




         Utilizzandole entrambe è possibile realizzare firma digitale e
         crittografia delle email, ma anche applicazioni come trasmissioni
         dati crittografati con controllo degli errori, siti web sicuri (SSL),
         identificazione delle persone e altro ancora.


   3.1           Algoritmi crittografici simmetrici

         Questi tipi di algoritmi si basano sulla conoscenza comune e
         assolutamente riservata tra mittente e destinatario di una
         chiave. Spesso l’algoritmo di codifica è conosciuto, secondo il
         principio di Kerckhoffs: “La sicurezza di un crittosistema non
         deve dipendere dalla segretezza dell’algoritmo usato, ma solo
         dalla segretezza della chiave”.


         Affinché gli estranei non riescano a comprendere il documento,
         potremmo sostituire ogni lettera nel documento con una
         successiva nell'alfabeto. Questo tipo di cifrario è detto “a
         sostituzione”. Uno dei primi esempi di utilizzo è attribuito a
         Cesare, che usava comunicare con i suoi legionari trasponendo
         di 3 lettere l’intero testo. In questo modo:


         a   b    c   d   e   f   g   h   i   l   m n   o   p   q   r   s   t   u   v   z
         D   E   F    G H     I   L   M N O       P   Q R   S   T   U   V   Z   A   B   C



         Con questo cifrario, se un nemico avesse ricevuto il messaggio
         IALLN SUNPD GHO ZUDPRQZR


         non avrebbe potuto coglierne il significato. Un Romano, invece
         lo avrebbe tradotto facilmente in
         fuggi prima del tramonto




Fabio Pustetto        Posta elettronica sicura: X.509 e PGP             Pagina 22 di 118
www.unive.it              Tesi di Laurea A. A. 2003/2004                          www.dsi.unive.it



         Solo il destinatario reale dovrà essere in grado di decifrarla,
         poichè è a conoscenza di come è stata trasformata la sequenza
         originale. La chiave per decifrare il messaggio è appunto sapere
         che ogni lettera è stata trasposta circolarmente di 3 posti
         nell'alfabeto. Per quanto semplice, questo algoritmo può essere
         considerato un algoritmo crittografico a chiave segreta.


         Lo stesso algoritmo, lavorando sugli stessi dati, avrebbe portato
         a sequenze cifrate diverse in base alla chiave utilizzata: +1
         (successive), -1 (precedenti), +2 (successive delle successive),
         ecc... In questo algoritmo la chiave è rappresentata da un
         numero intero.


         Per decodificare il documento cifrato si utilizza un algoritmo che
         funziona al contrario, data una sequenza di dati e una chiave.
         La chiave utilizzata è la stessa che ha utilizzato l'algoritmo
         iniziale per cifrare i dati.




                                   cifratura                   decifratura
                 testo originale               testo cifrato                 testo in chiaro




         Con un algoritmo di questo tipo e una chiave così banale, si
         potrebbe provare a decifrarlo provando con tutte le 26 (il
         numero delle lettere nell’alfabeto inglese) chiavi possibili: non ci
         vuole molto a provarle tutte.




Fabio Pustetto        Posta elettronica sicura: X.509 e PGP                      Pagina 23 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004           www.dsi.unive.it



         Potremmo allora pensare di sostituire ogni lettera con un’altra
         con distanza casuale secondo una funzione stabilita. Le possibili
         chiavi sono ora una permutazione sulle 26 lettere dell’alfabeto:
         26!≈4*1026 ma con le attuali tecniche (analisi della frequenza
         delle lettere) la crittoanalisi non è molto complessa.


         In realtà gli algoritmi utilizzati sono ben altri e le chiavi che
         utilizzano non sono numeri interi come nel nostro esempio ma
         sequenze di bit.


         Un tipico algoritmo di crittografia è RC2 con chiavi da 40 bit.
         Tutte le possibili chiavi che si possono ottenere sono 240, circa
         1012. Ci sono algoritmi che lavorano con chiavi da 168 bit, come
         il Triple-DES: in questo caso il numero di chiavi possibili ha ben
         51 cifre. Si è calcolato che, con i computer più potenti realizzati
         al momento, il tempo necessario per provarle tutte è maggiore
         del tempo che rimane al Sole prima di spegnersi. (cit. [1])


         La debolezza di questo algoritmo sta nella necessità di dover
         trasmettere la chiave segreta in chiaro e nell’uso ripetuto della
         stessa: se una spia non ha intercettato la chiave durante la
         trasmissione, ha comunque molto tempo per poterla trovare.
         La riservatezza del messaggio si basa sul fatto che la chiave
         segreta è stata scambiata in un momento diverso rispetto al
         messaggio e che questa non è stata intercettata.


         Con n (grande) destinatari, avere una chiave segreta per
         ognuno di essi è impensabile, nell’ordine di O(n2), così come
         averne una condivisa tra più utenti renderebbe inutile la
         cifratura. A tale scopo sono stati realizzati gli algoritmi
         crittografici a chiave asimmetrica, o pubblica.


Fabio Pustetto    Posta elettronica sicura: X.509 e PGP       Pagina 24 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004                   www.dsi.unive.it



   3.2           Algoritmi crittografici asimmetrici

         Pubblicati per la prima volta su “Le Scienze” nel 1976 da
         Whitfield Diffie e Martin Hellman, gli algoritmi a chiave pubblica
         si basano su una coppia di chiavi: pubblica e privata. La chiave
         privata non viene mai scambiata mentre quella pubblica è nel
         nostro interesse diffonderla. Quello che si cifra con l’una lo si
         decifra con l’altra; per cifrare un testo si utilizza la chiave
         pubblica del destinatario, per firmare quella privata del
         mittente. Nel caso di cifratura:



                           Algoritmo asimmetrico              Algoritmo simmetrico

          Creazione      il destinatario genera una il destinatario genera una
            chiavi       coppia di chiavi, KU e KR. chiave.

            Invio        il destinatario invia o pubblica il destinatario invia la chiave
            chiavi       la chiave KU al mittente per al mittente per crittografare i
                         crittografare i dati.            dati.

         Crittografia il mittente utilizza la chiave il mittente utilizza la chiave
             dati     KU     con    un     algoritmo appena       ricevuta      per
                      asimmetrico per crittografare crittografare il messaggio da
                      il messaggio da inviare.       inviare.

          Invio dati     i dati cifrati vengono inviati al i dati cifrati vengono inviati al
                         destinatario. Nessuno può destinatario. Se qualcuno
                         decodificare il messaggio avesse messo le mani sulla
                         perché         solamente        il chiave        precedentemente
                         destinatario      possiede     la inviata potrebbe decodificare
                         chiave KR per farlo.               i dati.

         Decodifica      il destinatario usa la chiave il destinatario usa la chiave
            dati         KR        con        l'algoritmo con l'algoritmo simmetrico
                         asimmetrico      giusto       per giusto per decodificare i dati.
                         decodificare i dati.



         Quindi con l’uso di algoritmi crittografici asimmetrici l'unica
         chiave capace di decodificare (KR), non è mai trasmessa.
         Circola solo la chiave KU, che non permette di decodificare
         nulla! Da ciò derivano i nomi chiave pubblica (KU) e chiave
         privata (KR). (notazione da [37]).


Fabio Pustetto       Posta elettronica sicura: X.509 e PGP               Pagina 25 di 118
www.unive.it             Tesi di Laurea A. A. 2003/2004                                   www.dsi.unive.it




         Non è possibile risalire alla chiave privata data la pubblica o
         risalire al testo da crittogramma e chiave pubblica.


         La chiave di codifica KU e quella di decodifica KR vengono
         utilizzate all’interno delle rispettive funzioni E e D per
         trasformare la sequenza binaria che costituisce un messaggio M
         nel corrispondente messaggio cifrato X=E(KU,M) e M=D(KR,X).


                                   chiave pubblica                   chiave privata




                                     cifratura                         decifratura
                 testo originale                     testo cifrato                    testo in chiaro




         Gli algoritmi asimmetrici più comuni sono RSA (chiavi da 512 bit
         e 1024) e l'algoritmo di Diffie-Hellman.



                         Vantaggi                                             Svantaggi

         Non richiede trasmissione della Utilizzo di chiavi molto lunghe
         chiave segreta tra i comunicanti

         La chiave di decodifica e di firma dei Algoritmi                   complessi      e   crittografia
         messaggi è sempre la stessa.           lenta

         Crescita lineare del numero di chiavi Necessità di nascondere la chiave
         (con n utenti, O(n) chiavi)           privata nel nostro sistema



         Questo è solo un primo passo verso una comunicazione sicura
         ma non è sufficiente: se una spia genera una coppia di chiavi e
         invia la pubblica a nome nostro, c’è una falsa autenticazione. Si
         deve allora prevedere un meccanismo di firma.


Fabio Pustetto       Posta elettronica sicura: X.509 e PGP                               Pagina 26 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it



   3.3           Accenni di crittoanalisi

         L’evoluzione verso cifrari più sicuri e consistenti deriva dalla
         necessità di rendere sempre più difficile risalire al testo in
         chiaro dato il testo cifrato, senza conoscere la chiave: la
         crittoanalisi.


         Alla base di tutti gli algoritmi crittografici ci sono i cifrari
         monoalfabetici in cui si sostituisce ogni lettera del testo con
         un’altra dello stesso alfabeto: semplici e obsoleti ma ideali per
         comprendere il funzionamento.
         Violare questi cifrari è possibile con una semplice analisi statica:
            •      ricerca esaustiva (o forza bruta)
            •      proprietà statistiche del linguaggio


         La ricerca esaustiva consiste nel provare tutte le chiavi possibili.
         Nel caso di cifrari monoalfabetici a spostamento le chiavi sono
         solo 21 (alfabeto italiano): non serve ingegnarsi molto e sarà
         sufficiente provarle tutte. Con forza bruta, appunto.


         Nel caso di cifrari monoalfabetici a sostituzione in cui le lettere
         siano mappate con distanze diverse, attraverso lo studio delle
         proprietà statistiche sulla frequenze dei caratteri o sottostringhe
         (digrammi come il, al, su, … o trigrammi come nel, dal, sul, …)
         del testo cifrato si ottengono informazioni utili sul testo in
         chiaro.


         In tutti i cifrari monoalfabetici, i più semplici e facilmente
         “rompibili”, le proprietà statistiche del linguaggio vengono
         mantenute anche nel crittogramma: effettuando una semplice
         analisi statistica delle lettere contenute nel testo cifrato e


Fabio Pustetto       Posta elettronica sicura: X.509 e PGP     Pagina 27 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         confrontando i risultati con le frequenze assolute dell’alfabeto
         della lingua italiana, cercando di isolare delle coppie o terzine di
         lettere che si ripetono associandole a dei trigrammi conosciuti,
         si può ricostruire il messaggio originale.




         Come esempio si decifrari un testo abbastanza lungo (tratto da
         [36]) in cui accenti e punteggiatura sono spariti.
         FQVBZQSDUFVU A HZGESUDA ZUSQVANA QSSQ
         VZQCDACCAGFU U QSSQ RGFCUZNQMAGFU TUSS
         AFIGZDQMAGFU CGFG NURRPA LBQFVG AS SAFOBQOOAG U
         QSRBFU TUSSU CRZAVVU HAB QFVARPU Q FGA
         HUZNUFBVU A OUZGOSAIARA UOAMAQFA G S UEZQARG
         RSQCCARG DGCVZQFG CGSBMAGFA AFOUOFGCU U
         RGFVZQCVQFVA TA QSRBFA TA LBUA HZGESUDA SQ
         FGMAGFU TA ZATGFTQFMQ CUDEZQ UCCUZ CVQVQ
         QIIUZZQVQ DGSVG HZUCVG RGF QSRBFU TUSSU CBU HAB
         ADHGZVQFVA ADHSARQMAGFA RGDU TADGCVZQ QT
         UCUDHAG S AFNUFMAGFU TUSSQ CVUFGOZQIAQ Q ZGDQ
         FUS HZADG CURGSG QNQFVA RZACVG QFRPU SQ
         CBIIARAUFMQ TA BF RGTARU TA TBU CADEGSA HUZ
         ZUOACVZQZU S AFIGZDQMAGFU CUDEZQ UCCUZ CVQVQ
         RGDHZUCQ TQ OZQF VUDHG RGDU CA HBG NUTUZU TQSS
         QSIQEUVG RUSVARG GOQD Q BF QSVZG QCHUVVG TUSSQ
         VZQCDACCAGFU TUSS AFIGZDQMAGFU IB TUTARQVQ
         DGSVQ QVVUFMAGFU OAQ FUSSQ EAEEAQ SQ CUOZUVUMMQ
         TUSSQ RGDBFARQMAGFU BFG TUA HZADA RGTARA
         RAIZQVA U QVVZAEBAVG Q OABSAG RUCQZU U DGSVA


Fabio Pustetto    Posta elettronica sicura: X.509 e PGP       Pagina 28 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004              www.dsi.unive.it


         QZQEA CA TUTARQZGFG FUS RGZCG TUA CURGSA QSSG
         CVBTAG TUA RAIZQZA SU RBA QHHSARQMAGFA DASAVQZA
         CGFG UNATUFVA IB HZGHZAG FUS RGZCG TUSSU TBU
         OBUZZU DGFTAQSA RPU LBUCVG CVBTAG ZARUNUVVU BF
         OZQFTU ADHBSCG GOOA LBUCVU ZARUZRPU CGFG CVQVU
         ZAHZUCU RGF ZAFFGNQVQ SUFQ AF NACVQ TA
         ADHGZVQFVA QHHSARQMAGFA RGDDUZRAQSA U
         AFTBCVZAQSA TGNU U IGFTQDUFVQSU QCCARBZQZU SQ
         HZANQVUMMQ TUSS AFIGZDQMAGFU


         Troviamo le seguenti frequenze per ogni lettera:
          A    B   C   D   E   F   G   H   I   L M   N   O P   Q   R   S   T   U   V   Z
         133 34 55 36 12 74 96 26 16 4 20 13 19 5 107 49 71 41 123 61 68




         Le lettere con maggior frequenza risultano essere A, U, Q, G e
         così via. Come prima fase si possono associare a queste lettere
         le più frequenti corrispondenti all’alfabeto italiano, anche se una
         più accorta procedura richiederebbe lo studio di eventuali
         digrammi o trigrammi, doppie e alla posizione delle lettere nel
         testo.




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP           Pagina 29 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it




         È probabile che le frequenze portino ad associare solo poche
         lettere subito nel modo corretto, ma tanto basta per intuire il
         significato di qualche parola. Nel nostro caso i successi sono
         C=s, G=o, H=p, L=q, O=g, R=c, T=d, U=e; le altre lettere
         distano,    invece,   pochi   decimi   percentuale.    Sostituendo
         comunque tutte le lettere in modo automatico, si ottiene:
         tinmliruetne a plofreua lerinaba irri
         nlisuassaote e irri cotselbivaote derr
         atholuivaote soto beccza qmitno ar ratgmiggao e
         ircmte derre sclanne pam itnacze i toa
         pelbetmne a gelograhaca egavaita o r efliaco
         crissaco uosnlito sormvaota atgegtose e
         cotnlisnitna da ircmta da qmea plofreua ri
         tovaote da ladotditvi seufli essel snini
         ihhellini uorno plesno cot ircmte derre sme pam
         aupolnitna aupracivaota coue dauosnli id
         eseupao r atbetvaote derri snetoglihai i loui
         ter plauo secoro ibitna clasno itcze ri
         smhhacaetvi da mt codace da dme saufora pel
         legasnlile r atholuivaote seufli essel snini
         couplesi di glit neupo coue sa pmo bedele dirr
         irhifeno cernaco ogiu i mt irnlo ispenno derri
         nlisuassaote derr atholuivaote hm dedacini
         uorni innetvaote gai terri faffai ri seglenevvi
         derri coumtacivaote mto dea plaua codaca
         cahlina e innlafmano i gamrao cesile e uorna


Fabio Pustetto      Posta elettronica sicura: X.509 e PGP      Pagina 30 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it


         ilifa sa dedaciloto ter colso dea secora irro
         snmdao dea cahlila re cma ippracivaota uaranila
         soto ebadetna hm ploplao ter colso derre dme
         gmelle uotdaira cze qmesno snmdao lacebenne mt
         glitde aupmrso ogga qmesne lacelcze soto snine
         laplese cot lattobini reti at basni da
         aupolnitna ippracivaota couuelcaira e
         atdmsnlaira dobe e hotdiuetnire issacmlile ri
         plabinevvi derr atholuivaote


         che è molto poco incoraggiante ma valutando attentamente il
         testo facendo particolare attenzione alle doppie, si scopre che
         “essene” potrebbe diventare facilmente “essere” poiché r e n
         hanno frequenze simili; “ogga” potrebbe per lo stesso motivo
         diventare “oggi”, “irri” in “alla” e così via, fino ad ottenere il
         testo in chiaro:
         naturalmente i problemi relativi alla
         trasmissione e alla conservazione dell
         informazione sono vecchi quanto il linguaggio e
         alcune delle scritte piu antiche a noi
         pervenute i geroglifici egiziani o l ebraico
         classico mostrano soluzioni ingegnose e
         contrastanti di alcuni di quei problemi la
         nozione di ridondanza sembra esser stata
         afferrata molto presto con alcune delle sue piu
         importanti implicazioni come dimostra ad
         esempio l invenzione della stenografia a roma
         nel primo secolo avanti cristo anche la
         sufficienza di un codice di due simboli per
         registrare l informazione sembra esser stata
         compresa da gran tempo come si puo vedere dall
         alfabeto celtico ogam a un altro aspetto della
         trasmissione dell informazione fu dedicata
         molta attenzione gia nella bibbia la segretezza
         della comunicazione uno dei primi codici
         cifrati e attribuito a giulio cesare e molti
         arabi si dedicarono nel corso dei secoli allo
         studio dei cifrari le cui applicazioni militari
         sono evidenti fu proprio nel corso delle due
         guerre mondiali che questo studio ricevette un
         grande impulso oggi queste ricerche sono state
         riprese con rinnovata lena in vista di
         importanti applicazioni commerciali e
         industriali dove e fondamentale assicurare la
         privatezza dell informazione


Fabio Pustetto    Posta elettronica sicura: X.509 e PGP      Pagina 31 di 118
www.unive.it                 Tesi di Laurea A. A. 2003/2004                          www.dsi.unive.it




         da cui l’esatta corrispondenza del crittogramma:
         A   B       C   D   E   F   G H       I    L   M N O       P   Q R     S      T    U   V    Z
         i   u       s   m b     n   o   p     f    q   z   v   g   h   a   c    l     d    e    t   r



         Come ultima analisi si veda come lo scarto tra la frequenza di
         ogni carattere nel testo cifrato con il corrispondente nei testi in
         italiano sia contenuto:




   3.4           Hashing

         Si tratta di un algoritmo che partendo da un documento (o un
         oggetto) di qualsiasi dimensione lo elabora e lo riassume in un
         codice di dimensione fissa. Il metodo di elaborazione garantisce
         che:
                 •       se il documento (o l’oggetto) viene cambiato in
                         qualunque       sua       parte,   l’hash      cambia        con       molta
                         probabilità (in effetti può avere collisioni, improbabile)
                 •       applicato ad un documento in tempi diversi deve
                         restituire lo stesso risultato.




Fabio Pustetto           Posta elettronica sicura: X.509 e PGP                   Pagina 32 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         Possiamo pensare al codice prodotto dall'algoritmo di hashing
         come ad una impronta del documento. L’utilità dell’impronta si
         può ricondurre a 4 punti essenziali:
            •    se il documento cambia, anche solo in minima parte,
                 cambia anche l'impronta;
            •    dall'impronta non è possibile risalire al documento;
            •    consente di evitare che per la generazione della firma si
                 debba applicare l’algoritmo di cifratura all’intero testo;
            •    consente l’autenticazione, da parte di una terza parte
                 fidata, della sottoscrizione di un documento senza che
                 questa venga a conoscenza del suo contenuto;


         Questa tecnologia è principalmente utilizzata nelle firme digitali,
         per controllare se una email è stata alterata. Nella firma digitale
         è incluso l'hash del messaggio, calcolato dal mittente. Il
         destinatario, ricevuta l'email, ne calcola l'hash e lo confronta
         con quello calcolato dal mittente. Solo se i 2 hash sono uguali è
         possibile dire che l'email non è stata modificata.


         In realtà la funzione di hash è non iniettiva: si mappa un
         insieme infinito di messaggi in un insieme finito (160 bit nel
         caso di SHA-1) e ciò può portare a collisioni, nel caso in cui testi
         diversi portino ad uno stesso hash. Una buona funzione deve
         rendere minima questa eventualità.


         Per evitare che vengano modificati messaggio e impronta
         associata, l’hash viene cifrato con la chiave privata del mittente.
         L'hash è quindi protetto e può essere rigenerato solo dal vero
         mittente dell'email.




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP        Pagina 33 di 118
www.unive.it              Tesi di Laurea A. A. 2003/2004                               www.dsi.unive.it



         L’uso di algoritmi di hash non permette la falsificazione dei
         certificati digitali. In ogni certificato è incluso l'hash calcolato
         dall'autorità di certificazione che lo ha emesso. Qualsiasi
         modifica al certificato sarebbe immediatamente scoperta.


         Attualmente vengono utilizzati principalmente 3 algoritmi: MD2
         [11], MD4 [34], MD5 [12] a 128 bit. Una variante potenziata
         dell’algoritmo MD5 è l’algoritmo SHA-1 [18], sviluppato nel
         1993 presso il NIST (National Institute of Standards and
         Technology), che produce un codice a 160 bit.


   3.5           Firma

         Attraverso gli algoritmi a chiave pubblica si può effettuare
         anche un’operazione di firma digitale del messaggio: si
         utilizzano le chiavi inversamente alla cifratura, ossia la chiave
         privata per firmare e quella pubblica per verificarne la validità.


                                   chiave privata                   chiave pubblica




                                        firma
                 testo originale                    testo firmato                 testo verificato

                                                                       verifica




         Tale operazione permette ad un destinatario di verificare
         l’autenticità delle informazioni originate dal mittente; inoltre si
         ha modo di verificare che le informazioni non siano state
         modificate durante il percorso di consegna.



Fabio Pustetto       Posta elettronica sicura: X.509 e PGP                            Pagina 34 di 118
www.unive.it             Tesi di Laurea A. A. 2003/2004                   www.dsi.unive.it




                    Chiave privata                         Chiave pubblica

         è conosciuta solo dal titolare        è pubblicamente nota e distribuita

         per apporre la firma digitale su un per verificare la firma digitale
         documento o messaggio informatico apposta sul documento dal titolare
                                             delle chiavi

         per decifrare il documento o per cifrare un documento che andrà
         messaggio cifrato in precedenza con decifrato con relativa chiave privata
         la chiave pubblica corrispondente


   3.6           Come funziona in realtà

         Il sistema di firma digitale a chiave pubblica descritto in
         precedenza ha degli inconvenienti: è lento e produce una
         quantità di dati pari al doppio della dimensione del testo.
         Vediamo come si risolvono i due problemi nei due casi distinti di
         cifratura (senza firma) e firma (senza cifratura).


         Il problema della lentezza è dovuto alla cifratura con algoritmi
         asimmetrici che perciò vengono utilizzati solo per cifrare una
         terza chiave generata casualmente (chiave di sessione), e
         utilizzata da un algoritmo simmetrico più veloce e semplice che
         cifra tutto il messaggio.




             il testo è cifrato con
              la chiave di sessione




                                          chiave di sessione cifrata
                                            con la chiave pubblica

                                                       testo cifrato +
                                                  chiave di sessione cifrata




Fabio Pustetto       Posta elettronica sicura: X.509 e PGP               Pagina 35 di 118
www.unive.it              Tesi di Laurea A. A. 2003/2004                          www.dsi.unive.it



         Solamente il destinatario può accedere ai dati, poichè
         solamente egli possiede la chiave privata per accedere alla
         chiave intermedia, necessaria a sua volta per decrittografare i
         dati.


                                    chiave di sessione         chiave di sessione decifrata
            messaggio cifrato            cifrata                   con la chiave privata




                                      testo cifrato
                                                            chiave di sessione usata     testo originale
                                                             per decifrare il testo         in chiaro




         Il problema della dimensione, invece, è risolto proprio dall’uso
         di una funzione di hash: la firma non sarà applicata all’intero
         testo ma solo all’impronta ricavata.




                                            funzione di hash




            testo
           originale
                                                         riassunto firmato con
                                                            la chiave privata




                            sintesi del messaggio
                                                                                   testo originale +
                                                                                        firma




                                               chiave privata
                                             usata per firmare




Fabio Pustetto         Posta elettronica sicura: X.509 e PGP                     Pagina 36 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004        www.dsi.unive.it




   4             GESTIONE DELLE
                 CHIAVI




     “La funzione di una postazione forte è rendere le
        forze presidiate praticamente inattaccabili”
                                          On War, Carl Von Clausewitz




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP   Pagina 37 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004                www.dsi.unive.it




         Da questo capitolo si cominceranno a delineare le differenze tra
         certificati   X.509     e   PGP,      oggetto   della      tesi     (discussi
         approfonditamente nei capitoli 5 e 6): dalla generazione alle
         gestione delle chiavi, dalla richiesta alla gestione di certificati.


         Una chiave è un valore con cui un algoritmo cifra un oggetto.
         La dimensione si misura in bit e tanto più grande è la chiave,
         tanto più sicuro sarà il testo cifrato, ma anche più lenta sarà la
         computazione. Mediamente si propongono 4 tipi di dimensioni
         come compromesso tra sicurezza e velocità:
             •   Casual grade: (348 bit) facilmente violabile
             •   Low Commercial Grade: (512) bit possibilmente violabile
                 ma ancora veloce computazionalmente
             •   High Commercial Grade: (768) difficilmente violabile
             •   Military       Grade:        (1024)     ritenuta          inviolabile,
                 computazionalmente intrattabile.


         La certificazione della chiave serve ad attestarne la validità e la
         corrispondenza col proprietario. PGP e X.509 utilizzano due
         modelli differenti:
             •   horizontal trusting: fiducia reciproca tra firmatari (PGP);
             •   hierarchical     trusting:     infrastruttura   gerarchica         di
                 certificazione, la Public Key Infrastructure (X.509)


         Un certificato digitale può allora essere inteso come un
         contenitore che lega chiave pubblica al proprietario:
             •   chiave pubblica
             •   informazioni sul soggetto
             •   una o più firme digitali




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP             Pagina 38 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it



         La chiave privata, non essendo mai condivisa, non richiede un
         contenitore, ma deve essere archiviata in modo sicuro, magari
         protetta con password.
         Le firme digitali annesse certificano che le informazioni
         contenute sono attestate dal firmatario (altro soggetto o
         autorità).


   4.1           Distribuzione di certificati

         Come detto, lo scopo principale dei certificati digitali è quello di
         far corrispondere ai dati personali del soggetto, la sua chiave
         pubblica, indispensabile per ricevere messaggi crittografati e
         per permettere la verifica della nostra firma digitale a chi la
         riceve. Per questo motivo la distribuzione capillare dei certificati
         è importantissima e, a differenza di quanto avviene con la
         crittografia simmetrica, non è necessario un canale sicuro.


         In questo senso, la distribuzione può avvenire:
            •     manualmente (scambio di email, dischetti, …)
            •     tramite infrastrutture dedicate (Key Server, …)

   4.1.1 Certificate Server

         Server di certificati sono dei semplici contenitori online di
         certificati digitali; permettono di inserire o scaricare e la loro
         architettura è spesso basata su Directory Server LDAP
         (Lightweight     Directory   Access   Protocol,    vedi    glossario),
         piuttosto che su database relazionali.


         I directory server LDAP (qualche esempio in [26]) privilegiano
         la velocità di ricerca e prevedono linguaggio di interrogazione
         molto semplice; sono un’ottima scelta quando le letture sono


Fabio Pustetto      Posta elettronica sicura: X.509 e PGP      Pagina 39 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004           www.dsi.unive.it



         prevedibilmente più frequenti delle scritture e i dati in esso
         contenuti non variano di frequente.


         I Certificate Server sono spesso orientati a fornire ulteriori
         servizi a garanzia della security policies delle aziende, come
         accettare solo chiavi che rispondano a determinati requisiti.

   4.1.2 Keyserver

         Usato dagli utenti PGP, ha funzionalità molto simili a quelle di
         un Certificate Server. È un punto di raccolta e distribuzioni di
         chiavi pubbliche. Riceve le chiavi pubbliche da parte degli utenti
         PGP e le inserisce nel proprio database.


         Quando riceve una richiesta, invece, il server consulta il suo
         database e, se presente, restituisce la chiave pubblica trovata.
         Il keyserver fornisce agli utenti un indice; utilizza nomi e
         indirizzi email per ritrovare le chiavi desiderate cosicché
         chiunque possa firmare la nostra chiave pubblica presente nel
         keyserver modificando la fiducia ad essa associata.


         Naturalmente è possibile creare keyserver privati (tramite
         l’apposito software PGP Keyserver Enterprise Edition Version)
         per una ristretta selezione di utenti ma è altresì opportuno
         pubblicare la propria chiave su keyserver conosciuti e
         facilmente individuabili (keyservers pgp sono in [26]).


   4.2           Revoca di Certificati Digitali

         Come i documenti d’identità rilasciati dal nostro comune, anche
         i certificati digitali hanno una scadenza. Per sapere se un
         certificato è ancora valido bisogna verificarne il termine


Fabio Pustetto     Posta elettronica sicura: X.509 e PGP       Pagina 40 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         temporale. Tuttavia certificati ancora “giovani”, potrebbero
         esser stati revocati per svariati motivi (chiave segreta o
         certificato dell’utente compromessi, l’utente non è più certificato
         dalla CA, …). Per tali verifiche si hanno a disposizione :
            •    Certificate Revocation Lists (CRL)
            •    Online Certificate Status Protocol (OCSP)


         In PGP, invece, affinché un utente possa revocare una coppia di
         chiavi, è necessario che il possessore distribuisca un “Key
         Revocation Certificate” firmato da egli stesso. Questo certificato
         ha la stessa forma di una normale firma ma include un
         indicatore che specifica lo scopo di questo certificato: revocare
         l’uso della chiave pubblica allegata. Naturalmente sarà cura del
         possessore disseminare tale certificato il più rapidamente e
         diffusamente possibile.

   4.2.1 Certificate Revocation List (CRL)

         Le CA pubblicano un elenco di revoche di certificati (CRL)
         contenente i certificati che non devono più essere utilizzati
         anche se non ancora scaduti. Quante più voci sono contenute in
         un CRL, tanto più lungo sarà l'elenco e maggiore il tempo
         necessario per scaricarlo. Spesso le liste CRL possono risultare
         particolarmente pesanti a causa del gran numero di revoche
         unito alla bassa frequenza con cui vengono le liste.


         Il procedimento di ricerca all’interno delle CRL e' simile
         all’analisi di un tabulato. Il metodo di elaborazione delle CRL
         può inoltre richiedere alle società la configurazione dei propri pc
         client perché elaborino le CRL provenienti da diverse CA. Ogni
         CRL è firmata dalla CA e include, oltre alla lista di revoche, il



Fabio Pustetto     Posta elettronica sicura: X.509 e PGP      Pagina 41 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it



         proprio nome, la data di creazione della lista e la prossima
         pubblicazione.




         Ciascuna distribuzione di CRL influisce sull’ampiezza di banda
         della rete e sulla potenza di elaborazione del client. Infine,
         possono essere necessari diversi giorni per ricevere notifica di
         un certificato revocato, aumentando la possibilità di una falla
         nella sicurezza.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP    Pagina 42 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it




   4.2.2 Online Certificate Status Protocol (OCSP)

         OCSP è lo standard emergente dell’IETF (Internet Engineering
         Task Force). Comunica on line agli utenti la situazione dei
         certificati in tempo reale, ne consegue una maggiore velocità
         rispetto al sistema CRL, senza le stesse preoccupazioni
         logistiche, sul carico di elaborazione e sui tempi di notifica.


         Per controllare immediatamente le revoche, un’applicazione
         client di un’organizzazione forma una richiesta e la invia a un
         OCSP responder, cioè un’applicazione server in rete che
         raccoglie le informazioni aggiornate sulle revoche.


         Il responder replica con uno dei tre messaggi sulla validità di un
         certificato:
            •     GOOD
            •     REVOKED
                    o Revocation Time
                    o Revocation Reason
            •     UNKNOWN


         La richiesta OCSP e' indipendente dal protocollo utilizzato,
         sebbene        quello   HTTP   (HyperText    Transport     Protocol)
         rappresenti l’approccio più comune.


   4.3           Public Key Infrastructure (PKI)

         Il termine infrastruttura a chiave pubblica (PKI, Public Key
         Infrastructure) è utilizzato per descrivere software, criteri e




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP       Pagina 43 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004              www.dsi.unive.it



         standard che consentono di disciplinare e gestire i certificati e le
         chiavi pubbliche e private. Complessivamente si occupa di:
            •    Identificare il firmatario e gli eventuali compiti
            •    Garantire unicità delle firme
            •    Mantenere registro dei possessori delle chiavi
            •    Gestire chiavi a rischio, revocate o sospese
            •    Rendere noti i certificati non più validi
            •    Agire da terza parte fidata per distribuire le chiavi
                 pubbliche


         PKI, quindi, integra le funzionalità dei server di certificati, con
         ulteriori servizi e protocolli per la gestione delle chiavi
         pubbliche:
            •    emissione
            •    distribuzione
            •    revoca
            •    validazione


         Un'incomprensione       comune     porta   spesso    a    considerare
         l'infrastruttura a chiave pubblica come un'entità fisica, e non
         come funzionalità. La PKI è costituita da un gruppo di
         componenti distinti che interagiscono per consentire agli utenti
         l'utilizzo semplice e lineare delle chiavi pubbliche e della
         crittografia a chiave pubblica.


         A tale scopo PKI è costituita da tre entità:
            •    Registration Autority (RA)
            •    Certification Autority (CA)
            •    Certificate Server (CS)




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP          Pagina 44 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004                 www.dsi.unive.it



         RA è un’interazione tra entità umane (una persona, un gruppo
         o un dipartimento), processi e strumenti usati per provvedere
         alla verifica degli utenti, relative chiavi e registrazione degli
         stessi alla PKI (iscrizione).


         CA è spesso costituito solamente da un software che crea un
         certificato digitale e lo firma digitalmente con la propria chiave
         privata. Utilizzando la relativa chiave pubblica, chiunque può
         verificare se un certificato digitale è autentico, integro, a chi
         appartiene e da quale autorità di certificazione è garantito.


         PKI possono essere organizzate in modo da soddisfare al meglio
         le esigenze specifiche di un'azienda:
            •    CA autonoma (standalone): la chiave principale e i
                 certificati di un'organizzazione sono gestiti da terze parti
                 responsabili del rilascio e della revoca di tutti i certificati
                 per gli utenti
                    o Esempio: certificati rilasciati da CA commerciali
                        come Verisign, Thawte o altre ma anche studi
                        legali, banche e altre organizzazioni alle quali si
                        riconosce un’autorità per il rilascio di certificati.
                    o Pro:        relazioni   di   fiducia   sia   all’interno   che
                        all’esterno      dell’organizzazione.      Riduzione     del
                        carico di lavoro per la gestione dei certificati
                        (emissione, mantenimento, revoca).
                    o Contro: Fiducia totale tra azienda ed entità di
                        certificazione. Costo per ogni certificato emesso.
            •    CA globale (enterprise): l'azienda stessa funge da
                 autorità di certificazione per il rilascio e la revoca dei
                 propri certificati in base ai requisiti aziendali




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP             Pagina 45 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004               www.dsi.unive.it



                    o Esempio:        controllare     accesso      alle   risorse
                        attraverso i certificati: ogni dipendente potrà
                        accedere alle infrastrutture anche dall’estero.
                    o Pro: nessun costo verso altre entità. Controllo
                        totali dei possessori del certificato (solo utenti
                        noti) e della policy.
                    o Contro: carico di lavoro per il mantenimento dei
                        certificati e dell’infrastruttura.
            •    Combinazione di CA: La disponibilità di una CA principale
                 autonoma consente lo scambio di dati con partner e
                 clienti senza che questi debbano accedere direttamente
                 alla PKI, mentre la disponibilità di CA subordinate
                 consente di mantenere il controllo sul rilascio e la revoca
                 dei certificati all'interno dell'organizzazione
                    o Esempio: impiegati ricevono certificati dalla CA di
                        reparto, collaboratori esterni dalla rispettiva CA,
                        clienti e partner da una CA commerciale.
                    o Pro: massima flessibilità, si sfruttano i vantaggi di
                        entrambi i modelli. Si presta alla gerarchia di CA.
                    o Contro: si deve comunque mantenere una propria
                        infrastruttura.


         Le CA possono essere organizzate in modo gerarchico: una CA
         principale emette certificati per delle autorità intermedie che a
         loro volta emetteranno certificati per entità finali (utenti) o per
         altre infrastrutture.




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP           Pagina 46 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004             www.dsi.unive.it




         Il sistema operativo rappresenta la posizione più appropriata
         per l'implementazione di un'infrastruttura PKI. I sistemi
         operativi ospitano normalmente numerose infrastrutture come
         quella di stampa (per l'invio dei documenti alla stampante) e
         quella per il servizio di gestione dei file (per il recupero dei file
         dalle aree di memorizzazione condivise). In entrambi gli
         esempi, il sistema operativo rende disponibile una funzionalità
         per l'utilizzo semplice e trasparente di un servizio di rete,
         proprio come nel caso della PKI.


         Windows e Unix/Linux offrono notevoli possibilità per la
         configurazione di PKI.
         Nelle versioni di Windows professionali (NT, XP Professional,
         2000 Server, 2003 Server) ci sono funzionalità integrate come il
         server ISS (Internet Information Services), Active Directory™ e
         l'area di lavoro MMC (Microsoft Management Console).


         L'infrastruttura PKI di Windows 2000 si basa su quattro
         elementi cardine (come definito in [22]):



Fabio Pustetto    Posta elettronica sicura: X.509 e PGP        Pagina 47 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



            •    Interoperabilità: supporto dello scambio di messaggi,
                 certificati e servizi con altri componenti standard PKI
                    o Si supportano standard aperti e indipendenti dal
                        produttore, spesso definiti da enti quali W3C o
                        IETF.
            •    Sicurezza: garantita sia da algoritmi di protezione e
                 procedure affidabili
                    o Componenti inaffidabili in PKI possono creare più
                        danni della mancanza dell’infrastruttura stessa.
                    o Algoritmi affidabili, sicuri e conosciuti come RSA,
                        MD5 e SHA-1 per crittografia e firma, ma anche
                        SSL o IPSec per le comunicazioni.
            •    Flessibilità: possibilità di configurare la PKI in modo da
                 soddisfare al meglio le esigenze organizzative specifiche
                 di un'azienda con un impegno minimo
                    o Modelli di CA autonoma e globale, riduzione dei
                        costi e maggiore protezione in base alle esigenze.
            •    Semplicità di utilizzo per amministratori di PKI, utenti
                 finali che ricevono e utilizzano i certificati e sviluppatori
                 che creano applicazioni abilitate all'uso della PKI
                    o componenti incorporati nella piattaforma, il più
                        possiblile automatici e integrati con gli altri
                        strumenti utilizati da utenti e amministratori.


         Linux si basa su pacchetti di terze parti da installare. Ci sono
         vari progetti in corso, tra i quali ElyCA [30] e OpenCA [32].


         Entrambi i progetti si basano su altri pacchetti necessari:
            •    Apache: il web server più famoso e l’estensione per la
                 sicurezza ApacheSSL (vedi [29])
            •    OpenSSL: toolkit crittografico (vedi [33])


Fabio Pustetto     Posta elettronica sicura: X.509 e PGP       Pagina 48 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it




         I Certificati Digitali possono avere credenziali molto elevate se
         rilasciati e firmati da CA di nota autorevolezza; se oltretutto
         sono iscritte nell’apposito elenco pubblico mantenuto dalla
         CNIPA (Centro Nazionale per l’Informatica nella Pubblica
         Amministrazione), tali certificati hanno validità legale (vedi §1.1
         e [5]). I certificati X.509 vengono rilasciati dalle PKI.


   4.4           Web of Trust (WoT)

         Usato solitamente da PGP, Web of Trust (Rete di Fiducia) è un
         termine usato per descrivere le relazioni di fiducia esistenti tra
         un gruppo di chiavi, secondo il modello “horizontal trusting”,
         senza avere una catena di certificazione gerarchica in cui si
         deve conoscere ogni singolo emettitore ma una cooperazione
         orizzontale tra gli stessi utenti dell’applicazione. Questo è
         necessario in progetti come PGP, appunto, nei quali i certificati
         vengono emessi dal possessore stesso e non da un’autorità
         fidata.


         Come per PKI con i certificati X.509, WoT si prefigge lo scopo di
         risolvere il problema di autenticazione della chiave pubblica,
         quindi il legame con il relativo nome utente: devo verificare la
         firma di una email ricevuta, necessito della chiave pubblica del
         mittente, ma come posso essere sicuro che sia veramente sua?


         Per verificare l’autenticità della chiave pubblica del mittente, le
         alternative sono:
         1. Chiedo conferma della chiave pubblica per telefono,
               supponendo di conoscere la sua voce;




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP        Pagina 49 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004       www.dsi.unive.it



         2. Lo incontro, verifico i suoi documenti e confronto la stringa
               (magari in un altro stato…);
         3. Confronto la chiave in mio possesso con la chiave
               autenticata in possesso di un altro utente.


         Spesso l’unica alternativa possibile è la 3, ed è su questa che si
         basa il concetto di Web of Trust.


         La firma su una chiave rappresenta un collegamento nella rete
         della fiducia. Questi collegamenti sono chiamati percorsi di
         fiducia e possono essere bidirezionali o a senso unico. La rete
         della fiducia ideale è quella in cui ogni persona è connessa ad
         ogni altra in modo bidirezionale, così che ognuno abbia la
         fiducia che ogni chiave appartenga veramente al proprio
         proprietario. La rete della fiducia può essere pensata come la
         somma dei percorsi di fiducia, o collegamenti, tra tutti i
         proprietari delle chiavi.



                                          A

                 E                                            B



                            D                            C



         Un grafo simile rappresenta i legami tra le chiavi degli utenti A,
         B, C, D, E. Un arco da A a B rappresenta la firma dell’utente A
         sulla chiave pubblica di B. In questo caso l’utente A può fidarsi



Fabio Pustetto       Posta elettronica sicura: X.509 e PGP   Pagina 50 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it



         della chiave pubblica B poiché conosce C che ne ha autenticato
         la chiave.


         Ogni chiave valida in possesso dell’utente A può autenticata da
         egli stesso o da qualcun altro; ogni chiave non valida non può
         essere un certificatore fidato per altre chiavi.


         Esistono progetti sperimentali che consentono di generare grafi
         simili; uno di essi è Graphviz (AT&T Labs-Research, [10]).

   4.4.1 Signing party: un esempio

         (tratto da [3])
         Un key signing party è una riunione di persone che usano il
         sistema di crittografia PGP, durante la quale ogni partecipante
         ha la possibilità di firmare la chiave degli altri. I key signing
         party aiutano in modo consistente a estendere la propria rete
         della fiducia, inoltre offrono un'opportunità per discutere di
         questioni sociali e politiche che riguardano la crittografia forte,
         la sovranità e le libertà individuali, dell'implementazione di
         tecnologie crittografiche, o perfino degli sviluppi futuri del
         software libero per la crittografia.


         Poniamo che Alice e Bob creino delle chiavi PGP e organizzino
         un key signing party. Durante il party, Alice e Bob verificano
         ognuno le chiavi dell'altro e successivamente le firmano. Poiché
         PGP firma automaticamente le chiavi pubbliche che genera
         usando la chiave privata associata, Alice e Bob avranno almeno
         due firme che indicano che la chiave appartiene veramente a
         loro: la chiave di Alice è stata firmata da Alice stessa e da Bob,
         così pure per la chiave di Bob. In seguito Alice e Bob conoscono



Fabio Pustetto    Posta elettronica sicura: X.509 e PGP       Pagina 51 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it



         Cathy, che genera un paio di chiavi e spedisce la propria chiave
         pubblica ad Alice e Bob. Alice però non vuole che Bob
         comunichi con Cathy in modo cifrato, così crea una chiave con il
         nome di Cathy e la spedisce a Bob. Bob riceve così due chiavi
         che portano entrambe il nome di Cathy e la firma della chiave
         privata di Cathy, ma non sa quale delle due è veramente la
         chiave di Cathy. Cathy scopre che Bob ha ricevuto due chiavi,
         sospetta subito di Alice e decide di vendicarsi; per farlo, manda
         a Bob una finta e-mail a nome di Alice comunicandogli di aver
         generato una nuova coppia di chiavi e includendo la "nuova"
         chiave di Alice (che in realtà è una falsa chiave generata da
         Cathy). Ma Bob scopre subito che si tratta di un trucco, visto
         che una delle due chiavi di Alice che possiede è stata firmata da
         più persone (Alice e Bob), confermando che essa appartiene
         davvero ad Alice, mentre l'altra chiave (la falsa chiave creata da
         Cathy) ha solo una firma.


         L'esempio mostra i concetti base della firma delle chiavi e la sua
         importanza: Cathy non è riuscita a introdurre una falsa chiave
         di Alice, grazie alle interconnessioni esistenti tra Bob e Alice
         nella loro rete della fiducia.
         Tuttavia, firme e reti della fiducia non garantiscono chiavi di cui
         ci si possa fidare ciecamente. Ad esempio, supponiamo che
         quando Bob e Alice hanno conosciuto Cathy fosse presente
         anche Donald, un amico di Cathy. Donald potrebbe aver
         generato una coppia di false chiavi di Alice e Bob, potrebbe
         aver firmato ognuna delle due chiavi con quella dell'altro, oltre
         che con la propria chiave, in modo che ogni chiave contenesse
         tre firme, e potrebbe aver spedito le chiavi a Cathy. Cathy ora si
         troverebbe di fronte un gruppo di chiavi e di firme tutte "false":
         come potrebbe usare il meccanismo della firma per proteggersi


Fabio Pustetto    Posta elettronica sicura: X.509 e PGP       Pagina 52 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004           www.dsi.unive.it



         da questo tipo di attacchi? Supponiamo che tutte le persone
         coinvolte scambino le chiavi attraverso un keyserver. Se Cathy
         cercasse le chiavi di Alice e Bob sul keyserver, troverebbe due
         paia di chiavi per Alice e Bob, ma se Alice e Bob avessero
         raccolto venti firme durante un key signing party, è ovvio che
         Cathy si fiderebbe di più delle chiavi firmate venti volte,
         piuttosto che di quelle firmate solo tre volte. Inoltre, Cathy
         potrebbe ricavare altre informazioni riguardanti le venti chiavi
         usate per le firme, ad esempio le loro date di generazione,
         ricostruendo così la rete di fiducia che lega le chiavi.
         Probabilmente le chiavi usate per apporre le firme durante il
         party saranno state a loro volta firmate con altre chiavi, quasi
         sicuramente avranno date di generazione molto diverse. Di
         certo non sarebbe così se Donald avesse generato venti false
         chiavi e le avesse usate per creare una falsa rete della fiducia.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP       Pagina 53 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it




   5             X.509




          “I problemi significativi che ci troviamo ad
      affrontare, non possono essere risolti utilizzando
     un livello di pensiero pari a quello che li ha ideati”
                                                         Albert Einstein




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP     Pagina 54 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it




         Lo standard per eccellenza nella certificazione digitale è senza
         dubbio X.509, riconosciuto legalmente anche all’estero. A
         questo, però, si aggiunge lo standard PGP che così non fornisce
         solo uno strumento crittografico ma anche una certificazione
         completa, efficiente e facile da gestire.


         È importante ricordare che questo elaborato si concentra sulle
         problematiche dello scambio di messaggi via email. Gli standard
         presentati, perciò devono essere in grado di proporre una
         soluzione al problema, compatibilmente allo standard S/MIME
         (Secure/Multipurpose Internet Mail Standard).


   5.1           X.509 Certificate Format

         Standard di riferimento definito dall’ITU-T, è una parte delle
         specifiche X.500 che definiscono un Directory Service. X.509
         definisce la struttura per i servizi di autenticazione tramite
         X.500 che funge da deposito dei certificati a chiave pubblica,
         basandosi su PKI.


         Nato nel 1988, rivisto nel 1993 e nell’odierno X.509v3 del 1995,
         per essere utilizzato da qualsiasi applicazione, in realtà oggi
         ogni azienda ha la propria estensione di X.509 infatti uno dei
         punti di forza della versione 3 di X.509 è la possibilità di
         modificare la policy di sicurezza dei certificati aggiungendo dei
         campi a quelli standard: per un’azienda potrebbe essere
         necessario certificare (oltre alle informazioni di default) anche il
         reparto in cui l’utente lavora e il ruolo svolto all’interno di esso.




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP        Pagina 55 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004           www.dsi.unive.it



         Questi certificati richiedono che qualcuno attesti in modo
         inequivocabile la corrispondenza tra la chiave pubblica e le
         informazioni contenute. L’unica entità in grado di apporre la
         propria firma è l’Autorità di Certificazione che ha emesso il
         certificato (che a sua volta può essere stata certificata da
         un’altra CA, in accordo alla gerarchia PKI precedentemente
         illustrata).


         Solitamente vengono emessi quattro tipi di certificati X.509:
            •    Precaricati di una Autorità di Certificazione. Alcuni di
                 questi certificati sono precaricati nei browser, cosicché si
                 possano riconoscere in modo automatico e trasparente
                 tutti i certificati emessi dalle CA più importanti. Quando
                 qualcuno       riceve   un’informazione   firmata    con    un
                 certificato deve solo verificare la firma della CA che ha
                 emesso il certificato per fidarsi dei dati contenuti nel
                 certificato;
            •    Server di un sito (www, ftp, ecc.). Questo certificato
                 viene emesso per garantire che il server, che sta
                 “mostrando” quel certificato, è il server di un particolare
                 sito; questo tipo di certificati è particolarmente utile per il
                 commercio elettronico, il cliente vuole essere certo di
                 rivolgersi ad un particolare server, il certificato lo
                 garantisce in questo senso;
            •    Personali, contenenti quindi informazioni quali nome,
                 cognome, indirizzo, casella e-mail, ecc.; possono essere
                 utilizzati per garantire la provenienza di una e-mail, per
                 inviare un numero di carta di credito, ecc.
            •    Software, per garantire l'autenticità della provenienza del
                 software, specialmente se questo viene distribuito in
                 Rete.


Fabio Pustetto     Posta elettronica sicura: X.509 e PGP         Pagina 56 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004                 www.dsi.unive.it




         Lo standard X.509v3 prevede i seguenti campi:



                  nome campo                            descrizione

                    Versione            Attualmente l’ultima versione è la 3

               numero seriale del       intero,     unico   all’interno    della    CA
                  certificato           distributrice

                identificatore          algoritmo usato per firmare il certificato
           dell’algoritmo di firma      con vari parametri
                    usato

           nome del certificatore       nome X.500 della CA che ha creato e
                                        firmato il certificato

           periodo di validità del      inizio e fine della validità temporale del
                 certificato            certificato

            nome del possessore         il nome al quale il certificato appartiene e
                                        lega la chiave pubblica contenuta

               chiave pubblica del      chiave pubblica, algoritmo         usato    ed
                   possessore           eventuali parametri

         bit identificatore unico del   opzionale, per identificare unicamente la
                 certificatore          CA emittente nel caso in cui il nome sia
                                        usato per altre entità

         bit identificatore unico del   opzionale, per identificare unicamente il
                 possessore             possessore nel caso in cui il nome sia usato
                                        per altre entità

                   Estensioni           Uno o più campi, previsti dalla versione 3

               Firma digitale del       protegge tutti gli altri campi del certificato;
                  certificatore         contiene l’hash costituito su di essi
                                        crittografato con la chiave provata della
                                        CA. Include anche l’identificativo degli
                                        algoritmi usati




Fabio Pustetto      Posta elettronica sicura: X.509 e PGP            Pagina 57 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it




         Lo standard definisce tale notazione per definire un certificato:
         CA<<A>> = CA {V, SN, AI, CA, TA, A, AP}


         Dove:
            •    Y<<X>> significa che il certificato dell’utente X è stato
                 emesso da Y,
            •    Y{I} è la firma di I per Y. Consiste di I con il suo hash
                 code cifrato.


         Questo è il tipico approccio di firma digitale:




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP     Pagina 58 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004                  www.dsi.unive.it



   5.1.1 Standard PKCS

         I PKCS (Public-Key Cryptography Standard) sono un insieme di
         standard sviluppati dai Laboratori RSA in cooperazione con gli
         sviluppatori mondiali di sistemi sicuri, allo scopo di accelerare
         l'impiego     di   crittografia   a     chiave     pubblica.      Inizialmente
         pubblicati nel 1991, sono diventati ampiamente riferiti ed
         implementati. Gli standard attualmente pubblicati sono PKCS
         #1, #3, #5, #7, #8, #9, #10, #11, #12 e #15; PKCS #13 e
         #14 sono attualmente in sviluppo.
         Gli standard della crittografia a chiave pubblica sono i seguenti:
            •    PKCS#1: standard per la crittografia RSA;
            •    PKCS#2: incorporato in PKCS #1;
            •    PKCS#3: standard per l'accordo su chiavi di Diffie-
                 Hellman;
            •    PKCS#4: incorporato in PKCS #1;
            •    PKCS#5: standard per crittografia basata su password;
            •    PKCS#6: standard per la sintassi dei certificati estesi
                 (sostituito da X.509 v3);
            •    PKCS#7: standard          per     la     sintassi   dei     messaggi
                 crittografici;
            •    PKCS#8: standard per la sintassi di informazioni di chiavi
                 private;
            •    PKCS#9: tipi degli attributi selezionati usati nei PKCS;
            •    PKCS#10: standard per la sintassi delle richieste di
                 certificazione;
            •    PKCS#11:         standard       per    l'interfaccia      dei   token
                 crittografici;
            •    PKCS#12: standard per la sintassi dello scambio di
                 informazioni personali;




Fabio Pustetto       Posta elettronica sicura: X.509 e PGP              Pagina 59 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it



            •    PKCS#13: standard per la crittografia basata su curve
                 ellittiche;
            •    PKCS#14: standard per la generazione di numeri
                 pseudo-casuali;
            •    PKCS#15: standard del formato delle informazioni di
                 token crittografici.


         PKCS lascia ampio spazio per future espansioni. La maggior
         parte degli oggetti definiti dal PKCS hanno un numero di
         versione per permettere la compatibilità con le revisioni future.
         Diversi oggetti hanno anche spazio per attributi arbitrari che
         portano informazioni addizionali non direttamente indirizzate dal
         PKCS. Gli standard PKCS #6 e #9 sono citati nella normativa
         che definisce il formato dei certificati [5].


         Lo standard dei certificati PKCS#6 descrive una sintassi per i
         certificati estesi. Un certificato esteso consiste di un certificato
         X.509 a chiave pubblica e un insieme di attributi, firmati
         dall'emittente del certificato X.509 a chiave pubblica. Gli
         attributi e i certificati a chiave pubblica X.509 inclusi possono
         essere verificati con una singola operazione a chiave pubblica, e
         se necessario, un certificato ordinario X.509 può essere estratto
         (ad esempio per Privacy-Enhanced Mail (PEM)). Lo scopo di
         includere un insieme di attributi è di estendere il processo di
         certificazione non solo alla chiave ma certificare anche altre
         informazioni su di un dato utente, come l'indirizzo di posta
         elettronica. Una lista, anche se non completa, di attributi è data
         in PKCS#9.


         Lo standard PKCS#9 definisce i tipi di attributi selezionati da
         usare nei certificati estesi, definiti da PKCS#6, nei messaggi con


Fabio Pustetto     Posta elettronica sicura: X.509 e PGP      Pagina 60 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004             www.dsi.unive.it



         firma digitale, definiti da PKCS#7 e nelle informazioni della
         chiave privata, definite da PKCS#8. Ognuno di questi attributi
         contiene un tipo di attributo (specificato dall'oggetto da
         identificare) e uno o più valori dell'attributo.
         Lo standard PKCS#6 è stato sostituito dallo standard dei
         certificati X.509 versione 3.

   5.1.2 La versione 4

         Attualmente è presente anche la versione X.509v4 ma non è
         ancora diffusa quanto la versione 3. Differisce da essa in alcune
         scelte.     Nella   v3     tutte   le   informazioni   aggiuntive   che
         eventualmente una CA vuole inserire sono salvate nel certificato
         stesso mentre in v4 in un certificato di attributo.


         Un certificato di attributo è associato ad un individuo per mezzo
         del certificato X.509 in suo possesso e contiene uno o più
         attributi aggiuntivi. Sono rilasciati dalle AA (Attribute Authority)
         e usate dal soggetto per dimostrare il possesso di un attributo e
         dai server per concedere autorizzazioni.


   5.2           Come si ottiene un nuovo certificato

         Esistono 3 possibili approcci:
            •      Autocertificazione
                      o L’utente genera la propria coppia di chiavi e firma
                          da se i certificati che produce, certificando se
                          stesso.
            •      Certification Authority esterna
                      o Una qualsiasi CA commerciale, possibilmente
                          legalmente riconosciuta, alla quale richiedere
                          l’emissione di un nuovo certificato


Fabio Pustetto       Posta elettronica sicura: X.509 e PGP         Pagina 61 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004             www.dsi.unive.it



            •    Certification Authority interna
                    o Usato in ambito aziendale: la nostra azienda
                        funge da CA ed emette certificati per i propri
                        dipendenti. La richiesta di un nuovo certificato
                        può ricalcare la procedura che si fa con una CA
                        esterna


         Se ci affidiamo ad una CA esterna (come Thawte [1] o VeriSign
         [2]), accedendo al loro sito web, il browser genera casualmente
         una coppia di chiavi e ne invia una, la pubblica, all’autorità di
         certificazione.
         In alterativa si deve produrre una richiesta di certificazione da
         inviare alla CA unitamente alla chiave pubblica creata (mediante
         un programma adatto all’algoritmo scelto: OpenSSL, per
         esempio), secondo lo standard PKCS#10.


         La chiave privata corrispondente a quella pubblica appena
         inviata viene memorizzata in attesa della risposta. Non vengono
         utilizzati particolari accorgimenti inerenti alla sicurezza durante
         questa trasmissione poiché la chiave pubblica, come il nome
         stesso dice, può anche circolare non cifrata su Internet senza
         alcun problema.


         Successivamente l’autorità di certificazione elabora la richiesta e
         costruisce attorno alla chiave pubblica ricevuta un certificato:
         aggiunge il nome e cognome della persona, il suo indirizzo
         email, ed eventuali altri dati. Successivamente il certificato
         viene firmato digitalmente con una chiave privata in possesso
         dell’autorità di certificazione: il certificato diventa impossibile da
         modificare    per   chiunque    non   possegga     la   chiave   che,
         ovviamente, è tenuta al sicuro.


Fabio Pustetto     Posta elettronica sicura: X.509 e PGP         Pagina 62 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it




         Per finire, il certificato così creato viene rispedito al richiedente
         che lo memorizza in un'area sicura del proprio PC insieme alla
         chiave privata memorizzata temporaneamente durante la prima
         fase. Anche in quest'ultima trasmissione non viene impiegata
         nessuna tecnologia per le comunicazioni protette, poiché il
         certificato digitale non contiene informazioni private, basti
         pensare al fatto che viene distribuito in ogni email firmata. La
         CA o l’utente potranno anche caricare una copia del certificato
         in un Certificate Server, a disposizione degli altri utenti.


         La sicurezza di questo processo è elevatissima: la chiave
         privata, che deve essere sempre tenuta al sicuro e nascosta da
         occhi indiscreti, non circola mai attraverso Internet e rimane
         sempre sul proprio PC. Viene fatta circolare invece la chiave
         pubblica, ma questo non è un problema. La chiave pubblica può
         essere distribuita senza alcun problema: esistono addirittura
         degli archivi su Internet di chiavi pubbliche di svariate persone,
         accessibili da chiunque.


         È sicura anche l'autenticità del certificato digitale: nessuno può
         crearne uno finto e nessuno può modificarlo, poiché l'hash del
         certificato modificato non corrisponderebbe all'hash incluso
         nello stesso, e per includerne uno è necessario avere la chiave
         privata dell’autorità di certificazione.


         Quando il sistema operativo deve controllare se un certificato è
         valido, ne calcola l'hash e lo compara con l'hash incluso nel
         certificato e firmato da un "certificato di livello superiore".
         Successivamente il controllo si sposta su questo "certificato di
         livello superiore", che viene anch'esso controllato tramite il suo


Fabio Pustetto    Posta elettronica sicura: X.509 e PGP         Pagina 63 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it



         hash, firmato da un certificato di livello ancora più alto. La
         catena si conclude quando si giunge al certificato principale
         dell'autorità di certificazione, che spesso i sistemi operativi
         considerano attendibile solo se precaricato.


         Se l’utente che richiede la certificazione si reca di persona
         presso qualche CA, esibendo la documentazione richiesta potrà
         certificare in modo univoco non solo il legame chiave pubblica –
         utente ma anche tutti i dati anagrafici della persona fisica (tra i
         quali cognome, nome).


         La sudafricana Thawte [1], ad esempio è una delle principali
         autorità di Certificazione ed i suoi uffici sono presenti a Roma.
         Per ottenere dei semplici certificati personali per firmare email e
         ricevere messaggi cifrati, sarà sufficiente sottoscrivere la
         proposta di certificati personal free nel loro sito ma per
         certificazioni complete e professionali che attestino anche la
         persona fisica, sarà necessario presentarsi nei loro sportelli con
         la seguente documentazione (tratta da [1]):
                 •   identification number, passport number, social security
                     number, driver licence number or tax number,
                     depending on your nationality
                 •   Your full name and date of birth.
                 •   Your employer's name, size and address (if you are
                     employed).
                 •   Your home address and contact details.
                 •   Your preferred currency




Fabio Pustetto       Posta elettronica sicura: X.509 e PGP    Pagina 64 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



   5.3           Come si ottiene il certificato di un utente

         I certificati rilasciati da CA garantiscono che ogni utente che ha
         accesso alla chiave pubblica della CA può recuperare la chiave
         certificata ma nessuno al di fuori della CA emittente può
         modificare i dati del certificato digitale.


         Ogni certificato dovrebbe essere distribuito a più contatti
         possibili per godere dei suoi servizi. Se tutti gli utenti di un
         gruppo sottoscrivono la stessa CA, c’è un’implicita fiducia nella
         CA e tutti i certificati potrebbero esser posti in una directory
         condivisa, piuttosto che ogni utente trasmetta il proprio agli
         altri. In entrambi i casi, quando B entra in possesso del
         certificato di A, può trasmettere messaggi cifrati ad A e
         riceverne da lui autenticati e firmati.


         La CA firma i certificati degli utenti e fornisce a chiunque copia
         della propria chiave pubblica per verificare la firma. Tuttavia, se
         il gruppo di utenti è molto vasto, non è pratico che tutti
         sottoscrivano la stessa CA, cosicché ogni CA possa fornire la
         propria chiave ad una frazione di utenti.


         Supponiamo che A abbia ottenuto un certificato dall’autorità X1
         e B dall’autorità X2, nella gerarchia. Se A non conosce con
         certezza la chiave pubblica di X2, il certificato di B è inutilizzabile
         per A che può leggerlo ma non verificarne la firma. Tuttavia se
         le due CA si sono scambiate le loro chiavi pubbliche, A può
         ottenere la chiave pubblica di B in pochi passi:
            •     A ottiene dal Directory Server il certificato di X2 firmato
                  da X1. In questo modo conosce in modo sicuro la chiave
                  pubblica di X2.


Fabio Pustetto      Posta elettronica sicura: X.509 e PGP        Pagina 65 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004             www.dsi.unive.it



            •    A ottiene dal Directory Server il certificato di B firmato da
                 X2. ora A è in possesso della chiave pubblica di X2 e può
                 verificarne la firma sul certificato di B, ottenendone la
                 chiave pubblica.


         Si dice che A ha usato la catena di certificazione per ottenere la
         chiave pubblica di B. Nella notazione X.509:
         X1<<X2>> X2<<B>>


         Questo schema è illimitato. Può contenere un lungo percorso di
         CA (come visto nel §4.3):
         X1<<X2>> X2<<X3>> … Xn<<B>>


         In questo caso ogni coppia di CA (Xi,Xi+1) deve aver creato un
         certificato l’uno per l’altro.


         Tutti i certificati generati da CA a CA, devono comparire nella
         directory e l’utente deve sapere come sono legati tra loro per
         poter seguire un percorso logico che permetta di ricondurre
         l’origine di un certificato di un utente al certificatore principale.


         Un esempio di gerarchia di certificati è dato dalle figura
         seguente, dove i nodi A, B e C sono gli utenti finali mentre gli
         altri sono le CA intermedie. Le notazioni indicano i certificati
         mantenuti nelle directory per ogni CA che sono di due tipi:
            •    Forward certificates (certificati di X emessi da altre CA)
            •    Reverse Certificates (certificati generati da X che sono di
                 altre CA)




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP        Pagina 66 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004       www.dsi.unive.it




         In questo esempio l’utente A può acquisire il certificato di B
         stabilendo il giusto percorso:
         X<<W>> W<<V>> V<<Y>> Y<<Z>> Z<<B>>


         A questo punto A può percorrere tutto il percorso e ottenere la
         chiave pubblica di B che a sua volta può percorrere il percorso
         al contrario per ottenere il certificato di A.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP   Pagina 67 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004                www.dsi.unive.it




   6             PGP




                  “Bless the man who made it,
                   and pray that he ain’t dead.
                    He could’ve made a milion
                    If he’d sold it to the feds,
                   But he was hot for freedom;
                      He gave it out for free.
               Now every common citizen’s got PGP”
                                Dalla canzone “P.G.P.” di Lesile Fish [23]




                         “Benedici l'uomo che l’ha fatto
                             e prega che non muoia.
                    Avrebbe potuto fare un milione (di dollari),
                         se l'avesse venduto ai federali,
                        ma aveva molto a cuore la libertà;
                           lo distribuì gratuitamente.
                    Ora ogni comune cittadino possiede PGP”



Fabio Pustetto    Posta elettronica sicura: X.509 e PGP            Pagina 68 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004                www.dsi.unive.it




         PGP è un toolkit crittografico nato dalla volontà di Philip
         Zimmermann          [40].   Disponibile     per     molte     piattaforme
         (Unix/Linux, DOS/Windows, Mac, …), è basato su algoritmi
         freeware sicuri. Al momento, PGP 8.0.3 offre cinque tipi di
         servizi:


                 Servizio                    Descrizione
           Cifratura messaggio         Il messaggio è cifrato con un algoritmo a chiave
                (segretezza)           simmetrica: CAST-128, IDEA o 3DES. La chiave di
                                       sessione è cifrata con la chiave pubblica usando
                                       l’algoritmo RSA o Diffie Hellman




                 Firma digitale        Viene creato un hash del messaggio (con algoritmo
                 (autenticazione)      SHA-1 o MD5) e cifrato con la chiave privata del
                                       mittente (con l’algoritmo RSA o DH)




                 Compressione          Il testo in chiaro viene compresso con l’algoritmo
                                       freeware ZIP prima di essere cifrato. Risparmio di
                                       banda e crittoanalisi più difficile (vedi applicazione
                                       nelle figure precedenti)
           Compatibilità e-mail        Un messaggio cifrato è convertito in una stringa
                                       ASCII (usando una conversione Radix-64). Questo
                                       per rendere i messaggi leggibili anche da mail
                                       agent testuali
               Segmentazione           Segmenta il messaggio in parti più piccole se le
                                       dimensioni sono importanti




Fabio Pustetto       Posta elettronica sicura: X.509 e PGP           Pagina 69 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004             www.dsi.unive.it



         Utilizzando le informazioni della tabella precedente, supponiamo
         di voler firmare e cifrare un messaggio. La sequenza delle
         operazioni svolte da PGP è:




         1. PGP applica l’algoritmo di hashing SHA-1 per generare il
            digest del messaggio che avrà lunghezza fissa di 160bit.
         2. L’hash viene firmato con la chiave segreta KRa del mittente
         3. Il   certificato   di   firma   corrispondente   è   accodato   al
            messaggio;
         4. PGP applica l’algoritmo di compressione ZIP per comprimere
            messaggio e firma;
         5. PGP applica un algoritmo di generazione di numeri casuali
            per formare una sequenza di 128bit casuale, la chiave di
            sessione KS
         6. PGP applica un algoritmo di crittografia convenzionale IDEA
            per codificare il messaggio compresso ottenuto in 4, usando
            la chiave di sessione KS generata in 5;




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP         Pagina 70 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it



         7. PGP applica l’algoritmo di crittografia a chiave pubblica RSA
            per codificare con KUb la chiave di sessione KS, accodando il
            risultato al messaggio cifrato ottenuto al punto 6;
         8. PGP applica l’algoritmo di conversione RADIX-64 per
            trasformare il messaggio ottenuto in 5 in soli caratteri ASCII.


         Il ricevente eseguirà la sequenza inversa per ottenere il testo in
         chiaro.


         Un messaggio PGP cifrato è formato da tre componenti:
            •      messaggio,
            •      firma (opzionale),
            •      chiave di sessione.


         La firma include i seguenti componenti:
            •      timestamps (data/ora in cui la firma è stata creata),
            •      message digest (l’hash del messaggio),
            •      leading two octets of message digest (abilitare il
                 ricevente a determinare se è stata usata la chiave
                 pubblica corretta per decifrare il message digest),
            •      KeyID della chiave pubblica del mittente;




Fabio Pustetto       Posta elettronica sicura: X.509 e PGP      Pagina 71 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004       www.dsi.unive.it




   6.1           Chiavi in PGP

         PGP fa uso di 4 chiavi:
            •     chiave di sessione
            •     chiave pubblica
            •     chiave privata
            •     passphrase




Fabio Pustetto      Posta elettronica sicura: X.509 e PGP   Pagina 72 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it



         Le prime 3 sono state trattate ampiamente nei capitoli
         precedenti mentre passphrase è una novità: è un’ulteriore
         sicurezza atta a per proteggere la chiave privata. In sua
         assenza chiunque venisse in possesso della chiave privata si
         potrebbe spacciare per il titolare. Passphrase e non password
         perché indica la necessità di scegliere una stringa di parole
         piuttosto complessa, data la sua importanza.

   6.1.1 Key ID

         Come detto in precedenza, i messaggi vengono codificati da
         PGP con una chiave di sessione generata casualmente che sarà
         a sua volta cifrata con la chiave pubblica del destinatario.
         Quest’ultimo però può avere più coppie di chiavi. Nasce allora la
         necessità da parte del destinatario di conoscere quale keyring
         utilizzare. Ecco perciò la soluzione: anteporre al messaggio un
         KeyID.


         Un KeyID è associato ad ogni chiave pubblica che con molta
         probabilità è unica per quell’utente con specifico UserID. La
         KeyID associata ad ogni chiave pubblica consiste nei suoi 64 bit
         meno significativi (KUa mod 264). Questa è una lunghezza
         sufficiente affinché la probabilità di duplicazione di una keyID
         sia remota.

   6.1.2 Key Ring

         Le chiavi PGP vengono salvate in 2 file cifrati nel disco locale.
         Un file per le nostre chiavi private e uno per tutte le chiavi
         pubbliche. Questi file sono detti “private key ring”, cifrato con la
         passphrase, e “public key ring”.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP       Pagina 73 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004                      www.dsi.unive.it



         Perdere il private key ring significa non poter più decifrare i
         messaggi cifrati con la nostra chiave pubblica. È buona norma
         tenerne almeno una copia di backup, ovviamente lontano da
         occhi indiscreti.


                                 Struttura del Private Key Ring
                 Timestamp                   Ti            Data/ora in cui è stata
                                                           generata la coppia di chiavi
                   Key ID               KUi mod 264        I 64 bit meno significativi della
                                                           chiave pubblica dell’utente
                  Public Key                 KUi           Chiave pubblica dell’utente
           Encrypted Private Key         EH(Pi)[Kri]       La chiave privata. Il campo è
                                                           cifrato
                   User ID                 User i          Tipicamente l’indirizzo e-mail



                                 Struttura del Public Key Ring
                 Timestamp                   Ti            Data/ora   inserimento    nuova
                                                           entry
                   Key ID               KUi mod 264        I 64 bit meno significativi della
                                                           chiave pubblica dell’entry
                  Public Key                 KUi           Chiave pubblica dell’entry
                 Owner Trust             Trust_flag    i              Vedi § 6.3
                   User ID                 User I          Proprietario    della     chiave
                                                           pubblica
                Key Legitimacy           Trust_flag    I              Vedi § 6.3
                 Signature(s)                                         Vedi § 6.3
             Signature Trust(s)                                       Vedi § 6.3




   6.2           Generazione messaggi

         Assumiamo che il messaggio sia firmato e cifrato e per
         semplicità ignoriamo compressione e conversione in ASCII


         Mittente:
         1. firma del messaggio
            •     PGP recupera la chiave privata del mittente dal private
                 key ring tramite UserID


Fabio Pustetto      Posta elettronica sicura: X.509 e PGP                  Pagina 74 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it



            •    PGP richiede di digitare la passphrase per decifrare la
                 chiave privata
         2. cifratura del messaggio
            •    PGP genera la chiave di sessione e cifra il messaggio
            •    PGP recupera la chiave pubblica del destinatario dal
                 public key ring.




         Destinatario:
         1. decifratura messaggio
            •    PGP recupera la chiave privata del destinatario dal
                 private key ring tramite il KeyID
            •    PGP chiede di digitare la passphrase per recuperare la
                 chiave privata dal private key ring
            •    PGP recupera la chiave di sessione e decritta il
                 messaggio
         2. autenticazione messaggio
            •    PGP recupera la chiave pubblica del mittente dal public
                 key ring usando il campo KeyID
            •    PGP recupera il message digest trasmesso


Fabio Pustetto     Posta elettronica sicura: X.509 e PGP     Pagina 75 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it



            •     PGP ricalcola il message digest del messaggio e lo
                  confronta con quello ricevuto. Se sono uguali, il
                  messaggio è autentico.




   6.3           Horizontal Trusting = fiducia

         Il problema maggiore della crittografia a chiave asimmetrica è
         quello    di   proteggere    la   nostra   chiave   pubblica    dalle
         manomissioni. Stallings in [37] descrive bene il problema.


         L’utente A deve aggiornare il proprio public key ring che
         contiene già una chiave attribuita a B ma che in effetti è di C.
         Questo può accadere se, per esempio, A ha scaricato la chiave
         da un BBS (bulletin board system) che B usa per distribuire la
         chiave che però è stata compromessa da C. In questo caso:
            •     C può spedire messaggi ad A con la firma di B
            •     I messaggi cifrati da A a B possono esser letti da C




Fabio Pustetto      Posta elettronica sicura: X.509 e PGP      Pagina 76 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004                 www.dsi.unive.it



         Per risolvere questi problemi bisogna avere la certezza che ogni
         chiave corrisponda al giusto proprietario. Ci sono vari approcci:
            •    Scambiarsi le chiavi pubbliche di persona, attraverso
                 floppy, per esempio;
            •    Verificare le chiavi scambiate per vie telematiche (per
                 esempio confrontando per telefono un digest 160bit
                 SHA-1 della chiave);
            •    Ottenere la chiave pubbliche da altri contatti fidati. Ad
                 esempio D crea un certificato firmato e crittografato
                 contenente la chiave pubblica di B;
            •    Ottenere le chiavi pubbliche da un’autorità certificata e
                 fidata. In questo caso l’autorità crea e firma un
                 certificato con la chiave pubblica dell’utente desiderato.


         PGP non include nessuna specifica su come stabilire la validità e
         la fiducia, fornisce solo il significato di “fiducia”: associare un
         livello di fiducia ad un certificato e sfruttare le sue informazioni.


         Ogni elemento nel public key ring è un certificato di chiave
         pubblica ed associato ad esso ci sono tre campi:
            •    key legitimacy
                    o indica       se   la   chiave   pubblica   è    valida   per
                        quell’utente. Più elevato è il livello di fiducia
                        (trust), più forte è il legame tra utente (UserID) e
                        la sua chiave pubblica (KeyID). Questo campo è
                        calcolato da PGP e deriva dai valori assegnati al
                        campo signature trust per ogni firma collezionata
                        dalla nostra chiave pubblica
            •    signature trust




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP             Pagina 77 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004              www.dsi.unive.it



                    o indica il grado di fiducia che PGP assegna ad ogni
                        utente    che   ha    firmato    la   chiave   pubblica
                        considerata nel nostro key ring
            •    owner trust
                    o indica il grado di fiducia che noi assegniamo al
                        possessore della chiave nel firmare le altre chiavi


         Questi campi correlati tra loro permettono di stabilire delle
         relazioni di fiducia tra gruppi di utenti. Tale meccanismo si
         chiama “Web of Trust”.

   6.3.1 Web of Trust in PGP

         Web of Trust incorpora in se le funzionalità degli altri 2 modelli,
         il gerarchico e orizzontale (ogni utente valida a mano tutte le
         chiavi pubbliche) e una nuova nozione di “fiducia” dal punto di
         vista dell’osservatore e la consapevolezza che più informazione
         si ha, maggiore è la nostra sicurezza.


         Web of Trust segue il vecchio ma conosciuto principio “six
         degrees of separation”, secondo il quale ogni persona al mondo
         può determinare un legame con qualsiasi altra usando sei o
         meno intermediari.


         Nel modello PGP ogni utente può fungere da certificatore e
         validare certificati di altri utenti. Il certificato così validato lo si
         ritiene affidabile solo se il validatore è conosciuto e stimato
         (considero valida la chiave di quell’utente solo perché considero
         l’utente attento e affidabile e perciò riterrò validi anche tutti i
         certificati da lui firmati). Si parte dal presupposto che il più alto




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP          Pagina 78 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         livello di fiducia lo abbiamo verso noi stessi. Per tale motivo,
         ogni chiave firmata da noi risulta comunque valida.


         L’implementazione PGP di questo modello prevede 2 proprietà
         fondamentali:
            •    validità della chiave pubblica: dopo aver inserito una
                 nuova chiave pubblica di una generica persona, PGP
                 richiede di accertarne la validità
                    o chiave valida: ho accertato legame chiave-utente;
                    o chiave non valida: non ho accertato il legame
                        chiave-utente: posso usare comunque il certificato
                        ma PGP mi segnala l’inconsistenza.
            •    fiducia nel possessore della chiave pubblica: ogni utente
                 generico può validare chiavi pubbliche di altri utenti. Che
                 livello di fiducia pongo in questo utente nel validare altri
                 certificati? Avrà la mia stessa perizia nell’accertare la
                 corrispondenza chiave pubblica – utente?
                    o fiducia completa: si ha completa fiducia nel modo
                        in cui il soggetto valida le chiavi di altri utenti. Ne
                        consegue che tutte le chiavi firmate da lui sono
                        valide anche per noi;
                    o fiducia parziale: non ho piena fiducia nell’utente
                        perciò le chiavi firmate da lui sono valide se
                        firmate contemporaneamente da altri utenti su cui
                        riponiamo una fiducia almeno parziale;
                    o non fidato: non ho alcuna fiducia nelle capacità
                        dell’utente di validare le chiavi;
                    o non noto: il livello di fiducia nelle capacità
                        dell’utente è basso ma non nullo perciò per ogni
                        chiave pubblica che inserirò con la sua firma, PGP
                        mi chiederà di validare a mano la chiave.


Fabio Pustetto     Posta elettronica sicura: X.509 e PGP        Pagina 79 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it




                    Firmatario sconosciuto
                    X è firmato da Y
                    Fiducia completa nel firmare le chiavi
                    Fiducia parziale nel firmare le chiavi

                    Chiave ritenuta valida


         Questa figura esemplifica la gestione di un public key ring con
         questo modello. L’utente in questione ha acquisito alcuni
         certificati tramite keyserver, altri tramite e-mail, altri ancora
         direttamente dall’amico.
         Il nodo “You” corrisponde alla nostra chiave pubblica che,
         ovviamente, è considerato valido.
         Verso i nodi D, E, F, L, abbiamo completa fiducia e oltre a
         considerare valide le loro chiavi, consideriamo valide tutte le
         chiavi firmante da almeno uno di loro (M, N, O, P, Q)
         Anche le chiavi A e B sono considerate valide ma la nostra
         fiducia verso gli utenti è solamente parziale. In questo caso non
         consideriamo valide le chiavi firmate solo da uno di essi (G), ma
         sono necessarie più firme. Il nodo H è firmato da entrambi,
         allora è valido anche per noi.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP      Pagina 80 di 118
www.unive.it             Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it



         Al nodo C non è stato assegnato alcun livello di fiducia, di
         conseguenza ignoreremo le firme che apporrà nelle altre chiavi
         (I, J, K).
         Il nodo S, infine, viene chiamato orfano poiché è stato firmato
         da due sconosciuti (se S è stato recuperato da un keyserver,
         per esempio) e non possiamo assumere nessuna validità.


   6.4           PGP certificate format

         Un certificato PGP è un insieme di informazioni standard
         sull’utente e la sua chiave pubblica.
         Include le seguenti informazioni:
             •    chiave pubblica del possessore
             •    informazioni del possessore
             •    firma digitale del possessore
             •    validità del certificato
             •    algoritmo di cifratura preferito


         Da notare che la firma che ne certifica la validità è del
         possessore       stesso,   chiamata   self-signature,   seguendo   la
         tradizione PGP che si basa sulla fiducia reciproca tra i firmatari
         (horizontal trusting).


         Altro aspetto unico dei certificati PGP è che ogni singolo
         certificato può contenere più firme. Più persone possono
         apporre la loro firma digitale sul nostro certificato per
         autenticare il nostro certificato ma è fondamentale differenziare
         questa autenticazione da quella delle CA. Le firme nei certificati
         PGP possono attestare solamente che il nome del possessore
         corrisponde alla chiave pubblica presente, non che tutte le
         informazioni del certificato sono veritiere!



Fabio Pustetto        Posta elettronica sicura: X.509 e PGP      Pagina 81 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004               www.dsi.unive.it




         Ovviamente        ogni   certificato   può     contenere    informazioni
         aggiuntive. Potrebbero essere inserite nome dell’azienda per cui
         si lavora, home page, numeri di telefono e così via…




         Possiamo ora evidenziare le differenze principali i due standard
         di certificati:
             •   PGP può essere creato dall’utente stesso mentre X.509
                 deve essere richiesto e ottenuto da una CA (che però
                 potrebbe essere mantenuta dallo stesso utente);
             •   X.509 supporta solo un singolo nome per ogni certificato.
                 PGP infinite;
             •   X.509 supporta una sola forma digitale che ne attesti
                 l’autenticità, PGP il più possibile.




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP            Pagina 82 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it




   7             IN PRATICA…




     “Niuno sanza invenzione fu mai grande uomo nel
                      mestiere suo”
                                                     Niccolò Machiavelli




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP     Pagina 83 di 118
www.unive.it             Tesi di Laurea A. A. 2003/2004           www.dsi.unive.it




         Dopo l’analisi delle 2 implementazioni principali sulla sicurezza
         delle email, è arrivato il momento di scoprirne l’uso pratico e
         capire quale risolve le nostre esigenze.


         Nei due prossimi paragrafi si spiega come si producono
         certificati di tipo X.509v3 e PGP mentre nel terzo si trarranno le
         conclusioni, sul perché e per chi è preferibile l’una o l’altra
         soluzione. Negli esempi il certificato X.509 è stato prodotto in
         Linux, mentre il certificato PGP in Windows, ma è possibile fare
         l’inverso.


         La versione di Windows Installata è Windows XP Professional,
         versione 2002 in Italiano con Service Pack 1, tutto con regolare
         licenza Microsoft MSDN-AA. La versione Linux, invece, è la
         francese Mandrake 9.2, installata dalle immagini ISO scaricabili
         gratuitamente dal sito web del distributore [20].


   7.1           Produrre un certificato X.509v3

         I certificati X.509v3 hanno valore legale se emessi da una CA
         conosciuta e certificata. Per ottenere quindi benefici di questo
         tipo non è possibile esibire una certificazione auto prodotta.
         Le CA più importanti mettono a disposizione anche una
         caratteristica aggiuntiva: possono certificare non solo la
         corrispondenza nome-chiave ma anche nome-“persona fisica”;
         per questo è necessario che l’individuo si presenti di persona
         negli uffici della CA con documenti d’identità validi.
         Ottenere un semplice certificato per uso personale da una CA è
         molto facile: non si deve fare nulla di particolarmente gravoso,
         solo rispondere a qualche domanda sul sito web del



Fabio Pustetto        Posta elettronica sicura: X.509 e PGP   Pagina 84 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004        www.dsi.unive.it



         certificatore. Ecco un esempio di un certificato emesso da
         Thawte.


           Certificato Personal Freemail emesso da Thawte




         Un certificato è prodotto da un server; si necessita perciò di un
         sistema operativo sviluppato a tale scopo. Microsoft mette a




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP    Pagina 85 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it



         disposizione sistemi Operativi quali Windows NT/2000/XP/2003.
         mentre qualsiasi distribuzione di Linux fa al caso nostro.
         In entrambi i casi, si debbono installare dei pacchetti aggiuntivi
         che permettono la realizzazione di un Server per l’emissione, la
         manutenzione e la distribuzione di certificati. In questo capitolo
         ci concentreremo solo sull’emissione, quindi non dell’intera PKI.

   7.1.1 Installare una PKI in Windows

         La stesura di questo paragrafo attinge preziose informazioni dal
         sito Microsoft [22]. Per creare un certificato digitale X.509v3 è
         sufficiente impersonare una CA ma per mantenere una vera PKI
         si deve installare un server LDAP o un’Active Directory che
         permetta la gestione di tutti i certificati (distribuzione, gestione
         richieste … )


         Windows XP (come anche 2000/2003) include un'infrastruttura
         a chiave pubblica completa in grado di garantire tutti i vantaggi
         della crittografia a chiave pubblica, è incorporata nel sistema
         operativo ed è totalmente integrata nelle normali attività di
         gestione della rete.


         I componenti principali della PKI di Windows sono:
            •    Servizi certificati, uno dei servizi di base del sistema
                 operativo che consente alle aziende di agire in qualità di
                 autorità di certificazione e di emettere e gestire i propri
                 certificati digitali
            •    Active Directory™, uno dei servizi di base del sistema
                 operativo per la centralizzazione delle risorse di rete e
                 che funge da servizio di pubblicazione nell'ambito della
                 PKI.



Fabio Pustetto     Posta elettronica sicura: X.509 e PGP      Pagina 86 di 118
www.unive.it             Tesi di Laurea A. A. 2003/2004                        www.dsi.unive.it



              •    Applicazioni abilitate all'utilizzo della PKI quali Internet
                   Explorer, Microsoft Money, Internet Information Server,
                   Outlook e Outlook Express, nonché una vastissima
                   gamma di applicazioni di terze parti compatibili con la
                   PKI di Windows.
              •    Exchange       KMS      (Key       Management           Service),     un
                   componente        di   Microsoft      Exchange         che      consente
                   l'archiviazione e il recupero delle chiavi utilizzate per
                   crittografare i messaggi di posta elettronica.


         In       Windows,      MMC       (Microsoft        Management             Console)
         rappresenta l'area di lavoro standard per lo svolgimento di tutte
         le attività amministrative, incluse quelle inerenti la gestione
         della PKI. Tramite lo snap-in MMC Servizi certificati, gli
         amministratori possono eseguire in modo semplice tutte le
         attività quotidiane necessarie per la normale manutenzione
         della PKI, quali:
              •    Revoca dei certificati, quando necessario.
              •    Visualizzazione delle proprietà (inclusi l'intervallo di
                   validità,    la      data       dell'ultimo      aggiornamento         e
                   l'appartenenza di un certificato) dei certificati e degli
                   elenchi di certificati revocati.
              •    Definizione dei modelli per gli attributi dei certificati; in
                   questo       modo          i     nuovi        certificati      ereditano
                   automaticamente gli attributi dei modelli.
              •    Modifica delle impostazioni del criterio di gruppo per
                   utenti,     gruppi     e       computer,       in    presenza       delle
                   autorizzazioni appropriate.




Fabio Pustetto       Posta elettronica sicura: X.509 e PGP                     Pagina 87 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004              www.dsi.unive.it




   7.1.2 Installare una PKI in Linux

         Per implementare una semplice CA in Linux è necessario
         installare un pacchetto che permetta di gestire connessioni
         sicure di tipo SSL. OpenSSL [33] e ApacheSSL [29] fanno al
         caso nostro.
         OpenSSL,   utilizzato   dallo   stesso   Apache,   è     un   toolkit
         crittografico che implementa i protocolli SSL (Secure Socket



Fabio Pustetto   Posta elettronica sicura: X.509 e PGP          Pagina 88 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004             www.dsi.unive.it



         Layer v2/v3) e TLS (Transport Layer Security v1) e i relativi
         standard     crittografici   richiesti   da   essi.   OpenSSL   è   un
         programma che funziona su linea di comando e permette di
         usare le funzioni della libreria crittografica OpenSSL. Può essere
         usato per:
            •    Creazione di parametri per la generazione delle chiavi
                 RSA, DH e DSA
            •    Creazione di certificati x.509, CSR (Certificate Signing
                 Requests) e CRL
            •    Calcolo dell’hash di messaggi
            •    Cifratura e Decifratura
            •    SSL e TSL client/server test
            •    Gestione della firma e cifratura di e-mail


         Per l’installazione si dovrà effettuare la procedura seguente:
         Una volta effettuato il download dei file necessari, spostarsi
         nella directory dove essi sono contenuti ed eseguire i seguenti
         comandi:
         tar xvzf openssl-0.9.6.tar.gz
         cd openssl-0.9.6/
         ./config
         make
         make test
         make install


         Per verificare che OpenSSL sia stato installato correttamente,
         digitare dalla linea di comando "openssl", se l'installazione è
         andata a buon fine, comparirà il prompt di OpenSSL "openssl>"
         dal quale è possibile digitare i vari comandi.


         Una volta installato OpenSSL, procediamo all’installazione di
         ApacheSSL. Dalla directory contenente i files scaricati, digitare i
         seguenti comandi:


Fabio Pustetto      Posta elettronica sicura: X.509 e PGP         Pagina 89 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004          www.dsi.unive.it


         tar xvzf apache_1.3.24.tar.gz
         cd apache_1.3.24
         tar xvzf ../apache_1.3.24+ssl_1.48.tar.gz
         ./FixPatch
         ./configure --prefix=DIR*
         ./configure --prefix=DIR* --enable-
         module=rewrite --enable-shared=rewrite
         make
         make install
         ln -s DIR*/conf/httpsd.conf
         DIR*/conf/httpd.conf
         * DIR dovrà essere sostituita con la directory
         in cui si vuole installare Apache.


         Al termine della procedura dovrebbe comparire la seguente
         schermata, altrimenti vuol dire che l'installazione non è andata
         a buon fine!


    make[1]: Leaving directory `/data/server/apache_1.3.9'
   +-------------------------------------------------------
   | You now have successfully built and installed the
   |
   | Apache 1.3 HTTP server. To verify that Apache actually
   |
   | works correctly you now should first check the
   |
   | (initially created or preserved) configuration files
   |
   |
   |
   |   DIR/conf/httpsd.conf
   |
   |
   | and then you should be able to immediately fire up
   |
   | Apache the first time by running:
   |
   |   DIR/bin/httpsdctl start
   |
   | Thanks for using Apache.       The Apache Group
   |
   |                                http://www.apache.org/
   |
   +-------------------------------------------------------




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP     Pagina 90 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         A questo punto, prima di lanciare Apache, è necessario creare i
         certificati. Richiedere a una CA di firmare la propria chiave
         pubblica è tipicamente un processo off-line, la procedura per
         avere un certificato digitale valido è per tutti la stessa:
            1. Crearsi, con l'ausilio di qualche toolkit (per esempio
                 OpenSSL) una coppia di chiavi;
            2. Preparare una CSR (Certificate Signing Request) ovvero
                 una richiesta di firma di un certificato;
            3. Inviare alla CA, ad esempio via e-mail, la CSR.


         Ma ecco come fare i nostri certificati self-signed in Linux:


         Prima di procedere con la creazione del certificato, spostarsi
         nella directory DIR e creare le directory “gcache” e “certs”, poi
         spostarsi all’interno di “certs” ed eseguire la seguente
         procedura:


            1. Generazione della chiave
         richiesta di una chiave RSA di 1024 bit, che verrà memorizzata
         sul file "fabio.key":
         openssl genrsa –des3 -out fabio.key 1024


         Verrà chiesta una passphrase perché con l'opzione –des3
         abbiamo richiesto di cifrare la chiave privata con l'algoritmo
         TripleDES; questa passphrase verrà richiesta ogni volta che
         OpenSSL deve utilizzare la chiave privata.


            2. Generazione della richiesta di firma del certificato
         Creazione di una CSR (Certificate Signing Request) secondo lo
         standard PKCS#10:
         openssl req -new -key fabio.key -out fabio.csr



Fabio Pustetto     Posta elettronica sicura: X.509 e PGP        Pagina 91 di 118
www.unive.it             Tesi di Laurea A. A. 2003/2004           www.dsi.unive.it




             3. Generazione della chiave e del certificato della CA (si fa
                 una sola volta e con questo si firmano tutti i prossimi
                 certificati emessi)
         richiesta di una chiave RSA di 2048 bit
         openssl genrsa –des3 -out CA.key 2048


         generazione del certificato della CA
         openssl req -new -x509 -key CA.key -out CA.cert


         Verrà chiesta la passphrase della chiave privata e alcune
         informazioni standard presenti nei certificati.
         "CA" ha quindi il suo certificato di CA, con il quale può firmare
         altri certificati.


             4. Firma del certificato da parte di "CA"
         Prima di effettuare la firma, bisogna creare alcune directory e
         alcuni files:
         mkdir -p demoCA/newcerts
         touch demoCA/index.txt
         echo '01' > ./demoCA/serial


         Adesso siamo pronti; ecco la firma vera e propria:
         openssl ca -keyfile CA.ca.key -cert CA.cert -in
         fabio.csr -out fabio.cert


         A questo punto si debbono fare 2 considerazioni sul certificato
         personale (“fabio.cert”) appena emesso dalla nostra Autorità di
         Certificazione:
             •   deve poter essere importato nel nostro sistema operativo
                     o tradurre        il   certificato   nello   standard   di
                          interscambio PKCS#12 (vedi voce di glossario)
             •   non è riconosciuto come valido



Fabio Pustetto      Posta elettronica sicura: X.509 e PGP         Pagina 92 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004           www.dsi.unive.it



                   o installare il certificato della nostra CA nel sistema
                       operativo
                   o ora è riconosciuto come valido sulla nostra
                       macchina ma non su tutte le altre…


         Per tradurre “fabio.cert” nello standard di interscambio si fa
         riferimento ancora una volta ad OpenSSL ma prima di devono
         fondere la chiave fabio.key e il certificato fabio.cert in un unico
         file PEM (vedi voce di glossario):
         less fabio.key > fabio.pem
         less fabio.cert >> fabio.pem


         ora si può tradurre con il comando
         openssl pkcs12 –export –in fabio.pem –out
         fabio.p12 –name “Fabio Pustetto”


         Questo file ora può essere importato nel nostro client in
         qualsiasi sistema operativo. Nella sezione “Appendice” si può
         leggere il log dell’intera procedura.


         Anche in questo caso, questi pochi comandi servono ad
         implementare una CA e non una PKI completa. Sarà necessario
         installare un server per la distribuzione dei certificati e la
         ricezione di richieste di firma, tramite Apache e LDAP.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP       Pagina 93 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004       www.dsi.unive.it



                          Certificato della CA




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP   Pagina 94 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004       www.dsi.unive.it



          Certificato personale a nome di “Fabio Pustetto”




   7.2           Produrre un certificato PGP

         PGP, per sua natura, è rivolto ad utenza privata, evoluta ma
         non necessariamente esperta e per tale motivo risulta molto




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP   Pagina 95 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it



         meno macchinoso produrre un certificato valido per i nostri
         scopi.
         L’ultima versione di PGP attualmente disponibile è la 8.0.3,
         scaricabile gratuitamente (con funzionalità limitate) per uso non
         commerciale dal sito del produttore [25].


         In Windows, ma anche in Linux, basterà avviare l’eseguibile
         (exe o rpm) perché il Wizard guidi l’utente nell’installazione e
         nella creazione della prima coppia di chiavi (si dovranno fare
         delle scelte, come algoritmi preferiti o dimensione delle chiavi,
         ma i valori predefiniti vanno benissimo, oltre alla già citata
         passphrase).


         A questo punto il nostro keyrings è pronto all’uso. Il ponte di
         comando PGP è la piccola icona (lucchetto) sulla barra di menù.

                                    PGPtray




         Tramite questa icona si accedono a tutti i servizi a disposizione.
         Quello che a noi interessa è PGPkeys per vedere i certificati di
         altri utenti in nostro possesso e PGPmail per usufruire dei
         servizi di cifratura e firma.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP      Pagina 96 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



   7.2.1 PGPkeys




         È l’interfaccia che permette di gestire il nostro public keyring,
         contenente la chiavi pubbliche dei nostri contatti.


         Il campo validità è contraddistinto da un pallino verde (valido) o
         grigio (non valido) secondo il modello Web of Trust e le firme
         allegate. Il campo “Trust”, invece visualizza il nostro livello di
         fiducia nell’utente. Questi parametri andranno modificati a
         seconda delle nostre esigenze nella sezione proprietà di ogni
         certificato.

   7.2.2 PGPmail

         Il centro di raccolta di tutte le funzioni principali:


                             Encript          Wipe




                          Sign      Encript
      PGPkeys                       and Sign         Decript        Freespace
                                                     and Verify     Wipe



Fabio Pustetto     Posta elettronica sicura: X.509 e PGP          Pagina 97 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         Per le nostre esigenze, le funzioni necessarie, ovviamente, sono
         PGPkeys (vedi paragrafo precedente) e le combinazioni di:
            •    Sign: firma la mail o il file da inviare;
            •    Verify: verifica la firma ricevuta;
            •    Encript: cifra la mail o il file da inviare;
            •    Decript: decifra la mail o il file ricevuto.

   7.2.3 Esempio pratico




         Dopo aver composto la mail, si seleziona la voce “Current
         Window” ed “Encrypt and Sign” nel PGPtray.
         Si selezionano le chiavi pubbliche dei destinatari (possono
         essere anche più d’uno: l’email è cifrata con la chiave di
         sessione che a sua volta sarà cifrata con tutte le chiavi
         pubbliche scelte); a questo punto PGP richiede la passphrase
         necessaria per accedere alla chiave privata (per la firma) e
         restituisce la mail firmata e cifrata.




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP        Pagina 98 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004              www.dsi.unive.it




         In modo simmetrico, quando riceveremo una mail cifrata e
         firmata, si useranno le funzionalità “Decrypt and Verify” della
         PGPtray.


         Nella versione licenziata, infine, PGP si integra con i Mail Agent
         più conosciuti con dei pulsanti che semplificano ulteriormente
         l’utilizzo di queste funzionalità.


   7.3           Confronto tra PGP e X.509

         Ora che abbiamo visto le due implementazioni con filosofie così
         diverse per lo stesso scopo, vediamo di riassumerne le
         differenze    sostanziali   e   di   delineare      un   profilo   ideale
         dell’utilizzatore dell’uno e dell’altra variante.




Fabio Pustetto      Posta elettronica sicura: X.509 e PGP          Pagina 99 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004                 www.dsi.unive.it



         Nell’utilizzo corrente, certificati PGP e X.509 differiscono in:



                          PGP                                  X.509

         Certificati personali prodotti dagli Certificati emessi da Autorità          di
         stessi possessori della chiave privata Certificazione professionali

         Certificati     (chiave   pubblica) Certificati autenticati dalla gerarchia
         autenticati dagli utenti stessi (o di Autorità di Certificazione
         gruppi di utenti)

         Cifratura di file (non solo email)     Possibilità di certificare anche la
                                                persona fisica

         Può essere difficile scoprire false Facile     veirifcare   autenticità   della
         autenticazioni                      firma

         Meccanismo di tolleranza agli errori Possibilità di attribuire valore legale
         nel caso in cui utenti nella nostra ai certificati firmati
         rete di fiducia non siano in grado di
         autenticare in sicurezza.

         Compressione degli oggetti cifrati     Difficile mantenere PKI



         Charles Breed (vedi [17]), riassume così le principali differenze
         tra i due tipi di certificati: X.509 è stato definito nel 1988 da
         ISO/IEC/ITU con una struttura rigida, codificata in ASN.1, e un
         singolo emittente (CA). PGP, invece, è nato dalla volontà di un
         uomo (Philiph Zimmermann) con l’aiuto della comunità Open
         Source (solo ora PGP è nelle mani di IETF con il gruppo Open-
         PGP) e si può considerare come un contenitore di firme su
         specifici attributi.


         X.509 è legato al directory service X.500, anche se ora può
         usare il protocollo LDAP per accedere ai certificati, così come
         PGP.


         In sintesi, i certificati digitali sono una piccola ma fondamentale
         componente della grande struttura PKI




Fabio Pustetto      Posta elettronica sicura: X.509 e PGP            Pagina 100 di 118
www.unive.it           Tesi di Laurea A. A. 2003/2004              www.dsi.unive.it




         Quando PGP fu creato, c’erano molte cose che i certificati X.509
         non offrivano, per esempio:
            •    Certificati PGP erano molto più piccoli (in termini di
                 spazio     occupato      per     rappresentare     le   stesse
                 informazioni) di quelli X.509;
            •    X.509 potevano contenere una sola firma che ne attesti
                 la validità, forzandoli in un modello strettamente
                 gerarchico. PGP, invece si orienta verso un modello web-
                 like, in cui sono possibili più firme che rispecchiano le
                 reali relazioni tra utenti e certificati.




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP          Pagina 101 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



            •    Certificati PGP sono self-generated e non richiedono
                 interazioni esterne prima del loro utilizzo. X.509, invece,
                 richiede che il certificato sia emesso e firmato da
                 un’autorità di certificazione.


         Ma forse ciò che più distingue PGP da X.509 è l’utenza a cui si
         rivolgono. Mentre X.509 fa del valore legale e della possibilità di
         certificare in modo inequivocabile tutte le informazioni che esso
         contiene il suo punto di forza, PGP si basa sulla comunità di
         utenti per creare delle vere e proprie reti affidabili di
         certificazioni. Al contrario, mentre mantenere un’infrastruttura
         PGP è estremamente semplice, costruire un’infrastruttura PKI
         completa (standalone) è molto complesso e laborioso.


         Ecco perché mi sento di consigliare l’utilizzo di PGP a chi
         necessita solo di un po’ di riservatezza nella comunicazione via
         email, magari promovendolo anche tra i contatti con cui si
         dialoga abitualmente. Una volta scambiata la chiave pubblica
         con una certa perizia, sarà molto semplice ottenere delle
         comunicazioni affidabili e far crescere la propria comunità di
         utenti all’interno della rete Web of Trust, come presentata nei
         capitoli precedenti. PGP non ruba spazio ad X.509, ha solo
         riempito un vuoto lasciato dalla complessità di questo tipo di
         infrastruttura, rendendo la riservatezza un bene a disposizione
         di chiunque la voglia e non solo per pochi privilegiati.


         Per questo Philip Zimmermann è stato oggetto di un’indagine
         criminale durata tre anni con l’accusa, secondo il governo
         statunitense,     di   aver    violato   le   norme     concernenti
         l’esportazione, allorché PGP si diffuse nel mondo dopo la sua




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP       Pagina 102 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         uscita nel 1991. Nonostante ciò PGP divenne il software di
         codificazione per la posta elettronica più usato al mondo.


         X.509 però non perde valore nel confronto con PGP. Ad oggi
         importanti protocolli di autenticazione su Web richiedono l’uso
         di certificati digitali X.509. Si pensi ad https che usa il protocollo
         SSL/TLS per le transazioni sicure in applicazioni quali e-
         commerce, e-banking, e-trading, tanto in voga negli ultimi anni
         e in continuo trend positivo.
         Questo tipo di certificati, perciò, sono insostituibili per chi fa
         della rete il proprio negozio virtuale, che voglia accettare
         pagamenti con carta di credito o per chi deve dialogare con
         utenti che non conosce e deve porsi in modo inequivocabile.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP        Pagina 103 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004        www.dsi.unive.it



                                APPENDICE
   Legenda delle notazioni usate nelle figure

         Ks = chiave di sessione
         KUa = chiave pubblica di A
         EC = cifratura convenzionale
         DC = decifratura convenzionale
         || = concatenazione
         KRa = chiave privata di A
         EP = cifratura a chiave pubblica
         DP = decifratura a chiave pubblica
         H = funzione di Hash
         Z = compressione con algoritmo ZIP
         R64 = conversione al formato ASCII

   Algoritmo di Diffie-Hellman

         Nel 1976 Diffie ed Hellman hanno descritto un protocollo per lo
         scambio di una chiave segreta sopra un canale insicuro; il
         protocollo, utilizzato da due interlocutori A e B, può essere
         descritto come segue:


         A e B scelgono un insieme di interi G=[0,N-1] pubblicamente ed
         un suo elemento s.
         A sceglie in modo casuale un elemento a di G, calcola
         sa mod N e lo invia a B.
         B sceglie in modo casuale un elemento b di G, calcola
         sb mod N e lo invia ad A.
         A, ricevuto sb, calcola K= (sb)a mod N.
         B, ricevuto sa, calcola K= (sa)b mod N.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP   Pagina 104 di 118
www.unive.it             Tesi di Laurea A. A. 2003/2004        www.dsi.unive.it



         In questo modo entrambi gli interlocutori possiedono la chiave
         K ma sopra il canale insicuro sono stati trasferiti solo N, s,
         samod N ed sbmod N che non consentono di ricostruire K. In
         realtà la determinazione di a noti s ed sa richiede la soluzione
         del problema del logaritmo discreto che consiste nella
         determinazione dell’intero che corrisponde al logaritmo in una
         base intera di un intero di cui è noto solo resto della divisione
         rispetto al modulo N. Tale problema è computazionalmente
         difficile.

   Algoritmo RSA

         Proposto nel 1978 da Rivest, Shamir e Adleman [35], da cui il
         nome, è il primo sistema di crittografia a chiavi pubbliche
         basato sui concetti proposti da Diffie ed Hellman ed è anche
         quello attualmente più diffuso ed utilizzato.
         Il metodo si basa sulla fattorizzazione di interi di grandi
         dimensioni e per utilizzarlo ciascun interlocutore deve compiere
         le seguenti azioni:


         Scegliere due grandi interi p e q che siano primi; il loro prodotto
         corrisponde al valore di N utilizzato nel calcolo del modulo nelle
         operazioni di codifica e decodifica.
         Scegliere un intero c, primo rispetto ad T=(p-1)*(q-1), da
         utilizzare quale chiave pubblica di codifica Kp.
         Calcolare l’intero d per il quale risulta c*d mod T=1, che verrà
         usato come chiave segreta di decodifica Ks.
         Rendere pubblici N e la chiave Kp=c.


         Il messaggio cifrato X corrispondente ad un messaggio M si
         ottiene dalla relazione:



Fabio Pustetto        Posta elettronica sicura: X.509 e PGP   Pagina 105 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         X = Mc mod N
         mentre la decodifica avviene secondo la relazione:
         Xd mod N = (Mc mod N)d mod N = Mcd mod N = M.
         La sicurezza dello RSA è affidata alla difficoltà di determinare i
         fattori primi di un intero quando questo è molto grande,
         difficoltà che aumenta in modo esponenziale al crescere del
         numero di bit usati per la chiave.

   Comandi principali di OpenSSL

         I comandi di OpenSSL più importanti per gestire un server PKI
         sono:
         x509: utility per certificati multi purpose. Può essere usato per
         visualizzare informazioni sul certificato, convertire certificati in
         altre forme, firmare certificati come una piccola CA oppure
         modificare la gerarchia del certificato.
         openssl x509 [-inform DER|PEM|NET] [-outform
         DER|PEM|NET] [-keyform DER|PEM] [-CAform
         DER|PEM] [-CAkeyform DER|PEM] [-in filename] [-
         out filename] [-serial] [-hash] [-subject] [-
         issuer] [-nameopt option] [-email] [-startdate]
         [-enddate] [-purpose] [-dates] [-modulus] [-
         fingerprint] [-alias] [-noout] [-trustout] [-
         clrtrust] [-clrreject] [-addtrust arg] [-
         addreject arg] [-setalias arg] [-days arg] [-
         set_serial n] [-signkey filename] [-x509toreq]
         [-req] [-CA filename] [-CAkey filename] [-
         CAcreateserial] [-CAserial filename] [-text] [-
         C] [-md2|-md5|-sha1|-mdc2] [-clrext] [-extfile
         filename] [-extensions section] [-engine id]


         req: crea ed elabora richieste di certificati nel formato
         PKCS#10. Può anche creare certificati self signed per usarli
         come root CA.
         openssl req [-inform PEM|DER] [-outform
         PEM|DER] [-in filename] [-passin arg] [-out
         filename] [-passout arg] [-text] [-pubkey] [-
         noout] [-verify] [-modulus] [-new] [-rand


Fabio Pustetto    Posta elettronica sicura: X.509 e PGP      Pagina 106 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it


         file(s)] [-newkey rsa:bits] [-newkey dsa:file]
         [-nodes] [-key filename] [-keyform PEM|DER] [-
         keyout filename] [-[md5|sha1|md2|mdc2]] [-
         config filename] [-subj arg] [-x509] [-days n]
         [-set_serial n] [-asn1-kludge] [-newhdr] [-
         extensions section] [-reqexts section] [-utf8]
         [-nameopt] [-batch] [-verbose] [-engine id]


         pkcs12: permette di creare e analizzare file PKCS#12, usati da
         molti programmi, inclusi Netscape, MSIE e MS Outlook.
         openssl pkcs12 [-export] [-chain] [-inkey
         filename] [-certfile filename] [-name name] [-
         caname name] [-in filename] [-out filename] [-
         noout] [-nomacver] [-nocerts] [-clcerts] [-
         cacerts] [-nokeys] [-info] [-des] [-des3] [-
         idea] [-nodes] [-noiter] [-maciter] [-twopass]
         [-descert] [-certpbe] [-keypbe] [-keyex] [-
         keysig] [-password arg] [-passin arg] [-passout
         arg] [-rand file(s)]


         ca: la minima applicazione per una CA. Può essere usato per
         firmare certificati in vari formati e generare liste CRL. Mantiene
         un database testuale di certificati distribuiti e del loro stato.
         openssl ca [-verbose] [-config filename] [-name
         section] [-gencrl] [-revoke file] [-crl_reason
         reason] [-crl_hold instruction] [-
         crl_compromise time] [-crl_CA_compromise time]
         [-subj arg] [-crldays days] [-crlhours hours]
         [-crlexts section] [-startdate date] [-enddate
         date] [-days arg] [-md arg] [-policy arg] [-
         keyfile arg] [-key arg] [-passin arg] [-cert
         file] [-selfsign] [-in file] [-out file] [-
         notext] [-outdir dir] [-infiles] [-spkac file]
         [-ss_cert file] [-preserveDN] [-noemailDN] [-
         batch] [-msie_hack] [-extensions section] [-
         extfile section] [-engine id]


         Lo script perl CA.pl è un’interfaccia amichevole per le
         applicazioni di OpenSSL. Fornisce i relativi argomenti al
         comando openssl per alcune operazioni certificate. È stato
         creato per semplicizzare il processo di creazione e gestione dei
         certificati con l’uso di semplici opzioni.


Fabio Pustetto    Posta elettronica sicura: X.509 e PGP        Pagina 107 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004         www.dsi.unive.it


         CA.pl [-?] [-h] [-help] [-newcert] [-newreq] [-
         newreq-nodes] [-newca] [-xsign] [-sign] [-
         signreq] [-signcert] [-verify] [files]


         Es: creo una CA, creo una richiesta, firmo la richiesta e creo il
         file PKCD#12 che contiene il certificato:
         CA.pl   -newca
         CA.pl   -newreq
         CA.pl   -signreq
         CA.pl   -pkcs12 "My Test Certificate"

   Log emissione certificati

         [fabio@localhost fabio]$ openssl genrsa -des3 -
         out fabio.key 1024
         Generating RSA private key, 1024 bit long
         modulus
         ......++++++
         ..........++++++
         e is 65537 (0x10001)
         Enter PEM pass phrase:
         Verifying password - Enter PEM pass phrase:

         [fabio@localhost fabio]$ openssl req -new -key
         fabio.key -out fabio.csr
         Using configuration from
         /usr/lib/ssl/openssl.cnf
         Enter PEM pass phrase:
         You are about to be asked to enter information
         that will be incorporated
         into your certificate request.
         What you are about to enter is what is called a
         Distinguished Name or a DN.
         There are quite a few fields but you can leave
         some blank
         For some fields there will be a default value,
         If you enter '.', the field will be left blank.
         -----
         Country Name (2 letter code) [AU]:IT
         State or Province Name (full name) [Some-
         State]:Italia
         Locality Name (eg, city) []:Venezia
         Organization Name (eg, company) [Internet
         Widgits Pty Ltd]:Università Ca' Foscari
         Organizational Unit Name (eg, section)
         []:dipartimento di Informatica



Fabio Pustetto    Posta elettronica sicura: X.509 e PGP    Pagina 108 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004        www.dsi.unive.it


         Common Name (eg, YOUR name) []:Fabio Pustetto
         Email Address []:fpustett@dsi.unive.it

         Please enter the following 'extra' attributes
         to be sent with your certificate request
         A challenge password []:
         An optional company name []:studente

         [fabio@localhost fabio]$ openssl genrsa -des3 -
         out CA.key 2048
         Generating RSA private key, 2048 bit long
         modulus
         ...............................................
         ....................+++
         ................+++
         e is 65537 (0x10001)
         Enter PEM pass phrase:
         Verifying password - Enter PEM pass phrase:

         [fabio@localhost fabio]$ openssl req -new -x509
         -key CA.key -out CA.cert
         Using configuration from
         /usr/lib/ssl/openssl.cnf
         Enter PEM pass phrase:
         You are about to be asked to enter information
         that will be incorporated
         into your certificate request.
         What you are about to enter is what is called a
         Distinguished Name or a DN.
         There are quite a few fields but you can leave
         some blank
         For some fields there will be a default value,
         If you enter '.', the field will be left blank.
         -----
         Country Name (2 letter code) [AU]:IT
         State or Province Name (full name) [Some-
         State]:Italia
         Locality Name (eg, city) []:Venezia
         Organization Name (eg, company) [Internet
         Widgits Pty Ltd]:Università Ca' Foscari
         Organizational Unit Name (eg, section)
         []:dipartimento di Informatica
         Common Name (eg, YOUR name) []:admin
         Email Address []:info@dsi.unive.it

         [fabio@localhost fabio]$ mkdir -p
         demoCA/newcerts
         [fabio@localhost fabio]$ touch demoCA/index.txt



Fabio Pustetto   Posta elettronica sicura: X.509 e PGP   Pagina 109 di 118
www.unive.it        Tesi di Laurea A. A. 2003/2004        www.dsi.unive.it


         [fabio@localhost fabio]$ echo '01' >
         ./demoCA/serial

         [fabio@localhost fabio]$ openssl ca -keyfile
         CA.key -cert CA.cert -in fabio.csr -out
         fabio.cert
         Using configuration from
         /usr/lib/ssl/openssl.cnf
         Enter PEM pass phrase:
         Check that the request matches the signature
         Signature ok
         The Subjects Distinguished Name is as follows
         countryName           :PRINTABLE:'IT'
         stateOrProvinceName   :PRINTABLE:'Italia'
         localityName          :PRINTABLE:'Venezia'
         organizationName      :T61STRING:'Università
         Ca' Foscari'
         organizationalUnitName:PRINTABLE:'dipartimento
         di Informatica'

         [fabio@localhost fabio]$ less fabio.key >
         fabio.pem
         [fabio@localhost fabio]$ less fabio.cert >>
         fabio.pem
         [fabio@localhost fabio]$ openssl pkcs12 –export
         –in fabio.pem –out fabio.p12 –name “Fabio
         Pustetto”




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP   Pagina 110 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



                                GLOSSARIO
         Active Directory
         Rende disponibile un unico archivio per tutte le informazioni e
         le credenziali della rete. La PKI di Windows 2000 utilizza
         questo archivio per le informazioni sulle chiavi pubbliche. Il
         vantaggio immediato è: nessun nuovo strumento da imparare,
         nessun componente da installare o applicazione da gestire.
         Questo aspetto è in netto contrasto con i componenti PKI che
         creano propri archivi distinti per i dati dei certificati e degli
         elenchi di certificati revocati. Con queste soluzioni si è costretti
         a gestire database separati per i dati di utenti, computer e PKI
         anziché conservarli in un unico archivio totalmente integrato.
         Il servizio Active Directory supporta inoltre controlli di accesso
         minuziosi, affinché gli amministratori possano selezionare
         accuratamente gli utenti autorizzati a vedere, modificare e
         copiare le informazioni della directory

         Certificazione
         Risultato della procedura informatica, applicata alla chiave
         pubblica e rilevabile dai sistemi di validazione, mediante la
         quale si garantisce la corrispondenza biunivoca tra chiave
         pubblica e soggetto titolare cui essa appartiene, si identifica
         quest'ultimo e si attesta il periodo di validità della predetta
         chiave ed il termine di scadenza del relativo certificato, in ogni
         caso non superiore a tre anni. ([5] art 1, h)




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP        Pagina 111 di 118
www.unive.it         Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         Chiave di sessione
         Chiave simmetrica temporanea che è valida solo per un breve
         periodo. Una chiave di sessione è tipicamente un numero
         casuale che può essere scelto da una delle due parti della
         conversazione, da tutte e due le parti o da una terza parte
         riconosciuta.

         Chiave privata
         Elemento della coppia di chiavi asimmetriche, destinato ad
         essere conosciuto soltanto dal soggetto titolare, mediante il
         quale si appone la firma digitale sul documento informatico o
         si decifra il documento informatico in precedenza cifrato
         mediante la corrispondente chiave pubblica. ([5] art 1, e)

         Chiave pubblica
         Elemento della coppia di chiavi asimmetriche destinato ad
         essere reso pubblico, con il quale si verifica la firma digitale
         apposta sul documento informatico dal titolare delle chiavi
         asimmetriche    o   si   cifrano   i   documenti   informatici   da
         trasmettere al titolare delle predette chiavi. ([5] art 1, f)

         Chiavi asimmetriche
         Coppia di chiavi crittografiche, una privata ed una pubblica,
         correlate tra loro, da utilizzarsi nell'ambito dei sistemi di
         validazione o cifratura di documenti informatici. ([5] art 1, d)

         Directory Service
         Uno o più server contenenti le informazioni sugli utenti, tra le
         quali il legame tra nome utente e indirizzo di rete e altre
         informazioni più specifiche.




Fabio Pustetto   Posta elettronica sicura: X.509 e PGP        Pagina 112 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004            www.dsi.unive.it



         Firewall
         Letteralmente “muro di fuoco”. Nelle configurazioni più
         semplici consiste in un computer interposto tra la rete interna
         e l’esterno. Tutto il traffico da e per la rete protetta deve
         passare attraverso il firewall che si occuperà di filtrare i
         pacchetti secondo le regole volute.

         Firma digitale
         Risultato della procedura informatica (validazione) basata su
         un sistema di chiavi asimmetriche a coppia, una pubblica e
         una privata, che consente al sottoscrittore tramite la chiave
         privata    e    al   destinatario    tramite   la   chiave   pubblica,
         rispettivamente,      di   rendere    manifesta     e   di   verificare
         provenienza e integrità di un documento informatico o di un
         insieme di documenti informatici. ([5] art 1, b)

         ITU
         International Telecommunication Union. Organismo situato a
         Ginevra, ex CCITT, per l’emissione di standard internazionali di
         telecomunicazioni (protocolli OSI), concordati fra i governi e le
         compagnie private.

         LDAP
         Lightweight Directory Access Protocol, protocollo usato per i
         Directory Server, simili ai database relazionali ma privilegiano
         la velocità di ricerca e prevedono linguaggio di interrogazione
         molto semplice e la distinzione tra i privilegi degli utenti.

         PEM
         Privacy-Enhanced Mail: uno standard Internet per lo scambio
         di messaggi di posta confidenziali




Fabio Pustetto     Posta elettronica sicura: X.509 e PGP         Pagina 113 di 118
www.unive.it          Tesi di Laurea A. A. 2003/2004                www.dsi.unive.it



         PKCS
         Public-Key Cryptography System: è un set di protocolli
         standard informali, sviluppati dalla RSA per rendere possibile
         lo scambio di informazioni sicure su una rete o informazioni
         relative ai certificati X.509.

         Policy
         Set di regole e informazioni contenute nel certificato che ne
         determina l’applicabilità in un certo ambiente.

         RFC
         Request For Comments: meccanismo di emissione degli
         standard Internet. Sono documenti il cui codice numerico
         identifica   il   particolare    standard   (protocolli,    interfacce,
         applicazioni, ecc.).

         X.500
         Una serie di protocolli definiti dalla ISO e dalla ITU per
         realizzare un sistema di Directory Service aperto multivendor.
         La famiglia di protocolli X.500 include DAP, DSP e DISP. Il
         protocollo X.500 è oggi alla sua terza versione.




Fabio Pustetto    Posta elettronica sicura: X.509 e PGP        Pagina 114 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004                   www.dsi.unive.it



                                  BIBLIOGRAFIA
   [1]   Autorità di Certificazione Thawte
         http://thawte.ascia.net/index.php

   [2]   Autorità di Certificazione, Verisign
         http://www.verisign.com/products/pki/whitepapers.html

   [3]   Brennen Alex, “GnuPG Keysigning Party HOWTO”
         http://www.cryptnet.net/fdp/crypto/gpg-party.html
         http://www.cryptnet.net/fdp/crypto/gpg-party/gpg-party.it.html

   [4]   Centro Nazionale per l’Informatica nella Pubblica Amministrazione
         http://www.cnipa.gov.it

   [5]   Decreto del Presidente della Repubblica 10 novembre 1997, n. 513 –
         “Regolamento contenente i criteri e le modalità per la formazione,
         l'archiviazione e la trasmissione di documenti con strumenti informatici e
         telematici a norma dell'articolo 15, comma 2, legge 15 marzo 1997, n. 59”
         http://www.interlex.it/testi/dpr51397.htm

   [6]   Diffie W. e Hellman M., "New directions in cryptography", in "IEEE
         Transactions on Information Theory", vol. 22 (1976), pp. 644-654

   [7]   Ellison Carl, “SPKI/SDSI and the Web of Trust”
         http://world.std.com/~cme/html/web.html

   [8]   Feisthammel Patrick, “Explanation of the web of trust of PGP”
         http://www.rubin.ch/pgp/weboftrust.en.html

   [9]   Gli approfondimenti di www.tariffe.it
         www.tariffe.it/approfondimenti/approfondimenti_certificati_digitali.htm

   [10] Graphwiz, AT&T Labs-Research
         http://www.research.att.com/sw/tools/graphviz/

   [11] IETF RFC 1319: “The MD2 Message-Digest Algorithm, Internet Activities
         Board”, April 1992, written by Kaliski B.,
         http://www.ietf.org/rfc/rfc1319.txt




Fabio Pustetto       Posta elettronica sicura: X.509 e PGP           Pagina 115 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004                    www.dsi.unive.it



   [12] IETF RFC 1321: “The MD5 Message Digest Algorithm, Internet Activities
        Board”, April 1992, written by Rivest R. L.
         http://www.ietf.org/rfc/rfc1321.txt

   [13] IETF RFC 2440: “OpenPGP specification”, November 1998, written by Jon
        Callas, Lutz Donnerhacke, Hal Finney, and Rodney Thayer
         http://www.ietf.org/rfc/rfc2440.txt

   [14] IETF RFC 2560: “X.509 Internet Public Key Infrastructure Online Certificate
        Status Protocol – OCSP”, June 1999, written by M. Myers, R. Ankney, A.
        Malpani, C. Adams, S. Galperin
         http://www.ietf.org/rfc/rfc2560.txt

   [15] IETF RFC 3156: “OpenPGP/MIME specification”, August 2001, written by
        Michael Elkins, Dave del Torto, Raph Levien, and Thomas Roessler
         http://www.ietf.org/rfc/rfc3156.txt

   [16] IETF RFC 3447: “Public-Key Cryptography Standards (PKCS) #1: RSA
        Cryptography Specifications V. 2.1”, Novembre 2003, written by Kaliski B.
         http://www.ietf.org/rfc/rfc3447.txt

   [17] Information Security Magazine
         http://infosecuritymag.techtarget.com/index.shtml

   [18] International    Organization     for    Standardization   and     International
        Electrotechnical Commission Joint Technical Committee 1, “ISO/IEC Draft
        International Standard 10118-3: Information technology – Security
        techniques - Hash functions - Part 3: Dedicated Hash functions”, 1996

   [19] Luca Bechelli, Security Consultant
         http://web.tiscalinet.it/LucaBechelli

   [20] Mandrake Linux, distribuzione Linux
         http://www.mandrakelinux.com

   [21] Menezes A. J., van Oorschot P. C., Vanstone S. A., “Handbook of Applied
        Cryptography”, CRC Press, 1997
        http://www.cacr.math.uwaterloo.ca/hac/




Fabio Pustetto      Posta elettronica sicura: X.509 e PGP                Pagina 116 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004                   www.dsi.unive.it



   [22] Microsoft TechNet
         http://www.microsoft.com/italy/technet/solutions/affidabilita/cryptki/
         http://www.microsoft.com/italy/technet/risorse/info_tech/windows2000/sm
         artc04/default.asp
         http://www.microsoft.com/italy/technet/risorse/info_tech/windows2000/pki
         ntro/

   [23] P.G.P., canzone scritta e interpretata da Leslie Fish.
         http://www.eff.org/Net_culture/Folklore/Humor/pgp.song (testo)
         http://www.prometheus-music.com/audio/pgp.mp3 (audio mp3)
         http://www.prometheus-music.com/eli/leslie.html
         NB: P.G.P è protetta da copyright del 18/12/1993 a nome di Lesile Fish e
         Random Factors ed essi detengono tutti i diritti legali su di esse.

   [24] PC Professionale numero 150, “Firme digitali e crittografia con Linux”,
        Settembre 2003, di Marco Fioretti, pagine 391-397

   [25] PGP Home Pages
         http://www.pgpi.org
         http://www.pgp.com
         http://www.openpgp.org

   [26] PGP Keyservers
         ldap://keyserver.pgp.com
         ldap://europe.keys.pgp.com

   [27] Pironti M. “La firma elettronica: strumento per la sicurezza delle
        informazioni”, Rassegna dauna dei dottori commercialisti, IV trim. 2000.
         http://www.di.unito.it/~pironti/firmaelettr.PDF

   [28] Practical Attacks on PGP
         http://www.privacy.com.au/pgpatk.html

   [29] Progetto Apache e Apache-SSL
         http://www.apache.org/
         http://www.apache-ssl.org/

   [30] Progetto ElyCA - Freashmeat per PKI, di Pablo Neira
         http://www.freashmeat.net




Fabio Pustetto      Posta elettronica sicura: X.509 e PGP              Pagina 117 di 118
www.unive.it            Tesi di Laurea A. A. 2003/2004                    www.dsi.unive.it



   [31] Progetto mod_ssl
         http://www.modssl.org

   [32] Progetto OpenCA
         http://www.openca.org/

   [33] Progetto OpenSSL
         http://www.openssl.org/
         http://www.openssl.org/docs/apps/openssl.html

   [34] Rivest R. L., “The MD4 Message Digest Algorithm”, in “Advances in
         Cryptology - CRYPTO ‘90”, Lecture Notes in Computer Science, n. 537,
         Springer-Verlag, Berlino, 1991, pp. 303-311

   [35] Rivest R. L., Shamir A. e Adleman L., “A Method for Obtaining Digital
         Signatures and Public-Key Cryptosystems”, in "Communications of the
         ACM", vol. 21 (1978), n. 2, pp. 120-126

   [36] Sgarro Andrea, “Crittografia”, Franco Muzzio Editore, 1993

   [37] Stallings W. “Cryptography and Network Security”, Prentice Hall, 1998

   [38] Stinson, Douglas R. “Cryptography Theory and Pratice”, CRC Press, 1995

   [39] Tanenbaum A. S., “Reti di computer”, Prentice Hall, 1998

   [40] Zimmermann Philip R., bibliografia e homepage
         http://www.philzimmermann.com/IT/background
         http://www.mediamente.rai.it/biblioteca/biblio.asp?id=363&tab=bio

   [41] Zimuel Enrico, “Introduzione alla crittografia e alla crittoanalisi”
         http://www.iclc.org/slides/slidespdf.pdf




Fabio Pustetto       Posta elettronica sicura: X.509 e PGP              Pagina 118 di 118

Tesi Triennale - X509 e PGP

  • 1.
    UNIVERSITÀ CA’ FOSARI– VENEZIA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Tesi di Laurea Triennale Laureando: Fabio Pustetto POSTA ELETTRONICA SICURA: X.509 E PGP Relatore: Chiar.mo prof. Riccardo Focardi Anno Accademico 2003/2004
  • 2.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it “Se la segretezza è fuorilegge, solamente i fuorilegge avranno segretezza” Philip R. Zimmermann Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 2 di 118
  • 3.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it SOMMARIO SOMMARIO ............................................................................ 3 PREFAZIONE.......................................................................... 5 1 INTRODUZIONE .............................................................. 6 1.1 Contesto normativo in Europa ......................................... 8 2 REQUISITI..................................................................... 14 2.1 Autenticazione ............................................................. 16 2.2 Riservatezza/Segretezza ............................................... 16 2.3 Integrità ...................................................................... 17 2.4 Non ripudio.................................................................. 18 3 TECNOLOGIE ................................................................. 19 3.1 Algoritmi crittografici simmetrici..................................... 22 3.2 Algoritmi crittografici asimmetrici ................................... 25 3.3 Accenni di crittoanalisi .................................................. 27 3.4 Hashing....................................................................... 32 3.5 Firma .......................................................................... 34 3.6 Come funziona in realtà ................................................ 35 4 GESTIONE DELLE CHIAVI.............................................. 37 4.1 Distribuzione di certificati .............................................. 39 4.1.1 Certificate Server ................................................... 39 4.1.2 Keyserver.............................................................. 40 4.2 Revoca di Certificati Digitali ........................................... 40 4.2.1 Certificate Revocation List (CRL) ............................. 41 4.2.2 Online Certificate Status Protocol (OCSP)................. 43 4.3 Public Key Infrastructure (PKI) ...................................... 43 4.4 Web of Trust (WoT) ..................................................... 49 4.4.1 Signing party: un esempio ...................................... 51 5 X.509 ............................................................................. 54 5.1 X.509 Certificate Format ............................................... 55 5.1.1 Standard PKCS ...................................................... 59 5.1.2 La versione 4......................................................... 61 5.2 Come si ottiene un nuovo certificato .............................. 61 5.3 Come si ottiene il certificato di un utente........................ 65 Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 3 di 118
  • 4.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 6 PGP................................................................................ 68 6.1 Chiavi in PGP ............................................................... 72 6.1.1 Key ID .................................................................. 73 6.1.2 Key Ring ............................................................... 73 6.2 Generazione messaggi .................................................. 74 6.3 Horizontal Trusting = fiducia ......................................... 76 6.3.1 Web of Trust in PGP............................................... 78 6.4 PGP certificate format ................................................... 81 7 IN PRATICA…................................................................ 83 7.1 Produrre un certificato X.509v3 ..................................... 84 7.1.1 Installare una PKI in Windows ................................ 86 7.1.2 Installare una PKI in Linux...................................... 88 7.2 Produrre un certificato PGP ........................................... 95 7.2.1 PGPkeys................................................................ 97 7.2.2 PGPmail ................................................................ 97 7.2.3 Esempio pratico ..................................................... 98 7.3 Confronto tra PGP e X.509 ............................................ 99 Appendice ..........................................................................104 Legenda delle notazioni usate nelle figure ............................104 Algoritmo di Diffie-Hellman .................................................104 Algoritmo RSA ...................................................................105 Comandi principali di OpenSSL ............................................106 Log emissione certificati .....................................................108 Glossario............................................................................111 Bibliografia ........................................................................115 Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 4 di 118
  • 5.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it PREFAZIONE A fronte della rapida diffusione di tecnologie informatiche, dal trattamento delle informazioni alle comunicazioni, pochi si pongono il problema della gestione della sicurezza, nonostante lo studio di tecniche procede alla stessa velocità con cui gli intrusori riescono a violare le barriere. Un semplice messaggio di e-mail è diventato oramai il mezzo più diffuso di comunicare: è veloce, economico e consistente ma è privo di alcuni requisiti fondamentali: non si è sicuri di chi lo ha spedito, del contenuto originale del messaggio e della sua riservatezza. Questo è certamente irrilevante per lo scambio di barzellette tra colleghi, al contrario è fondamentale per professionisti che investono tempo, denaro e sacrifici nella loro professione, basata sulla comunicazione affidabile e sicura. La firma digitale è l’equivalente elettronico di una tradizionale firma apposta su carta. La sua funzione principale è perciò quella di attestare validità, autenticità e integrità di un documento. Si evita così che qualcuno possa intercettare e manipolare un documento riservato, spacciandolo per autentico. Dal punto di vista tecnico è una codifica crittografica del documento. Questo elaborato intende fornire le nozioni fondamentali sulle attuali tecnologie per la sicurezza della posta elettronica e intende investigare le due soluzioni più usate in nei diversi casi: utente domestico e professionale (azienda, università, …). Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 5 di 118
  • 6.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 1 INTRODUZIONE “L’arte della guerra ci insegna a confidare non sulla probabilità che il nemico non arriverà, ma sulla nostra stessa preparazione a riceverli; non sulla possibilità che essi non attaccheranno ma sul fatto che noi abbiamo reso le nostre postazioni inattaccabili” The Art of War, Sun Tzu Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 6 di 118
  • 7.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it L’avvento di reti “moderne” (Internet, Intranet) determina un utilizzo di massa delle potenzialità di connessione client-server al quale non è corrisposto un altrettanto rapido incremento della sicurezza nel nuovo ambiente. Il problema di Internet è che non si può mai con certezza sapere con chi si sta parlando o a chi si stanno inviando informazioni. Internet è totalmente anonima, almeno dal punto di vista degli utenti finali, sebbene è necessario ricordare che le autorità competenti hanno comunque i mezzi per identificare con certezza utenti nella rete commettono degli illeciti. Sicurezza nelle comunicazioni email significa poter richiedere delle condizioni o vincoli. Il mittente può richiedere quanto segue: • I dati sono trasmessi alla persona voluta o Se una spia li cattura gli deve essere impossibile comprendere il testo • I dati trasmessi non subiranno modifiche o Se una spia riesce a catturare e modificare i dati, ciò sarà segnalato a chi li riceve • I dati trasmessi sono visti solo dal destinatario o Solo il destinatario deve sapere in che modo poter visualizzare il testo (decifrare) • Il destinatario non può negare l’avvenuta ricezione del messaggio inviato (servizio di notariato) o La firma digitale autentica mittente, data e ora in cui il messaggio è stato inviato Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 7 di 118
  • 8.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Analogamente il destinatario può avere la necessità di richiedere una o più delle seguenti condizioni: • Il mittente è veramente quello dichiarato o Chiunque può mandare email a nome falso; devo poter riconoscere l’originale da un falso • I dati ricevuti sono quelli effettivamente inviati o Se il messaggio viene catturato e modificato da una spia durante il tragitto, il destinatario deve essere avvisato • I dati ricevuti non sono stati catturati da terzi o Nessuno deve poter interpretare il contenuto delle nostre comunicazioni, anche se riesce a catturare la nostra corrispondenza elettronica • Il mittente non può negare l’invio del messaggio o Avendo la certezza che il mittente è quello dichiarato, non potrà disconoscere il contenuto di email inviate o Esempio: una grossa ditta fornisce via email un preventivo per una gara d’appalto. Non potrà rifiutarsi di praticare il prezzo stabilito, anche se volutamente basso. Altre esigenze analoghe possono preoccupare i soggetti coinvolti, in funzione del valore che essi attribuiscono alle informazioni trasmesse o ricevute e quindi richiedere misure di sicurezza più o meno complesse. 1.1 Contesto normativo in Europa L’Unione Europea, nel corso degli ultimi anni, si è impegnata sul fronte delle nuove forme di comunicazione. Il Parlamento Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 8 di 118
  • 9.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Europeo ha invitato gli Stati Membri e la Commissione Europea a predisporre misure consistenti per assicurare l’integrità e l’autenticità dei documenti trasmessi per via telematica. Nell’autunno del 1997 la Commissione ha adottato una Comunicazione rivolta al Parlamento Europeo, al Comitato Economico e Sociale ed al Comitato delle Regioni, sollecitando un disegno comune per la firma digitale e la crittografia, strumenti ritenuti essenziali per una maggiore sicurezza del commercio telematico. Con una successiva Comunicazione si è richiesto al Parlamento Europeo l’elaborazione di una direttiva che formuli un riconoscimento, all’interno dell’Unione Europea, delle sottoscrizioni elettroniche attraverso la definizione dei requisiti essenziali per l’armonizzazione delle legislazioni degli Stati membri, e determini i meccanismi di cooperazione con Paesi terzi per un mutuo riconoscimento sulla base di accordi bilaterali o multilaterali. Molti paesi sono ancora ad una fase preparatoria dei lavori (così il Regno Unito), altri, invece, hanno introdotto negli ordinamenti interni alcune norme significative (Francia, Germania). L'Italia è il primo paese europeo ad aver attribuito piena validità giuridica ai documenti informatici grazie alla legge Bassanini ed al ruolo svolto da AIPA (Autorità per l'Informatica nelle Pubbliche Amministrazioni), ora CNIPA (Centro Nazionale per l’Informatica nella Pubblica Amministrazione, [4]). La materia della documentazione elettronica e della firma digitale ha trovato una disciplina nell’ordinamento giuridico italiano con il D.P.R. 10 novembre 1997, n. 513, “Regolamento recante criteri e modalità per la formazione, l’archiviazione e la Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 9 di 118
  • 10.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it trasmissione di documenti con strumenti informatici e telematici, a norma dell’articolo 15, comma 2, della legge 15 marzo 1997, n.59”. Il risultato, prodotto dalle norme del regolamento, è la piena rilevanza giuridica della documentazione informatica e la sua equiparazione alla tradizionale documentazione “cartacea”. All’intenso valore giuridico della disciplina regolamentare non si accompagna un equivalente valore pragmatico, in quanto, per quest’ultimo, occorrerà attendere l’emanazione di ulteriori ed indispensabili regolamenti tecnici di attuazione. Successivamente all’emanazione di tali regolamenti, il D.P.R. 513 diventerà pienamente operativo. Il regolamento si compone di tre capi. Il primo di questi, dedicato ai principi generali, si apre con l’enunciazione delle definizioni dei termini di carattere tecnico, utilizzati nel corso della disciplina giuridica. Alla nozione di documento informatico ed alla descrizione dei requisiti che lo caratterizzano, segue la disciplina dell’atto informatico come forma scritta e dell’efficacia probatoria ad esso attribuita e quella della validità e rilevanza attribuita alla copia di atti e documenti. Lo stesso capo si occupa (sommariamente) della disciplina delle attività da compiersi per il rilascio delle chiavi asimmetriche all’utente da parte dell’Autorità di certificazione, nonché degli obblighi inerenti entrambe le parti. Il secondo capo, rubricato “firma digitale”, si dedica alla validità e rilevanza a tutti gli effetti di legge dei contratti stipulati con strumenti informatici o per via telematica. L’attenzione è poi rivolta ai criteri di conclusione del contratto e di notifica del Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 10 di 118
  • 11.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it documento informatico, nonché alla segretezza della corrispondenza trasmessa per via informatica ed alla possibilità di effettuare pagamenti elettronici, come pure alla formazione di libri e scritture contabili, a carattere obbligatorio, in formato elettronico. Le successive disposizioni attengono all’autenticazione della firma digitale, riconosciuta ai sensi dell’art. 2703 cod. civ., ai criteri di validità e di applicazione delle chiavi di cifratura della pubblica amministrazione. Il secondo capo si chiude con la disciplina della firma digitale e del documento informatico nella pubblica amministrazione. Le norme di attuazione del regolamento sono contenute nel capo terzo, il quale pone alle pubbliche amministrazioni dei termini per l’adozione di piani di sviluppo e di realizzazione nonché di un rapporto tra costi e benefici del recupero su supporto informatico dei documenti e degli atti cartacei. Il sistema che attribuisce al documento informatico con firma digitale l’efficacia della scrittura privata (art.5) è così concepito: un’Autorità di certificazione, consultata da un utente interessato, descrive a quest’ultimo la procedura e concede il know how per la “generazione” di una coppia di chiavi. L’utente ha il dovere di custodire segretamente la propria “chiave privata”, che utilizzerà per apporre la firma; tuttavia, è data facoltà di depositare in forma segreta la chiave presso un notaio (secondo la disciplina del testamento segreto). La propria “chiave pubblica” verrà pubblicata in un registro telematico da parte del certificatore. Quest’ultimo, ricevuta la chiave pubblica dell’utente, emette un “certificato”, il quale garantisce la corrispondenza biunivoca tra chiave pubblica, Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 11 di 118
  • 12.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it necessaria per la verifica della firma, chiave privata e soggetto titolare. Il contenuto del certificato riguarda l’indicazione delle generalità della persona, della corrispondente chiave pubblica e del termine di scadenza (art. 1, h). La validità di tale certificato è stabilita in una durata massima di tre anni, ma può essere revocato, ossia perdere validità irretroattivamente, ovvero sospeso per un periodo di tempo determinato. Il regolamento si occupa di disciplinare i requisiti dei certificatori, i quali hanno il delicato compito di assicurare la corrispondenza, e quindi la titolarità, delle chiavi asimmetriche, e di conseguenza della firma digitale. Con riferimento al settore privato, per svolgere l’attività di certificatore occorre l’inclusione in un apposito elenco pubblico tenuto dall’Autorità per l’Informatica nella Pubblica Amministrazione (art. 8, comma 3). Il regolamento contiene norme la cui incidenza sul diritto sostanziale è estremamente rilevante, pur mancando un’immediata applicabilità, rinviata a successive norme tecniche. (tratto da [27], [5]) Per completezza, è utile sapere che il governo americano impedisce l’esportazione di software di cifratura che utilizzi chiavi di lunghezza tale da garantire la resistenza del cifrario per un periodo relativamente lungo. Un’analoga limitazione non si applica agli algoritmi di generazione e verifica di firme elettroniche a patto che questi non siano modificabili in modo da renderli utilizzabili per la cifratura. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 12 di 118
  • 13.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Per questo motivo PGP è stato coinvolto in varie controversie: nato come tool disponibile per tutti gratuitamente, il governo degli USA ha dichiarato che la possibilità da parte degli stranieri di ottenerlo, costituisce una violazione delle leggi riguardanti l’esportazione di armi. Per aggirare tali restrizioni, le ultime versioni sono prodotte fuori dagli Stati Uniti e con versioni diversificate. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 13 di 118
  • 14.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 2 REQUISITI “Ogni Egiziano riceve due nomi che sono conosciuti rispettivamente come il vero nome e il giusto nome, oppure il grande nome e il piccolo nome; mentre il giusto o piccolo nome sono resi pubblici, il vero o grande nome sembrano esser stati nascosti attentamente” The Golden Bought, Sir James George Frazer Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 14 di 118
  • 15.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Come anticipato, la certificazione elettronica consiste nell’utilizzare tecniche che consentano di attribuire a documenti elettronici la stessa validità degli analoghi cartacei e, se possibile, maggior sicurezza: mentre un documento cartaceo può essere manomesso e spacciato per autentico, con la certificazione elettronica ogni alterazione viene evidenziata, sia esso un documento testuale o un qualsiasi file binario. I nemici più comuni contro cui si vuole predisporre adeguate contromisure sono riassunte nella successiva tabella (da [39]): Avversario Scopo Studente Divertirsi curiosando nella posta altrui Hacker Verificare i sistemi di sicurezza; rubare dati Venditore Pretendere di rappresentare tutta Europa Scoprire il piano strategico di mercato di un Uomo d’affari concorrente Ex dipendente Vendicarsi per esser stato licenziato Cassiere Appropriarsi del denaro di una società Negare una promessa fatta a un acquirente Agente di cambio per email Truffatore Rubare numeri di carta di credito Spia Scoprire la forza militare di un nemico Terrorista Rubare segreti per una guerra batteriologica Per proteggere, cioè rendere sicuro, si intende predisporre contromisure di protezione per i rischi specifici. Rischio Requisito Frode Autenticazione Intercettazioni non autorizzata Riservatezza/Segretezza Modifica dati Integrità Diniego Non ripudio Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 15 di 118
  • 16.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Un testo scritto al computer è modificabile per definizione e se vogliamo usarlo come documento inoppugnabile dobbiamo renderlo “sicuro”, ossia non più modificabile senza che tale modifica venga segnalata. I decreti Europei ci impongono di ricorre alla cifratura utilizzando la tecnica delle coppie di chiavi, una segreta ed una pubblica, con varie attenzioni. 2.1 Autenticazione L’autenticazione è il procedimento utilizzato per verificare l’identità dell’utente o dell’autore di un documento. Questa verifica richiede lo scambio di informazioni segrete tra l’utente e l’applicazione che vuole utilizzare. Nel caso di email l’autenticazione ci assicura che il documento non sia un falso e che il mittente è proprio chi dice di essere. A tale scopo la firma elettronica accoda al testo un riassunto firmato con la chiave privata del mittente. I certificati X.509, illustrati nel corso del documento, consentono anche l’autenticazione tra Client e Server in una qualsiasi interazione che deve svolgersi in modo sicuro (es scambio di dati sensibili o Web Server autenticati), attraverso il protocollo SSL/https. 2.2 Riservatezza/Segretezza La segretezza consente ad utenti autorizzati di interpretare informazioni riservate negandole a tutti gli altri. Tali informazioni devono essere protette sia durante le operazioni di memorizzazione sia durante la trasmissione in rete. I dati memorizzati possono essere protetti con codifica o controllo di accesso. Il controllo di accesso consente all’utente di utilizzare Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 16 di 118
  • 17.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it la propria autorizzazione per accedere alle risorse disponibili; l’accesso viene limitato solo agli utenti autenticati ed autorizzati. Per la trasmissione in rete devono essere necessariamente codificate. La codifica richiede l’utilizzo di una chiave che consenta solo al legittimo destinatario di decifrare le informazioni. 2.3 Integrità Come un sigillo protegge il documento contenuto in una busta, la certificazione dovrà garantire la protezione delle informazioni dalle eventuali modifiche apportate da altri utenti non autorizzati. Gli algoritmi, perciò si occuperanno di applicare ai dati una funzione hash non invertibile. Il risultato della funzione, chiamato valore di controllo o impronta, viene cifrato e accodato ai dati. Il destinatario, per assicurarsi che i dati ricevuti non siano stati modificati, esegue la stessa funzione di hash del mittente sui dati e confronta il risultato ottenuto con il valore di controllo accodato ai dati. Se i dati non coincidono significa che sono stati modificati ed il destinatario può non accettarli. L’intruso che riuscisse ad intercettare i dati durante la trasmissione potrebbe modificarli con successo solamente conoscendo la chiave di codifica applicata con il secondo passaggio. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 17 di 118
  • 18.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 2.4 Non ripudio Per qualsiasi società è importante poter stipulare accordi vincolanti e legalmente validi anche tramite Internet. Fornitori e acquirenti esigono la certezza che un contratto stipulato non possa essere negato da nessuna delle due parti. Se da un lato chi invia non può disconoscere la paternità di un documento firmato digitalmente, dall’altro, chi riceve non può negarne l’esistenza. Entrambi si possono appellare alle varie informazioni che si integrano nella firma digitale quali potrebbero essere la data e l’ora esatta di invio del documento. La pubblica amministrazione, per ogni Area organizzativa, deve: • mantenere un registro informatico; • istituire un servizio e nominare un responsabile; • assicurare che venga effettuata la registrazione di protocollo dei documenti scambiati con soggetti esterni, come da Dpr 445/2000 (che contiene l’ex Dpr 428/98 e l’ex Dpr 513/97). Solo così possono garantire la non ripudiabilità di un documento informatico. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 18 di 118
  • 19.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 3 TECNOLOGIE “Storicamente sono stati quattro i gruppi di persone che hanno dato il loro contributo all’arte della crittografia: militari, corpo diplomatico, scrittori di diari e amanti …” Andrew S. Tanenbaum Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 19 di 118
  • 20.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Scopo di questo elaborato è analizzare le tecniche per proteggere le comunicazioni di informazioni tra elaboratori connessi in rete. Il modello di riferimento per reti di computer è ISO-OSI (Open System Interconnection) dell’International Standard Organization. Si compone di 7 livelli: fisico, collegamento dati, rete, trasporto, sessione, presentazione, applicazione. Per ognuno di questi livelli esistono tecnologie e procedure, anche estreme, per rendere sicure le comunicazioni e assieme partecipano al fine. Alcune proposte sono riassunte da [39]: Livello Procedure in ambito militare le dorsali più critiche vengono Fisico racchiuse in condotte sigillate contenenti gas Argo ad alta pressione (un po’ drastico, in realtà) su una rete punto a punto è possibile codificare ogni pacchetto appena lascia una macchina e decodificarlo appena arriva a destinazione, Data Link lasciando all’oscuro i livelli superiori. Questa soluzione fallisce se nel tragitto si attraversano router: essi infatti devono decodificare i pacchetti rendendoli vulnerabili agli attacchi è possibile installare un firewall per accettare o Rete scartare pacchetti è possibile codificare l’intera connessione da un Trasporto capo all’altro (da processo a processo) Vari software e algoritmi. Solo in questo livello è Applicazione possibile garantire non ripudio e autenticazione La tecnologia principale su cui si basano tutte le applicazioni inerenti alla sicurezza è la “crittografia”. Con questo termine si intende la tecnica per trasformare una sequenza di dati in chiaro in un'altra sequenza apparentemente incomprensibile: proteggere i dati originali rendendoli segreti. Solamente le Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 20 di 118
  • 21.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it persone autorizzate a conoscere quei dati possono operare il processo inverso, poichè solo loro posseggono la chiave per decifrarli. La crittografia classica è basata su 2 tipi di algoritmi: a chiave simmetrica (o segreta) e a chiave asimmetrica (o pubblica). I primi sono i più semplici e veloci. Si occupano della vera e propria crittografia del messaggio, i secondi stati sviluppati per ovviare alle due più grandi lacune degli algoritmi simmetrici: il problema della trasmissione della chiave utilizzata e del numero di chiavi necessarie tra coppie di utenti. A dire la verità sono abbastanza complessi, ma fondamentali per tutte le recenti applicazioni riguardanti la sicurezza online. cifratura decifratura testo originale testo cifrato testo in chiaro Un algoritmo crittografico • Lavora su una sequenza di dati iniziale da crittografare (testo in chiaro); • Genera una seconda sequenza contenente i dati crittografati (testo cifrato); • Basa il suo lavoro su una o più chiavi. La seconda tecnologia è detta hashing. Basandosi su una sequenza di dati potenzialmente infinita, consente di generarne un'altra, molto più piccola e di dimensione fissa, “rappresentativa” del contenuto della sequenza iniziale, detta hash, digest, riassunto o impronta. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 21 di 118
  • 22.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Utilizzandole entrambe è possibile realizzare firma digitale e crittografia delle email, ma anche applicazioni come trasmissioni dati crittografati con controllo degli errori, siti web sicuri (SSL), identificazione delle persone e altro ancora. 3.1 Algoritmi crittografici simmetrici Questi tipi di algoritmi si basano sulla conoscenza comune e assolutamente riservata tra mittente e destinatario di una chiave. Spesso l’algoritmo di codifica è conosciuto, secondo il principio di Kerckhoffs: “La sicurezza di un crittosistema non deve dipendere dalla segretezza dell’algoritmo usato, ma solo dalla segretezza della chiave”. Affinché gli estranei non riescano a comprendere il documento, potremmo sostituire ogni lettera nel documento con una successiva nell'alfabeto. Questo tipo di cifrario è detto “a sostituzione”. Uno dei primi esempi di utilizzo è attribuito a Cesare, che usava comunicare con i suoi legionari trasponendo di 3 lettere l’intero testo. In questo modo: a b c d e f g h i l m n o p q r s t u v z D E F G H I L M N O P Q R S T U V Z A B C Con questo cifrario, se un nemico avesse ricevuto il messaggio IALLN SUNPD GHO ZUDPRQZR non avrebbe potuto coglierne il significato. Un Romano, invece lo avrebbe tradotto facilmente in fuggi prima del tramonto Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 22 di 118
  • 23.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Solo il destinatario reale dovrà essere in grado di decifrarla, poichè è a conoscenza di come è stata trasformata la sequenza originale. La chiave per decifrare il messaggio è appunto sapere che ogni lettera è stata trasposta circolarmente di 3 posti nell'alfabeto. Per quanto semplice, questo algoritmo può essere considerato un algoritmo crittografico a chiave segreta. Lo stesso algoritmo, lavorando sugli stessi dati, avrebbe portato a sequenze cifrate diverse in base alla chiave utilizzata: +1 (successive), -1 (precedenti), +2 (successive delle successive), ecc... In questo algoritmo la chiave è rappresentata da un numero intero. Per decodificare il documento cifrato si utilizza un algoritmo che funziona al contrario, data una sequenza di dati e una chiave. La chiave utilizzata è la stessa che ha utilizzato l'algoritmo iniziale per cifrare i dati. cifratura decifratura testo originale testo cifrato testo in chiaro Con un algoritmo di questo tipo e una chiave così banale, si potrebbe provare a decifrarlo provando con tutte le 26 (il numero delle lettere nell’alfabeto inglese) chiavi possibili: non ci vuole molto a provarle tutte. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 23 di 118
  • 24.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Potremmo allora pensare di sostituire ogni lettera con un’altra con distanza casuale secondo una funzione stabilita. Le possibili chiavi sono ora una permutazione sulle 26 lettere dell’alfabeto: 26!≈4*1026 ma con le attuali tecniche (analisi della frequenza delle lettere) la crittoanalisi non è molto complessa. In realtà gli algoritmi utilizzati sono ben altri e le chiavi che utilizzano non sono numeri interi come nel nostro esempio ma sequenze di bit. Un tipico algoritmo di crittografia è RC2 con chiavi da 40 bit. Tutte le possibili chiavi che si possono ottenere sono 240, circa 1012. Ci sono algoritmi che lavorano con chiavi da 168 bit, come il Triple-DES: in questo caso il numero di chiavi possibili ha ben 51 cifre. Si è calcolato che, con i computer più potenti realizzati al momento, il tempo necessario per provarle tutte è maggiore del tempo che rimane al Sole prima di spegnersi. (cit. [1]) La debolezza di questo algoritmo sta nella necessità di dover trasmettere la chiave segreta in chiaro e nell’uso ripetuto della stessa: se una spia non ha intercettato la chiave durante la trasmissione, ha comunque molto tempo per poterla trovare. La riservatezza del messaggio si basa sul fatto che la chiave segreta è stata scambiata in un momento diverso rispetto al messaggio e che questa non è stata intercettata. Con n (grande) destinatari, avere una chiave segreta per ognuno di essi è impensabile, nell’ordine di O(n2), così come averne una condivisa tra più utenti renderebbe inutile la cifratura. A tale scopo sono stati realizzati gli algoritmi crittografici a chiave asimmetrica, o pubblica. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 24 di 118
  • 25.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 3.2 Algoritmi crittografici asimmetrici Pubblicati per la prima volta su “Le Scienze” nel 1976 da Whitfield Diffie e Martin Hellman, gli algoritmi a chiave pubblica si basano su una coppia di chiavi: pubblica e privata. La chiave privata non viene mai scambiata mentre quella pubblica è nel nostro interesse diffonderla. Quello che si cifra con l’una lo si decifra con l’altra; per cifrare un testo si utilizza la chiave pubblica del destinatario, per firmare quella privata del mittente. Nel caso di cifratura: Algoritmo asimmetrico Algoritmo simmetrico Creazione il destinatario genera una il destinatario genera una chiavi coppia di chiavi, KU e KR. chiave. Invio il destinatario invia o pubblica il destinatario invia la chiave chiavi la chiave KU al mittente per al mittente per crittografare i crittografare i dati. dati. Crittografia il mittente utilizza la chiave il mittente utilizza la chiave dati KU con un algoritmo appena ricevuta per asimmetrico per crittografare crittografare il messaggio da il messaggio da inviare. inviare. Invio dati i dati cifrati vengono inviati al i dati cifrati vengono inviati al destinatario. Nessuno può destinatario. Se qualcuno decodificare il messaggio avesse messo le mani sulla perché solamente il chiave precedentemente destinatario possiede la inviata potrebbe decodificare chiave KR per farlo. i dati. Decodifica il destinatario usa la chiave il destinatario usa la chiave dati KR con l'algoritmo con l'algoritmo simmetrico asimmetrico giusto per giusto per decodificare i dati. decodificare i dati. Quindi con l’uso di algoritmi crittografici asimmetrici l'unica chiave capace di decodificare (KR), non è mai trasmessa. Circola solo la chiave KU, che non permette di decodificare nulla! Da ciò derivano i nomi chiave pubblica (KU) e chiave privata (KR). (notazione da [37]). Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 25 di 118
  • 26.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Non è possibile risalire alla chiave privata data la pubblica o risalire al testo da crittogramma e chiave pubblica. La chiave di codifica KU e quella di decodifica KR vengono utilizzate all’interno delle rispettive funzioni E e D per trasformare la sequenza binaria che costituisce un messaggio M nel corrispondente messaggio cifrato X=E(KU,M) e M=D(KR,X). chiave pubblica chiave privata cifratura decifratura testo originale testo cifrato testo in chiaro Gli algoritmi asimmetrici più comuni sono RSA (chiavi da 512 bit e 1024) e l'algoritmo di Diffie-Hellman. Vantaggi Svantaggi Non richiede trasmissione della Utilizzo di chiavi molto lunghe chiave segreta tra i comunicanti La chiave di decodifica e di firma dei Algoritmi complessi e crittografia messaggi è sempre la stessa. lenta Crescita lineare del numero di chiavi Necessità di nascondere la chiave (con n utenti, O(n) chiavi) privata nel nostro sistema Questo è solo un primo passo verso una comunicazione sicura ma non è sufficiente: se una spia genera una coppia di chiavi e invia la pubblica a nome nostro, c’è una falsa autenticazione. Si deve allora prevedere un meccanismo di firma. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 26 di 118
  • 27.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 3.3 Accenni di crittoanalisi L’evoluzione verso cifrari più sicuri e consistenti deriva dalla necessità di rendere sempre più difficile risalire al testo in chiaro dato il testo cifrato, senza conoscere la chiave: la crittoanalisi. Alla base di tutti gli algoritmi crittografici ci sono i cifrari monoalfabetici in cui si sostituisce ogni lettera del testo con un’altra dello stesso alfabeto: semplici e obsoleti ma ideali per comprendere il funzionamento. Violare questi cifrari è possibile con una semplice analisi statica: • ricerca esaustiva (o forza bruta) • proprietà statistiche del linguaggio La ricerca esaustiva consiste nel provare tutte le chiavi possibili. Nel caso di cifrari monoalfabetici a spostamento le chiavi sono solo 21 (alfabeto italiano): non serve ingegnarsi molto e sarà sufficiente provarle tutte. Con forza bruta, appunto. Nel caso di cifrari monoalfabetici a sostituzione in cui le lettere siano mappate con distanze diverse, attraverso lo studio delle proprietà statistiche sulla frequenze dei caratteri o sottostringhe (digrammi come il, al, su, … o trigrammi come nel, dal, sul, …) del testo cifrato si ottengono informazioni utili sul testo in chiaro. In tutti i cifrari monoalfabetici, i più semplici e facilmente “rompibili”, le proprietà statistiche del linguaggio vengono mantenute anche nel crittogramma: effettuando una semplice analisi statistica delle lettere contenute nel testo cifrato e Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 27 di 118
  • 28.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it confrontando i risultati con le frequenze assolute dell’alfabeto della lingua italiana, cercando di isolare delle coppie o terzine di lettere che si ripetono associandole a dei trigrammi conosciuti, si può ricostruire il messaggio originale. Come esempio si decifrari un testo abbastanza lungo (tratto da [36]) in cui accenti e punteggiatura sono spariti. FQVBZQSDUFVU A HZGESUDA ZUSQVANA QSSQ VZQCDACCAGFU U QSSQ RGFCUZNQMAGFU TUSS AFIGZDQMAGFU CGFG NURRPA LBQFVG AS SAFOBQOOAG U QSRBFU TUSSU CRZAVVU HAB QFVARPU Q FGA HUZNUFBVU A OUZGOSAIARA UOAMAQFA G S UEZQARG RSQCCARG DGCVZQFG CGSBMAGFA AFOUOFGCU U RGFVZQCVQFVA TA QSRBFA TA LBUA HZGESUDA SQ FGMAGFU TA ZATGFTQFMQ CUDEZQ UCCUZ CVQVQ QIIUZZQVQ DGSVG HZUCVG RGF QSRBFU TUSSU CBU HAB ADHGZVQFVA ADHSARQMAGFA RGDU TADGCVZQ QT UCUDHAG S AFNUFMAGFU TUSSQ CVUFGOZQIAQ Q ZGDQ FUS HZADG CURGSG QNQFVA RZACVG QFRPU SQ CBIIARAUFMQ TA BF RGTARU TA TBU CADEGSA HUZ ZUOACVZQZU S AFIGZDQMAGFU CUDEZQ UCCUZ CVQVQ RGDHZUCQ TQ OZQF VUDHG RGDU CA HBG NUTUZU TQSS QSIQEUVG RUSVARG GOQD Q BF QSVZG QCHUVVG TUSSQ VZQCDACCAGFU TUSS AFIGZDQMAGFU IB TUTARQVQ DGSVQ QVVUFMAGFU OAQ FUSSQ EAEEAQ SQ CUOZUVUMMQ TUSSQ RGDBFARQMAGFU BFG TUA HZADA RGTARA RAIZQVA U QVVZAEBAVG Q OABSAG RUCQZU U DGSVA Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 28 di 118
  • 29.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it QZQEA CA TUTARQZGFG FUS RGZCG TUA CURGSA QSSG CVBTAG TUA RAIZQZA SU RBA QHHSARQMAGFA DASAVQZA CGFG UNATUFVA IB HZGHZAG FUS RGZCG TUSSU TBU OBUZZU DGFTAQSA RPU LBUCVG CVBTAG ZARUNUVVU BF OZQFTU ADHBSCG GOOA LBUCVU ZARUZRPU CGFG CVQVU ZAHZUCU RGF ZAFFGNQVQ SUFQ AF NACVQ TA ADHGZVQFVA QHHSARQMAGFA RGDDUZRAQSA U AFTBCVZAQSA TGNU U IGFTQDUFVQSU QCCARBZQZU SQ HZANQVUMMQ TUSS AFIGZDQMAGFU Troviamo le seguenti frequenze per ogni lettera: A B C D E F G H I L M N O P Q R S T U V Z 133 34 55 36 12 74 96 26 16 4 20 13 19 5 107 49 71 41 123 61 68 Le lettere con maggior frequenza risultano essere A, U, Q, G e così via. Come prima fase si possono associare a queste lettere le più frequenti corrispondenti all’alfabeto italiano, anche se una più accorta procedura richiederebbe lo studio di eventuali digrammi o trigrammi, doppie e alla posizione delle lettere nel testo. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 29 di 118
  • 30.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it È probabile che le frequenze portino ad associare solo poche lettere subito nel modo corretto, ma tanto basta per intuire il significato di qualche parola. Nel nostro caso i successi sono C=s, G=o, H=p, L=q, O=g, R=c, T=d, U=e; le altre lettere distano, invece, pochi decimi percentuale. Sostituendo comunque tutte le lettere in modo automatico, si ottiene: tinmliruetne a plofreua lerinaba irri nlisuassaote e irri cotselbivaote derr atholuivaote soto beccza qmitno ar ratgmiggao e ircmte derre sclanne pam itnacze i toa pelbetmne a gelograhaca egavaita o r efliaco crissaco uosnlito sormvaota atgegtose e cotnlisnitna da ircmta da qmea plofreua ri tovaote da ladotditvi seufli essel snini ihhellini uorno plesno cot ircmte derre sme pam aupolnitna aupracivaota coue dauosnli id eseupao r atbetvaote derri snetoglihai i loui ter plauo secoro ibitna clasno itcze ri smhhacaetvi da mt codace da dme saufora pel legasnlile r atholuivaote seufli essel snini couplesi di glit neupo coue sa pmo bedele dirr irhifeno cernaco ogiu i mt irnlo ispenno derri nlisuassaote derr atholuivaote hm dedacini uorni innetvaote gai terri faffai ri seglenevvi derri coumtacivaote mto dea plaua codaca cahlina e innlafmano i gamrao cesile e uorna Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 30 di 118
  • 31.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it ilifa sa dedaciloto ter colso dea secora irro snmdao dea cahlila re cma ippracivaota uaranila soto ebadetna hm ploplao ter colso derre dme gmelle uotdaira cze qmesno snmdao lacebenne mt glitde aupmrso ogga qmesne lacelcze soto snine laplese cot lattobini reti at basni da aupolnitna ippracivaota couuelcaira e atdmsnlaira dobe e hotdiuetnire issacmlile ri plabinevvi derr atholuivaote che è molto poco incoraggiante ma valutando attentamente il testo facendo particolare attenzione alle doppie, si scopre che “essene” potrebbe diventare facilmente “essere” poiché r e n hanno frequenze simili; “ogga” potrebbe per lo stesso motivo diventare “oggi”, “irri” in “alla” e così via, fino ad ottenere il testo in chiaro: naturalmente i problemi relativi alla trasmissione e alla conservazione dell informazione sono vecchi quanto il linguaggio e alcune delle scritte piu antiche a noi pervenute i geroglifici egiziani o l ebraico classico mostrano soluzioni ingegnose e contrastanti di alcuni di quei problemi la nozione di ridondanza sembra esser stata afferrata molto presto con alcune delle sue piu importanti implicazioni come dimostra ad esempio l invenzione della stenografia a roma nel primo secolo avanti cristo anche la sufficienza di un codice di due simboli per registrare l informazione sembra esser stata compresa da gran tempo come si puo vedere dall alfabeto celtico ogam a un altro aspetto della trasmissione dell informazione fu dedicata molta attenzione gia nella bibbia la segretezza della comunicazione uno dei primi codici cifrati e attribuito a giulio cesare e molti arabi si dedicarono nel corso dei secoli allo studio dei cifrari le cui applicazioni militari sono evidenti fu proprio nel corso delle due guerre mondiali che questo studio ricevette un grande impulso oggi queste ricerche sono state riprese con rinnovata lena in vista di importanti applicazioni commerciali e industriali dove e fondamentale assicurare la privatezza dell informazione Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 31 di 118
  • 32.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it da cui l’esatta corrispondenza del crittogramma: A B C D E F G H I L M N O P Q R S T U V Z i u s m b n o p f q z v g h a c l d e t r Come ultima analisi si veda come lo scarto tra la frequenza di ogni carattere nel testo cifrato con il corrispondente nei testi in italiano sia contenuto: 3.4 Hashing Si tratta di un algoritmo che partendo da un documento (o un oggetto) di qualsiasi dimensione lo elabora e lo riassume in un codice di dimensione fissa. Il metodo di elaborazione garantisce che: • se il documento (o l’oggetto) viene cambiato in qualunque sua parte, l’hash cambia con molta probabilità (in effetti può avere collisioni, improbabile) • applicato ad un documento in tempi diversi deve restituire lo stesso risultato. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 32 di 118
  • 33.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Possiamo pensare al codice prodotto dall'algoritmo di hashing come ad una impronta del documento. L’utilità dell’impronta si può ricondurre a 4 punti essenziali: • se il documento cambia, anche solo in minima parte, cambia anche l'impronta; • dall'impronta non è possibile risalire al documento; • consente di evitare che per la generazione della firma si debba applicare l’algoritmo di cifratura all’intero testo; • consente l’autenticazione, da parte di una terza parte fidata, della sottoscrizione di un documento senza che questa venga a conoscenza del suo contenuto; Questa tecnologia è principalmente utilizzata nelle firme digitali, per controllare se una email è stata alterata. Nella firma digitale è incluso l'hash del messaggio, calcolato dal mittente. Il destinatario, ricevuta l'email, ne calcola l'hash e lo confronta con quello calcolato dal mittente. Solo se i 2 hash sono uguali è possibile dire che l'email non è stata modificata. In realtà la funzione di hash è non iniettiva: si mappa un insieme infinito di messaggi in un insieme finito (160 bit nel caso di SHA-1) e ciò può portare a collisioni, nel caso in cui testi diversi portino ad uno stesso hash. Una buona funzione deve rendere minima questa eventualità. Per evitare che vengano modificati messaggio e impronta associata, l’hash viene cifrato con la chiave privata del mittente. L'hash è quindi protetto e può essere rigenerato solo dal vero mittente dell'email. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 33 di 118
  • 34.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it L’uso di algoritmi di hash non permette la falsificazione dei certificati digitali. In ogni certificato è incluso l'hash calcolato dall'autorità di certificazione che lo ha emesso. Qualsiasi modifica al certificato sarebbe immediatamente scoperta. Attualmente vengono utilizzati principalmente 3 algoritmi: MD2 [11], MD4 [34], MD5 [12] a 128 bit. Una variante potenziata dell’algoritmo MD5 è l’algoritmo SHA-1 [18], sviluppato nel 1993 presso il NIST (National Institute of Standards and Technology), che produce un codice a 160 bit. 3.5 Firma Attraverso gli algoritmi a chiave pubblica si può effettuare anche un’operazione di firma digitale del messaggio: si utilizzano le chiavi inversamente alla cifratura, ossia la chiave privata per firmare e quella pubblica per verificarne la validità. chiave privata chiave pubblica firma testo originale testo firmato testo verificato verifica Tale operazione permette ad un destinatario di verificare l’autenticità delle informazioni originate dal mittente; inoltre si ha modo di verificare che le informazioni non siano state modificate durante il percorso di consegna. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 34 di 118
  • 35.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Chiave privata Chiave pubblica è conosciuta solo dal titolare è pubblicamente nota e distribuita per apporre la firma digitale su un per verificare la firma digitale documento o messaggio informatico apposta sul documento dal titolare delle chiavi per decifrare il documento o per cifrare un documento che andrà messaggio cifrato in precedenza con decifrato con relativa chiave privata la chiave pubblica corrispondente 3.6 Come funziona in realtà Il sistema di firma digitale a chiave pubblica descritto in precedenza ha degli inconvenienti: è lento e produce una quantità di dati pari al doppio della dimensione del testo. Vediamo come si risolvono i due problemi nei due casi distinti di cifratura (senza firma) e firma (senza cifratura). Il problema della lentezza è dovuto alla cifratura con algoritmi asimmetrici che perciò vengono utilizzati solo per cifrare una terza chiave generata casualmente (chiave di sessione), e utilizzata da un algoritmo simmetrico più veloce e semplice che cifra tutto il messaggio. il testo è cifrato con la chiave di sessione chiave di sessione cifrata con la chiave pubblica testo cifrato + chiave di sessione cifrata Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 35 di 118
  • 36.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Solamente il destinatario può accedere ai dati, poichè solamente egli possiede la chiave privata per accedere alla chiave intermedia, necessaria a sua volta per decrittografare i dati. chiave di sessione chiave di sessione decifrata messaggio cifrato cifrata con la chiave privata testo cifrato chiave di sessione usata testo originale per decifrare il testo in chiaro Il problema della dimensione, invece, è risolto proprio dall’uso di una funzione di hash: la firma non sarà applicata all’intero testo ma solo all’impronta ricavata. funzione di hash testo originale riassunto firmato con la chiave privata sintesi del messaggio testo originale + firma chiave privata usata per firmare Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 36 di 118
  • 37.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 4 GESTIONE DELLE CHIAVI “La funzione di una postazione forte è rendere le forze presidiate praticamente inattaccabili” On War, Carl Von Clausewitz Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 37 di 118
  • 38.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Da questo capitolo si cominceranno a delineare le differenze tra certificati X.509 e PGP, oggetto della tesi (discussi approfonditamente nei capitoli 5 e 6): dalla generazione alle gestione delle chiavi, dalla richiesta alla gestione di certificati. Una chiave è un valore con cui un algoritmo cifra un oggetto. La dimensione si misura in bit e tanto più grande è la chiave, tanto più sicuro sarà il testo cifrato, ma anche più lenta sarà la computazione. Mediamente si propongono 4 tipi di dimensioni come compromesso tra sicurezza e velocità: • Casual grade: (348 bit) facilmente violabile • Low Commercial Grade: (512) bit possibilmente violabile ma ancora veloce computazionalmente • High Commercial Grade: (768) difficilmente violabile • Military Grade: (1024) ritenuta inviolabile, computazionalmente intrattabile. La certificazione della chiave serve ad attestarne la validità e la corrispondenza col proprietario. PGP e X.509 utilizzano due modelli differenti: • horizontal trusting: fiducia reciproca tra firmatari (PGP); • hierarchical trusting: infrastruttura gerarchica di certificazione, la Public Key Infrastructure (X.509) Un certificato digitale può allora essere inteso come un contenitore che lega chiave pubblica al proprietario: • chiave pubblica • informazioni sul soggetto • una o più firme digitali Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 38 di 118
  • 39.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it La chiave privata, non essendo mai condivisa, non richiede un contenitore, ma deve essere archiviata in modo sicuro, magari protetta con password. Le firme digitali annesse certificano che le informazioni contenute sono attestate dal firmatario (altro soggetto o autorità). 4.1 Distribuzione di certificati Come detto, lo scopo principale dei certificati digitali è quello di far corrispondere ai dati personali del soggetto, la sua chiave pubblica, indispensabile per ricevere messaggi crittografati e per permettere la verifica della nostra firma digitale a chi la riceve. Per questo motivo la distribuzione capillare dei certificati è importantissima e, a differenza di quanto avviene con la crittografia simmetrica, non è necessario un canale sicuro. In questo senso, la distribuzione può avvenire: • manualmente (scambio di email, dischetti, …) • tramite infrastrutture dedicate (Key Server, …) 4.1.1 Certificate Server Server di certificati sono dei semplici contenitori online di certificati digitali; permettono di inserire o scaricare e la loro architettura è spesso basata su Directory Server LDAP (Lightweight Directory Access Protocol, vedi glossario), piuttosto che su database relazionali. I directory server LDAP (qualche esempio in [26]) privilegiano la velocità di ricerca e prevedono linguaggio di interrogazione molto semplice; sono un’ottima scelta quando le letture sono Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 39 di 118
  • 40.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it prevedibilmente più frequenti delle scritture e i dati in esso contenuti non variano di frequente. I Certificate Server sono spesso orientati a fornire ulteriori servizi a garanzia della security policies delle aziende, come accettare solo chiavi che rispondano a determinati requisiti. 4.1.2 Keyserver Usato dagli utenti PGP, ha funzionalità molto simili a quelle di un Certificate Server. È un punto di raccolta e distribuzioni di chiavi pubbliche. Riceve le chiavi pubbliche da parte degli utenti PGP e le inserisce nel proprio database. Quando riceve una richiesta, invece, il server consulta il suo database e, se presente, restituisce la chiave pubblica trovata. Il keyserver fornisce agli utenti un indice; utilizza nomi e indirizzi email per ritrovare le chiavi desiderate cosicché chiunque possa firmare la nostra chiave pubblica presente nel keyserver modificando la fiducia ad essa associata. Naturalmente è possibile creare keyserver privati (tramite l’apposito software PGP Keyserver Enterprise Edition Version) per una ristretta selezione di utenti ma è altresì opportuno pubblicare la propria chiave su keyserver conosciuti e facilmente individuabili (keyservers pgp sono in [26]). 4.2 Revoca di Certificati Digitali Come i documenti d’identità rilasciati dal nostro comune, anche i certificati digitali hanno una scadenza. Per sapere se un certificato è ancora valido bisogna verificarne il termine Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 40 di 118
  • 41.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it temporale. Tuttavia certificati ancora “giovani”, potrebbero esser stati revocati per svariati motivi (chiave segreta o certificato dell’utente compromessi, l’utente non è più certificato dalla CA, …). Per tali verifiche si hanno a disposizione : • Certificate Revocation Lists (CRL) • Online Certificate Status Protocol (OCSP) In PGP, invece, affinché un utente possa revocare una coppia di chiavi, è necessario che il possessore distribuisca un “Key Revocation Certificate” firmato da egli stesso. Questo certificato ha la stessa forma di una normale firma ma include un indicatore che specifica lo scopo di questo certificato: revocare l’uso della chiave pubblica allegata. Naturalmente sarà cura del possessore disseminare tale certificato il più rapidamente e diffusamente possibile. 4.2.1 Certificate Revocation List (CRL) Le CA pubblicano un elenco di revoche di certificati (CRL) contenente i certificati che non devono più essere utilizzati anche se non ancora scaduti. Quante più voci sono contenute in un CRL, tanto più lungo sarà l'elenco e maggiore il tempo necessario per scaricarlo. Spesso le liste CRL possono risultare particolarmente pesanti a causa del gran numero di revoche unito alla bassa frequenza con cui vengono le liste. Il procedimento di ricerca all’interno delle CRL e' simile all’analisi di un tabulato. Il metodo di elaborazione delle CRL può inoltre richiedere alle società la configurazione dei propri pc client perché elaborino le CRL provenienti da diverse CA. Ogni CRL è firmata dalla CA e include, oltre alla lista di revoche, il Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 41 di 118
  • 42.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it proprio nome, la data di creazione della lista e la prossima pubblicazione. Ciascuna distribuzione di CRL influisce sull’ampiezza di banda della rete e sulla potenza di elaborazione del client. Infine, possono essere necessari diversi giorni per ricevere notifica di un certificato revocato, aumentando la possibilità di una falla nella sicurezza. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 42 di 118
  • 43.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 4.2.2 Online Certificate Status Protocol (OCSP) OCSP è lo standard emergente dell’IETF (Internet Engineering Task Force). Comunica on line agli utenti la situazione dei certificati in tempo reale, ne consegue una maggiore velocità rispetto al sistema CRL, senza le stesse preoccupazioni logistiche, sul carico di elaborazione e sui tempi di notifica. Per controllare immediatamente le revoche, un’applicazione client di un’organizzazione forma una richiesta e la invia a un OCSP responder, cioè un’applicazione server in rete che raccoglie le informazioni aggiornate sulle revoche. Il responder replica con uno dei tre messaggi sulla validità di un certificato: • GOOD • REVOKED o Revocation Time o Revocation Reason • UNKNOWN La richiesta OCSP e' indipendente dal protocollo utilizzato, sebbene quello HTTP (HyperText Transport Protocol) rappresenti l’approccio più comune. 4.3 Public Key Infrastructure (PKI) Il termine infrastruttura a chiave pubblica (PKI, Public Key Infrastructure) è utilizzato per descrivere software, criteri e Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 43 di 118
  • 44.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it standard che consentono di disciplinare e gestire i certificati e le chiavi pubbliche e private. Complessivamente si occupa di: • Identificare il firmatario e gli eventuali compiti • Garantire unicità delle firme • Mantenere registro dei possessori delle chiavi • Gestire chiavi a rischio, revocate o sospese • Rendere noti i certificati non più validi • Agire da terza parte fidata per distribuire le chiavi pubbliche PKI, quindi, integra le funzionalità dei server di certificati, con ulteriori servizi e protocolli per la gestione delle chiavi pubbliche: • emissione • distribuzione • revoca • validazione Un'incomprensione comune porta spesso a considerare l'infrastruttura a chiave pubblica come un'entità fisica, e non come funzionalità. La PKI è costituita da un gruppo di componenti distinti che interagiscono per consentire agli utenti l'utilizzo semplice e lineare delle chiavi pubbliche e della crittografia a chiave pubblica. A tale scopo PKI è costituita da tre entità: • Registration Autority (RA) • Certification Autority (CA) • Certificate Server (CS) Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 44 di 118
  • 45.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it RA è un’interazione tra entità umane (una persona, un gruppo o un dipartimento), processi e strumenti usati per provvedere alla verifica degli utenti, relative chiavi e registrazione degli stessi alla PKI (iscrizione). CA è spesso costituito solamente da un software che crea un certificato digitale e lo firma digitalmente con la propria chiave privata. Utilizzando la relativa chiave pubblica, chiunque può verificare se un certificato digitale è autentico, integro, a chi appartiene e da quale autorità di certificazione è garantito. PKI possono essere organizzate in modo da soddisfare al meglio le esigenze specifiche di un'azienda: • CA autonoma (standalone): la chiave principale e i certificati di un'organizzazione sono gestiti da terze parti responsabili del rilascio e della revoca di tutti i certificati per gli utenti o Esempio: certificati rilasciati da CA commerciali come Verisign, Thawte o altre ma anche studi legali, banche e altre organizzazioni alle quali si riconosce un’autorità per il rilascio di certificati. o Pro: relazioni di fiducia sia all’interno che all’esterno dell’organizzazione. Riduzione del carico di lavoro per la gestione dei certificati (emissione, mantenimento, revoca). o Contro: Fiducia totale tra azienda ed entità di certificazione. Costo per ogni certificato emesso. • CA globale (enterprise): l'azienda stessa funge da autorità di certificazione per il rilascio e la revoca dei propri certificati in base ai requisiti aziendali Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 45 di 118
  • 46.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it o Esempio: controllare accesso alle risorse attraverso i certificati: ogni dipendente potrà accedere alle infrastrutture anche dall’estero. o Pro: nessun costo verso altre entità. Controllo totali dei possessori del certificato (solo utenti noti) e della policy. o Contro: carico di lavoro per il mantenimento dei certificati e dell’infrastruttura. • Combinazione di CA: La disponibilità di una CA principale autonoma consente lo scambio di dati con partner e clienti senza che questi debbano accedere direttamente alla PKI, mentre la disponibilità di CA subordinate consente di mantenere il controllo sul rilascio e la revoca dei certificati all'interno dell'organizzazione o Esempio: impiegati ricevono certificati dalla CA di reparto, collaboratori esterni dalla rispettiva CA, clienti e partner da una CA commerciale. o Pro: massima flessibilità, si sfruttano i vantaggi di entrambi i modelli. Si presta alla gerarchia di CA. o Contro: si deve comunque mantenere una propria infrastruttura. Le CA possono essere organizzate in modo gerarchico: una CA principale emette certificati per delle autorità intermedie che a loro volta emetteranno certificati per entità finali (utenti) o per altre infrastrutture. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 46 di 118
  • 47.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Il sistema operativo rappresenta la posizione più appropriata per l'implementazione di un'infrastruttura PKI. I sistemi operativi ospitano normalmente numerose infrastrutture come quella di stampa (per l'invio dei documenti alla stampante) e quella per il servizio di gestione dei file (per il recupero dei file dalle aree di memorizzazione condivise). In entrambi gli esempi, il sistema operativo rende disponibile una funzionalità per l'utilizzo semplice e trasparente di un servizio di rete, proprio come nel caso della PKI. Windows e Unix/Linux offrono notevoli possibilità per la configurazione di PKI. Nelle versioni di Windows professionali (NT, XP Professional, 2000 Server, 2003 Server) ci sono funzionalità integrate come il server ISS (Internet Information Services), Active Directory™ e l'area di lavoro MMC (Microsoft Management Console). L'infrastruttura PKI di Windows 2000 si basa su quattro elementi cardine (come definito in [22]): Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 47 di 118
  • 48.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it • Interoperabilità: supporto dello scambio di messaggi, certificati e servizi con altri componenti standard PKI o Si supportano standard aperti e indipendenti dal produttore, spesso definiti da enti quali W3C o IETF. • Sicurezza: garantita sia da algoritmi di protezione e procedure affidabili o Componenti inaffidabili in PKI possono creare più danni della mancanza dell’infrastruttura stessa. o Algoritmi affidabili, sicuri e conosciuti come RSA, MD5 e SHA-1 per crittografia e firma, ma anche SSL o IPSec per le comunicazioni. • Flessibilità: possibilità di configurare la PKI in modo da soddisfare al meglio le esigenze organizzative specifiche di un'azienda con un impegno minimo o Modelli di CA autonoma e globale, riduzione dei costi e maggiore protezione in base alle esigenze. • Semplicità di utilizzo per amministratori di PKI, utenti finali che ricevono e utilizzano i certificati e sviluppatori che creano applicazioni abilitate all'uso della PKI o componenti incorporati nella piattaforma, il più possiblile automatici e integrati con gli altri strumenti utilizati da utenti e amministratori. Linux si basa su pacchetti di terze parti da installare. Ci sono vari progetti in corso, tra i quali ElyCA [30] e OpenCA [32]. Entrambi i progetti si basano su altri pacchetti necessari: • Apache: il web server più famoso e l’estensione per la sicurezza ApacheSSL (vedi [29]) • OpenSSL: toolkit crittografico (vedi [33]) Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 48 di 118
  • 49.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it I Certificati Digitali possono avere credenziali molto elevate se rilasciati e firmati da CA di nota autorevolezza; se oltretutto sono iscritte nell’apposito elenco pubblico mantenuto dalla CNIPA (Centro Nazionale per l’Informatica nella Pubblica Amministrazione), tali certificati hanno validità legale (vedi §1.1 e [5]). I certificati X.509 vengono rilasciati dalle PKI. 4.4 Web of Trust (WoT) Usato solitamente da PGP, Web of Trust (Rete di Fiducia) è un termine usato per descrivere le relazioni di fiducia esistenti tra un gruppo di chiavi, secondo il modello “horizontal trusting”, senza avere una catena di certificazione gerarchica in cui si deve conoscere ogni singolo emettitore ma una cooperazione orizzontale tra gli stessi utenti dell’applicazione. Questo è necessario in progetti come PGP, appunto, nei quali i certificati vengono emessi dal possessore stesso e non da un’autorità fidata. Come per PKI con i certificati X.509, WoT si prefigge lo scopo di risolvere il problema di autenticazione della chiave pubblica, quindi il legame con il relativo nome utente: devo verificare la firma di una email ricevuta, necessito della chiave pubblica del mittente, ma come posso essere sicuro che sia veramente sua? Per verificare l’autenticità della chiave pubblica del mittente, le alternative sono: 1. Chiedo conferma della chiave pubblica per telefono, supponendo di conoscere la sua voce; Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 49 di 118
  • 50.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 2. Lo incontro, verifico i suoi documenti e confronto la stringa (magari in un altro stato…); 3. Confronto la chiave in mio possesso con la chiave autenticata in possesso di un altro utente. Spesso l’unica alternativa possibile è la 3, ed è su questa che si basa il concetto di Web of Trust. La firma su una chiave rappresenta un collegamento nella rete della fiducia. Questi collegamenti sono chiamati percorsi di fiducia e possono essere bidirezionali o a senso unico. La rete della fiducia ideale è quella in cui ogni persona è connessa ad ogni altra in modo bidirezionale, così che ognuno abbia la fiducia che ogni chiave appartenga veramente al proprio proprietario. La rete della fiducia può essere pensata come la somma dei percorsi di fiducia, o collegamenti, tra tutti i proprietari delle chiavi. A E B D C Un grafo simile rappresenta i legami tra le chiavi degli utenti A, B, C, D, E. Un arco da A a B rappresenta la firma dell’utente A sulla chiave pubblica di B. In questo caso l’utente A può fidarsi Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 50 di 118
  • 51.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it della chiave pubblica B poiché conosce C che ne ha autenticato la chiave. Ogni chiave valida in possesso dell’utente A può autenticata da egli stesso o da qualcun altro; ogni chiave non valida non può essere un certificatore fidato per altre chiavi. Esistono progetti sperimentali che consentono di generare grafi simili; uno di essi è Graphviz (AT&T Labs-Research, [10]). 4.4.1 Signing party: un esempio (tratto da [3]) Un key signing party è una riunione di persone che usano il sistema di crittografia PGP, durante la quale ogni partecipante ha la possibilità di firmare la chiave degli altri. I key signing party aiutano in modo consistente a estendere la propria rete della fiducia, inoltre offrono un'opportunità per discutere di questioni sociali e politiche che riguardano la crittografia forte, la sovranità e le libertà individuali, dell'implementazione di tecnologie crittografiche, o perfino degli sviluppi futuri del software libero per la crittografia. Poniamo che Alice e Bob creino delle chiavi PGP e organizzino un key signing party. Durante il party, Alice e Bob verificano ognuno le chiavi dell'altro e successivamente le firmano. Poiché PGP firma automaticamente le chiavi pubbliche che genera usando la chiave privata associata, Alice e Bob avranno almeno due firme che indicano che la chiave appartiene veramente a loro: la chiave di Alice è stata firmata da Alice stessa e da Bob, così pure per la chiave di Bob. In seguito Alice e Bob conoscono Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 51 di 118
  • 52.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Cathy, che genera un paio di chiavi e spedisce la propria chiave pubblica ad Alice e Bob. Alice però non vuole che Bob comunichi con Cathy in modo cifrato, così crea una chiave con il nome di Cathy e la spedisce a Bob. Bob riceve così due chiavi che portano entrambe il nome di Cathy e la firma della chiave privata di Cathy, ma non sa quale delle due è veramente la chiave di Cathy. Cathy scopre che Bob ha ricevuto due chiavi, sospetta subito di Alice e decide di vendicarsi; per farlo, manda a Bob una finta e-mail a nome di Alice comunicandogli di aver generato una nuova coppia di chiavi e includendo la "nuova" chiave di Alice (che in realtà è una falsa chiave generata da Cathy). Ma Bob scopre subito che si tratta di un trucco, visto che una delle due chiavi di Alice che possiede è stata firmata da più persone (Alice e Bob), confermando che essa appartiene davvero ad Alice, mentre l'altra chiave (la falsa chiave creata da Cathy) ha solo una firma. L'esempio mostra i concetti base della firma delle chiavi e la sua importanza: Cathy non è riuscita a introdurre una falsa chiave di Alice, grazie alle interconnessioni esistenti tra Bob e Alice nella loro rete della fiducia. Tuttavia, firme e reti della fiducia non garantiscono chiavi di cui ci si possa fidare ciecamente. Ad esempio, supponiamo che quando Bob e Alice hanno conosciuto Cathy fosse presente anche Donald, un amico di Cathy. Donald potrebbe aver generato una coppia di false chiavi di Alice e Bob, potrebbe aver firmato ognuna delle due chiavi con quella dell'altro, oltre che con la propria chiave, in modo che ogni chiave contenesse tre firme, e potrebbe aver spedito le chiavi a Cathy. Cathy ora si troverebbe di fronte un gruppo di chiavi e di firme tutte "false": come potrebbe usare il meccanismo della firma per proteggersi Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 52 di 118
  • 53.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it da questo tipo di attacchi? Supponiamo che tutte le persone coinvolte scambino le chiavi attraverso un keyserver. Se Cathy cercasse le chiavi di Alice e Bob sul keyserver, troverebbe due paia di chiavi per Alice e Bob, ma se Alice e Bob avessero raccolto venti firme durante un key signing party, è ovvio che Cathy si fiderebbe di più delle chiavi firmate venti volte, piuttosto che di quelle firmate solo tre volte. Inoltre, Cathy potrebbe ricavare altre informazioni riguardanti le venti chiavi usate per le firme, ad esempio le loro date di generazione, ricostruendo così la rete di fiducia che lega le chiavi. Probabilmente le chiavi usate per apporre le firme durante il party saranno state a loro volta firmate con altre chiavi, quasi sicuramente avranno date di generazione molto diverse. Di certo non sarebbe così se Donald avesse generato venti false chiavi e le avesse usate per creare una falsa rete della fiducia. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 53 di 118
  • 54.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 5 X.509 “I problemi significativi che ci troviamo ad affrontare, non possono essere risolti utilizzando un livello di pensiero pari a quello che li ha ideati” Albert Einstein Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 54 di 118
  • 55.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Lo standard per eccellenza nella certificazione digitale è senza dubbio X.509, riconosciuto legalmente anche all’estero. A questo, però, si aggiunge lo standard PGP che così non fornisce solo uno strumento crittografico ma anche una certificazione completa, efficiente e facile da gestire. È importante ricordare che questo elaborato si concentra sulle problematiche dello scambio di messaggi via email. Gli standard presentati, perciò devono essere in grado di proporre una soluzione al problema, compatibilmente allo standard S/MIME (Secure/Multipurpose Internet Mail Standard). 5.1 X.509 Certificate Format Standard di riferimento definito dall’ITU-T, è una parte delle specifiche X.500 che definiscono un Directory Service. X.509 definisce la struttura per i servizi di autenticazione tramite X.500 che funge da deposito dei certificati a chiave pubblica, basandosi su PKI. Nato nel 1988, rivisto nel 1993 e nell’odierno X.509v3 del 1995, per essere utilizzato da qualsiasi applicazione, in realtà oggi ogni azienda ha la propria estensione di X.509 infatti uno dei punti di forza della versione 3 di X.509 è la possibilità di modificare la policy di sicurezza dei certificati aggiungendo dei campi a quelli standard: per un’azienda potrebbe essere necessario certificare (oltre alle informazioni di default) anche il reparto in cui l’utente lavora e il ruolo svolto all’interno di esso. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 55 di 118
  • 56.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Questi certificati richiedono che qualcuno attesti in modo inequivocabile la corrispondenza tra la chiave pubblica e le informazioni contenute. L’unica entità in grado di apporre la propria firma è l’Autorità di Certificazione che ha emesso il certificato (che a sua volta può essere stata certificata da un’altra CA, in accordo alla gerarchia PKI precedentemente illustrata). Solitamente vengono emessi quattro tipi di certificati X.509: • Precaricati di una Autorità di Certificazione. Alcuni di questi certificati sono precaricati nei browser, cosicché si possano riconoscere in modo automatico e trasparente tutti i certificati emessi dalle CA più importanti. Quando qualcuno riceve un’informazione firmata con un certificato deve solo verificare la firma della CA che ha emesso il certificato per fidarsi dei dati contenuti nel certificato; • Server di un sito (www, ftp, ecc.). Questo certificato viene emesso per garantire che il server, che sta “mostrando” quel certificato, è il server di un particolare sito; questo tipo di certificati è particolarmente utile per il commercio elettronico, il cliente vuole essere certo di rivolgersi ad un particolare server, il certificato lo garantisce in questo senso; • Personali, contenenti quindi informazioni quali nome, cognome, indirizzo, casella e-mail, ecc.; possono essere utilizzati per garantire la provenienza di una e-mail, per inviare un numero di carta di credito, ecc. • Software, per garantire l'autenticità della provenienza del software, specialmente se questo viene distribuito in Rete. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 56 di 118
  • 57.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Lo standard X.509v3 prevede i seguenti campi: nome campo descrizione Versione Attualmente l’ultima versione è la 3 numero seriale del intero, unico all’interno della CA certificato distributrice identificatore algoritmo usato per firmare il certificato dell’algoritmo di firma con vari parametri usato nome del certificatore nome X.500 della CA che ha creato e firmato il certificato periodo di validità del inizio e fine della validità temporale del certificato certificato nome del possessore il nome al quale il certificato appartiene e lega la chiave pubblica contenuta chiave pubblica del chiave pubblica, algoritmo usato ed possessore eventuali parametri bit identificatore unico del opzionale, per identificare unicamente la certificatore CA emittente nel caso in cui il nome sia usato per altre entità bit identificatore unico del opzionale, per identificare unicamente il possessore possessore nel caso in cui il nome sia usato per altre entità Estensioni Uno o più campi, previsti dalla versione 3 Firma digitale del protegge tutti gli altri campi del certificato; certificatore contiene l’hash costituito su di essi crittografato con la chiave provata della CA. Include anche l’identificativo degli algoritmi usati Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 57 di 118
  • 58.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Lo standard definisce tale notazione per definire un certificato: CA<<A>> = CA {V, SN, AI, CA, TA, A, AP} Dove: • Y<<X>> significa che il certificato dell’utente X è stato emesso da Y, • Y{I} è la firma di I per Y. Consiste di I con il suo hash code cifrato. Questo è il tipico approccio di firma digitale: Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 58 di 118
  • 59.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 5.1.1 Standard PKCS I PKCS (Public-Key Cryptography Standard) sono un insieme di standard sviluppati dai Laboratori RSA in cooperazione con gli sviluppatori mondiali di sistemi sicuri, allo scopo di accelerare l'impiego di crittografia a chiave pubblica. Inizialmente pubblicati nel 1991, sono diventati ampiamente riferiti ed implementati. Gli standard attualmente pubblicati sono PKCS #1, #3, #5, #7, #8, #9, #10, #11, #12 e #15; PKCS #13 e #14 sono attualmente in sviluppo. Gli standard della crittografia a chiave pubblica sono i seguenti: • PKCS#1: standard per la crittografia RSA; • PKCS#2: incorporato in PKCS #1; • PKCS#3: standard per l'accordo su chiavi di Diffie- Hellman; • PKCS#4: incorporato in PKCS #1; • PKCS#5: standard per crittografia basata su password; • PKCS#6: standard per la sintassi dei certificati estesi (sostituito da X.509 v3); • PKCS#7: standard per la sintassi dei messaggi crittografici; • PKCS#8: standard per la sintassi di informazioni di chiavi private; • PKCS#9: tipi degli attributi selezionati usati nei PKCS; • PKCS#10: standard per la sintassi delle richieste di certificazione; • PKCS#11: standard per l'interfaccia dei token crittografici; • PKCS#12: standard per la sintassi dello scambio di informazioni personali; Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 59 di 118
  • 60.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it • PKCS#13: standard per la crittografia basata su curve ellittiche; • PKCS#14: standard per la generazione di numeri pseudo-casuali; • PKCS#15: standard del formato delle informazioni di token crittografici. PKCS lascia ampio spazio per future espansioni. La maggior parte degli oggetti definiti dal PKCS hanno un numero di versione per permettere la compatibilità con le revisioni future. Diversi oggetti hanno anche spazio per attributi arbitrari che portano informazioni addizionali non direttamente indirizzate dal PKCS. Gli standard PKCS #6 e #9 sono citati nella normativa che definisce il formato dei certificati [5]. Lo standard dei certificati PKCS#6 descrive una sintassi per i certificati estesi. Un certificato esteso consiste di un certificato X.509 a chiave pubblica e un insieme di attributi, firmati dall'emittente del certificato X.509 a chiave pubblica. Gli attributi e i certificati a chiave pubblica X.509 inclusi possono essere verificati con una singola operazione a chiave pubblica, e se necessario, un certificato ordinario X.509 può essere estratto (ad esempio per Privacy-Enhanced Mail (PEM)). Lo scopo di includere un insieme di attributi è di estendere il processo di certificazione non solo alla chiave ma certificare anche altre informazioni su di un dato utente, come l'indirizzo di posta elettronica. Una lista, anche se non completa, di attributi è data in PKCS#9. Lo standard PKCS#9 definisce i tipi di attributi selezionati da usare nei certificati estesi, definiti da PKCS#6, nei messaggi con Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 60 di 118
  • 61.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it firma digitale, definiti da PKCS#7 e nelle informazioni della chiave privata, definite da PKCS#8. Ognuno di questi attributi contiene un tipo di attributo (specificato dall'oggetto da identificare) e uno o più valori dell'attributo. Lo standard PKCS#6 è stato sostituito dallo standard dei certificati X.509 versione 3. 5.1.2 La versione 4 Attualmente è presente anche la versione X.509v4 ma non è ancora diffusa quanto la versione 3. Differisce da essa in alcune scelte. Nella v3 tutte le informazioni aggiuntive che eventualmente una CA vuole inserire sono salvate nel certificato stesso mentre in v4 in un certificato di attributo. Un certificato di attributo è associato ad un individuo per mezzo del certificato X.509 in suo possesso e contiene uno o più attributi aggiuntivi. Sono rilasciati dalle AA (Attribute Authority) e usate dal soggetto per dimostrare il possesso di un attributo e dai server per concedere autorizzazioni. 5.2 Come si ottiene un nuovo certificato Esistono 3 possibili approcci: • Autocertificazione o L’utente genera la propria coppia di chiavi e firma da se i certificati che produce, certificando se stesso. • Certification Authority esterna o Una qualsiasi CA commerciale, possibilmente legalmente riconosciuta, alla quale richiedere l’emissione di un nuovo certificato Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 61 di 118
  • 62.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it • Certification Authority interna o Usato in ambito aziendale: la nostra azienda funge da CA ed emette certificati per i propri dipendenti. La richiesta di un nuovo certificato può ricalcare la procedura che si fa con una CA esterna Se ci affidiamo ad una CA esterna (come Thawte [1] o VeriSign [2]), accedendo al loro sito web, il browser genera casualmente una coppia di chiavi e ne invia una, la pubblica, all’autorità di certificazione. In alterativa si deve produrre una richiesta di certificazione da inviare alla CA unitamente alla chiave pubblica creata (mediante un programma adatto all’algoritmo scelto: OpenSSL, per esempio), secondo lo standard PKCS#10. La chiave privata corrispondente a quella pubblica appena inviata viene memorizzata in attesa della risposta. Non vengono utilizzati particolari accorgimenti inerenti alla sicurezza durante questa trasmissione poiché la chiave pubblica, come il nome stesso dice, può anche circolare non cifrata su Internet senza alcun problema. Successivamente l’autorità di certificazione elabora la richiesta e costruisce attorno alla chiave pubblica ricevuta un certificato: aggiunge il nome e cognome della persona, il suo indirizzo email, ed eventuali altri dati. Successivamente il certificato viene firmato digitalmente con una chiave privata in possesso dell’autorità di certificazione: il certificato diventa impossibile da modificare per chiunque non possegga la chiave che, ovviamente, è tenuta al sicuro. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 62 di 118
  • 63.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Per finire, il certificato così creato viene rispedito al richiedente che lo memorizza in un'area sicura del proprio PC insieme alla chiave privata memorizzata temporaneamente durante la prima fase. Anche in quest'ultima trasmissione non viene impiegata nessuna tecnologia per le comunicazioni protette, poiché il certificato digitale non contiene informazioni private, basti pensare al fatto che viene distribuito in ogni email firmata. La CA o l’utente potranno anche caricare una copia del certificato in un Certificate Server, a disposizione degli altri utenti. La sicurezza di questo processo è elevatissima: la chiave privata, che deve essere sempre tenuta al sicuro e nascosta da occhi indiscreti, non circola mai attraverso Internet e rimane sempre sul proprio PC. Viene fatta circolare invece la chiave pubblica, ma questo non è un problema. La chiave pubblica può essere distribuita senza alcun problema: esistono addirittura degli archivi su Internet di chiavi pubbliche di svariate persone, accessibili da chiunque. È sicura anche l'autenticità del certificato digitale: nessuno può crearne uno finto e nessuno può modificarlo, poiché l'hash del certificato modificato non corrisponderebbe all'hash incluso nello stesso, e per includerne uno è necessario avere la chiave privata dell’autorità di certificazione. Quando il sistema operativo deve controllare se un certificato è valido, ne calcola l'hash e lo compara con l'hash incluso nel certificato e firmato da un "certificato di livello superiore". Successivamente il controllo si sposta su questo "certificato di livello superiore", che viene anch'esso controllato tramite il suo Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 63 di 118
  • 64.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it hash, firmato da un certificato di livello ancora più alto. La catena si conclude quando si giunge al certificato principale dell'autorità di certificazione, che spesso i sistemi operativi considerano attendibile solo se precaricato. Se l’utente che richiede la certificazione si reca di persona presso qualche CA, esibendo la documentazione richiesta potrà certificare in modo univoco non solo il legame chiave pubblica – utente ma anche tutti i dati anagrafici della persona fisica (tra i quali cognome, nome). La sudafricana Thawte [1], ad esempio è una delle principali autorità di Certificazione ed i suoi uffici sono presenti a Roma. Per ottenere dei semplici certificati personali per firmare email e ricevere messaggi cifrati, sarà sufficiente sottoscrivere la proposta di certificati personal free nel loro sito ma per certificazioni complete e professionali che attestino anche la persona fisica, sarà necessario presentarsi nei loro sportelli con la seguente documentazione (tratta da [1]): • identification number, passport number, social security number, driver licence number or tax number, depending on your nationality • Your full name and date of birth. • Your employer's name, size and address (if you are employed). • Your home address and contact details. • Your preferred currency Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 64 di 118
  • 65.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 5.3 Come si ottiene il certificato di un utente I certificati rilasciati da CA garantiscono che ogni utente che ha accesso alla chiave pubblica della CA può recuperare la chiave certificata ma nessuno al di fuori della CA emittente può modificare i dati del certificato digitale. Ogni certificato dovrebbe essere distribuito a più contatti possibili per godere dei suoi servizi. Se tutti gli utenti di un gruppo sottoscrivono la stessa CA, c’è un’implicita fiducia nella CA e tutti i certificati potrebbero esser posti in una directory condivisa, piuttosto che ogni utente trasmetta il proprio agli altri. In entrambi i casi, quando B entra in possesso del certificato di A, può trasmettere messaggi cifrati ad A e riceverne da lui autenticati e firmati. La CA firma i certificati degli utenti e fornisce a chiunque copia della propria chiave pubblica per verificare la firma. Tuttavia, se il gruppo di utenti è molto vasto, non è pratico che tutti sottoscrivano la stessa CA, cosicché ogni CA possa fornire la propria chiave ad una frazione di utenti. Supponiamo che A abbia ottenuto un certificato dall’autorità X1 e B dall’autorità X2, nella gerarchia. Se A non conosce con certezza la chiave pubblica di X2, il certificato di B è inutilizzabile per A che può leggerlo ma non verificarne la firma. Tuttavia se le due CA si sono scambiate le loro chiavi pubbliche, A può ottenere la chiave pubblica di B in pochi passi: • A ottiene dal Directory Server il certificato di X2 firmato da X1. In questo modo conosce in modo sicuro la chiave pubblica di X2. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 65 di 118
  • 66.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it • A ottiene dal Directory Server il certificato di B firmato da X2. ora A è in possesso della chiave pubblica di X2 e può verificarne la firma sul certificato di B, ottenendone la chiave pubblica. Si dice che A ha usato la catena di certificazione per ottenere la chiave pubblica di B. Nella notazione X.509: X1<<X2>> X2<<B>> Questo schema è illimitato. Può contenere un lungo percorso di CA (come visto nel §4.3): X1<<X2>> X2<<X3>> … Xn<<B>> In questo caso ogni coppia di CA (Xi,Xi+1) deve aver creato un certificato l’uno per l’altro. Tutti i certificati generati da CA a CA, devono comparire nella directory e l’utente deve sapere come sono legati tra loro per poter seguire un percorso logico che permetta di ricondurre l’origine di un certificato di un utente al certificatore principale. Un esempio di gerarchia di certificati è dato dalle figura seguente, dove i nodi A, B e C sono gli utenti finali mentre gli altri sono le CA intermedie. Le notazioni indicano i certificati mantenuti nelle directory per ogni CA che sono di due tipi: • Forward certificates (certificati di X emessi da altre CA) • Reverse Certificates (certificati generati da X che sono di altre CA) Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 66 di 118
  • 67.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it In questo esempio l’utente A può acquisire il certificato di B stabilendo il giusto percorso: X<<W>> W<<V>> V<<Y>> Y<<Z>> Z<<B>> A questo punto A può percorrere tutto il percorso e ottenere la chiave pubblica di B che a sua volta può percorrere il percorso al contrario per ottenere il certificato di A. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 67 di 118
  • 68.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 6 PGP “Bless the man who made it, and pray that he ain’t dead. He could’ve made a milion If he’d sold it to the feds, But he was hot for freedom; He gave it out for free. Now every common citizen’s got PGP” Dalla canzone “P.G.P.” di Lesile Fish [23] “Benedici l'uomo che l’ha fatto e prega che non muoia. Avrebbe potuto fare un milione (di dollari), se l'avesse venduto ai federali, ma aveva molto a cuore la libertà; lo distribuì gratuitamente. Ora ogni comune cittadino possiede PGP” Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 68 di 118
  • 69.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it PGP è un toolkit crittografico nato dalla volontà di Philip Zimmermann [40]. Disponibile per molte piattaforme (Unix/Linux, DOS/Windows, Mac, …), è basato su algoritmi freeware sicuri. Al momento, PGP 8.0.3 offre cinque tipi di servizi: Servizio Descrizione Cifratura messaggio Il messaggio è cifrato con un algoritmo a chiave (segretezza) simmetrica: CAST-128, IDEA o 3DES. La chiave di sessione è cifrata con la chiave pubblica usando l’algoritmo RSA o Diffie Hellman Firma digitale Viene creato un hash del messaggio (con algoritmo (autenticazione) SHA-1 o MD5) e cifrato con la chiave privata del mittente (con l’algoritmo RSA o DH) Compressione Il testo in chiaro viene compresso con l’algoritmo freeware ZIP prima di essere cifrato. Risparmio di banda e crittoanalisi più difficile (vedi applicazione nelle figure precedenti) Compatibilità e-mail Un messaggio cifrato è convertito in una stringa ASCII (usando una conversione Radix-64). Questo per rendere i messaggi leggibili anche da mail agent testuali Segmentazione Segmenta il messaggio in parti più piccole se le dimensioni sono importanti Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 69 di 118
  • 70.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Utilizzando le informazioni della tabella precedente, supponiamo di voler firmare e cifrare un messaggio. La sequenza delle operazioni svolte da PGP è: 1. PGP applica l’algoritmo di hashing SHA-1 per generare il digest del messaggio che avrà lunghezza fissa di 160bit. 2. L’hash viene firmato con la chiave segreta KRa del mittente 3. Il certificato di firma corrispondente è accodato al messaggio; 4. PGP applica l’algoritmo di compressione ZIP per comprimere messaggio e firma; 5. PGP applica un algoritmo di generazione di numeri casuali per formare una sequenza di 128bit casuale, la chiave di sessione KS 6. PGP applica un algoritmo di crittografia convenzionale IDEA per codificare il messaggio compresso ottenuto in 4, usando la chiave di sessione KS generata in 5; Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 70 di 118
  • 71.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 7. PGP applica l’algoritmo di crittografia a chiave pubblica RSA per codificare con KUb la chiave di sessione KS, accodando il risultato al messaggio cifrato ottenuto al punto 6; 8. PGP applica l’algoritmo di conversione RADIX-64 per trasformare il messaggio ottenuto in 5 in soli caratteri ASCII. Il ricevente eseguirà la sequenza inversa per ottenere il testo in chiaro. Un messaggio PGP cifrato è formato da tre componenti: • messaggio, • firma (opzionale), • chiave di sessione. La firma include i seguenti componenti: • timestamps (data/ora in cui la firma è stata creata), • message digest (l’hash del messaggio), • leading two octets of message digest (abilitare il ricevente a determinare se è stata usata la chiave pubblica corretta per decifrare il message digest), • KeyID della chiave pubblica del mittente; Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 71 di 118
  • 72.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 6.1 Chiavi in PGP PGP fa uso di 4 chiavi: • chiave di sessione • chiave pubblica • chiave privata • passphrase Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 72 di 118
  • 73.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Le prime 3 sono state trattate ampiamente nei capitoli precedenti mentre passphrase è una novità: è un’ulteriore sicurezza atta a per proteggere la chiave privata. In sua assenza chiunque venisse in possesso della chiave privata si potrebbe spacciare per il titolare. Passphrase e non password perché indica la necessità di scegliere una stringa di parole piuttosto complessa, data la sua importanza. 6.1.1 Key ID Come detto in precedenza, i messaggi vengono codificati da PGP con una chiave di sessione generata casualmente che sarà a sua volta cifrata con la chiave pubblica del destinatario. Quest’ultimo però può avere più coppie di chiavi. Nasce allora la necessità da parte del destinatario di conoscere quale keyring utilizzare. Ecco perciò la soluzione: anteporre al messaggio un KeyID. Un KeyID è associato ad ogni chiave pubblica che con molta probabilità è unica per quell’utente con specifico UserID. La KeyID associata ad ogni chiave pubblica consiste nei suoi 64 bit meno significativi (KUa mod 264). Questa è una lunghezza sufficiente affinché la probabilità di duplicazione di una keyID sia remota. 6.1.2 Key Ring Le chiavi PGP vengono salvate in 2 file cifrati nel disco locale. Un file per le nostre chiavi private e uno per tutte le chiavi pubbliche. Questi file sono detti “private key ring”, cifrato con la passphrase, e “public key ring”. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 73 di 118
  • 74.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Perdere il private key ring significa non poter più decifrare i messaggi cifrati con la nostra chiave pubblica. È buona norma tenerne almeno una copia di backup, ovviamente lontano da occhi indiscreti. Struttura del Private Key Ring Timestamp Ti Data/ora in cui è stata generata la coppia di chiavi Key ID KUi mod 264 I 64 bit meno significativi della chiave pubblica dell’utente Public Key KUi Chiave pubblica dell’utente Encrypted Private Key EH(Pi)[Kri] La chiave privata. Il campo è cifrato User ID User i Tipicamente l’indirizzo e-mail Struttura del Public Key Ring Timestamp Ti Data/ora inserimento nuova entry Key ID KUi mod 264 I 64 bit meno significativi della chiave pubblica dell’entry Public Key KUi Chiave pubblica dell’entry Owner Trust Trust_flag i Vedi § 6.3 User ID User I Proprietario della chiave pubblica Key Legitimacy Trust_flag I Vedi § 6.3 Signature(s) Vedi § 6.3 Signature Trust(s) Vedi § 6.3 6.2 Generazione messaggi Assumiamo che il messaggio sia firmato e cifrato e per semplicità ignoriamo compressione e conversione in ASCII Mittente: 1. firma del messaggio • PGP recupera la chiave privata del mittente dal private key ring tramite UserID Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 74 di 118
  • 75.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it • PGP richiede di digitare la passphrase per decifrare la chiave privata 2. cifratura del messaggio • PGP genera la chiave di sessione e cifra il messaggio • PGP recupera la chiave pubblica del destinatario dal public key ring. Destinatario: 1. decifratura messaggio • PGP recupera la chiave privata del destinatario dal private key ring tramite il KeyID • PGP chiede di digitare la passphrase per recuperare la chiave privata dal private key ring • PGP recupera la chiave di sessione e decritta il messaggio 2. autenticazione messaggio • PGP recupera la chiave pubblica del mittente dal public key ring usando il campo KeyID • PGP recupera il message digest trasmesso Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 75 di 118
  • 76.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it • PGP ricalcola il message digest del messaggio e lo confronta con quello ricevuto. Se sono uguali, il messaggio è autentico. 6.3 Horizontal Trusting = fiducia Il problema maggiore della crittografia a chiave asimmetrica è quello di proteggere la nostra chiave pubblica dalle manomissioni. Stallings in [37] descrive bene il problema. L’utente A deve aggiornare il proprio public key ring che contiene già una chiave attribuita a B ma che in effetti è di C. Questo può accadere se, per esempio, A ha scaricato la chiave da un BBS (bulletin board system) che B usa per distribuire la chiave che però è stata compromessa da C. In questo caso: • C può spedire messaggi ad A con la firma di B • I messaggi cifrati da A a B possono esser letti da C Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 76 di 118
  • 77.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Per risolvere questi problemi bisogna avere la certezza che ogni chiave corrisponda al giusto proprietario. Ci sono vari approcci: • Scambiarsi le chiavi pubbliche di persona, attraverso floppy, per esempio; • Verificare le chiavi scambiate per vie telematiche (per esempio confrontando per telefono un digest 160bit SHA-1 della chiave); • Ottenere la chiave pubbliche da altri contatti fidati. Ad esempio D crea un certificato firmato e crittografato contenente la chiave pubblica di B; • Ottenere le chiavi pubbliche da un’autorità certificata e fidata. In questo caso l’autorità crea e firma un certificato con la chiave pubblica dell’utente desiderato. PGP non include nessuna specifica su come stabilire la validità e la fiducia, fornisce solo il significato di “fiducia”: associare un livello di fiducia ad un certificato e sfruttare le sue informazioni. Ogni elemento nel public key ring è un certificato di chiave pubblica ed associato ad esso ci sono tre campi: • key legitimacy o indica se la chiave pubblica è valida per quell’utente. Più elevato è il livello di fiducia (trust), più forte è il legame tra utente (UserID) e la sua chiave pubblica (KeyID). Questo campo è calcolato da PGP e deriva dai valori assegnati al campo signature trust per ogni firma collezionata dalla nostra chiave pubblica • signature trust Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 77 di 118
  • 78.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it o indica il grado di fiducia che PGP assegna ad ogni utente che ha firmato la chiave pubblica considerata nel nostro key ring • owner trust o indica il grado di fiducia che noi assegniamo al possessore della chiave nel firmare le altre chiavi Questi campi correlati tra loro permettono di stabilire delle relazioni di fiducia tra gruppi di utenti. Tale meccanismo si chiama “Web of Trust”. 6.3.1 Web of Trust in PGP Web of Trust incorpora in se le funzionalità degli altri 2 modelli, il gerarchico e orizzontale (ogni utente valida a mano tutte le chiavi pubbliche) e una nuova nozione di “fiducia” dal punto di vista dell’osservatore e la consapevolezza che più informazione si ha, maggiore è la nostra sicurezza. Web of Trust segue il vecchio ma conosciuto principio “six degrees of separation”, secondo il quale ogni persona al mondo può determinare un legame con qualsiasi altra usando sei o meno intermediari. Nel modello PGP ogni utente può fungere da certificatore e validare certificati di altri utenti. Il certificato così validato lo si ritiene affidabile solo se il validatore è conosciuto e stimato (considero valida la chiave di quell’utente solo perché considero l’utente attento e affidabile e perciò riterrò validi anche tutti i certificati da lui firmati). Si parte dal presupposto che il più alto Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 78 di 118
  • 79.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it livello di fiducia lo abbiamo verso noi stessi. Per tale motivo, ogni chiave firmata da noi risulta comunque valida. L’implementazione PGP di questo modello prevede 2 proprietà fondamentali: • validità della chiave pubblica: dopo aver inserito una nuova chiave pubblica di una generica persona, PGP richiede di accertarne la validità o chiave valida: ho accertato legame chiave-utente; o chiave non valida: non ho accertato il legame chiave-utente: posso usare comunque il certificato ma PGP mi segnala l’inconsistenza. • fiducia nel possessore della chiave pubblica: ogni utente generico può validare chiavi pubbliche di altri utenti. Che livello di fiducia pongo in questo utente nel validare altri certificati? Avrà la mia stessa perizia nell’accertare la corrispondenza chiave pubblica – utente? o fiducia completa: si ha completa fiducia nel modo in cui il soggetto valida le chiavi di altri utenti. Ne consegue che tutte le chiavi firmate da lui sono valide anche per noi; o fiducia parziale: non ho piena fiducia nell’utente perciò le chiavi firmate da lui sono valide se firmate contemporaneamente da altri utenti su cui riponiamo una fiducia almeno parziale; o non fidato: non ho alcuna fiducia nelle capacità dell’utente di validare le chiavi; o non noto: il livello di fiducia nelle capacità dell’utente è basso ma non nullo perciò per ogni chiave pubblica che inserirò con la sua firma, PGP mi chiederà di validare a mano la chiave. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 79 di 118
  • 80.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Firmatario sconosciuto X è firmato da Y Fiducia completa nel firmare le chiavi Fiducia parziale nel firmare le chiavi Chiave ritenuta valida Questa figura esemplifica la gestione di un public key ring con questo modello. L’utente in questione ha acquisito alcuni certificati tramite keyserver, altri tramite e-mail, altri ancora direttamente dall’amico. Il nodo “You” corrisponde alla nostra chiave pubblica che, ovviamente, è considerato valido. Verso i nodi D, E, F, L, abbiamo completa fiducia e oltre a considerare valide le loro chiavi, consideriamo valide tutte le chiavi firmante da almeno uno di loro (M, N, O, P, Q) Anche le chiavi A e B sono considerate valide ma la nostra fiducia verso gli utenti è solamente parziale. In questo caso non consideriamo valide le chiavi firmate solo da uno di essi (G), ma sono necessarie più firme. Il nodo H è firmato da entrambi, allora è valido anche per noi. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 80 di 118
  • 81.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Al nodo C non è stato assegnato alcun livello di fiducia, di conseguenza ignoreremo le firme che apporrà nelle altre chiavi (I, J, K). Il nodo S, infine, viene chiamato orfano poiché è stato firmato da due sconosciuti (se S è stato recuperato da un keyserver, per esempio) e non possiamo assumere nessuna validità. 6.4 PGP certificate format Un certificato PGP è un insieme di informazioni standard sull’utente e la sua chiave pubblica. Include le seguenti informazioni: • chiave pubblica del possessore • informazioni del possessore • firma digitale del possessore • validità del certificato • algoritmo di cifratura preferito Da notare che la firma che ne certifica la validità è del possessore stesso, chiamata self-signature, seguendo la tradizione PGP che si basa sulla fiducia reciproca tra i firmatari (horizontal trusting). Altro aspetto unico dei certificati PGP è che ogni singolo certificato può contenere più firme. Più persone possono apporre la loro firma digitale sul nostro certificato per autenticare il nostro certificato ma è fondamentale differenziare questa autenticazione da quella delle CA. Le firme nei certificati PGP possono attestare solamente che il nome del possessore corrisponde alla chiave pubblica presente, non che tutte le informazioni del certificato sono veritiere! Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 81 di 118
  • 82.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Ovviamente ogni certificato può contenere informazioni aggiuntive. Potrebbero essere inserite nome dell’azienda per cui si lavora, home page, numeri di telefono e così via… Possiamo ora evidenziare le differenze principali i due standard di certificati: • PGP può essere creato dall’utente stesso mentre X.509 deve essere richiesto e ottenuto da una CA (che però potrebbe essere mantenuta dallo stesso utente); • X.509 supporta solo un singolo nome per ogni certificato. PGP infinite; • X.509 supporta una sola forma digitale che ne attesti l’autenticità, PGP il più possibile. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 82 di 118
  • 83.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 7 IN PRATICA… “Niuno sanza invenzione fu mai grande uomo nel mestiere suo” Niccolò Machiavelli Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 83 di 118
  • 84.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Dopo l’analisi delle 2 implementazioni principali sulla sicurezza delle email, è arrivato il momento di scoprirne l’uso pratico e capire quale risolve le nostre esigenze. Nei due prossimi paragrafi si spiega come si producono certificati di tipo X.509v3 e PGP mentre nel terzo si trarranno le conclusioni, sul perché e per chi è preferibile l’una o l’altra soluzione. Negli esempi il certificato X.509 è stato prodotto in Linux, mentre il certificato PGP in Windows, ma è possibile fare l’inverso. La versione di Windows Installata è Windows XP Professional, versione 2002 in Italiano con Service Pack 1, tutto con regolare licenza Microsoft MSDN-AA. La versione Linux, invece, è la francese Mandrake 9.2, installata dalle immagini ISO scaricabili gratuitamente dal sito web del distributore [20]. 7.1 Produrre un certificato X.509v3 I certificati X.509v3 hanno valore legale se emessi da una CA conosciuta e certificata. Per ottenere quindi benefici di questo tipo non è possibile esibire una certificazione auto prodotta. Le CA più importanti mettono a disposizione anche una caratteristica aggiuntiva: possono certificare non solo la corrispondenza nome-chiave ma anche nome-“persona fisica”; per questo è necessario che l’individuo si presenti di persona negli uffici della CA con documenti d’identità validi. Ottenere un semplice certificato per uso personale da una CA è molto facile: non si deve fare nulla di particolarmente gravoso, solo rispondere a qualche domanda sul sito web del Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 84 di 118
  • 85.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it certificatore. Ecco un esempio di un certificato emesso da Thawte. Certificato Personal Freemail emesso da Thawte Un certificato è prodotto da un server; si necessita perciò di un sistema operativo sviluppato a tale scopo. Microsoft mette a Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 85 di 118
  • 86.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it disposizione sistemi Operativi quali Windows NT/2000/XP/2003. mentre qualsiasi distribuzione di Linux fa al caso nostro. In entrambi i casi, si debbono installare dei pacchetti aggiuntivi che permettono la realizzazione di un Server per l’emissione, la manutenzione e la distribuzione di certificati. In questo capitolo ci concentreremo solo sull’emissione, quindi non dell’intera PKI. 7.1.1 Installare una PKI in Windows La stesura di questo paragrafo attinge preziose informazioni dal sito Microsoft [22]. Per creare un certificato digitale X.509v3 è sufficiente impersonare una CA ma per mantenere una vera PKI si deve installare un server LDAP o un’Active Directory che permetta la gestione di tutti i certificati (distribuzione, gestione richieste … ) Windows XP (come anche 2000/2003) include un'infrastruttura a chiave pubblica completa in grado di garantire tutti i vantaggi della crittografia a chiave pubblica, è incorporata nel sistema operativo ed è totalmente integrata nelle normali attività di gestione della rete. I componenti principali della PKI di Windows sono: • Servizi certificati, uno dei servizi di base del sistema operativo che consente alle aziende di agire in qualità di autorità di certificazione e di emettere e gestire i propri certificati digitali • Active Directory™, uno dei servizi di base del sistema operativo per la centralizzazione delle risorse di rete e che funge da servizio di pubblicazione nell'ambito della PKI. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 86 di 118
  • 87.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it • Applicazioni abilitate all'utilizzo della PKI quali Internet Explorer, Microsoft Money, Internet Information Server, Outlook e Outlook Express, nonché una vastissima gamma di applicazioni di terze parti compatibili con la PKI di Windows. • Exchange KMS (Key Management Service), un componente di Microsoft Exchange che consente l'archiviazione e il recupero delle chiavi utilizzate per crittografare i messaggi di posta elettronica. In Windows, MMC (Microsoft Management Console) rappresenta l'area di lavoro standard per lo svolgimento di tutte le attività amministrative, incluse quelle inerenti la gestione della PKI. Tramite lo snap-in MMC Servizi certificati, gli amministratori possono eseguire in modo semplice tutte le attività quotidiane necessarie per la normale manutenzione della PKI, quali: • Revoca dei certificati, quando necessario. • Visualizzazione delle proprietà (inclusi l'intervallo di validità, la data dell'ultimo aggiornamento e l'appartenenza di un certificato) dei certificati e degli elenchi di certificati revocati. • Definizione dei modelli per gli attributi dei certificati; in questo modo i nuovi certificati ereditano automaticamente gli attributi dei modelli. • Modifica delle impostazioni del criterio di gruppo per utenti, gruppi e computer, in presenza delle autorizzazioni appropriate. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 87 di 118
  • 88.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 7.1.2 Installare una PKI in Linux Per implementare una semplice CA in Linux è necessario installare un pacchetto che permetta di gestire connessioni sicure di tipo SSL. OpenSSL [33] e ApacheSSL [29] fanno al caso nostro. OpenSSL, utilizzato dallo stesso Apache, è un toolkit crittografico che implementa i protocolli SSL (Secure Socket Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 88 di 118
  • 89.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Layer v2/v3) e TLS (Transport Layer Security v1) e i relativi standard crittografici richiesti da essi. OpenSSL è un programma che funziona su linea di comando e permette di usare le funzioni della libreria crittografica OpenSSL. Può essere usato per: • Creazione di parametri per la generazione delle chiavi RSA, DH e DSA • Creazione di certificati x.509, CSR (Certificate Signing Requests) e CRL • Calcolo dell’hash di messaggi • Cifratura e Decifratura • SSL e TSL client/server test • Gestione della firma e cifratura di e-mail Per l’installazione si dovrà effettuare la procedura seguente: Una volta effettuato il download dei file necessari, spostarsi nella directory dove essi sono contenuti ed eseguire i seguenti comandi: tar xvzf openssl-0.9.6.tar.gz cd openssl-0.9.6/ ./config make make test make install Per verificare che OpenSSL sia stato installato correttamente, digitare dalla linea di comando "openssl", se l'installazione è andata a buon fine, comparirà il prompt di OpenSSL "openssl>" dal quale è possibile digitare i vari comandi. Una volta installato OpenSSL, procediamo all’installazione di ApacheSSL. Dalla directory contenente i files scaricati, digitare i seguenti comandi: Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 89 di 118
  • 90.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it tar xvzf apache_1.3.24.tar.gz cd apache_1.3.24 tar xvzf ../apache_1.3.24+ssl_1.48.tar.gz ./FixPatch ./configure --prefix=DIR* ./configure --prefix=DIR* --enable- module=rewrite --enable-shared=rewrite make make install ln -s DIR*/conf/httpsd.conf DIR*/conf/httpd.conf * DIR dovrà essere sostituita con la directory in cui si vuole installare Apache. Al termine della procedura dovrebbe comparire la seguente schermata, altrimenti vuol dire che l'installazione non è andata a buon fine! make[1]: Leaving directory `/data/server/apache_1.3.9' +------------------------------------------------------- | You now have successfully built and installed the | | Apache 1.3 HTTP server. To verify that Apache actually | | works correctly you now should first check the | | (initially created or preserved) configuration files | | | | DIR/conf/httpsd.conf | | | and then you should be able to immediately fire up | | Apache the first time by running: | | DIR/bin/httpsdctl start | | Thanks for using Apache. The Apache Group | | http://www.apache.org/ | +------------------------------------------------------- Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 90 di 118
  • 91.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it A questo punto, prima di lanciare Apache, è necessario creare i certificati. Richiedere a una CA di firmare la propria chiave pubblica è tipicamente un processo off-line, la procedura per avere un certificato digitale valido è per tutti la stessa: 1. Crearsi, con l'ausilio di qualche toolkit (per esempio OpenSSL) una coppia di chiavi; 2. Preparare una CSR (Certificate Signing Request) ovvero una richiesta di firma di un certificato; 3. Inviare alla CA, ad esempio via e-mail, la CSR. Ma ecco come fare i nostri certificati self-signed in Linux: Prima di procedere con la creazione del certificato, spostarsi nella directory DIR e creare le directory “gcache” e “certs”, poi spostarsi all’interno di “certs” ed eseguire la seguente procedura: 1. Generazione della chiave richiesta di una chiave RSA di 1024 bit, che verrà memorizzata sul file "fabio.key": openssl genrsa –des3 -out fabio.key 1024 Verrà chiesta una passphrase perché con l'opzione –des3 abbiamo richiesto di cifrare la chiave privata con l'algoritmo TripleDES; questa passphrase verrà richiesta ogni volta che OpenSSL deve utilizzare la chiave privata. 2. Generazione della richiesta di firma del certificato Creazione di una CSR (Certificate Signing Request) secondo lo standard PKCS#10: openssl req -new -key fabio.key -out fabio.csr Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 91 di 118
  • 92.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 3. Generazione della chiave e del certificato della CA (si fa una sola volta e con questo si firmano tutti i prossimi certificati emessi) richiesta di una chiave RSA di 2048 bit openssl genrsa –des3 -out CA.key 2048 generazione del certificato della CA openssl req -new -x509 -key CA.key -out CA.cert Verrà chiesta la passphrase della chiave privata e alcune informazioni standard presenti nei certificati. "CA" ha quindi il suo certificato di CA, con il quale può firmare altri certificati. 4. Firma del certificato da parte di "CA" Prima di effettuare la firma, bisogna creare alcune directory e alcuni files: mkdir -p demoCA/newcerts touch demoCA/index.txt echo '01' > ./demoCA/serial Adesso siamo pronti; ecco la firma vera e propria: openssl ca -keyfile CA.ca.key -cert CA.cert -in fabio.csr -out fabio.cert A questo punto si debbono fare 2 considerazioni sul certificato personale (“fabio.cert”) appena emesso dalla nostra Autorità di Certificazione: • deve poter essere importato nel nostro sistema operativo o tradurre il certificato nello standard di interscambio PKCS#12 (vedi voce di glossario) • non è riconosciuto come valido Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 92 di 118
  • 93.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it o installare il certificato della nostra CA nel sistema operativo o ora è riconosciuto come valido sulla nostra macchina ma non su tutte le altre… Per tradurre “fabio.cert” nello standard di interscambio si fa riferimento ancora una volta ad OpenSSL ma prima di devono fondere la chiave fabio.key e il certificato fabio.cert in un unico file PEM (vedi voce di glossario): less fabio.key > fabio.pem less fabio.cert >> fabio.pem ora si può tradurre con il comando openssl pkcs12 –export –in fabio.pem –out fabio.p12 –name “Fabio Pustetto” Questo file ora può essere importato nel nostro client in qualsiasi sistema operativo. Nella sezione “Appendice” si può leggere il log dell’intera procedura. Anche in questo caso, questi pochi comandi servono ad implementare una CA e non una PKI completa. Sarà necessario installare un server per la distribuzione dei certificati e la ricezione di richieste di firma, tramite Apache e LDAP. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 93 di 118
  • 94.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Certificato della CA Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 94 di 118
  • 95.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Certificato personale a nome di “Fabio Pustetto” 7.2 Produrre un certificato PGP PGP, per sua natura, è rivolto ad utenza privata, evoluta ma non necessariamente esperta e per tale motivo risulta molto Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 95 di 118
  • 96.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it meno macchinoso produrre un certificato valido per i nostri scopi. L’ultima versione di PGP attualmente disponibile è la 8.0.3, scaricabile gratuitamente (con funzionalità limitate) per uso non commerciale dal sito del produttore [25]. In Windows, ma anche in Linux, basterà avviare l’eseguibile (exe o rpm) perché il Wizard guidi l’utente nell’installazione e nella creazione della prima coppia di chiavi (si dovranno fare delle scelte, come algoritmi preferiti o dimensione delle chiavi, ma i valori predefiniti vanno benissimo, oltre alla già citata passphrase). A questo punto il nostro keyrings è pronto all’uso. Il ponte di comando PGP è la piccola icona (lucchetto) sulla barra di menù. PGPtray Tramite questa icona si accedono a tutti i servizi a disposizione. Quello che a noi interessa è PGPkeys per vedere i certificati di altri utenti in nostro possesso e PGPmail per usufruire dei servizi di cifratura e firma. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 96 di 118
  • 97.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it 7.2.1 PGPkeys È l’interfaccia che permette di gestire il nostro public keyring, contenente la chiavi pubbliche dei nostri contatti. Il campo validità è contraddistinto da un pallino verde (valido) o grigio (non valido) secondo il modello Web of Trust e le firme allegate. Il campo “Trust”, invece visualizza il nostro livello di fiducia nell’utente. Questi parametri andranno modificati a seconda delle nostre esigenze nella sezione proprietà di ogni certificato. 7.2.2 PGPmail Il centro di raccolta di tutte le funzioni principali: Encript Wipe Sign Encript PGPkeys and Sign Decript Freespace and Verify Wipe Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 97 di 118
  • 98.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Per le nostre esigenze, le funzioni necessarie, ovviamente, sono PGPkeys (vedi paragrafo precedente) e le combinazioni di: • Sign: firma la mail o il file da inviare; • Verify: verifica la firma ricevuta; • Encript: cifra la mail o il file da inviare; • Decript: decifra la mail o il file ricevuto. 7.2.3 Esempio pratico Dopo aver composto la mail, si seleziona la voce “Current Window” ed “Encrypt and Sign” nel PGPtray. Si selezionano le chiavi pubbliche dei destinatari (possono essere anche più d’uno: l’email è cifrata con la chiave di sessione che a sua volta sarà cifrata con tutte le chiavi pubbliche scelte); a questo punto PGP richiede la passphrase necessaria per accedere alla chiave privata (per la firma) e restituisce la mail firmata e cifrata. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 98 di 118
  • 99.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it In modo simmetrico, quando riceveremo una mail cifrata e firmata, si useranno le funzionalità “Decrypt and Verify” della PGPtray. Nella versione licenziata, infine, PGP si integra con i Mail Agent più conosciuti con dei pulsanti che semplificano ulteriormente l’utilizzo di queste funzionalità. 7.3 Confronto tra PGP e X.509 Ora che abbiamo visto le due implementazioni con filosofie così diverse per lo stesso scopo, vediamo di riassumerne le differenze sostanziali e di delineare un profilo ideale dell’utilizzatore dell’uno e dell’altra variante. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 99 di 118
  • 100.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Nell’utilizzo corrente, certificati PGP e X.509 differiscono in: PGP X.509 Certificati personali prodotti dagli Certificati emessi da Autorità di stessi possessori della chiave privata Certificazione professionali Certificati (chiave pubblica) Certificati autenticati dalla gerarchia autenticati dagli utenti stessi (o di Autorità di Certificazione gruppi di utenti) Cifratura di file (non solo email) Possibilità di certificare anche la persona fisica Può essere difficile scoprire false Facile veirifcare autenticità della autenticazioni firma Meccanismo di tolleranza agli errori Possibilità di attribuire valore legale nel caso in cui utenti nella nostra ai certificati firmati rete di fiducia non siano in grado di autenticare in sicurezza. Compressione degli oggetti cifrati Difficile mantenere PKI Charles Breed (vedi [17]), riassume così le principali differenze tra i due tipi di certificati: X.509 è stato definito nel 1988 da ISO/IEC/ITU con una struttura rigida, codificata in ASN.1, e un singolo emittente (CA). PGP, invece, è nato dalla volontà di un uomo (Philiph Zimmermann) con l’aiuto della comunità Open Source (solo ora PGP è nelle mani di IETF con il gruppo Open- PGP) e si può considerare come un contenitore di firme su specifici attributi. X.509 è legato al directory service X.500, anche se ora può usare il protocollo LDAP per accedere ai certificati, così come PGP. In sintesi, i certificati digitali sono una piccola ma fondamentale componente della grande struttura PKI Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 100 di 118
  • 101.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Quando PGP fu creato, c’erano molte cose che i certificati X.509 non offrivano, per esempio: • Certificati PGP erano molto più piccoli (in termini di spazio occupato per rappresentare le stesse informazioni) di quelli X.509; • X.509 potevano contenere una sola firma che ne attesti la validità, forzandoli in un modello strettamente gerarchico. PGP, invece si orienta verso un modello web- like, in cui sono possibili più firme che rispecchiano le reali relazioni tra utenti e certificati. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 101 di 118
  • 102.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it • Certificati PGP sono self-generated e non richiedono interazioni esterne prima del loro utilizzo. X.509, invece, richiede che il certificato sia emesso e firmato da un’autorità di certificazione. Ma forse ciò che più distingue PGP da X.509 è l’utenza a cui si rivolgono. Mentre X.509 fa del valore legale e della possibilità di certificare in modo inequivocabile tutte le informazioni che esso contiene il suo punto di forza, PGP si basa sulla comunità di utenti per creare delle vere e proprie reti affidabili di certificazioni. Al contrario, mentre mantenere un’infrastruttura PGP è estremamente semplice, costruire un’infrastruttura PKI completa (standalone) è molto complesso e laborioso. Ecco perché mi sento di consigliare l’utilizzo di PGP a chi necessita solo di un po’ di riservatezza nella comunicazione via email, magari promovendolo anche tra i contatti con cui si dialoga abitualmente. Una volta scambiata la chiave pubblica con una certa perizia, sarà molto semplice ottenere delle comunicazioni affidabili e far crescere la propria comunità di utenti all’interno della rete Web of Trust, come presentata nei capitoli precedenti. PGP non ruba spazio ad X.509, ha solo riempito un vuoto lasciato dalla complessità di questo tipo di infrastruttura, rendendo la riservatezza un bene a disposizione di chiunque la voglia e non solo per pochi privilegiati. Per questo Philip Zimmermann è stato oggetto di un’indagine criminale durata tre anni con l’accusa, secondo il governo statunitense, di aver violato le norme concernenti l’esportazione, allorché PGP si diffuse nel mondo dopo la sua Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 102 di 118
  • 103.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it uscita nel 1991. Nonostante ciò PGP divenne il software di codificazione per la posta elettronica più usato al mondo. X.509 però non perde valore nel confronto con PGP. Ad oggi importanti protocolli di autenticazione su Web richiedono l’uso di certificati digitali X.509. Si pensi ad https che usa il protocollo SSL/TLS per le transazioni sicure in applicazioni quali e- commerce, e-banking, e-trading, tanto in voga negli ultimi anni e in continuo trend positivo. Questo tipo di certificati, perciò, sono insostituibili per chi fa della rete il proprio negozio virtuale, che voglia accettare pagamenti con carta di credito o per chi deve dialogare con utenti che non conosce e deve porsi in modo inequivocabile. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 103 di 118
  • 104.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it APPENDICE Legenda delle notazioni usate nelle figure Ks = chiave di sessione KUa = chiave pubblica di A EC = cifratura convenzionale DC = decifratura convenzionale || = concatenazione KRa = chiave privata di A EP = cifratura a chiave pubblica DP = decifratura a chiave pubblica H = funzione di Hash Z = compressione con algoritmo ZIP R64 = conversione al formato ASCII Algoritmo di Diffie-Hellman Nel 1976 Diffie ed Hellman hanno descritto un protocollo per lo scambio di una chiave segreta sopra un canale insicuro; il protocollo, utilizzato da due interlocutori A e B, può essere descritto come segue: A e B scelgono un insieme di interi G=[0,N-1] pubblicamente ed un suo elemento s. A sceglie in modo casuale un elemento a di G, calcola sa mod N e lo invia a B. B sceglie in modo casuale un elemento b di G, calcola sb mod N e lo invia ad A. A, ricevuto sb, calcola K= (sb)a mod N. B, ricevuto sa, calcola K= (sa)b mod N. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 104 di 118
  • 105.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it In questo modo entrambi gli interlocutori possiedono la chiave K ma sopra il canale insicuro sono stati trasferiti solo N, s, samod N ed sbmod N che non consentono di ricostruire K. In realtà la determinazione di a noti s ed sa richiede la soluzione del problema del logaritmo discreto che consiste nella determinazione dell’intero che corrisponde al logaritmo in una base intera di un intero di cui è noto solo resto della divisione rispetto al modulo N. Tale problema è computazionalmente difficile. Algoritmo RSA Proposto nel 1978 da Rivest, Shamir e Adleman [35], da cui il nome, è il primo sistema di crittografia a chiavi pubbliche basato sui concetti proposti da Diffie ed Hellman ed è anche quello attualmente più diffuso ed utilizzato. Il metodo si basa sulla fattorizzazione di interi di grandi dimensioni e per utilizzarlo ciascun interlocutore deve compiere le seguenti azioni: Scegliere due grandi interi p e q che siano primi; il loro prodotto corrisponde al valore di N utilizzato nel calcolo del modulo nelle operazioni di codifica e decodifica. Scegliere un intero c, primo rispetto ad T=(p-1)*(q-1), da utilizzare quale chiave pubblica di codifica Kp. Calcolare l’intero d per il quale risulta c*d mod T=1, che verrà usato come chiave segreta di decodifica Ks. Rendere pubblici N e la chiave Kp=c. Il messaggio cifrato X corrispondente ad un messaggio M si ottiene dalla relazione: Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 105 di 118
  • 106.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it X = Mc mod N mentre la decodifica avviene secondo la relazione: Xd mod N = (Mc mod N)d mod N = Mcd mod N = M. La sicurezza dello RSA è affidata alla difficoltà di determinare i fattori primi di un intero quando questo è molto grande, difficoltà che aumenta in modo esponenziale al crescere del numero di bit usati per la chiave. Comandi principali di OpenSSL I comandi di OpenSSL più importanti per gestire un server PKI sono: x509: utility per certificati multi purpose. Può essere usato per visualizzare informazioni sul certificato, convertire certificati in altre forme, firmare certificati come una piccola CA oppure modificare la gerarchia del certificato. openssl x509 [-inform DER|PEM|NET] [-outform DER|PEM|NET] [-keyform DER|PEM] [-CAform DER|PEM] [-CAkeyform DER|PEM] [-in filename] [- out filename] [-serial] [-hash] [-subject] [- issuer] [-nameopt option] [-email] [-startdate] [-enddate] [-purpose] [-dates] [-modulus] [- fingerprint] [-alias] [-noout] [-trustout] [- clrtrust] [-clrreject] [-addtrust arg] [- addreject arg] [-setalias arg] [-days arg] [- set_serial n] [-signkey filename] [-x509toreq] [-req] [-CA filename] [-CAkey filename] [- CAcreateserial] [-CAserial filename] [-text] [- C] [-md2|-md5|-sha1|-mdc2] [-clrext] [-extfile filename] [-extensions section] [-engine id] req: crea ed elabora richieste di certificati nel formato PKCS#10. Può anche creare certificati self signed per usarli come root CA. openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey] [- noout] [-verify] [-modulus] [-new] [-rand Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 106 di 118
  • 107.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it file(s)] [-newkey rsa:bits] [-newkey dsa:file] [-nodes] [-key filename] [-keyform PEM|DER] [- keyout filename] [-[md5|sha1|md2|mdc2]] [- config filename] [-subj arg] [-x509] [-days n] [-set_serial n] [-asn1-kludge] [-newhdr] [- extensions section] [-reqexts section] [-utf8] [-nameopt] [-batch] [-verbose] [-engine id] pkcs12: permette di creare e analizzare file PKCS#12, usati da molti programmi, inclusi Netscape, MSIE e MS Outlook. openssl pkcs12 [-export] [-chain] [-inkey filename] [-certfile filename] [-name name] [- caname name] [-in filename] [-out filename] [- noout] [-nomacver] [-nocerts] [-clcerts] [- cacerts] [-nokeys] [-info] [-des] [-des3] [- idea] [-nodes] [-noiter] [-maciter] [-twopass] [-descert] [-certpbe] [-keypbe] [-keyex] [- keysig] [-password arg] [-passin arg] [-passout arg] [-rand file(s)] ca: la minima applicazione per una CA. Può essere usato per firmare certificati in vari formati e generare liste CRL. Mantiene un database testuale di certificati distribuiti e del loro stato. openssl ca [-verbose] [-config filename] [-name section] [-gencrl] [-revoke file] [-crl_reason reason] [-crl_hold instruction] [- crl_compromise time] [-crl_CA_compromise time] [-subj arg] [-crldays days] [-crlhours hours] [-crlexts section] [-startdate date] [-enddate date] [-days arg] [-md arg] [-policy arg] [- keyfile arg] [-key arg] [-passin arg] [-cert file] [-selfsign] [-in file] [-out file] [- notext] [-outdir dir] [-infiles] [-spkac file] [-ss_cert file] [-preserveDN] [-noemailDN] [- batch] [-msie_hack] [-extensions section] [- extfile section] [-engine id] Lo script perl CA.pl è un’interfaccia amichevole per le applicazioni di OpenSSL. Fornisce i relativi argomenti al comando openssl per alcune operazioni certificate. È stato creato per semplicizzare il processo di creazione e gestione dei certificati con l’uso di semplici opzioni. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 107 di 118
  • 108.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it CA.pl [-?] [-h] [-help] [-newcert] [-newreq] [- newreq-nodes] [-newca] [-xsign] [-sign] [- signreq] [-signcert] [-verify] [files] Es: creo una CA, creo una richiesta, firmo la richiesta e creo il file PKCD#12 che contiene il certificato: CA.pl -newca CA.pl -newreq CA.pl -signreq CA.pl -pkcs12 "My Test Certificate" Log emissione certificati [fabio@localhost fabio]$ openssl genrsa -des3 - out fabio.key 1024 Generating RSA private key, 1024 bit long modulus ......++++++ ..........++++++ e is 65537 (0x10001) Enter PEM pass phrase: Verifying password - Enter PEM pass phrase: [fabio@localhost fabio]$ openssl req -new -key fabio.key -out fabio.csr Using configuration from /usr/lib/ssl/openssl.cnf Enter PEM pass phrase: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:IT State or Province Name (full name) [Some- State]:Italia Locality Name (eg, city) []:Venezia Organization Name (eg, company) [Internet Widgits Pty Ltd]:Università Ca' Foscari Organizational Unit Name (eg, section) []:dipartimento di Informatica Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 108 di 118
  • 109.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Common Name (eg, YOUR name) []:Fabio Pustetto Email Address []:fpustett@dsi.unive.it Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:studente [fabio@localhost fabio]$ openssl genrsa -des3 - out CA.key 2048 Generating RSA private key, 2048 bit long modulus ............................................... ....................+++ ................+++ e is 65537 (0x10001) Enter PEM pass phrase: Verifying password - Enter PEM pass phrase: [fabio@localhost fabio]$ openssl req -new -x509 -key CA.key -out CA.cert Using configuration from /usr/lib/ssl/openssl.cnf Enter PEM pass phrase: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:IT State or Province Name (full name) [Some- State]:Italia Locality Name (eg, city) []:Venezia Organization Name (eg, company) [Internet Widgits Pty Ltd]:Università Ca' Foscari Organizational Unit Name (eg, section) []:dipartimento di Informatica Common Name (eg, YOUR name) []:admin Email Address []:info@dsi.unive.it [fabio@localhost fabio]$ mkdir -p demoCA/newcerts [fabio@localhost fabio]$ touch demoCA/index.txt Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 109 di 118
  • 110.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it [fabio@localhost fabio]$ echo '01' > ./demoCA/serial [fabio@localhost fabio]$ openssl ca -keyfile CA.key -cert CA.cert -in fabio.csr -out fabio.cert Using configuration from /usr/lib/ssl/openssl.cnf Enter PEM pass phrase: Check that the request matches the signature Signature ok The Subjects Distinguished Name is as follows countryName :PRINTABLE:'IT' stateOrProvinceName :PRINTABLE:'Italia' localityName :PRINTABLE:'Venezia' organizationName :T61STRING:'Università Ca' Foscari' organizationalUnitName:PRINTABLE:'dipartimento di Informatica' [fabio@localhost fabio]$ less fabio.key > fabio.pem [fabio@localhost fabio]$ less fabio.cert >> fabio.pem [fabio@localhost fabio]$ openssl pkcs12 –export –in fabio.pem –out fabio.p12 –name “Fabio Pustetto” Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 110 di 118
  • 111.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it GLOSSARIO Active Directory Rende disponibile un unico archivio per tutte le informazioni e le credenziali della rete. La PKI di Windows 2000 utilizza questo archivio per le informazioni sulle chiavi pubbliche. Il vantaggio immediato è: nessun nuovo strumento da imparare, nessun componente da installare o applicazione da gestire. Questo aspetto è in netto contrasto con i componenti PKI che creano propri archivi distinti per i dati dei certificati e degli elenchi di certificati revocati. Con queste soluzioni si è costretti a gestire database separati per i dati di utenti, computer e PKI anziché conservarli in un unico archivio totalmente integrato. Il servizio Active Directory supporta inoltre controlli di accesso minuziosi, affinché gli amministratori possano selezionare accuratamente gli utenti autorizzati a vedere, modificare e copiare le informazioni della directory Certificazione Risultato della procedura informatica, applicata alla chiave pubblica e rilevabile dai sistemi di validazione, mediante la quale si garantisce la corrispondenza biunivoca tra chiave pubblica e soggetto titolare cui essa appartiene, si identifica quest'ultimo e si attesta il periodo di validità della predetta chiave ed il termine di scadenza del relativo certificato, in ogni caso non superiore a tre anni. ([5] art 1, h) Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 111 di 118
  • 112.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Chiave di sessione Chiave simmetrica temporanea che è valida solo per un breve periodo. Una chiave di sessione è tipicamente un numero casuale che può essere scelto da una delle due parti della conversazione, da tutte e due le parti o da una terza parte riconosciuta. Chiave privata Elemento della coppia di chiavi asimmetriche, destinato ad essere conosciuto soltanto dal soggetto titolare, mediante il quale si appone la firma digitale sul documento informatico o si decifra il documento informatico in precedenza cifrato mediante la corrispondente chiave pubblica. ([5] art 1, e) Chiave pubblica Elemento della coppia di chiavi asimmetriche destinato ad essere reso pubblico, con il quale si verifica la firma digitale apposta sul documento informatico dal titolare delle chiavi asimmetriche o si cifrano i documenti informatici da trasmettere al titolare delle predette chiavi. ([5] art 1, f) Chiavi asimmetriche Coppia di chiavi crittografiche, una privata ed una pubblica, correlate tra loro, da utilizzarsi nell'ambito dei sistemi di validazione o cifratura di documenti informatici. ([5] art 1, d) Directory Service Uno o più server contenenti le informazioni sugli utenti, tra le quali il legame tra nome utente e indirizzo di rete e altre informazioni più specifiche. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 112 di 118
  • 113.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it Firewall Letteralmente “muro di fuoco”. Nelle configurazioni più semplici consiste in un computer interposto tra la rete interna e l’esterno. Tutto il traffico da e per la rete protetta deve passare attraverso il firewall che si occuperà di filtrare i pacchetti secondo le regole volute. Firma digitale Risultato della procedura informatica (validazione) basata su un sistema di chiavi asimmetriche a coppia, una pubblica e una privata, che consente al sottoscrittore tramite la chiave privata e al destinatario tramite la chiave pubblica, rispettivamente, di rendere manifesta e di verificare provenienza e integrità di un documento informatico o di un insieme di documenti informatici. ([5] art 1, b) ITU International Telecommunication Union. Organismo situato a Ginevra, ex CCITT, per l’emissione di standard internazionali di telecomunicazioni (protocolli OSI), concordati fra i governi e le compagnie private. LDAP Lightweight Directory Access Protocol, protocollo usato per i Directory Server, simili ai database relazionali ma privilegiano la velocità di ricerca e prevedono linguaggio di interrogazione molto semplice e la distinzione tra i privilegi degli utenti. PEM Privacy-Enhanced Mail: uno standard Internet per lo scambio di messaggi di posta confidenziali Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 113 di 118
  • 114.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it PKCS Public-Key Cryptography System: è un set di protocolli standard informali, sviluppati dalla RSA per rendere possibile lo scambio di informazioni sicure su una rete o informazioni relative ai certificati X.509. Policy Set di regole e informazioni contenute nel certificato che ne determina l’applicabilità in un certo ambiente. RFC Request For Comments: meccanismo di emissione degli standard Internet. Sono documenti il cui codice numerico identifica il particolare standard (protocolli, interfacce, applicazioni, ecc.). X.500 Una serie di protocolli definiti dalla ISO e dalla ITU per realizzare un sistema di Directory Service aperto multivendor. La famiglia di protocolli X.500 include DAP, DSP e DISP. Il protocollo X.500 è oggi alla sua terza versione. Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 114 di 118
  • 115.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it BIBLIOGRAFIA [1] Autorità di Certificazione Thawte http://thawte.ascia.net/index.php [2] Autorità di Certificazione, Verisign http://www.verisign.com/products/pki/whitepapers.html [3] Brennen Alex, “GnuPG Keysigning Party HOWTO” http://www.cryptnet.net/fdp/crypto/gpg-party.html http://www.cryptnet.net/fdp/crypto/gpg-party/gpg-party.it.html [4] Centro Nazionale per l’Informatica nella Pubblica Amministrazione http://www.cnipa.gov.it [5] Decreto del Presidente della Repubblica 10 novembre 1997, n. 513 – “Regolamento contenente i criteri e le modalità per la formazione, l'archiviazione e la trasmissione di documenti con strumenti informatici e telematici a norma dell'articolo 15, comma 2, legge 15 marzo 1997, n. 59” http://www.interlex.it/testi/dpr51397.htm [6] Diffie W. e Hellman M., "New directions in cryptography", in "IEEE Transactions on Information Theory", vol. 22 (1976), pp. 644-654 [7] Ellison Carl, “SPKI/SDSI and the Web of Trust” http://world.std.com/~cme/html/web.html [8] Feisthammel Patrick, “Explanation of the web of trust of PGP” http://www.rubin.ch/pgp/weboftrust.en.html [9] Gli approfondimenti di www.tariffe.it www.tariffe.it/approfondimenti/approfondimenti_certificati_digitali.htm [10] Graphwiz, AT&T Labs-Research http://www.research.att.com/sw/tools/graphviz/ [11] IETF RFC 1319: “The MD2 Message-Digest Algorithm, Internet Activities Board”, April 1992, written by Kaliski B., http://www.ietf.org/rfc/rfc1319.txt Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 115 di 118
  • 116.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it [12] IETF RFC 1321: “The MD5 Message Digest Algorithm, Internet Activities Board”, April 1992, written by Rivest R. L. http://www.ietf.org/rfc/rfc1321.txt [13] IETF RFC 2440: “OpenPGP specification”, November 1998, written by Jon Callas, Lutz Donnerhacke, Hal Finney, and Rodney Thayer http://www.ietf.org/rfc/rfc2440.txt [14] IETF RFC 2560: “X.509 Internet Public Key Infrastructure Online Certificate Status Protocol – OCSP”, June 1999, written by M. Myers, R. Ankney, A. Malpani, C. Adams, S. Galperin http://www.ietf.org/rfc/rfc2560.txt [15] IETF RFC 3156: “OpenPGP/MIME specification”, August 2001, written by Michael Elkins, Dave del Torto, Raph Levien, and Thomas Roessler http://www.ietf.org/rfc/rfc3156.txt [16] IETF RFC 3447: “Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications V. 2.1”, Novembre 2003, written by Kaliski B. http://www.ietf.org/rfc/rfc3447.txt [17] Information Security Magazine http://infosecuritymag.techtarget.com/index.shtml [18] International Organization for Standardization and International Electrotechnical Commission Joint Technical Committee 1, “ISO/IEC Draft International Standard 10118-3: Information technology – Security techniques - Hash functions - Part 3: Dedicated Hash functions”, 1996 [19] Luca Bechelli, Security Consultant http://web.tiscalinet.it/LucaBechelli [20] Mandrake Linux, distribuzione Linux http://www.mandrakelinux.com [21] Menezes A. J., van Oorschot P. C., Vanstone S. A., “Handbook of Applied Cryptography”, CRC Press, 1997 http://www.cacr.math.uwaterloo.ca/hac/ Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 116 di 118
  • 117.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it [22] Microsoft TechNet http://www.microsoft.com/italy/technet/solutions/affidabilita/cryptki/ http://www.microsoft.com/italy/technet/risorse/info_tech/windows2000/sm artc04/default.asp http://www.microsoft.com/italy/technet/risorse/info_tech/windows2000/pki ntro/ [23] P.G.P., canzone scritta e interpretata da Leslie Fish. http://www.eff.org/Net_culture/Folklore/Humor/pgp.song (testo) http://www.prometheus-music.com/audio/pgp.mp3 (audio mp3) http://www.prometheus-music.com/eli/leslie.html NB: P.G.P è protetta da copyright del 18/12/1993 a nome di Lesile Fish e Random Factors ed essi detengono tutti i diritti legali su di esse. [24] PC Professionale numero 150, “Firme digitali e crittografia con Linux”, Settembre 2003, di Marco Fioretti, pagine 391-397 [25] PGP Home Pages http://www.pgpi.org http://www.pgp.com http://www.openpgp.org [26] PGP Keyservers ldap://keyserver.pgp.com ldap://europe.keys.pgp.com [27] Pironti M. “La firma elettronica: strumento per la sicurezza delle informazioni”, Rassegna dauna dei dottori commercialisti, IV trim. 2000. http://www.di.unito.it/~pironti/firmaelettr.PDF [28] Practical Attacks on PGP http://www.privacy.com.au/pgpatk.html [29] Progetto Apache e Apache-SSL http://www.apache.org/ http://www.apache-ssl.org/ [30] Progetto ElyCA - Freashmeat per PKI, di Pablo Neira http://www.freashmeat.net Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 117 di 118
  • 118.
    www.unive.it Tesi di Laurea A. A. 2003/2004 www.dsi.unive.it [31] Progetto mod_ssl http://www.modssl.org [32] Progetto OpenCA http://www.openca.org/ [33] Progetto OpenSSL http://www.openssl.org/ http://www.openssl.org/docs/apps/openssl.html [34] Rivest R. L., “The MD4 Message Digest Algorithm”, in “Advances in Cryptology - CRYPTO ‘90”, Lecture Notes in Computer Science, n. 537, Springer-Verlag, Berlino, 1991, pp. 303-311 [35] Rivest R. L., Shamir A. e Adleman L., “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems”, in "Communications of the ACM", vol. 21 (1978), n. 2, pp. 120-126 [36] Sgarro Andrea, “Crittografia”, Franco Muzzio Editore, 1993 [37] Stallings W. “Cryptography and Network Security”, Prentice Hall, 1998 [38] Stinson, Douglas R. “Cryptography Theory and Pratice”, CRC Press, 1995 [39] Tanenbaum A. S., “Reti di computer”, Prentice Hall, 1998 [40] Zimmermann Philip R., bibliografia e homepage http://www.philzimmermann.com/IT/background http://www.mediamente.rai.it/biblioteca/biblio.asp?id=363&tab=bio [41] Zimuel Enrico, “Introduzione alla crittografia e alla crittoanalisi” http://www.iclc.org/slides/slidespdf.pdf Fabio Pustetto Posta elettronica sicura: X.509 e PGP Pagina 118 di 118