pourquoi il faut plus de temps pour rejeter un mot de passe invalide que pour en accepter un correct
By amethyste on Apr 2, 2010 | In focus | 1 feedback »
C’est vrai que personne ne m’a posé la question, mais c’est certainement de la timidité, vous êtes sûrement nombreux à vous demander pourquoi il faut plus de temps pour rejeter un mot de passe invalide que pour en accepter un correct ?
Je cède donc au chantage de la foule et y réponds !
J’y réponds, vite dit, je reproduits juste la réponse publiée par Raymond Chen sur son blog que j’adore: The Old New Thing [1].
La réponse courte est que valider qu’un mot de passe est incorrect n’est pas aussi simple que cela en a l’air.
Lorsque vous vous loguez la première fois, Windows place le mot de passe dans un cache spécial [2, 4] qui conserve les mots de passe des 10 derniers utilisateurs. Ainsi si vous verrouillez votre session, le déverrouillage sera instantané car Windows considère que si le mot de passe est placé dans le cache alors il est réputé validé.
Le cache permet même de se reconnecter si par hasard vous n’aviez plus de connexion à ce moment là.
Evidement vous allez me dire que même sans être connecté à mon serveur de domaine favori, je peux tout de même me reconnecter à ma machine.
Encore une fois c’est le cache de mots de passe qui agit dans les coulisses.
Je ne le savais pas, mais il est possible de le désactiver pour faire une blague désopilante à un collègue qui part faire un avant vente en clientèle par exemple [3].
…
Déconnez pas les gars !
La vraie raison de cette possibilité est simplement de garantir qu’il est impossible de se connecter dans un contexte de sécurité obsolète.
Revenons à notre histoire. Il y a 3 cas de figure :
- Le mot de passe saisi se trouve dans le cache. Super, il est donc valide et on se connecte direct, c’est rapide.
- Il n’est pas dans le cache : il faut interroger le contrôleur de domaine, c’est plus ou moins long.
- Il est dans le cache, mais la saisie est invalide. Dans ce cas on retourne immédiatement KO et c’est rapide…
Vraiment ?
Et bien pas tout à fait. Il se pourrait parfaitement que la saisie soit en fait valide, mais que ce soit juste le hachage stocké dans le cache qui ne l’est plus parce que votre admin adoré (ou vous-même) a modifié le mot de passe depuis un autre machine. Il faut donc tester ce cas de figure là aussi en interrogeant le contrôleur de domaine.
Evidement ce n’est pas gratuit.
Il existe une autre raison plus subtile qui explique que tester un mot de passe invalide soit un peu plus long : le système ajoute automatiquement quelques secondes d’attente.
C’est bizarre vu comme cela, mais cette mesure limite le risque d’attaques avec des dictionnaires de mots de passe en augmentant de façon rapidement disproportionnée le temps moyen nécessaire pour craquer le mot de passe.
Bibliographie
[1] The Old New Thing
http://blogs.msdn.com/oldnewthing/archive/2010/03/23/9983312.aspx
[2] Sécurité des informations d'identification mises en cache dans Windows Server 2003, dans Windows XP et dans Windows 2000 (en français !!!!)
http://support.microsoft.com/kb/913485
[3] Restricting cached credentials in Windows
http://searchwinit.techtarget.com/tip/0,289483,sid1_gci968000,00.html
[4] Windows Confidential
http://technet.microsoft.com/en-us/magazine/2009.07.windowsconfidential.aspx
1 comment
This post has 9 feedbacks awaiting moderation...
Leave a comment
| « Créer un fichier en ASCII avec Visual Studio | Une première mondiale! » |