Sel (cryptographie)
Pour comprendre la différence entre le craquage d’un seul mot de passe et d’un ensemble de ceux-ci, considérez un fichier avec des utilisateurs et leurs mots de passe hachés. Disons que le fichier n’est pas salé. Alors un attaquant pourrait choisir une chaîne, l’appeler tentative, puis calculer hash(tentative). Puisque les fonctions de hachage sont un-à-un, il s’ensuit que tout utilisateur dont le hachage est hash(attempt) doit avoir comme mot de passe attempt. Ainsi, chaque correspondance craque un mot de passe utilisateur, et la chance d’une correspondance augmente avec le nombre de mots de passe dans le fichier. En revanche, si des sels sont utilisés, l’attaquant devra calculer hash(tentative || sel), comparer avec l’entrée A, puis hash(tentative || sel), comparer avec l’entrée B, et ainsi de suite. Cela empêche toute tentative de craquer plusieurs mots de passe (uniquement lorsque la réutilisation du sel est évitée).
Les sels combattent également l’utilisation de tables précalculées pour craquer les mots de passe. Une telle table pourrait simplement faire correspondre des mots de passe courants à leurs hachages, ou elle pourrait faire quelque chose de plus complexe, comme stocker les points de départ et d’arrivée d’un ensemble de chaînes de hachage précalculées. Dans les deux cas, le salage peut se défendre contre l’utilisation de tables précalculées en allongeant les hachages et en leur faisant utiliser des jeux de caractères plus importants, ce qui rend moins probable le fait que la table couvre les hachages résultants. En particulier, une table précalculée devrait couvrir la chaîne de caractères plutôt que simplement .
Le système moderne de mot de passe fantôme, dans lequel les hachages de mots de passe et autres données de sécurité sont stockés dans un fichier non public, atténue quelque peu ces préoccupations. Cependant, ils restent pertinents dans les installations multi-serveurs qui utilisent des systèmes centralisés de gestion des mots de passe pour pousser les mots de passe ou les hachages de mots de passe vers plusieurs systèmes. Dans de telles installations, le compte racine de chaque système individuel peut être considéré comme moins fiable que les administrateurs du système de mots de passe centralisé, il reste donc utile de s’assurer que la sécurité de l’algorithme de hachage de mots de passe, y compris la génération de valeurs de sel uniques, est adéquate.
Un autre avantage (moindre) d’un sel est le suivant : deux utilisateurs pourraient choisir la même chaîne de caractères comme mot de passe, ou le même utilisateur pourrait choisir d’utiliser le même mot de passe sur deux machines. Sans sel, ce mot de passe serait stocké sous la même chaîne de hachage dans le fichier des mots de passe. Cela révélerait le fait que les deux comptes ont le même mot de passe, ce qui permettrait à toute personne connaissant le mot de passe d’un des comptes d’accéder à l’autre compte. En salant les mots de passe avec deux caractères aléatoires, même si deux comptes utilisent le même mot de passe, personne ne peut le découvrir simplement en lisant les hachages.