J'examine les algorithmes de hachage, mais je n'ai pas trouvé de réponse.
- Bcrypt utilise Blowfish
- Blowfish est meilleur que MD5
- Q: mais Blowfish est-il meilleur que SHA512?
Merci..
Mettre à jour:
Je tiens à préciser que je comprends la différence entre le hachage et le chiffrement. Ce qui m'a incité à poser la question de cette façon est cet article , où l'auteur se réfère à bcrypt comme "hachage adaptatif"
Puisque bcrypt est basé sur Blowfish, j'ai été amené à penser que Blowfish est un algorithme de hachage. Si c'est le cryptage comme l'ont indiqué les réponses, il me semble qu'il ne devrait pas avoir sa place dans cet article. Le pire, c'est qu'il conclut que bcrypt est le meilleur. Ce qui me déroute aussi maintenant, c'est que la classe phpass (utilisée pour le hachage de mot de passe, je crois) utilise bcrypt (c'est-à-dire blowfish, c'est-à-dire le cryptage). Sur la base de ces nouvelles informations que vous me dites (Blowfish est le cryptage), cette classe sonne mal. Suis-je en train de manquer quelque chose?
la source
bcrypt
a simplement un "facteur de travail" plus élevé par défaut. SHA est supposé ne pas ... sauf si vous utilisez passhash9, qui peut utiliser l'un ou l'autre avec un facteur de travail. pourquoi cette question est-elle close? c'est loin d'être répondu mais très important.Réponses:
Il devrait suffire 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 algorithme est suffisamment sécurisé pour qu'une brèche se produise à travers une faille d'implémentation, pas une cryptanalyse.
Si vous insistez pour savoir ce qui est "meilleur", SHA-512 a fait l'objet de critiques approfondies par le NIST et d'autres. C'est bien, mais des défauts ont été reconnus qui, bien qu'ils ne soient pas exploitables maintenant, ont conduit à la compétition SHA-3 pour de nouveaux algorithmes de hachage. Gardez également à l'esprit que l'étude des algorithmes de hachage est "plus récente" que celle des chiffrements et que les cryptographes en apprennent encore plus.
Même si bcrypt dans son ensemble n'a pas fait l'objet d'un examen aussi minutieux que Blowfish lui-même, je pense qu'être basé sur un chiffrement avec une structure bien comprise lui confère une sécurité inhérente qui fait défaut à l'authentification basée sur le hachage. De plus, il est plus facile d'utiliser des GPU courants comme outil pour attaquer les hachages basés sur SHA-2; en raison de ses besoins en mémoire, l'optimisation de bcrypt nécessite un matériel plus spécialisé comme FPGA avec une certaine mémoire RAM intégrée.
Remarque: bcrypt est un algorithme qui utilise Blowfish en interne. Ce n'est pas un algorithme de chiffrement lui-même. Il est utilisé pour masquer les mots de passe de manière irréversible, tout comme les fonctions de hachage sont utilisées pour effectuer un "hachage unidirectionnel".
Les algorithmes de hachage cryptographiques sont conçus pour être impossibles à inverser. En d'autres termes, étant donné uniquement la sortie d'une fonction de hachage, il devrait prendre "indéfiniment" pour trouver un message qui produira la même sortie de hachage. En fait, il devrait être impossible de trouver deux messages qui produisent la même valeur de hachage. Contrairement à un chiffre, 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 des mots de passe, il est authentifié. 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 crypter 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 à nouveau dérivée et si le texte chiffré produit par chiffrement avec cette clé correspond au texte chiffré stocké, l'utilisateur est authentifié. Le texte chiffré est stocké dans la table "mot de passe", mais la clé dérivée n'est jamais stockée.
Afin de casser la cryptographie ici, un attaquant devrait récupérer la clé du texte chiffré. C'est ce qu'on appelle une attaque en "texte en clair connu", car l'attaque connaît la chaîne magique qui a été chiffrée, mais pas la clé utilisée. Blowfish a été étudié de manière approfondie, et aucune attaque n'est encore connue qui permettrait à un attaquant de trouver la clé avec un seul texte en clair connu.
Ainsi, tout comme les digestions cryptographiques basées sur des algorithmes irréversibles, bcrypt produit une sortie irréversible, à partir d'un mot de passe, d'un sel et d'un facteur de coût. Sa force réside dans la résistance de Blowfish aux attaques connues en texte clair, qui est analogue à une "première attaque pré-image" sur un algorithme de résumé. Puisqu'il peut être utilisé à la place d'un algorithme de hachage pour protéger les mots de passe, bcrypt est désigné par confusion comme un algorithme de «hachage» lui-même.
En supposant que les tables arc-en-ciel ont été contrecarrées par une bonne utilisation du sel, toute fonction vraiment irréversible réduit l'attaquant à des essais et erreurs. Et la vitesse à laquelle l'attaquant peut effectuer 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 du résumé est «renvoyée» 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 des clés" en itérant à l'intérieur de sa routine de dérivation de clés, et une méthode basée sur le hachage appropriée 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 à la famille SHA-2 de fonctions de hachage, et 2) que les méthodes cryptanalytiques pour les chiffrements sont mieux développées que celles pour les fonctions de hachage.
la source
Je suis d'accord avec la réponse d'Erickson, avec une mise en garde: à des fins d'authentification par mot de passe, bcrypt est bien meilleur qu'une seule itération de SHA-512 - simplement parce qu'il est beaucoup plus lent. Si vous ne comprenez pas pourquoi la lenteur est un avantage dans ce jeu particulier, lisez à nouveau l'article auquel vous avez lié (faites défiler jusqu'à "La vitesse est exactement ce que vous ne voulez pas dans une fonction de hachage de mot de passe. ").
Vous pouvez bien sûr créer un algorithme de hachage de mot de passe sécurisé autour de SHA-512 en l'itérant des milliers de fois, tout comme le fonctionnement de l'algorithme MD5 de PHK. Ulrich Drepper a fait exactement cela , pour la crypte de glibc (). Cependant, il n'y a aucune raison particulière de le faire si vous disposez déjà d'une implémentation bcrypt testée.
la source
crypt
implémentations (y compris en PHP que j'utilise), lorsque j'ai lu la question d'origine, j'ai même supposé que c'était ce que l'OP voulait dire quand il a posé des questions sur SHA-512 - qu'il faisait en fait référence à des milliers de tours de SHA-512 contre bcrypt qui utilise lui-même des centaines ou des milliers d'itérations.Blowfish n'est pas un algorithme de hachage. C'est un algorithme de cryptage. Cela signifie que vous pouvez crypter quelque chose à l'aide de Blowfish, puis que vous pouvez le décrypter en texte brut.
SHA512 est un algorithme de hachage. Cela signifie que (en théorie) une fois que vous avez haché l'entrée, vous ne pouvez plus récupérer l'entrée d'origine.
Ce sont 2 choses différentes, conçues pour être utilisées pour différentes tâches. Il n'y a pas de réponse «correcte» à «le Blowfish est-il meilleur que SHA512? Vous pourriez tout aussi bien demander "les pommes sont-elles meilleures que les kangourous?"
Si vous souhaitez en savoir plus sur le sujet, voici quelques liens:
la source
bcrypt
), il est utilisé comme algorithme de hachage en dérivant une clé de la chaîne source et en l'utilisant pour crypter un nombre magique. Cela le rend irréversible, essentiellement une fonction de hachage. Vous ne pouvez pas calculer la clé à partir d'un chiffre, même si vous connaissez le texte en clair et les données chiffrées.Blowfish n'est pas meilleur que MD5 ou SHA512, car ils servent à des fins différentes. MD5 et SHA512 sont des algorithmes de hachage, Blowfish est un algorithme de chiffrement. Deux fonctions cryptographiques entièrement différentes.
la source
Je recommanderais l'implémentation de cryptage basée sur SHA-256 / SHA-512 d'Ulrich Drepper.
Nous avons porté ces algorithmes sur Java, et vous pouvez en trouver une version sous licence gratuite sur ftp://ftp.arlut.utexas.edu/java_hashes/ .
Notez que la plupart des Unices (L) modernes prennent en charge l'algorithme de Drepper dans leurs fichiers / etc / shadow.
la source
Je viens de rencontrer ça:
http://codahale.com/how-to-safely-store-a-password/
L'auteur de cet article peut-il se tromper?
la source