Le mot de passe idéal pour plus de sérénité

Petit coup de frayeur chez les clients et les webmasters "amateurs" en cette fin de juillet avec le piratage d'un des principaux serveurs du désormais incontournable (quoique) et très connu hébergeur OVH.

A trop vouloir faire les malins... OVH, qui a souhaité être partenaire de la Nuit du hack du 23 juin, s'est vu hacké pile poil un mois plus tard. Coïncidence ou volonté délibérée ?

C'est peut-être le moment de faire un point sur la sécurisation de base de ses sites, espaces web et tout ce qui requiert un accès protégé, à savoir le choix d'un mot de passe efficace.


Pas question ici d'enter dans la complexité qu'est la sécurisation des données. Cet article s'adresse le plus simplement possible à ceux qui souhaitent juste protéger leur données aussi bien que possible tout en sachant comment et pourquoi il faut une réflexion minimum sur le choix de ses mots de passe.

Un mot de passe est un moyen d'authentification pour utiliser un service ou des données dont l'accès est protégé. Ce qui implique qu'il ne puisse être connu de tous et qu'il faut donc prendre des précautions autant coté utilisateur que développeur pour les gérer au mieux.

Le premier point en matière de protection est de faire attention à son entourage au moment de l'utilisation du mot de passe. On ne laisse jamais un mot de passe inscrit sur un post-it, même pour faire plaisir aux collègues... Pour les plus parano, jeter un rapide coup d'oeil par dessus son épaule peut freiner une personne un peu trop curieuse.

Le second point est la sécurisation du matériel. Les principes de bases sont :

  1. Sécuriser son PC avec un antivirus et un firewall à jour et officiel (un AV ou un FW crackés peuvent être piégés).
  2. Ne jamais se connecter à des espaces protégés sur d'autres machines que les siennes.
  3. Eviter toute sauvegarde de mots de passe en clair sur votre machine.

Comment est géré un système d'authentification ?

Le mot de passe doit préalablement être défini, soit par le développeur, soit par l'utilisateur. Une fois fait, il doit être stocké dans une base afin de servir de comparaison lors de l'authentification.

Evidement, tout comme pour l'utilisateur, interdiction d'enfreindre la règle établi précédemment : pas de sauvegarde du password en clair. Le travail du développeur va être de rendre le mot de passe stocké illisible en cas, justement, de piratage. C'est là qu'intervient le chiffrement et/ou le hachage.

Le chiffrement (ou cryptage) ?

Le principe du chiffrement est de rendre incompréhensible un mot ou ensemble de mots à quiconque ne possède pas la clé de décryptage.

L'exemple le plus connu est de remplacer chaque lettre par le chiffre équivalent à sa place dans l'alphabet, ainsi, le mot "zebulon" nous donnera "26 5 2 21 12 15 14". Malheureusement, quelque soit la complexité de la clé, toute information cryptée est réversible, il suffit juste d'avoir de l'expérience et du temps.

Avec la puissance sans cesse augmentant de nos machines, inutile de vous dire que tout cryptage est plus ou moins facilement cracké. Mais le plus intéressant, et que la validation d'une authentification ne requiert pas obligatoirement la réversibilité du mot de passe, mais simplement une comparaison, c’est là qu'interviennent les algorithmes de hachage (hash).

Le hachage (ou hash) ?

Le principe du hachage va être de rendre une information irréversible. Pour cela, un algorithme mathématique va créer à partir d'un mot ou d'un ensemble de mot une chaine de caractères de longueur fixe.

L'algorithme le plus connu est le Message Digest 5 (MD5), pourtant déconseillé depuis 1996, qui transforme "zebulon" en "eb1ec90d51150748189a5c844d9faa45". Changez une seule lettre et c'est l'ensemble de la chaine qui est modifiée. Il en sera de même avec des chiffres, l’accentuation, la ponctuation, des caractères spéciaux, etc...

Le hash est donc clairement la solution, mais encore faut-il qu'il soit d'un niveau de sécurité élevé, ainsi il est recommandé aujourd'hui d'utiliser l'algorithme SHA-256 voir SHA-512.

Détecter les systèmes sérieux

