Les mots de passe et leur robustesse
4 minutes 
Matthieu B.
Comme tout le monde, vous avez pu lire tout et son contraire sur un sujet qui est sur toutes les lèvres : les mots de passe et leur robustesse. Essayons ensemble de démystifier ce point, en combattant les idées reçues et en démontrant mathématiquement pourquoi.

Les mots de passe et leur robustesse

La complexité, finalement pas si utile qu’envisagé ?

Pendant longtemps, on nous a dit que la complexité prévalait sur tout. En effet ajouter des caractères spéciaux voire exotiques sur un mot de passe était censé nous assurer que ceux-ci deviendraient plus complexe à casser.

Les PSSI ont alors massivement été amendées à travers le monde et rapidement on a pu lire un peu partout “un mot de passe doit comporter 8 caractères dont une majuscule, une minuscule, un caractère spécial et un chiffre”.

Cette directive notamment poussée par le NIST a finalement été considérée comme contre-productive par celui-même qui en était à l’origine. En effet cette manière de concevoir un mot de passe a entrainé un effet non prévu initialement : la création de patterns facilement identifiables.

En effet, les utilisateurs ont très rapidement adopté les raccourcis suivant :

  • doit comporter 8 caractères = 8, pas 7, pas 9
  • doit comporter une majuscule = autant la mettre au début, une phrase commence par une majuscule
  • doit comporter une minuscule = autant mettre tous les autres caractères en minuscule
  • doit comporter un caractère spécial = le ! est pratique vu son emplacement
  • doit comporter un chiffre = mettons le à la fin pour que ça soit simple à utiliser

Vous l’aurez compris, très rapidement la majorité des mots de passe ressemblaient à Abcdef!1 où Abcdef sont des lettres arbitraires souvent remplacées par autre chose. Mais il était souvent compliqué de trouver un mot de 6 lettres qui soit simple à retenir pour une personne lambda. Ce fût alors l’apparition des post-it sous les claviers ou sur les écrans, avec le mot de passe bien en évidence.

Pire encore, la période fatidique du changement de mot de passe imposée par l’entreprise finissait par arriver. Comment faire pour retenir un nouveau mot de passe quand on avait déjà mis 2 mois à retenir l’ancien sans post-it ? Vous l’avez deviné, on remplaçait le 1 par un 2 et ainsi de suite jusqu’à arriver à 0, et la boucle serait alors bouclée.

A présent parlons de possibilités mathématiques pour identifier le bon mot de passe sans le connaitre. Si nous partons du principe que le pattern ébauché ci-dessus est vrai nous avons :

  • 26 possibilités pour le premier caractère (A-Z).
  • ensuite nous avons 5 occurrences de caractères en minuscule (a-z), que nous pouvons résumer à 26^5
  • si nous partons du principe que le caractère spécial n’est pas nécessairement un ! mais dans une liste restreinte, nous pouvons estimer à 10 le nombre de possibilités
  • et ensuite nous avons 10 possibilités de chiffre (0-9)

Combien de mots de passe différents devrions-nous essayer pour trouver le bon ? Prenez le temps de la réflexion, posez l’opération mathématique puis revenez ici.

Il y a exactement dans notre cas : 26 * 26^5 * 10 * 10 possibilités, soit 26^6 * 10^2. De manière plus visuelle, il y a 30 891 577 600 combinaisons à tester. Oui nous avons bien quasiment 31 milliards de possibilités. C’est conséquent vous en conviendrez…

Néanmoins en fonction des capacités de calcul dont dispose l’attaquant et surtout de la méthode d’attaque (en ligne ou hors ligne), celui-ci peut aujourd’hui très facilement grimper de manière conséquente. Ainsi une Geforce RTX 3080 utilisée via Hashcat pour casser hors ligne des hashes NTLM peut tester environ 101 GH/s (soit 101 * 10^9 hashes par seconde, soit 101 000 000 000, 101 milliards)*. Il faudrait donc moins d’une seconde à l’attaquant pour trouver le bon mot de passe qui suivrait ce pattern. Ajoutez à cela l’éventuelle utilisation d’un dictionnaire des mots de passe les plus courants et vous obtenez une temps de découverte imbattable.

Mais alors quelle solution ?

