C'est vraiment plus un addendum à la réponse intelligente de @ Brian. Chapeau aussi à @Martijn Pieters pour avoir ajouté des détails sur la façon de forcer brutalement les anciens mots de passe basés sur le mot de passe actuel et à @ratchet freak pour "hamming distance". Je ne supprime pas ma réponse car je pense qu'elle fournit un contexte intéressant pour les sauvegarder.
Le stockage de mots de passe de pointe nécessite l'utilisation de plusieurs tours d'un hachage cryptographique à sens unique (SHA-512 +) avec un sel unique (128 bits +) pour chaque utilisateur. Mais ne soyez pas tenté de stocker des informations supplémentaires sur chaque mot de passe. Plus vous stockerez d'informations sur chaque mot de passe, plus vous compromettez la sécurité de votre algorithme de hachage.
Exemple
Considérez combien il est facile de forcer un mot de passe par brute-force si vous savez que:
- Il fait 7 caractères
- Les caractères 3 à 5 sont en majuscules (4 est inférieur)
- 1 et 7 sont des nombres
- 6 est un symbole
Un clavier américain a 95 caractères imprimables, donc sachant que le mot de passe est de 7 caractères donne 95 ^ 7 = 69 833 729 610 000 = 7 x 10 ^ 13 permutations. S'il était vraiment aléatoire, cela pourrait prendre un an pour le casser sur un seul processeur 3Ghz. Mais:
- Il n'y a que 26 majuscules et 26 minuscules
- Il n'y a que 10 chiffres donnant 100 possibilités pour ces deux nombres
- Il n'y a que 32 symboles
Donc (corrigé grâce à @Hellion):
26^4 (charcters 2-5 are known upper or lower-case)
x 100 (characters 1 & 7 are digits)
x 32 (character 6 is a symbol)
====
1,462,323,200 possible passwords.
C'est 50 000 fois plus facile à casser! Le stockage de bonnes informations pour empêcher des mots de passe similaires dans ce cas a pris votre temps de crack pour un mot de passe à 7 caractères d'un an à quelques heures. Décoder tous vos mots de passe sur un bureau multiprocesseur puissant avec une bonne carte vidéo et un peu de patience est désormais très possible. J'espère que cet exemple simple démontre que plus vous pouvez comparer de mots de passe similaires de manière significative, moins votre hachage sera sécurisé.
Importance du hachage fort
Des bases de données avec des mots de passe sont régulièrement volées, avec des effractions gargantuesques dans l'actualité chaque mois. Heck, le mois dernier, l'état de SC a perdu les numéros de sécurité sociale de tout le monde - oups! Combien d'autres de ces violations sont couvertes?
Pensée de clôture
La chose la plus effrayante pour moi, c'est quand les gens choisissent le même mot de passe ou un mot de passe similaire pour plusieurs sites, de sorte que le fait d'en percer un donne à l'attaquant l'accès à tous. J'adorerais voir une méthode éprouvée pour prévenir cette situation, bien que je pense qu'empêcher les mauvais mots de passe les plus courants aiderait plus que d'empêcher un utilisateur individuel de réutiliser son mauvais mot de passe sur le même site. Le mieux que je puisse suggérer est une politique à l'échelle de l'entreprise pour utiliser un gestionnaire de mots de passe sécurisé qui génère des mots de passe hautement aléatoires pour chacun de vos utilisateurs et les stocke en toute sécurité.