En pratique, oui, un hachage cryptographique identique signifie que les fichiers sont les mêmes, tant que les fichiers n'ont pas été créés par un attaquant ou une autre entité malveillante. Les chances de au hasard La probabilité de collisions avec toute fonction de hachage cryptographique bien conçue est si faible qu'elle est négligeable en pratique et en l'absence d'un attaquant actif.
Mais en général, non, on ne peut pas dire que deux fichiers arbitraires ayant le même hachage définitivement signifie qu'ils sont identiques.
Le fonctionnement d'une fonction de hachage cryptographique consiste à prendre une entrée de longueur arbitraire et à produire une valeur de longueur fixe calculée à partir de l'entrée. Certaines fonctions de hachage permettent de choisir parmi plusieurs longueurs de sortie, mais la sortie est toujours, dans une certaine mesure, une valeur de longueur fixe. Cette valeur peut atteindre quelques dizaines d'octets ; les algorithmes de hachage les plus longs utilisés aujourd'hui ont une sortie de 512 bits, et une sortie de 512 bits représente 64 octets.
Si l'entrée d'une fonction de hachage est plus longue que la sortie de la fonction de hachage, une certaine fidélité doit être enlevée pour que l'entrée rentre dans la sortie. En conséquence, il doit exister plusieurs entrées de longueur supérieure à la longueur de la sortie, qui génèrent la même sortie.
Prenons l'exemple du cheval de bataille actuel, SHA-256. Il produit un hachage de 256 bits, soit 32 octets. Si vous avez deux fichiers qui font chacun exactement 32 octets, mais qui sont différents, ils devraient (en supposant qu'il n'y a pas de défaut dans l'algorithme) être hachés à des valeurs différentes, quel que soit le contenu des fichiers ; en termes mathématiques, le hachage est une fonction qui met en correspondance un 2 256 sur un espace d'entrée de 2 256 l'espace de sortie, ce qui devrait pouvoir se faire sans collisions. Cependant, si vous avez deux fichiers qui font chacun 33 octets, il doit exister algunos combinaison d'entrées qui donnent la même valeur de hachage de sortie de 32 octets pour les deux fichiers, car nous mappons maintenant une valeur de 2 264 sur un espace d'entrée de 2 256 espace de sortie ; ici, on peut facilement voir qu'il devrait y avoir, en moyenne, 2 8 entrées pour chaque sortie. Si l'on va plus loin, avec des fichiers de 64 octets, il devrait y avoir 2 entrées pour chaque sortie. 256 entrées pour chaque sortie !
Les fonctions de hachage cryptographiques sont conçues de telle sorte que c'est difficile sur le plan informatique pour composer une entrée qui donne une sortie particulière, ou composer deux entrées qui donnent la même sortie. On parle alors de _attaque par préimage résistance o attaque par collision résistance_ . Ce n'est pas impossible pour trouver ces collisions ; c'est juste prévu pour être vraiment, vraiment, vraiment, vraiment (Un cas un peu particulier d'une attaque par collision est un attaque d'anniversaire .)
Certains algorithmes sont plus efficaces que d'autres pour résister aux attaquants. Le MD5 est généralement considéré comme complètement cassé de nos jours, mais la dernière fois que j'ai regardé, il était encore assez bon pour résister aux attaques. première préimage résistance. De même, SHA-1 est effectivement cassé ; des attaques par préimage ont été démontrées, mais nécessitent des conditions spécifiques, bien qu'il n'y ait aucune raison de croire que ce sera le cas indéfiniment ; comme le dit le dicton, les attaques s'améliorent toujours, elles ne s'aggravent jamais. SHA-256/384/512 sont actuellement encore considérés comme sûrs pour la plupart des objectifs. Cependant si vous êtes juste intéressé à voir si deux non malicieusement conçu, valide sont les mêmes, alors n'importe lequel de ces fichiers devrait suffire, car l'espace d'entrée est déjà suffisamment contraint pour que vous soyez surtout intéressé par les collisions aléatoires. Si vous avez des raisons de croire que les fichiers ont été créés de manière malveillante, vous devez au moins utiliser une fonction de hachage cryptographique qui est actuellement considérée comme sûre, ce qui place la barre inférieure à SHA-256.
Premier Le préimage consiste à trouver une entrée qui donne une valeur de hachage de sortie spécifique ; deuxième Le préimage consiste à trouver une entrée qui donne la même sortie qu'une autre entrée spécifiée ; collision est de trouver deux entrées qui donnent le même résultat, sans tenir compte de ce que c'est et parfois sans tenir compte de ce que sont les entrées.
Tout cela étant dit, il est important de garder à l'esprit que les fichiers peuvent avoir des représentations de données très différentes et pourtant s'afficher exactement de la même manière. Ils peuvent donc sembler être le même même si leurs hachages cryptographiques ne correspondent pas, mais si les hachages correspondent, alors ils sont extrêmement probable pour paraître identiques.