Les mots de passe Chiffrement

voix
27

Quelle est la plus rapide, mais de façon sécurisée pour chiffrer les mots de passe dans (PHP préféré), et pour lequel jamais la méthode choisie est-il portable?

En d'autres termes, si j'émigre plus tard mon site vers un autre serveur seront mes mots de passe continuer à travailler?

La méthode que je me sers maintenant comme on m'a dit dépend des versions exactes des bibliothèques installées sur le serveur.

Créé 03/08/2008 à 12:50
source utilisateur
Dans d'autres langues...                            


7 réponses

voix
29

Si vous choisissez une méthode de cryptage pour votre système de connexion alors la vitesse est pas votre ami, Jeff avait-et-frow avec Thomas Ptacek sur les mots de passe et la conclusion est que vous devez utiliser la plus lente, la méthode de chiffrement la plus sûre que vous pouvez vous permettre de .

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

les systèmes de mot de passe sont modernes attaqués avec cracker supplémentaires.

craquelins supplémentaires ne précalculer pas tous les mots de passe possibles fissurés. Ils considèrent chaque hachage de mot de passe individuellement, et ils se nourrissent de leur dictionnaire grâce à la fonction de hachage de mot de passe de la même façon que votre page de connexion de PHP serait. biscuits de table arc-en-comme Ophcrack utilisent l'espace pour attaquer les mots de passe; craquelins supplémentaires comme John the Ripper, Crack, et le travail LC5 avec le temps: statistiques et calcul.

Le mot de passe jeu d'attaque est marqué dans le temps pris pour casser le mot de passe X. Avec des tables arc-en-, que le temps dépend de la taille de votre table doit être et à quelle vitesse vous pouvez le rechercher. Avec craquelins supplémentaires, le temps dépend de la façon dont vous pouvez rapidement faire la fonction de hachage de mot de passe run.

Le mieux que vous pouvez optimiser votre fonction de hachage de mot de passe, plus vite votre fonction de hachage de mot de passe obtient, votre système est plus faible. MD5 et SHA1, même chiffrements par blocs classiques comme le DES, sont conçus pour être rapide. MD5, SHA1 et DES sont hashs faibles. Sur les processeurs modernes, des blocs de construction crypto premières comme le DES et MD5 peuvent être bitsliced, vectorisés et parallélisée de faire des recherches par mot de passe rapide comme l'éclair. implémentations jeu sur FPGA ne coûtent que des centaines de dollars.

Créé 03/08/2008 à 13:48
source utilisateur

voix
14

Je suis avec Peter. Développeur ne semble pas comprendre les mots de passe. Nous avons tous chercher (et je suis coupable de cela aussi) MD5 ou SHA1 parce qu'ils sont rapides. En y repensant ( 'cuz quelqu'un fait récemment, il à moi) qui ne fait pas de sens. Nous devrions choisir un algorithme de hachage qui est stupide lent. Je veux dire, à l'échelle des choses, un site occupé sera hachage des mots de passe quoi? toutes les 1/2 minutes? Qui se soucie si elle prend 0,8 secondes contre 0,03 secondes serveur sage? Mais cette lenteur supplémentaire est énorme pour éviter tous les types de communes attaques forcish brute.

De ma lecture, bcrypt est spécialement conçu pour le hachage de mot de passe sécurisé. Il est basé sur Blowfish, et il y a beaucoup de mise en œuvre.

Pour PHP, consultez PHPPass http://www.openwall.com/phpass/

Pour tous ceux qui font .NET, consultez BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

Créé 03/08/2008 à 14:48
source utilisateur

voix
8

Il convient de souligner que vous ne voulez pas chiffrer le mot de passe, vous voulez hash il.

mots de passe encryptés peuvent être décryptées, laisser quelqu'un voir le mot de passe. Hash est une opération à sens unique est donc (cryptographiquement) passé le mot de passe d'origine de l'utilisateur.


En ce qui concerne l'algorithme, vous devez choisir - utiliser la norme actuellement acceptée un:

  • SHA-256

Et quand vous hachez le mot de passe de l'utilisateur, assurez-vous de hachage aussi dans une autre ordure avec elle. par exemple:

  • mot de passe: password1
  • sel: PasswordSaltDesignedForThisQuestion

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

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
Créé 17/09/2008 à 19:06
source utilisateur

voix
7

Quoi que vous fassiez, ne pas écrire votre propre algorithme de chiffrement. Faire cela presque garantie (sauf si vous êtes un cryptographe) qu'il y aura une faille dans l'algorithme qui le rendra trivial à se fissurer.

Créé 17/09/2008 à 19:16
source utilisateur

voix
2

Pensez à utiliser , bcryptil est utilisé dans de nombreux cadres modernes comme Laravel.

Créé 16/07/2016 à 07:47
source utilisateur

voix
2

Je ne cherche pas nécessairement le plus rapide, mais un bon équilibre, une partie du serveur que ce code est en cours d'élaboration pour sont assez lents, le script qui HASHES et stocke le mot de passe prend 5-6 secondes pour courir, et j'ai rétréci vers le bas à la hash (si je commente le décortiquer il fonctionne, en 1-2 secondes).

Il ne doit pas être le plus sûr, je ne suis pas Codding pour une banque ( en ce moment) mais je ne NE stocker les mots de passe en texte clair.

Créé 05/08/2008 à 00:07
source utilisateur

voix
0

password_hash ( string $password , int $algo [, array $options ] ). (PHP 5> = 5.5.0, PHP 7)

password_hash () crée un nouveau hachage de mot de passe en utilisant un fort algorithme de hachage à sens unique. password_hash () est compatible avec crypt (). Par conséquent, les hashs créés par crypt () peuvent être utilisés avec password_hash ().

Créé 18/05/2018 à 18:27
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more