Sei sulla pagina 1di 9

1.

1 Il reame della sicurezza dimostrabile 3

Fig. 1.1. Alice ed il Bianconiglio vogliono comunicare attraverso un canale


insicuro controllato dalla Regina Rossa

Possiamo quindi spingerci oltre e pensare ad uno scenario pi complesso, in cui


Alice ed il Bianconiglio eseguono un protocollo crittografico 3 con scopi diversi:

Autenticazione. Alice vuole essere riconosciuta dal Bianconiglio, dimo-


strando di essere veramente Alice. In questo contesto, la Regina Rossa non
deve essere in grado di essere riconosciuta come Alice. (Questa esigenza
fondamentale in tutte le applicazioni in cui necessario che le parti coinvolte
si autentichino prima che una qualsiasi azione possa avere luogo.)

Conoscenza nulla. Alice vuole dimostrare al Bianconiglio la veridicit di una


data affermazione, senza rivelare nientaltro oltre il fatto che tale afferma-
zione appunto vera.

Computazione sicura. Alice ed il Bianconiglio vogliono calcolare una funzio-


ne di alcuni input assicurandosi che il risultato sia corretto e mantenendo la
sicurezza degli input stessi. (Come vedremo questo scenario estendibile al
caso di pi giocatori, in cui le parti coinvolte sono pi di due.)

Sicurezza dimostrabile. Il progetto di un sistema sicuro un compito ar-


duo. In primo luogo, osserviamo che ci richiede di definire in modo chiaro ed
3 Per protocollo intendiamo qui uno scambio di messaggi con una forma prestabilita.
4 1 Introduzione

esplicito il significato della parola sicuro. (Ovviamente tale significato sar


diverso a seconda del contesto in cui la primitiva crittografica viene utilizzata.)
Ma, anche ammettendo di aver chiaro cosa significhi sicurezza per una data
primitiva in un dato contesto, come assicurarsi che essa effettivamente non sia
violabile (ovvero che essa sia in grado di resistere a tutti gli attacchi)? Il pro-
blema principale, infatti, che il progetto di un sistema sicuro deve considerare
la presenza di avversari che abuseranno del sistema per poterlo violare. In altri
termini, diversamente da quanto avviene nella maggior parte delle discipline,
ci che deve preoccupare un crittografo non luso normale del sistema, ma
un suo eventuale abuso da parte di un attaccante, il che ovviamente molto
pi difficile da prevedere. Sarebbe desiderabile, quindi, che la nostra primitiva
sia resistente non solo agli attacchi noti al momento del progetto, ma anche ai
possibili attacchi che possono essere pensati in futuro.
In passato (ed in parte ancora oggi) lanalisi di sicurezza dei sistemi avveniva
in modo per lo pi euristico: si tenta di spiegare (affidandosi allintuizione ed
allesperienza) perch non possibile violare la sicurezza in un attacco reale alla
primitiva. Questo approccio si rivelato pi volte fallimentare (e sopratutto
pericoloso!) portando al progetto di applicazioni apparentemente sicure che
poi sono state violate negli anni a venire. (Un esempio concreto si pu trovare
nel sistema di cifratura usato nelle reti cellulari GSM [BBK03].)
Questo stato di affari ha reso necessario un ripensamento dellapproccio ge-
nerale per il progetto di una primitiva sicura. La svolta si avuta nei primi
anni 80, quando Goldwasser e Micali [GM82] hanno gettato le fondamenta del
reame della sicurezza dimostrabile, trasformando la crittografia da arte a vera
e propria scienza.
Lidea quella di fornire una prova matematica che un dato sistema sicuro
in presenza di una certa classe di attacchi (la pi vasta possibile). In questo
modo anche se in futuro verr pensato un nuovo attacco, il nostro sistema
sar in grado di resistergli (purch tale attacco rientri nella classe di attacchi
considerata). La ricetta per dimostrare che una data primitiva crittografica
sicura segue pi o meno lo schema seguente:

1. Si astrae la realt, definendo un modello che contenga tutte le caratteri-


stiche salienti presenti nel mondo reale in cui la primitiva utilizzata.

