Momenteel werk ik met hash('sha512', $pw) voor mijn paswoorden. Is er iets beter en is het de moeite om over te stappen bij een bestaand project.
volgens http://php.net/manual/en/function.hash.php zijn er zo veel mogelijkheden om uit te kiezen maar de sterkte is niet vermeld.
TLDR; geen SHA* functies meer gebruiken. Gebruik hashing mechanisme welke rotaties heeft.
---
Gebruik in PHP minimaal password_hash en password_needs_rehash.
Je kan ook naar (lib)sodium kijken, zit standaard in PHP 7.2
Argon2I wordt nu ondersteund in PHP 7.2. En Argon2I en Argon2ID in PHP 7.3 XD
"Since its first implementation, a new variant of Argon2 has been added, so, at the time of this writing, Argon2 comes in three variants:
Argon2d maximizes resistance to GPU cracking attacks. It is faster and uses data-depending memory access.
Argon2i uses data-independent memory access, which is preferred for password hashing. It is slower as it makes more passes over the memory to protect from tradeoff attacks.
Argon2id is a hybrid version that combines the Argon2i approach for the first pass over memory, and the Argon2d approach for subsequent passes.
Argon2id is recommended on the Internet, except when there are good reasons to specifically prefer another variant."
> Dat wil niet zeggen dat je je hashing gewoon op orde moet hebben.
Klopt maar als dit in een lijst van (wachtwoord)beveiligingsmaatregelen zou staan zou dit ongeveer onderaan staan.
Een sterk(er) hashingsalgoritme maakt het wachtwoord zelf niet sterker. Je kunt "welkom" nog zo sterk hashen, als zo'n standaard wachtwoord wordt geprobeerd/geraden (geboortedatum, hond van de buren etc.) ga je nat.
Als de query/queries die wordt/worden uitgevoerd bij inloggen geen voorzieningen heeft/hebben tegen SQL-injectie heb je in het ongunstigste geval niet eens een wachtwoord nodig.
Als het loginformulier geen begrenzing heeft voor het aantal loginpogingen zou je iets kunnen bruteforcen.
Als deze tevens geen logging heeft ben je je mogelijk helemaal niet bewust van het voorgaande.
Als het wachtwoord over tijd nooit verandert kan de kans toenemen dat deze ooit ergens opgepikt en verzameld wordt, vooral als je op meerdere plekken hetzelfde wachtwoord gebruikt.
Nogmaals, het hashen van wachtwoorden maakt het inloggen zelf niet echt veiliger. Er zijn andere, en wat mij betreft veel belangrijkere, dingen die je voor elkaar moet hebben naast hashing. Je kunt dus beter meer aandacht daar aan besteden.
Nee, maar ik vraag mij af of men zich realiseert waar hashing toe dient. Ik vermoed dat het bedoeld is als onderdeel van acties om "dingen veiliger te maken", maar ook daar zit een rangorde in. Je pakt geen enkele winst met sterkere hashing. Het helpt alleen (en dan slechts een beetje) wanneer je database wordt ontvreemd. Maar dat is toch een beetje van de orde "operatie geslaagd, patiƫnt overleden" en betekent dat het systeem ergens anders heeft gefaald op bovengenoemde punten. Op het moment dat de hashing daadwerkelijk iets gaat "betekenen" zit je meestal al in de stront.
Geef mij een voorbeeld waarbij hashing jouw database/systeem *proactief* veiliger maakt in plaats van *reactief* (potentieel) verdere schade beperkt?
>> Geef mij een voorbeeld waarbij hashing jouw database/systeem *proactief* veiliger maakt
Dat doet hashing niet en heb ik ook nergens beweerd. Hashing zorgt alleen dat wachtwoorden niet op straat komen te liggen mocht je database worden binnengedrongen.
Jah, maar dat gaat over kraken van de hash, of het vinden van een equivalente waarde die dezelfde hash oplevert.
Wanneer heeft dit zin / is dit van toepassing? Toch alleen als je de database in handen hebt of wanneer iemand hier toegang tot heeft weten te krijgen om de wachtwoorden te ontcijferen.
En wanneer iemand op een of andere manier bij jouw database kan, dan ben je al de sigaar.
>> En wanneer iemand op een of andere manier bij jouw database kan, dan ben je al de sigaar.
Dat is uiteraard helemaal waar.
Maar goed, ALS ze dan je database in handen hebben, dan is het wel fijn als de wachtwoorden goed zijn versleuteld, want als ook dat niet op orde is dan ben je helemaal de sigaar. Dus goede hashing is wel zeker relevant en aan te bevelen.
Ik merk dat jij graag in metaforen spreekt Thomas ... dus laat ik er ook eentje in gooien. Het is bijzonder kl@te als je in je auto een aanrijding krijgt, maar het is toch prettig als je een airbag hebt die de grootste klap ontvangt, zodat je niet met je hoofd tegen de voorruit vliegt.