Funcţii de dispersie(hash

)

Florin Dumitriu, grupa 508

.............................8 Bibliografie............................................ CUPRINS Functii de dispersie........................................................5 Secure Hash Algorithm 1(SHA1)........9 2 ..........................................4 Transformarea Merkle-Damgard............................................................................................................................................................................................................................6 1 Preprocesare.........................................................................................................................................................................3 Atacul zilelor de nastere.......................................................................7 2 Pseudocod....................................................................................................................................................................................................................................

Cu ajutorul ei se construieste o “amprenta”. Se poate determina daca au fost facute schimbari pe un fisier. din punct de vedere al securitatii criptografice este important ca unica metoda de a obtine o pereche valida (x. in urma intamplarii un eveniment. y) ∈ X × Y ese de a alexe un x si apoi de a calcula y = h(x). de exemplu.completa Aplicatii ale functiilor de dispersie: 1. Valoarea generata aleatoreste stocata impreuna cu hashul parolei. eventual problema este NP . Deseori parola este concatenata cu o valoare generata aleator(salt) inainte ca functia de hash sa fie aplicata. si dupa. 2. O modalitate de a reduce acest risc este de a retine hash-ul fiecarei parole. Proof of work Un protocol “proof of work” e o masura de a preveni atacuri(DOS) si alte abuzuri precum spamurile prin a-i cere solicitantului sa execute un job care necesita timp de procesare. Acest lucru este implicat de conditia ca urmatoarele 3 probleme sa fie dificile:  Non-inversabila: fiind dat un y ∈ Y ese dificil de aflat x ∈ X inca y = f(x)  Coliziuni slabe: Fiind data o pereche valida (x. y) este dificil de aflat x1 ≠ x cu h( x 1 ¿ = h(x)  Coliziuni: Este greu de aflat doua valori distincte x 1 . x ∈ X astfel incat h(x) = h( x1 ¿ Prin dificil se intelege ca pentru rezolvarea problemei respective nu se cunosc decat algoritmi de complexitate mare .Functii de dispersie O functie de dispersie este in esenta o functie de compresie al carei principal scop este asocierea unor date de dimensiuni arbitrare valori de dimensiune fixa. Efortul din partea expiditorului este exponential in functie de numarul de biti in vreme ce destinatarul poate verifica validitatea mesajului prin aplicare unei functii de hash. functia de hash este aplicata valorii introduse de acesta si comparata cu valoarea stocata. Expeditorului i se cere sa gaseasca un mesaj a carui valoare incepe cu un numar de zero. prin compararea unui “message digest” anterior. Verificarea integritatii fisierelor sau a mesajelor O aplicatie importanta a functiilor sigure de hashing este verificarea integritatii unui mesaj. Aceasta procedura vine ca o solutie de a evita un atac folosind o tabela de valori precalculate 3. 3 . Pentru a autentifica un user. care poate fi considerata o reprezentare unica a mesajului. Pentru o functie de dispersie h : X → Y. Verificarea parolelor Stocarea parolelor ca text simplu poate rezulta in o bresa de securitate grava daca fisierul continand parolele e compromis.

b k−1 sa fie distincte imultit cu probbailitatea ca bk ≠ bi .2. Cum B k = A k ∩ B k−1 obtinem recurenta Pr { B k } = Pr {Bk −1 }Pr{ A k | B k−1 } In alte cuvine. b2 . … . unde A i este evenimentul in care ziua persoanei i este diferita de cea a persoanei j pentru j ¿ i.b k sunt distincte probabilitatea conditionata ca bk ≠ b j pentru j = 1.Atacul zilelor de nastere De cati oameni este nevoie sa se afla in o camera incat sa existe o sansa de 50% ca doi dintre ei sa fie nascuti in aceeasi zi a anului? Analiza Indexam oamenii din camera cu intregii 1.b k sa fie distincte este probbailitatea ca b1 .2. k-1 este Pr { A k | B k−1 } = ( n−kn +1 ) Aplicand iterativ recurenta obtinem: Pr { B k } = Pr ⁡{B k−1 }Pr{ A k | B k−1 } = Pr { B k−2 } Pr ⁡{A k−1 | B k−2 } Pr { A k | B k−1 } ⋮ = Pr { B 1 } Pr ⁡{A 2 }Pr ⁡{ A2 | B 1 } Pr { A 3 | B 2 }… Pr { A k | B k−1 } k−1 n−1 n−2 n−k +1 =1 ( )( ) n n …… ( n ) = ∏ (1− ni ) i=1 Pentru x suficient de mic folosind seriile Taylor obtinem 1-x ≈ e−x .. … k. … k si r = 1. Putem sa analizam probabilitatea ca cel putin 2 oameni sa aiba aceeasi zi de nastere folosindu-ne de evenimentul complementar. 2. Vom considera ca numarul de zile dintr-un an n=365 si ca zilele de nastere sunt uniform distribuite astfel incat Pr { bi = r} = 1/n pentru i = 1. unde k este numarul total. Probabilitatea ca cel putin doua zile de nastere sa se potriveasca este 1 minus probabilitatea ca toate zilele de nastere sa fie diferite. … . … . Evenimentul ca un numar de k oameni sa aiba zile diferite de nastere este: B k = ¿ i=1 ¿ k A i .b k−1 sunt distincte. k-1. b2 . astfel k−1 k−1 −1 −k {k −1 ∏ (e ) i ∏( 1− n ) = n = e¿ ¿ i=1 i=1 2n 4 . dat fiind ca b1 . Daca b1 .2.2. i = 1. … . probabilitatea ca b1 . b2 .. ….. 3. b2 . …n. .

aproxmativ un milion. Transformarea Merkle-Damgard Scopul este sa construim o functie hash cu intrarea de lungime variabila pornind de la o functie de compresie de lungime fixa. Pentru fiecare mesaj x i el calculeaza si stocheaza ampreta y i = h( x i ) comparand-o cu valorile stocate anterior.17 √ n 1 1−ε . Oscar genereaza aleator mesajele x 1 . de aici se obtine k ≈ √ 2n ∙ ln 1 1−ε . O amprenta de 40 de biti este vulnerabila la un atac al nasterilor folosind numai 20 2 . … ∈ X . Acest tip de atac impune ca masura de securitate o margine inferioara asupra lungimii amprentelor. −k {k −1 Probabilitatea sa existe cel putin o coliziune este atunci 1 . x 2 .5 se Folosind cu n = 365 obtinem cu aproximare k ≈ 22. pentru o functie de hashing h:X →Y . 5 . De aceea se sugereaza folosirea de amprenta de ce putin 256 de biti. aceasta se va intampla dupa aproximativ 2n /2 mesaje. probabilitatea ca doua sa aiba aceeasi zi de nastere este 1. x j ). e¿ ¿ 2n −k {k −1 Notand aceasta probabilitate cu ε .1/2 Atacul nasterilor este un atac prin forta bruta care urmareste aflarea unor coliziuni. unde atacul nasterilor va cere 2128 calcule. Conform paradoxului nasterilor. de mesaje aleatoare. In general. luand ε = 0. Oscar a gasit o coliziune ( x i . se ajunge la e¿ – ε care conduce la ¿≈1 2n k 2−k ≈ 2n ∙ ln ajunge la k ≈ 1.5. Daca h( x i ) coincide cu o valoare h( x j ) deja stocata. deci atunci cand avem 23 de persoane in camera.

Ramane sa gasim o constructie pentru functia de decompresie h. acesta ramane important fiindca prezinta aceeasi structura interna precum algoritmii din familia SHA-2. Desi noi atacuri au fost propuse impotriva algoritmului. Constructia Davies-Meyer Enc este un sistem bloc care cripteaza z i−1 cu cheia xi : h( z i−1 . Acesta este bazat pe constructia Merkle-Damgard dupa cum poate fi observat in figura de mai jos: 6 . SHA-1 produce un output pe 160 de biti si primeste ca input mesaje de o lungima maxima de 64 2 de biti. xi ) = Enc xi ( z i−1 ) ⨁ z i−1 Secure Hash Algorithm 1(SHA1) SHA-1 este cea mai folosita functie din familia MD4.h = o functie de compresie de dimensiune fixa x= x 1 || x 1 || … || x t−1∨¿ x t -valoarea de intrare IV = vector de intializare Padding = 1000…0|| lungimea mesajului Teorema Daca h prezinta rezistenta la coliziuni atunci si H prezinta rezistenta la coliziuni.

1 Preprocesare Inainte de calcularea functiei de hash. Astfel obtinem mesajul in forma finala: 7 . Prin urmare numarul k este data de expresia: k ≡ (512 – 64 -1 – l) mod 512 k ≡ (447 – l) mod 512 Exemplu: Fie mesajul “abc” care contine trei caractere ASCII a cate 8-biti fiecare cu o lungime toatala de l = 24-biti. Pe parcursul calculului propriu zis functia de compresie proceseaza mesajul in blocuri de 512 biti. Pentru a realiza aceasta constructie adaugam bitul 1 urmat de k biti de 0. unde k e determinat de: k ≡ (447 – l) = 447 – 24 = 423 mod 512 Apoi adaugam valoarea de 64-biti care contine reprezentarea binara a lungimii mesajuli l = 24 = 110002 . Adaugam un bit de 1 urmat de k = 423 de biti de 0. mesajul primit ca input trebuie sa fie completat pentru a avea o lungime divizila cu 512.

… K 79 . Fiecare etapa e compusa din 20 de runde. D) astfel : { ( B ∧C ) ∨((¬ B)∧ D) 0 ≤t ≤19 f t (B.diferite pentru fiecare etapa . K 1 .x) (mod 512) s = reprezentarea binara a lui |x| (mod 264 ). Inainte de a aplica functia de compresie. trebuie sa impartim mesajul in blocuri de 512-biti. Fiecare bloc poate fi impartit in 16 cuvine a cate 32 de biti. f t si constantele K t . C. C. in fiecare etapa folosindu-se functii interne . astfel: { 0 x 5 ab 27999 0 ≤ t ≤19 0 x 6 ed 9 eba 120 ≤ t ≤ 39 Kt = 0 x 8 f 1 bbcdc 40 ≤t ≤59 0 x ca 62 c 1 d 6 60≪ t ≪ 79 Functia de compresie este calculata in 4 etape. unde parti din blocul de mesaj sunt procesa de functia . |s| = 64 M = x||1|| 0d ||s H 0 = 0x67452301 H 1 = 0xEFCDAB89 H 2 = 0x98BADCFE H 3 = 0x10325476 H 4 = 0xC3D2E1F0 for i= 1 to n do 32 M i = W 0 || W 1 ||… ¿∨W 15 . f t si constanta K t . unde 1 ≤ t ≤ 4. Dupa 80 de runde rezultatul este adaugat la registrii H i 2 Pseudocod //Initializare d = (447 . W i ϵ Z2 for t= 16 to 79 do W t = ( W t −3 ⨁ W t −8 ⨁ W t −14 ⨁ W t −16 ≪ 1) A = H0 8 . in hexazecimal. D) = B ⨁C ⨁ D20 ≤ t ≤ 39 ( B ∧C ) ∨ ( B ∧ D ) ∨ ( C ∧ D ) 40 ≤t ≤59 B ⨁ C ⨁ D60 ≪ t ≪ 79 Se definesc constantele K 0 . De exemplu blocul i al mesajului este impartit in : x i=( x (0i ) x (1) ) (15) i … xi Se definesc functiile f t (B.

Adrian Atanasiu 9 . Securitatea Informatiei vol 2 (Protocoale de securitate). D) + E + Wt + Kt E=D D=C C = (B ≪ 30). C. B = H1 C = H2 D = H3 E = H4 for t= 0 to 79 do temp = (A ≪ 5) + f t (B. B=A A = temp H0 = H0 + A H1 = H1 + B H2 = H2 + C H3 = H3 + D H4 = H4 + E Output: y = H 0 || H 1 ¿∨H 2 ¿∨H 3 ¿∨H 4 Amprente obtinute cu ajutorul functiei SHA1: Secventa ASCII Amprenta (scrisa in hexazecimal) da39a3ee5e6b4b0d3255bfef9560189 ”” 0afd80809 86f7e437faa5a7f “a” ce15d1ddcb9eaeaea377667b8 a9993e364706816aba3e25717850c2 ”abc” 6c9cd0d89d “abcdefghijklmnopqrstuvwx 32d10c7b8cf96570ca04ce37f2a19d84 yz” 240d3a89 Bibliografie 1.

http://ruxandraolimid.wikipedia. Bart Preneel 3.weebly. Introduction to Algorithms. http://ruxandraolimid.pdf. 3rd Edition (MIT Press). Rivest.pdf 5.org/wiki/Cryptographic_hash_function 10 . Charles E. Clifford Stein 4.2. Christof Paar.com/uploads/2/0/1/0/20109229/cry pto_c_14. Jan Pelzl. Ronald L. Thomas H. Understanding Cryptography: A Textbook for Students and Practitioners. https://en. Leiserson.weebly.com/uploads/2/0/1/0/20109229/cry pto_c_14.