Pourquoi une tentative de mot de passe incorrecte prendrait-elle beaucoup plus de temps à traiter qu'une bonne?

17

L'endroit le plus important que j'ai remarqué est lorsque SSH est au travail, mais j'ai l'impression d'avoir également observé ce comportement ailleurs.

Lorsque j'essaie de me connecter aux serveurs Linux à partir de mon bureau Windows au travail, j'ai remarqué que si je saisissais mal mon mot de passe, il me fallait environ 5 secondes avant de récupérer "Accès refusé". Ensuite, lorsque je tape correctement mon mot de passe, la connexion (avec les messages de bienvenue, etc.) est pratiquement instantanée.

Y a-t-il une raison logique à cela, ou serait-ce dû à une configuration étrange spécifique aux machines ici au travail?

Cam Jackson
la source
1
Il y a une bonne discussion / réponse à ce sujet sur stackoverflow.com/questions/712339/… , notamment en réduisant spécifiquement le délai d'échec Linux ici et ici
drzaus
la même chose se produira lorsque vous vous connecterez à Windows avec un mot de passe incorrect, mais je remarque que le temps varie de temps en temps, dans une large plage allant de quelques secondes à environ 1-2 minutes
phuclv

Réponses:

21

Il y a probablement un délai artificiel intégré pour rendre plus difficile la réussite d'une attaque par force brute.

Vous le verrez sur de nombreuses invites de connexion qui impliquent une authentification sécurisée ...

Rhys Gibson
la source
1
Ah, je n'avais pas pensé à ça. Cela est parfaitement logique et expliquerait pourquoi j'ai l'impression d'avoir vu le même retard ailleurs.
Cam Jackson
aka tarpitting. Merci, Michael Kjörling ( superuser.com/questions/916187/… )
rfportilla
10

Il s'agit d'un délai prévu pour empêcher les attaques par force brute. Un délai plus long empêche également l'attaquant de deviner la différence entre le nom d'utilisateur est faux et le mot de passe est faux (le hachage et la vérification du mot de passe prennent beaucoup plus de temps que la vérification du nom d'utilisateur).

Jens Erat
la source
1

Techniquement, ce retard délibéré vise à empêcher des attaques comme "l'attaque de linéarisation" (il y a aussi d'autres attaques et raisons) .

Pour illustrer l'attaque, considérons un programme (sans ce délai délibéré), qui vérifie une série entrée pour voir si elle correspond à la série correcte, qui dans ce cas se trouve être " xyba " . Pour plus d'efficacité, le programmeur a décidé de vérifier un caractère à la fois et de quitter dès qu'un caractère incorrect est trouvé, avant de commencer les longueurs sont également vérifiées.

La longueur de série correcte prendra plus de temps à traiter qu'une longueur de série incorrecte. Encore mieux (pour l'attaquant), un numéro de série qui a le premier caractère correct prendra plus de temps que celui qui a un premier caractère incorrect. Les étapes successives du temps d'attente sont dues au fait qu'à chaque fois qu'il y a une boucle de plus, une comparaison à effectuer sur une entrée correcte.

  • Ainsi, l'attaquant peut sélectionner une chaîne de quatre caractères et la chaîne commençant par x prend le plus de temps. (par devinettes)
  • L'attaquant peut alors fixer le caractère sur x et faire varier le deuxième caractère, auquel cas il trouvera que y prend le plus de temps.
  • L'attaquant peut alors fixer les deux premiers caractères en xy et faire varier le troisième caractère, auquel cas ils trouveront que b prend le plus de temps.
  • L'attaquant peut alors fixer les trois premiers caractères en tant que xyb et faire varier le quatrième caractère, auquel cas ils constateront que a prend le plus de temps.

Par conséquent, les attaquants peuvent récupérer le caractère série un à la fois.

Linearization.java.

Linearization.docx, exemple de sortie

Le numéro de série comprend quatre caractères et chaque caractère a 128 valeurs possibles. Ensuite, il y a 128 4 = 2 28 = 268 435 456 publications en série possibles . Si l'attaquant doit deviner au hasard des numéros de série complets, elle devinerait le numéro de série dans environ 2 27 = 134 217 728 essais, ce qui représente une énorme quantité de travail . En revanche, en utilisant l'attaque de linéarisation ci-dessus, une moyenne de seulement 128/2 = 64 suppositions est requise pour chaque lettre, pour un travail total attendu d'environ 4 * 64 = 2 8 = 256 suppositions, ce qui est un montant trivial de travail.

Une grande partie de la martiale écrite est adaptée de cela (tirée de "Information Security: Principles and Practice" de Mark Stamp). De plus, les calculs ci-dessus ne prennent pas en compte la quantité de conjectures nécessaires pour déterminer la longueur de série correcte.

Ashesh Kumar Singh
la source