TOUT EST DIT

TOUT EST DIT
ǝʇêʇ ɐן ɹns ǝɥɔɹɐɯ ǝɔuɐɹɟ ɐן ʇuǝɯɯoɔ ùO

mercredi 12 septembre 2012

Comment choisir un bon mot de passe ?

De récentes études montrent que monsieur et madame tout le monde ne savent pas choisir des mots de passe de qualité. Mais qu'est-ce qu'un bon mot de passe ?
Ce n'est pas tous les jours qu'on peut donner comme exemple à suivre un criminel notoire. C'est pourtant le cas en ce qui concerne Daniel Valente Dantas. Ce dernier est un ancien banquier brésilien ayant été convaincu de corruption et accusé de blanchiment. Il purge une peine de dix ans de prison. Pourquoi le présenter comme un modèle ? Cela fait maintenant 4 ans que le FBI essaye sans succès (après que les services brésiliens s'y soient également cassés les dents) de décrypter le contenu de cinq disques durs saisis lors de l'opération "Satyagraha". Le FBI a tenté une attaque en force basée sur des dictionnaires. Cela a échoué. L'idée est tout simplement d'essayer tous les mots de passe des dictionnaires les uns à la suite des autres jusqu'à tomber sur le bon. En l'occurrence l'algorithme de chiffrement utilisé par Dantas était AES (il n'y a pas d'attaques connues actuellement pour casser ce cryptosystème qui est le standard de chiffrement des organisations gouvernementales américaines depuis le début des années 2000) et le logiciel de cryptage TrueCrypt est un logiciel libre : il n'y avait pas vraiment moyen de faire plus malin pour tenter de les décoder. Donc si l'on devait ne retenir qu'une chose de ce qu'a fait M. Dantas c'est bien d'imiter la manière dont il s'y est pris pour choisir ses mots de passe. Ils sont visiblement de bonne qualité. Malheureusement de récentes études montrent qu'on ne peut pas en dire autant de ceux choisis par monsieur et madame tout le monde.
Une étude statistique des mots de passe réellement donnés pour accéder aux comptes hotmail de 10 000 utilisateurs montre que choisir un mot de passe correct d'un point de vue sécurité n'est pas une pratique passée dans le grand public. En effet le mot de passe 123456 est quand même apparu 64 fois ! D'autre part autour de 70% des mots de passe ont une longueur comprise entre 6 et 9 symboles ce qui est très faible. Cela est d'autant plus grave que 42% des mots de passe ne comportent que des lettres minuscules. Comme nous allons le voir de tels mots de passe n'assurent pratiquement aucune sécurité et ne tiennent que quelques minutes tout au plus face à des attaques basées sur l'utilisation de dictionnaires.
Un autre souci majeur de sécurité concernant les mots de passe vient de ces fameuses questions secrètes du type quel est le prénom de votre première petite amie et autres. Il est clair qu'il est beaucoup plus facile de deviner la réponse à votre question secrète que de trouver un mot de passe, c'est bien sûr par là que va commencer à chercher toute personne essayant de pirater votre compte. La recommandation la plus avisée en ce qui concerne ces questions est de ne surtout pas les utiliser ou alors, si vous y êtes obligés, d'entrer une réponse qui soit aussi compliquée à trouver que votre mot de passe. En d'autres termes ces questions secrètes doivent ne servir à rien, car si elles sont utiles cela signifie qu'elles affaiblissent la sécurité de votre compte.
Revenons à la question principale : qu'est-ce qu'un bon mot de passe ? Nous allons tenter de répondre scientifiquement à cette question en nous servant de la théorie de l'information.

L'entropie : le poids de l'information

