Tout sel aidera évidemment lors du salage et du hachage du mot de passe d'un utilisateur. Existe-t-il des meilleures pratiques pour la durée du sel? Je vais stocker le sel dans ma table utilisateur, je voudrais donc le meilleur compromis entre la taille de stockage et la sécurité. Un sel aléatoire de 10 caractères est-il suffisant? Ou ai-je besoin de quelque chose de plus?
encryption
hash
salt
David
la source
la source
Réponses:
La plupart de ces réponses sont un peu erronées et démontrent une confusion entre les sels et les clés cryptographiques. Le but de l'inclusion des sels est de modifier la fonction utilisée pour hacher le mot de passe de chaque utilisateur afin que chaque hachage de mot de passe stocké doive être attaqué individuellement. La seule exigence de sécurité est qu'ils sont uniques par utilisateur, il n'y a aucun avantage à ce qu'ils soient imprévisibles ou difficiles à deviner.
Les sels doivent seulement être assez longs pour que le sel de chaque utilisateur soit unique. Il est très peu probable que les sels 64 bits aléatoires se répètent même avec un milliard d'utilisateurs enregistrés, donc cela devrait être bien. Un sel unique répété est un problème de sécurité relativement mineur, il permet à un attaquant de rechercher deux comptes à la fois, mais dans l'ensemble, n'accélérera pas beaucoup la recherche sur l'ensemble de la base de données. Même les sels 32 bits sont acceptables dans la plupart des cas, ils accéléreront dans le pire des cas la recherche d'un attaquant d'environ 58%. Le coût de l'augmentation des sels au-delà de 64 bits n'est pas élevé, mais il n'y a aucune raison de sécurité de le faire.
Il y a un certain avantage à utiliser également un sel à l'échelle du site en plus du sel par utilisateur, cela empêchera les collisions possibles avec les hachages de mots de passe stockés sur d'autres sites, et empêchera l'utilisation de tables arc-en-ciel à usage général, bien que même 32 bits de le sel suffit à faire des tables arc-en-ciel une attaque impraticable.
Encore plus simple - et les développeurs oublient toujours cela - si vous avez des identifiants d'utilisateur ou des noms de connexion uniques, ceux-ci servent parfaitement bien comme sel. Si vous faites cela, vous devez ajouter un sel à l'échelle du site pour vous assurer de ne pas chevaucher les utilisateurs d'un autre système qui ont eu la même idée brillante.
la source
Les normes actuellement acceptées pour le hachage des mots de passe créent un nouveau sel de 16 caractères pour chaque mot de passe et stockent le sel avec le hachage du mot de passe.
Bien sûr, un soin cryptographique approprié pour créer du sel vraiment aléatoire doit être pris.
la source
Edit: Ma réponse ci-dessous répond à la question telle que posée, mais la "vraie" réponse est: utilisez simplement bcrypt , scrypt ou Argon2 . Si vous posez des questions comme celle-ci, vous utilisez presque certainement des outils à un niveau trop bas.
Honnêtement, il n'y a aucune raison défendable de ne pas que le sel ait exactement la même longueur que le mot de passe haché. Si vous utilisez SHA-256, vous disposez d'un hachage 256 bits. Il n'y a aucune raison de ne pas utiliser un sel de 256 bits.
Plus de 256 bits ne vous apporteront aucune amélioration de la sécurité, mathématiquement. Mais opter pour un sel plus court peut toujours se retrouver dans une situation où une table arc-en-ciel rattrape votre longueur de sel - en particulier avec des sels plus courts.
la source
Wikipédia :
Un sel de 128 bits (16 octets) suffira. Vous pouvez le représenter sous la forme d'une séquence de
128 / 4 = 32
chiffres hexadécimaux.la source
Une réponse pourrait être d'utiliser comme taille de sel la valeur que le hachage que vous allez utiliser fournit en termes de sécurité.
Par exemple, si vous allez utiliser SHA-512, utilisez 256 bits salt car la sécurité fournie par SHA-512 est de 256 bits.
la source