III.

Protéger votre identité

Qu’est-ce que les sites Web savent à votre sujet ?

C’est vous qui contrôlez l’information que vous confiez aux sites Web que vous consultez. Confiez uniquement aux sites les informations qui leur sont nécessaires pour vous offrir leurs services. Rien de plus. Si l’on vous demande votre adresse, ne l’indiquez que si vous pensez un jour commander quelque chose sur le site en question et vous faire livrer à votre domicile. Même chose pour votre numéro de téléphone, votre nom ou même votre adresse électronique. Moins vous donnez d’informations aux sites Web, moins vous aurez à perdre si quelqu’un vend vos informations ou accède à votre compte.

Exemple

Lorsqu’une fuite de données se produit, celles-ci sont souvent publiées sur Internet et rendues accessibles à tous. Si vous avez choisi le nom de jeune fille de votre mère ou le nom de votre premier animal domestique comme réponse à une question de sécurité, il se peut que cette information soit consultable par tous les utilisateurs de Google. Ce type de questions de sécurité sont intrinsèquement peu sûres, puisque le nom de jeune fille de votre mère, le nom de votre animal domestique ou votre première adresse sont des informations très faciles à trouver.

Et si l’information divulguée est votre mot de passe ? Utilisez-vous ce mot de passe sur d’autres services ? Si oui, tout un chacun peut essayer la combinaison de votre adresse électronique et de votre mot de passe sur d’autres sites. Les informations divulguées sont souvent utilisées dans d’autres attaques avant même d’être publiées.

Les mots de passe représentent généralement la première ligne de défense contre une attaque. Dans les chapitres suivants, nous allons vous présenter d’autres éléments de défense contre les tentatives d’accès à vos comptes. L’approche de « défense en profondeur » est une méthode commune dans le domaine de la cybersécurité. Elle renvoie à l’idée de posséder plusieurs couches de protection autour de l’actif que vous souhaitez protéger. Si l’une des lignes de défense rompt – par exemple votre mot de passe –, les attaquants n’ont pas pour autant accès à vos informations.

Note
Des flèches tentant de passer à travers de multiples couches de défense perforées
Des flèches tentant de passer à travers de multiples couches de défense perforées

La défense en profondeur est un concept utilisé en cybersécurité selon lequel de multiples couches de contrôle de sécurité (des défenses) sont placées d’un bout à l’autre d’un système informatique. L’objectif est de créer de la redondance au cas où un contrôle de sécurité serait forcé ou une vulnérabilité exploitée. Cette redondance peut toucher différentes dimensions de la sécurité – les ressources humaines, les procédures, les aspects techniques ou matériels – sur toute la durée du cycle de vie du système.

Le mot de passe est généralement la première couche de protection de vos comptes en ligne. Avant de nous pencher sur les autres couches de défense, intéressons-nous un peu au fonctionnement théorique des mots de passe.

Les attaques par énumération et noms d'utilisateur

Les attaques par énumération (enumeration attacks en anglais) sont utilisées pour déterminer des noms d’utilisateur valides (la première étape pour obtenir des identifiants de connexion complets). Les pages d’identification et les fonctions du type « mot de passe oublié ? » sont des cibles courantes pour ces attaques. Il peut arriver qu’un site divulgue involontairement des informations sur ses membres par le biais des messages affichés lors des tentatives de connexion : ceux-ci révèlent parfois l’existence d’une adresse électronique ou d’un nom d’utilisateur.

Exemple

Avez-vous déjà accidentellement tapé un nom d’utilisateur erroné et reçu un message d’erreur du type « nom d’utilisateur incorrect » ou « ce nom d’utilisateur n’existe pas » ? Si un site envoie un message du même type révélant que seul le mot de passe est incorrect, les attaquants peuvent s’appuyer sur cette information pour déterminer que le nom d’utilisateur est, à l’inverse, correct. Cela permet aux attaquants « d’énumérer » (de tester) d’immenses listes d’adresses électroniques, par exemple, et de déterminer celles qui possèdent un compte sur le site ciblé. Les sites Web doivent donc privilégier les messages qui ne spécifient pas le problème de connexion, du type « le nom d’utilisateur OU le mot de passe est incorrect ».

