Attention : Depuis la rédaction de cet article en 2010, les GPU ont été largement déployés pour effectuer des hachages de mots de passe par force brute. Les GPU à prix modéré peuvent exécuter dix milliards MD5s par seconde. Cela signifie que même un mot de passe alphanumérique à 8 caractères complètement aléatoire (62 caractères caractères possibles) peut être forcé brutalement en 6 heures. SHA-1 est seulement légèrement plus lent, cela prendrait un jour. Les mots de passe de vos utilisateurs sont beaucoup plus faibles, et (même avec le salage) tomberont à un taux de milliers de mots de passe par seconde. Les fonctions de hachage sont conçu pour être rapide . Vous ne voulez pas de cette pour les mots de passe. Utilisez scrypt, bcrypt, ou PBKDF-2.
MD5 a été jugé faible en 1996, et ne doit plus être utilisé à des fins cryptographiques. SHA-1 est un remplacement couramment utilisé, mais a des problèmes similaires . Le site SHA-2 famille de fonctions de hachage sont les remplacement de SHA-1. Les membres de SHA-2 sont désignés individuellement par SHA-224, SHA-256, SHA-384 et SHA-512.
Actuellement, plusieurs fonctions de hachage sont en concurrence pour devenir SHA-3 le prochain algorithme de hachage cryptographique normalisé. Un gagnant sera désigné en 2012. Aucun d'entre eux ne doit encore être utilisé !
Pour le hachage des mots de passe vous pouvez également envisager d'utiliser quelque chose comme bcrypt . Il est conçu pour être suffisamment lent pour rendre les attaques par force brute à grande échelle infaisables. Vous pouvez régler la lenteur vous-même, de sorte qu'il peut être rendu plus lent lorsque les ordinateurs deviennent plus rapides.
Attention : bcrypt est basé sur un ancien algorithme de cryptage bidirectionnel, Blowfish, pour lequel de meilleures alternatives existent aujourd'hui. Je ne pense pas que les propriétés cryptographiques de hachage de bcrypt soient complètement comprises. Quelqu'un me corrige si je me trompe ; je n'ai jamais trouvé de source fiable qui discute des propriétés de bcrypt (autres que sa lenteur) d'un point de vue cryptographique.
Il peut être quelque peu rassurant de constater que le risque de collisions est moins important pour le hachage de mots de passe que pour la cryptographie à clé publique ou les signatures numériques. Utiliser MD5 aujourd'hui est un très mauvaise idée pour SSL, mais pas aussi désastreux pour le hachage des mots de passe. Mais si vous avez le choix, choisissez simplement une solution plus puissante.
L'utilisation d'une bonne fonction de hachage est pas assez pour sécuriser vos mots de passe. Vous devez hacher les mots de passe avec sels qui sont longues et cryptographiquement aléatoire . Vous devriez également aider vos utilisateurs à choisir des mots de passe ou des phrases de passe plus forts si possible. Un mot de passe plus long est toujours préférable.
32 votes
Les fonctions de hachage ne sont pas des fonctions de chiffrement. Les fonctions de cryptage ont des fonctions inverses permettant de décrypter une valeur cryptée pour obtenir la valeur originale. Mais les hachages ne peuvent pas être décryptés. Il est seulement possible de trouver des collisions (valeurs d'entrée qui donnent la même valeur de hachage).
3 votes
Le résultat d'une fonction/algorithme de hachage donné est toujours de la même longueur. Pour MD5, il est toujours de 128 bits, quelle que soit la longueur des bits/octets/chaîne en entrée.
0 votes
Ne vous inquiétez pas de la longueur du champ. Dans presque tous les cas, il est beaucoup plus rapide de deviner des mots de passe et de les hacher que de provoquer une collision par force brute, et 128 bits sont largement suffisants pour résister aux attaques par force brute jusqu'à la mort thermique de l'Univers.
2 votes
Pour vous tenir au courant des fonctions de hachage, consultez le wiki eHash, en particulier le zoo des fonctions de hachage. ehash.iaik.tugraz.at/wiki/The_Hash_Function_Zoo .