Fórum Root.cz

Hlavní témata => Software => Téma založeno: pavel m 10. 03. 2010, 12:58:12

Název: Hashovací funkce a přepocet počtu znaků na bity
Přispěvatel: pavel m 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
Název: Re: Hashovací funkce a přepocet počtu znaků na bity
Přispěvatel: Kit 10. 03. 2010, 16:37:55
Uvedený řetězec z /etc/shadow není MD5, ale tuším Bluefish.
Název: Re: Hashovací funkce a přepocet počtu znaků na bity
Přispěvatel: Pavel M 10. 03. 2010, 18:18:09
Kdyztak uz blowfish. Ten retezec zacina na $1$ a to je MD5.
Název: Re: Hashovací funkce a přepocet počtu znaků na bity
Přispěvatel: Kit 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$.
Název: Re: Hashovací funkce a přepocet počtu znaků na bity
Přispěvatel: Pavel M 10. 03. 2010, 18:58:28
Jo to by mohlo byt resenim - je to jedine logicke vysvetleni.
Diky
Název: Re: Hashovací funkce a přepocet počtu znaků na bity
Přispěvatel: Sten 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š
Název: Re: Hashovací funkce a přepocet počtu znaků na bity
Přispěvatel: Sten 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$
Název: Re: Hashovací funkce a přepocet počtu znaků na bity
Přispěvatel: -jD- 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.