Les mots de passe

Une personne réfléchissant à différents mot de passe devant un ordinateur.

Sommaire

  • Une brève histoire des mots de passe
  • Définition des termes
  • Approche mathématique
    • Combinatoire et mots de passe
    • Fonction de hachage
  • Le problème de la fonction hachage MD5
  • Quelques attaques
    • Attaque par force brute
    • Rainbow table
  • Recommandations pour un bon mot de passe
  • Testons vos mots de passe !
  • Quizz
  • Sources, liens et bibliographie

Une brève histoire des mots de passe

Nos mots de passe protègent de nombreuses données sur internet, nos téléphones, nos cartes bleues, etc. Ils sont donc privés, et confidentiels. Il ne nous viendrait jamais à l’idée de les partager. Mais qu’en était-il à l’origine ?

Si l’on revient aux premières utilisations des mots de passe, on remarque que ceux-ci étaient souvent des phrases, attendant une réponse. Ce fut principalement utilisé lors des stratégies militaires. Le mot de passe était alors partagé au sein d'un camp pour communiquer. Une personne utilisait un mot de passe et attendait une réponse précise de la part de son interlocuteur pour pouvoir commencer à communiquer sur des sujets confidentiels. Par la suite, cette utilisation fut étendue à d’autres activités comme par exemple, certaines communautés voulant garder un cercle « privé » utilisaient des mots de passe oraux pour accéder dans des lieux, à prononcer à l’entrée. Un mythe qui rend cette pratique célèbre, c'est l'histoire d'Ali Baba et les 40 voleurs, du recueil des contes de Milles et Une Nuits : "Sésame ! Ouvre-toi !" prononce-t-il devant la grotte des brigands, qui s'ouvre par magie... ( Note : à partir d'un certain point, l'informatique en général semble se confondre avec la magie ).


L’utilisation du mot de passe s’est donc étendue par la suite avec l’apparition des ordinateurs. On estime la première utilisation d’un mot de passe numérique avec l’arrivée du CTSS (Compatible Time-Sharing System ) dans les années 60. Fernando José Corbató, dit Corby, travaillant sur le projet du premier système d’exploitation au MIT, est considéré comme la première personne à avoir appliqué les mots de passe au domaine numérique. Au début, il n'y avait qu’un identifiant et un mot de passe pour protéger les données. Ces mots de passe étaient petits car difficiles à stocker. Si on avait commencé à demander plus d’informations que l’identifiant et le mot de passe, ces informations auraient pris beaucoup trop de place. En 1966, un bug du CTSS a fait apparaître le mot de passe de tous les utilisateurs sur la page du message de bienvenue car la sécurité des mots de passe n’avait pas encore été travaillée.

Dans les débuts des années 70, Robert Morris a développé un système de stockage des mots de passe basé sur la technique du hachage dans le cadre d’UNIX. Pour cela, le système était basé sur une simulation de la machine à crypter de Boris Hagelin (machine utilisée pour crypter/décrypter des messages).

Ce système est apparu pour la première fois lors de la 6ème version d’UNIX en 1974, puis amélioré pour résister aux attaques par dictionnaire grâce à une version modifiée de l’algorithme de DES (algorithme de chiffrement par bloc). Ce système d’identifiants et de mots de passe fut ensuite élargi vers d’autres utilisations comme pour l’accès à notre boite mail, à des forums, à notre téléphone etc. Cet élargissement de l’utilisation des mots de passe amena avec elle de nouvelles failles. En effet, au début, les mots de passe utilisés sur internet n’étaient pas cryptés car les protocoles n’avaient pas été pensés pour ça.

En 1995, le protocole SSL est formalisé, et en 1999 le protocole TLS lui succède. Plusieurs itérations de ce protocole se suivent, avec la dernière étant TLS 1.3 qui apporte le transfert anonyme, des nouveaux algorithmes, et en rend d'autres obsolètes. Mais on s'éloigne du sujet...

De nouvelles techniques permettant de stocker plus d’informations ont permis de mieux sécuriser les mots de passe face aux nouvelles façons de procéder dans les attaques. La biométrie apparaît aujourd'hui comme la dernière évolution des mots de passe, mais il ne faut pas oublier que si notre mot de passe est trouvé, on a toujours l’opportunité de le changer, mais nous ne pouvons pas changer nos paramètres biométriques. Au bout de 10 doigts, on se questionnera sur le caractère pratique du déverrouillage de nos téléphones avec nos doigts de pied.

Nous allons donc voir dans cet article, quels sont les moyens d’avoir un mot de passe le plus sécurisé possible.

