[ Admin32 @ 26.11.2012. 17:45 ] @
Zanima me da li je moguce denkriptovati ove kodove pomocu nekog algoritma. S obzirom na to da mnogi OS i web aplikacije vrse enkripciju (npr. lozinke itd.), mora da postoji nacin kako proverava da li je sifra koju je korisnik uneo ispravna?
[ cyBerManIA @ 26.11.2012. 19:30 ] @
MD5 hash je samo one-way, nema povratka u originalu.
Provera se vrsi tako sto se naknadno uneta lozinka takodje hashuje i zatim uporedjuje sa hashovanom lozinkom u bazi.
Dosta puta ces sresti i npr MD5hash(lozinka+salt1) ili komplikovanije varijacije, kako bi se dodatno ukomplikovao MD5 hash, i time izbegao vec postojeci hash za tu rec.

Postoje dosta servisa koji imaju svoje baze MD5 hashova sa originalnim stringom. Uneses MD5 hash i ukoliko postoji u bazi, izbaci ti original. Zato se koristi ovo iznad sto sam napisao.
Za nedostatke, bazi pogled na http://en.wikipedia.org/wiki/MD5#Security .
[ Admin32 @ 26.11.2012. 20:25 ] @

Hvala na odgovoru. Doduse, bas me zanima kakav je to algoritam koji moze tako da enkriptuje sadrzaj da se vise ne moze vratiti u formu. Mozda je malo glupo pitanje, ali kad se npr. enkriptuje broj 2 ili slovo u md5, ono uvek ima isti md5 kod, on se ne menja za istu kombinaciju karaktera. Ipak mora da postoje neki koraci prebacivanja karaktera u odredjeni kod nekom formulom...? Verovatno postoji adekvatno objasnjenje zasto.
[ Shadowed @ 26.11.2012. 21:47 ] @
Evo ti jednostavan primer. Svi podaci su u binarnom obliku i u sustini niz bajtova, dakle brojeva 0 do 255. Neka je algoritam takav da sabira bajtove i kada je zbir preko 255, uzme samo ono sto "pretekne".
Dakle, ako hoces da primenis algoritam na rec "Milan" to bi, uz pretpostavku da je ascii bilo 77, 105, 108, 97, 110. Znaci, 77+105 = 182, 182+108=290=35, 35+97=132, 132+110=242.
Znaci, nas hash je 242. E sad, probaj da izracunas unazad i dobijes rec Milan ako je jedino sto u startu imas broj 242.

Edit: Naravno, ovo je vrlo jednostavan primer koji sam ja usput izmislio, MD5 je dosta komplikovaniji.
[ Admin32 @ 27.11.2012. 17:17 ] @

Hvala, sad mi je definitivno jasno kako ustvari fungcionisu. Ocigledno je da ne postoji nikakav nacin da se lozinka sazna, jedini nacin je da se skine nekako ili da se program "prevari".
[ gogo82 @ 05.01.2013. 20:38 ] @
Citat:
Admin32: Hvala, sad mi je definitivno jasno kako ustvari fungcionisu. Ocigledno je da ne postoji nikakav nacin da se lozinka sazna, jedini nacin je da se skine nekako ili da se program "prevari".


Naravno da ima načina da se i MD5 heš ''razbije'' u određenim situacijama, pogotovo ako se iskoriste neki propusti administratora sistema u pogledu kvaliteta lozinki. Naime, MD5 se uglavnom koristi za prenos lozinki preko nebezbedne mreže, kao zaštita privatnosti od hakera koji ''snifaju'' saobraćaj. Ako lozinka nije jaka, MD5 heš te lozinke je podložan ''brutal force'' napadima.


Da razjasnim:

Uzmimo osobine ''slabe'' lozinke:
-dužina (broj karaktera) lozinke je 5 ili manji
-set (skup) karaktera koji se koristi za lozinku je relativno mali, npr. lozinka je sastavljena od samo malih slova engleskog alfabeta kojih ima 26.

Dalje, imamo hakera koji je pomoću nekog sniffera uhvatio heš vrednost lozinke.

Iz toga sledi:
-maksimalan broj kombinacija pri pogađanju lozinke je 26 stepenovano sa 5 a to je 11881376 kombinacija
-prosečan crack tool koji haker koristi može da proverava određen broj lozinki po sekundi. Moj računar prosečnih performansi postiže oko 2950 lozinki po sekundi sa crack alatom Cain&Abel, pa će rezultati biti bazirani na toj vrednosti.
-maksimalno vreme za koje hakerski alat moža da ''razbije'' MD5 heš te lozinke je 67 minuta ili 1,1187 sati (nešto više od ceo sat)

Pitanje je kako haker tj kako hakerski alat zna da je ''pogodio'' lozinku. Jednostavno, pomoću MD5 algoritma haker generiše MD5 heš vrednost za svaku od 11881376 kombinacija i tu vrednost poredi sa ''uhvaćenom'' MD5 vrednosti. Kad naiđe na poklapanje te dve MD5 heš vrednosti, ta kombinacija je jednaka lozinki koja čiji je MD5 heš ''uhvaćen snifanjem''.

Verovao ili ne jako veliki broj korisnika u kompanijama koristi ovakve lozinke, tj. veoma veliki broj administratora ne ograničava korisnike u izboru minimalne dužine lozinke i seta karaktera koji grade lozinku.




Bitno je napomenuti da ovaj ''napad'' ne može biti izveden (bar ne uz prihvatljive resurse i vreme) na ''jakim'' lozinkama. Na primer za lozinku koja ima minimalno 8 karaktera i koja za set karaktera koristi i mala i velika slova alfabeta + 10 brojeva važi sledeće:

-dužina minimalno 8 karaktera
-set karaktera od kojih se gradi lozinka je 26 (mala slova) +26 (velika slova) +10 (brojevi) = 62
-maksimalan broj kombinacija za ovu lozinku je 62 stepenovano sa 8 a to je 218340105584896
-uz crack alat koji proverava 2950 lozinki po sekundi, maksimalno vreme ''razbijanja'' MD5 heš vrednosti je 2346 godina (856638 dana)


Dakle uspeh napada na MD5 heširanu lozinku zavisi od dužine lozinke, seta karaktera koji grade lozinku i naravno, snage crack alata i računara na kojem se alat izvršava (broj provera lozinki po jedinici vremena).
Na današnjem nivou razvoja računarske tehnike smatra se da je lozinka od 8 karaktera sa upotrebom malih i velikih slova alfabeta + brojeva minimalno dovoljna.


Da napomenem, da ''snaga'' crack alata (tj broj provera lozinki po sekundi) varira od slučaja do slučaja u zavisnosti od performansi računara.


[Ovu poruku je menjao gogo82 dana 06.01.2013. u 08:46 GMT+1]