Evidement même s'il existe de nombreux moyen de protéger un système, vous n'êtes pas à la merci d'un mauvais développeur, ou d'une société laxiste en terme de sécurité, voici une petite liste de vérification pour savoir si oui ou non la gestion password de leur coté vous semble correct.

  • Le service est-il proposé par une société sérieuse et reconnue ou non
  • Vérifier lors de la création de votre compte que le service accepte les caractères spéciaux (autre qu'alphanumérique) pour le mot de passe.
  • Après enregistrement, simulez une perte de password. Si vous recevez un mail avec votre password en clair... fuyez.
  • Testez l'insertion d'un mauvais password plusieurs fois de suite. Un système sérieux doit vous bloquer durant un laps de temps au bout de quelques essais.

Il reste le cas des sites "indispensables" qui se moquent allègrement de la sécurité. Certaines banques, par exemple, demande un code numérique pour accéder au système d'authentification (code souvent joint aux relevés de compte), puis comme mot de passe un simple code de 4 chiffres. C’est totalement inadmissible... mais on ne peut rien y faire. A vous de prendre le risque ou non d'utiliser leur services.

Comment voler un password ?

On ne vas pas faire un cour de hacking, mais juste présenter les différentes techniques afin de bien comprendre comment y échapper.

Coup d'oeil et imagination

La première cause de vol de mots de passes est sans conteste l'ignorance du danger.

Je ne sais pas pourquoi, mais il existe un nombre impressionnant d'utilisateurs qui pensent encore que les mots de passes ne servent à rien à part les emmerder lors de la connexion à un accès limité. Evidement, à ce stade, aucune recherche d'originalité... Hop, le nom du chien, du gamin, la date de naissance, bref, du grand n'importe quoi et qui plus est... inscrit sur un post-it bien en évidence sur l'écran pour que le collègue puisse se connecter.

Inutile d'en dire plus... Une sécurité totalement inutile.

Intrusion et vol

On revient ici sur la base de la sécurité, à savoir, celle de sa machine et son comportement.

On ne le répètera jamais assez, des millions de machines sont attaquées chaque jours et mises sous "contrôle" de pirates. Il leur est alors possible de lire vos documents ou d'espionner vos frappes clavier. Il est primordial d'avoir un anti-virus et un firewall bien configuré et à jour et bien sur d'éviter de surfer sur des sites dits "illégaux".

De la même manière, ne faites jamais confiance à une machine que vous ne connaissez pas. On ne se connecte jamais à des accès protégés depuis des équipements inconnus. Qui sait si un petit malin n'y a pas dissimulé un "keylogger".

Brute Force

Une attaque par brute force consiste à tester une par une toute les combinaisons possibles d'un password. J'en vois déjà certains me dire "ils n'ont pas fini". Bah si... Ils arriveront à leur fin et rapidement.

Il y a un an, Yahoo a vu ses serveurs piratés et 450 000 de ses mots de passes utilisateurs volés. Un développeur en sécurité, après avoir récupéré cette liste, en a dressé des statistiques. Voici les 10 mots de passes qui étaient les plus utilisés chez Yahoo :

  • 123456 : 1666 fois
  • password : 780 fois
  • welcome : 437 fois
  • ninja : 333 fois
  • abc123 : 250 fois
  • 123456789 : 222 fois
  • 12345678 : 208 fois
  • sunshine : 205 fois
  • princess : 202 fois
  • qwerty : 172 fois

... et c'est sans compter les dizaines de milliers de passwords plus diversifiés mais tout autant génériques.

La technique brute force n'est pas réellement un attaque dans le sens ou on ne va pas tester une par une toutes les combinaison au niveau du système d'authentification. On se ferait vite éjecter. Le brute force va créer un dictionnaire de combinaisons entre mots de passes en clair et mots de passes hashés grâce à des centaines voir des milliers de machines surpuissantes.

Le pirate n'a alors qu'à voler des hashs de passwords (et sur certains sites ça peut être très simple) et de les comparer avec le dictionnaire. Vous imaginer alors en voyant la qualité des passwords découverts sur Yahoo! le nombre de comptes privés sur lesquels il pourra s’introduire. D'où l'intérêt de rendre le mots de passe complexe pour espérer qu'il n'existe pas sa concordance dans le dictionnaire des hackers.

Comment définir un password

Avec tout ça, vous avez compris qu'un mot de passe se doit absolument d'être un minimum complexe. Donc, on oubli tous les termes génériques, tout les nom d'oiseaux ou dates d'anniversaire, et on se débrouille pour qu'il soit suffisamment long (8 caractères étant un minimum).

Complexité d'un mot de passe

Qu'entent-on par complexité ? Qu'est qui rend un password difficile à cracker ?

  • Un nombre de caractères utilisés conséquents.
  • Un mélange de lettres (minuscules et majuscules), de chiffres, de caractères de ponctuations et spéciaux.
  • Une limitation dans la répétitions des caractères.
  • Des suites non ordonnées et non structurées. Pas de "1234" ou de "tyui"
  • ...

Au final, on ce retrouve avec des mots de passes du type "kfy58_Hd9?xeG". Avec le supercalculateur chinois Tianhe-2 (1er du top500 des supercalculateurs en juin 2013), il faudra plus de 145 000 ans pour le cracker. Mais comment s'en souvenir ? C'est là qu'intervient le principe de la mnémotechnique.

La mnémotechnique, c'est l'ensemble des méthodes permettant de mémoriser par association d’idées. Voici un exemple simple.

Prenez votre citation préférée. Par exemple "Mieux vaut être seul que mal accompagné". Récupérer l'ensemble des initiales de chaque mot "mvesqma" (1s pour le casser avec Tianhe-2) et alterner majuscule et minuscule "MvEsQmA" (3s). On lui ajoute des chiffres par exemple, une date de naissance, 1970, mais en la scindant en deux et en plaçant les nombres de part et d'autre du password en les inversant et en laissant une lettre à chaque bout "M70vEsQm19A" (24s). On ajoute enfin quelques caractères spéciaux un tiret, par exemple après et avant les nombres "M70-vEsQm-19A" (4 ans).

Là, vous avez enfin un mot de passe mémorisable. A vous bien sur de le rendre encore plus complexe.

Un seul mot de passe ou plusieurs ?

La facilité serait de définir un mot de passe super complexe et de ne servir que de lui, oui, mais si vous vous le faites tout de même cracker, l'ensemble de vos accès privés seront corrompus. De plus, inutile de vous dire le boulot de passer sur tous les services privés pour renseigner de nouveaux passwords.

Comment donc avoir autant de passwords que de services sans que notre mémoire face défaut ? On utilise encore la mnémotechnique.

Un accès sécurisé sur le blog Koxin-L, pas de soucis, vous utilisez votre mot de passe de base "M70-vEsQm-19A" et vous ajouter ce qu'il faut pour le différencier des autres services sans pour autant risquer de l'oublier. Par exemple, prenez les deux premières lettres du nom de domaine ainsi que l'extension et répétez la même méthode que précédemment pour la date de naissance. On a alors "Mcom70-vEsQm-19koA" qui demandera plus de d'un millions d'année à Tianhe-2 pour le casser. Il ne vous reste plus qu'à utiliser cette méthode sur tous les sites sur lesquels vous vous connectez.

Tester son password

Vous avez enfin votre mot de passe ? Il est temps de voir si vous avez correctement réfléchie à sa "dureté". Il existe sur le web des outils permettant de vérifier le niveau de sécurité d'un mot de passe. Inutile de vous rappeler qu'il ne faut en aucun cas le donner, vous ne savez pas si le programme derrière est susceptible ou non de le stocker lui et ses différents hash. A vous de créer un password factice reprenant la structure du votre et de le tester.

  1. Test Intel
  2. Test Kaspersky
  3. Test How Secure Is My Password
  4. Test Password Meter

Comme vous le constaterez les informations fournis varient énormément d'un outils à l'autre. L'intérêt est surtout de nous montrer la complexité à mettre en place pour obtenir la sécurité voulue. Personnellement, en testant sur les deux premier, Intel et Kaspersky, on est dans le bon. Les autres permettant d'avoir des données supplémentaires pour les plus curieux.

Vos avis

N'oubliez pas de noter l'article. ;-)

