De nos jours, de nombreux sites proposent des hachages MD5 et SHA256 pour vérifier l'intégrité des fichiers ou archives téléchargés.
Je me demande dans quelle mesure l'utilisation des hachages SHA256 pour les contrôles d'intégrité est-elle plus sûre?
Remarque: Considérez le contenu du fichier comme une entrée aléatoire (pas d'attaques)
Remarque: semble être une question simple (et j'ai lu collisions sur wikipedia ), mais je n'ai pas trouvé de réponse sur ce site
Je me demande à quel point l'utilisation des hachages SHA256 est plus sûre pour les contrôles d'intégrité?
Remarque: Considérez le contenu du fichier comme une entrée aléatoire (pas d'attaques)
Sur la base de votre note "pas d'attaques", il me semble que vous demandez:
"Quelle est la probabilité qu'un changement aléatoire (par exemple, un basculement de bits pendant le téléchargement) entraîne la création d'un fichier nouveau/différent avec le même somme de contrôle que le fichier d'origine?"
Dans le cas de MD5, cette probabilité est: 1/(2 ^ 128) = 2,94e-39 = 0,0000000000000000000000000000000000000000294
Pour le cas de SHA256, cette probabilité est: 1/(2 ^ 256) = 8.64e-78 = 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000864
Mise en garde importante: Dans le cas hypothétique mentionné ci-dessus de changements aléatoires, MD5 et SHA256 sont tous deux de bons choix. Cependant, dans la vraie vie, la fonction de hachage MD5 est désapprouvée car elle a été cassée (des collisions ont été trouvées). Donc, le vrai conseil est: utilisez SHA256 et non MD5 pour l'intégrité des fichiers.
Il semble y avoir une certaine confusion quant aux capacités d'une attaque par collision.
Deux des propriétés qu'un hachage cryptographique doit avoir sont résistance à la collision et résistance à la pré-image .
Si un hachage est résistant aux collisions , cela signifie qu'un attaquant ne pourra pas trouver deux entrées qui aboutissent à la même sortie. Si un hachage est résistant à la pré-image , cela signifie qu'un attaquant ne pourra pas trouver une entrée qui a une sortie spécifique. MD5 est vulnérable aux collisions depuis longtemps, mais il est toujours résistant à la pré-image.
Si vous croyez que la partie qui a initialement haché les données pour vous fournir le contrôle d'intégrité n'est pas malveillante et n'a permis à personne de modifier les données à l'avance ( any une partie des données, même si 2 images, vidéos ou pdfs regardez identiques, ils peuvent être très différents), alors MD5 devrait être suffisant pour vérifier l'intégrité, et SHA-256 ne devrait pas offrir beaucoup plus de sécurité (sauf avenir) attaques sur la résistance à la pré-image de MD5).
Si un attaquant a pu apporter des modifications aux données (même des modifications apparemment bénignes), alors SHA-256 sera plus sécurisé, car avec MD5, l'attaquant aurait pu créer un fichier malveillant avec le même hachage.
Dans de nombreux cas, pas vraiment. Si vous téléchargez le fichier via HTTPS à partir du même site Web fournissant la valeur de hachage, vous bénéficiez déjà des utilisations de MAC TLS pour la vérification de l'authenticité, donc un MitM ne pourra pas modifier le fichier en transit. Si quelqu'un est capable de modifier le fichier sur le site par malveillance, il peut également modifier le hachage.
Un cas où il le fait est logique de vérifier un hachage MD5 ou SHA-256 pour un fichier est si vous téléchargez le fichier à partir d'un miroir et vérifiez le hachage par rapport à celui fourni par le site de confiance d'origine.
Il existe des vulnérabilités de collision MD5 et il est possible de générer intentionnellement 2 fichiers avec des sommes MD5 identiques.
Aucune collision SHA256 n'est connue, et à moins qu'il n'y ait une faiblesse sérieuse dans l'algorithme, il est extrêmement peu probable qu'on en trouve .
Pour vérifier qu'un fichier n'a pas été accidentellement corrompu, MD5 est probablement suffisant. S'il est possible qu'il ait été intentionnellement modifié, MD5 n'est pas sûr et vous devriez vous en tenir à SHA256.
MD5 crée un hachage 128 bits, tandis que SHA256 crée un hachage 256 bits.
On pourrait dire que le SHA256 est "deux fois plus sûr" que le MD5, mais le risque de collision aléatoire est vraiment négligeable dans les deux cas. Je dirais que MD5 offre une protection d'intégrité suffisante.
Il y a des attaques pour créer délibérément des collisions MD5, mais la probabilité de trouver une collision en cas d'accident est toujours déterminée par la taille du hachage, donc environ 2/2128.
Il n'y a actuellement pas deux fichiers distincts dans le monde qui ont le même hachage SHA256. Il existe des fichiers distincts qui ont le même hachage MD5, mais uniquement parce qu'ils ont été créés à dessein.
De nos jours, MD5 et SHA256 résistent à une attaque de pré-image.
Cela signifie qu'il serait presque impossible pour quelqu'un de remplacer le fichier par un autre avec le même hachage {MD5 | SHA256}.
Cependant, vous devez noter
Donc, si vous devez prendre une décision entre l'utilisation de MD5 et SHA256, optez pour SHA256 .
Si vous excluez la malveillance ou tout autre comportement intentionnel/conscient de MD5, MD5 va vraiment bien.
Il y a bien sûr une chance de collision accidentelle de MD5 et SHA256 les chances du SHA256 sont beaucoup plus faibles. Cependant, pour un certain contexte: les chances d'une collision accidentelle sur MD5 sont bien plus faibles que les chances que le drapeau de contrôle soit accidentellement renversé par un rayon comique, pour faites en sorte que les hachages soient identiques quand ils n'étaient pas voir ici , avec quelques mises en garde.
Si vous êtes intéressé par des entrées non aléatoires (comme la malveillance), SHA256 pourrait être un meilleur choix, mais cela dépend de ce que vous pensez que l'attaquant pourrait contrôler.
Si vous souhaitez simplement vous assurer que le système est résistant aux accidents, il existe de meilleurs endroits pour passer votre temps que l'algorithme de hachage que vous utilisez.