Cryptage des mots de passe

Quel est le moyen le plus rapide et le plus sûr de crypter les mots de passe (en PHP préféré), et pour quelle méthode?

En d'autres termes, si je migre plus tard mon site vers un serveur différent, mes mots de passe continueront-ils à fonctionner?

La méthode que j'utilise maintenant dépend des versions exactes des bibliothèques installées sur le serveur.

0
ajouté édité
Vues: 2
Oh mec! Juste mentionner que cela me donne envie d'aller et de mettre en place un tas de pièges à vent et un réservoir de piranha ...
ajouté l'auteur gyurisc, source

7 Réponses

Il existe un correctif officiel pour Evil Genius (disponible sur FilePlanet entre autres), mais il existe aussi un correctif non officiel ici: http://www.n1nj4.com/EvilPlanet/TheGame/mod_unofficialpatch.php qui ajoute beaucoup de réglages.

3
ajouté

Je ne recherche pas forcément le plus rapide mais un bon équilibre, une partie du serveur pour lequel ce code est développé est assez lente, le script qui hashe et stocke le mot de passe prend 5-6 secondes pour fonctionner, et j'ai réduit au hachage (si je commente le hachage il court, dans 1-2 secondes).

Il ne doit pas être le plus sécurisé, je ne code pas pour une banque (en ce moment) mais je ne stockerai certainement pas les mots de passe en texte brut.

0
ajouté
Tant que cela est fermé, vous devriez toujours hacher les mots de passe le plus sûrement possible. Quel est le moyen le plus simple d'obtenir un mot de passe de compte bancaire someeones? Créez un site Web génial dans lequel vous incitez les gens à s'inscrire. La plupart des gens utiliseront des mots de passe existants. Maintenant vous avez une énorme liste de mots de passe. Point étant, le moyen le plus rapide d'obtenir les mots de passe des autres serait de pirater votre système si je savais que c'était une mauvaise implémentation.
ajouté l'auteur Andrew T Finnell, source

Il convient de noter que vous ne voulez pas chiffrer le mot de passe, vous voulez le hacher .

Les mots de passe cryptés peuvent être déchiffrés, permettant à quelqu'un de voir le mot de passe. Le hachage est une opération à sens unique, de sorte que le mot de passe d'origine de l'utilisateur est (cryptographiquement) disparu.


En ce qui concerne l'algorithme que vous devez choisir, utilisez le standard standard actuellement accepté:

  • SHA-256

Et lorsque vous hachez le mot de passe de l'utilisateur, assurez-vous de le faire également dans d'autres fichiers inutiles. par exemple.:

  • password: password1
  • salt: PasswordSaltDesignedForThisQuestion

Ajoutez le sel au mot de passe de l'utilisateur:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
0
ajouté
-1 SHA-256 n'est pas une fonction de hachage par mot de passe et n'est pas sécurisée à cette fin. Il peut être partie d'un (PBKDF2), mais c'est quelque chose de complètement différent. Aussi votre exemple est trompeur, car le sel ne devrait pas être une phrase intelligente, il devrait être une valeur aléatoire (par utilisateur).
ajouté l'auteur Brendan Long, source

Je suis avec Peter. Le développeur ne semble pas comprendre les mots de passe. Nous choisissons tous (et je suis coupable de cela aussi) MD5 ou SHA1 parce qu'ils sont rapides. Penser à cela ('parce que quelqu'un m'a récemment fait remarquer cela) n'a aucun sens. Nous devrions choisir un algorithme de hachage qui est stupide lent. Je veux dire, à l'échelle des choses, un site occupé va hacher les mots de passe quoi? toutes les 1/2 minutes? Qui se soucie si cela prend 0.8 secondes vs 0.03 secondes serveur sage? Mais cette lenteur supplémentaire est énorme pour empêcher tous les types d'attaques brutales.

D'après mes lectures, bcrypt est spécialement conçu pour le hachage sécurisé des mots de passe. Il est basé sur blowfish, et il y a beaucoup de mise en œuvre.

For PHP, check out PHPPass http://www.openwall.com/phpass/

For anyone doing .NET, check out BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

0
ajouté

Si vous choisissez une méthode de cryptage pour votre système de connexion, alors la vitesse n'est pas votre ami, Jeff a eu une discussion avec Thomas Ptacek sur les mots de passe et le conclusion était que vous devriez utiliser le plus lent , la méthode de cryptage la plus sécurisée que vous pouvez vous permettre.

Du blog de Thomas Ptacek:
  La vitesse est exactement ce que vous ne voulez pas dans une fonction de hachage par mot de passe.

     

Les systèmes de mots de passe modernes sont attaqués avec des craqueurs de mots de passe incrémentaux.

     

Les crackers incrémentaux ne précalculent pas tous les mots de passe possibles. Ils considèrent chaque mot de passe individuellement, et ils alimentent leur dictionnaire via la fonction de hachage du mot de passe de la même manière que votre page de connexion PHP. Les crackers de table arc-en-ciel comme Ophcrack utilisent l'espace pour attaquer les mots de passe; les crackers incrémentaux comme John the Ripper, Crack et LC5 travaillent avec le temps: les statistiques et les calculs.

     

Le jeu d'attaque par mot de passe est marqué dans le temps nécessaire pour déchiffrer le mot de passe X. Avec les tables arc-en-ciel, ce temps dépend de la taille de votre table et de la vitesse de recherche. Avec des craqueurs incrémentaux, le temps dépend de la vitesse à laquelle vous pouvez faire fonctionner la fonction de hachage du mot de passe.

     

Plus vous optimisez votre fonction de hachage par mot de passe, plus votre fonction de hachage par mot de passe est rapide, plus votre système est faible. MD5 et SHA1, même les chiffrements par blocs classiques comme DES, sont conçus pour être rapides. MD5, SHA1 et DES sont des hachages de mots de passe faibles. Sur les processeurs modernes, les blocs cryptographiques bruts tels que DES et MD5 peuvent être balisés, vectorisés et parallélisés pour accélérer la recherche de mots de passe. Les mises en œuvre de FPGA Game-over ne coûtent que des centaines de dollars.

0
ajouté

Pensez à utiliser bcrypt il est utilisé dans de nombreux frameworks modernes comme laravel.

0
ajouté

Quoi que vous fassiez, n'écrivez pas votre propre algorithme de chiffrement. Cela garantira presque (sauf si vous êtes un cryptographe) qu'il y aura une faille dans l'algorithme qui le rendra insignifiant.

0
ajouté
Même si vous êtes un cryptographe, il aura probablement un défaut - il faut des années de révision avant qu'un algorithme devienne "populaire"
ajouté l'auteur Tom Ritter, source
C'est tellement vrai. Et cela me rappelle une anecdote similaire de Don Knuth: il y a longtemps, il a essayé d'écrire un générateur de nombres aléatoires et a accumulé autant d'opérations obscures qu'il pouvait penser. Il a finalement couru cette création monumentale et il a sorti le nombre 4 indéfiniment. (Les détails peuvent avoir été modifiés lors de la réécriture.)
ajouté l'auteur ndkrempel, source