Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Le Monde Linux

Le Monde Linux

L' Open Source mis en avant !


Stocker des mots de passe avec un sel cryptographique

Publié par Aztorius sur 1 Juin 2017, 09:55am

Catégories : #Hack, #Mot de passe

Que vous soyez un utilisateur avancé désireux de stocker ses mots de passes manuellement avec des algorithmes de hachage cryptographiques, ou bien un Webmaster qui veut rendre confidentiel les mots de passe des utilisateurs sur son site web, vous êtes sur le bon article.

Je ne parlerai pas de chiffrement cryptographique car pour des mots de passe cela n'apporte rien de plus comparé au salage.

Le principe de base est de vouloir sécuriser un mot de passe en le rendant "invisible" de tous. Seul l'utilisateur connaît le mot de passe en clair, et même le site internet ne stockera pas ce mot de passe en clair.

La technique basique à laquelle tout le monde pense quand il s'agit de sécuriser des mots de passe d'un site dans une base de donnée est de hacher tous les mots de passe avec une fonction de hachage type SHA-256 (standard de sécurité de nos jours). C'est bien, mais ce n'est pas suffisant.

En effet si tous les mots de passe son simplement hachés, il suffit pour un voleur de la BDD d'hacher toutes les combinaisons possibles et de comparer l'égalité des hashs ou non afin de retrouver les mots de passe. C'est donc déjà mieux que si les mots de passe étaient en clair dans la BDD, mais ce n'est pas suffisant. C'est pourquoi il y a la technique du salage.

Le salage cryptographique

Le salage est très simple. Au lieu de stocker dans la BDD : identifiant | hash(MDP), on va stocker : identifiant | hash(MDP + sel) | sel.

Le sel est simplement un nombre ou une chaîne de caractères totalement aléatoire.

Ainsi lorsqu'un utilisateur s'enregistre, le serveur Web reçoit le mot de passe, il génère un sel aléatoire, puis il concatène les deux chaînes et les hachent finalement pour pouvoir stocker ce hash et le sel dans la BDD.

Lors de la connexion de l'utilisateur sur le site Web, il envoit son identifiant et son mot de passe au serveur. Le serveur récupère alors le sel associé à l'identifiant, concatène le mot de passe et le sel, calcule le hash et compare les deux hash. Si ils sont égaux alors l'identification a réussie.

Ce principe assez simple permet de garantir une sécurité assez basique. Si une personne vole la BDD, il aura une collection d'identifiants, de hash et de sel. Le soucis c'est que pour trouver un mot de passe dans la BDD il devra calculer toutes les combinaisons possibles avec le sel correspondant. Donc pour trouver tous les mots de passes sachant en plus qu'ils sont aléatoires, il faudra calculer toutes les combinaisons possibles de caractères avec tous les sels dans la base ce qui augmente drastiquement le temps de calculs et devient vite impraticable.

Il ne restera plus qu'à chiffrer votre BDD pour être encore plus tranquille.

Commenter cet article

Archives

Nous sommes sociaux !

Articles récents