Čemu hash password?

evo posmatraj izlaze i ulaze moje hash funkcije:

ana > 2448m1224126u26U206121224486216ef4812244

anb > 9612m8932418u322325918324366123ef9189181

lozinkalozinka1 > 402120120240uv22040802160402120ef0212012

lozinkalozinka2 > 603180180360uv32060120324060318ef6031801

iako mi se čini da si u ovom zadnjem napisao nešto drugačije nego u prethodnom postu…

a, psiho i bilo kakave druge analize se ostavi, jer ti ne ide
ja sam na predskolskoj razini sto se tice ove teme, a ti postavio pitanje cemu sluzi HASH tag?
ako imas kakvo konkretno pitanje (bez obzira koliko ono predskolsko bilo) postavi i dobit ces odgovor, kako najbolje znam, ako ne, ili podjeli onaj hash pa da porazgovaramo, ili me se okani

[quote=“bozoou”]evo posmatraj izlaze i ulaze moje hash funkcije:

ana > 2448m1224126u26U206121224486216ef4812244

anb > 9612m8932418u322325918324366123ef9189181

lozinkalozinka1 > 402120120240uv22040802160402120ef0212012

lozinkalozinka2 > 603180180360uv32060120324060318ef6031801[/quote]

a sta sam ja napisao?
ako ti imas pass, koji generira hash od 40 znakova… i taj hash svedes na 1 znak
imat ces 39! hashova koji ispunjavaju taj uvjet

da li tebi ovi hashovi pocinju s istim slovom? - ne

Ima jedna mitološka priča iz stare perzije gdje je jedan “mudrac” predložio caru da mu plati u zrnima riže, kad ga je car pitao koliko zrna riže želi ovaj mu je odgovorio onoliko koliko stane na šahovsku ploču, s tim da na prvo polje stavi jedno zrno a na svko iduće polje duplo više (1,2,4,8…). Car mu je rekao naravno da će mu dat nesluteći o kakvim se tu brojkama radi.

PS
Ne znam za završetak ove mitologije ali brijem da je netko nekom hebavo majku kasnije :stuck_out_tongue:

Je, car je hebavao majku svojim radnicima koji nisu bili u mogućnosti na papiru uopće izračunati koliko je to riže. Ali samo su ga obavijestili da sigurno nema dovoljno.
Današnja računala mogu to izračunati…i aproksimacijom na broj zrna u jednoj vreći i aproksimacijom koliko treba metara kvadratnih da se dobije ta vreća riže…aproksiirano je da treba mnogo mnogo povrišine za tu rižu. Ako se dobor sjećam, radilo se o redu veličine u milijunima planeta kugle zemaljske da bi se osiguralo toliko površine. (Koristeći i površinu mora) :slight_smile:

Btw. taj mudrac je kao izmislo šah, a car mu je ponudio što god želi za tu igru…a on je skromno to zatražio. xd. Car se čak našao uvrijeđenim i naljutio se što ga toliko malo traži pored sveg njegovog bogatstva. Hahahahaha…genijalna priča :slight_smile:

Btw. my hash friednd, ti ni sam neznaš što pišeš i ispunit ću ti želju i okanit te se. :slight_smile:

zahvaljujem, my preschool toddler freind :wink:

@webdeveloping031 Ja se duboko nadam da sve ovo što si u ovoj temi napisao nije tvoje mišljenje i stav nego da je bila više neka dobra zajebancija za dobru atmosferu.

Možda se nije odlogirao s foruma, pa se mlađi brat malo poigrao. xd
Ima jedna izreka “Ne svađaj se s budalom, jer narod možda neće primjetiti razliku.” …nadam se iskreno da se nisam ovog puta utopio u tu izreku.

pa bio je dobar dio zajebancije, jer mi je smijesno da covjek koji postavi pitanje cemu sluzi hash password, sat vremena poslije objasnjava njegovu funkcionalnost i najbolje nacine implementacije. Pa reko sto da ne naucim nesto.

to sto je bilo ozbiljno je, da se za svaki password koji je storan u bilo kojem obliku moze dobiti njegov plain oblik i to je pitanje vremena. sto se tice toga da li netko trenutno moze napraviti funkciju koja ce decodirati neki od hashova tipa unsha1, to jasno ne moze, ali ne zato sto je to nemoguce, vec zato, sto trenutno ne postoje resorsi koji bi to odradili u nekom ‘normalnom’ vremenu.

svaka funkcija koja za ulazni parametar daje uvijek isti izlazni parametar, se ‘moze’ dekonstruirati, pitanje je resorsa, i zbog toga je neke funkcije ‘nemoguce’ (trenutno) dekodirati… nekad treba sat, nekad treba godina, nekad treba 1000 godina… ovisi o resorsima s kojim raspolazes

