Un système que j'étudie utilise le mécanisme suivant: un entier à 19 chiffres est haché via l'algorithme MD5 et le sel de l'entier est affiché à la vue de l'utilisateur avant qu'il ne prenne une action irréversible pertinente pour essayer de deviner les 2 premiers. chiffres dudit numéro.
Mon intuition est que ce n'est pas sûr. Avec 10 ^ 19 résultats possibles pour chaque implémentation particulière et une durée de vie de 2 minutes d'une seule entrée, ainsi que les capacités des GPU modernes, je ne me sens tout simplement pas d'accord pour le déployer.
J'ai essayé d'utiliser une bruteforce de masque de hachage avec une carte graphique quelque peu haut de gamme sur mon ordinateur personnel, ce qui donne des résultats très rassurants d'une durée dépassant deux minutes, mais l'intuition semble faire allusion à quelque chose qui me manque.
Suis-je?
Ce cracker GPU très haut de gamme produit 200GH/s:
https://Gist.github.com/epixoip/a83d38f412b4737e99bbef804a270c4
Cela représente 200 milliards de hachages par seconde (2e11 hachages/s). Avec un espace de recherche de 1e19 nombres possibles, cela signifie qu'il faudra environ 500 000 secondes (environ 1,5 an) pour rechercher de manière exhaustive l'espace des paramètres. Bien sûr, en moyenne, vous trouverez un match dans la moitié de ce temps.
En bref, MD5 est un algorithme rapide, ce qui signifie normalement que la force brute est facile. Cependant, dans ce cas, la grande taille de votre espace de recherche en annule beaucoup.
Cependant, en fonction de ce qui se passe pour un utilisateur réussi, MD5 n'est peut-être pas le meilleur choix. Une plate-forme de hachage haut de gamme est trop lente d'un facteur de ~ 200 000. Cela semble beaucoup, mais vous demandez essentiellement "Combien de temps avant que mon matériel soit 200 000x plus rapide?". Bien que le rythme de croissance du matériel informatique ait ralenti, il n'est pas irréaliste de s'attendre à ce que cet écart se réduise considérablement en quelques années seulement.
Enfin, vous devez également vous préoccuper des faiblesses de la résistance à la pré-image. Je n'ai pas "vérifié" l'état du MD5 depuis un certain temps, mais la dernière fois que j'ai entendu dire que le MD5 était toujours résistant à la pré-image. D'autres aspects de la sécurité cryptographique de MD5 ont été brisés (c'est-à-dire qu'il n'est plus résistant aux collisions, bien que cela ne soit pas pertinent ici). Par conséquent, bien que le MD5 soit toujours résistant à la pré-image, cela pourrait changer n'importe quel jour. Sans résistance à la pré-image, un attaquant pourrait trouver une technique pour trouver une charge utile qui donne le même hachage que votre numéro, sans avoir à forcer brutalement le numéro.
Bref, vous êtes en sécurité pour le moment. Mais la marge de sécurité n'est peut-être pas si élevée. Que vous ayez ou non besoin d'agir dépend de ce que vous sécurisez de l'autre côté de cela.