web-dev-qa-db-fra.com

SHA-256 ou MD5 pour l'intégrité des fichiers

Je sais que SHA-256 est préféré à MD5 pour la sécurité, etc., mais si je dois utiliser une méthode pour vérifier uniquement l'intégrité du fichier (c'est-à-dire, rien à voir avec le cryptage de mot de passe, etc.) en utilisant SHA-256?

Puisque MD5 est de 128 bits et SHA-256 de 256 bits (donc deux fois plus gros) ...

  1. Le cryptage prend-il deux fois plus de temps?

  2. Lorsque le temps ne vous manque pas, comme dans un programme de sauvegarde, et que l'intégrité du fichier est tout ce dont vous avez besoin, est-ce que quelqu'un pourrait s'opposer à MD5 pour un algorithme différent ou même suggérer une technique différente?

  3. L'utilisation de MD5 génère-t-elle une somme de contrôle?

51
Dave

SHA256 et MDA5 sont tous deux des algorithmes de hachage. Ils prennent vos données d'entrée, dans ce cas votre fichier, et génèrent un nombre de 256/128 bits. Ce nombre est une somme de contrôle. Il n'y a pas de cryptage car un nombre infini d'entrées peut donner la même valeur de hachage, bien qu'en réalité les collisions soient rares.

SHA256 prend un peu plus de temps à calculer que MD5, selon cette réponse

De prime abord, je dirais que le MD5 conviendrait probablement à vos besoins.

57
dandan78

Pour 1): Oui, sur la plupart des processeurs, SHA-256 n’est que 40% plus rapide que MD5.

Pour 2): Je plaiderais pour un algorithme différent de MD5 dans un tel cas. Je préférerais définitivement un algorithme considéré comme sûr. Cependant, c'est plus un sentiment. Les cas où cela importerait seraient plutôt construits que réalistes, par exemple Si votre système de sauvegarde rencontre un exemple d'attaque sur un certificat basé sur MD5, vous aurez probablement deux fichiers dans un tel exemple avec des données différentes, mais des sommes de contrôle MD5 identiques. Peu importe le reste des cas, peu importe, car les sommes de contrôle MD5 ont une collision (= les mêmes sommes de contrôle pour des données différentes) pratiquement uniquement lorsqu'elles sont provoquées intentionnellement ... Je ne suis pas un expert en hachage (génération de sommes de contrôle) algorithmes, donc je ne peux pas suggérer un autre algorithme. Par conséquent, cette partie de la question est toujours ouverte… .. La lecture suggérée est la suivante: Fonction de hachage cryptographique - Identificateur de fichier ou de données sur Wikipedia. Également en bas de cette page se trouve une liste d’algorithmes de hachage cryptographiques.

Pour 3): MD5 est un algorithme permettant de calculer des sommes de contrôle. Une somme de contrôle calculée à l'aide de cet algorithme s'appelle alors une somme de contrôle MD5.

13
Daniel S.

Chaque réponse semble suggérer que vous devez utiliser des hachages sécurisés pour faire le travail, mais ils sont tous trop lents pour forcer un attaquant brutal-force à disposer de beaucoup de puissance de calcul et selon vos besoins, cela peut ne pas être la meilleure solution.

Il existe des algorithmes spécialement conçus pour hacher les fichiers aussi rapidement que possible afin de vérifier l'intégrité et la comparaison (murmur, XXhash...). Évidemment, ils ne sont pas conçus pour la sécurité car ils ne répondent pas aux exigences d’un algorithme de hachage sécurisé (c’est-à-dire du caractère aléatoire), mais ont un faible taux de collision pour les gros messages. Cela les rend idéales si vous ne recherchez pas la sécurité mais la vitesse.

Des exemples de ces algorithmes et de la comparaison peuvent être trouvés dans cette excellente réponse: Quel algorithme de hachage est le meilleur pour l'unicité et la vitesse? .

Par exemple, sur notre site de questions-réponses, nous utilisons murmur3 pour hacher les images téléchargées par les utilisateurs. Nous ne les stockons donc qu'une seule fois, même si les utilisateurs téléchargent la même image dans plusieurs réponses.

9
Marc Climent
  1. Non, c'est moins rapide mais pas si lent
  2. Pour un programme de sauvegarde, il est peut-être nécessaire d’obtenir une solution encore plus rapide que MD5.

Dans l'ensemble, je dirais que MD5, en plus du nom de fichier, est absolument sans danger. SHA-256 serait simplement plus lent et plus difficile à manipuler à cause de sa taille.

Vous pouvez également utiliser quelque chose de moins sécurisé que MD5 sans aucun problème. Si personne ne tente de pirater l’intégrité de votre fichier, cela ne présente aucun risque.

8
Genesis Rock

L'algorithme MD5 sous-jacent n'est plus considéré comme sécurisé. Par conséquent, bien que md5sum soit parfaitement adapté à l'identification de fichiers connus dans des situations non liées à la sécurité, il ne doit pas être utilisé s'il est possible que des fichiers aient été falsifiés de manière intentionnelle et malveillante. Dans ce dernier cas, l'utilisation d'un outil de hachage plus récent, tel que sha256sum, est fortement recommandée.

Donc, si vous cherchez simplement à vérifier la corruption ou les différences de fichiers, lorsque la source du fichier est approuvée, MD5 devrait suffire. Si vous souhaitez vérifier l'intégrité d'un fichier provenant d'une source non approuvée ou d'une source fiable sur une connexion non chiffrée, MD5 ne suffit pas.

Un autre intervenant a noté qu'Ubuntu et d'autres utilisent les sommes de contrôle MD5. Ubuntu a migré vers PGP et SHA256, en plus de MD5, mais la documentation des stratégies de vérification plus strictes est plus difficile à trouver. Voir la page HowToSHA256SUM pour plus de détails.

6
jsears

Il est techniquement admis que MD5 est plus rapide que SHA256. Il suffit donc de vérifier l’intégrité des fichiers pour qu’il soit suffisant et plus performant.

Vous pouvez accéder aux ressources suivantes:

4
SaidbakR
  1. Oui, sur la plupart des processeurs, SHA-256 est deux à trois fois plus lent que MD5, mais pas principalement à cause de son hash plus long. Voir les autres réponses ici et les réponses à ces questions Stack Overflow .
  2. Voici un scénario de sauvegarde dans lequel MD5 ne serait pas approprié:
    • Votre programme de sauvegarde hache chaque fichier en cours de sauvegarde. Il enregistre ensuite Les données de chaque fichier par leur hachage. Ainsi, si vous sauvegardez le même fichier Deux fois, vous n’en obtenez qu’une copie.
    • Un attaquant peut amener le système à sauvegarder les fichiers qu'il contrôle.
    • L’attaquant connaît le hachage MD5 d’un fichier qu’il souhaite supprimer de la sauvegarde
    • L'attaquant peut alors utiliser les faiblesses connues de MD5 pour créer un nouveau fichier Ayant le même hachage que le fichier à supprimer. Lorsque ce fichier est sauvegardé, il remplacera le fichier à supprimer et ce fichier sera sauvegardé. Les données seront perdues.
    • Ce système de sauvegarde pourrait être un peu renforcé (et rendu plus efficace) En ne remplaçant pas les fichiers dont le hachage avait déjà été rencontré, mais un attaquant pourrait alors empêcher un fichier cible contenant un hachage connu de .__ d'être sauvegardé en sauvegardant préventivement un fichier spécialement construit avec le même hachage.
    • Évidemment, la plupart des systèmes, qu'ils soient sauvegardés ou non, ne remplissent pas les conditions nécessaires pour que cette attaque soit pratique, mais je voulais simplement. Donner un exemple d'une situation dans laquelle SHA-256 serait préférable à MD5 . Que ce soit le cas ou non pour le système que vous créez Dépend non seulement des caractéristiques de MD5 et de SHA-256.
  3. Oui, les hachages cryptographiques comme ceux générés par MD5 et SHA-256 constituent un type de somme de contrôle.

Heureux hachage!

0
dharcourt