Mots de passe

Le Mot de passe, "la classe à Dallas"!

C'est le sujet de sécurité par excellence car vous avez autant d'identifiants que vous possédez de comptes sur les sites Web : compte en banque, sécurité sociale, impôts, sites commerciaux, etc... on atteint plus de 100 comptes sans forcer ! Pour vous authentifier à ces comptes, il faut renseigner un identifiant qui est unique (un numéro, une adresse email qui vous sont associés) et un facteur de connaissance (ce que l'on sait), de possession (ce que l'on a), ou inhérent (ce que l'on est). Le facteur le plus commun actuellement utilisé est encore celui de connaissance, qui prend le plus souvent la forme d'un mot de passe. Ce mot de passe doit donc être robuste. D'abord lors de sa création, en respectant des caractéristiques précises que nous détaillerons un peu plus loin (cette partie là est de votre responsabilité), mais aussi pendant son stockage sur le serveur du site sur lequel vous allez vous identifier (et là c'est la responsabilité du site hôte). Comme il faut commencer par comprendre comment fonctionne le système avant de l'appliquer, c'est parti :

Qu'est-ce qui se passe lorsque je veux m'authentifier sur un site ?

1 - Côté serveur :

Obligations.

Le couple identifiant/mot de passe étant la clé permettant de vous donner accès à votre compte, le site sur lequel vous cherchez à vous authentifier compare la saisie réalisée avec les données stockées dans une base de données dédiée : concordance entre votre saisie et les infos du serveur => accès accordé.

On perçoit tout de suite que la sécurité de cette base de donnée est un élément important. Tellement essentiel même que l'article 121 de la loi Informatique et Libertés lui donne force de Loi : "Le responsable de traitement est tenu de prendre toutes précautions utiles, au regard de la nature des données et des risques présentés par le traitement, pour préserver la sécurité des données et, notamment, empêcher qu’elles soient déformées, endommagées, ou que des tiers non autorisés y aient accès".

Les moyens à mettre en oeuvre sont précisés : "Les mots de passe ne doivent jamais être stockés en clair. Lorsque l’authentification a lieu sur un serveur distant, et dans les autres cas si cela est techniquement faisable, le mot de passe doit être transformé au moyen d’une fonction cryptographique non réversible et sûre, intégrant l’utilisation d’un sel ou d’une clé. Il existe aujourd’hui des fonctions spécialisées qui permettent de répondre à ce besoin, comme Scrypt ou Argon2, cités par l’ANSSI".

Sachez que si l'administrateur d'un site ne prend pas les précautions nécessaires, il s'expose à de lourdes sanctions : "La CNIL peut contrôler, sur la base d’une plainte reçue ou de sa propre initiative, tout responsable de traitement, que ce soit à distance, en ligne, sur pièces ou dans les locaux de l’organisme concerné. En cas de manquements graves aux principes de sécurité, elle peut ensuite mobiliser l’ensemble de sa chaîne répressive et prononcer des sanctions allant jusqu’à 4 % du chiffre d’affaires mondial ou 20 millions d'€".

Avant d'aller plus loin, il est instructif de regarder plus en détail les bonnes pratiques mises en place par nos amis informaticiens pour se conformer à ces directives. Et il faut espérer qu'ils soient bien au fait de l'état de l'art (car le nombre important de "hacks" réussis chaque année peut poser question...). La CNIL mentionne aussi des "fonctions spécialisées comme Scrypt ou Argon2", cela est bien mystérieux, de quoi parle t-on ?

Moyens techniques.

