web-dev-qa-db-fra.com

Raisons pour lesquelles SHA512 est supérieur à MD5

Je me demandais si je pouvais des raisons ou des liens vers des ressources expliquant pourquoi SHA512 est un algorithme de hachage supérieur à MD5.

28
Lee Warner

Cela dépend de votre cas d'utilisation. Vous ne pouvez pas revendiquer de manière générale la "supériorité". (Je veux dire, oui vous pouvez, dans certains cas, mais pour être strict à ce sujet, vous ne pouvez pas vraiment).

Mais il y a des domaines où MD5 a été cassé:

  1. Pour commencer: MD5 est ancien et commun. Il y a des tonnes de tables Rainbow contre elle, et elles sont faciles à trouver. Donc, si vous hachez des mots de passe (sans sel - honte à vous!) - en utilisant md5 - vous pourriez aussi bien ne pas les hacher, ils sont si faciles à trouver. Même si vous hachez vraiment avec des sels simples.
  2. Deuxièmement, MD5 n'est plus sécurisé en tant que fonction de hachage cryptographique (en fait, il n'est même plus considéré comme une fonction de hachage cryptographique comme le souligne Forked One). Vous pouvez générer différents messages qui ont la même valeur. Donc, si vous avez un certificat SSL avec un hachage MD5, je peux générer un certificat en double qui dit ce que je veux, qui produit le même hachage . C'est généralement ce que les gens veulent dire quand ils disent que MD5 est "cassé" - des choses comme ça.
  3. Troisièmement, comme pour les messages, vous pouvez également générer différents fichiers ce hachage à la même valeur donc en utilisant MD5 comme somme de contrôle de fichier est cassé'.

Maintenant, SHA-512 est un algorithme de hachage Famille SHA-2 . SHA-1 est un peu considéré comme "eh" ces jours-ci, je vais l'ignorer. Cependant, SHA-2 a relativement peu d'attaques contre lui. Le principal dont parle wikipedia est ne attaque de pré-image à cycle réduit ce qui signifie que si vous utilisez SHA-512 d'une manière horriblement incorrecte, je peux le casser. Évidemment, vous ne l'utiliserez probablement pas de cette façon, mais les attaques ne font que s'améliorer, et c'est un bon tremplin vers plus de recherche pour briser SHA-512 de la même manière que MD5 est brisé.

Cependant, parmi toutes les fonctions de hachage disponibles, la famille SHA-2 est actuellement parmi les plus solides et le meilleur choix compte tenu de la banalité, de l'analyse et de la sécurité. (Mais pas nécessairement de la vitesse. Si vous êtes dans des systèmes embarqués, vous devez effectuer une toute autre analyse.)

61
Tom Ritter

MD5 est crypté depuis un certain temps déjà. Cela signifie essentiellement que certaines des propriétés généralement garanties par les algorithmes de hachage ne sont plus valables. Par exemple, il est possible de trouver des collisions de hachage en beaucoup moins de temps que ce qui est potentiellement nécessaire pour la longueur de sortie.

SHA-512 (une de la famille de fonctions de hachage SHA-2) est, pour l'instant, suffisamment sécurisé mais peut-être pas beaucoup plus longtemps dans un avenir prévisible. C'est pourquoi le NIST a lancé un concours pour SHA-3.

Généralement, vous voulez que les algorithmes de hachage soient des fonctions nidirectionnelles. Ils mappent une entrée à une sortie. Habituellement, la sortie est d'une longueur fixe, fournissant ainsi un "résumé" de l'entrée d'origine. Les propriétés communes sont par exemple que de petits changements dans l'entrée produisent de grands changements dans la sortie (ce qui aide à détecter les altérations) et que la fonction n'est pas facilement réversible. Pour cette dernière propriété, la longueur de la sortie est très utile car elle fournit une limite supérieure théorique pour la complexité d'une attaque par collision. Cependant, les failles de conception ou de mise en œuvre entraînent souvent une complexité réduite des attaques. Une fois que ceux-ci sont connus, il est temps d'évaluer si vous utilisez toujours une fonction de hachage. Si la complexité de l'attaque diminue suffisamment, les attaques pratiques pénètrent facilement dans la portée de personnes sans équipement informatique spécialisé.

Remarque: je n'ai parlé que d'un type d'attaque ici. La réalité est bien plus nuancée mais aussi beaucoup plus difficile à saisir. Puisque les fonctions de hachage sont très couramment utilisées pour vérifier l'intégrité des fichiers/messages, la collision est probablement la plus simple à comprendre et à suivre.

10
Joey

