Je veux dire, est-ce juste une question de "à quel point est-il difficile d'inverser la fonction avec la technologie actuelle"?
Ou existe-t-il un concept ou une propriété mathématique qui les rend différents?
S'il s'agit de "dans quelle mesure est-il difficile d'inverser la fonction", est-il exact de dire qu'avec le progrès de la technologie, certaines fonctions de hachage cryptographique cessent d'être cryptographiques pour n'être que des fonctions de hachage? Est-ce ce qui est arrivé à MD5?
Chaque fonction de hachage cryptographique est une fonction de hachage. Mais toutes les fonctions de hachage ne sont pas un hachage cryptographique.
Une fonction de hachage cryptographique vise à garantir un certain nombre de propriétés de sécurité. Plus important encore, il est difficile de trouver des collisions ou des pré-images et la sortie semble aléatoire. (Il y a quelques autres propriétés, et "hard" a des limites bien définies dans ce contexte, mais ce n'est pas important ici.)
Les fonctions de hachage non cryptographiques essaient simplement d'éviter les collisions pour des entrées non malveillantes. Certains visent à détecter les modifications accidentelles des données (CRC), d'autres tentent de placer des objets dans différents compartiments dans une table de hachage avec le moins de collisions possible.
En échange de garanties plus faibles, elles sont généralement (beaucoup) plus rapides.
J'appellerais toujours MD5 une fonction de hachage cryptographique, car elle visait à assurer la sécurité. Mais il est cassé et n'est donc plus utilisable comme hachage cryptographique. D'un autre côté, lorsque vous avez une fonction de hachage non cryptographique, vous ne pouvez pas vraiment l'appeler "cassée", car elle n'a jamais essayé d'être sécurisée en premier lieu.
Il existe certaines propriétés que les fonctions de hachage sécurisées cryptographiquement nécessitent fortement, qui ne sont pas si fortement requises pour les fonctions de hachage sécurisées non cryptographiquement:
h
il doit être difficile de trouver un message m
qui donne h
lorsqu'il est hachém1
il doit être difficile de trouver un autre message m2
pour que m1
et m2
donne le même hachage)m1
et m2
qui donne le même hachage)Dans ces points, vous voyez beaucoup de difficile, qui est une mesure qualitative au lieu d'une mesure quantitative. La meilleure réponse ici est la faisabilité: il y a une ligne floue lorsque quelque chose devient faisable et ces lignes se déplacent au fil du temps (à mesure que les capacités de calcul augmentent de façon exponentielle selon la loi de Moore, une fois que des problèmes difficiles peuvent maintenant être résolus par votre téléphone portable).
En général, c'est une bonne pratique de supposer que difficile signifie que le temps pour atteindre un objectif est NP-complet. Cela signifie que le temps nécessaire pour briser le hachage augmente fortement à mesure que vous augmentez la longueur du hachage.
Un autre point est qu'un algorithme de hachage cryptographiquement sécurisé peut être utile dans certaines applications, mais pas dans d'autres. Cela dépend du modèle de votre attaquant, de la nature des informations que vous souhaitez protéger et de choses comme les exigences de performances (en règle générale, meilleures sont les propriétés cryptographiques d'un hachage, pire est son comportement à l'exécution).
Je dirais que les deux éléments clés à comprendre ici sont:
Le terme "fonction de hachage cryptographique" est classiquement utilisé pour désigner ce qui pourrait être mieux étiqueté comme fonctions de hachage résistantes aux collisions , qui sont public fonctions ("public" = ne nécessitent pas de clé secrète) qui doivent avoir ces trois propriétés:
m1
Choisie par une partie honnête, il est très coûteux pour un attaquant de trouver n'importe quelle valeur m2 ≠ m1
Tel que hash(m1) = hash(m2)
.h
choisie par une partie honnête, il est très coûteux pour un attaquant de trouver une valeur m
tel que hash(m) = h
.m1 ≠ m2
Telles que hash(m1) = hash(m2)
.Il y a une quatrième propriété que les anciennes fonctions de hachage cryptographique échouent trivialement mais que les plus récentes comme SHA-3 et Blake2 sont conçues pour atteindre:
La propriété Oracle aléatoire (lorsqu'elle est correctement formulée) implique les trois propriétés précédentes, ainsi que des propriétés supplémentaires comme l'absence efficace attaques par extension de longueur . (Les extensions de longueur sont la raison la plus évidente pour laquelle les anciennes fonctions de hachage comme SHA-256 et SHA-512 échouent à la propriété Oracle aléatoire.)