Welk paswoord systeem kiezen / veranderen
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.
Jan
Code (php)
1
2
3
4
2
3
4
<?php
$salt = bin2hex(openssl_random_pseudo_bytes(10));
$pw = hash('sha512', $pw . $salt);
?>
$salt = bin2hex(openssl_random_pseudo_bytes(10));
$pw = hash('sha512', $pw . $salt);
?>
De salt (hier met een vaste lengte van 20 karakters) kun je leesbaar opslaan bij de hash van het wachtwoord.
De vraag blijft. wanneer wijzigen jullie het systeem.
Als het gekraakt is!
Als sites vermelden dat het niet lang meer zal duren
…
Jan
Wat bedoel je precies??
De versleuteling van je wachtwoord is slechts één van deze dingen, en draagt in zekere zin helemaal niets / niet zoveel bij aan de algehele veiligheid.
Deze data zitten immers (doorgaans, ga ik hier ook van uit) in je database. Op het moment dat een onbevoegde er in slaagt om toegang te verkrijgen tot je systeem en/of je database dan houdt dat in dat er ergens anders al iets gruwelijk fout is gegaan.
+1 voor Thomas
Wat Thomas zegt klopt, maar uiteraard moet je gewoon wel een veilige hashing-methode kiezen. Als je een bunker wil beveiligen, zet je er ook geen klein lullig 3-cijferig cijferslotje op. En tegelijkertijd geldt natuurlijk ook, dat je niet ergens het raam open moet laten staan.
Je kunt SHA512 met een salt gebruiken, maar als je wachtwoord "welkom" is of wanneer je deze met een memo aan je monitor plakt omdat deze wel moeilijk te onthouden is gaat je dat echt niet redden.
Hashing van het wachtwoord is enkel bedoeld om het wachtwoord geheim te houden zodat de site/applicatie deze niet kent. Het dient verder geen enkel doel en beschermt een loginmechanisme verder op geen enkele manier...
Pretty much this:
https://www.youtube.com/watch?v=a6iW-8xPw3k
Je cijferslot kan dan onverwoestbaar zijn, maar als de code bagger is is dit nog steeds nutteloos.
Gewijzigd op 26/02/2019 20:02:25 door Thomas van den Heuvel
Is er ergens een lijstje met stappen die je kunt volgen om de boel dicht te timmeren? Zou wel handig kunnen zijn toch?
Klopt, maar niemand ontkent dat toch? Je zult beiden moeten doen. Tegen een gebruiker die z'n wachtwoord op een spandoek laat afdrukken en achter een vliegtuig hangt is niemand opgewassen. Maar dat spreekt voor zich. Dat wil niet zeggen dat je je hashing gewoon op orde moet hebben.
https://crackstation.net/hashing-security.htm
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."
Linkje: 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."
Ozzie PHP op 26/02/2019 11:26:08:
>> Als sites vermelden dat het niet lang meer zal duren
Wat bedoel je precies??
Wat bedoel je precies??
bijvoorbeeld phphulp vermeld dat er iemand bijna geslaagd is om het te kraken
Heb je een concreet voorbeeld waar dat gemeld wordt?
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.
Niemand zegt toch dat die andere zaken die jij noemt er niet toe doen?
Geef mij een voorbeeld waarbij hashing jouw database/systeem *proactief* veiliger maakt in plaats van *reactief* (potentieel) verdere schade beperkt?
Gewijzigd op 27/02/2019 17:06:58 door Thomas van den Heuvel
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.
Ozzie PHP op 27/02/2019 10:50:06:
Heb je een concreet voorbeeld waar dat gemeld wordt?
Concreet niet maar md5 in het verleden toch artikels gezien
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.
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.