8 CAPITOLO 1. INTRODUZIONE
per sistemi che abbracciano grandi distanze, per i quali è inoltre problematica la ver-
ifica dell’autenticità dei dati scambiati. Risulta evidente che le proprietà che devono
essere verificate durante lo scambio di informazioni fra due utenti sono molteplici,
e richiedere che vengano garantite è tanto più problematico quanto più è complesso
il contesto in cui gli utenti sono inseriti. Il primo passo è stato quello di dare una
definizione formale delle proprietà di sicurezza poi, si è cercato di modellare metodi
che postessero garantirle.
I protocolli dovrebbero, teoricamente, garantire la massima sicurezza tra i parteci-
panti. Alcuni di questi, però, sono risultati inadeguati e facilmente raggirabili da utenti
disonesti e falliscono proprio quando un intruso intercetta messaggi sfruttandone i con-
tenuti per poi creare messaggi da inserire nella rete. Il problema risiede nell’enorme
difficoltà di analisi: il protocollo deve risultare sicuro anche supponendo che tra gli
svariati partecipanti ve ne sia uno disonesto.
1.2 Lavoro svolto
Attualmente esistono, non essendoci un metodo standard, numerosi linguaggi per la
definizione di un protocollo e altrettanti metodi per una loro verifica. Uno di questi è
CryptoSPA su cui si basa il tool di analisi CoSec. Un analisi parte dal presuppone che
un nemico, essendo dotato di una memoria, possa intromettersi nella comunicazione
fra i partecipanti onesti al protocollo. La semantica di CryptoSPA, per come sono state
definite le sue regole, necessita che il nemico venga sempre esplicitato in tutte le sue
possibili azioni, causando una complicazione della definizione stessa del protocollo.
Per prima cosa, quindi, si sono apportate alcune modifiche alle regole che de-
scrivono il comportamento dei partecipanti onesti al protocollo e ne sono state ag-
giunte di nuove, specifiche per il nemico, im modo tale che non sia più necessaria una
esplicitazione dell’ intrusore.
A partire da questo nuovo approccio, è stata valutata la memoria necessaria al
nemico per compire qualunque tipo di attacco e sono stati definiti due nuovi operatori
per filtrare, fra tutti i messaggi inviabili da un nemico, solamente quelli che conducono
ad un possibile attacco, riducendo, così, lo spazio degli stati su cui condurre l’analisi.
Per raggiungere tale scopo, è stata inoltre definita una nuova semantica, detta sim-
bolica, che ha permesso di trattare i messaggi, inviati dal nemico, non in base al loro
valore ma in base all’impatto che questi hanno sul comportamento del protocollo;
1.2. LAVORO SVOLTO 9
in questa maniera vengono raggruppati, considerandoli come un’unico simbolo, quei
messaggi che inducono al medesimo comportamento erroneo del protocollo.
In fine, è stato mostrato come la semantica presentata realizzi, in maniera implicita,
una delle tecniche di riduzione del grafo dell’analisi, presentatata da Vitaly Shmatikov
e Ulrich Stern.
Nel capitolo 2 sono stati introdotti concetti relativi alla crittografia ed ai protocolli
crittografici, utili per comprendere le problematiche affrontate in seguito.
Il capitolo 3 rappresenta una breve descrizione dei sistemi concorrenti, ed un’ap-
profondimento sul linguaggio CryptoSPA, su cui sono state apportate le modifiche a
livello semantico. Viene, inoltre, fornita una presentazione delle principali tecniche
di analisi per protocolli ed alcune proprietà di sicurezza alla base di molte verifiche
automatiche.
Il capitolo 4 presenta il tool di analisi CVS e un’esposizione dettagliata di come
viene formalamete definito e gestito il nemico.
Il capitolo 5, oltre a mostrare le motivazioni che hanno condotto a questo lavoro,
presenta alcuni nuovi operatori che hanno permesso di ridurre lo spazio del grafo
generato dall’analisi e alcuni esempi di applicazione su attacchi noti ai protocolli.
Nel capitolo 6 vengono definite le modifiche apportate a CryptoSPA, che hanno
permesso di non esplicitare il nemico e mostrato come si modificano le proprietà di
sicurezza in questo nuovo approccio.
Il capitolo 7 contiene una discussione sulla scelta di un approccio simbolico per
l’analisi di protocolli crittografici e di come vengono modificate sia le regole seman-
tiche di CrytoSPA, sia quelle relative alla manipolazione dei messaggi, ora trattati
come simboli. Viene, inoltre, chiarito, attraverso un’esempio, come si semplifica
l’analisi di un protocollo utilizzando questo nuovo metodo.
Nel capitolo 8 viene presentata una delle tecniche per la riduzione degli stati del
grafo generato dall’analisi e mostrato come questa venga resa implicita nella definizione
delle regole della semantica presentata.
Nel capitolo 9 vengono esposte le conclusioni e le prospettive per il futuro.
Capitolo 2
Protocolli Crittografici e Crittografia
L’utilizzo sempre maggiore dei sistemi informatici ha reso necessario lo sviluppo di
tecnologie che potessero migliorare e velocizzare l’accesso e l’elaborazione delle in-
formazioni; questa dipendenza ha spostato l’attenzione sui sistemi informatici e ha
accentuato la necessità di immagazzinare le informazioni acquisite sui computer. La
diffusione di macchine, sempre più eterogenee e a basso costo, ha reso disponibile
alle masse una enorme quantità di informazioni. Conseguentemente il problema del-
la riservatezza, ha acquisito una rilevanza tale da essere motivo di studio da parte di
numerosi ricercatori.
Vengono presentati in questo capitolo alcuni dei concetti largamente utilizzati:
essi rappresentano l’insieme dei metodi, strutture e regole adottati per garantire la
risevatezza all’interno dei sistemi informatici.
11
12 CAPITOLO 2. PROTOCOLLI CRITTOGRAFICI E CRITTOGRAFIA
2.1 Crittografia
La crittografia è divenuta oggi uno degli strumenti più utilizzati per garantire priva-
cy, controllare gli accessi, effettuare pagamento elettronici, firme digitali ed in altri
numerosi campi.
Quando si parla di crittografia, che molto spesso viene considerata un’arte, ci si
riferisce a quella scienza che studia metodi per mantenere segrete tutte quelle infor-
mazioni che non si vogliono divulgare pubblicamente in maniera tale che la possibilità
di accedervi sia data soltanto ad uno o ad un ristretto numero di persone autorizzate.
L’operazione tramite la quale si nascondono le informazioni è chiamata cifratura op-
pure crittazione, ed è effettuata tramite un apposito algoritmo, chiamato cifrario; l’in-
formazione o il messaggio da cifrare è noto come testo chiaro (plaintext o cleartext);
la crittazione sfrutta come mezzo fondamentale una chiave, detta chiave del cifrario,
per convertire il testo chiaro in testo cifrato o crittogramma (ciphertext). Con decrit-
tazione si intende la conversione da testo cifrato a testo chiaro e anch’essa sfrutta la
chiave del cifrario. L’ambito nel quale sono effettuate le operazioni di crittazione e
di decrittazione è chiamato crittosistema. Con crittoanalisi invece si intende la pratica
del rivelare ciò che la crittografia tenta di nascondere. Il termine crittologia, infine,
include sia la crittografia che la crittoanalisi.
Storicamente l’utilizzo della crittografia è stato proprio di 4 diversi gruppi di per-
sone: i militari, i corpi diplomatici, i diaristi e gli amanti. I militari hanno sicuramente
giocato il ruolo più importante in quanto la crittografia, applicata a scopi bellici, ha
rappresentato, per molti secoli, un’arma determinante nelle mani di coloro che sape-
vano come usarla. Una delle principali limitazioni al suo uso era rappresentata dal fatto
che coloro che erano addetti alla cifratura (un gran numero di impiegati vista la mole
dei messaggi da inviare) dovevano adoperare mezzi inadeguati (non erano ancora pre-
senti i computer) e lavorare in condizioni oltremodo scomode, ad esempio in mezzo ad
un campo di battaglia. Come se non bastasse la crittografia poteva rivelarsi un’arma a
doppio taglio nel caso in cui un addetto alla codifica cadeva nelle mani del nemico: se
ciò accadeva era necessaria una immediata modifica del metodo crittografico, e questo
richiedeva, tra l’altro, il riaddestramento di un gran numero di persone.
La crittografia, nonostante l’apparenza, è una delle scienze più note sin dai tempi
remoti. Criptare è una parola che viene dal greco cryptos che significa nascosto; si ha
traccia di applicazioni di crittografia (in special modo sulle comunicazioni) risalenti
persino agli antichi egizi. Uno dei più antichi cifrari che si conoscano è il Cesareo, uti-
2.2. CRITTOGRAFIA A CHIAVE SIMMETRICA 13
lizzato dagli imperatori romani. Cesare Augusto, ad esempio, scriveva i suoi messaggi
sostituendo ogni lettera con quella successiva, cosi che CESARE diventava DFTBSF,
mentre Giulio Cesare sostituiva ogni lettera con quella che la segue tre posti più in
là nell’alfabeto, codificando CESARE come FHVDUH. Questi semplici metodi fanno
parte della categoria dei CIFRARI DI SOSTITUZIONE e, pur essendo stati adoperati
con una certa frequenza negli anni addietro, oggi nessuno si sognerebbe di affidare i
propri messaggi riservati a tali metodologie.
In effetti una regola fondamentale della crittografia moderna è quella di supporre
che il crittoanalista conosca il metodo generale di cifratura impiegato. La quantità di
sforzi necessari per inventare, collaudare e installare un nuovo metodo, ogni volta che
quello vecchio è compromesso (o si pensa che lo sia), ha sempre reso poco pratico il
mantenimento di tale segreto.
Entra quindi in gioco la chiave, che è una stringa di caratteri che seleziona una tra
le molte cifrature potenziali. Tutti i moderni metodi utilizzano una chiave per eseguire
la crittazione e la decrittazione; un messaggio può essere decrittato solo se la chiave di
decifratura si accoppia con quella di cifratura. Per alcuni algoritmi le due chiavi sono
uguali, mentre per altri esse sono diverse. In base a questa sostanziale differenza, i
moderni algoritmi, basati sull’ utilizzo di chiavi, si dividono in algoritmi simmetrici
(detti anche a chiave simmetrica o a chiave segreta) e asimmetrici (detti anche a
chiave asimmetrica o a chiave pubblica).
2.2 Crittografia a chiave simmetrica
La crittografia a chiave segreta (CCS) è una tecnica che modifica l’informazione in
chiaro, in una cifrata, basandosi su di un parametro chiamato chiave di cifratura.
Quest’ultima è in possesso dell’utente autorizzato a ricevere l’informazione, che può
dunque, con un operazione inversa, risalire all’informazione in chiaro. Il funziona-
mento di tale metodo viene mostrato in figura 8.2
Dk(Ek(P )) = P
dove:
P = testo in chiaro, E =operazione di cifratura
D =operazione di decifratura, K=chiave.
14 CAPITOLO 2. PROTOCOLLI CRITTOGRAFICI E CRITTOGRAFIA
Figura 2.1: schema di funzionamento di un algoritmo a chiave simmetrica
I sistemi a chiave simmetrica possono essere utilizzati per implementare servizi di
sicurezza quali:
• Riservatezza: protegge l’informazione da visione non autorizzata.
• Integrità: garantisce che l’informazione non venga alterata e che il messaggio
arrivi esattamente come è stato spedito.
• Autenticazione: serve a prevenire la dissimulazione degli utenti; consente al
vero mittente di includere nel messaggio informazioni che lo identifichino con
certezza. In questa maniera il destinatario è sicuro della provenienza del mes-
saggio ricevuto.
Non mancano tuttavia, per sistemi di tal genere, punti deboli; in primo luogo i due
corrispondenti devono essere in possesso della stessa chiave, che deve essere conseg-
nata telematicamente ad entrambi prima che possa iniziare una comunicazione tra i
due; in secondo luogo al crescere degli utenti di servizio, il numero di chiavi aumenta
rendendo problematica la loro gestione e distribuzione.
A questo va aggiunto che un protocollo di comunicazione, che utilizza crittografia a
chiave simmetrica, è soggetto a problemi di repudio delle informazioni. La crittografia
a chiave privata necessita, infatti, completa fiducia fra i partecipanti al protocollo. Sup-
poniamo, ad esempio, che due parteciapanti si scambino un messaggio crittato con una
2.3. CRITTOGRAFIA A CHIAVE PUBBLICA 15
chiave condivisa; il mittente in un secondo momento può negare l’invio, accusando il
destinatario di aver generato il messaggio essendo in possesso della chiave simmetrica.
2.3 Crittografia a chiave pubblica
Le tecniche asimmetriche utilizzano coppie di chiavi complementari invece di una sola
chiave segreta. Un singolo utente possiede una coppia univoca di chiavi complemen-
tari; di esse, una è una chiave pubblica, nel senso che può essere conosciuta da tutti,
ed è usata per cifrare il messaggio, mentre l’altra è una chiave privata ed è tenuta al
sicuro dal suo proprietario, di modo che solo lui possa utilizzarla.
Le due chiavi sono create in maniera tale che un messaggio cifrato da una delle
due può essere decifrato solo e soltanto dall’altra. In pratica, se si vuole spedire un
messaggio a una certa persona, si critta quel messaggio con la sua chiave pubblica,
così si è sicuri che soltanto quella persona potrà decifrarla con la propria chiave privata:
neanche la chiave pubblica utilizzata per cifrare riuscirà a decrittare il messaggio. Il
funzionamento viene mostrato in figura 2.2
C = E(Kpub, P ) P = D(Kpriv, C)
P = testo in chiaro, C = testo cifrato
E = operazione di cifratura, Kpub = chiave pubblica del destinatario
D = operazine di decifratura, Kpriv = chiave privata del destinatario
Gli algoritmi asimmetrici possono essere utilizzati anche per generare le cosidette
firme elettroniche. Esse sfruttano delle elaborazioni algoritmiche particolari (one-way
hash function), grazie alle quali è possibile verificare l’autenticità del messaggio. Con
questa importante tecnica si assicura che il messaggio originale, la firma e la coppia
di chiavi dell’utente siano strettanente legate; alla modifica di qualsiasi componente la
validazione (il riconoscimento) della firma fallisce.
Il vantaggio principale offerto dalla crittografia asimmetrica sta nella facilità di ges-
tione delle chiavi; per comunicare non occorre infatti scambiarsi segretamente chiavi
di cifratura con il rischio che esse possano essere intercettate, in quanto basta inviare
ad un corrispondente la propria chiave pubblica, per avere la sicurezza di essere gli
unici a poter decifrare con essa un eventuale messaggio cifrato.
16 CAPITOLO 2. PROTOCOLLI CRITTOGRAFICI E CRITTOGRAFIA
Figura 2.2: schema di funzionamento di un algoritmo a chiave pubblica
2.4 Protocolli Crittografici
Un protocollo è un insieme di regole che due o più utenti devono seguire per comu-
nicare o, più genericamente, interagire per raggiungere un obbiettivo comune. Un
protocollo crittografico viene così definito perchè garantisce alcune proprietà quali la
sicurezza, l’autenticità, l’autenticazione ecc, attraverso l’utilizzo di algoritmi di crit-
tografia e particolari tecniche di scambio di messaggi. L’utilizzo di algoritmi crittoga-
rafici è utile per garantire risevatezza sui messaggi che vengono scambiati sui canali di
trasmissione, che rappresentano il punto di accesso più facile per un eventuale attacco
da parte di un intruso.
I protocolli vengono suddivisi in categorie differenti a seconda della proprietà che
devono garantire. I più diffusi sono:
• Protocolli di autenticazione: permettono a due o più agenti, che vogliono co-
municare, di dare garanzia sulla propria identità. Ad esempio se un agente A
riceve un messaggio da parte di un agente B allora B può avere garanzia che
tale messaggio è stato inviato unicamente da A.
• Protocolli di distribuzione di chiavi: vengono utilizzati per recapitare ai parteci-
panti ad una comunicazione le chiavi necessarie per la crittazione dei messagi.