Je vous rejoins dans la lutte contre hash faibles.
OWASP a une feuille de triche de stockage de mot de passe (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet) avec quelques conseils; ils recommandent 64 000 itérations PBKDF2 minimum à partir de 2012, doublant tous les deux ans (à savoir 90 510 en 2012).
Notez que le stockage d'un long salt par utilisateur cryptographiquement aléatoire est toujours basique. Notez que le fait d'avoir un nombre d'itérations largement variable par utilisateur et de stocker le nombre d'itérations avec le sel ajoutera une certaine complexité au logiciel de craquage et peut empêcher certaines optimisations. Par exemple, "bob" est crypté avec 135817 itérations, alors que "alice" utilise 95.121 itérations, soit peut-être un minimum de (90510 + RAND (90510)) pour 2013.
Notez également que tout cela est inutile si les utilisateurs sont autorisés à choisir des mots de passe faibles comme "mot de passe", "Password1!"," P @ $$ w0rd ", et" P @ $$ w0rd123 ", qui seront trouvés très rapidement par les règles basées sur les attaques de dictionnaire (ce dernier est simplement" mot de passe "avec les règles suivantes: majuscule première lettre, 1337-parler, ajouter un nombre à trois chiffres à la fin.) Prenez une liste de base de dictionnaire (phpbb, pour une bonne, petite liste de mots de démarrage) et appliquez des règles comme ça, et vous ferez beaucoup de mots de passe Par conséquent, lors de la vérification de nouveaux mots de passe, n'appliquez pas "Tous les quatre supérieurs, inférieurs, chiffres, chiffres, au moins 11 caractères" car "P @ $$ w0rd123" est conforme à Au lieu de cela, utilisez cette liste de base de dictionnaire et voyez si les règles de base la casseraient (c'est beaucoup plus simple que d'essayer une fente - vous pouvez mettre en minuscule votre liste et leur mot, puis écrire simplement du code si les 4 derniers caractères sont une année commune, chec k sauf les quatre derniers caractères contre la liste de mots ", et" si les 3 derniers caractères sont des chiffres, cocher tous les caractères sauf les 3 derniers contre la liste de mots "et" cocher tous les caractères sauf les deux derniers "et 1337 le mot de passe - tournez @ en a, 3 en e, etc., puis vérifiez-le par rapport à la liste de mots et essayez aussi ces autres règles. "
En ce qui concerne les mots de passe, c'est génial , en particulier si d'autres caractères sont ajoutés au milieu des mots, mais si et seulement s'ils sont assez longs, puisque vous abandonnez beaucoup de combinaisons possibles.
Notez que les machines modernes avec GPU atteignent les dizaines de milliards d'hachages (MD5, SHA1, SHA-256, SHA-512, etc.) par seconde, même en 2012. En ce qui concerne la combinaison de mots "correct mot de passe de la batterie de cheval "type", celui-ci est au mieux un mot de passe très modeste - il est seulement 4 tous les mots anglais minuscules de longueur 7 ou moins avec des espaces. Donc, si nous cherchons des mots de passe de style XKCD avec 18 milliards de devinettes une seconde configuration: Un petit dictionnaire moderne anglais américain a: 6k mots de longueur 5 ou moins 21k mots de longueur 7 ou moins 36k mots de longueur 9 ou moins 46k mots Avec une phrase secrète de style XKCD, et sans prendre la peine de filtrer les mots par popularité («correct» vs «chaise» vs «dumpier» vs «hémorragie») de longueur 11 ou moins 49k mots de longueur 13 ou moins
nous avons 21k^4, ce qui ne représente que 2E17 possibilités. Avec une configuration de 18 milliards de seconde/seconde (une seule machine avec 8 GPU si nous sommes confrontés à une seule itération SHA1), cela fait environ 4 mois pour rechercher de manière exhaustive l'espace de clés. Si nous avions dix de ces configurations, cela prend environ deux semaines. Si nous excluons des mots improbables comme "dumpier", c'est beaucoup plus rapide pour un premier passage rapide. Maintenant, si vous obtenez des mots d'un "énorme" mot anglais américain, comme "Balsamina" ou "Calvinistically" (tous les deux choisis en utilisant la fonctionnalité "go to row", alors nous aurions 30k mots de longueur 5 ou moins 115k mots de longueur 7 ou moins 231k mots de longueur 9 ou moins 317k mots de longueur 11 ou moins 362k mots de longueur 13 ou moins
Même avec la limite de 7 longueur maximum, avec ce grand dictionnaire comme une base et des mots choisis au hasard, nous avons 115k^4 ~ = 1.8E20 possibilités, ou environ 12 ans si l'installation est tenue à jour (doublant en puissance tous les 18 mois) .Ceci est extrêmement similaire à un 13 caractères minuscules + nombre de mot de passe seulement. "300 ans" est ce que la plupart des estimations vous diront, mais ils ne tiennent pas compte de la loi de Moore
Quelque temps après avoir écrit ceci, j'ai pris connaissance du remplacement de cryptage basé sur SHA utilisé dans RedHat Linux. Il est probablement mieux conçu que le système PBKDF2 en question. http://en.wikipedia.org/wiki/Crypt_%28Unix%29#SHA-based_scheme – joeforker