2. Si definisce cosa significa per la primitiva essere sicura in questo model-


lo.
1.1 Il reame della sicurezza dimostrabile 5

Fig. 1.2. Gioco per definire la sicurezza di

3. Si mostra che nessun attaccante di un certo tipo, che agisce nel modello
definito al punto (1), in grado di violare la definizione di sicurezza data
al punto (2).
Per realizzare i punti (1) e (2), solitamente, si introduce un gioco tra un
attaccante ed uno sfidante. Nel Paese delle Meraviglie tale gioco vede come
protagonisti la Regina Rossa ed il Brucaliffo: il Brucaliffo un oracolo che
astrae le modalit con cui la Regina pu attaccare il sistema nella realt (cf.
Fig. 1.2). Durante il gioco la Regina pu interagire con il Brucaliffo secondo
alcune regole prestabilite. La condizione di vittoria del gioco, determina il
successo della Regina in un attacco ed un sistema detto sicuro se vincere
il gioco impossibile (o comunque, in un certo senso, difficile). Osserviamo
sin da subito che, siccome una dimostrazione di sicurezza sar valida solo nel
modello definito al punto (1) per la classe di attaccanti definita al punto (2),
la scelta delle regole del gioco cruciale.
Quanto alla natura dellavversario, si soliti distinguere due diversi scenari:
Attaccanti illimitati computazionalmente. In questo caso si parla di sicurez-
za incondizionata (o anche sicurezza perfetta). Questa nozione nasce con
il lavoro di Shannon [Sha49] e porta a progettare primitive con sicurezza
dimostrabile contro avversari le cui risorse computazionali sono infinite. In-
tuitivamente lavversario non in grado di violare la sicurezza del sistema
perch non ha mai abbastanza informazione per riuscire in un attacco.
6 1 Introduzione

Attaccanti limitati computazionalmente. In questo caso si parla di sicurezza


computazionale. Lidea quella di porre un limite al potere computazionale
dellattaccante, costruendo primitive che potrebbero essere violate (in linea
teorica) da un avversario con abbastanza tempo a disposizione (talmente
tanto da rendere improbabile tale evento).

Riduzioni crittografiche. naturale chiedersi perch si debbano costruire


sistemi computazionalmente sicuri, quando possibile costruire sistemi con
sicurezza incondizionata. La risposta a questa domanda risiede nellefficienza.
Come avremo modo di vedere nel Capitolo 2, infatti, gli schemi con sicurezza
incondizionata sono purtroppo inerentemente inefficienti (e a volte addirittura
impossibili da ottenere). Il passaggio al concetto di sicurezza computazionale
ci consentir di progettare sistemi crittografici efficienti (e quindi utilizzabili in
pratica), mantenendo un livello accettabile di sicurezza.
Per quantificare il potere computazionale dellattaccante, useremo alcune
nozioni di teoria della complessit computazionale. Restringere la classe di at-
taccanti a quelli con risorse computazionali limitate, ci consentir di ridurre
la sicurezza del sistema alla difficolt nel risolvere alcuni problemi computa-
zionali ritenuti difficili almeno con le risorse di cui dispone lattaccante.4
Si parla in effetti di approccio riduzionista; tale approccio costituisce una delle
tecniche principali per realizzare il punto (3) della nostra ricetta per dimostrare
che una data primitiva sicura (vedi sopra).
Consideriamo una primitiva crittografica generica la cui sicurezza sia defi-
nita attraverso un gioco tra la Regina Rossa ed il Brucaliffo e fissiamo le risorse
computazionali a disposizione della Regina. Supponiamo daltra parte che la
Regina Bianca debba risolvere unistanza di un problema P ritenuto difficile:
dato un input per il problema P non possibile calcolare la soluzione in mo-
do efficiente con le risorse computazionali disponibili. Una riduzione da a
P significa che se la Regina Rossa in grado di vincere il gioco che definisce
la sicurezza della primitiva , la sua strategia pu essere usata dalla Regina
Bianca per risolvere unistanza del problema P (cf. Fig. 1.3). In questo senso,
violare la sicurezza di equivalente a risolvere P : se riteniamo che ci sia
difficile, possiamo considerare la nostra primitiva sicura.5
4 Tali
problemi sono ritenuti difficili in quanto luomo tenta di risolverli in modo soddisfacente
da anni, senza successo. Il significato dei termini difficile e soddisfacente sar chiarito in modo
rigoroso nel Paragrafo 1.3.
5 Notare che la terminologia sicurezza dimostrabile in un certo senso fuorviante, in quanto in