Définition des termes:

Avant de plonger dans le vif du sujet, prenons le temps de nous mettre d'accord sur les termes que nous utilisons, et leur définitions. Nous allons donc parler de cryptographie, de hachage, de salage et de complexité.

"La cryptographie est une des disciplines de la cryptologie s'attachant à protéger des messages (assurant confidentialité, authenticité et intégrité) en s'aidant souvent de secrets ou clés."

Wikipédia Fr

Quand on parle de hachage, on parle en réalité des fonctions de hachage.

On nomme fonction de hachage, de l'anglais hash function (hash : pagaille, désordre, recouper et mélanger) par analogie avec la cuisine, une fonction particulière qui, à partir d'une donnée fournie en entrée, calcule une empreinte numérique servant à identifier rapidement la donnée initiale, au même titre qu'une signature pour identifier une personne.

Wikipédia Fr

Une fonction de hachage va donc être utile pour, par exemple, être sûr que deux fichiers sont identiques... Mais, dans le cas d'un mot de passe, parfois on préférerait que ça ne soit pas possible. D'où l'intérêt du salage.

Le salage, est une méthode permettant de renforcer la sécurité des informations qui sont destinées à être hachées (par exemple des mots de passe) en y ajoutant une donnée supplémentaire afin d’empêcher que deux informations identiques conduisent à la même empreinte

Wikipédia Fr

Et, quand on a différentes fonctions qui permettent de faire la même chose, comme hacher un fichier, on essaye toujours de choisir la fonction la plus efficace, et donc la moins complexe. On parle donc de complexité.

La théorie de la complexité est le domaine des mathématiques, et plus précisément de l'informatique théorique, qui étudie formellement la quantité de ressources (temps, espace mémoire, etc.) dont a besoin un algorithme pour résoudre un problème algorithmique. Il s'agit donc d'étudier la difficulté intrinsèque des problèmes, de les organiser par classes de complexité et d'étudier les relations entre les classes de complexité.

Wikipedia Fr

On a donc maintenant une bonne idée des différents termes que l'on va retrouver tout au long de cet article... Passons aux définitions mathématiques des fonctions les plus importantes.

Approche mathématique:

  • Combinatoire et mots de passe :

L'analyse combinatoire est une branche des mathématiques qui nous permet de savoir combien de combinaisons possibles pour un mot de passe ayant une longueur n et un alphabet.

Exemple: On considère un alphabet A de cardinal Card (A) = m, on souhaite compter le nombre de mots de longueur n noté An afin de connaitre le nombre de mots de passe possibles. Si A = {a, b} et n = 4, le nombre de mots de longueur 4 qui peuvent être composés avec a et b est 24 = 16 : aaaa, aaab, aaba, aabb, abaa, abab, abba, abbb, baaa, baab, baba, babb, bbaa, bbab, bbba, bbbb

Cette notion est importante car il existe des attaques qui testent plusieurs combinaisons possibles afin de trouver un mot de passe. Plus le nombre de combinaisons est grand, plus il est difficile de trouver rapidement le mot de passe avec ce type d'attaque.

Combinaisons possibles en ayant comme longueur 4 et en tenant compte de l'alphabet (minuscule et/ou majuscule), chiffres et caractères spéciaux. Par exemple pour la première ligne il y a 264 = 456 976 mots de passe différents.
  • Fonction de hachage:

La fonction de hachage est une fonction qui va calculer une empreinte unique à partir des données fournies. Formellement, il s’agit d’une fonction de l’ensemble des suites binaires (longueur quelconque, non bornée) vers les suites de longueur n.

F : {0, 1}*  → {0, 1}n

{0,1}* représente l’ensemble de toutes les séquences binaires, soit {0, 1, 00, 01, 10, 11, 000, 001, 010…}

{0, 1}n l’ensemble de toutes les séquences binaires qui ont exactement n bits, soit : {0..00, 0..01, 0..10, ….. , 1..11}.

On peut également définir la fonction de hachage de la manière suivante :

Soit une fonction hachage h et un mot de passe x. L’empreinte numérique correspondante est définie comme étant y = h(x).

Pour avoir une bonne fonction de hachage il faut qu’elle soit à sens unique, c’est-à-dire qu’il est impossible en pratique pour un y donné de trouver un x tel que  h(x) = y ; la fonction est facile à calculer mais il est difficile de trouver un antécédent à partir de l'image.

La fonction de hachage doit être résistante aux collisions, pour un x donné, il est impossible en pratique de trouver x’ différent de x tel que h(x’) = h(x). Trouver une collision peut être un vecteur d'attaque important, par exemple deux comptes bancaires ayant la même empreinte unique générée par une fonction de hachage peut donner lieu à une journée intéressante pour le service informatique de la banque.

