Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 17. 3. 2013, 14:40:32
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 |
#3 · Zasláno: 17. 3. 2013, 15:27:48
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 |
#4 · Zasláno: 17. 3. 2013, 19:14:21
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 |
#5 · Zasláno: 17. 3. 2013, 20:12:56
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 |
#7 · Zasláno: 18. 3. 2013, 02:16:32
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 |
#8 · Zasláno: 18. 3. 2013, 06:40:46
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... |
||
Časová prodleva: 11 let
|
0