Il y a quelques points qui ne sont pas abordés ici, et je pense que c'est d'un manque de compréhension de ce qu'est un hachage, de son fonctionnement et du temps qu'il faut pour l'attaquer avec succès, en utilisant Rainbow ou toute autre méthode actuellement connue. homme...

Mathématiquement parlant, MD5 n'est pas "cassé" si vous salez les tentatives de hachage et d'accélérateur (même par 1 seconde), votre sécurité serait tout aussi "cassée" que par un attaquant qui se précipite lentement sur votre mur en acier solide d'un pied avec un cuillère en bois:

Cela prendra des milliers d'années, et d'ici là toutes les personnes impliquées seront mortes; il y a des choses plus importantes à craindre.

Si vous verrouillez leur compte à la 20e tentative ... problème résolu. 20 coups sur votre mur = 0.0000000001% de chances qu'ils passent. Il y a littéralement une meilleure chance statistique que vous soyez en fait Jésus.

You're thinking about it wrong.

Il est également important de noter qu'absolument toute fonction de hachage va être vulnérable aux collisions en vertu de ce qu'est un hachage: "un (petit) identifiant unique de quelque chose d'autre".

Lorsque vous augmentez l'espace de bits, vous diminuez les taux de collision, mais vous augmentez également la taille de l'id et le temps qu'il faut pour le calculer.

Faisons une petite expérience de pensée ...

SHA-2, s'il existait, aurait 4 identifiants uniques possibles au total pour autre chose ... 00, 01, 10 & 11. Il produira des collisions, évidemment. Voyez-vous le problème ici? Un hachage n'est qu'un identifiant généré de ce que vous essayez d'identifier.

MD5 est en fait vraiment, vraiment bon pour choisir au hasard un nombre basé sur une entrée. SHA n'est en fait pas tellement meilleur; SHA a juste énormément plus d'espace pour les identifiants.

La méthode utilisée représente environ 0,1% de la raison pour laquelle les collisions sont moins probables. La vraie raison est le plus grand espace de bits.

C'est littéralement la seule raison pour laquelle SHA-256 et SHA-512 sont moins vulnérables aux collisions; car ils utilisent un espace plus grand pour un identifiant unique.

Les méthodes actuelles que SHA-256 et SHA-512 utilisent pour générer le hachage sont en fait meilleures, mais pas de beaucoup; les mêmes attaques Rainbow fonctionneraient sur eux s'ils avaient moins de bits dans leurs identifiants, et les fichiers et même les mots de passe peuvent avoir des identifiants identiques en utilisant SHA-256 et SHA-512, c'est juste beaucoup moins probable car il utilise plus de bits.

Le VRAI PROBLÈME est la façon dont vous implémentez votre sécurité

Si vous autorisez les attaques automatisées à atteindre votre point de terminaison d'authentification 1 000 fois par seconde, vous allez être forcé. Si vous accélérez à 1 tentative toutes les 3 secondes et verrouillez le compte pendant 24 heures après la 10e tentative, vous n'êtes pas.

Si vous stockez les mots de passe sans sel (un sel n'est qu'un secret ajouté au générateur, ce qui rend plus difficile l'identification de mauvais mots de passe comme "31337" ou "password") et que vous avez beaucoup d'utilisateurs, vous allez être piraté. Si vous les salez, même si vous utilisez MD5, vous ne l'êtes pas.

Considérant que MD5 utilise 128 bits (32 octets en HEX, 16 octets en binaire), et SHA 512 n'est que 4x l'espace mais élimine virtuellement le rapport de collision en vous donnant 2 ^ 384 identifiants supplémentaires possibles. .. Allez avec SHA-512, à chaque fois.

Mais si vous vous inquiétez de ce qui va vraiment se passer si vous utilisez MD5, et que vous ne comprenez pas les différences réelles, vous allez probablement toujours être piraté, est-ce logique?

3
Nick Steele

lisant ceci

Cependant, il a été démontré que MD5 n'est pas résistant aux collisions

plus d'informations sur la collision ici

2
Fredou

MD5 a un risque de collision ( http://www.mscs.dal.ca/~selinger/md5collision/ ) et il existe de nombreuses tables MD5 Rainbow pour la recherche inversée de mots de passe sur le Web et disponibles à télécharger.

1
Joshua

Il a besoin d'un dictionnaire beaucoup plus volumineux pour mapper vers l'arrière et a moins de chances de collision.

0

C'est simple, MD5 est cassé;) (voir Wikipedia )

Bruce Schneier a écrit à propos de l'attaque que "[nous savions déjà que MD5 est une fonction de hachage cassée" et que "personne ne devrait plus utiliser MD5".

0
Felix Kling