Quel est actuellement l’algorithme de cryptage unidirectionnel le plus sécurisé?

Comme beaucoup le savent, le chiffrement unidirectionnel est un moyen pratique de chiffrer les mots de passe des utilisateurs dans les bases de données. De cette manière, même l’administrateur de la firebase database ne peut pas connaître le mot de passe d’un utilisateur, mais doit le deviner, le chiffrer avec le même algorithme, puis comparer le résultat avec le mot de passe chiffré de la firebase database. Cela signifie que le processus de détermination du mot de passe requirejs des quantités massives de suppositions et beaucoup de puissance de traitement.

Voyant que les ordinateurs ne cessent de s’accélérer et que les mathématiciens continuent à développer ces algorithmes, je me demande lequel est le plus sûr compte tenu de la puissance de calcul et des techniques de chiffrement modernes.

J’utilise MD5 presque exclusivement depuis des années et je me demande s’il y a quelque chose de plus à faire. Devrais-je envisager un algorithme différent?

Une autre question connexe: combien de temps un champ doit-il normalement contenir un tel mot de passe crypté? Je dois admettre que je ne connais pratiquement rien au cryptage, mais je suppose qu’un hachage MD5 (par exemple) peut être plus long et nécessiterait probablement plus de puissance de traitement pour se fissurer. Ou la longueur du champ n’a-t-elle pas d’importance, à condition que le mot de passe crypté y soit inséré en premier lieu?

Attention: depuis que cette publication a été écrite en 2010, les GPU ont été largement déployés sur les hachages de mots de passe brute-force. Les GPU à prix modéré peuvent fonctionner dix milliards de MD5 par seconde. Cela signifie que même un mot de passe alphanumérique de 8 caractères complètement aléatoire (62 caractères possibles) peut être forcé en 6 heures. SHA-1 n’est que légèrement plus lent, cela prendrait un jour. Les mots de passe de votre utilisateur sont beaucoup plus faibles et (même avec le salage) vont tomber à un taux de milliers de mots de passe par seconde. Les fonctions de hachage sont conçues pour être rapides . Vous ne voulez pas cela pour les mots de passe. Utilisez scrypt, bcrypt ou PBKDF-2.

MD5 était faible en 1996 et ne devrait plus être utilisé à des fins de cryptographie. SHA-1 est un remplacement couramment utilisé, mais présente des problèmes similaires . La famille de fonctions de hachage SHA-2 est le remplacement actuel de SHA-1. Les membres de SHA-2 sont individuellement appelés SHA-224, SHA-256, SHA-384 et SHA-512.

Pour le moment, plusieurs fonctions de hachage sont en compétition pour devenir SHA-3 , le prochain algorithme de hachage cryptographique normalisé. Un gagnant sera choisi en 2012. Aucun de ceux-ci ne devrait être utilisé pour le moment!

Pour le hachage de mot de passe , vous pouvez également envisager d’utiliser quelque chose comme bcrypt . Il est conçu pour être suffisamment lent pour rendre les attaques en force brute à grande échelle irréalisables. Vous pouvez régler la lenteur vous-même afin de la ralentir lorsque les ordinateurs deviennent plus rapides.

Attention: bcrypt est basé sur un ancien algorithme de chiffrement bidirectionnel, Blowfish, pour lequel il existe aujourd’hui de meilleures alternatives. Je ne pense pas que les propriétés de hachage cryptographiques de bcrypt soient complètement comsockets. Quelqu’un me corrige si je me trompe; Je n’ai jamais trouvé une source fiable qui traite des propriétés de bcrypt (autres que sa lenteur) d’un sharepoint vue cryptographique.

Il peut être quelque peu rassurant que le risque de collision soit moins important pour le hachage de mot de passe que pour la cryptographie à clé publique ou les signatures numériques. L’utilisation de MD5 aujourd’hui est une idée terrible pour SSL, mais pas aussi désastreuse pour le hachage de mot de passe. Mais si vous avez le choix, choisissez-en un plus fort.

