Le rôle des fonctions de hachage dans la sécurité des mots de passe
Publié le: 24 Fév 2024
Dernière modification le: 23 Sep 2025
Les fonctions de hachage jouent un rôle crucial dans la sécurité des mots de passe pour les services web sécurisés. Ces services ne stockent jamais votre mot de passe réel, mais une version hachée de celui-ci. Les fonctions de hachage sont des algorithmes qui convertissent des données d’entrée (comme un mot de passe) en une chaîne de caractères de taille fixe. Ce processus est irréversible, ce qui signifie qu’il est pratiquement impossible de dériver l’entrée originale à partir du hachage. Lorsque vous vous connectez, le service procède au hachage du mot de passe que vous fournissez et le compare au hachage stocké. Ainsi, même en cas de violation de données, les pirates ne peuvent pas accéder aux mots de passe en clair, ce qui renforce la sécurité globale.
Une procédure de connexion peu sophistiquée
Voyons d’abord à quoi ressemblerait une procédure de connexion non sophistiquée. Nous nous connectons à un service web de la manière habituelle avec un nom de compte et un mot de passe :

Notre service web peu sophistiqué dispose d’une table dans sa base de données avec tous les noms de comptes et leurs mots de passe associés :

Le service web recherche d’abord dans sa base de données le nom du compte figurant dans le formulaire de connexion rempli. Si le nom existe dans la base de données, le service compare également le mot de passe du formulaire de connexion avec le mot de passe associé dans la base de données. Si les mots de passe correspondent, l’enregistrement est effectué. Dans le cas contraire, l’enregistrement est refusé. À première vue, il s’agit d’une procédure de connexion sécurisée. Seules les personnes en possession d’un nom de compte valide et connaissant le mot de passe associé peuvent accéder au compte correspondant. Toutes les autres personnes se voient refuser l’accès. Jusqu’ici, tout va bien ! Mais qu’est-ce qui n’est pas sophistiqué dans cette procédure ?
Le problème est que les mots de passe sont stockés dans une base de données. Cela signifie qu’ils sont potentiellement connus de tous ceux qui ont accès à la base de données, y compris les opérateurs de services web et leurs employés. En outre, il est désormais courant pour de nombreuses entreprises de confier l’exploitation des services web qu’elles proposent à des fournisseurs américains d’informatique en nuage (cloud computing), tels qu’Amazon Web Services ou Google Cloud. Nous pouvons donc supposer qu’en principe, les opérateurs et les employés de ces fournisseurs d’informatique en nuage ont également accès à la base de données et donc à notre mot de passe. En outre, des criminels pourraient bien sûr accéder sans autorisation aux données contenues dans la base de données.
En outre, ce n’est un secret pour personne que la plupart des utilisateurs de services web réutilisent le même mot de passe pour plusieurs services. Par conséquent, celui qui a réussi à obtenir le mot de passe du compte Facebook/Twitter ou de l’agence de voyage en ligne d’une cible aura, avec un peu de chance, également le mot de passe de son courrier électronique, de sa banque en ligne, de son agenda personnel, d’une plateforme de rencontres et de l’intranet de l’entreprise où travaille la cible. L’intérêt économique de voler les mots de passe de la base de données de n’importe quel service web est donc élevé, même si ce service web n’est pas une cible lucrative ! La question est la suivante : comment résoudre ce problème ?
Une procédure de connexion plus sophistiquée
Rappelons-le : Le service web décrit ci-dessus possède une table dans sa base de données avec tous les noms de comptes et les mots de passe associés :

Nous adaptons ce tableau de la manière suivante. Au lieu de stocker les mots de passe, nous leur appliquons une fonction de hachage cryptographique de notre choix :

Ensuite, au lieu des mots de passe, nous stockons les valeurs de hachage obtenues dans la base de données :

Cela ne modifie que légèrement la procédure de connexion. Nous continuons à nous connecter de la manière habituelle avec un nom de compte et un mot de passe :

