En cryptographie , une attaque par préimage sur les fonctions de hachage cryptographiques vise à trouver un message ayant une valeur de hachage spécifique. Une fonction de hacha...
Dans le contexte d'une attaque, il existe deux types de résistance à la préimage :
résistance à la préimage : pour pratiquement toutes les sorties prédéfinies, il est impossible de trouver une entrée qui corresponde à cette sortie ; c'est-à-dire que, étant donné résistance aux collisions , dans laquelle il est impossible, du point de vue du calcul, de trouver deux entrées distinctes attaque par force brute . Pour un hachage complexité temporelle les ordinateurs quantiques effectuent une attaque par préimage structurée en ω <sub>n</sub> , ce qui implique également la présence d'une seconde préimage et donc une attaque par collision.
Des attaques par préimage plus rapides peuvent être détectées par cryptanalyse de certaines fonctions de hachage et sont spécifiques à chaque fonction. Des attaques par préimage importantes ont déjà été découvertes, mais elles ne sont pas encore exploitables. Si une telle attaque était découverte, elle impacterait considérablement de nombreux protocoles Internet. Dans ce contexte, « exploitable » signifie qu'elle pourrait être exécutée par un attaquant disposant de ressources raisonnables. Par exemple, une attaque par préimage coûtant des milliards de dollars et nécessitant des décennies pour préimager une valeur de hachage ou un message donné n'est pas exploitable ; une attaque coûtant quelques milliers de dollars et prenant quelques semaines pourrait l'être.
Toutes les attaques pratiques ou quasi pratiques actuellement connues contre MD5 et SHA-1 sont des attaques par collision . En général, une attaque par collision est plus facile à mettre en œuvre qu'une attaque par préimage, car elle n'est pas limitée à une valeur fixe (deux valeurs quelconques peuvent être utilisées pour provoquer une collision). La complexité temporelle d'une attaque par collision par force brute, contrairement à celle d'une attaque par préimage, est de O(n log n) .
Attaques à espace préimage restreint
L'impossibilité, en pratique, d'une attaque par première préimage sur une fonction de hachage idéale repose sur l'hypothèse que l'ensemble des entrées de hachage possibles est trop vaste pour une recherche exhaustive. Toutefois, si l'on sait qu'une valeur de hachage donnée a été générée à partir d'un ensemble d'entrées relativement restreint ou ordonné par probabilité, une recherche exhaustive peut alors s'avérer efficace. La faisabilité dépend de la taille de l'ensemble des entrées et de la vitesse ou du coût de calcul de la fonction de hachage.
Un exemple courant est l'utilisation de fonctions de hachage pour stocker les données de validation des mots de passe à des fins d'authentification. Plutôt que de stocker les mots de passe en clair, un système de contrôle d'accès stocke leur hachage. Lorsqu'un utilisateur demande un accès, le mot de passe qu'il saisit est haché et comparé à la valeur stockée. Si les données de validation stockées sont volées, le voleur ne disposera que des valeurs de hachage, et non des mots de passe eux-mêmes. Cependant, la plupart des utilisateurs choisissent leurs mots de passe de manière prévisible et de nombreux mots de passe sont suffisamment courts pour que toutes les combinaisons possibles puissent être testées avec des fonctions de hachage rapides, même si ces fonctions sont considérées comme sécurisées contre les attaques par préimage. Des fonctions de hachage spéciales, appelées fonctions de dérivation de clé, ont été créées pour ralentir les recherches. Voir Craquage de mots de passe . Pour une méthode permettant d'empêcher le test des mots de passe courts, voir Sel (cryptographie) .