Joj sto ga tulavis…ovo ti je opet na razini da ako neznam za sessione da neznam kombinatoriku! Tulavis li ga i tulavis…sorry ali tako je!

Pitanje teme je postavljeno da vidim što se još možda krije iza toga… pretpostavka u pitanju je bila točna i to je to…i to opet nema previše veze sa samom kombinatorikom. A ti bi mogao znati da onaj tko se utapa u živom blatu…što više mlati rukama da se spasi…to zapravo brže tone. Stoga polakše sa izvlačenjem…

[quote=“bozoou”]Joj sto ga tulavis…ovo ti je opet na razini da ako neznam za sessione da neznam kombinatoriku! Tulavis li ga i tulavis…sorry ali tako je!

Pitanje teme je postavljeno da vidim što se još možda krije iza toga… pretpostavka u pitanju je bila točna i to je to…i to opet nema previše veze sa samom kombinatorikom. A ti bi mogao znati da onaj tko se utapa u živom blatu…što više mlati rukama da se spasi…to zapravo brže tone. Stoga polakše sa izvlačenjem…[/quote]

zasto bi JA to mogao znati?
nisam tebi nista rekao, niti sam spominjao kombinatoriku. niti sam te u bilo kojem postu vrijedjao, ako ne mozes komunicirati na normalnoj razini, nemoj nista ni pisati, vec sam ti rekao.

ja 12 godina zivim od koda koji pisem, onog trenutka kad ti budes mogao reci isto, mozemo pricati, do tada, pliz, ako ne mozes komunicirati na nekoj normalnoj razini, ako su ti uvrede jedini nacin da nesto ‘argumentirano’ kazes, imas cijeli internet, pronaci ces suborce, pa sa njima raspravljaj o kombinatorici, presavijanju papira i pretpostavkama o tome kako svemir funkcionira

ili podijeli onaj hash :wink:

Nemoj se vrijeđat jer si prvi počeo s “niskim” udarcima…a ja sam nažalost nastavio sličnim tonom. Tako je to kod svemira, vraća kako se prema njemu odnosiš :wink:

kao sto sam ti probao objasniti, ali nije islo, zakljucujuci po tvojim postovima u kojima pitas kako postaviti session, cemu sluzi hash password, da li mozes racunati da korisnik uvijek ima isti ip i slicno, sam zakljucio da je moje znanje te materije znatno vece od tvog znanja. ako je to nizak udarac, sorry, vec sam ti rekao da mi to nije bila namjera, i ispricao ti se zbog toga. Nisam te prozivao budalom, neznalicom, tupavcem, nekim tko bi trebao znati kako je to kad se utapas u zivom blatu i slicno, nije to karma, to je stvar odgoja

sorry ali sad si prepucavanje odveo na skroz drugu temu i postaješ offtopic xd …sad bi ti najradije na još pet stranica uvjeravao mene da sam prvi postao neugodan. Ali nisam, čitaj se pa ćeš vidjet :wink:
Pozz.

thread je otisao u OT nakon prvog odgovora
nisam, niti te uvjeravam u nista, nasao si se uvrijedjenim zbog necega sto sam rekao i kako sam to rekao, ispricao sam ti se. Ali, vrijedjao te nisam, ni prvi, ni drugi
:wink: poz

[quote=“mestro67”]i base64 daje hash zar ne? :slight_smile:

MD5 se isto može probiti, ne uvijek, ali sam uvjeren da može[/quote]

MD5, kao i druge funkcije za izradu digitalnih sažetaka, nisu namijenjene kriptiranju sadržaja, pa se zato ne treba govoriti o njihovom “probijanju”, niti uspješnost tog “probijanja” smatrati bilo kakvim mjerilom njihove manjkavosti.

Svrha tzv. hash funkcija je da daju relativno jedinstveni sažetak nekog znatno duljeg teksta. Ključno svojstvo koje se očekuje od takve funkcije je da za vrlo malu izmjenu originalnog teksta daje značajno različiti sažetak.

Tako dobiveni digitalni sažeci se koriste za potrebe digitalnog potpisivanja dokumenata. Logično i pravilno bi bilo koristiti (nesažete) sadržaje samih dokumenata, naravno. Međutim, zbog duljine dokumenata koji se potpisuju, potpisivanje i provjeravanje potpisa bi bilo neefikasno - presporo. Zato su osmišljene takve funkcije poput MD5, koje mogu producirati vrlo kratke sadržaje koji su u razumnoj mjeri različiti za različite tekstove. Tako, ako se tekst i najmanje izmjeni (recimo početna znamenka 1 u nekom ugovoru o dugovanju zamjeni sa znamenkom 9) njegov će digitalni sažetak također biti drugačiji, pa se digitalno može potpisati i sažetak umjesto cijelog teksta, što je značajno brža operacija (čak i kada se uključi izračun samog digitalnog sažetka).