effetti non si dimostra che una primitiva sicura in senso assoluto, ma piuttosto che un attacco alla
primitiva in questione pu essere usato per risolvere un problema computazionale ritenuto difficile.
1.2 Mappa del libro 7

Fig. 1.3. Riduzioni crittografiche: la Regina Bianca deve simulare lambiente


per la Regina Rossa abbastanza bene da far s che questultima sia convinta di
attaccare

La controversia di Koblitz e Menezes. In alcuni articoli [KM07] Koblitz


e Menezes hanno criticato alcuni aspetti del reame della sicurezza dimostrabile.
Lopinione generale, tuttavia, che lapproccio della sicurezza dimostrabile sia
lunico compatibile con la scienza [Gol06; Dam07], in quanto, citando lo stesso
Goldreich: possibile costruire una cabina senza fondamenta, ma non una
solida abitazione.

1.2 Mappa del libro


I requisiti di confidenzialit ed integrit di messaggio saranno trattati nella
prima parte del libro (Capitoli 2 - 10). I requisiti di autenticazione, cono-
scenza nulla e computazione sicura, invece, sono oggetto della seconda parte
(Capitoli 11 14). Le appendici forniscono le basi matematiche necessarie
a comprendere alcune parti del testo, con particolare riferimento alla teoria
delle probabilit, alla teoria dei numeri ed agli algoritmi migliori conosciuti per
risolvere alcuni problemi computazionali ritenuti difficili.
Pi nello specifico:

Il Capitolo 2 discute con maggiore dettaglio la nozione di sicurezza incon-


dizionata nel contesto della confidenzialit, analizzando il lavoro di Shan-
non [Sha49] sui cifrari a segretezza perfetta.
8 1 Introduzione

I Capitoli 3 e 4 introducono (rispettivamente) i concetti base di indistin-


guibilit e pseudocasualit e le funzioni hash; come vedremo questi concetti
giocheranno un ruolo essenziale nei capitoli successivi.

I Capitoli 5 e 6 indirizzano il problema della confidenzialit nel contesto delle


tecniche simmetriche (ovvero quando Alice ed il Bianconiglio dispongano di
una chiave segreta condivisa) e di quelle asimmetriche (ovvero quando Alice
ed il Bianconiglio non condividono a priori nessun segreto).

I Capitoli 7 e 8 indirizzano, rispettivamente, il problema dellintegrit di


messaggio nel contesto delle tecniche simmetriche ed asimmetriche.

Il Capitolo 9 dedicato alla crittografia basata sui cosiddetti reticoli geome-


trici; le primitive costruite in questo contesto hanno lattrattiva di basarsi
sulla difficolt di alcuni problemi computazionali la cui complessit ben
compresa dalla comunit matematica (e per cui, in alcuni casi, non esistono
attacchi efficienti neanche disponendo di un calcolatore quantistico).

Il Capitolo 10 dedicato ancora al requisito di confidenzialit, assumendo


per che Alice possa usare direttamente la sua identit per comunicare in
segreto con il Bianconiglio.

Il Capitolo 11 si occupa di diverse forme (via via pi evolute) di autentica-


zione sicura.

Il Capitolo 12 dedicato alluso delle password in crittografia. Una password


una parola appartenente ad un certo dizionario, che pu essere memorizzata
da un umano per scopi crittografici.

Il Capitolo 13 descrive i protocolli a conoscenza nulla: possibile dimostrare


unaffermazione, senza che dalla relativa dimostrazione trapeli nullaltro se
non la veridicit dell affermazione stessa?

Il Capitolo 14 si occupa del problema della computazione sicura, nel caso di


