web-dev-qa-db-fra.com

Quelle est la faiblesse de MD5 en tant que fonction de hachage de mot de passe?

Un professeur nous a dit aujourd'hui que MD5 est faible. Je comprends sa chaîne de pensée, mais a souligné que IMHO MD5 est une bonne voie à suivre si vous utilisiez un long (voire très long) sel dynamique et du poivre statique.

Il m'a regardé et a dit NON!

À mon humble avis, la possibilité de "forcer" un hachage md5 avec n'importe quel dictionnaire est même simple. Si vous utilisiez un sel dynamique/divers, il serait difficile d'obtenir une correspondance avec une complexité de O (2 ^ n) et si j'utilise un poivre avant et après mon hachage de mot de passe salé, il ne serait pas sûr à 100% mais pourrait prendre longtemps pour le calculer ..

16
Alex Tape

Il existe de nombreuses faiblesses cryptographiques connues dans MD5 qui le rendent inutilisable comme algorithme de résumé de message, mais toutes ne s'appliquent pas également dans le contexte du hachage de mot de passe. Mais même lorsque nous supposons que ceux-ci n'existent pas, MD5 est toujours un mauvais algorithme de hachage de mot de passe pour une raison simple: C'est trop rapide.

Dans tout scénario où un attaquant a obtenu les mots de passe hachés, vous devez supposer qu'ils ont également obtenu le sel de chaque mot de passe et le poivre.

La seule raison d'utiliser un piment est que vous ne pouvez pas utiliser une table Rainbow précalculée avant l'attaque, car vous en avez besoin d'une différente pour chaque base de données. La seule raison d'utiliser un sel est que vous ne pouvez pas utiliser la même table Rainbow pour l'ensemble de la base de données de mots de passe, car le même mot de passe pour deux comptes différents aura un hachage différent.

La longueur du poivre et du sel importe peu. Leur seul but est de s'assurer que chaque valeur est unique. Plus la longueur ne rend pas l'attaque particulièrement difficile (il y a plus de données à hacher, mais c'est une augmentation linéaire tout au plus).

En fin de compte, un court sel est tout ce qui est nécessaire pour s'assurer que l'attaquant doit forcer tous les mots de passe possibles pour trouver le hachage correct pour chaque compte.

Et c'est là que la faiblesse de MD5 entre en jeu: c'est un algorithme rapide et économe en mémoire. Cela signifie qu'un attaquant peut calculer le hachage d'un grand nombre de mots de passe par seconde. En utilisant du matériel spécialisé (comme des tableaux FPGA ou des ASIC) valant quelques milliers de dollars, vous pouvez calculer les hachages de tous les mots de passe possibles à 8 caractères pour un sel donné en quelques heures seulement.

Pour une meilleure sécurité, utilisez un algorithme lent comme bcrypt. Cela signifie que votre système a besoin de plus de cycles CPU pour authentifier les utilisateurs, mais le gain en vaut généralement la peine car un attaquant aura également besoin de beaucoup plus de puissance de traitement pour forcer votre base de mots de passe par force brute s'ils l'obtiennent.

31
Philipp

La gravité du danger lié à l'utilisation de MD5 dépend de la raison pour laquelle vous l'utilisez, mais il n'y a aucune raison impérieuse de l'utiliser.

MD5 ne doit absolument pas être utilisé pour les signatures car il est possible (et continue de devenir plus possible au fil du temps) de contourner les protections offertes par la signature lorsque MD5 est utilisé.

Si, d'autre part, votre objectif est blanchiment des données aléatoires pour obtenir une distribution plus cohérente des uns et des zéros, alors MD5 est aussi bon que jamais. Notez que ce n'est pas une opération sensible à la sécurité ; il n'y a pas de vecteur d'attaque car il n'y a pas de cible, rien à gagner ou à perdre grâce à la connaissance de l'algorithme, juste une simple transformation où la sortie est vraiment aléatoire car l'entrée est vraiment aléatoire.

Quelque part entre ces deux extrêmes, vous trouverez toutes les autres opérations. À mesure que la sensibilité de ce que vous faites et votre dépendance à l'irréversible du hachage cryptographique augmentent, le danger de l'utilisation de MD5 augmente également.

Mais la meilleure raison de ne pas utiliser MD5 est la même que la meilleure raison de ne pas utiliser triple-DES: il existe de meilleures options disponibles, et aucun avantage à utiliser l'ancien algorithme. MD5 est mort; il peut être utile dans certaines circonstances limitées, mais la meilleure option est de l'éviter entièrement afin de ne pas l'utiliser accidentellement dans un endroit où la sécurité est importante.

13
tylerl