Un exemple plus concret: si on a la fonction de hachage hash(hellopassword)= 155556985, avec x=hellopassword qui représente le mot de passe. Une attaque par collision va trouver un mot de passe x’ qui permet d’avoir le même résultat que hash (hellopassword), par exemple x’=hellopass2, hash(hellopass2)= 155556985.

Il existe plusieurs fonctions de hachage, les plus connues sont : MD2, MD4, MD5 (16 octets / 128 bits en sortie), SHA (ou SHA-0), SHA-1 (20 octets / 160 bits en sortie), SHA-2 (224 à 512 bits). Cependant, des collisions ont été trouvées dans MD5, SHA0, SHA1, ces fonctions ne sont donc plus sécurisées.

Le problème de la fonction MD5 :

MD5 est une fonction hachage qui calcule une empreinte numérique de 128 bits ou 32 caractères en hexadécimale.

Le problème de cet algorithme est qu’il a une faible résistance aux collisions. En effet, en 2004, des chercheurs chinois ont pu casser la fonction MD5 et une collision complète (deux mots de passe différents qui ont la même empreinte) a été découverte grâce à leur attaque.

Cet algorithme est également efficace et rapide en exécution, ce qui le rend vulnérable vis-à-vis des attaques qui testent plusieurs combinaisons pour trouver un mot de passe, ils pourront le trouver rapidement grâce à l'efficacité de l'algorithme et à l’évolution de la puissance des processeurs.

Quelques attaques:

  • Attaque par brute force:

Les attaques par brute force consistent à trouver un mot de passe en testant successivement toutes les combinaisons possibles. Cette technique est efficace si l’utilisateur a un mot de passe simple.

Si on a par exemple un mot de passe avec 7 caractères (en incluant chiffres, lettres minuscules et majuscules) il existe 3 521 614 606 208 combinaisons différentes. La longueur et la complexité du mot de passe augmentent donc le nombre de combinaisons possible à tester pendant l'attaque.

brute-force-cracking-time.png (1459×972)
Durée d'une attaque par brute force basée sur le nombre de caractères d'un mot de passe

La complexité d'une attaque par brute force est une fonction exponentielle de la longueur du mot de passe, ceci limite donc l'efficacité de cette attaque si on a des mots de passe longs.

L’attaque par brute force est souvent utilisée avec l'attaque par dictionnaire, cette dernière consiste à essayer tous les mots stockés dans un dictionnaire donné pour trouver le bon mot de passe.

  • Rainbow table:

La rainbow table est une structure de données qui stocke un mot de passe et son empreinte. Une attaque par Rainbow table se déroule en deux parties, il faut d’abord générer une table puis trouver un mot de passe à partir de son empreinte grâce à cette table.

Cette technique fonctionne avec les hachages non salés, cependant l'efficacité des tables diminue beaucoup si les fonctions de hachage sont combinées à un sel.

Recommandations pour un bon mot de passe:

À l'heure où nous écrivons ces lignes, les ordinateurs quantiques sont en train de faire leurs apparitions dans des grandes entreprises, et l'une d'elles a même laissé entendre qu'elle avait trouvé un moyen de casser tous les mots de passe. Votre lecture attentive de cet article vous aura prémunit contre des proclamations simplistes, qui sont d'ailleurs plus du ressort d'un mauvais journaliste qu'autre chose.


Les mots de passe ont encore donc de beaux jours devant eux, mais la question se pose quand même de savoir ce qui constitue un bon mot de passe. En effet, les ordinateurs commerciaux sont de plus en plus puissants, et louer une ferme de serveurs quelques heures dans le but de craquer un mot de passe ne coûte que quelques centaines de dollars.

Il convient donc, armé de notre connaissance toute fraîche sur la cryptographie, de voir quels sont les compromis que l'on peut faire pour choisir un bon mot de passe. Et pas qu'un seul d'ailleurs, un pour chaque service et/ou identité que nous avons !

Comme nous l'avons vu précédemment, ce qui compte dans un mot de passe, c'est sa résistance aux attaques par brute force, et le temps qu'il nécessitera pour être trouvé. Naturellement, plus il est long, plus il sera résistant.

Mais retenir un mot de passe long devient vite fastidieux, voire dangereux : si on note nos mots de passe sur un bout de papier que l'on laisse traîner chez soi, les prochains cambrioleurs auront vite fait de siphonner bien plus que votre salon. Pour parer ce souci, on peut utiliser un gestionnaire de mot de passe comme KeePassXC.

