130 likes | 354 Views
H eš funkcije. Potreba za heš funkcijama. Pretpostavimo da je Ali sa potpisala M Ali sa šalje M i S = [M] Alice Bob u Bob verif ikuje da je M = {S} Alice Da li je dovoljno poslati samo S? Ako je M veliko , [M] Alice je računski zahtevno
E N D
Potreba za heš funkcijama • Pretpostavimo da je Alisa potpisala M • Alisa šalje M i S = [M]Alice Bobu • Bob verifikuje da je M = {S}Alice • Da li je dovoljno poslati samo S? • Ako je M veliko, [M]Alice je računski zahtevno • Umesto toga, zamislimo da Alisa potpiše h(M), gde je h(M) daleko kraće od M • Alisa šalje M i S = [h(M)]Alice Bobu • Bob verifikuje da je h(M) = {S}Alice
Kripto heš funkcije • Kripto heš funkcija h(x) mora da obezbedi • Kompresijuizlazna dužina mora biti kratka • Efikasnost h(x) se lako računa za bilo koje x • Jednosmernostza zadato y praktično je nemoguće naći x takvo da je h(x) = y • Slabe otpornost na kolizijeza zadato x i h(x), nemoguće je naći y x takvo da je h(y) = h(x) • Jaka otpornost na kolizijenemoguće je naći x i y, x y takve da je h(x) = h(y) • Postoji puno kolizija, ali ih je teško pronaći
Rodjendanski problem - uvod • Neka je N ljudi u sobi • Koliko veliko mora biti N da bi verovatnoća da neko ima isti rodjendan kao i ja, bila 1/2 • Rešenje: 1/2 = 1 (364/365)N for N • Rezultat N = 253
Rodjendanski problem • Koliko mora biti najmanje ljudi u sobi, da verovatnoća da dvoje ili više ljudi ima isti rodjendan, bude 1/2? • 1 365/365 364/365 (365N+1)/365 • Stavljanjem da je ovaj izraz jednak 1/2 dobija se rešenje: N = 23 • Iznenadjenje? Paradoks? • Možda i nije: “Trebalo bi” da bude oko sqrt(365) budući da se porede sviparovi x i y
O heširanju i rodjendanima • Ako je h(x) dužine N bita, tada ima 2Nrazličitih heš vrednosti • sqrt(2N) = 2N/2 • Stoga, ako heširamo oko 2N/2slučajnih vrednosti, očekujemo pojavu jedne kolizije • Implikacija:bezbedan N bitni simetrični ključ zahteva 2N1rada da bi se razbio, dok za isti posao u slučaju bezbednog N bitnog heša je potrebno 2N/2operacija
Nekriptološki heš • Podaci X = (X0,X1,X2,…,Xn-1), svako Xije jedan bajt • Neka je hash(X) = X0+X1+X2+…+Xn-1 • Da li je bezbedan? • Primer: X = (10101010,00001111) • Heš je 10111001 • Ali ovo je heš i za Y = (00001111,10101010) • Lako se nalaze kolizije, stoga ovonijesiguran heš
Nekriptološki heš • Podaci X = (X0,X1,X2,…,Xn-1) • Pretpostavimo da je heš • h(X) = nX0+(n-1)X1+(n-2)X2+…+1Xn-1 • Da li je ovo siguran heš? • U najmanju ruku je • h(10101010,00001111)h(00001111,10101010) • Heš od (00000001,00001111) je isti kao i heš od (00000000,00010001) • Nije jednosmerna funkcija, ali se može koristiti u nekriptološkim primenama, npr.rsync
Nekriptološki heš • Cyclic Redundancy Check (CRC) • Dobar je za detekciju usmerenih (burst)grešaka • Lako se mogu iznaći kolizije • CRC se ponekad pogrešno koristi u kriptološkim primenama (WEP)
Popularani kripto hešovi • MD5izumljen od strane Rivest-a • 128 bitni izlaz • Primedba: MD5 kolizije su tek nedavno pronadjene • SHA-1Standard Američke vlade (sličan je MD5) • 160 bitni izlaz • Postoje i mnoge druge heš funkcije, ali su MD5 i SHA-1 u najširoj upotrebi • Hešovanje poruke se obavlja hešovanjem njenih blokova
Dizajn kriptoloških hešova • Poželjne osobine: lavinski efekat • Promene u 1 bitu izazivaju promene u približno polovini izlaznih bita • Kriptološke heš funkcije se sastoje od nekoliko rundi • Poželjne su brzina i sigurnost • Lavinski efekat već posle nekoliko rundi • Runde moraju biti jednostavne za izvršenje • Dizajn je analogan blokovskim šiframa