Le service web recherche d’abord le nom du compte dans sa base de données à partir du formulaire de connexion rempli. Mais à l’étape suivante, la nouvelle procédure diffère. Si le nom existe dans la base de données, la fonction de hachage est appliquée au mot de passe de l’écran de connexion. Ce n’est qu’ensuite que la valeur de hachage obtenue est comparée à la valeur de hachage correspondante dans la base de données. Une fois de plus, les mots de passe ne sont plus comparés entre eux, mais seulement avec leurs valeurs de hachage. Si les valeurs de hachage correspondent, la connexion est effectuée. Dans le cas contraire, la connexion est refusée.
Hormis l’utilisation de la fonction de hachage, rien n’a changé dans la procédure de connexion. D’après les propriétés des fonctions de hachage cryptographiques, il s’ensuit que la comparaison des valeurs de hachage est tout aussi efficace que la comparaison directe des mots de passe. Mais maintenant, les mots de passe eux-mêmes ne sont plus stockés dans la base de données du service web. Quiconque accède à la base de données – avec ou sans autorisation – n’a plus accès aux mots de passe, mais uniquement à leurs valeurs de hachage. L’incitation économique décrite ci-dessus pour voler les mots de passe dans la base de données d’un service web est donc éliminée puisque les mots de passe ne sont plus contenus dans la base de données.
Fonctionnement pratique des fonctions de hachage
Nous espérons avoir pu mieux expliquer comment cela est possible et pourquoi il est courant que les services web sécurisés ne connaissent même pas les mots de passe que nous utilisons pour nous connecter. Dans la pratique, la sécurité de cette procédure est encore renforcée par la génération des valeurs de hachage à l’aide d’une fonction de hachage cryptographique spécialisée(bcrypt) et par l’association de ces valeurs à une chaîne de caractères secrète (sel) à l’échelle de la base de données avant l’application de cette fonction de hachage.
Si vous avez oublié votre mot de passe pour un service web, vous pouvez demander une réinitialisation de mot de passe auprès de la plupart des services web. Vous recevrez alors un courriel contenant un lien qui vous conduira à un formulaire où vous pourrez définir un nouveau mot de passe. Nous savons maintenant pourquoi cette procédure est si maladroite : le service web ne connaît pas votre ancien mot de passe. Malheureusement, toutes les entreprises ne suivent pas encore cette pratique de sécurité établie. Si vous indiquez par courriel ou lors d’un appel téléphonique avec une équipe d’assistance que vous avez oublié votre mot de passe et que l’on vous communique ensuite votre mot de passe, vous pouvez en conclure que cette entreprise ne respecte pas les normes modernes en matière de sécurité de l’information. Au plus tard, veillez à ne pas utiliser ce mot de passe dans un autre contexte. Pour utiliser systématiquement un mot de passe distinct pour chaque service web, vous devriez utiliser un gestionnaire de mots de passe. Ainsi, vous n’aurez plus à vous souvenir de nombreux mots de passe individuels et vous aurez en plus la possibilité de créer des mots de passe aléatoires de haute qualité. Il existe des plug-ins de navigateur web pour les gestionnaires de mots de passe les plus répandus, qui remplissent même les écrans de connexion de vos services web à votre place. Il est rare que la commodité et la sécurité se rencontrent aussi bien.
Intégrer la sécurité des mots de passe et les fonctions de hachage dans votre formation personnelle à la cybersécurité
En conclusion, les fonctions de hachage jouent un rôle crucial dans la protection des mots de passe contre les cyberattaques. Toutefois, leur efficacité dépend beaucoup de la manière dont les gens comprennent et gèrent leurs mots de passe. C’est là que la formation à la cybersécurité entre en jeu. En apprenant aux gens à créer des mots de passe forts et à rester attentifs aux menaces en ligne, nous pouvons tous jouer un rôle dans la sécurisation de nos informations personnelles. N’oubliez pas que la sécurité en ligne est un travail d’équipe et qu’un peu de savoir-faire permet de mieux se protéger dans le monde numérique.