Mettons les choses au clair tout de suite : il est très compliqué voire impossible de s’assurer que son appareil informatique ne sera pas un jour piraté et il en va de même pour les entreprises qui stockent vos données. Pour s’en convaincre, il suffit de regarder l’actualité et le déluge de communiqués d’entreprises pour « fuites » de données.

L’éventualité que les données soient perdues devrait toujours être prise en compte et tout devrait être fait pour s’assurer que cela n’arrive pas, ou que si cela arrive, les conséquences soient les moins graves possibles.

Bien stocker les mots de passe de ses utilisateurs

Parmi les données les plus sensibles, on retrouve les mots de passe des utilisateurs.

Imaginez que vous souhaitez créer un compte sur site Internet. Vous communiquez généralement un identifiant, souvent votre adresse e-mail, et un mot de passe. Et j’espère pas n’importe quel mot de passe, un BON mot de passe : long, peu prévisible et unique.

En vous inscrivant, vous espérez que l’entreprise à qui vous confiez votre sésame en prenne le plus grand soin, c’est-à-dire le conserve correctement, ne le communique à personne, et ne le perde pas. Car lorsque les mots de passe des utilisateurs sont perdus ou se retrouvent dans la nature, pour peu que vous n’ayez pas utilisé un mot de passe unique à chaque fois, quiconque pourrait alors les récupérer et se connecter à tous vos comptes.

Pour éviter que cela n’arrive et protéger les internautes, les entreprises peuvent et doivent stocker une empreinte numérique du mot de passe, et non pas le mot de passe directement, en clair.

Empreinte numérique, fonction de Hachage, kézako ?

Une empreinte numérique ou hash est une représentation d’un texte qui est générée à l’aide de fonctions mathématiques savantes[1]. Ces fonctions, appelées fonctions de hachage, ont la caractéristique principale d’être à sens unique, c’est-à-dire qu’à partir d’un texte, on peut calculer son empreinte mais l’inverse n’est pas mathématiquement possible[2].

Par exemple, l’empreinte du mot « planète » en utilisant la fonction de hachage SHA-256 correspond au texte suivant :

1279912FF0F45048EE3DF2189B3F68DC7B5F53EC9880BEEB564C4C9FFC7F478F

La taille des empreintes est fixe et ne dépend pas de la taille du texte initial. Sa composition, elle, varie selon le contenu du texte. L’empreinte de la phrase « Le ciel est bleu » sera donc de la même taille que l’empreinte précédente, bien que la taille du texte diffère :

A02530E344E585473034399CA50FDE57E91DB953E65F35F52A54AAD4FF9BE908

La deuxième caractéristique importante est qu’il n’existe pas deux textes avec la même empreinte. Chaque empreinte représente donc un seul texte[3].

Empreintes numériques appliquées aux mots de passe

Lorsqu’un utilisateur s’inscrit sur un site Internet et fournit un mot de passe, l’empreinte de ce mot de passe est générée et stockée. Le mot de passe, lui, n’est pas conservé.

Quand l’utilisateur revient sur le site et s’authentifie, il fournit encore une fois son mot de passe, et on génère alors une nouvelle empreinte à partir de ce mot de passe. Et si l’empreinte est identique à celle que l’on a stockée initialement, le mot de passe est considéré comme valide et l’authentification est acceptée.

Ce mécanisme permet d’éviter de stocker les mots de passe en clair, tout en conservant la capacité de valider le mot de passe fourni par l’internaute. D’un point de vue de la sécurité, cela change tout, car l’entreprise ne peut plus connaître le mot de passe « réel » de ses utilisateurs.

Et pour vous le prouver, imaginez que je vous dise que mon mot de passe a pour empreinte :

F45F98C98B157626A4476AA6F5CE0F267E9CAA4AF1A93C253F2C21472BB32357

Vous seriez bien embêtés pour le retrouver.

Dans le cas extrême où la base de données de l’entreprise serait piratée et tomberait dans de mauvaises mains, le hacker aurait donc beaucoup de mal à retrouver les mots de passe des utilisateurs[4].

Ces recommandations de sécurité sont partagées par l’ANSSI...

« Le stockage des mots de passe en clair doit être absolument proscrit »

... mais aussi par la CNIL :

« S’agissant des modalités de conservation, la commission considère que le mot de passe ne doit jamais être stocké en clair. Elle recommande que tout mot de passe […] devant être stocké sur un serveur soit préalablement transformé au moyen d’une fonction cryptographique non réversible et sûre »

L’OWASP[5], organisation hautement respectée pour ses travaux sur la sécurité des applications, émet une recommandation identique :

« Dans presque toutes les circonstances, les mots de passe doivent être hashés […], car cela rend la tâche très difficile, voire impossible, pour un [attaquant] d’obtenir les mots de passe originaux à partir des empreintes. »

Il reste cependant des entreprises qui font fi de ces principes élémentaires de sécurité et continuent de stocker les mots de passe de leurs utilisateurs en clair.

Le cas du site Internet du Sénat

Le Sénat a visiblement copié les mauvaises habitudes[6] de sa petite sœur de l’Assemblée Nationale et n’a pas jugé utile d’imposer une version sécurisée de son site à ses utilisateurs.

Deux versions coexistent en parallèle, une sécurisée, et une non sécurisée. Les utilisateurs ont donc le choix de visiter leur site de façon sécurisée, ou non. Leur site ne contient cependant pas d’indication privilégiant la version sécurisée. Les moteurs de recherche comme Google envoient donc les utilisateurs vers la version non sécurisée.

Recherche du mot clé « Sénat » sur Google avec comme premier résultat le site www.senat.fr
Google affiche la version non sécurisée du site du Sénat.