La plupart du temps, cette information n’est pas préjudiciable en tant que telle. Cependant, si quelqu’un peut déceler l’existence d’un compte sur un service de rencontre ou d’escorting, cette information peut être utilisée contre l’individu concerné.

Les attaques par énumération peuvent aussi être utilisées pour mieux cibler les attaques par hameçonnage ou faciliter les attaques par force brute (brute force attack en anglais) en réduisant le nombre de cibles potentielles. Nous allons définir hameçonnage et force brute un peu plus tard.

Les attaques par énumération ne ciblent pas uniquement les pages d’identification. Elles peuvent aussi être utilisées lors de la réinitialisation d’un mot de passe ou de la création d’un compte. Lorsque vous créez un compte, par exemple, on vous alerte généralement quand un compte est déjà associé à l’adresse électronique ou au nom d’utilisateur que vous choisissez afin de vous éviter de créer un doublon.

Il ne reste plus ensuite qu’à mettre la main sur votre mot de passe pour se connecter à votre compte. C’est sur ce sujet que nous allons maintenant nous pencher.

Les mots de passe

La plupart des sites Web vous identifient grâce à la combinaison d’un nom d’utilisateur et d’un mot de passe. Comme nous utilisons des dizaines, voire des centaines, de services en ligne, nous tentons généralement de créer des mots de passe mémorisables. Or, les mots de passe faciles à retenir sont également faciles à deviner pour les attaquants. Quand on sait que les mots de passe les plus courants en 2020 étaient 123 456, 123 456 789, qwerty et password (« motdepasse » en anglais), on se rend compte qu’il n’est pas très compliqué de hacker un grand nombre de comptes en tentant d’associer au hasard ces mots de passe à des adresses électroniques.

Les mots de passe les plus courants en 2020

  • 123456

  • 123456789

  • qwerty

  • password

  • 1234567

  • 12345678

  • 12345

  • iloveyou

  • 111111

  • 123123

Les règles obligatoires de création des mots de passe sont depuis de nombreuses années de mauvaise qualité. Si bien que les gens ont appris à créer de mauvais mots de passe. Ces recommandations inadaptées forcent les utilisateurs à créer des mots de passe difficiles à mémoriser, mais aisément déchiffrables informatiquement.

La bande dessinée en ligne XKCD résume bien le sujet de la sécurité des mots de passe (en anglais).

Deux clés de longueur différente
Deux clés de longueur différente

Pour être sûr, un bon mot de passe ne doit pas forcément contenir des symboles obscurs. En général, plus le mot de passe est long, plus il est sûr. Les conditions qui vous imposent d’inclure des symboles, des minuscules, des majuscules et des chiffres ne tiennent généralement pas compte de la difficulté réelle de déchiffrage du mot de passe. Ces conditions augmentent la taille du keyspace (le nombre de combinaisons possibles pour un nombre de caractères donné), mais le même objectif pourrait être atteint en créant des mots de passe plus longs.

Prenons un exemple :

Si l’ensemble de caractères potentiels pour créer un mot de passe se limite aux minuscules de l’alphabet latin (26 lettres) et si le mot de passe doit être composé de 6 caractères choisis au hasard, alors le keyspace s’élève à :

266= 308,915,776 mots de passe potentiels

Note

on utilise souvent le caractère ^ pour « puissance ». On peut également écrire 26. Pas besoin de connaître le raisonnement mathématique, mais si vous êtes curieux/se, vous pouvez taper 26^6 dans la plupart des moteurs de recherche pour obtenir ce même résultat

Si le mot de passe est composé de 8 caractères, choisis au hasard, le keyspace s’élève à :

268= 208,827,064,576 mots de passe potentiels

Comme vous pouvez le voir grâce à ces deux exemples, on obtient un keyspace bien plus grand en utilisant seulement deux lettres supplémentaires. Prenons un autre exemple de mot de passe de 6 caractères en employant cette fois également les majuscules. On double alors le nombre de caractères utilisables pour créer le mot de passe.

526= 19,770,609,664 mots de passe potentiels

