Comme l'a souligné Johannes Gorset, le billet de Thomas Ptacek de Matasano Security explique pourquoi les fonctions de hachage simples et générales, telles que MD5, SHA1, SHA256 et SHA512, sont de mauvais choix pour le hachage des mots de passe. .
Pourquoi ? Ils sont trop rapides. Un ordinateur moderne peut calculer au moins 1 000 000 de hachages MD5 par seconde et par cœur, de sorte que la force brute est possible contre la plupart des mots de passe utilisés. Et c'est beaucoup moins qu'un cluster de serveurs de craquage basé sur les GPU !
Le salage sans étirement des clés signifie seulement que vous ne pouvez pas précalculer la table arc-en-ciel, vous devez la construire ad hoc pour ce sel spécifique. Mais cela ne rendra pas les choses beaucoup plus difficiles.
L'utilisateur @Will dit :
Tout le monde en parle comme s'ils pouvaient être piratés sur Internet. Comme nous l'avons déjà dit, la limitation des tentatives rend impossible de impossible de craquer un mot de passe sur internet et n'a rien à voir avec le hachage.
Ils n'en ont pas besoin. Apparemment, dans le cas de LinkedIn ils ont utilisé le commun Vulnérabilité à l'injection SQL pour obtenir la table de la base de données de connexion et a craqué des millions de mots de passe hors ligne.
Puis il revient au scénario d'attaque hors ligne :
La sécurité entre vraiment en jeu lorsque la base de données entière est compromise et qu'un pirate peut alors effectuer 100 millions de tentatives de mot de passe par seconde contre le hachage md5. SHA512 est environ 10,000 fois fois plus lent.
Non, SHA512 n'est pas 10000 fois plus lent que MD5 - il ne prend que deux fois plus de temps. Crypt/SHA512 est une bête très différente qui, comme son homologue BCrypt, exécute les tâches suivantes étirement clé Il faut entre 500 et 999999 fois plus de temps pour le calculer (l'extension est réglable).
SHA512 => aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
Crypt/SHA512 => $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
Le choix pour PHP est donc soit Crypt/Blowfish (BCrypt), Crypt/SHA256 ou Crypt/SHA512. Ou au moins Crypt/MD5 (PHK). Voir www.php.net/manual/en/function.crypt.php
1 votes
Ver stackoverflow.com/questions/1592608/
0 votes
Voir aussi cette réponse et lisez la section sur le hachage des mots de passe.