Bezpečné hashování hesla

David

Bezpečné hashování hesla
« kdy: 23. 12. 2014, 14:00:10 »
Zdravím,

chci se zeptat, zda je bezpečné použít následující mechanismus hashování hesla:

Kód: [Vybrat]
password_hash($serverSpecificSalt.sha512($password), PASSWORD_BCRYPT, ['cost' => 12, 'salt' => $userSpecificSalt]);
Prý je nebezpečné používat vícenásobné hashování, ale už jsem se tak nějak nedočetl, zda za výše uvedených podmínek.

Jde o to, že nechcu posílat heslo od klienta v původním tvaru (tak ho před odesláním zahashuju např. 512kou, když nemůžu využít https) a nechcu zas přijit o možnost solení (posilání soli do formulaře se chci vyhnout).
« Poslední změna: 23. 12. 2014, 21:43:24 od Petr Krčmář »


Re:Hashování hesla
« Odpověď #1 kdy: 23. 12. 2014, 14:30:30 »
Opravdu potřebujete vymýšlet vlastní autentizační schéma? Nebylo by lepší použít HTTP Auth Digest?

David

Re:Hashování hesla
« Odpověď #2 kdy: 23. 12. 2014, 14:41:16 »
HADa znám jen z rychlíku a znamenalo by to v tuto chvíli pro mě dost přepisování (nicméně do budoucna ho uvažuju). Beru mnou výše uvedené spíš jako dočasné řešení a když už nic jiného, rád bych znal názor už jen ze zvědavosti.

Re:Hashování hesla
« Odpověď #3 kdy: 23. 12. 2014, 15:37:47 »
Z toho vašeho zápisu není úplně zřejmé, co se bude provádět na klientovi a co bude uložené na serveru.

Pokud se na klientovi udělá jen SHA512 hesla a na serveru bude uložena sůl a výsledek funkce password_hash, pak pokud někdo získá přístup k uloženým údajům, dokáže se jménem uživatele přihlásit na váš web. Pokud někdo odchytí komunikaci, dokáže se také jménem uživatele přihlásit na váš web.

Pokud nechcete použít HTTP autentizaci a chcete hashovat heslo na klientovi (asi JavaScriptem), můžete přece použít alespoň schéma  HTTP Auth digest. Budete tam mít také dvojité hashování, ale aspoň zabráníte zneužití přihlašovacích údajů odchycených z nešifrované komunikace.

Já osobně řadím opakované hashování do kategorie pověr, protože to na útočníka zaměřeného na váš systém nemá významný vliv. Navíc se tím opakovaným hashováním pravděpodobně postupně zmenšuje prostor možných vstupních kombinací. U dobré hashovací funkce to  nebude mít žádný praktický vliv, ale pokud by byla v té hashovací funkci nalezena slabina, mohl by ten vysoký počet iterací útočníkovi výrazně pomoci.

David

Re:Hashování hesla
« Odpověď #4 kdy: 23. 12. 2014, 18:36:38 »
Díky za odpověď, to je vše. :-)

Došlo mi pak, že šifrováním hashe u klienta se vlastně nic nemění... HTTP Auth digest budu muset použít chtě nechtě.