I od hash funkcija se očekuje da su jednosmjerne, tj. da nije moguće iz samog sažetka odrediti sadržaj izvornog teksta, jer se na tome temelje ostala njihova svojstva. Ali treba imati na umu uloga hash-funkcija nije da štite tekst (tome služe kriptografski algoritmi), već da osiguraju detektiranje da je tekst izmijenjen. Od funkcije koja služi pohrani zaporki se, međutim, očekuje oboje - i da štiti tekst, ali da detektira je li korisnik promijenio zaporku. (Prepuštam pažljivijem čitatelju da si odgovori na pitanje zašto se očekuje i ovo drugo.)

Za MD5 funkciju se je pokazalo da ne zadovoljava svoju ulogu detekcije izmjene teksta dovoljno dobro da bi njeno korištenje bilo opravdano kada postoje druge funkcije za digitalno sažimanje koje nemaju slične manjkavosti:

Konkretnije, kod funkcija digitalnog sažetka se očekuje da su otporne na slijedeće:

  1. ako je poznat digitalni sažetak H, treba biti teško pronaći bilo kakav tekst T koji ima taj digitalni sažetak, tj. H = H(T);

  2. ako je poznat i zadan tekst T, treba biti teško pronaći drugi tekst T’ koji će dati identičan digitalni sažetak, tako da je H(T’) = H(T);

  3. da je teško pronaći dva proizvoljno odabrana teksta A i B, takva da imaju iste digitalne sažetke H(A) i H(B).

Prvo svojstvo je ono “zaštitno” svojstvo na koje se računa kod pohrane zaporki. To je svojstvo najteže “probiti”. Ono, međutim, nije toliko ključno u funkcionalnosti digitalnog potpisivanja, jer svrha digitalnog potpisa nije osigurati tajnost dokumenta, već detekciju da je dokument izmijienjen. Ako treba osigurati tajnost komunikacije, to se postiže posebnim algoritmima za kriptiranje.

Drugo svojstvo je bitno jer bi omogućilo uljezu koji prisluškuje komunikaciju da predusretne ugovor T i prateći digitalni potpis njegovog sažetka DP(H(T)), te izmijeni ugovor tako da izmjenjeni ugovor T’ ima identičan digitalni sažetak, pa bi time mogao zapis digitalnog potpisa na dokumentu T jednostavno preslikati na svoj izmijenjeni dokument T’. To bi bilo slično kao da se nečiji potpis s jednog dokumenta vjerodostojno preslika na drugi.

Treće svojstvo je bitno jer bi omogućilo nekoj strani u ugovoru da izradi dva različita ugovora A i B koji, međutim, imaju identične digitalne sažetke. Kada druga strana digitalno potpiše jedan od ugovora, i ne znajući to, potpisala je i drugi ugovor koji nikada nije vidjela. To bi bilo slično kao da se nekome podmetne papir na potpisivanje, a da ovaj ne pročita sadržaj toga što potpisuje.

U drugom i trećem slučaju je bitno razumjeti da se zbog čiste (ne)efikasnosti algoritma digitalnog potpisivanja umjesto izvornih tekstova potpisuju digitalni sažeci. Kada se ne bi potpisivali digitalni sažeci, već izvorni tekstovi, problema ne bi niti bilo.

U gore linkanom radu (koji je na neki način bio posljednji čavao u lijesu funkcije MD5) su autori zaobišli treće od navedenih svojstava - da je MD5 ovdje slab je bilo demonstrirano i ranije, ali oni su uspjeli čak i praktično iskoristiti tu slabost. Konkretno, uspjeli su postići da im certifikacijska kuća izda komercijalni certifikat (A) koji je imao “blizanca” (B) takvog da blizanac B dopušta njegovim vlasnicima da izdaju daljnje certifikate u ime certifikacijske kuće koja je potpisala originalni certifikat A. Ovo je zahtjevalo određenu umješnost i u pogađanju, tj. morali su kupiti oko (po mojoj računici) 300-tinjak certifikata u periodu od mjesec dana, ali su uspjeli bez da su otkriveni, i koštalo ih je ukupno manje od 700 USD.

MD5 funkcija, sama po sebi, je i dalje sasvim dobra u smislu da će za različite tekstove dati različite sažetke, ali nije dovoljno dobra da bi spriječila nekoga da konstruira dva različita teksta s istim sažetkom. Međutim, to nije niti bitno za “password hashing”, jer stvarno nije problematično da korisnik konstruira dvije proizvoljne zaporke s istim sažetkom… opet su obje zaporke njegove vlastite.

Valja, međutim, uočiti da je prvo od tri gore navedena svojstva (ako imamo digitalni sažetak, treba naći tekst koji će dati isti takav digitalni sažetak) ono na kojem se temelji upotreba funkcija digitalnog sažetka za pohranu zaporki. Za to svojstvo se - koliko mi je poznato - nije uspjela uvjerljivo pokazati nedostatnost funkcije MD5. Problem je ovdje više u tome da vrijeme sustiže stare algoritme. Općenito, ako je tekst koja se sažima dovoljno kratak (tj. broj mogućih tekstova je dovoljno malen), onda će pukom “brute-force” metodom (metodom sistemskog pretraživanja ili slučajnog pogađanja) biti s obzirom na trenutnu brzinu računala i realistično dobavljivu računalnu snagu moguće otkriti neki tekst koji daje traženi digitalni sažetak. Ali ključno je da je traženi digitalni sažetak dobiven iz nekog relativno malenog skupa mogućih tekstova, koji se mogu relativno brzo “pretražiti”. Ovdje je “relativno” određeno činjenicom da je s vremenom za iste novce dobavljivo sve više procesorskih ciklusa (jeftiniji i brži procesori koji paralelno rade, distribuirano računarstvo ala onih @Home projekata). Nepovoljno na takvo “probijanje” djeluje i bitno svojstvo funkcija digitalnog sažetka, a to je da se digitalni sažetak mora moći brzo izračunati (inače ne bi imalo smisla koristiti digitalne sažetke za potpisivanje umjesto izvornih tekstova, jer se ne bi dobilo traženo povećanje performansi).

Ovdje malo više o tome, pa i o tehnikama kojima se možda može zaštititi od “probijanja”:

Kod ovakvih tehnika probijanja se zapravo radi o primjeni tzv. “time-space tradeoffa”, tj. svojstva poznatog u računarstvu, koje kaže da su vrijeme i prostor zamjenjivi - ako se neki algoritam želi ubrzati, to se može učiniti tako da se algoritam izmijeni na način da troši više memorije. I obratno, ako se želi uštedjeti na memoriji, onda će algoritam trebati izvoditi u više koraka. No, to je i dalje brute-force tehnika, čija primjenjivost ovisi o tome što je skuplje: procesor ili diskovni prostor. Danas su procesorske snage (grafičke kartice) dovoljno velike, a i dovoljno jeftine da, koliko čitam, rainbow tablice i nisu potrebne za “probijanje” prvog od navedenih svojstava digitalnih sažetaka, barem kada se radi o dovoljno jednostavnim tekstovima (ponovo, što je to “dovoljno jednostavno” je relativan pojam, ovisi o tome koliko je procesorskih ciklusa u jedinici vremena dobavljivo napadaču).

Međutim, dani link na Wikipediji navodi i neke ideje kako se taj problem navodno može dosta elegantno riješiti primjenom tzv. “salta”…

Uglavnom, koliko čitam, niti za MD5 još nije pokazana neka metoda koja bi značajno odstupala od brute-force metode u smislu “probijanja” prvog od tri svojstava:

Ali ovdje treba imati na umu da povećanjem brzine procesora, prostor svih mogućih digitalnih sažetaka (duljina, broj bitova digitalnog sažetka) postaje sve manji, na sličan način na koji jeftinijom avionskom kartom i svijet postaje sve manji.

Stoga vidim da je otvoren i nekakav natječaj za pronalažanje dobre funkcije za hashiranje zaporki:

https://password-hashing.net/

Ovdje se može saznati koje su trenutno uvriježene metoda za “kritpiranje” zaporki, a također postoji i lijepa prezentacija o problematici hashiranja zaporki.

Ovdje bih istaknuo možda najvažniju poruku s tih stranica: potrebno je oduprijeti se porivu da se za vlastite web-stranice primjenjuje neka vlastita, prilagođena tehnika “hashiranja” (a često se takve ideje u diskusijama iznose). Naprosto zato što je vrlo lako pogriješiti. Ako nešto nije, kriptozaštita nije jednostavna stvar. Zato, ako se na stranicama mogu naći smjernice za neke trenutno aktualne i uobičajene metode zaštite zaporki, dobro je upoznati se njima i izabrati neku od njih. U svakom slučaju, nije lošije od onoga što koriste i drugi.

Nedavno je bila otvorena i tema o bitcoinsima, pa će nekome biti zanimljivo za znati da je problematika “probijanja” hashirane zaporke zapravo slična problematici “rudarenja” /mininig/ novih bitcoinova. U tom se problemu treba pronaći tekst koji daje digitalni sažetak koji započinje s određenim brojem nula.

Znači, mislim da poanta nije toliko u nedostatnosti nekog algoritma za digitalni sažetak, koliko u kombinaciji duljine digitalnog sažetka koju sustiže brzina hardvera, a kojoj odmažu korisnici koji imaju jednostavne zaporke (zaporke iz predvidljive, relativno malene domene koju treba “pretražiti” ili “predvidjeti”).