Vous remarquerez immédiatement que ce keyspace est bien plus grand que le tout premier. Néanmoins, il est bien loin de celui-ci du mot de passe de 8 caractères qui n’était pourtant composé que de minuscules. Voyons ce qui se passe quand l’on ajoute dix symboles courants, p. ex. !, «, #, ¤, %, &, /, (, ) et =. Le nombre de caractères disponibles passe à 62.

626= 56,800,235,584 mots de passe potentiels

En ajoutant 10 caractères supplémentaires, nous avons environ quadruplé le keyspace. Ce faisant, nous avons aussi rendu le mot de passe bien plus difficile à retenir. Et le keyspace est toujours bien plus petit que l’exemple de 8 caractères.

Un mot de passe complètement aléatoire résiste aux attaques par dictionnaire (dictionary attacks en anglais). Les attaques par dictionnaire tirent parti du fait que les utilisateurs créent des mots de passe mémorisables composés de mots du dictionnaire, de noms ou de variations de ceux-ci. La seconde édition du Oxford English Dictionary en 20 tomes contient 171 476 entrées. Un mot de passe composé d’un seul mot correspond donc à un keyspace d’environ 170 000. Certes, ces mots ne sont souvent pas utilisés tels quels, mais ils sont généralement modifiés de façon à rester mémorisables.

Exemple

Prenons l’exemple des mots de la langue anglais et déterminons la taille du keyspace. Choisissons trois mots anglais du dictionnaire et créons un mot de passe avec cette combinaison. Le calcul serait alors :

170 000^3 = 4 913 000 000 000 000.

Un mot de passe de ce type est bien plus facile à mémoriser et bien plus complexe à déchiffrer – du moins si l’on ne tient compte que des attaques par force brute. Mais d’autres facteurs peuvent expliquer qu’un keyspace n’est pas aussi grand qu’on pourrait le penser de prime abord. La plupart des anglophones utilisent un vocabulaire d’environ 3 000 mots. Cela se reflète dans leurs choix de mot de passe. En outre, les gens ne comprennent pas ce que signifie « aléatoire ». Une combinaison de mots soi-disant aléatoire peut aisément être influencée par un contexte précis, nos pensées ou des mots sélectionnés par le passé. Si vous vous contentez d’utiliser un mot de passe composé de différents mots, ne vous fiez pas à ce que les humains considèrent comme aléatoire : utilisez plutôt un générateur automatique.

Pour en savoir plus sur cette méthode

Quand ils créent des mots de passe, les gens tentent souvent de complexifier des mots du dictionnaire en substituant certains des caractères ou en y accolant des chiffres. Malheureusement, ces modifications sont généralement assez convenues et un ordinateur n’aura aucun mal à essayer toutes les variations prévisibles. Remplacer la lettre « o » par le chiffre « 0 » rend le mot de passe plus difficile à retenir sans pour autant augmenter significativement la charge de travail de déchiffrage pour l’ordinateur. Ces substitutions simples n’ont pas d’effet notable sur la taille du keyspace. Pas plus que l’ajout de chiffres ou de l’année en cours à la fin ou au début du mot. Les logiciels de déchiffrage des mots de passe et ceux qui les conçoivent connaissent très bien toutes ces astuces et en tiennent compte.

L’entropie

La robustesse d’un mot de passe n’est généralement pas seulement mesurée par la quantité de combinaisons possibles. « L’entropie » est un terme aussi utilisé en cybersécurité : c’est une mesure de la difficulté présumée du déchiffrage d’un mot de passe dans la vie réelle. L’entropie est calculée en appliquant la fonction mathématique « log2 » au keyspace (pas de panique, vous n’avez pas besoin de la partie mathématique – si vous souhaitez tout de même essayer, vous pouvez taper la formule dans la plupart des moteurs de recherche pour obtenir le résultat. Tapez par exemple « log2(26^8) » sur www.google.com).

Qu’est-ce que l’entropie en pratique ? Le résultat du calcul d’entropie permet de mesurer la robustesse du mot de passe en fonction de cette échelle :

< 28 bits = très faible : suffisant pour se protéger contre les membres de sa famille.

28-35 bits = faible : suffisant pour se protéger contre la plupart des individus ; niveau de robustesse souvent utilisé pour les mots de passe d’ouverture de session sur un ordinateur