La longueur d'un mot de passe est donnée en bits. Mais chaque lettre de notre ordinateur n'est pas codée sur un même nombre de bits. On supposera que l'on utilise le codage UTF-8 pour la suite, et utiliser des caractères moins fréquents réduit aussi la probabilité d'une attaque par dictionnaire efficace.

Résumons : on veut un mot de passe long, mais dont on peut se souvenir, et qui ne soit pas trop simple ou fréquent. On va donc éviter les mots de passe avec de simples caractères ASCII, et plutôt se tourner vers des combinaisons exotiques :

⛔ àux v0l€ur$ : Un emoji, des caractères spéciaux, des espaces, des chiffres, des majuscules et des symboles. Il faudrait 6 sextillions d'années pour le trouver. Soit bien après la mort totale de notre planète, dans l'état actuel des choses.


&xv!#$úÞj;ïëL¢£2k88¿wêR3Âèܺð'L7Ë'u)¬¢äªØÖBê/ø@Ìì:ð®fWRÇáX[ZúýàÅøÇÝ»²!ë£;r5/,u,¹£UK¶{Pðª.¾ø}±µÍâUÙä!ªÂò³ºo&'õ(Í@ÛbL^yîúªfÕÙT : une jungle générée par un gestionnaire de mot de passe. 2 nonagintillions d'années. Vous connaissiez cette unité de temps ?

ûÀçÞÉü¤ß®´¦¸ë³£üÓÝÛÀúÞÞÕ¶ößÆ¡ìÄáÚÍíïÆËàáز硷ð¸½ÓöÎÕ·ãØ©Ú½·ôë÷ãþïôÓß®î§ÍØźöî¹Ê¸õçÜèºâÁ³ý¿áÀ¾Ñõâ¿ÝÔ¡ßþû¡¤ª°Ë¢äü¤ÜõÖ®©ºî¿»¸¸ÀèÀÆÕ : Même taille que le mot de passe au-dessus, mais avec uniquement des caractères ASCII étendu. 150,340,760,887,177,940,000,000,000,000 septuagintillion d'années. Ça suffira je pense…

Toutefois, si on n'utilise pas un gestionnaire de mot de passe, ces mots de passe seraient longs et compliqués à retenir. De fait, retenir des phrases simples, en bon français, telles que Les 100 profs de l'UFR d'informatique sont sympa ! :-) peut être un bon mot de passe, car il contient des espaces, des caractères spéciaux, etc. Il faudrait 87 octovigintillion années pour brute forcer ce mot de passe.

Testons vos mots de passe !

Maintenant que vous êtes incollable sur les mots de passe, essayons de voir si vos mots de passe sont en effet fiables ! L'idée est d'entrer un mot de passe et tester sa robustesse. Évidemment, il serait sage de ne pas entrer ses vrais mots de passe...

Le test c'est par ici

Quizz

Un petit quizz ? C'est peut-être le moyen le plus sympa d'être sûr qu'on a bien compris !

  • C'est quoi un mot de passe ?
  • À quoi sert un mot de passe ?
  • Qu'est-ce qui fait un bon mot de passe ?
  • A quoi sert une fonction de hachage ?
  • Les mots de passe sont-ils stockés en clair dans une base de données ?
  • Quelles attaques peuvent être utilisées pour trouver un mot de passe ?

Sources, liens et bibliographie

  • Codage et cryptographie, Mathématiciens, espions et pirates informatiques. Le monde est Mathématique, Cédric Villiani
  • « Tout sur la sécurité informatique », Jean-François Pillou, Jean-Philippe Bay, Edition Dunod
  • « Cryptographie Théorie et pratique», Douglas Stinson, Edition Vuibert
  • https://fr.wikipedia.org/wiki/Compatible_Time_Sharing_System
  • https://en.wikipedia.org/wiki/Password
  • https://fr.wikipedia.org/wiki/Fernando_Corbat%C3%B3
  • https://www.wired.com/2012/01/computer-password/
  • https://multicians.org/thvv/compatible-time-sharing-system.pdf
  • https://fr.wikipedia.org/wiki/Data_Encryption_Standard
  • http://users.telenet.be/d.rijmenants/en/hagelin.htm
  • https://fr.wikipedia.org/wiki/C-36
  • https://www.cloudflare.com/learning/bots/brute-force-attack/
  • https://blog.codinghorror.com/speed-hashing/
  • http://rickardnobel.se/password-strength-part-1-the-mathematical-basics/

13 Cliquer pour recommander cet article