Next Previous Contents

1. Les notions de chiffrement et de stockage d'un mot de passe

1.1 Stockage d'un mot de passe

Le mot de passe choisi par l'utilisateur est haché et le résultat est enregistré dans la base des mots de passe à côté du login correspondant. Le mot de passe haché est appelé empreinte, haché, ou hash en anglais.

Le terme "chiffré" couramment utilisé est un abus de langage. La fonction utilisée est en fait une fonction de hachage dont une propriété est d'être à sens unique (one way), afin que la donnée en clair entrée à l'origine ne soit pas récupérable à partir du résultat. Certaines fonctions de hachage utilisées sont fondées sur des fonctions de chiffrement, d'où l'abus puisqu'une fonction de chiffrement a pour objectif de rendre inintelligible le résultat à qui ne possède pas le secret (la clé) nécessaire.

1.2 Chiffrement d'un mot de passe

Comme vu précédemment, le résultat doit être non-réversible. Si le mot de passe est chiffré avec une clé secrète, alors le mot de passe peut être obtenu en déchiffrant le chiffré par quiconque connaissant la clé. Ce type de sécurité, nommé sécurité par l'obscurité, n'est pas viable car à court terme, les développeurs possèdent une porte dérobée et à moyen terme, le niveau de sécurité est précaire puisque tout secret est découvert ou dévoilé toujours plus tôt que prévu.

Pour obtenir un résultat non-réversible, le mot de passe sert comme clé pour chiffrer une chaîne de caractères constante. Dans ce cas, si l'empreinte est volée, alors il faut deviner le mot de passe, s'en servir comme clé afin de déchiffrer l'empreinte et obtenir la chaîne connue.

La solution est donc d'utiliser le mot de passe comme clé pour chiffrer une chaîne connue mais deux utilisateurs avec le même mot de passe possèdent alors la même empreinte. Une solution est d'utiliser un diversifiant (graine) afin que les deux empreintes soient différentes. Cette graine (ou piment) est utilisée comme paramètre afin de changer le comportement de la fonction utilisée, mais la même graine doit toujours donner le même résultat.

La graine est enregistrée en clair dans l'empreinte. La connaissance de celle-ci n'est pas une vulnérabilité et est nécessaire au processus de vérification du mot de passe.

Il est en revanche important que la même graine ne soit pas utilisée par plusieurs utilisateurs, un pirate n'ayant à calculer qu'une seule fois un mot de passe pour essayer de casser plusieurs empreinte simultanément.

1.3 Vérification d'un mot de passe

Pour vérifier l'authentification de l'utilisateur, le serveur a accès au mot de passe en clair fourni par l'utilisateur et à l'empreinte enregistrée dans la base des mots de passe. L'empreinte n'étant pas déchiffrable, la comparaison des mots de passe en clair est impossible. Le serveur doit donc hacher le mot de passe du client et vérifier que le résultat correspond à l'empreinte sauvegardée.

Pour hacher le mot de passe, le serveur récupère la graine et l'utilise pour calculer le résultat qui est comparé à l'empreinte enregistrée.


Next Previous Contents