82 votes

Pourquoi devrait vérifier un mot de passe erroné prendre plus de temps que la vérification de la bonne méthode ?

Cette question m’a toujours troublé.

Sous Linux, quand on vous demande un mot de passe, si votre entrée est correcte, il vérifie tout de suite, sans presque aucun délai. Mais, en revanche, si vous tapez le mot de passe erroné, il faut plus de temps à vérifier. Pourquoi ?

J’ai observé cela dans toutes les distributions Linux que j’ai jamais essayé.

105voto

paxdiablo Points 341644

C'est en fait pour empêcher les attaques par force brute d'essayer des millions de mots de passe par seconde. L'idée est de limiter la façon dont rapidement les mots de passe peuvent être vérifiés et il y a un certain nombre de règles qui doivent être suivies.

  • Un succès d'utilisateur/mot de passe paire devrait réussir immédiatement.
  • Il devrait y avoir aucune différence perceptible dans les raisons de l'échec qui peut être détecté.

Cette dernière est particulièrement importante. Cela signifie pas de messages utiles comme:

Your user name is correct but your password is wrong, please try again

ou:

Sorry, password wasn't long enough

Pas même une différence de temps de réponse entre le "non valide de l'utilisateur et le mot de passe" et "utilisateur valide, mais non valide mot de passe" raisons de défaillance.

Chaque échec doit livrer exactement les mêmes informations, textuelles et autrement.

Certains systèmes plus loin encore, une augmentation du délai à chaque panne, ou seulement aux trois échecs puis d'avoir un énorme retard avant de permettre à une nouvelle tentative.

14voto

RossFabricant Points 7745

Cela en fait prendre plus de temps à deviner les mots de passe.

12voto

Daniel Brückner Points 36242

Je ne sais pas, mais il est assez fréquent d’intégrer un retard après avoir entré un mot de passe incorrect pour rendre les attaques plus difficile. Ce qui rend une attaque pratiquement infaisable, car il vous faudra beaucoup de temps pour ne vérifier que quelques mots de passe.

Même en essayant quelques mots de passe - dates de naissance, le nom du chat et choses comme ça - est transformé en aucun plaisir.

12voto

user32542 Points 121

Fondamentalement, pour atténuer les effets de la force brute et les attaques de dictionnaire.

À partir de Linux-PAM Guide du Développeur d'Applications:

La planification pour les retards

extern int pam_fail_delay(pam_handle_t *pamh, unsigned int micro_sec);

Cette fonction est offerte par Linux-PAM pour faciliter les temps de retard à la suite d'une échec d'appel à pam_authenticate() et avant le contrôle est retourné à l' application. Lors de l'utilisation de cette fonction le programmeur d'application devrait vérifier s'il est disponible,

#ifdef PAM_FAIL_DELAY
    ....
#endif /* PAM_FAIL_DELAY */

Généralement, une application demande qu'un utilisateur est authentifié par Linux-PAM par le biais d'un appel à pam_authenticate() ou pam_chauthtok(). Ces fonctions s'appellent les uns des empilées les modules d'authentification répertoriés dans le Linux-PAM fichier de configuration. Comme indiqué par ce fichier, une ou plusieurs de ces modules peut échouer causant la pam_...() appel à retourner une erreur. Il est souhaitable que il y à aussi une pause avant que le l'application se poursuit. Le principal la raison de ce retard est la sécurité: un delay agit de décourager la force brute les attaques par dictionnaire principalement, mais aussi aide à entraver chronométré (canaux cachés) des attaques.

8voto

Adam Liss Points 27815

C'est très simple, presque sans effort, de manière à augmenter considérablement la sécurité. Considérer:

  1. Système d' A n'a pas de retard. Un attaquant a un programme qui crée nom d'utilisateur/mot de passe combinaisons. À un taux de milliers de tentatives par minute, il ne faut que quelques heures à essayer toutes les combinaisons et d'enregistrer avec succès toutes les connexions.

  2. Système d' B génère un retard de 5 secondes après chaque mauvais deviner. L'attaquant de l'efficacité a été réduite à 12 tentatives par minute, effectivement paralysant l'attaque par force brute. Au lieu de quelques heures, il peut prendre des mois pour trouver une connexion valide. Si les pirates étaient que patient, ils vont légitime. :-)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X