36-59 bits = acceptable : plutôt sûr, ce niveau convient aux mots de passe des entreprises et des réseaux.

60-127 bits = robuste : peut être utilisé pour protéger des informations financières.

128+ bits = très robuste : souvent exagéré.

Note

Dans notre exemple précédent, l’entropie du mot de passe à 8 caractères est donc égale à :

log2(26^8) = 37,6 bits

Un mot de passe de 6 caractères aura une entropie de :

log2(26^6) = 28,2 bits

Dans l’exemple ci-dessus, l’entropie des 8 caractères aléatoires (environ 37 bits) est à peine suffisante pour entrer dans la catégorie « acceptable ». Un mot de passe de 15 caractères (70 bits) serait considéré comme « robuste », mais pas « très robuste ». La nature exponentielle de ces calculs explique que l’allongement d’un mot de passe a une influence considérable sur la difficulté de son déchiffrage.

L’entropie est une donnée intéressante, mais ce n’est pas une mesure parfaite. Un mot de passe de 8 caractères peut tout de même être considéré comme faible – nous allons vous expliquer pourquoi dans la partie suivante.

Comment les mots de passe sont-ils « cassés » ?

Pour saisir la façon dont les mots de passe sont « cassés », nous devons tout d’abord comprendre comment ils sont protégés.

Les mots de passe sont généralement stockés dans une base de données. Ils sont « chiffrés » grâce à ce que l’on appelle un algorithme de hachage (hash algorithm en anglais) unidirectionnel. Un algorithme de hachage chiffre votre mot de passe pour en faire un texte codé. Il ne fonctionne que dans un sens. Un texte « haché » grâce à un algorithme de hachage sécurisé ne peut pas être inversé, même si l’algorithme est connu. Après le traitement du mot de passe par l’algorithme de hachage, on obtient un hash (littéralement « un haché » en français). Un hash est une chaîne de caractères composée de lettres et de chiffres représentant la version encodée du texte original.

Note

Un hash n’est pas un chiffrement à proprement parler. Le chiffrement est un procédé bidirectionnel qui peut être inversé, tandis que le hachage est à sens unique. Si l’algorithme de hachage fonctionne comme prévu, la valeur de sortie ne peut pas être retrouvée.

Vous pouvez en apprendre plus sur les fonctions de hachage cryptographique sur Wikipédia.

Prenons l’exemple d’un algorithme de hachage bien connu et désormais considéré comme non sécurisé : MD5. Si vous « hachez » le mot « password » (« mot de passe » en anglais) en utilisant MD5 vous obtenez le hash encodé suivant : « 5f4dcc3b5aa765d61d8327deb882cf99 ».

Un petit changement dans le texte d’origine créera une valeur de hachage complètement différente. C’est l’une des autres fonctions d’intérêt d’un hash. Il est impossible de déterminer le hash à partir du texte original.

Par exemple, le hash MD5 du mot « passwore » est « a826176c6495c5116189db91770e20ce », ce qui n’a rien à voir avec le hash de « password ».

Quand un(e) utilisateur/trice souhaite ouvrir une session, le texte d’origine (ou « texte en clair ») du mot de passe est « haché ». Le hash qui en résulte est comparé à la valeur de hachage (la version encodée du mot de passe) stockée dans la base de données. Si les deux sont identiques, l’utilisateur/trice est autorisé(e) à se connecter.

Compte tenu de ces protections (c.-à-d. la transformation des textes en clair des mots de passe par brouillage en code aléatoire, grâce à un algorithme irréversible), comment les mots de passe peuvent-ils tout de même être piratés ? Pourquoi les algorithmes de hachage plus anciens sont-ils vulnérables ?

Note

Une valeur de hachage (la version encodée du mot de passe d’origine) peut être prétraitée et stockée dans une grande base de mots de passe. Ces fichiers sont nommés rainbow tables (littéralement « tables arc-en-ciel » en français). Elles sont faciles à trouver en ligne. Par exemple, vous pouvez aisément trouver un fichier avec tous les hashes créés à partir de l’algorithme MD5 pour n’importe quel mot de passe jusqu’à 10 caractères, composé d’un mélange de minuscules et de chiffres (abcdefghijklmnopqrstuvwxyz0123456789).