Dans les deux cas, que ce soit sur la version sécurisée ou la version non sécurisée, le lien vers la page de connexion à l’espace personnel amène l’internaute vers une page non sécurisée. Lorsque les utilisateurs se connectent, ils transmettent donc leur mot de passe en clair à qui veut bien l’entendre.

Le navigateur Firefox affiche le message « This connection is not secure. Logins entered here could be compromised » lorsque l’internaute sélectionne l’un des champs du formulaire de connexion.
Page de connexion non sécurisée du Sénat. Firefox incite les internautes à ne pas saisir leurs identifiants.

Aucune raison ne justifie de réaliser cela, mais si cet exemple a été pris, ce n’est pas pour parler de la mauvaise sécurité de leur site Internet mais de leur gestion alarmante des mots de passe.

Lorsque l’utilisateur oublie son mot de passe, le site du Sénat offre la possibilité, non pas de le réinitialiser comme cela se fait normalement, mais de le rendre directement à l’utilisateur, chose qui est normalement impossible à réaliser si les empreintes des mots de passe étaient stockées, et non pas les mots de passe en clair.

Le Sénat a probablement jugé plus facile de ne pas se compliquer la tâche avec ce genre de considérations et envoie le sésame directement par e-mail à l’utilisateur :

« Bonjour utilisateur de "Mon Sénat",

Vous avez demandé à récupérer votre mot de passe.
Le voici : MMXe2KAKN5vHbqw

Cordialement,
L’équipe du Sénat. »

— E-mail envoyé par le site du Sénat le 05/10/2020

Les conséquences pour les utilisateurs sont nombreuses et graves. Cela veut dire que tous les employés ayant accès à la base de données du Sénat peuvent consulter les mots de passe de tous les utilisateurs. Plus grave, cela veut aussi dire que, dans le cas où cette même base de données fuiterait, tous les mots de passe pourraient être utilisés pour nuire aux utilisateurs, ces derniers utilisant malheureusement le même mot de passe partout, bien trop souvent.

Encore une fois, aucune raison ne justifie une telle pratique, et surtout pas budgétaire, car le Sénat justifie d’un budget annuel de plus de 300 millions dont 4,6 millions d’euros consacrés à l’informatique[7]. Bien assez pour se payer des ingénieurs de qualité et des conseils avisés !

Le Sénat a été alerté, en vain

Le Sénat a été contacté le 16/10/2020 pour leur expliquer les détails du problème évoqué dans cet article. Ils ont répondu être « au courant des bonnes pratiques en matière de sécurité » mais que « la conception [du] site est […] un peu ancienne » et que « ces bonnes pratiques seront mises en œuvre dans la prochaine version du site, actuellement à l’étude ».

Suite à leur réponse surprenante, je leur ai demandé le 19/10/2020 :

  • Pourquoi ne pas forcer l’affichage de la version sécurisée pour se protéger et protéger les utilisateurs ?
  • Quand cette nouvelle version du site Internet, censée corriger ces failles, sera disponible ?
  • Et pourquoi ne pas sécuriser le stockage des mots de passe dès à présent ? En leur expliquant que dans les deux cas, que ce soit maintenant, ou lors du déploiement du nouveau site, ils devront demander à tous leurs utilisateurs de réinitialiser leur mot de passe pour le stocker de façon sécurisée. Autant le faire le plus rapidement possible pour se protéger, et encore une fois protéger les utilisateurs.

Le Sénat n’a malheureusement plus daigné répondre. La décision a donc été prise de porte plainte contre le Sénat auprès de la CNIL. Voir « Une plainte déposée contre le Sénat pour de graves manquements à la sécurité des Internautes ».

Note : le choix s’est porté sur cet organisme car leur site illustrait au mieux les propos de cet article. L’objectif n’est pas de dénigrer leur travail, mais de faire comprendre au plus grand nombre les risques encourus pour inciter tous les éditeurs de sites Internet à ne plus stocker les mots de passe de leurs utilisateurs en clair.

Note 2 : pour stocker les mots de passe de façon sécurisée, suivez les recommandations de l’OWASP.

MAJ du 05/12/2020 : ajout du fait que les deux versions du site du Sénat, sécurisée et non sécurisée, amène l’utilisateur vers un formulaire non sécurisé.
MAJ du 20/12/2020 : ajout des recommandations de la CNIL.
MAJ du 17/04/2021 : ajout de l’annonce de la plainte contre le Sénat.
MAJ du 11/10/2021 : ajout des recommandations de l’ANSSI.

Notes et références

  1. Il existe plusieurs fonctions de hachage, plus ou moins robustes, pour générer des empreintes. Les plus connues sont probablement MD5 et SHA.
  2. Contrairement aux fonctions de hachage, les fonctions de chiffrement sont étudiées pour permettre de crypter et de décrypter le texte.
  3. Étant donné le faible nombre de caractères d’une empreinte et l’infinité de possibilités des textes à chiffrer, il existe forcément plusieurs textes avec la même empreinte. On appelle ce phénomène des collisions.
  4. Des méthodes permettent de retrouver la correspondance de certaines empreintes à l’aide de ce qu’on appelle des Rainbow table.
  5. OWASP : Open Web Application Security Project (owasp.org).
  6. Le site Internet de l’Assemblée Nationale présentait des problèmes de sécurité, car l’ensemble de ses pages n’étaient pas sécurisées avec HTTPS. Voir « Protégez vos utilisateurs en sécurisant votre site Internet avec HTTPS ».
  7. Les dépenses informatiques du Sénat en 2019 sont de 4 616 164 € (source : senat.fr).