SHA512 contre Blowfish et Bcrypt [fermé]

je regarde des algorithmes de hachage, mais je n'ai pas trouvé de réponse.

  • Bcrypt utilise Blowfish
  • Blowfish est mieux que MD5
  • Q: mais le poisson-lune est-il meilleur que le SHA512?

Merci..

mise à jour:

je tiens à préciser que je comprends la différence entre le hachage et le cryptage. Ce qui vous a incité me poser la question de cette façon est 1519170920" cet article , où l'auteur se réfère à bcrypt comme adaptatives "hachage"

comme bcrypt est basé sur Blowfish, j'ai été amené à penser que Blowfish est un algorithme de hachage. Si c'est le cryptage comme les réponses l'ont souligné, alors il me semble qu'il ne devrait pas avoir de place dans cet article. Le pire, c'est qu'il conclut que bcrypt est le meilleur. Ce qui me trouble aussi maintenant, c'est que le la classe phpass (utilisée pour le hachage de mot de passe je crois) utilise bcrypt (i.e. blowfish, i.e. encryption). Sur la base de cette nouvelle info que vous me dites (blowfish est cryptage), cette classe sonne faux. Ai-je raté quelque chose?

208
demandé sur Peter Vandivier 2009-10-13 19:56:19

6 réponses

il suffit de dire si bcrypt ou SHA-512 (dans le contexte D'un algorithme approprié comme PBKDF2) est assez bon . Et la réponse est oui, l'un ou l'autre des algorithmes est suffisamment sûr qu'une brèche se produira par un défaut d'implémentation, pas par la cryptanalyse.

si vous insistez pour savoir ce qui est" meilleur", SHA-512 a fait l'objet de critiques approfondies de la part du NIST et d'autres. Il est bon, mais les défauts ont été reconnus que, bien que pas exploitable maintenant, ont conduit à la compétition SHA-3 pour de nouveaux algorithmes de hachage. En outre, gardez à l'esprit que l'étude des algorithmes de hachage est "plus récente" que celle des chiffreurs, et les cryptographes sont encore en apprentissage à leur sujet.

même si bcrypt dans son ensemble n'a pas eu autant d'attention que Blowfish lui-même, je crois qu'être basé sur un cryptogramme avec une structure bien comprise lui donne une certaine sécurité inhérente que l'authentification basée sur le hash manque. De plus, il est plus facile d'utiliser les GPU courants comme outil pour attaquer les hachages basés sur SHA-2; en raison de ses exigences de mémoire, l'optimisation de bcrypt nécessite un matériel plus spécialisé comme la FPGA avec un peu de RAM embarquée.


Note: bcrypt est un algorithme qui utilise Blowfish à l'interne. Ce n'est pas un algorithme de cryptage en soi. Il est utilisé pour obscurcir de façon irréversible les mots de passe, tout comme les fonctions de hachage sont utilisées pour faire un "hachage à Sens Unique".

les algorithmes de hachage cryptographique sont conçus pour être impossibles inverser. En d'autres termes, la sortie d'une fonction de hachage, il devrait prendre "pour toujours" de trouver un message qui va produire le même hachage de sortie. En fait, il devrait être mathématiquement impossible de trouver deux messages qui produisent la même valeur de hachage. Contrairement à un chiffrement, les fonctions de hachage ne sont pas paramétrées avec une clé; la même entrée produira toujours la même sortie.

si quelqu'un fournit un mot de passe qui hache à la valeur stockée dans la table de mot de passe, ils sont authentifiés. En particulier, en raison de l'irréversibilité de la fonction de hachage, il est supposé que l'utilisateur n'est pas un attaquant qui s'est emparé du hachage et l'a inversé pour trouver un mot de passe de travail.

considérez maintenant bcrypt. Il utilise Blowfish pour chiffrer une chaîne magique, en utilisant une clé "dérivée" du mot de passe. Plus tard, lorsqu'un utilisateur entre un mot de passe, la clé est dérivée à nouveau, et si le cryptogramme produit en cryptant avec cette clé correspond au cryptogramme stocké, l'utilisateur est authentifié. Le cryptogramme est stocké dans la table" password", mais la clé dérivée n'est jamais stockée.

pour casser la cryptographie ici, un attaquant devrait récupérer la clé du cryptogramme. C'est ce qu'on appelle une attaque "known-plaintext", puisque l'attaque connaît la chaîne magique qui a été cryptée, mais pas la clé utilisée. Blowfish a été étudié en profondeur, et aucune attaque n'est encore connu qui permettrait à un attaquant de trouver la clé avec un seul connu en clair.

donc, tout comme les algorithmes irréversibles basés sur des digestes cryptographiques, bcrypt produit une sortie irréversible, à partir d'un mot de passe, du sel, et du facteur de coût. Sa force réside dans la résistance de Blowfish aux attaques en clair, qui est analogue à une "première attaque pré-image" sur un algorithme de digest. Comme il peut être utilisé à la place d'un algorithme de hachage pour protéger les mots de passe, bcrypt est confusément appelé un algorithme de "hachage" lui-même.

en supposant que les tables arc-en-ciel ont été contrecarrées par l'utilisation correcte du sel, toute fonction vraiment irréversible réduit l'attaquant à l'essai-et-erreur. Et la vitesse à laquelle l'attaquant peut faire des essais est déterminée par la vitesse de cet algorithme de "hachage" irréversible. Si une seule itération d'une fonction de hachage est utilisée, un attaquant peut faire des millions d'essais par seconde en utilisant un équipement qui coûte de l'ordre de 1000$, testant tous les mots de passe jusqu'à 8 caractères en quelques mois.

si toutefois, la sortie digest est" fed back " des milliers de fois, il faudra des centaines d'années pour tester le même ensemble de mots de passe sur ce matériel. Bcrypt obtient le même effet de" renforcement de clé " en itérant à l'intérieur de sa routine de dérivation de clé, et une méthode basée sur le hash comme PBKDF2 fait la même chose; à cet égard, les deux méthodes sont similaires.

Donc, ma recommandation de bcrypt découle des hypothèses 1) qu'un Blowfish a eu un niveau d'examen similaire à celui de la famille SHA-2 des fonctions de hachage, et 2) que les méthodes de cryptanalyse pour les chiffreurs sont mieux développées que celles pour les fonctions de hachage.