due o pi giocatori.

Altri possibili scenari. Abbiamo dato un assaggio di quelli che sono i re-
quisiti fondamentali di sicurezza in contesto crittografico. Oltre quelli citati,
esistono tanti altri scenari interessanti (e di rilevanza pratica) la cui trattazione
esula dagli scopi del testo. Alcuni di essi sono suggeriti di seguito, indirizzando
il lettore interessato direttamente alla letteratura.
1.2 Mappa del libro 9

Nozioni di anonimato. possibile soddisfare i requisiti di confidenzialit


ed integrit, in modo che non si possa celare chi sta inviando o ricevendo
un determinato messaggio? Si veda [Cha81; Bel+01; BMW03; BKM09] per
unintroduzione.
Crittografia quantistica. La realizzazione dei calcolatori quantistici apre
la strada a nuovi attacchi e nuove costruzioni crittografiche. Si rimanda
a [Feh10] per una buona introduzione.
Crittografia resistente alle perdite. Lapproccio riduzionista introdotto in
questo capito, assume intrinsecamente che lavversario non abbia alcuna
informazione a priori sui segreti memorizzati da Alice ed il Bianconiglio.
Esistono attacchi per cui questipotesi non verificata, in quanto consento
di ottenere informazione parziale sui segreti memorizzati. (Tali attacchi,
tipicamente, sfruttano il modo in cui una data primitiva implementata.)
Questa informazione parziale, detta perdita (leakage in inglese), spesso
sufficiente a violare la sicurezza di tanti schemi che altrimenti avrebbero una
dimostrazione di sicurezza. possibile includere questi attacchi nel reame
della sicurezza dimostrabile? Si veda ad esempio [MR04].
Steganografia. possibile comunicare, nascondendo il fatto che la comunica-
zione [Cac98] (o pi in generale un protocollo [AHL05]) stia in effetti avendo
luogo?
Teoria dei giochi e teoria dei codici. Il rapporto tra teoria dei giochi/teoria
dei codici e crittografia ha generato nuove prospettive in entrambe le disci-
pline [Kat08; TW05].
Metodi formali. I metodi formali comprendono alcune tecniche per lo svilup-
po e la verifica dellhardware e del software. Esse hanno diverse applicazioni
nellanalisi della sicurezza di alcuni protocolli crittografici [DY83].
Sistemi biometrici. Esistono sistemi crittografici che si basano sullutilizzo
di alcuni tratti biometrici (ad esempio liride dellocchio oppure le impronte
digitali) come chiavi crittografiche. Si veda ad esempio [DRS04; Cra+08].
Denaro digitale. possibile digitalizzare completamente un sistema moneta-
rio? Un sistema di denaro digitale (e-cash) prevede che il denaro sia gestito
in maniera completamente elettronica. Questo scenario introduce una serie
di questioni delicate non presenti in un sistema monetario vero e proprio, in
quanto ad esempio bisogna preoccuparsi che una moneta elettronica non
venga spesa ripetutamente. Si vedano [Cha82; Bra93] per un introduzione.
10 1 Introduzione

Scenari ad-hoc. interessante studiare in modo rigoroso alcuni protocolli di


uso comune ad esempio su Internet. Esempi possono trovarsi in IPSec [CK02;
Kra03], SSH [BKN04] e Kerberos [BK07].

Sicurezza del software. Ci sono attacchi informatici legati intrinsecamente a


come il software strutturato [CW07].

1.3 Complessit computazionale


