Il devrait suffire de dire si bcrypt ou SHA-512 (dans le contexte d'un algorithme approprié comme PBKDF2) est suffisant . Et la réponse est oui, l'un ou l'autre des algorithmes est suffisamment sûr pour qu'une violation se produise par un défaut de mise en œuvre, et non par cryptanalyse.
Si vous tenez à savoir lequel est le "meilleur", SHA-512 a fait l'objet d'examens approfondis par le NIST et d'autres organismes. Il est bon, mais des failles ont été reconnues qui, bien qu'elles ne soient pas exploitables actuellement, ont conduit à la concurrence de SHA-3 pour les nouveaux algorithmes de hachage. Il faut également garder à l'esprit que l'étude des algorithmes de hachage est plus récente que celle des algorithmes de chiffrement et que les cryptographes sont encore en train de les découvrir.
Même si bcrypt dans son ensemble n'a pas fait l'objet d'autant d'examens que Blowfish lui-même, je pense que le fait d'être basé sur un chiffre dont la structure est bien comprise lui confère une sécurité inhérente qui fait défaut à l'authentification par hachage. De plus, il est plus facile d'utiliser des GPU courants pour attaquer les hachages basés sur SHA-2 ; en raison de ses besoins en mémoire, l'optimisation de bcrypt nécessite du matériel plus spécialisé, comme des FPGA avec de la RAM intégrée.
Remarque : bcrypt est un algorithme qui utilise Blowfish en interne. Il ne s'agit pas d'un algorithme de chiffrement en soi. Il est utilisé pour obscurcir de manière 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, étant donné uniquement la sortie d'une fonction de hachage, il devrait être impossible de trouver un message qui produise la même sortie de hachage. En fait, il devrait être infaisable sur le plan informatique 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 par une clé ; la même entrée produira toujours la même sortie.
Si une personne fournit un mot de passe qui correspond à la valeur stockée dans la table des mots de passe, elle est authentifiée. En particulier, en raison de l'irréversibilité de la fonction de hachage, on suppose que l'utilisateur n'est pas un attaquant qui a mis la main sur le hachage et l'a inversé pour trouver un mot de passe fonctionnel.
Considérons 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 saisit un mot de passe, la clé est à nouveau dérivée, et si le texte chiffré produit par le chiffrement avec cette clé correspond au texte chiffré stocké, l'utilisateur est authentifié. Le texte chiffré 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é à partir du texte chiffré. C'est ce qu'on appelle une attaque par "texte chiffré connu", puisque l'attaquant connaît la chaîne magique qui a été chiffrée, mais pas la clé utilisée. Blowfish a fait l'objet d'études approfondies 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 digests cryptographiques basés sur des algorithmes irréversibles, bcrypt produit un résultat 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 en texte en clair connues, ce qui est analogue à une "attaque de première préimage" sur un algorithme de condensé. Puisqu'il peut être utilisé à la place d'un algorithme de hachage pour protéger les mots de passe, bcrypt est confusément désigné comme un algorithme de "hachage" lui-même.
En supposant que les tables arc-en-ciel aient été déjouées par une utilisation appropriée du sel, toute fonction réellement irréversible réduit l'attaquant à l'essai et à l'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.
Cependant, si la sortie du condensé est "réinjecté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 réalise le même effet de "renforcement de la clé" en itérant à l'intérieur de sa routine de dérivation de la clé, et une méthode appropriée basée sur le hachage comme PBKDF2 fait la même chose ; à cet égard, les deux méthodes sont similaires.
Ainsi, ma recommandation de bcrypt repose sur les hypothèses suivantes : 1) un Blowfish a fait l'objet d'un niveau d'examen similaire à celui de la famille de fonctions de hachage SHA-2, et 2) les méthodes de cryptanalyse pour les chiffres sont mieux développées que celles pour les fonctions de hachage.
2 votes
Ce n'est pas faux ; voir les mises à jour de ma réponse pour une explication du fonctionnement de bcrypt et pourquoi il sert le même objectif qu'un algorithme à sens unique basé sur le hachage.
3 votes
bcrypt
a simplement un "facteur de travail" plus élevé par défaut. SHA est supposé ne pas le faire... à moins que vous n'utilisiez passhash9, qui peut utiliser l'un ou l'autre avec un facteur de travail. pourquoi cette question est-elle fermée ? elle est loin d'être résolue et pourtant très importante.1 votes
Le lien en question est down...............