La solution pour rendre le mot de passe plus robuste et mettre l’attaquant en difficulté est sans conteste l’augmentation de la longueur de celui-ci, sans nécessairement forcer une quelconque complexité. Prenons un exemple simple : si je passe sur un mot de passe de 12 caractères au lieu de 8, sans qu’on m’impose de complexité et que je fais le choix discutable de n’utiliser que des minuscules.

Pouvez-vous deviner le nombre de combinaisons à essayer pour être certain de trouver le bon mot de passe ?

Il y a alors 26^12 combinaisons, soit 95 428 956 661 682 176, 95 billiards de possibilités. C’est environ 3 millions de fois plus que précédemment. L’auriez-vous imaginé ?

Reprenons notre calcul de puissance de cassage de mot de passe. Toujours dans les mêmes conditions l’attaquant mettra environ 945 000 secondes à tester toutes les combinaisons. C’est à dire environ 10 jours, mais je vous laisse vérifier le calcul par vous même.

Alors bien entendu, en fonction de la détermination de l’attaquant et du temps dont il dispose, 10 jours c’est peu. Et si je montais mon mot de passe à 18 caractères ? Combien de combinaisons y aurait-il ? En gardant strictement l’utilisation de minuscules de A à Z, nous aurions 26 ** 18 possibilités, soit 29 quadrillion (10^21). Et combien de temps pour casser le mot de passe dans ces conditions ? 3 milliards de jours. 3 milliards.

Cela semble intéressant non ?

Si en complément vous complexifiez le travail de l’attaquant en utilisant des mots simples à retenir mais sans rapport avec vous, et qu’entre chaque mot vous ajoutez un chiffre par exemple, la complexité va encore grandir de manière exponentielle surtout si la longueur de votre mot de passe finit par être de 20 caractères au lieu de 18.

Comment retenir ce nouveau mot de passe ? Utilisez un gestionnaire de mot de passe, et vous pouvez éventuellement adopter la méthode proposée dans cette bulle XKCD :

source : https://xkcd.com/936/

Bien entendu les valeurs proposées en termes de possibilités testées par seconde sont très inférieures à nos statistiques, car cette bulle est très vieille, mais vous avez l’idée.

Et avec tout cela suis-je assuré d’être protégé correctement ?

Je vois déjà les plus taquins d’entre vous préparer les questions suivantes :

  • Et en cas de fuite de mot de passe, c’est bien beau, mais ça ne change rien non ?
  • Si j’utilise un mot de passe trivial sur mon gestionnaire de mot de passe pour stocker des mots de passe robustes, quel intérêt
  • Et j’en passe…

Alors, oui, en cas de fuite de mot de passe vous ne pourrez rien faire. Sauf si votre compte en question est protégé par MFA et que vous utilisez bien un mot de passe unique pour chaque compte.

Si vous utilisez un gestionnaire de mot de passe, bien entendu votre mot de passe maitre devra être très robuste, et je vous encourage à nouveau à utiliser le MFA pour cet outil.

Pourquoi cet article, d’où vient l’idée ?

Dans une précédente expérience professionnelle, un junior de mon équipe a “égaré” le mot de passe pour déchiffrer la partition LUKS au démarrage d’une machine d’une grande importance pour la société, qui fort heureusement n’était qu’en phase d’intégration et pas encore en production : celui du gestionnaire de mots de passe du centre de services, enfin le nouvel outil qui devrait le supplanter.

Fier de lui, il est arrivé avec une “idée de génie” : “je sais que le mot de passe faisait 16 caractères, qu’il ne contient que des minuscules, majuscules et une combinaison de caractères spéciaux choisis dans cette plage” (il y avait 10 caractères spéciaux possibles, mais nous ne savions pas combien de majuscules, combien de minuscles, ni combien de caractères spéciaux).

Je lui ai alors demandé de calculer le nombre de combinaisons possibles pour ce mot de passe, et de vérifier les capacités de cassage de ce type de hash sur nos machines actuelles mais aussi sur des machines équipées des cartes graphiques les plus puissantes du moment. Après “quelques” minutes, le résultat était sans appel, nous serions tous bel et bien mort et enterrés avant que cela arrive car il fallait plusieurs milliards d’années. Si vous voulez faire le calcul par vous-même, reprenez notre source de bench Hashcat sur github, je vous fais cadeau du type de hash à chercher : 14600. Capacité de cassage d’une RTX 3080 pour ce type de hashes : un peu plus de 22 000 par seconde.

Source :

https://gist.github.com/

Retour à la page d'accueil
Sécurité applicative : pourquoi passer au DevSecOps ?

