Capitolo 1
Public Key Infrastructure - PKI
In questo capitolo viene delineato il quadro generale delle tecnologie utilizzate per garantire la
sicurezza delle comunicazioni su Internet. Nella prima parte, si introdurr` a il concetto di PKI,
analizzando lo standard X.509 e il suo utilizzo all’interno del protocollo SSL/TLS. Nella seconda
parte del capitolo, verranno esaminate alcune vulnerabilit` a delle principali componenti di una PKI
che sono alla base di possibili attacchi alla sicurezza dei sistemi informatici.
1.1 Introduzione
Per secoli, le persone si sono fidate di difese e codici segreti per provare l’identit` a di altre persone.
Sin dalla nascita dei primi sistemi informatici si ` e avvertita la necessit` a di renderli capaci di
accertareautomaticamentel’identit` adiunutente(personafisica,hardware,software,oapplicativo
che sia) che desideri accedere ai loro servizi. Il procedimento attraverso il quale un utente viene
riconosciutodaunsistemaprendeilnomediautenticazione. Questadovrebbeavvenirenelmodo
seguente:
1. identificazione del richiedente;
2. rilascio di credenziali (username/password, PIN, token, smart card, certificato, ecc...);
3. immissione nel sistema di queste credenziali;
4. utilizzo delle credenziali da parte dell’utente;
5. riconoscimento dell’utente da parte del sistema.
L’identificazione ` e una procedura organizzativo-tecnologica attraverso la quale si verifica l’i-
dentit` a del richiedente, le sue caratteristiche rispetto al servizio richiesto (ruolo, motivo, fedina
penale, ecc.) e si rilasciano le credenziali.
Storicamente gi` a i primi sistemi di elaborazione utilizzavano un’autenticazione basata sull’uso
di credenziali formate da username e password. Tali tecniche in realt` a certificano soltanto che la
persona che accede al sistema conosce delle informazioni segrete legate ad un certo account, senza
affermare niente riguardo all’identificazione. Discorso analogo avviene per le tecniche basate su
cartemagnetiche. Unprimopassopercercaredirealizzareunaformadiautenticazionechefornisca
garanzie anche riguardo l’identificazione ` e rappresentato dai sistemi biometrici, come la lettura
dell’iride, l’impronta digitale ed il riconoscimento vocale. Purtroppo queste tecniche presentano
delle probabilit` a di errore ancora troppo elevate per poter essere impiegate all’interno di “sistemi
sicuri”.
Con lo sviluppo di Internet e della rete globale il problema dell’autenticazione ha assunto un
ruolo centrale grazie allo sviluppo dell’e-commerce, e pi` u in generale delle transazioni sul Web. In
1
1 – Public Key Infrastructure - PKI
questi frangenti il problema di autenticazione cresce, poich´ e l’utente deve essere identificato dal
server prima che questo rilasci i servizi. Inoltre, lo stesso utente chiede di sapere l’identit` a esatta
del server prima di effettuare un’operazione (pagamento elettronico, inserimento di dati sensibili,
inserimento di dati identificativi). Tutte queste comunicazioni avvengono attraverso lo scambio di
messaggisuretiinsicuree,quindi,richiedonomeccanismichegarantiscanolasegretezzael’integrit` a
dei dati. La tecnica pi` u diffuso che cerca di garantire questi requisiti` e la crittografia, una branca
dellamatematicachetrasformailmessaggioinchiaroinunaltrocherisultaessereleggibilesoltanto
da chi possiede un’informazione aggiuntiva (detta “chiave”). Tuttavia, molto spesso, ` e necessario
anche che le due parti non abbiano la possibilit` a di ripudiare i messaggi inviati e ricevuti, ci` o
avviene utilizzando la cosiddetta “firma digitale”, la cui apposizione garantisce l’autenticazione del
messaggio e conseguentemente quella dell’utente. Affinch´ e ci` o sia possibile, per` o, ` e necessario che
l’utentechefirmadigitalmenteildocumentosiainpossessodiuncertificatocheneattestil’identit` a
e l’autenticit` a.
I certificati digitali, con particolare riferimento a quelli X.509, dal nome dello standard inter-
nazionale che ne definisce il contenuto, sono tra i meccanismi di autenticazione pi` u diffusi a livello
globale. Questo sar` a, molto probabilmente, il meccanismo di autenticazione che sostituir` a nei
prossimi anni le password. I certificati digitali sono il frutto dei risultati della pi` u recente branca
della crittografia: la crittografia a chiave asimmetrica. Al fine di utilizzare tali meccanismi ` e
necessario fare riferimento ad una Public Key Infrastructure (PKI), cio` e un’infrastruttura che
si occupa dell’emissione dei certificati digitali e della loro gestione: pubblicazione in rete, revoca,
sospensioneedaggiornamento. Taleinfrastrutturaspostal’operazionediautenticazionedell’utente
a monte delle applicazioni, rendendola indipendente da queste. Al centro della PKI ci sono degli
enti di provata fiducia preposti alla certificazione di validit` a delle chiavi pubbliche: le Certifica-
tion Authority (CA). Una CA autentica l’associazione (utente ⇔ chiave pubblica) emettendo
un certificato digitale, che consiste della chiave pubblica e di una lista di informazioni relative al
suo proprietario, opportunamente firmate dalla CA.
In tale scenario ogni utente viene fornito di una coppia di chiavi (pubblica e privata) che lo
identificano. Lachiavepubblicavieneinseritainuncertificatodigitalecheneattestainequivocabil-
mente l’appartenenza all’utente stesso. La chiave privata viene, invece, ` e custodita segretamente
dall’utente. L’uso appropriato di questa coppia di chiavi consente la realizzazione di funziona-
lit` a molto importanti in ambito di sicurezza informatica, quali l’autenticazione e l’integrit` a dei
messaggi, la non ripudiabilit` a e la confidenzialit` a.
La soluzione al problema della sicurezza dei sistemi informatici, dal punto di vista tecnico,
viene risolta mettendo in opera questi sistemi complessi (“Infrastrutture a Chiave Pubblica”) ed
utilizzando opportune tecniche crittografiche. Un’infrastruttura a chiave pubblica ` e un sistema di
certificati digitali, autorit` a di certificazione, hardware e software che viene utilizzato per ottenere
l’effettiva integrazione della tecnologia a chiave pubblica. Di questo se ne discuter` a con maggiore
dettaglio nel proseguo del capitolo.
1.2 Architettura di una PKI
Una buona soluzione per la sicurezza in rete impone che il fornitore di servizi e il cliente gestiscano
e mantengano, in modo responsabile ed attento, i rispettivi certificati digitali ed altre informazioni
riguardanti la sicurezza. In questo le soluzioni di PKI sono di aiuto. Una PKI pu` o essere definita
come:
“l’insieme dell’hardware, del software, del personale e delle procedure necessarie per
creare,gestire,immagazzinare,distribuireerevocareicertificatibasatisullacrittografia
a chiave pubblica”.
La PKI ha un ruolo centrale in un sistema di sicurezza, come evidenziato in figura 1.1. Per
capire esattamente cosa sia una PKI, si deve prima di tutto comprendere che, in questo ambito,
“infrastruttura” significa capacit` a, abilit` a, e non funzione. Un’infrastruttura non realizza niente
da sola, cos` ı come un ponte non fa niente da solo, ma d` a la capacit` a, l’abilit` a a persone e veicoli di
2
1 – Public Key Infrastructure - PKI
Figura 1.1. Ruolo di una PKI.
attraversareicorsid’acqua. QuestovaleancheperunaPKI:rendedisponibilelasuainfrastruttura,
cio` e le sue capacit` a di realizzare la sicurezza. L’uso di un sistema PKI ` e il primo passo che
un’azienda pu` o compiere per costruire forti controlli, sia per gli accessi remoti sia per i partner nel
business. Una PKI non ` e restrittiva n´ e dittatoriale: la scelta di quali funzionalit` a usare dipende
solo dai bisogni dell’azienda; per` o, una volta che si possiede una PKI, le opzioni di sicurezza
crescono in ampiezza, flessibilit` a e robustezza. Purtroppo, nel mondo IT e delle reti, la sicurezza
` e spesso trattata come un ripensamento, un’aggiunta a posteriori: a causa della mancanza di una
pianificazione appropriata, l’azienda potrebbe arrivare ad avere funzionalit` a di sicurezza non ben
integrate tra loro ed interferendo con il lavoro vero e proprio.
1.3 Funzioni di una PKI
Una PKI comprende comunemente le seguenti componenti funzionali, come riportato nella Tabella
1.1.
Funzione Descrizione
Certification Authority (CA) ha il compito di emettere, consegnare e revocare i certificati
(internamente o in outsourcing)
Registration Authority (RA) ha il compito di verificare il legame tra le chiavi pubbliche e
le identit` a dei possessori
Soggetti o possessori dei certificati persone, organizzazioni, macchine o software per i quali
` e stato emesso un certificato e che lo possono usare per
firmare i propri documenti
Clienti validano le firme digitali e la propria catena di certificati
attraverso la chiave pubblica di una CA fidata
Repository contenitore per le chiavi, i certificati e la lista dei certificati
revocati (CRL - Certificate Revocation List), mantenuto
in una directory abilitata al protocollo LDAP
Funzione di gestione tipicamente implementata tramite una console di gestione
Politica di sicurezza stabilisce e definisce la direzione che viene scelta, ad alto
livello, per l’organizzazione della sicurezza, cos` ı come
tutti i processi e i principi per l’uso della crittografia
Tabella 1.1. Componenti funzionali di una PKI.
Alcune delle funzioni realizzate all’interno di una PKI sono:
3
1 – Public Key Infrastructure - PKI
Registrazione: processo attraverso il quale il richiedente si presenta alla CA, per cercare di ot-
tenere un certificato. Durante la procedura viene richiesto al soggetto di fornire i propri
attributi, come il nome, l’indirizzo e-mail, il numero di telefono ed altre informazioni, se-
guendo le specifiche “Certification Practices Statement (CPS)” della CA. Prima di emettere
il certificato, la CA segue le linee guida specificate nel CPS per verificare che i dettagli forniti
dal soggetto siano corretti.
Certificazione: processo attraverso il quale la CA emette un certificato che contiene la chiave
pubblica del soggetto, lo consegna al soggetto stesso e lo pubblica in un repository accessibile
a tutti.
Generazione delle chiavi: il soggetto talvolta genera la coppia di chiavi nel proprio ambiente
localeepoitrasferiscelasolachiavepubblicaallaCAperl’emissionedelcertificato. Se, inve-
ce, ` e la CA ad essere responsabile della generazione delle chiavi, le stesse sono normalmente
inviate al soggetto sotto forma di file crittografato, oppure su una smart card. Per ragioni
di sicurezza, ` e meglio che sia l’utente a generare la coppia di chiavi e a trasmettere la sola
chiave pubblica alla CA, in questo modo la chiave privata ` e memorizzata solo in un’unica
postazione.
Recupero della chiave: alcune implementazioni PKI richiedono che venga fatta una copia di
backup di tutte le chiavi, comprese quelle per la bulk encryption, e che venga memorizzata
dall’utente in una postazione sicura; in questo modo le chiavi sono recuperabili se il soggetto
dovesse perderle. Se invece ` e stato implementato un altro sistema di recupero delle chiavi,
la CA stessa o il sistema dedicato per il recupero fa il backup di tutte le chiavi di tutti i
soggetti; il compito principale della CA ` e, in questo caso, quello di assicurare che una chiave
possa essere recuperata dal soggetto che ne ` e il legittimo proprietario e non da altre parti
non autorizzate.
Aggiornamento delle chiavi: tutte le coppie di chiavi ed i certificati associati devono essere
aggiornati ad intervalli regolari. Possono presentarsi essenzialmente due scenari che rendono
necessaria la sostituzione della coppia di chiavi di un utente:
- Certificato scaduto: in questo caso i differenti componenti della PKI devono assicurare
che l’aggiornamento sia quanto pi` u possibile trasparente, in modo da minimizzare il
disturbo arrecato all’utente quando la sua coppia di chiavi viene aggiornata;
- Chiave privata dell’utente o della CA compromessa: in questo caso la transizione
non ` e trasparente. La PKI deve avere un meccanismo per annunciare pubblicamente
che il vecchio certificato, corrispondente alla chiave privata compromessa, non ` e pi` u
valido e che un suo sostituto ` e disponibile e valido con effetto immediato. Lo scena-
rio peggiore per una qualsiasi PKI ` e la compromissione della chiave privata della sua
stessa CA. Un modo per limitare i danni di questo disastro ` e quello di pre-generare ed
immagazzinare in una postazione sicura una coppia di chiavi di riserva, da usare in una
situazione diemergenza; ancheconquestacoppiadiriservanonsievitanonaturalmente
le complicazioni, perch´ e ogni utente della PKI deve essere informato della sostituzione
usando una modalit` a “offline”, ad esempio tramite telefono, fax, lettera o un incontro
personale, per evitare possibili intercettazioni durante la trasmissione elettronica.
Certificazione incrociata: il processo di certificazione incrociata permette ad utenti apparte-
nenti al dominio amministrativo di una particolare CA di fidarsi dei certificati emessi da una
CA operante in un dominio amministrativo diverso. La certificazione incrociata pu` o essere
un processo mono o bidirezionale: se la CA X emette un certificato in favore della CA Y, la
CA Y pu` o emettere a sua volta un certificato in favore della CA X.
Revoca o annullamento: nellamaggiorpartedeicasi,uncertificatorimanevalidofinoaquando
non ` e raggiunta la data di scadenza. Ci sono comunque un certo numero di situazioni in cui
` e necessaria una revoca prematura del certificato, ad esempio se:
il soggetto ha cambiato nome;
il soggetto ha cambiato la CA;
4
1 – Public Key Infrastructure - PKI
si ` e verificata una compromissione della chiave privata;
il certificato ` e stato emesso dalla CA per errore.
Il metodo prestabilito per la revoca del certificati include l’uso di una CRL, firmata dalla CA
con la data di riferimento, che raccoglie i certificati revocati.
Vengono analizzate ora nel dettagli le componenti principali di una PKI.
1.4 Crittografia a chiave pubblica
I metodi di autenticazione basati sulla crittografia a chiave pubblica rientrano nella classe degli
algoritmi asimmetrici, e quindi, si basano sull’utilizzo di due chiavi:
Chiave Privata (Private Key) ` e nota solo al proprietario. Diversamente dalla chiave segreta
usata nei sistemi di crittografia simmetrica, la chiave privata ` e veramente segreta e mai
condivisa con altri utenti o server.
Chiave Pubblica (Public Key) ` e accessibile a ciascun utente o server che ne abbia bisogno. In
unaPKI,lachiavepubblica` elegataall’identit` adell’utentedauncertificatoachiavepubblica
(PKC - Public Key Certificate) pubblicato da un’autorit` a di certificazione. Questa chiave
consente al destinatario di essere certo del fatto che il mittente sia realmente chi sostiene di
essere.
Chiave pubblica e chiave privata sono correlate tra loro; una codifica attuata mediante una
chiave presuppone una decodifica mediante l’altra. Un messaggio criptato mediante la chiave
privata pu` o essere decriptato unicamente tramite la corrispondente chiave pubblica. Il fatto che
solo il possessore di entrambe le chiavi sia a conoscenza della chiave privata, assicura che ogni
porzione di dati decifrabile mediante una determinata chiave pubblica sia stato codificato proprio
dal possessore della coppia di chiavi. Ci` o consente di autenticare la provenienza di un messaggio,
di essere cio` e sicuri che esso provenga proprio da chi sostiene di averlo inviato. In questo modo,
tuttavia, i dati inviati non vengono messi al riparo da possibili sguardi indiscreti. Chiunque sia
a conoscenza della chiave pubblica del mittente sar` a in grado di decifrare un messaggio codificato
tramite una chiave privata.
Se si vuole utilizzare la crittografia a chiave pubblica per garantire la riservatezza dei dati, il
mittente cifra i dati con la chiave pubblica del destinatario, mentre il destinatario decifra i dati
con la sua chiave privata. Infatti, solo l’utente destinatario sar` a in grado di decifrare il messaggio,
essendo il solo a conoscere la chiave privata corrispondente.
La crittografia a chiave pubblica presenta, per` o, un grande svantaggio tipico della classe degli
algoritmi asimmetrici, ovvero, il calcolo ` e notevolmente pi` u dispendioso e lungo rispetto agli al-
goritmi simmetrici. Di contro, ha due aspetti vantaggiosi che risultano essenziali per ottenere e
mantenere una connessione sicura. Il primo ` e non aver necessit` a di mantenere una chiave comune
tra i due partecipanti alla comunicazione; il secondo, ed anche il pi` u significativo, ` e il fatto che la
chiave pubblica, rispetto agli algoritmi simmetrici, garantisce autenticazione e integrit` a oltre alla
riservatezza.
LaISO/IEC9798-3:1993-“EntityAuthenticationusingapublickeyalgorithm”definiscecinque
metodi di autenticazione a chiave pubblica, sia unilaterale sia mutua, che prendono il nome di
“autenticazione con certificati digitali”. Tipicamente, un meccanismo di autenticazione a chiave
pubblica segue il pattern challenge/response. L’utente usa la sua chiave privata per firmare
digitalmente un challenge (sfida) inviato dal server di autenticazione. Questo viene poi rispedito
in risposta al server insieme al certificato digitale del client. Il server di autenticazione controlla la
validit` a del certificato, e solo dopo, verifica la firma digitale usando la chiave pubblica dell’utente
presente nel suocertificato. Il successodiquestaoperazionegarantiscel’autenticazionedell’utente.
5
1 – Public Key Infrastructure - PKI
Figura 1.2. Schema di cifratura a chiave pubblica.
1.5 RSA
L’algoritmo RSA, dalle iniziali dei cognomi dei suoi inventori R. Rivest, A. Shamir, L. Adleman,
` e sicuramente l’algoritmo di crittografia a chiave pubblica pi` u famoso e utilizzato.
La prima fase dell’utilizzo di qualsiasi schema crittografico a chiave pubblica consiste nella
definizione della coppia di chiavi pubblica/privata da assegnare a ciascuna entit` a in gioco. Per
creare una coppia di chiavi RSA:
1. vengono generati due distinti numeri primi p e q, sufficientemente grandi e approssimativa-
mente della stessa dimensione;
2. si calcola n=p· q e φ =(p− 1)· (q− 1);
3. viene scelto a caso un intero e, tale che sia 1≤ e≤ φ e tale che MCD(e,φ )=1;
4. si individua l’unico intero d tale che sia 1≤ d≤ φ e tale che d≡ e
− 1
(mod φ );
5. la chiave pubblica ` e costituita dalla coppia (e, n) mentre la chiave privata dalla coppia
(d, n), con e che prende il nome di esponente pubblico, d ` e l’ esponente privato ed n il
modulo.
Ultimato il processo di creazione delle chiavi, se l’entit` a A desidera inviare un messaggio
all’entit` a B:
1. A recupera la chiave pubblica di B, ovvero la coppia (e,n);
2. la rappresentazione del plaintext viene convertita di un numero intero p compreso nell’inter-
vallo [0,n− 1];
3. A cifra p eseguendo l’operazione c=p
e
(mod n), dove c rappresenta il ciphertext;
4. il testo cifrato c viene inviato a B.
Quando B riceve il messaggio da A, B sfrutta la sua chiave private per ottenere il testo in chiaro,
semplicemente calcolando p=c
d
(mod n).
Tutta la sicurezza in RSA dipende dal mantenere segreti p, q e d. Il numero e, invece, pu` o
essere noto a tutti ed` e questo che rende “pubblico” questo schema di cifratura. Dal punto di vista
6
1 – Public Key Infrastructure - PKI
Figura 1.3. Utilizzo chiavi RSA per cifratura e autenticazione.
matematico, cifrareundocumento` eunprocessofacileeveloce. Decifrarlo, invece,` emoltodifficile,
se non si conosce la chiave: un malintenzionato potrebbe impiegare centinaia di anni per riuscire
a decriptare il codice.
`E importante puntualizzare subito che non si ha l’assoluta certezza che l’algoritmo RSA sia
sicuro: il suo funzionamento si basa sulla difficolt` a di un problema matematico noto con il nome
di fattorizzazione degli interi in aritmetica modulare (talvolta riferito anche come RSA-
problem). Il grado elevato di sicurezza del metodo RSA dipende principalmente dalle propriet` a
particolari dei numeri primi, quando sono usati con i computer. Mentre trovare numeri primi
grandi con un computer` e relativamente facile, scomporre un numero grande nei suoi fattori primi,
p e q, ` e un compito che richiede moltissimi calcoli. La sicurezza di RSA pu` o essere aumentata
ulteriormente scegliendo un numero primo p forte, per cui p− 1 abbia tra i suoi fattori un numero
primo grande r e p+1 abbia tra i suoi fattori un numero primo grande s. Inoltre, sia r− 1 che
s− 1 devono avere fra i loro fattori un numero primo grande.
Proprio perch´ e il metodo RSA basa la sua sicurezza sulla difficolt` a di soluzione di un problema
matematico (fattorizzazione di interi), e poich´ e tale problema ` e tanto pi` u complicato quanto pi` u i
numeri in gioco sono grandi, le chiavi RSA sono molto pi` u lunghe di quelle dei sistemi crittografici
simmetrici e di conseguenza ` e molto pi` u lento. Oggi si utilizzano chiavi di 1024 o 2048 bit, ma
la loro dimensione ` e in costante crescita, e cerca di adeguarsi alla crescente potenza dell’hardware
crittografico.
RSA lavora su blocchi di dati di dimensione al pi` u n byte. Questo significa che non ` e possibile
crittografare blocchi pi` u grandi di n senza perdere informazioni, quindi ` e necessario frammentare
i dati da cifrare in blocchi di lunghezza inferiore o uguale a n. Inoltre, se si desidera crittografare
una piccola quantit` a di dati, non allineati alla lunghezza di un blocco, ` e buona norma inserire dei
byte di padding al fine di complicare eventuali attacchi brute-force.
RSAnonvienesolitamentemaiutilizzatopercifraredirettamenteunplaintext,masiutilizzano
dellespecifichestandardchedescrivonocomeidatidevonoessereorganizzatiprimadicifrare. Una
di questa ` e la PKCS #1 v1.5 [16], sviluppata dalla RSA inc., in collaborazione con sviluppatori
sparsi in tutto il mondo, al fine di incrementare l’uso della cifratura a chiave asimmetrica. Secondo
le specifiche PKCS #1 ogni blocco da cifrare deve contenere un’intestazione (header) e un certo
padding (di almeno 11 byte). L’intestazione ` e piuttosto semplice: un byte 0x00, seguito da un
identificatore del padding. Per la cifratura RSA, si utilizza sempre come identificatore 0x02, che
7