Avec la numérisation permanente de notre société, la gestion des mots de passe et des certificats est devenue un point essentiel de notre sécurité.
Cet article est le premier d’une série de billets sur le sujet :
- Robustesse d’un mot de passe ;
- Le chiffrement, symétrie et asymétrie ;
- La gestion des mots de passe.
# Définition
Un mot de passe est un mot ou une série de caractères utilisés comme moyen d’authentification pour prouver son identité lorsque l’on désire accéder à un lieu protégé, à une ressource (notamment informatique) ou à un service dont l’accès est limité et protégé.
Sur Internet, le mot de passe est très fréquemment utilisé, que ce soit pour accéder à notre boîte e-mail, pour nous connecter à notre réseau social préféré ou encore pour accéder à votre outil de téléconférence.
Malheureusement une (trop) grande partie des mots de passe utilisés sur nos systèmes numériques sont très faibles, suffisamment faibles pour rendre à néant leur utilité.
Dans cet article, nous allons chercher à comprendre à quoi correspond la robustesse d’un mot de passe, comment l’évaluer et quelles sont les bonnes habitudes à suivre dans le but de maximiser la sécurité de nos accès.
# tl;dr
Les mots de passes sont une ressource critique à notre ère numérique. Ils sont censés protéger, entre autres, l’accès à nos données privées.
Vos mots de passes doivent absolument être tenus secrets, de vos ami·e·s, de vos collègues de travail, de vos partenaires. De plus, un mot de passe ne doit jamais être utilisé sur des systèmes différents, pour éviter des complications lors d’une faille de sécurité.
Dernière partie, ils doivent être longs et aléatoires. On parle actuellement de plus de quinze caractères. Et il est préférable de le rallonger plutôt que de rajouter des caractères spéciaux qui rendent leurs écriture difficile selon le périphérique que vous utilisez.
Pour comprendre les problématiques, je vous laisse lire la suite.
# Calcul de la robustesse
# Définition
La robustesse d’un mot de passe correspond à une estimation du nombre de tentatives nécessaires à le casser. Cette valeur dépend principalement de deux paramètres :
- la longueur du mot de passe, à savoir le nombre de caractères qu’il contient ;
- la complexité du mot de passe, soit le nombre de symboles différents.
# Quelques exemples d’attaques possibles
# L’attaque par dictionnaire
Cette méthode consiste à tester une liste de mots venant d’un dictionnaire prédéfini.
En octobre 2009, un hacker a réussi à pirater la basse de données
de la plateforme RockYou.com.
Il en résulte une liste de 32 millions de mots de passe qui peut être
étudiée.
Dans le rapport d’Imperva,
on voit que 30 % des mots de passe font six caractères ou moins
et que près d'1 % (environ 290 000 comptes) utilisent
le mot de passe 123456
.
Selon les basiques recommandations suivantes, un mot de passe devrait :
- être constitué au minimum de huit caractères ;
- contenir au moins :
- une majuscule,
- une minuscule,
- un chiffre,
- un caractère spécial (
#@!$%&^
…).
seul 0.2 % des mots de passe étaient “sécurisés”. Les vingt mots de passe les plus utilisés le sont par 2.5 % des comptes.
Cette malheureuse aventure pour les personnes utilisant la plateforme RockYou.com nous montre que globalement les mots de passe sont mauvais et faiblement sécurisés.
En règle générale, c’est les mots contenus dans ces listes qui seront testés en premier.
La solution simple pour se protéger des attaques par dictionnaire est de générer aléatoirement un mot de passe, ce dernier ayant presque aucune chance de se retrouver dans un dictionnaire.
# L’attaque par force brute
L’attaque par force brute consiste à tester toutes les combinaisons possibles
du mot de passe, jusqu’à trouver la bonne.
Par exemple, si vous voulez trouver le code d’un cadenas à trois chiffres,
vous allez essayer 000
, 001
, 002
,
et continuer jusqu’à arriver au bon résultat.
Loin d’être la plus rapide, c’est la plus simple à mettre en œuvre.
En tant qu’utilisateur ou utilisatrice d’un système, nous n’avons pas de moyen de nous protéger d’une attaque par force brute. En revanche, si le système est bien configuré, il peut lui s’en charger. Nous ne pouvons pas empêcher qu’une attaque par force brute aboutisse mais nous pouvons la rendre suffisamment longue pour qu’elle ne soit pas tentée. Pour cela il faut augmenter la robustesse.
# L’ingénierie sociale
L’ingénierie sociale est une technique qui consiste à exploiter les faiblesses organisationnelles des personnes ou des organisations.
L’exemple le plus courant de cette attaque est l’hameçonnage. C’est une technique qui consiste à se faire passer pour un correspondant de confiance, par exemple votre banque, et qui vous demande des informations. La demande d’informations peut être cachée, on peut vous proposer de vous connecter, sur un site qui ressemble furieusement à celui de votre banque.
Il est bien évidemment possible d’utiliser cette attaque lors de relations directes entre humains. Lorsqu’une personne se faisant passer pour un·e employé·e de votre entreprise, de l’entreprise de sécurité ou encore de l’entreprise de nettoyage va vous demander des informations, c’est de l’ingénierie sociale.
# Les mauvaises idées
Dans le but d’éviter au maximum les attaques, il est important d’éviter de faire des erreurs lors du choix de votre mot de passe.
Pour se protéger des attaques par dictionnaire, il faut absolument éviter d’utiliser des mots régulièrement utilisés :
-
les motifs de nombres :
- 123123,
- 24682468,
- 123456 ;
-
les mots communs :
- chaton,
- password,
- admin ;
-
les motifs de clavier :
- qwertz,
- 123qwe,
- 1qay2wsx.
Il faut également se protéger de l’ingénierie sociale. Pour y parvenir, il est conseillé de ne pas utiliser d’informations personnelles dans vos mots de passe, ces informations étant facilement trouvables (merci les réseaux sociaux), les combinaisons possibles seront donc testées en même temps que celles contenues dans les dictionnaires :
- gregory1233 ;
- marie2009 ;
- 271187greg.
# Le calcul
On en arrive enfin à la partie intéressante. Comment connaître la robustesse de notre mot de passe ?
Si vous êtes totalement allergiques aux maths, je vous conseille de sauter ce chapitre et le suivant et de continuer et d’aller directement au chapitre sur le choix des mots de passe.
La robustesse dépend de la complexité,
soit le nombre de symboles différents utilisables,
et de la longueur du mot de passe.
On énumère toutes les possibilités pour ces deux paramètres.
Si, par exemple, nous utilisons dix symboles différents,
au hasard les chiffres de 0
à 9
,
et que nous avons une longueur de trois caractères,
alors nous aurons toutes les combinaisons possibles de 000
à 999
.
Il y a donc mille possibilités et la formule nous permettant de généraliser
le calcul est la suivante :
où R
est la robustesse, C
la complexité et L
la longueur.
Dans le cas de nos mots de passe, pour faire varier la complexité nous pouvons choisir parmi plusieurs options dont voici une liste non-exhaustive :
- chiffres uniquement ⇒
C=10
; - lettres majuscules ou minuscules ⇒
C=26
; - lettres majuscules et minuscules ⇒
C=52
; - caractères alphanumériques1
(majuscules et minuscules) ⇒
C=62
; - caractères spéciaux2 ⇒
C=12
; - tous les caractères listés ici ⇒
C=74
.
Pour être certain d’avoir bien compris,
si le mot de passe utilise des caractères alphanumériques
et a une longueur de dix caractères,
le nombre de possibilités, donc la robustesse, est R = 62^10
,
soit environ 800 millions de milliards.
Ne sachant pas à quoi comparer ce nombre,
ça nous fait une belle jambe.
# Comment comparer la robustesse
Avec le calcul précédent, on peut rapidement constater que la robustesse est un nombre extrêmement grand. Nous aimerions pouvoir comparer des nombres plus simples à appréhender et donc estimer plus facilement la robustesse de notre mot de passe.
Les ordinateurs fonctionnent uniquement avec un système binaire,
c’est-à-dire qu’ils ont une complexité de deux
(uniquement les symboles 0
et 1
).
Pour reprendre la formule précédente,
si nous avons une complexité C = 2
et une longueur L = 10
,
la robustesse vaut : R = 2^10 = 1024
.
Les ordinateurs étant à la base de toute la sécurité informatique,
nous utilisons leur notation comme référence.
On peut donc dire qu’un mot de passe de 10 bits3
donne 1 024 possibilités.
En comparaison, si j’utilise uniquement des chiffres et un mot de passe
de trois caractères de long, ma robustesse vaut
R = 10^3 = 1000
.
Pour comparer les deux mots de passe, nous pouvons comparer leur robustesse.
Ces dernières étant de 1 000 et 1 024,
nous pouvons en conclure qu’elles sont similaires.
Nous dirons que la taille de clé équivalente, ou TCE,
de notre mot de passe de trois chiffres est de 10 bits.
La TCE
est un moyen de pouvoir comparer toutes les robustesses entre elles.
On cherche à avoir la longueur nécessaire à égaler notre robustesse
en fixant la complexité C = 2
,
en raison de la nature binaire de l’informatique.
Pour calculer cette nouvelle longueur,
nous pouvons utiliser la formule suivante :
Avec :
- R, la robustesse des deux mots de passe, le notre et son équivalent en binaire ;
- C1, la complexité de notre mot de passe ;
- L1, la longueur de notre mot de passe ;
- C2, la complexité de l’équivalent binaire, à savoir 2 ;
- L2, la longueur de l’équivalent binaire, la valeur que nous recherchons, la TCE.
Et si nous n’avons pas accès au logarithme en base deux, il faut modifier un peu notre formule, en partant de la formule de changement de base du logarithme :
Nous pouvons donc modifier notre calcul comme suit :
Pour avoir une idée des TCE de nos mots de passe, voici une liste non exhaustive de quelques mots de passe :
Symboles | C | L | TCE |
---|---|---|---|
chiffre | 10 | 6 | 20 |
minuscule | 26 | 10 | 47 |
lettre | 52 | 10 | 57 |
alphanumérique | 62 | 6 | 36 |
alphanumérique | 62 | 12 | 71 |
tous | 74 | 12 | 75 |
Différents exemples de TCE
Maintenant que nous savons calculer la TCE, nous pouvons comparer différents mots de passe et en déduire lesquels utiliser ou ne pas utiliser.
# Quels mots de passe ?
L’ANSSI recommande, sur son site, des mots de passe ayant une TCE de 100 bits, 128 bits lorsque l’utilisation est présumée de longue durée. Les TCE de moins de 80 bits sont considérés comme exposés à des attaques utilisant des moyens techniques conséquents.
Et alors, le plus compliqué de tous les exemples du tableau précédent, avec ses 12 caractères et tous les symboles listés, obtient une TCE de seulement 75, ce qui n’est pas suffisamment sécurisé selon l’ANSSI…
Pour visualiser ces différences, j’ai fait un petit graphique qui indique la longueur nécessaire à l’obtention d’une TCE voulue, pour les listes de symboles définies préalablement à laquelle j’ai rajouté une liste de 100 symboles, pour avoir une relativement grande valeur à analyser.
Ce qu’on voit sur ce graphique c’est qu’augmenter la complexité n’a que très peu d’incidence sur la longueur nécessaire pour avoir une TCE désirée. On voit clairement qu’à partir de 52 symboles, les TCE ne diffèrent plus vraiment.
Et alors, si on se rappelle la formule du début, vu qu’augmenter la complexité ne sert pas à grand-chose, la deuxième chose que nous pouvons essayer de modifier est la longueur.
Les mathématiciens s’en doutaient déjà,
augmenter la longueur permet d’augmenter linéairement la TCE,
contrairement à l’augmentation de la complexité.
D’ailleurs, si on calcule la complexité nécessaire pour avoir une certaine TCE,
lorsque notre mot de passe a une longueur fixée de L = 12
,
on obtient les valeurs suivantes :
- pour une TCE désirée de 80,
C = 101.6
; - pour une TCE désirée de 100,
C = 322.5
; - pour une TCE désirée de 128,
C = 1625.5
.
Il est donc difficile, voire impossible, d’avoir un mot de passe sécurisé si la longueur est fixée aussi bas…
Si nous mettons les valeurs du premier graphique dans un tableau, les lignes étant la TCE désirée et les colonnes étant la complexité :
TCE \ C | 10 | 52 | 62 | 74 |
---|---|---|---|---|
80 | 24.1 | 14.0 | 13.4 | 12.9 |
100 | 30.1 | 17.5 | 16.8 | 16.1 |
128 | 38.5 | 22.5 | 21.5 | 20.6 |
Longueur nécessaire pour une certaine TCE
Avec l’utilisation des symboles alphanumériques avec majuscules (C=62
),
22 caractères sont nécessaires pour avoir une TCE de 128 bits et
21 si nous rajoutons quelques symboles spéciaux (C=74
).
# Conclusion
Dans cette première partie, nous avons vu que :
- les mots de passe non-aléatoires ne sont pas sécurisés ;
- il est impossible d’avoir un mot de passe sécurisé avec moins de quinze caractères ;
- augmenter la complexité ne sert presque à rien ;
- il faut augmenter la longueur des mots de passe.
Il faut aussi s’assurer que ses mots de passe ne sont pas connus par d’autres personnes.
Dans le prochain article nous parlerons du chiffrement.
-
Les lettres de l’alphabet et les chiffres, par exemple
a35KJd49pw
. ↩︎ -
La liste des symboles disponibles n’est pas fixe, pour cet exemple j’utiliserai la liste suivante :
#@*.-_!?$/()
. Il est bien évidemment possible d’en rajouter mais cela ne changera pas significativement la robustesse, comme nous le verrons par la suite. ↩︎ -
Le mot bit vient de la contraction de binary digit. C’est l’unité de numération la plus simple, avec uniquement deux valeurs possibles, en général
0
et1
ou vrai et faux. ↩︎