05 - Mots de passe
Plan
- Les mots de passe
- La sécurité des mots de passe
- Utilisation des mots de passe
- Cassage des mots de passe
- Choix des mots de passe
- Stockage des mots de passe
- Les mots de passe en Windows
- Les mots de passe en Linux
Les mots de passe
-
Supposons que nous voulons sécuriser une pièce dont l’unique accès est une porte fermée à clé. L’unique clé est en notre possession. Notre pièce est sécurisé tant que nous conservons la clé en lieu sûr.
-
En informatique la pièce décrite ci-dessus est votre compte d’utilisateur et la clé est votre mot de passe. Si vous conservez la clé en lieu sûr votre compte d’utilisateur est protégé (du moins théoriquement).
-
Si vous avez plusieurs pièces à sécuriser, vous devriez utiliser une clé différente pour chacune d’elle, ainsi si vous perdez la clé, seulement une seule pièce sera en péril.
-
C’est la même chose avec vos différents comptes d’utilisateur, utilisez des mots de passe différents pour chacun. Ainsi la découverte d’un mot de passe par un malfaiteur ne mettra pas en péril tous vos comptes.
-
Sachant que la majorité des utilisateurs mettent le même mot de passe à plusieurs comptes, les malfaiteurs peuvent s’amuser à ouvrir tous les comptes d’un seul utilisateur lorsqu’ils viennent de découvrir un mot de passe.
-
Les malfaiteurs peuvent obtenir votre mot de passe, soit parce que
- Vous l’avez divulgué
- Vous l’avez mal protégé
- Ils l’ont deviné.
-
Cas 1 : Ingénierie sociale et phishing servent à obtenir votre mot de passe que vous fournissez volontairement (souvent par méconnaissance ou insouciance).
-
Cas 2 : Un mot de passe inscrit sur un bout de papier et laissé sur l’écran ou sous le clavier dans le deuxième cas.
-
Cas 3 : Vous avez utilisé un mot de passe trop simple (trop commun) ou encore le malfaiteur a utilisé un dictionnaire pour essayer différentes combinaisons. On appelle attaque par force brute (Brute Force Attack) l’opération d’essayer plusieurs mots de passe un après l’autre jusqu’à ce qu’on trouve le bon.
- L’attaque force brute par dictionnaire consiste à essayer plusieurs mots à partir d’un dictionnaire.
- L’attaque force brute sans dictionnaire consiste à essayer plusieurs mots construits à partir d’une séquence des lettres de l’alphabet (aaa, aab, aac…).
- La plupart des systèmes bloque ce genre d’attaque après quelques essais afin d’offrir un minimum de sécurité.
- Si j’obtiens la base de données des mots de passe (habituellement cachés/encodés) je peux essayer un brute force et comparer les mots de passe sans être bloqué après quelques essais.
-
Il existe principalement deux façons de cacher nos mots de passe.
- Chiffrement: le mot de passe est chiffré et le résultat est enregistré. Lorsqu’on veut vérifier le mot de passe on déchiffre le mot de passe et on compare.
- Hachage (hashing): le mot de passe est haché et le résultat est enregistré. Lorsqu’on veut vérifier le mot de passe on prend le mot de passe à vérifier, on le hache et le résultat est comparé avec celui déjà enregistré.
- Une fonction de hachage est une fonction à sens unique, le résultat ne peut pas revenir à la valeur initiale, il n’existe pas de fonction inverse.
- C’est la méthode la plus utilisé pour les mots de passe. Avec ce mécanisme il est théoriquement impossible de trouver un mot de passe à partir de la valeur hachée. Par contre si j’ai le hache et que j’ai accès à la fonction de hachage utilisée, je peux, si je dispose d’un peu de temps, trouver le mot de passe original par force brute.
- Attention: ne faites jamais affaire avec une entreprise (site Web) qui pourrait vous envoyer votre mot de passe, par courriel ou par sms. Pourquoi?
La sécurité des mots de passe
-
Est-ce que vos mots de passe sont sécuritaires??
-
Afin d’augmenter la sécurité des authentifications les compagnies se tournent vers les “soft token”. Il s’agit de codes qui changent à un intervalle régulier et qui sont synchronisés avec un serveur de l’entreprise (ou d’une entreprise spécialisée). Ces « token » sont demandés en plus des mots de passe personnels.
-
D’autres facteurs sont aussi utilisés (biométriques, codes envoyés sur le cellulaire, etc) afin d’augmenter la sécurité des mots de passe.
-
Le danger de ces facteurs est une (fausse) impression de sécurité et un relâchement sur l’utilisation de mots de passe complexes.
-
L’authentification par facteur biométrique est risquée car si le mécanisme est compromis et que quelqu’un arrive à le falsifier il n’y a pas vraiment de parade, alors que si un mot de passe est compromis on n’a qu’à le changer.
-
De plus en plus, on s’en va vers des mécanismes multi-facteurs pour augmenter la sécurité de nos mots de passe (Multi-Factor Authentication ou MFA). On parle alors de composer nos mots de passe en utilisant:
- Ce que l’on connait (pin, mot, etc)
- Ce qu’on est (biométrique, voix, visage, emprunte, etc)
- Ce qu’on possède (clé, carte, token, liste de codes, etc)
- Où nous sommes (GPS, réseau local, etc).
-
La plupart du temps nous allons nous contenter du double facteur (2 de ces facteurs)
Utilisation des mots de passe
- NordPass, en partenariat avec des chercheurs indépendants spécialisés dans la recherche d’incidents de cybersécurité qui ont évalué une base de données de 4,3 To extraite de diverses sources accessibles au public, y compris sur le dark web, ont établi une liste de mots de passes les plus couramment utilisés :
Classement | Mot de passe |
---|---|
1 | 123456 |
2 | admin |
3 | 12345678 |
4 | 123456789 |
5 | 1234 |
6 | 12345 |
7 | password |
8 | 123 |
9 | Aa123456 |
10 | 1234567890 |
11 | 1234567 |
12 | 123123 |
13 | 111111 |
14 | Password |
15 | 12345678910 |
16 | 000000 |
17 | admin123 |
18 | 1111 |
19 | 135 424 |
20 | root |
- Combien de temps cela prendrait pour trouver les mots de passe de cette liste ??
- Lorsqu’on choisit un mot de passe il faut comprendre comment les pirates procèdent.
- Ils utilisent un mécanisme automatisé de force brute avec dictionnaire ou sans dictionnaire.
- On dit force brute, lorsqu’on utilise plusieurs mots de passe différents jusqu’à ce qu’on trouve le bon.
- Sachant que les ordinateurs sont très efficaces à faire une attaque par force brute, il faut compliquer cette tâche au maximum.
Cassage de mots de passe
Cassage par force brute
- Habituellement le cassage des mots de passe se fait dans un ordre bien défini, c’est-à-dire qu’on utilisera le moyen le plus rapide qui permettra de trouver la plupart des mots de passe faibles (les mots de passe faibles représente la majorité). Les voici dans l’ordre du plus rapide au plus lent :
- Attaque par “Rainbow table”: il s’agit d’utiliser un fichier contenant les hachés MD5 précalculés et de les comparer directement (sans passer par un encodage).
- Exemple: le mot de passe
aa
donne tel haché, on enregistre dans ce fichier le haché et le mot de passe qui l’a généré. Lorsqu’on veut casser un mot de passe on cherche le haché dans ce fichier et on obtient automatiquement le mot de passe correspondant. - C’est la méthode la plus rapide, mais comme il est impossible d’avoir tous les hachés
- Le pourcentage de mots de passe trouvés est faible.
- Exemple: le mot de passe
- Attaque par dictionnaire: il s’agit d’utiliser un dictionnaire et pour chacun des mots présents de les encoder et de les comparer avec le code recherché; on utilise un dictionnaire contenant les mots ayant le plus de chance de se retrouver comme mot de passe dans l’ordre de possibilités (par exemple ces dictionnaires commencent par les mots les plus utilisés comme mots de passe).
Attaque heuristique
- Il s’agit prendre les mots du dictionnaire et d’appliquer quelques transformations de base avant de les comparer.
- Exemples d’attaque heuristique :
- Prendre le mot et le mettre en majuscule,
- Essayer toutes les combinaisons, majuscule/minuscule des lettres du mot,
- Ajouter un S à la fin du mot,
- Ajouter un 1 à la fin du mot, ajouter 12 à la fin du mot, ajouter 123 à la fin du mot,
- Ajouter 1 au début du mot,
- Retirer les voyelles du mot,
- Remplacer les voyelles (une à la fois) par son correspondant numérique, combiner divers remplacements,
- Inverser les lettre du mot,
- etc…
Attaque par recherche exhaustive
- Il s’agit d’utiliser un générateur de codes permettant d’essayer succéssivement toutes les combinaisons possibles. Ce genre d’attaque est très longue, parfois on tentera de travailler avec des sous-ensembles (par exemple juste des lettres) avant de prendre toutes les possibilités.
Choix des mots de passe
-
Quelques règles pour choisir un “bon” mot de passe
- Éviter les mots qui pourraient se retrouver dans les dictionnaires. Pas seulement les dictionnaires anglais, français, etc… mais aussi les dictionnaires de mots de passe classiques (12345, qwerty, poiuyt, etc…).
- Avoir de longs mots de passe (plus il est long plus ce sera difficile de le trouver).
- Avoir le plus grand jeu de caractères possibles (majuscules, minuscules, chiffres, ponctuations et caractères spéciaux).
-
Combien de temps cela prendrait pour trouver les mots de passe complexe??
-
Commençons par un mot de passe de 3 chiffres…
- les combinaisons possibles sont: 000, 001, … 998, 999.
- 1000 combinaisons différentes, soit 10E3.
- Si on devait les essayer manuellement, ça prendrait plusieurs heures.
- Pour un ordinateur qui fait 10000 tentatives à la seconde cela prendrait au pire 1/10 de seconde pour le trouver.
-
Attention: mot de passe complexe != mot de passe compliqué.
-
Un ordinateur typique peut faire autour de 10 millions de tentatives à la seconde, et même plus…
-
Un mot de passe de 8 chiffres donne 10E8 combinaisons possibles (ou 100 millions) qui serait trouvé au pire cas en 10 secondes.
-
Que dire des nouveaux programmes qui prennent en charge les GPU (cartes graphiques pouvant faire du calcul très avancé)… pour une GPU bon marché qui fait 3,3 milliards de tentatives à la seconde cela prendrait moins de 1 seconde.
-
Rendons la tâche un peu plus difficile… augmentons le jeu de caractères. En plus des chiffres on peut utiliser des lettres (majuscules et minuscules),
- cela fait 52 caractères de plus à essayer pour un total de 62 caractères.
- Si nos mots de passes ont une longueur de trois cela veut dire qu’il y aura 62^3 possibilités (238 328). Ce ne sera pas un travail trop difficile pour des GPU.
-
Si on forçait à 8 la longueur de tels mots de passe?
- 62^8 ou 218 billions de possibilités (218 000 milliards) pour un GPU on parle de 66 060 secondes (18 heures).
-
Plusieurs logiciels pour GPU gratuits.
- Whitepixel ou hashcat…
- Whitepixel est capable d’essayer 33,1 milliards combinaisons par seconde avec quatre GPU AMD HD5970 (2011). Cela prendrait 6586 secondes ou 1,8 heures.
- Il y a de plus en plus de demandes pour ce genre de logiciel et les prix augmentent en même temps que la demande.
-
Pour augmenter la sécurité il faut aussi ajouter les caractères spéciaux,
- on obtient un jeu de 94 caractères différents.
- Pour une longueur de 8 on obtient 94^8 ou 6 trillions de combinaisons. Est-ce que c’est assez? On arrive à 49 heures pour trouver le mot de passe. Solution: augmenter la complexité de l’algorithme de hachage… et augmenter le nombre de caractères (la longueur du mot de passe).
-
Si on augmente la longueur du mot de passe :
- à 9 caractères on arrive à 4606 heures (49 heures*94).
- à 10 caractères on a 432964 heures ou 49,4 ans
- et ainsi de suite…
-
Certaines entreprises utilisent maintenant des mots de passe ayant un minimum de 14 caractères.
-
Naturellement c’est sans compter que les GPU sont maintenant beaucoup plus rapides et que les systèmes d’exploitation supportent de plus en plus de GPU et que les programmes de force brute se perfectionnent.
-
Amazon AWS et ses GPU monstres A100 Tensor x8 ou x12 peuvent aussi être utilisés pour casser des mots de passe par force brute.
- Un mot de passe de 8 caractères avec des chiffres, minuscules, majuscules et caractères spéciaux résistera entre 12 minutes et 4 heures (au plus long, selon le modèle de carte graphique).
- Même si tout le monde n’a pas accès à une telle puissance de calcul, le tableau ci-dessous montre à quelle vitesse il est possible de craquer un mot de passe avec une configuration matérielle identique à celle utilisée par ChatGPT (2023).
Mot de passe complexes
-
Un mot de passe complexe != mot de passe compliqué
-
Un mot de passe complexe est composé de:
- Au moins un caractère numérique;
- Au moins une lettre majuscule;
- Au moins une lettre minuscule;
- Au moins un caractère spécial (ponctuation, signes, etc);
- Au moins 10 caractères (certaines sources parlent de 8 d’autres de 14, etc…).
-
Un mot de passe complexe est facile à se rappeler ou encore est construit à partir d’un outil de génération automatique de mots de passe qui conserve tous vos mots de passe enchiffrés et protégés.
-
Trucs pour construire un mot de passe complexe:
- Utiliser un code postal auquel on ajoute (ou intercale) une combinaison supplémentaire de caractères (initiales, etc). Par exemple: H1A.1A1Ma!p; code: H1A1A1 avec un point au milieu et M.a!p; à la fin
- Utiliser un mot auquel on ajoute un motif, par exemple D0g (dog avec un D majuscule et un 0 à la place du 0 auquel j’ajoute un motif du genre:
- $1.00; (2 fois)
- pour obtenir ceci:
- $1.00;D0g$1.00;
Stockage des mots de passe
Les mots de passe en Windows
-
Les mots de passe pour un domaine sont conservés dans
Active Directory
. -
Les mots de passe locaux pour les ordinateurs sont conservés dans le fichier
SAM (Security Accounts Manager)
qui se trouve dans:%SystemRoot%/system32/config/SAM
. -
Les mots de passe sont hachés avant d’être enregistrés dans le SAM. Ensuite le fichier SAM en encodé par
syskey
(option). http://en.wikipedia.org/wiki/Security_Accounts_Manager -
Au démarrage, Windows le lit et le charge en mémoire. Le fichier SAM est protégé par Windows et une fois ouvert par le S.E. il est impossible de l’ouvrir (même en lecture).
-
Pour y avoir accès on doit utiliser celui qui est en mémoire. Il existe des programmes qui permettent d’obtenir ces informations (pwdump).
-
Une façon d’y avoir accès est de démarrer avec un autre Windows, sur une clé USB ou un DVD par exemple, qui va bloquer son propre SAM mais pas celui sur le disque interne. Ensuite on peut avoir accès au fichier et faire une attaque par force brute.
- LM Hash
- Utilisé sur Windows maison (3.1 à XP)
- Utilise un mot de passe de 14 caractères en majuscules (complété par des caractères vides si < 14) coupé en deux (7 car.) utilisant DES (sans salt) sur chacun pour produire deux empreintes de 64 bits concaténés ensemble.
- NTLM Hash
- Utilisé sur Windows professionnel (NT à 8.1)
- Utilise un mot de passe jusqu’à 256 caractères (ne sont pas converties en majscules) utilisant MD4 (sans salt) qui produit une empreinte de 128 bits.
- À partir de Vista seul le NTLM Hash est activé par défaut (avant les deux mécanismes l’étaient).
- Les mots de passe Windows sont chargés dans LSASS (Local Security Authority Subsystem Service).
- Microsoft Passport
- Utilise un nouveau composant Hyper-V le « Virtual Secure Mode » qui permet d’isoler la validation des mots de passe.
Les mots de passe en Linux
-
Les mots de passe pour les comptes d’utilisateurs en Linux sont hachés et conservés dans
/etc/shadow
anciennement ils étaient conserves dans/etc/passwd
-
Le fichier n’est disponible qu’à l’utilisateur
root
ou un administrateur de l’ordinateur (qui peut devenir root). -
La plupart des distributions peuvent être démarrés en mode simple utilisateur (single user) et l’accès à
root
est alors automatique et sans mot de passe. Il est alors possible de modifier le mot de passe deroot
. -
Le fichier peut être attaqué par force brute.
-
Linux utilise un mécanisme de chiffrement ou de hashage:
- DES: fonction de chiffrement qui utilise 8 caractères du mot de passe (les 7 bits de droite de chaque caractère pour 56 bits), utilise un
« salt »
de 12 bits pour produire le code secret en base64 de 13 caractères,- les 2 premiers (codé sur 6 bits) sont les 12 bits du
« salt »
- 11 suivants (codés sur 6 bits).
- Par exemple: pHcYIAMtCWtZ2 (salt est pH) et le mot de passe est: martinot
- les 2 premiers (codé sur 6 bits) sont les 12 bits du
- MD5: utilise un
salt
de 48 bits pour hacher un mot de passe et produire une empreinte de 128 bits sur 22 caractères.- Par exemple:
$1$gDT4Spf5$mr76vshidvcT1busoKrre1
où$1$
signifie MD5,gDT4Spf5
est le salt de 48 bits et mr76… est l’empreinte.
- Par exemple:
- Blowfish: est un algorithme de hachage, l’empreinte commence par
$2a$
, il utilise toujours un salt de48 bits
- Twofish et threefish sont plus sécuritaires que Blowfish
- SHA-256: commence par
$5$
produit une empreinte de 256 bits - SHA-512: commence par
$6$
produit une empreinte de 512 bits
- DES: fonction de chiffrement qui utilise 8 caractères du mot de passe (les 7 bits de droite de chaque caractère pour 56 bits), utilise un
Mécanisme d’authentification | Nombre de combinaison testées par seconde |
---|---|
DES sous Linux | 346 214 |
MD5 sous Linux | 15 650 |
Blowfish sous Linux | 978 |
Windows LM Hash | 27 197 000 |
Test de performance avec John The Ripper réalisé sur un Core i5-3360M avec 8GB de RAM (référence Sécurité informatique par Gildas Avoine, éditions Vuibert, Paris, 2015)