Message
Expéditeur et validation
Ouch...
Sacré pavé, mais très intéressant pour comprendre l'utilité de créer un mot de passe assez compliqué.

Le coup du truc mnémotechnique, c'est pas mal en effet.
Oui, je n'ai pas réussi à faire plus court pour expliquer pourquoi la complexité d'un pass est primordiale.
Il y avait bien le "arrêtez d'être idiot", mais ce n'est pas assez pour un article et ce n'est pas constructif.

Mon prochain article expliquera pourquoi il ne faut pas faire de trop long article. :-)
Ca va être difficile pour moi...
Il manque une information importante sur le fonctionnement du hashage d'une chaine de caractère (même pour MD5). Une valeur aléatoire d'initialisation va être utilisée comme base de démarrage pour le calcul de l'empreinte. Ainsi une même expression hashée avec une valeur initiale différente va produire deux empreintes complètement différentes.

Sans cette initialisation, le hash serait simplement une bijection entre le mot de passe et son empreinte. Dans ce cas il suffirait de créer une table de correspondance entre les 2 pour casser n'importe quel mot de passe "hashé" quel que soit la longueur de la clé. On reviendrait donc aux attaques par dictionnaire.
La technique du sel.
Je ne l'évoque pas parce qu'à la base cet article est surtout orienté utilisateur.

Les dev ont, en effet, la responsabilité de sécuriser au maximum le hash et le stockage.
L'ajout d'un sel est la base.
Je suis loin d'être un expert en sécurité.

Ce qui avait attiré mon attention c'est que si chaque mot produit le même hash, il suffirait de calculer préalablement tous les hash pour obtenir une table de correspondance. Du coup j'ai creusé cette bizarrerie pour comprendre la notion de sel qui n'est pas mentionnée ici. Je me coucherai moins bête ce soir.

HS : Ce n'est pas pratique que le message soit effacé chaque fois que l'on quitte le formulaire.
Faire un dico, c'est faisable aujourd'hui pour les mots communs et associations, mais pour l'infinité de combinaison de caractères que peut prendre un pass, c'est pas gagné.

(bug corrigé)