Les mots de passe et leur robustesse

Se Protéger
Auteur.e :
Matthieu B.

La complexité, finalement pas si utile qu’envisagé ?

Pendant longtemps, on nous a dit que la complexité prévalait sur tout. En effet ajouter des caractères spéciaux voire exotiques sur un mot de passe était censé nous assurer que ceux-ci deviendraient plus complexe à casser.

Les PSSI ont alors massivement été amendées à travers le monde et rapidement on a pu lire un peu partout “un mot de passe doit comporter 8 caractères dont une majuscule, une minuscule, un caractère spécial et un chiffre”.

Cette directive notamment poussée par le NIST a finalement été considérée comme contre-productive par celui-même qui en était à l’origine. En effet cette manière de concevoir un mot de passe a entrainé un effet non prévu initialement : la création de patterns facilement identifiables.

En effet, les utilisateurs ont très rapidement adopté les raccourcis suivant :

Vous l’aurez compris, très rapidement la majorité des mots de passe ressemblaient à Abcdef!1 où Abcdef sont des lettres arbitraires souvent remplacées par autre chose. Mais il était souvent compliqué de trouver un mot de 6 lettres qui soit simple à retenir pour une personne lambda. Ce fût alors l’apparition des post-it sous les claviers ou sur les écrans, avec le mot de passe bien en évidence.

Pire encore, la période fatidique du changement de mot de passe imposée par l’entreprise finissait par arriver. Comment faire pour retenir un nouveau mot de passe quand on avait déjà mis 2 mois à retenir l’ancien sans post-it ? Vous l’avez deviné, on remplaçait le 1 par un 2 et ainsi de suite jusqu’à arriver à 0, et la boucle serait alors bouclée.

A présent parlons de possibilités mathématiques pour identifier le bon mot de passe sans le connaitre. Si nous partons du principe que le pattern ébauché ci-dessus est vrai nous avons :

Combien de mots de passe différents devrions-nous essayer pour trouver le bon ? Prenez le temps de la réflexion, posez l’opération mathématique puis revenez ici.

Il y a exactement dans notre cas : 26 * 26^5 * 10 * 10 possibilités, soit 26^6 * 10^2. De manière plus visuelle, il y a 30 891 577 600 combinaisons à tester. Oui nous avons bien quasiment 31 milliards de possibilités. C’est conséquent vous en conviendrez…

Néanmoins en fonction des capacités de calcul dont dispose l’attaquant et surtout de la méthode d’attaque (en ligne ou hors ligne), celui-ci peut aujourd’hui très facilement grimper de manière conséquente. Ainsi une Geforce RTX 3080 utilisée via Hashcat pour casser hors ligne des hashes NTLM peut tester environ 101 GH/s (soit 101 * 10^9 hashes par seconde, soit 101 000 000 000, 101 milliards)*. Il faudrait donc moins d’une seconde à l’attaquant pour trouver le bon mot de passe qui suivrait ce pattern. Ajoutez à cela l’éventuelle utilisation d’un dictionnaire des mots de passe les plus courants et vous obtenez une temps de découverte imbattable.

Mais alors quelle solution ?

La solution pour rendre le mot de passe plus robuste et mettre l’attaquant en difficulté est sans conteste l’augmentation de la longueur de celui-ci, sans nécessairement forcer une quelconque complexité. Prenons un exemple simple : si je passe sur un mot de passe de 12 caractères au lieu de 8, sans qu’on m’impose de complexité et que je fais le choix discutable de n’utiliser que des minuscules.

Pouvez-vous deviner le nombre de combinaisons à essayer pour être certain de trouver le bon mot de passe ?

Il y a alors 26^12 combinaisons, soit 95 428 956 661 682 176, 95 billiards de possibilités. C’est environ 3 millions de fois plus que précédemment. L’auriez-vous imaginé ?

Reprenons notre calcul de puissance de cassage de mot de passe. Toujours dans les mêmes conditions l’attaquant mettra environ 945 000 secondes à tester toutes les combinaisons. C’est à dire environ 10 jours, mais je vous laisse vérifier le calcul par vous même.

Alors bien entendu, en fonction de la détermination de l’attaquant et du temps dont il dispose, 10 jours c’est peu. Et si je montais mon mot de passe à 18 caractères ? Combien de combinaisons y aurait-il ? En gardant strictement l’utilisation de minuscules de A à Z, nous aurions 26 ** 18 possibilités, soit 29 quadrillion (10^21). Et combien de temps pour casser le mot de passe dans ces conditions ? 3 milliards de jours. 3 milliards.

Cela semble intéressant non ?

Si en complément vous complexifiez le travail de l’attaquant en utilisant des mots simples à retenir mais sans rapport avec vous, et qu’entre chaque mot vous ajoutez un chiffre par exemple, la complexité va encore grandir de manière exponentielle surtout si la longueur de votre mot de passe finit par être de 20 caractères au lieu de 18.

Comment retenir ce nouveau mot de passe ? Utilisez un gestionnaire de mot de passe, et vous pouvez éventuellement adopter la méthode proposée dans cette bulle XKCD :

source : https://xkcd.com/936/

Bien entendu les valeurs proposées en termes de possibilités testées par seconde sont très inférieures à nos statistiques, car cette bulle est très vieille, mais vous avez l’idée.

Et avec tout cela suis-je assuré d’être protégé correctement ?

Je vois déjà les plus taquins d’entre vous préparer les questions suivantes :

Alors, oui, en cas de fuite de mot de passe vous ne pourrez rien faire. Sauf si votre compte en question est protégé par MFA et que vous utilisez bien un mot de passe unique pour chaque compte.

Si vous utilisez un gestionnaire de mot de passe, bien entendu votre mot de passe maitre devra être très robuste, et je vous encourage à nouveau à utiliser le MFA pour cet outil.

Pourquoi cet article, d’où vient l’idée ?

Dans une précédente expérience professionnelle, un junior de mon équipe a “égaré” le mot de passe pour déchiffrer la partition LUKS au démarrage d’une machine d’une grande importance pour la société, qui fort heureusement n’était qu’en phase d’intégration et pas encore en production : celui du gestionnaire de mots de passe du centre de services, enfin le nouvel outil qui devrait le supplanter.

Fier de lui, il est arrivé avec une “idée de génie” : “je sais que le mot de passe faisait 16 caractères, qu’il ne contient que des minuscules, majuscules et une combinaison de caractères spéciaux choisis dans cette plage” (il y avait 10 caractères spéciaux possibles, mais nous ne savions pas combien de majuscules, combien de minuscles, ni combien de caractères spéciaux).

Je lui ai alors demandé de calculer le nombre de combinaisons possibles pour ce mot de passe, et de vérifier les capacités de cassage de ce type de hash sur nos machines actuelles mais aussi sur des machines équipées des cartes graphiques les plus puissantes du moment. Après “quelques” minutes, le résultat était sans appel, nous serions tous bel et bien mort et enterrés avant que cela arrive car il fallait plusieurs milliards d’années. Si vous voulez faire le calcul par vous-même, reprenez notre source de bench Hashcat sur github, je vous fais cadeau du type de hash à chercher : 14600. Capacité de cassage d’une RTX 3080 pour ce type de hashes : un peu plus de 22 000 par seconde.

Source :

https://gist.github.com/

Retour à l'acceuil
Nos derniers articles
Pourquoi passer au DevSecOps
S'informer
NMAP - Origines & Evolutions
Lire l'article
Pourquoi passer au DevSecOps
S'informer
MIRAI - Analyse d'une attaque sophistiquée
Lire l'article
Pourquoi passer au DevSecOps
Se Protéger
Les mots de passe et leur robustesse
Lire l'article
Accéder à tous les articles

Nos derniers articles

Active Directory - Son rôle & ses avantages

timer for read article
3 minutes
September 14, 2022
Active Directory peut être une solution extrêmement efficace de gestion de votre système d’information si elle est utilisée à bon escient. Quels sont son rôle et ses avantages en entreprise ?
Malek F.

NMAP - Origines & Evolutions

timer for read article
2 minutes
September 6, 2022
Initialement développé pour permettre une cartographie rapide de larges réseaux informatiques, en 25 ans, le créateur de NMAP, a repris ce qu'il se faisait de meilleur sur les autres outils pour aboutir à un outil open source très puissant.
Taha S.

MIRAI - Analyse d'une attaque sophistiquée

timer for read article
+ de 5 minutes 
August 26, 2022
L’attaque date de septembre 2016. Elle est intéressante à analyser, car d’une part, elle est toujours d’actualité en 2022, des souches de MIRAI existent toujours. D’autre part, elle est élégante et sophistiquée par les mécanismes mis en œuvre.
Didier M.