Les rainbow tables sont créées en soumettant des dictionnaires de mots de passe trouvés sur Internet (des mots authentiques du dictionnaire et des listes de mots de passe courants) à des algorithmes de hachage. Les hashes encodés obtenus sont classés avec les textes en clair des mots de passe d’origine correspondants, puis utilisés pour hacker des comptes utilisateur.

Une salière
Une salière

« Salé » et « haché »

Le hachage est-il pour autant obsolète pour la plupart des mots de passe ? Absolument pas ! La bonne nouvelle, c’est que différentes techniques astucieuses permettent aux programmeurs de complexifier la détermination du hash d’un mot de passe. Une fonction de hachage est souvent appliquée plusieurs fois en vue de retarder les attaques par force brute en augmentant le temps nécessaire pour établir le mot de passe.

Les programmeurs peuvent également protéger les mots de passe de leurs utilisateurs en utilisant la technique du « salage » (salting en anglais). Une valeur spéciale, nommée « sel » (salt en anglais), est alors ajoutée au texte en clair, après la saisie du mot de passe par les utilisateurs, mais avant que l’application du hachage, en vue de prévenir le recours aux listes de hashes prétraités (les rainbow tables). Quand il est appliqué, ce sel rend la rainbow table inutilisable. C’est donc une méthode très simple pour empêcher ce type d’attaques.

Par exemple, en utilisant l’algorithme de hachage MD5, si nous ajoutons le sel aléatoire « xhsr2d » au texte en clair « password », soit MD5(« xhsr2dpassword »), on obtient « ebf20a6c99eccaefa0bf4d88a5bd3456 ». Le résultat obtenu est complètement différent du hash d’origine du mot « password » généré par MD5 (voir ci-dessus) que n’importe quel(le) hacker peut trouver dans une rainbow table sur Internet. Grâce au salting du mot de passe, même si l’on dispose d’une rainbow table qui comprend les hashes de tous les mots de passe de dix caractères composés de minuscules, il est impossible de retrouver le mot de passe correspondant au hash. On pare donc à l’utilisation de hashes prétraités.

En pratique, le salage pousse les attaquants à utiliser des attaques par force brute pour chaque mot de passe afin de hacker les hashes encodés dans une base de données.

Attaquer par force brute signifie que l’on s’appuie sur la puissance de traitement informatique pour essayer – à partir d’un programme – différents hash, jusqu’à trouver le mot de passe correspondant à la valeur de hachage. Les fonctions de hachage dépendent de la difficulté de créer deux messages différents produisant la même valeur de hachage. Quand cela arrive, on parle de collision. Si une fonction de hachage est forcée à générer les mêmes valeurs pour différentes données saisies, on considère qu’elle est cassée.

Note

Il est parfois complexe de déterminer un mot de passe par le biais de la force brute. Les ordinateurs modernes permettent de calculer des milliers de hashes par seconde. Les cartes graphiques des ordinateurs de pointe sont des équipements spécialisés très efficaces en matière de calculs de hashes. Certaines peuvent calculer plusieurs milliards de hashes par seconde.

Toutefois, un mot de passe de quinze minuscules peut avoir 1 677 259 342 285 725 925 376 variations. Traiter cette quantité de hashes à une vitesse d’un milliard de hashes par seconde vous prendra un peu plus de 50 000 ans. Le temps de calcul tombe à environ 3,5 minutes pour un mot de passe de 8 caractères.

Les utilisateurs de services en ligne ne peuvent généralement pas s’assurer que des mesures de préventions disponibles ont bien été utilisées par les développeurs. Vous devez donc partir du principe que des rainbow tables sont susceptibles d’être utilisées contre vos mots de passe. Vous feriez donc mieux d’opter pour des mots de passe longs qui rendent impossible l’utilisation des rainbow tables. Songez à l’exemple précédent : en ajoutant sept caractères à votre mot de passe, vous rendez la vie des hackers BEAUCOUP plus difficile !

Next section
IV. Comment sécuriser vos mots de passe ?