D05 Funzioni Crittografiche Di Hash

download D05 Funzioni Crittografiche Di Hash

of 64

Transcript of 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