Mysql
 sql >> Base de données >  >> RDS >> Mysql

Qu'est-ce que le sel lorsqu'il est lié à MYSQL sha1 ?

Un sel est une valeur qui est ajoutée à un mot de passe (ou à un autre secret) que vous souhaitez hacher dans un sens. Cela signifie qu'il peut se trouver avant, après ou quelque part à l'intérieur du mot de passe, tant que sa position et sa valeur sont cohérentes pour un mot de passe fourni donné.

Ce que cela fait, c'est qu'il empêche les attaques par dictionnaire - essentiellement des dictionnaires de mots de passe courants pré-hachés sans sel - d'être utilisés pour "deviner" un mot de passe à sens unique tant que l'attaquant ne connaît pas le hachage. Si chaque mot de passe a un hachage différent, il est alors très difficile pour un attaquant de créer un dictionnaire optimisé pour déchiffrer vos mots de passe (ils auraient besoin d'un dictionnaire pour chaque sel séparé et ils auraient également besoin de savoir où le sel a été placé dans chaque mot de passe ).

Bien sûr, pour que tout cela soit applicable, un attaquant doit d'abord disposer des hachages de vos mots de passe. Cela n'a rien à voir avec l'attaque des mots de passe en les devinant via une invite de saisie.

En ce qui concerne MySQL en particulier, si vous fournissez un sel lors du hachage d'un mot de passe, assurez-vous d'enregistrer ce que ce sel était quelque part. Ensuite, lorsqu'un utilisateur tente de s'authentifier, vous combinez cette valeur de sel enregistrée avec le mot de passe (lors de l'appel à crypt par exemple) et si le hachage résultant correspond, alors ils ont entré le mot de passe correct. (Notez qu'à aucun moment le hachage d'un mot de passe n'est inversé ; donc dans un sens.)