Nous venons de voir qu'il est interdit en France de stocker sur un serveur les mots de passe de ses utilisateurs en clair, il existe donc 2 solutions possibles pour respecter ce principe : chiffrement ou hachage. Chiffrement Le chiffrement est l'action de transformer un message ou une donnée à l'aide de la cryptographie (du grec ancien "kruptos" ou caché et "graphein" ou écrire). Cela ne date pas d'hier et encore moins de l'informatique. On a eu besoin de tous temps de protéger des messages de la curiosité, il est d'ailleurs souvent fait mention du code César (l'empereur) comme étant l'un des premiers à l'avoir mis en oeuvre. Pour rendre ses messages incompréhensibles, il décalait les lettres de 3 positions (D à la place de A par ex). Ce décalage représente la clé de chiffrement de cette méthode. Pour rappel, il existe 2 types de clés de chiffrement, symétrique (on utilise la même clé pour chiffrer et déchiffrer) et asymétrique (on utilise une paire de clés dont la publique sert à chiffrer et la privée à déchiffrer).

Sans rentrer à nouveau dans le détail, le principe même du chiffrement (et non cryptage), est bien d'être réversible. On doit absolument être en mesure de récupérer la donnée d'origine en clair après le traitement par la clé de déchiffrement. Donc aussi sûre que puisse être cette technique, elle n'est pas adaptée au stockage des mots de passe.

Hachage Le hachage est l'application d'une fonction qui permet de ne pas stocker les mots de passe en clair dans la base mais uniquement une empreinte de ces derniers. La conséquence directe est que même en possession du mot de passe haché, l'attaquant ne pourra pas s'authentifier à votre place. Les fonctions utilisées pour ce hachage étant non réversibles, elles répondent au besoin => validé.

La fonction de hachage transforme une donnée d'une taille quelconque en une donnée unique toujours de même taille. Cette taille variera bien sûr selon la fonction choisie. L'ANSSI recommande l'utilisation de fonctions de hachage Scrypt ou Argon2 car elles sont plus lentes à calculer et plus gourmandes en ressources, donc plus compliquées à "casser". Pour info, Argon2 est le vainqueur du Password Hashing Competition. Je ne rentrerai pas dans le détail mais vous pouvez faire un tour sur le net si vous avez de l'appétence pour cela. Ce qu'il faut retenir, c'est que les bonnes pratiques (et le bon sens) dictent de ne pas utiliser des algorithmes obsolètes, comme le sont les fonctions de hachage MD5 et SHA-1. Sinon ? Et bien c'est comme s'ils n'étaient pas hachés ! Les 2 chaînes de caractères suivantes sont les résultats de hachage MD5 de 2 des mots de passe parmi les plus utilisés dans le monde. Tapez les dans un moteur de recherche et vous comprendrez... 21232f297a57a5a743894a0e4a801fc3 e10adc3949ba59abbe56e057f20f883e

Hash MD5 en lecture directe sur Internet

Afin de se prémunir contre la probabilité que la conversion des hash en mots de passe soit présente sur le web comme les cas ci-dessus, l'administrateur a la possibilité de renforcer la sécurité du hachage par l'adjonction d'un sel, qui sera unique pour chaque utilisateur. Le sel est une chaine de caractère aléatoire ajoutée au mot de passe avant de le hacher, Cela permet de rendre cette empreinte unique même si 2 utilisateurs utilisent le même mot de passe, d'éviter que le hash se retrouve lisible sur internet (voir plus haut) ou soit présent dans une Rainbow Table (voir plus bas les techniques d'attaque de mots de passe). On peut également ajouter une épice d'une autre manière au mot de passe avant le hachage en utilisant un poivre. Contrairement au sel, cette chaine de caractères ajoutée au mot de passe est la même pour tous les utilisateurs, mais n'est alors plus stockée en base de données mais par exemple présente dans les sources de l'application. Enfin on peut également faire passer plusieurs itérations au hachage pour augmenter son efficacité.

En résumé : l'administrateur souhaitant protéger les mots de passe de ses utilisateurs a les moyens (et l'obligation) de bien cuisiner faire son travail : Hachage plus ou moins fin du mot de passe avec un des algorithmes préconisés, salage et poivrage.

Voyons maintenant les bonnes pratiques côté utilisateur, puisque c'est sur cette partie là que porte votre responsabilité.

2 - Côté utilisateur :

Nous avons fait le tour de la responsabilité incombant aux sites, voyons maintenant quelles sont les nôtres, nous les utilisateurs, et ce que veut dire, "sécurité" lorsqu'on parle de mot de passe. Les recommandations complètes de la CNIL (toujours) à ce sujet seront une lecture bien utile : https://www.cnil.fr/fr/securite-authentifier-les-utilisateurs. Pour résumer, la longueur et l'entropie nécessaire que doit respecter le mot de passe se mesure en bits, c'est le mètre étalon de votre sécurité et il est recommandé d'atteindre 128 bits, ce qui représente la taille de clé de l’algorithme de chiffrement standard AES, qui est une référence.

"Force" nécessaire du mot de passe selon les conditions de mise en oeuvre (source ANSSI) :

  • 13 bits dans le cas d'un matériel détenu par l'utilisateur avec blocage après 3 échecs : code PIN à 4 chiffres (entre 0 et 9) s'il est accompagné d'une restriction.
  • 50 bits dans le cas où des mesures complémentaires ont été mises en oeuvre du type temporisation d'accès sur échec : mot de passe "classique" à 8 caractères choisis parmi 62 (0-9, A-Z, a-z).
  • 80 bits dans les autres cas : mot de passe d'au moins 12 caractères choisis parmi 90 (alphanumériques, maj/min, caractères spéciaux étendus).
  • l'ANSSI préconise maintenant > 100 bits ce qui correspond à 20 caractères.
Force mots de passe

On note malgré ce qu'on lit ici ou là, que la longueur du mot de passe influe plus sur sa "force" que la diversité de ses caractères car elle est calculée avec la formule N exposant L, (N étant le nombre de caractères possibles et L la longueur). Dans le cas d'un mot de passe utilisé pour se connecter à un compte sensible, un mot de passe complexe d'au moins 20 caractères est nécessaire, 12 pouvant suffire pour un compte qui le sera moins. Une illustration très parlante dans le tableau ci-dessous avec le temps nécessaire pour cracker un mot de passe avec des moyens matériels de 1er plan en fonction de la taille du mot de passe.

Temps crack mots de passe

Une fois que nous avons parlé de la taille (et on voit que c'est important quoiqu'en disent certains), il faut parler de la prédictibilité, c'est à dire la méthode utilisée pour créer le mot de passe. La sécurité du mot de passe est en effet d'abord assurée par son caractère aléatoire, la devinabilité l'affaiblit grandement : on comprendra aisément que le mot de passe "Monchien@7ans" sera plus facile à trouver que "G#jz5La7FE@3y", ils sont pourtant de même taille et utilisent tous deux caractères alphanumériques, majuscules, minuscules et caractères spéciaux... Le temps nécessaire pour cracker un mot de passe "faible" montre que la taille n'a dans ce cas plus du tout la même incidence, elle ne protège plus.

Temps crack mots de passe faible

Pour comprendre pourquoi, jetons un oeil sur les méthodes utilisées pour "casser" des mots de passe. Elles sont plus nombreuses que cela, bien sûr, mais attardons nous un instant sur les 4 plus communes :

  • Attaque par force brute.
  • Utilisation de dictionnaires.
  • Utilisation des fuites de données.
  • Ingénierie sociale.
L'ingénierie sociale.

Il s'agit d'une méthode mettant en jeu des mécanismes de manipulation. Le cyber-criminel joue sur la psychologie humaine pour pousser sa cible à partager des informations confidentielles (appels téléphoniques, hameçonnage par mail, appâtage, sentiment d'urgence, de danger ou avantage imminents). Les résultats, s'ils sont par nature très variables selon la personnalité des victimes, sont généralement d'un très bon rapport et imparables.
=> La parade : informer/sensibiliser tous les utilisateurs à ces risques mais aucune garantie puisque la cible est "consentante".

La fuite de données.

Savez-vous quel est le lien entre les entreprises suivantes (liste non exhaustive) : YAHOO - ALIBABA - FACEBOOK - DROPBOX - TWEETER - DEEZER - CANVA - DAILYMOTION - AUDI - ADECCO - DOMINO’S PIZZA - FORBES - LEDGER - LINKEDIN - NVIDIA - SEPHORA - SNAPCHAT - ZOOM ? Hormis le fait qu'elles sont très connues, elles font partie de la très longue liste des milliers d'entreprises ayant été la cible de pirates qui ont récupéré des teraoctets de données confidentielles. Le site Haveibeenpawned (https://haveibeenpwned.com/PwnedWebsites) liste les plus importantes. Bien sûr, dans le cas ou votre mot de passe fait partie des données fuitées, il peut être foncièrement aussi robuste que vous le souhaitez, il ne sera concrètement pas plus difficile à trouver pour un hacker que peut l'être 123456. Car au-delà d'être prédictible, il est connu et répertorié dans un dictionnaire les 8.4 milliards de mots de passe issus d'une compilation de fuites qui a été postée sur un forum de hackers nous le confirment).
=> La parade : Se tenir informé des fuites qui ont lieu (site Haveibeenpawned), ne pas réutiliser le même mot de passe pour plusieurs comptes, utiliser l'authentification multifactorielle (MFA pour Multi Factor Authentification ou 2FA pour Two Factor Authentification pour les sigles en anglais ).

Les Dictionnaires et Rainbow Tables.

Les dictionnaires sont des bases de données qui compilent des mots, noms et expressions courantes et leurs variations, l'attaquant les teste les uns après les autres. L'efficacité de cette attaque est due au fait que beaucoup de personnes utilisent des mots de passe qu'ils arrivent à retenir, donc usuels et potentiellement présents dans ces dictionnaires (prénoms, âges, dates de naissance, lieux, etc...) Les Rainbow Tables sont des dictionnaires comprenant des listes de mots de passe et leur valeur de hachage associée, leur utilisation est similaire à celle d'un dictionnaire.
=> La parade : mot de passe robuste et créé de façon aléatoire avec un algorithme éprouvé, utiliser l'authentification multifactorielle.

L'attaque par force brute.

Elle consiste à tester toutes les combinaisons possibles de mots de passe l'une après l'autre. Son résultat dépend grandement des moyens mis en oeuvre par l'attaquant, et de la force du mot de passe.
=> La parade : mot de passe robuste, blocage de compte après un nombre limité d’échecs d’authentification, utiliser l'authentification multifactorielle.

Récapitulatif :

Type d'attaque Parade
Force Brute => [Authentification forte / MFA]
Dictionnaires => [Authentification forte / MFA]
Fuite de données => [MFA]
Ingénierie sociale => [Sens critique]

Les 2 précédents tableaux mis à disposition par Hive Security et qui présentent le temps nécessaire pour trouver un mot de passe en fonction de sa méthode de construction, illustrent bien la notion d'authentification forte. Le mot de passe robuste illustre quant à lui la mise en oeuvre de cette authentification forte. Bien qu'indispensable, on constate que celle-ci peut toutefois être prise en défaut par certains types d'attaque. On pourra alors mettre "ceinture et bretelles", rester en sécurité quoi qu'il advienne, en déployant une authentification multifactorielle en complément de l'authentification forte. Cette dernière reste toutefois suffisante contre les attaques ne mettant pas en oeuvre l'ingénierie sociale (lorsque vous donnez à un attaquant les informations qu'il vous demande) ou en cas de fuite de données.

Si vous trouvez que mettre en place ces moyens vire à la paranoïa ou que ça n'en vaut pas la chandelle, cliquez sur le lien suivant pour accéder à quelques chiffres concernant les conséquences du hack de mot de passe : 210 000 usurpations d'identité en ligne et 1.2 milliards d'€ de fraude bancaire chaque année en France.

L'authentification multifactorielle.

Nous venons de voir que l'authentification multifactorielle est un gros "plus" pour la sécurité des mots de passe en ajoutant le production d'un facteur de connaissance supplémentaire. Cela peut être un facteur de possession (de type jeton matériel, authentification mobile, notification push, code temporaire reçu par sms/email ou application dédiée), ou inhérent (identification biométrique ou rétinienne). Les facteurs utilisés (le 1er est le mot de passe = ce que je sais) ne doivent pas appartenir à la même catégorie (le 2nd ne pourra donc pas être un facteur de connaissance comme une question de sécurité). On voit que la 2FA n'est qu'une possibilité de MFA. Une bonne illustration concrète en est par exemple un retrait d'argent dans un automate bancaire : on utilise la CB (ce qu'on possède) pour s'identifier et on renseigne le code (ce que l'on sait) pour valider.

Cette fonctionnalité est de plus en plus souvent proposée sur les sites un peu sensibles, il est donc judicieux indispensable de l'utiliser. La mise en oeuvre de l'authentification multifactorielle est d'ailleurs imposée par une directive européenne pour les services de paiement (DSP2) depuis septembre 2019 et pour les paiements de plus de 30€ depuis mi-2021.

Les sites qui proposent cette indispensable fonctionnalité ne vous permettent que rarement de choisir parmi différents facteurs, ils poussent plutôt par défaut la solution qui leur semble la plus à même de convenir au plus grand nombre de leurs utilisateurs. Mais vous l'aurez deviné ils ne se valent pas tous et facilité d'utilisation ne rime pas toujours avec sécurité...

1 - Technologie OTP.

Pour simplifier, elle utilise le principe de l'authentification symétrique à base de code unique. Celui-ci est généré et haché par l'utilisateur puis comparé avec celui du site pour autoriser ou refuser l'accès.

MFA par SMS (Short Message Service) ou email. Vous vous connectez avec votre couple identifiant/mot de passe, le serveur vous envoie un code à usage unique (OTP pour One Time Password), et parfois à durée limitée (TOTP pour Time-based One Time Password) que vous devez renseigner sur le site pour confirmer qu'il s'agit bien de vous. Cette méthode est à proscrire car le canal de transmission utilisé (le SMS ou l'email) n'est pas sécurisé. Elle est d'ailleurs déconseillée par le National Institute of Standards and Technology (NIST) depuis 2016 car elle ne prouve pas la possession d'un appareil spécifique.
=> Faiblesse : Le SMS peut être capté par un attaquant qui aurait réussi à mettre en place la technique du transfert de SIM (SIM Swapping). Celle-ci permet à un attaquant de récupérer le contrôle du numéro de téléphone de la victime en réussissant à se faire passer pour elle auprès de son opérateur téléphonique, puis en demandant à ce dernier de transférer le N° sur une carte SIM en sa possession (en prétextant par exemple une perte de smartphone). L'email peut également très facilement être compromis (les emails ne sont pas chiffrés).

MFA par application d'authentification. Une clé secrète est partagée entre le site sur lequel vous vous identifiez et une application sur votre smartphone. Cela passe généralement par un QR code ou une suite de caractères (la clé) affichés sur le site qu'on enregistre dans l'appli d'authentification du smartphone. Un algorithme de hachage va ainsi générer un code avec horodatage (TOTP) à intervalle régulier, par exemple toutes les 30s, et le compressera pour obtenir un code à 6 chiffres. Le code ainsi généré par l'appli du smartphone sera saisi sur le site. Le serveur du site comparera ce code avec celui qu'il produit lui-même avec le même algorithme. Si les codes sont identiques, l'accès sera accordé.
=> Inconvénient : Peut être perçu comme complexe par l'utilisateur, peut empêcher l'accès au site en cas de perte du smartphone ou en cas d'application non synchronisée via un cloud. Est-ce vraiment un 2nd facteur s'il est présent sur le smartphone qu'on utilise pour se connecter ? L'algorithme utilisé par défaut (SHA-1) est obsolète. La présence du "secret partagé" présent sur une base de données pose un problème en cas de fuite de données.

2 - Technologie d'infrastructure à clé publique.

Elle utilise le principe d'authentification asymétrique avec un couple de clé publique/privée.

MFA par notification Push. Une paire de clés cryptographiques est générée lors de l'enrôlement sur la fonctionnalité d'authentification du serveur. La clé privée est stockée sur le smartphone et la clé publique est envoyée au serveur. Lors d'une demande d'authentification, un challenge est réalisé entre le serveur et le smartphone. Le succès du challenge valide l'authentification. Ce facteur supplémentaire est simple à utiliser car même s'il nécessite l'installation d'une application, celle-ci n'est pas dédiée à l'authentification. Il n'y a pas non plus de code à copier ou retenir.
=> Inconvénient : Nécessite l'accès à l'application et que le chemin de validation soit clair. Des attaques par bourrage d'identifiants peuvent pousser la cible à valider une notification par lassitude. Le 2nd facteur est dépendant du smartphone sur lequel on lance l'authentification donc problématique en cas de perte de celui-ci.

MFA par FIDO U2F (Fast Identity Online et Universal 2nd Factor). Une clé cryptographique est générée par le jeton matériel (qui peut prendre la forme d'une clé de type Yubikey ou d'une carte) et la clé privée est sécurisée sur le dispositif matériel. La clé publique sera transmise au serveur du site lors de l'enrôlement sur cette fonctionnalité. Lors de la connexion au site pour authentification, le serveur enverra un "challenge" à l'utilisateur. Ce dernier vérifiera qu'il émane bien de lui, en cas de succès il retournera alors une réponse signée numériquement qui autorisera l'accès au serveur.
=> Inconvénient : coût et nécessite d'utiliser en plus un dispositif de back-up, sinon en cas de perte, l'accès aux serveurs sur lesquels est activée cette fonctionnalité sera impossible.

En complément : MFA adaptative avec informations contextuelles. L'authentification à un serveur ne nécessitera un facteur supplémentaire qu'après :

  • Un certain nombre de tentatives de connexion en échec.
  • Une adresse IP différente.
  • Une géolocalisation nouvelle.
  • Un nouvel appareil ou nouvel OS.
  • Etc...

En faisant le tour des différents 2nd facteurs mentionnés, on constate qu'ils sont tous principalement basés sur le facteur de la possession. Et le facteur inhérent mentionné plus haut alors ? Attention, il ne s'agit pas ici d'utiliser le facteur inhérent pour prouver qu'on est bien le propriétaire de son terminal (dans ce cas on est dans le cas du facteur de possession). Mais il s'agit de comparer l'enregistrement qui en est fait en local sur son smartphone avec celui présent sur un serveur distant. Le facteur inhérent, robuste au niveau sécurité, mène en fait à d'autres problématiques liées à la conservation de ces données très particulières que sont nos empreintes biologiques (empreintes digitales, faciales ou rétiniennes). Il n'est donc pas utilisé dans les applications grand public et réservé à des secteurs très spécifiques.

Sécurité des modes d'authentification MFA:

Technologie utilisée Robustesse du facteur
OTP par SMS/Mail => Obsolète
Push on Line => Bon niveau
TOTP => Bon niveau
U2F Fido => Au top

Une fois toutes ces infos digérées, vous pourriez vous dire : c'est bien beau tout ça, mais la sécurité des mots de passe ce n'est pas pour moi, trop compliqué ! Impossible de retenir un mot de passe complexe et long pour chacun de mes sites !! Et en plus je dois y ajouter l'authentification multifactorielle !!!

Présenté comme ça, ça ne donne pas très envie et pourtant nous allons voir que c'est facile à mettre en oeuvre, lisez la suite.