Utiliser une bonne fonction de hachage ne suffit pas pour sécuriser vos mots de passe. Vous devez hacher les mots de passe avec des sels longs et aléatoires sur le plan cryptographique . Vous devriez également aider vos utilisateurs à choisir des mots de passe plus forts ou des mots de passe si possible. Plus longtemps, c’est toujours mieux.

Bonne question! Cette page est une bonne lecture. En particulier, l’auteur affirme que MD5 n’est pas approprié pour hacher des mots de passe:

Le problème est que MD5 est rapide. Ainsi sont ses concurrents modernes, comme SHA1 et SHA256. La vitesse est un objective de conception d’un hachage sécurisé moderne, car les hachages sont un bloc de construction de presque tous les systèmes cryptographiques et sont généralement exécutés à la demande par paquet ou par message.

La vitesse est exactement ce que vous ne voulez pas dans une fonction de hachage de mot de passe.

L’article poursuit en expliquant quelques alternatives, et recommande Bcrypt comme “choix correct” (ses mots, pas les miens).

Disclaimer: Je n’ai pas du tout essayé Bcrypt. Considérez ceci comme une recommandation amicale mais pas quelque chose que je peux sauvegarder avec ma propre expérience technique.

Pour augmenter la force du mot de passe, vous devez utiliser une plus grande variété de symboles. Si vous avez 8-10 caractères dans le mot de passe, il devient difficile de craquer. Bien que le rendre plus long le rendra plus sûr, seulement si vous utilisez des caractères numériques / alphabétiques / autres.

SHA1 est un autre algorithme de hachage (chiffrement unidirectionnel), il est plus lent, mais sa durée est plus longue. (message codé) (160 bits) où MD5 ne dispose que de 128 bits.

Alors SHA2 est encore plus sécurisé, mais moins utilisé.

saluer le mot de passe est toujours un niveau de défense supplémentaire

$salt = 'asfasdfasdf0a8sdflkjasdfapsdufp'; $hashed = md5( $userPassword . $salt ); 

Voyant que les ordinateurs ne cessent de s’accélérer et que les mathématiciens développent encore ces algorithmes

Le chiffrement RSA est sécurisé car il repose sur un nombre très important, difficile à prendre en compte. Finalement, les ordinateurs seront assez rapides pour prendre en compte le nombre dans un délai raisonnable. Pour restr en tête de la courbe, vous utilisez un plus grand nombre.

Cependant, pour la plupart des sites Web, le hachage de mots de passe a pour but de rendre difficile la lecture du mot de passe pour une personne ayant access à la firebase database, et non pour assurer la sécurité. Dans ce but, MD5 va bien 1 .

L’implication ici est que si un utilisateur malveillant accède à l’ensemble de votre firebase database, il n’a pas besoin du mot de passe. (La serrure de la porte d’entrée ne m’empêchera pas de venir à la fenêtre.)


1 Le simple fait que MD5 soit “cassé” ne signifie pas que vous pouvez inverser la tendance à tout moment.

En plus d’être une fonction unidirectionnelle sécurisée par cryptographie, une bonne fonction de hachage pour la protection par mot de passe devrait être difficile à maîsortingser, c’est-à-dire lente par conception. scrypt est l’un des meilleurs dans ce domaine. De la page d’accueil:

Nous estimons que sur le matériel moderne (2009), si 5 secondes sont consacrées au calcul d’une clé dérivée, le coût d’une attaque par force brute contre le cryptage est environ 4000 fois plus élevé que le coût d’une attaque similaire contre bcrypt. mot de passe), et 20000 fois plus qu’une attaque similaire contre PBKDF2.

Cela dit, à partir des fonctions de hachage couramment disponibles, faire quelques milliers d’itérations de la famille SHA est une protection assez raisonnable pour les mots de passe non critiques.

Aussi, toujours append un sel pour rendre impossible le partage des efforts pour forcer de nombreux hachages à la fois.

Le NIST organise actuellement un concours pour sélectionner un nouvel algorithme de hachage, tout comme il l’a fait pour sélectionner l’algorithme de chiffrement AES. Donc, la réponse à cette question sera probablement différente dans quelques années.

Vous pouvez rechercher les soumissions et les étudier vous-même pour voir si vous souhaitez les utiliser.