In questo paragrafo richiameremo alcuni concetti di base in teoria della com-
plessit computazionale, che si riveleranno un utile strumento per formalizzare
le principali nozioni di sicurezza di un sistema crittografico. I lettori interessati
ad un approfondimento sono invitati a consultare testi specialistici, ad esempio
quello di Arora e Barak [AB08].
Una volta noto che un dato problema risolvibile, potremmo pensare che non
ha importanza se il tempo necessario a risolverlo 10 o 100 secondi. Tuttavia,
questa conclusione non sarebbe cos ovvia se la differenza fosse 10 secondi
10
oppure 1010 secondi!
La teoria della complessit studia come le risorse necessarie a risolvere un
dato problema, scalano con la dimensione n del problema stesso: in modo ra-
gionevole (come n oppure n2 ), oppure in modo non ragionevole (come 2n )? Ad
esempio, moltiplicare due numeri interi ad n cifre richiede n2 passi se si utilizza
lalgoritmo di moltiplicazione che tutti conosciamo dalle scuole elementari (cf.
Esercizio B.1). Daltra parte il problema inverso, ovvero fattorizzare un dato
1/3
intero ad n cifre, un problema complesso che (al momento) richiede 2n
passi. In informatica teorica, un algoritmo detto efficiente se eseguibile in
un tempo che limitato superiormente da una funzione polinomiale in n, men-
tre si parla di algoritmi inefficienti quando il tempo di esecuzione limitato
inferiormente da una funzione esponenziale di n.
Lo strumento universale per modellare un algoritmo (implementato in un
generico calcolatore) che tenta di risolvere un dato problema, la cosiddetta
macchina di Turing. Non daremo una definizione formale, ma cercheremo di
coglierne lessenza. Una macchina di Turing possiede un determinato nume-
ro di nastri in cui pu leggere e/o scrivere simboli appartenenti ad un certo
alfabeto: normalmente un nastro utilizzato per gestire gli input, un nastro
per contenere loutput e gli altri nastri sono detti nastri di lavoro. Solita-
mente, una macchina di Turing ha associato uno stato che ne determina il
comportamento istante per istante: ad ogni istante, lo stato attuale determina
1.3 Complessit computazionale 11

la scrittura/lettura di simboli sui nastri e laggiornamento dello stato stesso.6


Una macchina di Turing detta probabilistica se usa un certo grado di randomi-
cit come parte della sua logica, ovvero se in grado di compiere scelte casuali.
Quando ci accade, loutput pu essere visto come una variabile aleatoria (cf.
Appendice A.1). Diremo che una macchina di Turing M calcola una funzione
f in tempo t() se, per ogni input x, essa si arresta con il valore f (x) scritto
sul nastro di output in al pi t(|x|) passi (avendo indicato con |x| la lunghezza
dellinput x, cf. Paragrafo 1.4).

Sicurezza computazionale. La nozione di macchina di Turing il punto


di partenza per il concetto di sicurezza computazionale. Ci occorre un po di
notazione:

Definizione 1.1 (Andamenti asintotici). Siano f, g : N N due funzioni


arbitrarie. Diremo che:

(i) f = O(g) se esiste una costante c > 0 ed una costante n0 tali che per
ogni n > n0 si abbia f (n) c g(n). Intuitivamente quindi f limitata
superiormente da g (a meno di un fattore costante);

(ii) f = (g) se g = O(f ), ovvero f limitata inferiormente da g (a meno di


un fattore costante);

(iii) f = (g) se esistono c1 , c2 > 0 ed una costante n0 , tali che per ogni
n > n0 si abbia c1 g(n) f (n) c2 g(n). In altri termini si ha
che f = O(g) e g = O(f ), ovvero f limitata sia superiormente che
inferiormente da g;

(iv) f = o(g) se per ogni c > 0 esiste una costante n0 per cui si abbia |f (n)|
c |g(n)|. In altri termini f dominata asintoticamente da g;

(v) f = (g) se g = o(f ), ovvero g dominata asintoticamente da f . 

Come abbiamo anticipato nel Paragrafo 1.1, la nozione di sicurezza com-


putazionale rilassa quella di sicurezza incondizionata in due direzioni: (i) si
considerano solo avversari limitati computazionalmente e (ii) il sistema pu
6 Lespressivit delle macchine di Turing cos potente che esiste una famosa congettura
dovuta allo stesso Turing e a Church secondo cui se un problema risolvibile, allora esister
una macchina di Turing in grado di risolverlo. Non sappiamo se ci vero oppure no: ad esempio i
computer quantistici non possono essere rappresentati dalle macchine di Turing, ma non chiaro
al momento se sia effettivamente possibile costruire un calcolatore quantistico.

Potrebbero piacerti anche