Qu'une clef USB de stockage soit pleine d'information ou vide ne change pas son poids. C'est une caractéristique de la virtualisation de l'information que d'avoir rendu concret le fait que l'information est un objet virtuel, sans masse, quasiment indépendant de tout support physique. Pourtant l'information représente bien quelque chose et la question de mesurer la quantité de ce quelque chose se pose.
Claude Shannon
C'est en 1948 que Claude Shannon introduit la notion d'entropie pour mesurer l'information. L'idée derrière la définition d'entropie est de considérer que la caractéristique fondamentale de l'information est de réduire l'incertitude.
On peut imaginer l'expérience suivante : supposons qu'on ait un message qu'un examinateur essaye de faire deviner à un joueur. Le jeu se déroule ainsi : le joueur propose une lettre. L'examinateur répond par oui ou non suivant la correction de la proposition, si la réponse est non, l'examinateur indique également quelle était la lettre correcte. Le jeu se continue, lettre par lettre, jusqu'à la fin du message. Il est clair qu'à certains moments du jeu, quand par exemple les lettres "ANTICONST'' ont été révélées, le joueur peut décider les lettres suivantes "ITUTIONNELLEMENT'' sans risque de se tromper. Par contre au début du message il n'a pas de raison de choisir une lettre plutôt qu'une autre (mis à part le fait que les lettres ne sont pas distribuées suivant une loi équiprobable pour les débuts de mots en français, il suffit de regarder un dictionnaire pour s'en rendre compte). Du point de vue du joueur c'est comme s'il essayait de déterminer une valeur au hasard entre 0 et 26 (0 représentant l'espace, 1 représentant 'A', 2 représentant 'B' etc.). La question est de mesurer ce qu'on gagne, en moyenne, à apprendre une nouvelle lettre sachant que le texte qu'on doit découvrir est écrit dans une certaine langue ? Il est à noter que ce jeu a été testé et montre expérimentalement qu'à peu près une lettre sur deux est redondante dans les langues naturelles.
C'est la mesure de cette valeur qu'on appelle l'entropie du message. Plus un message est prévisible plus son entropie est basse, à la limite un mot formé de 17 000 'A' ne contient pas 17 000 informations (la preuve en est d'ailleurs j'ai pu décrire ce mot dans une phrase assez courte), son entropie sera de 14 bits (il s'agit du logarithme en base 2 de 17000) car en gros il me suffit de connaitre sa taille pour connaitre le mot. Comme en informatique tout s'écrit avec des 0 et des 1 on choisit d'exprimer l'entropie en nombre de bits qu'il faut pour représenter l'information. Inversement une suite totalement aléatoire de 0 et de 1 de taille n aura une entropie de n, car on ne peut pas la décrire plus économiquement qu'en l'écrivant (c'est même la définition scientifique d'une suite aléatoire).
Quelques ordres de grandeur Simplifions le problème : le jeu consiste maintenant à deviner un chiffre secret écrit en binaire (in fine tout ce que vous écrivez sur un ordinateur sera transformé en un tel chiffre y compris votre mot de passe). À partir de quelle taille est-il illusoire de faire une attaque en force (c'est-à-dire d'essayer tous les chiffres binaires d'une certaine taille comme le FBI a tenté de le faire sur les disques durs de Dantas) ? Le temps mis pour trouver le chiffre secret dépend directement du temps pris par chaque test. Partons du principe qu'on puisse faire 1015 tests par seconde (cela correspond à l'ordre d'idée du nombre d'opérations arithmétiques simples que les supercalculateurs atteignent actuellement) ce qui est une approximation très conservatrice. Un adversaire très riche pourrait mettre plusieurs ordinateurs en parallèle, ce qui n'est pas inimaginable quand on songe aux fermes informatiques de sociétés comme Google ou de services gouvernementaux tels que la NSA. Supposons que notre adversaire en ait 1000 et donc au final une capacité de 1018 tests par seconde. Le tableau suivant donne le temps mis en moyenne pour une attaque en force sur un chiffre binaire :
taille en bits temps d'énumération
56
17,7 jours
64
145 ans
128
9,06 x 1028 ans
256
3,52 x 10 84 ans
512
5,32 x 10 196 ans

Comme on peut le constater les temps explosent littéralement avec l'augmentation de la taille du code à tester. Pour donner un ordre d'idée l'âge de l'univers est estimé à 13,7 x 109 ans et donc une attaque en force sur 128 bits prendrait bien plus de temps que cela ! D'ailleurs il existe un argument physique sur le fait qu'une clef de 128 bits ne puisse être attaquée en force. Il s'agit du principe de Landauer. Les lois de la physique impliquent qu'il existe un niveau minimum d'énergie pour en changer la valeur d'un bit dans une mémoire d'ordinateur. Cette valeur minimale est k T ln(2), où k est la constante de Boltzmann et T la température en degré Kelvin à laquelle l'ordinateur fonctionne. Juste énumérer tous les chiffres à 128 bits nécessiterait donc (avec un ordinateur parfait, c'est-à-dire sans perte d'énergie inutile) selon cette formule 1018 Joules, soit 30 gigawatts sur une année ou de manière équivalente 262,7 terawatts/heure. Encore pour fixer les idées il faut savoir que la consommation totale d'électricité en France pour l'année 2010 s'élevait juste à un peu plus du double de cette valeur soit 550,3 terawatts/heure... Il n'y a même pas assez d'énergie dans l'univers tout entier pour une attaque en force sur un chiffre de 256 bits.

L'entropie des mots de passe

Pour mesurer la force d'un mot de passe il faut donc arriver à mesurer son entropie. Dans la réalité les mots de passe ne sont pas des chiffres binaires aléatoires mais sont composés par une suite de symboles pris dans un alphabet. Supposons qu'on ait N symboles différents dans cet alphabet et que la longueur du mot de passe soit de l. Si le mot de passe est choisi de manière équiprobable pour chaque symbole il y a donc NL mots de passe possibles. L'entropie d'un mot de passe constitué de cette manière est de ln(Nl) = l x ln(N). On peut noter que l'entropie du mot de passe augmente linéairement avec sa longueur (ce qui est trivial intuitivement), mais sa force, elle, augmente de manière exponentielle. Regardons la valeur d'entropie d'un symbole pour les cas plus fréquents :
Symboles du mot de passe Entropie par symbole
chiffres seuls
3,32
chiffres et lettres entre 'A' et 'F'
4
lettres minuscules
4,7
chiffres et lettres majuscules
5,1
lettres minuscules et majuscules
5,7
chiffres et lettres majuscules et minuscules
5,9
Symbole ASCII inscriptible
6,56

C'est la combinaison des deux tableaux précédents qui permet de décider objectivement si un mot de passe est bon ou non. Pour un niveau de sécurité correct il faut au moins 64 bits d'entropie, à partir de plus 100 bits d'entropie on peut s'estimer à l'abri des attaques les plus communes. On peut constater qu'au delà de 128 bits ce n'est plus vraiment la peine d'augmenter la taille du mot de passe car la sécurité ne changera pas d'un point de vue "humain".
Ainsi pour obtenir 64 bits d'entropie il faut soit un nombre de 20 chiffres (ce qui est impossible à retenir pour la majorité des gens) soit un mot écrit avec 16 lettres minuscules, la taille du mot de passe peut descendre à 12 lettres si on mélange minuscules et majuscules. On remarquera que les clefs wep utilisées pour sécuriser les accès aux réseaux wifi (c'est le chiffre qui se trouve sous votre box internet et qui comporte un mélange de chiffre et de lettres comprises entre 'A' et 'F', qui n'est rien d'autre qu'un nombre écrit en hexadécimal) ne comportent que 40 bits d'entropie (car sur les 64 bits de la taille de la clef 24 sont utilisés à d'autres fins) ce qui n'est pas très rassurant finalement.
Enfin, si on utilise des lettres mélangées avec des chiffres et des symboles de ponctuation (les caractères ASCII inscriptibles, disons pour simplifier les symboles se trouvant sur le clavier d'un ordinateur) il faut tout de même retenir un mot de 10 symboles. Pour obtenir 128 bits il suffit de multiplier les chiffres précédents par 2 vu la progression linéaire de l'entropie avec la taille du mot de passe. On donne souvent comme préceptes d'utiliser des signes de ponctuations et de mélanger majuscules et minuscules pour avoir un bon mot de passe. Le problème est qu'il faut quand même que ce mot de passe possède au moins 10 symboles et qu'il est très difficile de se rappeler de quelque chose comme cX&A!erJ31, et en fin de compte vous finirez par écrire votre mot de passe quelque part...
Il faut savoir que rajouter une majuscule au début de votre mot de passe et un point à la fin par exemple ne changera pas significativement sa sécurité parce que... c'est ce que tout le monde ou presque fait quand la politique de mot de passe est trop stricte. De même changer un "e'' en "3'' ou un "O'' en "0'' histoire d'insérer des chiffres à la place de lettres n'apportera quasiment rien en termes de sécurité car ce sont des substitutions très fréquentes qui sont facilement implantables dans les algorithmes de craquage de mots de passe.
Il faut faire attention également à ne pas prendre un mot du dictionnaire. En effet un mot d'un dictionnaire, du point de vue de la théorie de l'information, est vu comme un symbole unique : il suffit d'imaginer le dictionnaire comme un gigantesque clavier. Une taille moyenne de dictionnaire pour la langue française est de 75 000 entrées. Cela veut donc dire que l'entropie associée à un mot de la langue française est ln (75000) = 16,2. Comme on l'a vu il est très peu sûr de choisir un mot de passe de 16 bits d'entropie cependant en prenant 4 mots non directement reliés (c'est à dire qui ne font pas partie d'une phrase qu'on peut deviner facilement) on trouve un mot de passe facile à retenir dont l'entropie est supérieure à 64 et donc d'un très bon niveau. Par exemple le mot de passe suivant cruchelaitbrisérêve bien que long (il est composé de 20 lettres minuscules donc sans considérer l'utilisation de dictionnaire c'est un mot de passe déjà sûr) est facile à se rappeler si on associe le mot de passe à l'histoire de Pérette et le pot au lait. Le problème est que bien souvent une taille maximale pour le mot de passe est fixée et ne vous permet pas d'utiliser cette technique.

 

 

0 commentaires: