Autor Zpráva
quatzael
Profil
Zajímalo by mě jak udělat bezpečné zahashování..
Někde jsem četl, že md5() a sha1() nejsou pro hesla vhodná a má se používat crypt()..

Funguje to opravdu jen tak jednoduše, že se zadá:


$salt = "něco";
$password = crypt($_POST['password'], $salt); ??
Str4wberry
Profil
Někde jsem četl, že md5() a sha1() nejsou pro hesla vhodná a má se používat crypt()..

Vhodná jsou, jen kvůli jejich rozšířenosti lze jednoduchá nesolená hesla „dekódovat“ zadáním do Googlu. Takže je vhodné použít sůl a už je celkem jedno, jestli funkcí crypt nebo nějakým vlastním nakombinováním a zahashováním hesla a soli.
Jan Tvrdík
Profil
Str4wberry:
Vhodná jsou, jen kvůli jejich rozšířenosti lze jednoduchá nesolená hesla dekódovat
Ten problém není pouze v jejich rozšířenosti, ale také v tom, že ty funkce nejsou primárně určené pro hashování hesel. Naopak jsou navržené jako extrémně rychlé, aby se mohli použít pro kontrolní součty např. souborů. Pro hashování je tedy vhodné použít nějaký pomalejší algoritmus.

PHP 5.5 přidává funkce password_hash a password_verify. Pro starší verze lze použít knihovnu password_compat. Interně to používá právě funkci crypt a blowfish algoritmus, který je výrazně pomalejší (dokonce lze pomalost nastavit) než sha1 nebo md5.
suvel
Profil
Str4wberry:
lze jednoduchá nesolená hesla dekódovat
Pokud vím, např. md5 nejde dekódovat. Pouze si někdo dal tu práci, vzal nejčastější hesla, zahashoval, dal do databáze a teď se chlubí, že je umí dekódovat. Neumí. Nicméně souhlasím, že se solí je to určitě lepší.
Str4wberry
Profil
Reakce na Jana Tvrdíka:
Pro hashování je tedy vhodné použít nějaký pomalejší algoritmus.
Z jakého důvodu se tak domníváš?

Reakce na suvela:
Samozřejmě. Nyní jsem dal slovo dekódovat do uvozovek, snad je to tak jasnější.
Virtus
Profil
Str4wberry:
Reakce na Jana Tvrdíka:
„Pro hashování je tedy vhodné použít nějaký pomalejší algoritmus.“
Z jakého důvodu se tak domníváš?
K tomu mně napadlo, že pokud by někdo chtěl heslo zjistit(prolomit) třeba pomocí brute force, tak tím, že budeme mít pomalejší algoritmus pro hashování hesla, se tento útok zpomalí. A ještě malej dodatek k MD5, je prokázaný, že tento algoritmus není úplně dokonalý: může dva různé řetězce přeložit na stejný MD5 hash.
Jan Tvrdík
Profil
Str4wberry:
Z jakého důvodu se tak domníváš?
Řádově vyšší odolnost vůči brute force. Viz třeba codahale.com/how-to-safely-store-a-password.
Alphard
Profil
Virtus:
může dva různé řetězce přeložit na stejný MD5 hash
To snad každého napadne, když má konstatní délku...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: