TL: DR; Dans les fonctions de hachage cryptographique; les hachages de deux messages distincts doivent apparaître statistiquement indépendants. $
Je me rends compte que le hachage est une fonction à sens unique et que le les changements de hachage sont supposés nous indiquer que les données d'origine ont changé (que tout le hachage change, même à la moindre modification des données).
Critères d'avalanche , en plus d'être à sens unique, c'est aussi ce que nous attendons de bonnes fonctions de hachage cryptographique;
-
un petit changement dans l'entrée entraîne des changements dans chacun des bits de sortie avec une probabilité de 50%.
-
changements de bits multiples : c'est un peu délicat, si nous considérez les archives de fonctions de hachage pour modéliser une fonction pseudo-aléatoire selon le modèle d'oracle aléatoire puis nous pouvons considérer chaque changement de bit d'entrée, en moyenne, avec 50%, et peu importe combien de bits sont modifiés .
On peut voir cela en considérant un bit, et en jetant une pièce si Head vient flip et si Tail vient ne pas retourner 50% du flipping. Maintenant, lancez une autre pièce et faites de même. Le résultat est le même (mathématiques simples).
Bien sûr, nous ne pouvons pas réaliser le modèle d'oracle aléatoire. Par conséquent, les bits de sortie ne sont pas indépendants les uns des autres. Ils semblent être aussi longs que l'on peut trouver un distinctif et cela constituerait une attaque cryptanalytique contre la fonction de hachage. Une fois trouvé une bonne fonction de hachage cryptographique, vous la verrez dans les actualités.
Prouver qu'une fonction de hachage a des critères d'avalanche est un processus statistique que vous devez tester de nombreuses valeurs d'entrée aléatoires. Toutes les entrées et tous les compléments de bits n'ont pas pour effet de modifier la moitié du bit et ce n'est pas le comportement attendu . Vous devez également montrer que les bits de sortie sont modifiés de manière aléatoire.
Si elle n'est pas satisfaite, cette fonction de hachage peut ne pas satisfaire la résistance de pré-image, la résistance de deuxième pré-image et la résistance de collision * .
- preimage-resistance - pour pratiquement toutes les sorties pré-spécifiées, il est impossible de trouver une entrée qui hache sur cette sortie, c'est-à-dire de trouver une pré-image
x '
tel que h (x') = y
lorsqu'il est donné un y pour lequel une entrée correspondante n'est pas connue. - 2e préimage résistance, collision faible - il est impossible de trouver une seconde entrée ayant la même sortie que n'importe quelle entrée spécifiée, c'est-à-dire, étant donné
x
, de trouver une 2e préimage x '! = x
tel que h (x) = h (x')
. - résistance aux collisions, collision forte - il est impossible de trouver deux entrées distinctes
x
, x '
qui sont hachées vers la même sortie, c'est-à-dire telles que h (x) = h (x ')
.
L'échec de chacun peut provoquer des attaques, et s'il réussit, cela peut être dévastateur. Un exemple; considérez que quelqu'un trouve un deuxième message à votre message d'origine qui a la même valeur (ou le hachage des ISO du CD Linux);
Ceci est un message signé représentant le paiement est de 1,00 $, ayez un belle journéeJe vous paierai 1 000 000,00 $ bonne journée
Espérons que même SHA-1 et MD5 résistent à cette attaque. Par conséquent, vous pouvez supposer qu'il y a un changement dans les données si la valeur de hachage change. La probabilité qu'un texte aléatoire ait le même hachage avec votre valeur sera négligeable.
Mais y a-t-il un moyen de savoir dans quelle mesure les données d'origine ont changé lorsque deux hachages sont différents?
Espérons que non . S'il y a un seul biais qui donne des informations sur les changements qui peuvent être utilisés par des attaquants intelligents.
* Ce sont des définitions formelles et tirées de l'article fondateur de Rogaway et Shrimpton Bases de la fonction de hachage cryptographique: ...
$ Merci à FutureSecurity pour la simplification