Hashovací funkce a přepocet počtu znaků na bity

pavel m

Hashovací funkce a přepocet počtu znaků na bity
« kdy: 10. 03. 2010, 12:58:12 »
Ahoj, nedavno jsem si rekl ze prijdu na kloub jedne nesrovnalosti ohlene hashovacich funkci. Jedna se o prosty prepocet bitu na znaky hashe. Napr MD5 jednoho programu ktery mam nainstalovany je: b4cf9766cac84f9d21defc2ea4e1d1bc. Kdyz se na ten hash pozorne podivate tak zjistite ze se sklada z cislic 0-9 a pismen a-f. Z toho plyne ze kazdy znak je zakodovan 4bity (ty staci na reprezentaci znaku o hodnote 0-9 a a-f ). Znaku je 32. 32x4=128bitu. MD5 ma 128 tzn vse je v cajku:) ALE kdyz jsem se dival so /etc/shadow na heslo jednoho uctu nasel jsem nasledujici: ftp:$1$ng01N5FL$9zqReNr3Kz0blNZVEN83e/:14629:0:99999:7:::
Tucne vyznacen je hash. Znaku je celke 22 - hash funkce (v tomto pripade MD5) by mela pracovat vzdy se stejne velkou mnozinou znaku (aspon podle me) a tim padem by i delka hashe byla stejne velka(tady jsou vsak pouzity velka mala pismena,cisla  a i lomitko).  Pokud by to tak nebylo a mnozstvi pouzitych znaku by mohlo byt pokazde jine tak jak by pak bylo mozne ziskat z hashe heslo kdyz by dany crackovaci SW nevedel jake znaky muze pouzit? Muzete mi nekdo tento problem objasnit? a nebo aspon nasmerovat?
Diky
« Poslední změna: 10. 03. 2010, 13:33:35 od Petr Krčmář »


Kit

Re: Hashovací funkce a přepocet počtu znaků na bity
« Odpověď #1 kdy: 10. 03. 2010, 16:37:55 »
Uvedený řetězec z /etc/shadow není MD5, ale tuším Bluefish.

Re: Hashovací funkce a přepocet počtu znaků na bity
« Odpověď #2 kdy: 10. 03. 2010, 18:18:09 »
Kdyztak uz blowfish. Ten retezec zacina na $1$ a to je MD5.

Kit

Re: Hashovací funkce a přepocet počtu znaků na bity
« Odpověď #3 kdy: 10. 03. 2010, 18:38:40 »
Blowfish <> MD5 <> DES. Zřejmě to nebude MD5 ani Blowfish, ale DES.

http://www.freebsd.org/doc/handbook/crypt.html

Passwords encrypted with the MD5 hash are longer than those encrypted with the DES hash and also begin with the characters $1$.

Re: Hashovací funkce a přepocet počtu znaků na bity
« Odpověď #4 kdy: 10. 03. 2010, 18:58:28 »
Jo to by mohlo byt resenim - je to jedine logicke vysvetleni.
Diky


Sten

Re: Hashovací funkce a přepocet počtu znaků na bity
« Odpověď #5 kdy: 10. 03. 2010, 19:28:20 »
Formát dat v /etc/shadow je následující:
$typ$sůl$heš

typ je typ heše, 1 je MD5, 2 je Blowfish
sůl je hešovací sůl
heš je samotná heš

Sten

Re: Hashovací funkce a přepocet počtu znaků na bity
« Odpověď #6 kdy: 10. 03. 2010, 19:45:26 »
Passwords encrypted with the MD5 hash are longer than those encrypted with the DES hash and also begin with the characters $1$.
Překlad:
Hesla šifrovaná [sic] MD5 jsou delší než ta šifrovaná DES heší a navíc začínají [ta hesla hešovaná MD5] znaky $1$

-jD-

Re: Hashovací funkce a přepocet počtu znaků na bity
« Odpověď #7 kdy: 10. 03. 2010, 20:47:49 »
Trik je v tom, ze v /etc/shadow nie je (aspon ked sa dobre pamatam ;)) ciste MD5 hesla. Je tam ulozeny vysledok funkcie crypt(), kde (v tomto pripade) sa v priebehu vypoctu pouziva MD5 ako hashovacia funkcia iterativne (najprv na heslo + salt, potom na vysledok, atd). Na samotny prevod z bitov na string sa pouziva algoritmus velmi podobny base64, akurat pouziva ine znaky (a v inom poradi).

V tvojom prvom priklade (md5 suboru) je na prevod bitov na string pouzity klasicky hexadecimalny zapis, preto su tie dlzky rozne.