Crittografia - Università degli Studi di Roma "Tor Vergata"

Introduzione
Crittografia: definizione,
obiettivi, funzioni e
strumenti
Crittografia e sicurezza,
contesti applicativi
1
Che cosa è la crittografia
èLetteralmente:
ðuna tecnica che consente di nascondere il
significato di un messaggio
Che cosa è la crittografia
èNella accezione corrente:
ðuna tecnica di protezione dell’informazione
basata su trasformazioni logiche che,
direttamente o indirettamente, fanno uso di
informazioni segrete
2
Cosa ci possiamo aspettare
dalla crittografia
èLa crittografia è una forma di protezione
logica:
ðConsente di restringere e confinare le aree in cui è
necessario ricorrere a metodi di protezione fisica dei dati;
ðNon consente di eliminare la necessità di tecniche di
protezione fisica dei dati;
ðConsente di verificare l’autenticità e l’integrità dei dati;
ðNon consente di impedire attacchi alla disponibilità dei dati.
Crittografia e obiettivi della
sicurezza dell’informazione
èLa crittografia è un strumento utile a
conseguire alcuni degli obiettivi della
sicurezza informatica:
ðConfidenzialità
ðIntegrità
ðAutenticità
ðNon ripudiabilità
ðDisponibilità
3
Funzioni della crittografia
èLa crittografia consente di
assolvere alle funzioni di:
ðCifratura
ðAutenticazione dei messaggi e la verifica
dell’integrità dei dati
ðIdentificazione e autenticazione delle entità
ðFirma numerica
Strumenti della crittografia
èGli strumenti che la crittografia
mette a disposizione sono:
ðCifrari a sequenza (stream cipher)
ðCifrari a blocchi (block cipher)
ðCifrari a chiave pubblica
ðFunzioni di impronta a una via (hash)
ðCodici per l’autenticazione dei messaggi
ðSchemi di firma
4
Tecniche ed infrastrutture
èLa realizzazione di sistemi basati
sulla crittografia presuppone
l’esistenza di:
ðProtocolli di generazione delle chiavi
ðProtocolli di installazione e gestione delle
chiavi
ðNormative crittografiche
Attacchi alla sicurezza
dell’informazione
Osservazioni ed esempi
5
Attacchi attivi e passivi
èPassivi: l’attaccante può solamente
osservare il comportamento del
sistema
èAttivi: l’attaccante può intervenire sul
comportamento del sistema.
Ad esempio:
ðinducendo l’esecuzione di determinate azioni;
ðprendendo possesso di una parte di sistema e tentandone
la forzatura;
ðinducendo l’uso di un sistema o un sottosistema di cui
detiene il controllo.
Attacchi: i bersagli
ðgli algoritmi: si usano tecniche crittanalitiche per “invertire”
gli algoritmi;
ði protocolli e le modalità operative: si attacca il modo in cui
gli algoritmi crittografici vengono utilizzati;
ði sistemi: viene attaccato l’ambiente e le condizioni in cui
operano algoritmi e protocolli (attacchi fisici a dispositivi,
manomissione del SW, ecc.).
Osservazione:
Osservazione:la
larobustezza
robustezzadegli
deglialgoritmi
algoritmicrittografici
crittograficièèsolo
soloun
unaspetto
aspetto
della
sicurezza
dei
sistemi.
della sicurezza dei sistemi.
6
Attacchi: riconoscimento delle
occorrenze
Scenario:
Scenario:ililmessaggio
messaggiopresenta
presentafrequenti
frequentiripetizioni
ripetizionidegli
deglistessi
stessiblocchi
blocchiee
ililcifrario
opera
per
semplice
sostituzione
cifrario opera per semplice sostituzione
L’attaccante può ricavare informazioni (ad es.
mediante analisi statistica, analisi basate
sulla conoscenza della struttura del
messaggio, riconoscimento di immagini, ecc.)
dal fatto che a blocchi uguali nel cifrato
derivano blocchi uguali nel messaggio in
chiaro
Contromisure: aleatorizzazione e
concatenazione del messaggio cifrato
Attacchi: riconoscimento delle
occorrenze, un esempio
7
Attacchi: sostituzione parziale
di messaggio
Scenario:
Scenario:l’attaccante
l’attaccanteconosce
conoscela
lastruttura
strutturadel
delmessaggio
messaggioin
inchiaro
chiaroeeilil
cifrario
opera
per
semplice
sostituzione
cifrario opera per semplice sostituzione
èL’attaccante modifica alcune parti
del messaggio cifrato senza conoscere
necessariamente il contenuto in
chiaro delle parti sostituite.
Contromisure:
Contromisure:concatenazione
concatenazioneeeautenticazione
autenticazionedel
delmessaggio
messaggio
Attacchi: attacco con
messaggio registrato
Scenario:
Scenario:l’attaccante
l’attaccantedispone
disponedella
dellaregistrazione
registrazionedi
diuno
unooopiù
piùmessaggi
messaggi
cifrati
di
cui,
in
qualche
misura,
conosce
il
significato
cifrati di cui, in qualche misura, conosce il significato
èL’attaccante riutilizza, totalmente o
parzialmente, i messaggi registrati in
un contesto a lui favorevole.
Contromisure:
Contromisure:marcatura
marcaturatemporale,
temporale,concatenazione
concatenazioneeeautenticazione
autenticazionedel
del
messaggio
messaggio
8
Attacchi: impersonificazione
Scenario:
Scenario:una
unaentità
entitànon
nonèèiningrado
gradodidiaccertare
accertarel’identità
l’identitàdidiun’altra
un’altraentità
entità
del
sistema
del sistema
èL’attaccante assume l’identità di
un’altra entità del sistema
Contromisure:
Contromisure:protocolli
protocollidi
diidentificazione,
identificazione,terze
terzeparti
partifidate
fidate
Attacchi: interposizione
Scenario:
Scenario:l’attaccante
l’attaccantepuò
puòintercettare
intercettaremodificare
modificareeeritrasmettere
ritrasmetterei i
messaggi
scambiati
tra
due
entità
A
e
B
messaggi scambiati tra due entità A e B
èL’attaccante si interpone tra A e B, e
si fa identificare da A come B e da B
come A.
Contromisure:
Contromisure:protocolli
protocollidi
diidentificazione,
identificazione,terze
terzeparti
partifidate
fidate
9
Attacchi: ricerca esaustiva del
messaggio
Scenario:
Scenario:un’entità
un’entitàcifra
cifracon
conuna
unachiave
chiavepubblica
pubblicaun
unmessaggio
messaggioche
chefa
fa
parte
di
un
insieme
abbastanza
limitato
di
messaggi
possibili
parte di un insieme abbastanza limitato di messaggi possibili
èL’attaccante prova a cifrare i
possibili messaggi con la stessa
chiave pubblica fino a trovare il
messaggio che da luogo allo stesso
cifrato
Contromisure:
Contromisure:aggiunta
aggiuntadi
diuna
unaquantità
quantitàaleatoria
aleatoriadi
diriempimento
riempimento
(padding)
al
messaggio
da
cifrare
(padding) al messaggio da cifrare
Attacchi: attacco ai metodi di
generazione delle chiavi
Scenario:
Scenario:la
laprocedura
proceduradi
digenerazione
generazionedelle
dellechiavi
chiavinon
nonèècorretta
corretta
èL’attaccante sfrutta informazioni
relative alle procedure di generazione
delle chiavi per semplificare la ricerca
delle chiavi stesse
Contromisure:
Contromisure:uso
usodi
disistemi
sistemidi
digenerazione
generazionerealmente
realmentealeatori
aleatori
10
Attacchi: attacco alle parole di
accesso
Scenario:
Scenario:gli
gliutenti
utentiusano
usanoparole
paroledi
diaccesso
accessofacilmente
facilmenteintuibili
intuibili
èL’attaccante usa la conoscenza di
dati dell’utente e/o un dizionario di
parole probabili per effettuare la
ricerca delle parole di accesso
Contromisure:
Contromisure:metodi
metodiper
perla
lagenerazione
generazionedi
diparole
paroledi
diaccesso
accesso“difficili”
“difficili”
Attacchi: analisi del traffico
Scenario:
Scenario:l’attaccante
l’attaccantepuò
puòosservare
osservareililtraffico
trafficogenerato
generatoda
dauna
unaoopiù
più
entità
entità
èL’attaccante registra gli andamenti
del traffico e cerca eventuali
correlazioni con eventi noti
(precedenti o successivi).
Contromisure:
Contromisure:protezione
protezionedel
deltraffico
trafficooogenerazione
generazionedi
ditraffico
trafficofittizio
fittizio
11
Algoritmi crittografici
Classificazione, concetti
generali ed esempi
Che cosa è un algoritmo
crittografico
Funzioni
k
xx
Fk(x)
yy
Consente di effettuare una trasformazione che fa uso
di una informazione segreta (chiave)
Proprietà
xx
xx
yy
ii
yy
La trasformazione x -> y “non può” essere eseguita
senza la conoscenza della chiave k
La chiave k “non può” essere ottenuta dalla
conoscenza di un qualsiasi numero di elementi x e y
e di tutte le informazioni note (pubbliche)
sull’algoritmo e sulle (eventuali) proprietà della chiave
12
Che cosa è un algoritmo
cifrante (cifrario)
Un
Unalgoritmo
algoritmodi
dicifratura
cifratura(cifrario)
(cifrario)èèun
unalgoritmo
algoritmocrittografico
crittograficodotato
dotatodidi
una
funzione
inversa:
una funzione inversa:
kE
xx
FkE(x)
kD
yy
yy
FkD(x)
xx
Consente
Consentedidieffettuare
effettuareuna
unatrasformazione
trasformazioneeelalasua
sua
inversa
mediante
due
chiavi
inversa mediante due chiaviKKEEeeKKDDeventualmente
eventualmente
non
noncoincidenti
coincidenti
Cosa intendiamo per algoritmo
“robusto”
èScenario: una entità A opera mediante
un algoritmo crittografico F e una
chiave segreta KA . Un avversario
E conosce l’algoritmo F ma non la
chiave KA .
èL’algoritmo può definirsi robusto se:
ðE non è in grado di effettuare le operazioni che A
effettua grazie alla conoscenza della chiave segreta;
ðE non può ricavare la chiave KA dall’osservazione
delle operazioni eseguite da A (che eventualmente
possono essere indotte da E).
13
Un algoritmo crittografico ben progettato
dovrebbe presentare una complessità di
cifratura polinomiale e una complessità
di forzatura esponenziale
Osservazione: l’aumento delle capacità
di calcolo gioca a favore (e in modo
definitivo) della robustezza
complessità di calcolo
Cosa intendiamo per algoritmo
“robusto” (2)
forzatura
cifratura
lunghezza chiave
Comprendere le crescite
esponenziali
Ma
Maggnniitudo
tudo
Se
Seco
connddi i in
in uunn anno
anno
-- 3*10^7
3*10^7
se
seccon
onddi i ddal
allala cre
creaz
azio
ionnee ddelel ssist
isteema
ma so
sol lare
are (an
(annni)i)
-- 2*10^17
2*10^17
Ci
Ciclcli i ddi i clcloc
ockk/ /an
anno
no ppeerr uunn ccom
omppuute
terr ddaa 110000MHz
MHz
-- 33,2*10^15
,2*10^15
NNuumer
meri i bbin
inaariri ddaa 12
1288 bbitit
-- 33,4*10^38
,4*10^38
NNuumer
meri i ppririmmi i ddaa 7755 cif
cifrere ddec
eci immaalili
-- 55,2*10^72
,2*10^72
Ele
Elettttron
roni i nneellll’’ununive
ivers
rsoo
-- 88,37*10^77
,37*10^77
14
Comprendere le crescite
esponenziali (2)
Se un foglio di carta (circa 0,1 mm di spessore)
potesse essere piegato su se stesso per 10 volte, il
suo spessore arriverebbe a circa 1m, dopo 30 volte,
a circa 100km e, dopo 42 volte, supererebbe la
distanza tra la terra e la luna
˜ 439.804 Km
(42 ripiegature)
˜ 0,1 mm
1
10
100
1000
10000
(bin)
Da cosa dipende la robustezza
di un algoritmo crittografico
ðDifficoltà di trovare la chiave mediante
ricerca esaustiva
ðDifficoltà di trovare la chiave mediante
inversione dell’algoritmo
ðDifficoltà di invertire l’algoritmo senza
conoscere la chiave
15
Valutazione della robustezza
crittografica di un algoritmo (1)
èLa robustezza di un algoritmo è
quasi sempre indimostrabile.
èL’adozione di un algoritmo viene
effettuata dopo un attento esame
suffragato dai seguenti fatti e
valutazioni:
Valutazione della robustezza
crittografica di un algoritmo (2)
ðLa dimensione della chiave ne impedisce la
ricerca esaustiva;
ðL’algoritmo resiste agli attacchi crittanalitici
conosciuti;
ðIl miglior metodo di inversione (se esiste)
presenta complessità esponenziale;
William Wolfowicz
16
Valutazione della robustezza
crittografica di un algoritmo (4)
ðSi stima che non verranno trovati metodi di
inversione sostanzialmente più efficienti in quanto:
àil problema è riconducibile a un problema equivalente del
quale è possibile “provare” la complessità;
àil problema è riconducibile a un problema ben studiato (es. la
fattorizzazione) per il quale si ritiene che non si verificheranno
progressi sostanziali;
àil problema non si presenta adatto ad essere affrontato con
nessuna delle metodologie conosciute (generalmente questo
accade perché l’algoritmo è stato progettato a questo scopo).
Classificazione funzionale degli
algoritmi cifranti
a sequenza
simmetrici
(a chiave segreta)
a blocchi
asimmetrici
(a chiave pubblica)
17
L’operatore binario XOR
0
x
y
x
x
1
x
x
x
Cifrari a sequenza ( stream
ciphers)
K
K
Generatore
di
sequenza
L ei +1 , ei , ei −1 ,L
L mi +1 , mi , mi −1 ,L
Generatore
di
sequenza
L ei +1 , ei , ei −1 ,L
L c i+1 , ci , ci −1 ,L
L mi +1 , mi , mi −1 ,L
18
Cifrari a blocchi (block ciphers)
KE
LMi L
Cifratura
EK E (Mi ) = Ci
KD
LCi L
Decifratura
DK D (C i ) = M i
L Mi L
Crittografia a chiave
simmetrica (segreta)
In un algoritmo crittografico simmetrico la chiave di cifratura e quella di
decifratura coincidono o sono immediatamente ricavabili una dall’altra.
Le due chiavi devono essere mantenute segrete.
19
Crittografia a chiave
asimmetrica (pubblica)
In un algoritmo crittografico asimmetrico la chiave di cifratura e quella
di decifratura non coincidono e non possono essere ricavate una
dall’altra senza la conoscenza di una informazione segreta.
Una delle due chiavi può essere resa pubblica.
Modalità di impiego degli
algoritmi asimmetrici
A
M
cifratura
B
EB(M)
EB
DB(EB(M))=M
decifratura
DB
modalità cifratura
A
M
cifratura
DA
B
DA(M)
EA(DA(M))=M
decifratura
EA
modalità autenticazione (firma)
EX chiave pubblica di X
DX chiave segreta di X
M documento in chiaro
20
Alcune pietre miliari nella
crittografia moderna
ðprimi anni 70: Feistel (IBM) introduce una tecnica che
permette di costruire una funzione invertibile a partire da una
qualsiasi funzione non invertibile.
Con questa tecnica vengono costruiti numerosi algoritmi a
blocchi tra cui il ben noto Data Encryption Standard (DES)
del 1977.
ð1976: Diffie ed Hellman in un articolo pubblicato su New
direction in Cryptography introducono il concetto di
crittografia a chiave pubblica
ð1978: Rivest, Shamir e Adleman trovano il primo metodo di
cifratura e firma a chiave pubblica (RSA)
Cifrari a blocchi a schema di
Feistel
diretta/inversa
MH k
1
k2
f1
k2
f2
f2
ML
Cifratura
MH
k1
f1
ML
diretta/inversa
Decifratura
21
L’algoritmo RSA
èOrigini USA
(1977)
èBrevettato fino
al 2000
èDiffusissimo
èBasato sulla
complessità
della
fattorizzazione
• Generazione delle chiavi:
ricerca di grandi numeri
primi
• Cifratura e decifratura:
esponenziazioni modulari
L’algoritmo RSA: generazione
delle chiavi
èOgni
èOgni utente:
utente:
ð
ðgenera
generadue
duegrandi
grandinumeri
numeriprimi
primippeeqq casuali
casualieesegreti
segreti
ð
ðcalcola
calcolaililmodulo
moduloRSA:
RSA:NN==pp×× qq
ð
ðcalcola
calcolaΦΦ(N)
(N)==(p(p --1)(q
1)(q--1)1) (funzione
(funzionedidiEulero)
Eulero)
ð
genera
l’esponente
pubblico
1<e
<
Φ
(N)
primo
ð genera l’esponente pubblico 1<e < Φ (N) primorispetto
rispettoaaΦΦ(N)
(N)
ð
genera
l’esponente
privato
d
tale
che
e
×
d
=1
mod
Φ
(N)
ð genera l’esponente privato d tale che e × d =1 mod Φ (N)
d
(N, e)
Chiave pubblica
Chiave privata
Mantenere
Manteneresegreti:
segreti:p,
p,q,
q,ΦΦ(N)
(N)eedd
22
L’algoritmo RSA: un cenno ai
principi
è Gli esponenti e e d sono scelti in modo tale che:
è e × d = 1 mod Φ(N) ,
è ossia esiste un numero intero k tale che:
è e × d = 1 + k × Φ(N) .
è D’altra parte il teorema di Eulero si ha che per ogni k e per
ogni X minore di N:
èX
1 + k × Φ(N)
mod N = X .
è Quindi in definitiva:
è (X e ) d mod N = X
ed
mod N = X
1 + k × Φ(N)
mod N = X .
è Analogamente:
è (X d ) e mod N = X .
L’algoritmo RSA: osservazioni
sulla generazione delle chiavi
è
èIlIl ruolo
ruolo di
di esponente
esponente pubblico
pubblico ee privato
privato può
può essere
essere assegnato
assegnato
arbitrariamente:
arbitrariamente: la
la sola
sola condizione
condizione che
che gli
gli esponenti
esponenti
devono
devono rispettare
rispettare èè che
che sia:
sia:
è
è ee ××dd =1
=1 mod
mod ΦΦ(N).
(N).
è
Quindi
si
può
indifferentemente:
è Quindi si può indifferentemente:
-1
àgenerare
àgenerareee eericavare
ricavaredd==ee -1mod
modΦ(N)
Φ(N)
-1-1 mod Φ(N)
àgenerare
d
e
ricavare
e
=
d
àgenerare d e ricavare e = d mod Φ(N)
I Idue
dueesponenti
esponentinon
nondevono
devononecessariamente
necessariamenteavere
averelalastessa
stessalunghezza
lunghezzadel
delmodulo
moduloN:
N:
l’esponente
l’esponenteche
cheviene
vienegenerato
generatoper
perprimo
primopuò
puòavere
avereuna
unalunghezza
lunghezzaprefissata
prefissata(l’altro
(l’altrorisulterà
risulterà
generalmente
generalmentedella
dellastessa
stessalunghezza
lunghezzadidiΦΦ(N)).
(N)).
Nella
Nellapratica,
pratica,esponenti
esponentipubblici
pubblicicorti
cortivengono
vengonoutilizzati
utilizzatifrequentemente.
frequentemente.L’uso
L’usodidiesponenti
esponenti
privati
corti
è
invece
sconsigliabile
a
causa
privati corti è invece sconsigliabile a causadell’esistenza
dell’esistenzadidialgoritmi
algoritmiche
chene
nepossono
possono
consentire
consentirelalaforzatura.
forzatura.
23
L’algoritmo RSA:trasformazioni
dirette e inverse
è
è La
Latrasformazione
trasformazioneRSA
RSAconsiste
consistein
inuna
unaoperazione
operazionedi
diesponenziazione
esponenziazione
modulare
modularenella
nellaquale
qualel’esponente
l’esponentepubblico
pubblicoeequello
quelloprivato
privatoconsentono
consentonodi
di
ottenere
reciprocamente
dall’uno
la
funzione
inversa
ottenuta
ottenere reciprocamente dall’uno la funzione inversa ottenutamediante
mediante
l’altro
l’altro
X
X {e, d} mod N
ed
Y {e, d} mod N
Y
X
de
ed
de
Infatti
InfattiXX ==XX per
percui
cuil’algoritmo
l’algoritmopuò
puòessere
essereusato
usatoin:
in:
e
d
e d
ed
d
e
d e
de
•modalità
•modalitàcifratura:
cifratura:
d
e d
ed
XX emod
modNN→
→ YY;; YY mod
modNN== (X
(X )) == XX ==XX
•modalità
•modalitàfirma:
firma:
e
d e
de
XX dmod
modNN→
→YY;; YY mod
modNN== (X
(X )) == XX ==XX
Robustezza della cifratura RSA
èSe si fattorizza il modulo di un utente,
è possibile calcolare la chiave privata di
questo a partire dalla chiave pubblica
corrispondente.
èLa complessità dell’operazione di
fattorizzazione dipende dalla
dimensione del modulo.
èSi stima che attualmente la
fattorizzazione di un modulo di 1024
bit richiederebbe circa 300 miliardi di
anni (con potenza di calcolo disponibile
pari a 10^6 istruzioni/sec)
24
Modalità operative degli
algoritmi a blocchi: Electronic
Codebook (ECB)
Xi
Ci
E
E -1
Xi
Proprietà:
Proprietà:La
Lacifratura
cifraturaavviene
avvieneblocco
bloccoaablocco
blocco(senza
(senzaconcatenazione).
concatenazione).AAblocchi
blocchiuguali
ugualidel
del
messaggio
messaggioininchiaro
chiarocorrispondono
corrispondonoblocchi
blocchiuguali
ugualinel
nelcifrato.
cifrato.
Modalità operative degli
algoritmi a blocchi: Cipherblock Chaining (CBC)
Xi
⊕
Xi ⊕ Ci - 1
Ci
E
?
Ci - 1
Xi ⊕ Ci - 1
E -1
⊕
Xi
?
Ci - 1
Proprietà:
Proprietà:I Iblocchi
blocchidel
delcifrato
cifratosono
sonoconcatenati.
concatenati.IlIlcifrato
cifratodipende
dipendedallo
dallostato
statoiniziale
inizialeCC00 (lo
(lo
stesso
stessomessaggio
messaggiodà
dàluogo
luogoaamessaggi
messaggidiversi
diversiaaseconda
secondadello
dellostato
statoiniziale).
iniziale).La
Ladimensione
dimensione
del
delblocco
bloccoèèlalastessa
stessadel
delcifrario
cifrarioEE utilizzato.
utilizzato.
25
?
r bit shift
r bit shift
Modalità operative degli
algoritmi a blocchi: Cipher
Feedback (CFB)
E
n
?
E
n
n
n
r
r
⊕
r
r
⊕
r
Proprietà:
Proprietà:Concatenazione
Concatenazioneeedipendenza
dipendenzadallo
dallostato
statoiniziale
inizialecome
comenel
nelmodo
modoCBC.
CBC.La
La
dimensione
dimensionedel
delblocco
bloccoèèrr==nn(n
(ndimensione
dimensionedel
delblocco
bloccodel
delcifrario
cifrarioE).
E).
26