306
répondu erickson 2013-12-23 17:29:50

je suis d'accord avec la réponse d'erickson, avec une mise en garde: pour l'authentification par mot de passe, bcrypt est far mieux qu'une itération simple de SHA-512 - simplement parce qu'il est beaucoup plus lent. Si vous ne comprenez pas pourquoi slowness est un avantage dans ce jeu particulier, lisez l'article que vous avez lié à nouveau (faites défiler vers le bas à " vitesse est exactement ce que vous ne voulez pas dans une fonction de hachage de mot de passe. ").

You peut bien sûr construire un algorithme de hachage de mot de passe sécurisé autour de SHA-512 en l'itérant des milliers de fois, tout comme L'algorithme MD5 de PHK fonctionne. Ulrich Drepper a fait exactement cela , pour la crypte de glibc(). Il n'y a pas de raison particulière de faire cela, cependant, si vous avez déjà une implémentation bcrypt testée disponible.

47
répondu caf 2009-10-13 23:12:45

Blowfish n'est pas un algorithme de hachage. C'est un algorithme de chiffrement. Ce que cela signifie est que vous pouvez crypter quelque chose en utilisant blowfish, et plus tard, vous pouvez le décrypter à nouveau au texte simple.

SHA512 est un algorithme de hachage. Cela signifie que (en théorie) une fois que vous Hachez l'input, vous ne pouvez pas récupérer l'input original.

ce sont deux choses différentes, conçues pour être utilisées pour des tâches différentes. Il n'y a pas de "bonne" réponse à " blowfish is better than SHA512?" autant demander " les pommes sont-elles meilleures que les kangourous?"

si vous voulez en savoir plus sur le sujet, voici quelques liens:

31
répondu Glen 2016-03-17 05:58:53

Blowfish n'est pas mieux que MD5 ou SHA512, car ils servent des buts différents. MD5 et SHA512 sont des algorithmes de hachage, Blowfish est un algorithme de cryptage. Deux fonctions cryptographiques totalement différentes.

4
répondu blowdart 2009-10-13 16:06:35

je recommande L'implémentation de crypt SHA-256/SHA-512 basée sur Ulrich Drepper.

nous avons porté ces algorithmes en Java, et vous pouvez en trouver une version sous licence libre à ftp://ftp.arlut.utexas.edu/java_hashes / .

notez que la plupart des Unices modernes (L)supportent L'algorithme de Drepper dans leurs fichiers /etc/shadow.

2
répondu Jonathan Abbey 2010-03-18 18:07:18

je viens de tomber sur ceci:

http://codahale.com/how-to-safely-store-a-password /

l'auteur de cet article s'être trompé?

2
répondu disappearedng 2010-12-13 18:15:33