Download - D05 Funzioni Crittografiche Di Hash
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
1/64
Funzioni Crittografiche di Hash
Luca Grilli
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
2/64
INTRODUZIONE
Funzioni Crittografiche di Hash
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
3/64
Funzioni di Hash
Una funzione di hash (o semplicemente hash omessagedigest) una funzione unidirezionale (oone-way)
una funzione perch prende in input un messaggio eproduce un output che dipende dal messaggio
h: {0, 1}* {0, 1}b
{0, 1}*: spazio delle stringhe binarie di lunghezza qualsiasi
{0, 1}b: spazio delle stringhe binarie di lunghezza b bit
considerata unidirezionale (one-way) perch impraticabile capire quale input corrisponda ad undato output
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
4/64
Funzioni di Hash sicure
sia h() una funzione di hash
h() considerata sicura se presenta le seguenti
propriet
1. resistenza alla preimmagine: fissato un hash
computazionalmente impraticabile trovare un messaggio
m tale che h(m) =
2. resistenza alle collisioni: computazionalmente
impraticabile trovare due messaggi m1 e m2 aventi lo
stesso digest h(m1) = h(m2) le propriet 1. e 2. implicano la seguente
3. resistenza alla secondapreimmagine:dato un messaggio
m, computazionalmente impraticabile trovare un
messaggio mavente lo stesso digest h(m) = h(m)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
5/64
Terminologia
Si useranno i termini hash e message digest in modointercambiabile
la funzione di hash del NIST chiamata SHA-1: SecureHash Algorithm
mentre lacronimo MD degli algoritmi MD2, MD4 e MD5sta per Message Digest
Tutti gli algoritmi di digest/hash basicalmente fanno la
stessa cosa prendono in input un messaggio di lunghezza variabile, e
restituiscono in output una quantit avente lunghezzaprefissata
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
6/64
Sulla casualit (randomicit)
Dato un messaggio m, il digest h(m) viene calcolato inmodo deterministico
Tuttavia, loutput della funzione di hash dovrebbeapparire il pi possibile casuale
dovrebbe essere impossibile, senza applicare la funzione dihash, predire ogni porzione delloutput
per ogni sottoinsieme (di posizioni) di bit nel digest h(m)soltanto procedendo in modo esaustivo dovrebbe esserepossibile ottenere due messaggi m1 e m2 tali che h(m1) eh(m2) presentno gli stessi bit in quelle posizioni
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
7/64
Sulla casualit (randomicit)
una funzione di hash sicura con n bit dovrebbeessere derivabile da una funzione di hash con pi di nbit
prendendo un arbitrario sottoinsieme di n bit dal digest pi
grande
chiaramente, ci sono molti messaggi distinti che sonomappati in uno stesso digest h(m)
m ha lunghezza arbitraria, mentre il digest h(m) ha una
lunghezza prefissata, ad esempio 128 bit se m ha una lunghezza di 1000 bit e h(m) di 128 bit
ci sono in media 2872 messaggi che sono mappati in unostesso digest
dopo molti tentativi, due messaggi aventi lo stesso digest
si trovano sicuramente
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
8/64
Sulla casualit (randomicit)
tuttavia, per molti tentativi si intende un numero
talmente grande che di fatto impossibile
considerando una buona funzione di digest a 128 bit,
necessario provare approssimativamente
2128 possibili messaggi prima di ottenere un messaggio
avente un particolare digest, o
264 messaggi prima di trovarne due aventi lo stesso
digest (vedi prossime slide); trovare cio due messaggi
che collidono
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
9/64
Esempi di applicazioni
Unapplicazione delle funzioni di hash
crittografiche il calcolo dellimpronta digitale di
un programma o di un documento di cui si
desiderano monitorare eventuali modifiche se il message digest h(p) del programmap noto
e se h(p) memorizzato in modo sicuro (cio non pu essere
modificato da utenti non autorizzati)
allora nessun utente non autorizzato pu modificarepsenza essere scoperto
perch non sar in grado di trovare un diverso
programmaptale che h(p) = h(p)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
10/64
Probabilit di collisione
sia h:{0, 1}* {0, 1}b una funzione di hash
siano m1, m2, , mN N messaggi arbitrariamente
scelti in {0, 1}*
DOMANDA: quanto deve valere N per avere una
probabilit del 50% che due messaggi mi, mj
abbiano lo stesso hash?
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
11/64
Probabilit di collisione 1a Stima
una prima stima di N, per difetto, la seguente
k= 2b: numero totale di possibili hash
1/k: probabilit che una coppia di messaggi collida
HP: gli eventi considerati sono mutuamenteesclusivi
Prob{h(mi) = h(mj) ORh(mp) = h(mq)} =Prob{h(mi) = h(mj)} + Prob{h(mp) = h(mq)}
a rigore tale ipotesi non soddisfatta, molti eventi hannointersezione non nulla la stima ottenuta della probabilit per eccesso ci si traduce in una stima per difetto di N
(Prob{E1 OR E2} = Prob{E1} + Prob{E2} Prob{E1E2})
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
12/64
Probabilit di collisione 1a Stima
si ha una probabilit del 50% se si considerano k/2
coppie
N(N1)/2 = k/2
ipotizzando N >> 1 si ha
N= k1/2
= 2b/2
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
13/64
Probabilit di collisione 2a Stima
una stima pi accurata di N la seguente
P: probabilit che almeno una coppia di messaggicollida
P*: probabilit che tutte le coppie di messaggi abbiano
digest diversi, quindi P = 1 - P*
HP: gli eventi considerati sono indipendenti
Prob{h(mi) h(mj) ANDh(mp) h(mq)} =Prob{h(mi) h(mj)} Prob{h(mp) h(mq)}
a rigore tale ipotesi non soddisfatta, gli eventi non sono deltutto indipendenti la stima ottenuta della probabilit P per difetto ci si traduce in una stima per eccesso di N
(Prob{E1 AND E2} = Prob{E1} Prob{E2|E1})
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
14/64
Probabilit di collisione 2a Stima
nellHP di eventi indipendenti si ha
P = 1P* = 1 (11/k)N(N1)/2
ipotizzando k>> 1 risulta
P1eN(N1)/2k
ponendo pertanto P 1/2 si ottiene
eN(N1)/2k 1/2 = eln2
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
15/64
Probabilit di collisione 2a Stima
da cui si ottiene
N(N1)/2 (ln2)k
ipotizzando N >> 1 si ha
N (2ln2)1/2 k1/2 = (2ln2)1/2 2b/2
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
16/64
Probabilit di collisione 3a Stima
il valore esatto di N si pu ottenere facendo ricorso al paradosso delcompleanno
P: probabilit che almeno una coppia di messaggi collida
P*: probabilit che tutte le coppie di messaggi abbiano digestdiversi, quindi P = 1 - P*
k= 2b: numero totale di possibili hash
si considerino inoltre le seguenti probabilit
P2*: probabilit che h(m2) sia diverso da h(m1)
P3*: probabilit che h(m3) sia diverso da h(m2) e da h(m1)
Pi*: probabilit che h(mi) sia diverso da h(mj) 1j i1
PN*: probabilit che h(mN) sia diverso da h(mj) 1j N1
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
17/64
Probabilit di collisione 3a Stima
risulta che
P* = P2* P3*Pi*PN* =
= (k1)/k (k2)/k (kN + 1)/k=
= k!/(kN (kN)!)
N
k
k
N
Nkk
kP
NN
!
)!(
!*
stima esatta di P*
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
18/64
Probabilit di collisione 3a Stima
si osservi che il precedente valore di P* pu
approssimarsi come
P*eN(N1)/2k
si ottiene pertanto quanto ottenuto nella 2a stima
P1eN(N1)/2k
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
19/64
Il problema del compleanno
Considerando un gruppo di N persone, qual la
probabilit che ci siano due persone con lo stesso
compleanno (stesso mese e giorno di nascita)?
basta utilizzare la relazione precedente ove
N: numero delle persone nel gruppo
K= 365: numero di giorni in un anno
N
k
k
NP
N
!1
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
20/64
Il problema del compleanno
al variare di N si ottengono le seguenti probabilit
N P
2 0.0027
3 0.0082
4 0.0163
21 0.4437
22 0.4757
23 0.5073
40 0.8912
41 0.9031
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
21/64
Lunghezza di un message digest
DOMANDA Quanti bit deve avere loutput di una funzione di
hash in modo tale che nessuno sia in grado di
trovare due messaggi aventi lo stesso digest?
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
22/64
Lunghezza di un message digest
Se il digest ha b bit, per trovare due messaggi
aventi lo stesso digest, necessario
considerare circa 2b/2 messaggi
64 bit digest ricerca esaustiva in uno spazio dicirca 232 elementi pu essere fattibile
per tale motivo, loutput di una funzione di hash
di almeno 128 bit si ritiene che una ricerca in uno spazio di 264 elementi
sia impraticabile dato lattuale stato dellarte
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
23/64
Importanza resist. alle collisioni
Per quale ragione importante che una funzionecrittografica di hash sia resistente alle collisioni? che debba essere resistente alla preimmagine
scontato,
ma la resistenza alle collisioni veramentenecessaria?
Risposta
in alcune circostanze riuscire a trovare due messaggicon lo stesso digest pu comportare dei seri problemidi sicurezza
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
24/64
Resistenza Collisioni Esempio
Alice genera uninformazionexAe incarica Bob di calcolare un messaggio mA
il cui contenuto deve dipendere daxA secondo dei criteriprestabiliti
Bob elaboraxA, ottiene mA e lo sottopone ad Alice Alice verifica la correttezza di mA, calcola limpronta h(mA),
la firma con la sua chiave privata e invia a Trudy ilmessaggio in chiaro mA e la sua firma (cio la firma dellasua impronta)
Trudy legge il messaggio mA e sia accerta che proviene daAlice verificando la firma
usando la chiave pubblica di Alice verifica la firma, cio decifra conla chiave pubblica la firma e
verifica che quanto ottenuto coincida con h(mA)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
25/64
Resistenza Collisioni Esempio
Alice Bob TrudyinfoxA
mA =f(xA)
legge mA
impronta h(mA)
firma h(mA)
sA = E(PRA, h(mA)) mA, sA
impronta h(mA)verifica firma
D(PUA, sA) =?= h(mA)
mA
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
26/64
Resistenza Collisioni Scenario
Se la funzione di hash non resistente alle
collisioni, Bob potrebbe realizzare questo attacco:
calcola due messaggi mA e mA aventi lo stesso hash,
tali che mA il messaggio che si aspetta Alice
mA il messaggio con contenuto falsato deciso da Bob
sottopone ad Alice mA,
ma quando viene inviato a Trudy lo intercetta e lo
sostituisce con mA
Trudy verifica la firma e non pu rendersi conto
dellinganno
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
27/64
Resistenza Collisioni Esempio
Alice Bob TrudyinfoxA
calcola mA e mA tali che
h(mA) = h(mA)mA
legge mAimpronta h(mA)
firma h(mA)
sA = E(PRA, h(mA))mA, sA
sostituisce mA con mA mA, sA
impronta h(mA)
verifica firma
D(PUA, sA) =?= h(mA)
la verifica della firma da esito
positivo poich h(mA) = h(mA)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
28/64
1a strategia di attacco (inefficiente)
per calcolare due messaggi con lo stesso hash,
Bob pu seguire il seguente approccio a forza
bruta:
1. datoxA, calcola prima il messaggio mA comedesidarato da Alice;
2. genera un messaggio falsato mA
3. esegue il test h(mA) =?= h(mA)
4. in caso negativo ritorna al punto 2.
ma in questo modo sono necessari circa 2b
tentativi e non 2b/2
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
29/64
2a strategia di attacco (efficiente)
supponiamo invece che Bob sia in grado digenerare molte coppie mA, mA tali che: mA: un messaggio che Alice approva
mA: un messaggio falsato secondo le intenzioni di Bob
cio Bob applica il seguente approccio a forzabruta:
1. datoxA, genera una coppia mA, mA2. esegue il test h(m
A) =?= h(m
A)
3. in caso negativo ritorna al punto 1.
per individuare una coppia di messaggi collidenti
sono necessari 2b/2
tentativi
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
30/64
Generare coppie mA, mA
DOMANDA: Come pu Bob generare 2b/2
coppie mA, mA tali che
mA possa essere letta e approvata da Alice, e
mB possa essere letta da Trudy e non destare
sospetti?
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
31/64
Generare coppie mA, mA
SOLUZIONE: basta creare due lettere, una per
Alice e una per Trudy, in cui
molte parole (sostantivi, verbi) non sono fissate,
ma possono essere scelte da un insieme di 2 o pielementi
senza alterare il significato della lettera e senza
introdurre errori grammaticali
con un banale programma semplice generaretutte le possibili varianti delle due lettere
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
32/64
Esempio
Si supponga che
xA sia un messaggio che Alice invia a Bob in cui gli
chiede di redigere una lettera per richiedere il
licenziamento di Fred; la lettera dovr poi essereinviata a Trudy (capo del personale)
Bob, amico di Fred, vuole invece inviare a Trudy
una lettera in cui si richiede una promozione di
Fred!
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
33/64
Schema per generare mA
I am writing {this memo| } to {demand| request|inform you} that{Fred| Mr. Fred Jones} {must| } be{fired| terminated} {at once | immediately}. As the {July11| 11 July} {memo | memorandum} {from | issued by}
{personnel| human resources} states, to meet{our| thecorporate} {quarterly| third quarter} budget{targets |goals}, {we must eliminate all discretionary spending | alldiscretionary spending must be eliminated}.
{Despite | Ignoring} that{memo | memorandum |order}, Fred{ordered|purchased} {PostIts | nonessentialsupplies} in a flagrant disregard for the company's{budgetary crisis | current financial difficulties}.
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
34/64
Schema per generare mA
I am writing {this letter| this memo | thismemorandum | } to {officially| } commend Fred{Jones| } for his {courage and independent thinking |independent thinking and courage}. {He | Fred} {clearly
| } understands {the need| how} to get{the | his} job{done | accomplished} {at all costs | by whatevermeans necessary}, and{knows | can see} when toignore bureaucratic{nonsense | impediments}. I{am
hereby recommending | hereby recommend} {him |Fred} for{promotion | immediate advancement} and{further| } recommend a {hefty| large} {salary|compensation} increase.
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
35/64
Due lettere mA, mA
I am writing to demandthatMr. Fred Jonesmustbeterminatedat once. As theJuly 11memorandumfromhuman resources states, to meetthe corporatequarterlybudgettargets, all discretionary spending must beeliminated.
Despite thatorder, Fredorderednonessential suppliesin a flagrant disregard for the company's budgetary crisis.
I am writing this memorandum to officiallycommend Fred
Jones for his independent thinking and courage. Heunderstands the needto gethis job doneby whatevermeans necessary, andknows when to ignore bureaucraticnonsense. Ihereby recommendhim forpromotion and
furtherrecommend a heftycompensation increase.
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
36/64
IMPIEGHI
Funzioni Crittografiche di Hash
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
37/64
Impieghi degli Algortmi di Hash
Disponendo di un segreto condiviso
un algoritmo di hash pu sostituire un
algoritmo crittografico a chiave segreta in
tutte le sue applicazioni
Autenticazione a Chiave Segreta
Calcolo di MAC
Cifratura (e Decifratura)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
38/64
Autenticazione a Chiave Segreta*
HP: KAB segreto condiviso tra Alice e Bob
Alice Bob
rA
rA cifrato con KAB
rB
rB cifrato con KAB
* N.B.: lo schema illustrato presenta delle debolezze
che possono essere rimosse con opportuni accorgimenti
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
39/64
Autenticazione con Message Digest*
HP: KAB segreto condiviso tra Alice e Bob
MD: generico algoritmo di digest
Alice BobrA
MD(KAB |rA)
rB
* N.B.: lo schema illustrato presenta delle debolezze
che possono essere rimosse con opportuni accorgimenti
MD(KAB |rB)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
40/64
Generare un MAC usando (solo) Hash
Ovviamente necessario disporre di un
segreto condiviso KAB MD(m) calcolabile da tutti coloro che conoscono
me lalgoritmo di digest MD
la soluzione pi immediata considerareMD(KAB|m) quale MAC di m
tale soluzione teoricamente corretta
presenta una debolezza derivante da una comune
vulnerabilit dei principali algoritmi di digest quali
MD4, MD5, SHA-1
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
41/64
Sulla vulnerabilit di MD4, MD5, SHA-1
MD4, MD5 e SHA-1 seguono il seguente schema generale
dallinput m si ottiene un messaggio mp avente
lunghezza pari ad un multiplo intero di 512 bit
mediante un opportuno padding che include, tra laltro, la
lunghezza originaria di m
mp viene decomposto in chunk(pezzi) da 512 bit
il digest viene ottenuto mediante una procedura iterativa
il digest alln-esima iterazione dipende esclusivamente dalln-esimo chunk e
dal digest ottenuto all(n 1)-esima iterazione
il digest risultante di m il digest ottenuto allultima
iterazione
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
42/64
Sulla vulnerabilit di MD4, MD5, SHA-1
si assuma che un attaccante, Trudy, intercetti la
coppia m, MD(KAB|m) inviata da Alice a Bob
Trudy, senza conoscere il segreto KAB, pu
calcolare il MAC MD(KAB|m*)
ove m* un qualsiasi messaggio ottenuto
concatenando mp con una qualsiasi stringabinaria, cio
m* = mp|s per ogni s{0, 1}* ovviamente Trudy deve conoscere lalgoritmo MD
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
43/64
Sulla vulnerabilit di MD4, MD5, SHA-1
DOMANDA: Come si pu procedere per evitare
tale debolezza?
Diverse soluzioni, prive di punti deboli, sono state
proposte
HMAC quella che ha riscosso maggior successo nelle prossime slide si esamineranno tali soluzioni,
ordinate dalla pi semplice a quella pi complessa e
che offre maggiori garanzie
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
44/64
1a Soluzione Mettere KAB in coda
Una semplice soluzione consiste nel posizionare ilsegreto KAB alla fine del messaggio m e non il viceversa
cio il MAC dato da MD(m|KAB) e non da MD(KAB|m)
Tale soluzione considerata sicura a patto che lalgoritmo di digest MD sia molto resistente
alle collisioni,
cio se fossero noti due messaggi m1
e m2
aventi lo stessodigest MD(m1) = MD(m2)
per la vulnerabilit vista prima risulterebbe
MD(m1|K) = MD(m2|K) K
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
45/64
2a Soluzione Usare met bit di MD
Unaltra soluzione definire il MAC come unopportuno sottoinsieme del digest MD
nel caso di digest a 128 bit
il MAC di m pu ottenersi considerando i 64 bit menosignificativi di MD(KAB|m)
un attaccante non pu considerare il MAC come il digestottenuto alliterazione corrispondente al chunk checompleta mp
quindi non pu calcolare il MAC di un qualunque messaggiom* del tipo m* = mp|s senza conoscere KAB
precisamente lattaccante procedendo per tentativi ha 1chance su 264di ottenere laltra met di MD(KAB|m)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
46/64
2a Soluzione Usare met bit di MD
si osservi inoltre che considerare solo 64 bit
anzich i 128 del digest non comporta in pratica
una perdita di sicurezza
se lattaccante non conosce KABlunica cosa che
pu fare generare un MAC random a 64 bit e
sperare che sia quello corretto!
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
47/64
3a SoluzioneKAB in testa e in coda
Altra possibilit porre il segreto KAB sia in
testa che in coda al messaggio m
cio il MAC dato da MD(KAB|m|KAB)
KAB in testa conferisce la resistenza alle collisioni
anche nel caso in cui fossero noti, per lalgoritmo di
digest MDdue messaggi con lo stesso digest
KAB in coda rende innocua la vulnerabilit, deglialgoritmi MD, esaminata in precedenza
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
48/64
4a SoluzioneHMAC
HMAC (keyed-Hash Message AuthenticationCode) segue approssimativamente questoschema generale
nel seguito sar illustrato in dettaglio
concatena il segreto KAB in testa al messaggio
calcola il digest di tale combinazione
concatena il segreto KAB in testa a tale digest
calcola nuovamente il digest di questultimacombinazione
HMAC applica due volte lalgoritmo di digest
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
49/64
Efficienza di HMAC
HMAC meno efficiente delle precedenti
soluzioni
deve effettuare due volte il calcolo del digest
Tuttavia, il secondo digest pu essere calcolato
rapidamente
linput ha lunghezza contenuta: un segreto
concatenato ad un digest
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
50/64
Cifratura/Decifratura tramite MD
DOMANDA
Come possibile ottenere un algoritmo di
cifratura/decifratura utilizzando un algoritmo di
digest?
un digest ha lunghezza fissa e non invertibile!
la decifratura deve essere linverso della cifratura!
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
51/64
Cifratura/Decifratura tramite MD
RISPOSTA
Si pu realizzare un cifrario a flusso, utilizzando un
algoritmo MD per generare un keystream (flusso
di bit pseudorandom dipendente dalla chiave)
In altri termini, si pu procedere in modo simile a
quanto visto per la modalit operativa OFB(Output Feedback Mode)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
52/64
Generazione del flusso OTP
Il one-time pad (keystream) dato dalla sequenza
OTP = OTP(K, IV) = b0|b1|b2| |bi|bi+1|
dove
b0 = MD(K, IV) b1 = MD(K, b0)
bi= MD(K, bi-1) K IV
OTP gen
OTP = b0|b1|b2|m c = OTPm
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
53/64
Generaz. del flusso OTP Osservazioni
Valgono tutte le osservazioni viste per OFB
OTP generabile in anticipo rispetto
non richiesta la conoscenza del messaggio
se un avversario in grado di indovinare il testo inchiaro (o una sua parte) potrebbe
sommarlo (XOR) al testo cifrato e
aggiungere (XOR) un qualsiasi messaggio ingannando il
destinatario tale attacco allintegrit pu essere rilevato
applicando un controllo di integrit sicuro (MAC),
tuttavia pu anche essere evitato utilizzando una soluzione
simile alla modalit operativa CFB (Cipher Feedback Mode)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
54/64
OTP dipendente dal messaggio
m = m0m1 mimi+1 blocchi di testo in chiaro c = c0c1 cici+1 blocchi di testo cifrato
il one-time pad (keystream) dato dalla sequenza
OTP = OTP(K, IV) = b0|b1|b2| |bi|bi+1| dove
Testo in chiaro One-Time-Pad Testo cifrato
m0 b0 = MD(K, IV) c0 = m0b0m1 b1 = MD(K, c0) c1 = m1b1
mi bi= MD(K, ci-1) ci= mibi
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
55/64
Hash mediante cifratura
Si visto che, in linea di principio, un algoritmo di
digest pu sostituire un algoritmo di
cifratura/decifratura a chiave segreta in tutte lesua applicazioni
Naturalmente, vale anche il viceversa, cio
disponendo di un algoritmo di cifratura a chiave
segreta possibile ottenere un algoritmo di digest
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
56/64
Esempio UNIX Password Hash
UNIX usa un algoritmo di cifratura a chiave segreta percalcolare lhash di una password dutente non memorizza le password in chiaro!
in fase di autenticazione, riapplica tale algoritmo allapassword inserita e verifica la corrispondenza con quellamemorizzata
Fase 1 pwd Kpwd
a partire dalla passwordpwdviene calcolata una
chiave segreta Kpwd
Fase 2
modified
DES
064-bit
Kpwd
c = E(Kpwd
, 064-bit
)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
57/64
UNIX Password Hash Fase 1
Kpwdsi ottiene dapwd
considerando i primi 8 caratteri dipwd
i caratteri rimanenti sono ignorati
la stringa di 56 bit ottenuta viene espansa a 64 bitinserendo i bit di parit per ogni gruppo di 7bit
la codifica dei caratteri ASCII a 7 bit
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
58/64
UNIX Password Hash Fase 2
sia s il salt, numero di 12 bit generato in modorandom, associato allutente in esame la cui passwordpwd
h(pwd) si ottiene come segue
si considera una versione modificata di DES chedipende dal valore del salt s
il valore di s determina quali bit devono essere replicati nellafase di espansione di R da 32 a 48 bit
lalgoritmo DES modificato usato, con la chiavesegreta Kpwd, per cifrare la costante 0 (a 64 bit)
UNIX memorizza per ciascun utente la stringa s|h(pwd) nelfilepasswd
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
59/64
UNIX Password Hash Algoritmo
Ogni volta che una passwordpwddutenteviene impostata
un numero random di 12 bit, il salt, viene
generatopwdviene convertita in una chiave segreta Kpwda
64 bit lalgoritmo DES modificato, in base al valore di s,
viene usato con la chiave Kpwdper cifrare lacostante 0 (a 64 bit)
il risultato e il salt vengono memorizzati nel filepasswd
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
60/64
Hash di grandi messaggi
UNIX password hash un metodo per
calcolare lhash di messaggi corti (56 bit)
Come possibile calcolare lhash di un
messaggio di lunghezza arbitraria utilizzando
un algoritmo di cifratura a chiave segreta?
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
61/64
Hash di grandi messaggi Idea base
m = m1m2m3
miusato come chiave segreta
nelli-esimo blocco di cifratura
linput della cascata unacostante nota
lhash h(m) loutput della
cascata
encrypt
encrypt
constant
key
key
m1
m2
h(m)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
62/64
Hash di grandi messaggi Idea base
PROBLEMI
1. Se si desidera individuare un
messaggio m avente un dato
digest possibile applicare un
attacco simile a quello visto per
DES doppio con chiavi distinte
2. h(m) pu risultare troppo corto
in genere la lunghezza di un blocco di 64 bit 232 tentativi sonosufficienti per trovare due messaggi
collidenti
encrypt
encrypt
constant
key
key
m1
m2
h(m)
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
63/64
Algoritmo di Hash migliorato
encrypt
encrypt
constant
key
key
m1
m2
h(m)
Il problema 1. risolvibilesommando ( XOR) linput eloutput di ciascun round
Riguardo al problema 2.,
un hash di lunghezza doppia ottenibile calcolando
un altro hash h(m) con la stessa
tecnica,
ma partendo da una costantediversa
-
7/29/2019 D05 Funzioni Crittografiche Di Hash
64/64
Bibliografia
[DES81] DES Modes of Operation, FIPS PUB 81, NationalBureau of Standards, U.S. Department of Commerce, 1981.
[KPS02] C. Kaufman, R. Perlman, M. Speciner. NetworkSecurity Private Communication in a Public World.Prentice Hall.
[PFL08] C. P. Pfleeger, S. L. Pfleeger. Sicurezza inInformatica. Pearson, Prentice Hall.
[STA07] W. Stallings. Sicurezza delle reti. Pearson, PrenticeHall.
[Wiki-it] http://it.wikipedia.org/wiki/ [Wiki-en] http://en.wikipedia.org/wiki/
[ISECOM] Institute for Security and Open Methodologies