Quelle est la durée optimale pour l'utilisateur, le mot de passe de sel?
Tout sel à tout va évidemment aider lors de l'épandage de sel et de hachage d'un mot de passe utilisateur. Existe-il des pratiques exemplaires pour combien de temps le sel devrait être? Je vais être le stockage du sel dans ma table user, donc je voudrais le meilleur compromis entre la taille de stockage et de sécurité. Aléatoire de 10 caractères assez de sel? Ou dois-je besoin de quelque chose de plus?
- Je n'ai pas de recommandation sur la durée du sel, mais les réponses qui apparaissent ici ont beaucoup de mauvaises informations. Votre sel devrait certainement: - aléatoire - être par le secret (pas une seule valeur stockée dans votre programme de l'image ou du fichier de configuration). Le sel n'est pas un secret cryptographique, afin de le stocker dans votre tableau n'est pas un problème. Le seul but de sel est de s'assurer que lorsque les différentes instances d'un même élément sont hachées (ou crypté) que vous obtenez un résultat différent.
- Pour ceux qui ne savent pas ce que le sel est: <a href="en.wikipedia.org/wiki/Salt_(cryptographie)">Sel (cryptographie)</a> sur Wikipedia
- Ou si il y a un rapport optimum pour la longueur de sel à la longueur de hachage de sortie? 8 octets de sel peut être suffisant pour HMAC-SHA-256, mais peut ne pas HMAC-SHA-512.
- Chiffrée de manière aléatoire le sel de la même taille que la sortie de la fonction de hachage signifie qu'un "essayer tous les sels possibles" (plus un dictionnaire de mots de passe) attaque nécessite plus d'efforts en tant que "essayer tous les possible de hachage résultats" attaque - qui est une norme de la force brute. Une courte sel signifie que vous pouvez avoir un sel dictionnaire plus un dictionnaire de mots de passe comme une attaque par force brute.
- -1 Certes n'a pas de (tenter de) répondre à la question.
Vous devez vous connecter pour publier un commentaire.
La plupart de ces réponses sont un peu hors de propos et démontrer une confusion entre les sels et les clés de chiffrement. Le but de sels est de modifier la fonction de hachage utilisé pour chaque utilisateur, mot de passe, de sorte que chaque stockées hachage de mot de passe devra être attaqué individuellement. La seule exigence en matière de sécurité, c'est qu'ils sont unique par utilisateur, il n'y a aucun avantage à eux être imprévisibles ou difficiles à deviner.
Sels seulement besoin d'être suffisamment longue pour que chaque utilisateur de sel sera unique. Aléatoire de 64 bits sels sont très peu susceptible de répéter, même avec un milliard d'utilisateurs enregistrés, donc cela devrait être bon. Un seul répété le sel est relativement mineure préoccupation de sécurité, elle permet à un attaquant de recherche de deux comptes à la fois mais dans l'ensemble, de ne pas accélérer la recherche de beaucoup sur l'ensemble de la base de données. Même 32 bits sels sont acceptables pour la plupart des fins, il sera dans le pire des cas la vitesse d'un attaquant de recherche d'environ 58%. Le coût de l'augmentation de sels au-delà de 64 bits n'est pas élevé, mais il n'y a pas de sécurité de raison de le faire.
Il est intéressant également à l'aide d'un site à l'échelle de sel sur le dessus de chaque utilisateur de sel, cela permettra d'éviter d'éventuelles collisions avec des mots de passe stockés sur d'autres sites, et d'empêcher l'utilisation de tables arc-en-ciel, bien que même les 32 bits de sel est assez pour faire de "rainbow tables" irréaliste attaque.
Encore plus simple-et développeurs de toujours oublier cette-si vous avez unique Id d'utilisateur ou de noms de connexion, ceux qui servent parfaitement bien dans un sel. Si vous faites cela, vous devez ajouter un site à l'échelle de sel pour vous assurer que vous n'avez pas de chevauchement avec les utilisateurs d'un autre système, qui a eu la même idée lumineuse.
Actuellement les normes acceptées pour le hachage des mots de passe créer un nouveau 16 caractères de long de sel pour chaque mot de passe et de stocker le sel avec le hash du mot de passe.
Bien sûr, une bonne cryptographiques de soins pour créer vraiment aléatoire de sel devraient être prises.
Edit: Ma réponse ci-dessous les réponses à la question posée, mais la "vraie" réponse est: il suffit d'utiliser bcrypt, scrypt, ou Argon2. Si vous vous posez ce genre de questions, vous êtes presque certainement à l'aide d'outils à un niveau trop bas.
Honnêtement, il n'y a pas défendable raison de ne pas le sel sera exactement la même longueur que le mot de passe haché. Si vous êtes à l'aide de l'algorithme SHA-256, alors vous avez un hachage 256 bits. Il n'y a aucune raison de ne pas utiliser un salt de 256 bits.
Plus de 256 bits ne sera pas net, toute amélioration de la sécurité, mathématiquement. Mais aller avec une courte sel peut toujours se retrouver avec une situation où un arc-en-ciel de la table des captures de votre sel de la longueur, surtout avec des temps de sels.
Wikipédia:
De 128 bits (16 octets) de sel sera suffisant. Vous pouvez vous le représenter comme une séquence de
128 /4 = 32
chiffres hexadécimaux.Une réponse pourrait être d'utiliser que la taille du sel de la valeur de hachage que vous allez utiliser, fournit en terme de sécurité.
E. g. Si vous allez utiliser SHA-512 utiliser 256 bits de sel, car la sécurité fournie par l'algorithme SHA-512 est de 256 bits.