Question:
Mauvais mot de passe - nombre de tentatives - quel bon nombre autoriser?
user93353
2016-10-09 17:32:13 UTC
view on stackexchange narkive permalink

La plupart des sites logiciels & semblent avoir un défaut de verrouillage automatique ou de verrouillage horaire après 3 tentatives erronées.

Je pense que le nombre pourrait être beaucoup plus élevé - ne pas autoriser les tentatives, c'est principalement pour empêcher les attaques automatisées par force brute, je pense. La probabilité qu'une attaque par force brute obtienne le bon mot de passe en 4 tentatives est presque la même qu'en 3 tentatives, c'est-à-dire très très petite. Je pense que cela peut être maintenu beaucoup plus haut sans compromettre la sécurité.

Je sais qu'il existe d'autres stratégies comme augmenter le temps de réessai après chaque nouvelle tentative - mais je demande une stratégie simple comme le verrouillage après "n" tentatives - quel est un bon "n" maximum?

Cela dépend vraiment de l'expérience utilisateur que vous souhaitez offrir.Vos utilisateurs s'attendent-ils à une sécurité élevée de leurs comptes ou à des connexions faciles?Nous ne pouvons pas calculer cela pour vous et même du côté de la sécurité, cela dépend de nombreux facteurs.Par exemple, quelle est votre justification pour ne pas verrouiller après une tentative infructueuse?Une fois que vous comprenez clairement cela pour vous-même, la justification d'un nombre plus élevé devient plus claire.
Je ne limiterais pas du tout les essais par compte pour une application Internet typique, le risque qu'un attaquant verrouille l'utilisateur réel est trop grave.J'irais avec les CAPTCHA basés sur le compte et le verrouillage basé sur IP.Bien que les jetons uniques envoyés par e-mail puissent être une solution pour permettre à l'utilisateur légitime de se connecter même pendant une attaque.
@CodesInChaos: Ne pas limiter les tentatives de connexion est un risque de sécurité énorme!Au lieu de cela, vous devez atténuer les frais généraux de support en ajoutant un deuxième facteur d'authentification et / ou en augmentant les délais entre les connexions.Les CAPTCHA peuvent être utilisés comme deuxième facteur, mais ils constituent une expérience utilisateur horrible pour un usage général et sont susceptibles d'être un véritable arrêt pour les clients.
@JulianKnight Devoir répondre aux CAPTCHA pendant que votre compte est attaqué est certainement moins ennuyeux que de ne pas pouvoir se connecter du tout.Les délais par compte se comportent comme un verrouillage par compte, empêchant l'utilisateur légitime de se connecter. Le deuxième facteur est intéressant, mais peu de sites Web ont le pouvoir de forcer l'utilisateur à l'utiliser.
@CodesInChaos:, vous semblez focalisé sur un problème parmi plusieurs.DOS dû à quelqu'un d'autre qui bombarde votre connexion n'est qu'un scénario d'attaque et, je dirais, pas le plus courant.Les tentatives simples de cambriolage sont une menace ** bien ** plus courante.Le fait de ne pas restreindre les tentatives de connexion infructueuses est l'une des premières choses sur lesquelles vous serez sollicité lors d'un audit de sécurité (par exemple, un test du stylet ou un bilan de santé informatique).C'est ** très ** dangereux.
L'exigence PCI est 5
juste comme note latérale: même trois tentatives peuvent être beaucoup, si l'attaquant peut essayer les mots de passe sur * chaque * compte.Dites 1% d'avoir obtenu le mot de passe correct au cours des trois premières tentatives et d'essayer 1000 comptes -> 10 connexions réussies (et 990 personnes verrouillées hors de leurs comptes).Limiter les tentatives par IP peut donc être judicieux (indépendamment des autres mécanismes)
Comme d'autres l'ont noté, il existe trop de façons de deviner le mot de passe: essayer tous les mots de passe pour un seul utilisateur ou essayer les mêmes mots de passe pour tous les utilisateurs.En ayant 4 essais avant le blocage / délai, vous autorisez 1 estimation de plus * par utilisateur *, ce qui signifie des millions d'essais supplémentaires dans une grosse application.
Personnellement, je pense que jusqu'à 10 fonctionnent pour la plupart des configurations alphanumériques (donc pas un code PIN à 4 chiffres).De manière réaliste, si un utilisateur ne se souvient pas de son mot de passe après 10 tentatives, il l'a oublié, et si un attaquant peut deviner le mot de passe sous lequel l'utilisateur a un très mauvais mot de passe ...
Cela dépend de vos exigences en matière de mot de passe.Plus les exigences sont complexes et uniques, moins l'utilisateur se souviendra de votre mot de passe.Vous pourriez rendre votre expérience utilisateur mauvaise si les gens ne peuvent même pas entrer dans votre service et le rendre sujet à l'ingénierie sociale, comme mentionné dans la première réponse.
"La plupart des sites et logiciels semblent avoir un verrouillage automatique ou un verrouillage horaire par défaut après 3 tentatives erronées."Citation requise.Je doute * sérieusement * que la plupart des principaux sites verrouillent votre compte aussi rapidement.Je sais pertinemment que Google ne le fait pas (ou du moins ne l'a pas fait il y a quelques mois).
Il était une fois une douzaine d'appareils connectés à mon compte Exchange d'entreprise, et chaque fois que je changeais mon mot de passe (obligatoire tous les 45 jours, ce qui est une toute autre discussion sur les raisons pour lesquelles c'est terrible), tous mes appareils essayaient deréauthentifiez-vous dans un délai d'une minute et finissez par verrouiller mon compte.Finalement, j'ai dû élaborer une procédure de désactivation des périphériques, de changement de mot de passe, puis de les mettre sous tension un par un, car je fixais le mot de passe sur chacun.Mais assez lentement pour ne pas déclencher le verrouillage automatique.IMO, verrouiller automatiquement les comptes uniquement en fonction du nombre de tentatives est une mauvaise UX.
Pour un seul nom d'utilisateur ou une seule source IP, des essais à l'infini, espacés par exemple de 3 secondes, sont bien plus que nécessaires pour se débarrasser des attaques automatisées.Le lock-out «3tries» était et est toujours une règle stupide que quelqu'un a créée sans y penser.
@jpmc26 Ceci est certainement vrai pour la plupart des banques, bien que beaucoup d'entre elles aient beaucoup d'autres restrictions de mot de passe douteuses en raison du code hérité: des choses comme la limitation du jeu de caractères et la longueur du mot de passe ne sont pas du tout rares.
@jpaugh - oui, toutes les banques où j'ai des comptes se verrouillent après 3,4 tentatives.
Six réponses:
mattdm
2016-10-09 22:40:48 UTC
view on stackexchange narkive permalink

À moins que vous n'ayez des moyens séparés pour restreindre l'accès au formulaire de connexion lui-même, une bonne base est ne pas avoir de limite stricte . C'est parce qu'il est beaucoup trop facile pour quelqu'un d'être complètement bloqué sur son compte.

C'est mauvais à cause du déni de service, évidemment, mais c'est aussi un problème de sécurité en soi. Cela augmentera les demandes d'assistance des personnes demandant le déverrouillage de leur compte, et les personnes qui effectuent le déverrouillage s'habitueront, et les attaques d'ingénierie sociale commençant par "hé, mon compte est verrouillé" deviendront beaucoup plus faciles.

Au lieu de cela, prolongez les délais, mais pas indéfiniment; juste assez pour limiter le nombre de suppositions à un montant raisonnable au fil du temps compte tenu des exigences de complexité de votre mot de passe.

D'accord.Une bonne idée est également d'avoir des politiques de mot de passe dynamiques * ET * des restrictions dynamiques selon le compte.Ainsi, par exemple, un compte d'utilisateur pourrait avoir un système qui entraînerait un temps d'attente d'environ 15 minutes sur 90 tentatives (90e tentative = 15 minutes d'attente, puis chaque nouvelle tentative entraînera encore 15 minutes), mais permet également que le temps de verrouillage soitcontourné par un captcha.Mais un compte administrateur ou à privilèges élevés pourrait avoir un verrouillage de 24 heures après la 10e tentative, et aucun contournement de captcha.(plutôt, le temps d'attente captcha PLUS est requis).
Pour l'incorporation de comptes, une sorte de valeur stockée, des licences, des produits ou tout autre élément ayant une valeur monétaire, une bonne idée est de calculer la valeur monétaire du compte, puis de subir des limitations basées sur cela.Ainsi, un compte sans valeur de 5 € a des limites de tentatives très élevées, tandis qu'un compte de grande valeur avec comme 500 € verrouillera très bientôt et avec des limites assez longues.Mais concevez bien le système afin qu'un attaquant ne puisse pas l'utiliser pour interroger la valeur des comptes.Cela peut être utilisé par une valeur fuzz qui aléatoirera un peu le verrou temporel, donc un attaquant doit utiliser beaucoup de tentatives pour trouver la valeur.
Cela ne répond pas à la question (l'OP a dit: verrouillage automatique * ou * verrouillage horaire).
"Au lieu de cela, prolongez les délais d'expiration - mais pas indéfiniment" - l'implémentation du délai d'expiration en tant que seau de jetons le fera ressembler un peu à une limite finie avec un verrouillage, sauf que vous n'êtes pas vraiment verrouillé, vous devez simplement attendrel'intervalle de jeton.Je soupçonne (mais je n'ai aucune preuve) que le numéro 3 se produit parce que c'est une tentative de taper le mot de passe incorrect (faute de frappe ou mal mémorisé), suivie d'une tentative répétée, suivie d'une tentative très prudente.Cela "devrait" être rapide.Si vous ne parvenez toujours pas à y arriver après cela, il y a de fortes chances que quelque chose ne va pas (par exemple, vous ne le savez pas).
@sebastiannielsen Si le mot de passe d'un utilisateur est dans les 200 mots de passe les plus courants, j'obtiens 2 €.Si c'est dans les 100 plus courants, j'obtiens 5 €.Si c'est dans les 50 plus courants, j'obtiens 8 €.Si c'est dans les 10 plus courants, j'obtiens 50 € ... Si j'étais un pirate (pirate informatique criminel), je saurais si j'exécuterais un bot à travers une charge de comptes pour un faible paiement fréquent (c'est pratiquementune loterie à faible risque dont vous pouvez réellement tirer * plus d'argent * que vos coûts!).
@sebastiannielsen Ce qui signifie que je peux faire des ravages en demandant à mon bot de faire dix mauvaises suppositions pour tous les comptes que je pense être admin.(ou juste tous les comptes, car le coût est bon marché.) Je n'y aurai pas accès, mais les administrateurs légitimes non plus.: \
"Au lieu de cela, prolongez les délais - mais pas indéfiniment" - Je suis techniquement bloqué de mon ordinateur d'entreprise car ils ont implémenté des délais quadratiques et je ne peux pas continuer à essayer de modifier l'idée vague de ce que j'ai mis.
@durum Oui, «quadratique» devient «infini» à toutes fins pratiques bien trop vite.
jojoob
2016-10-09 18:39:22 UTC
view on stackexchange narkive permalink

À mon avis, cela ne peut pas être répondu en général. Cela dépend de vos exigences en matière de convivialité, de sécurité et d'autres paramètres.

L'un des principaux facteurs est l'étendue de la gamme de mots de passe possibles dans votre scénario spécifique. En supposant qu'un attaquant n'a pas d'autres informations sur le mot de passe et doit forcer brutalement la bonne combinaison, il a une chance de 1 au nombre de combinaisons de mots de passe possibles pour deviner le mot de passe spécifique.

Par exemple avec un 4 chiffres Numéro PIN il y a 10 000 combinaisons possibles (10 ^ 4). La probabilité de deviner une combinaison spécifique en une seule tentative est de 1 à 10 000 ou 0,01%. Autoriser deux tentatives double les chances de le deviner à 0,02%.

C'est à vous de trouver le bon compromis pour votre scénario spécifique. Mais gardez à l'esprit que le forçage brutal n'est pas la seule attaque méthode que vous devrez peut-être envisager. Certains attaquants peuvent avoir des informations supplémentaires sur la cible et peuvent donc améliorer les chances de deviner correctement en essayant une combinaison plus probable (par exemple, si une personne ciblée utilise des informations personnelles dans son mot de passe et que l'attaquant en a connaissance).

En fait, c'est _exactement_ 0,0002 (ou 0,02%).Si l'attaquant choisissait uniformément au hasard sa deuxième estimation, et avait donc une chance de répéter la première estimation, sa chance de deviner correctement en deux essais serait de 0,00019999, mais en réalité, comme il peut exclure la première combinaison devinée, sa chance estun peu plus haut que ça.Plus précisément, 0,00000001 plus élevé, ce qui l'amène exactement à 0,0002.Je pense que c'est l'augmentation à laquelle vous pensiez.
Hm, je pensais avoir une chance de 0,0001 deviner correctement avec le premier essai.Et pour le deuxième essai, j'ai une chance de 1 à 9 999 = 0,00010001 ... et en somme c'est 0,020001.N'est-ce pas vrai?Je ne suis pas vraiment formé au calcul des probabilités.
@StackTracer Il ne l'est pas.Avec 4 combinaisons possibles, vos chances de deviner correctement sont de 25% au premier essai et de 50% au deuxième essai (puisque vous avez essayé la moitié des possibilités).La chance de deviner le mot de passe ** exactement ** lors du deuxième essai ** après ** un premier échec est de 33%, mais cela n'a pas d'importance dans l'ensemble.
@jojoob Selon vos calculs, ils ont 100,01% de chances de deviner correctement le mot de passe s'ils essaient 6322 mots de passe.Et une chance de 978,75% s'ils essayent tous les 10000.
@jojoob, 9999/10000 chances d'échouer au premier essai, 9998/9999 d'échouer au deuxième essai.Multipliez-les ensemble pour obtenir un total de 9998/10000 chances d'échouer après deux essais, ou 2/10000 = 0,0002 = 0,02% pour réussir après deux essais.
Merci @ilkkachu pour le coup de pouce.Je vais éditer la réponse ...
@ilkkachu voulez-vous dire une chance de succès de 0,02% en 2 essais ou moins?Supposons que le risque d'échec soit de 0 ou 1 une fois qu'un seul succès a été obtenu (0 si vous vous souvenez d'utiliser la broche réussie, 1 si vous continuez à essayer toutes les autres broches).
Julian Knight
2016-10-09 18:34:39 UTC
view on stackexchange narkive permalink

Le nombre considéré comme "sûr" est assez arbitraire car le risque est basé sur la valeur des données, le niveau de complexité autorisée et appliquée, la longueur minimale / maximale du mot de passe et éventuellement d'autres mesures de sécurité que vous avez peut-être implémentées.

Le nombre typique est compris entre 3 et 10. Si vous implémentez des intervalles de temps croissants entre les tentatives infructueuses, vous pouvez aller vers l'extrémité supérieure, mais seulement si vous autorisez / encouragez ou appliquez une complexité & de longueur de mot de passe relativement élevée. p>

Ce dont vous devez vous souvenir, c'est que la plupart des gens ne proposent pas de mots de passe aléatoires. Au Royaume-Uni, par exemple, la broche la plus courante est 1966 et une autre commune est 1066 - deux dates célèbres de l'histoire. Il y a plus à choisir en un mot bien sûr, mais les gens se retrouvent encore souvent avec des mots communs. Donc, autoriser 4 suppositions sur un mot de passe court est plus efficace que vous ne le pensez, surtout si votre système autorise d'autres tentatives après un délai d'expiration.

Bien sûr, sur de nombreux sites, cela n'a pas beaucoup d'importance si le risque et la sensibilité des données est faible.

En plus d'allonger les délais d'expiration, un autre bon moyen d'améliorer la sécurité est d'exiger un deuxième facteur d'authentification après quelques tentatives infructueuses. Envoi souvent d'un code par e-mail ou par téléphone.

Vous pouvez également empêcher les tentatives de connexion à partir de différents réseaux en une courte succession et en particulier de différentes localités. C'est également une bonne idée de consigner et d'auditer les tentatives de connexion infructueuses.

Ces stratégies permettent d'éviter des niveaux élevés d'appels au support client tout en minimisant les risques.

Ma banque (isbank) n'autorise pas les mots de passe commençant par 19.
"une bonne idée pour enregistrer et vérifier les échecs de connexion" - Vous ne savez pas si vous aviez également l'intention de consigner les _passwords_ échoués?Un mot d'avertissement ... si les mots de passe échoués étaient enregistrés et le journal piraté, le pirate aurait potentiellement accès à de nombreux "indices" de mot de passe d'utilisateurs légitimes qui avaient simplement mal saisi un caractère ou deux dans leur mot de passe.
Non, en général, vous ne devriez pas enregistrer les mots de passe même échoués car cela peut avoir des effets secondaires involontaires tels que l'affichage de mots de passe * presque * corrects.Pas bon.Cela peut être un exercice utile, mais seulement s'il est fait très soigneusement et que vous devez très soigneusement sécuriser et gérer la sortie, la mettre dans des journaux généraux n'est pas une bonne idée.
Theraot
2016-10-10 19:23:03 UTC
view on stackexchange narkive permalink

Problème

Note initiale: je suis partisan des serveurs Web, mais beaucoup de ce qui est dit ici s'appliquera à d'autres types de services.

Le problème est le déni de service . Cela peut se produire de deux manières: 1) Les attaquants exécutent la force brute de telle manière que cela finit par saturer le serveur, et maintenant personne ne peut accéder au service. 2) Les utilisateurs (malveillants ou non) peuvent essayer trop de fois, entraînant le verrouillage de l'accès.

Autres considérations

  1. Informer l'utilisateur si l'erreur est dans le nom d'utilisateur ou le mot de passe permettra à un attaquant de force brute / dictionnaire des noms d'utilisateur. Bien que cela va à l'encontre de la convivialité, vous devez opter pour la sécurité si les comptes sont destinés à être privés ou anonymes par défaut ※.

  2. Dire à l'utilisateur que le compte est verrouillé sera permettent aux attaquants de créer plus facilement des problèmes en verrouillant de nombreux comptes (ce qui est une forme de déni de service, et cela conduira probablement à de nombreux tickets de support). De plus, les comptes qui n'existent pas ne peuvent pas être verrouillés, ce qui permet aux attaquants de découvrir des comptes par cette méthode. Vous pouvez envisager de se moquer du verrouillage sur les faux comptes.

  3. La découverte de comptes n'est pas seulement la moitié de l'attaque par force brute / dictionnaire, mais elle peut également être utile dans le futur de l'ingénierie sociale.

  4. Une variante de l'attaque par force brute / dictionnaire consiste à essayer le même mot de passe (généralement un mot de passe statistiquement commun) contre un grand nombre de noms d'utilisateurs.

※: Les moteurs de recherche pourront-ils indexer les noms d'utilisateurs? S'ils le font, optez pour la convivialité (les attaquants ont de toute façon une liste de noms d'utilisateurs valides dans le cache du moteur de recherche). Évitez d'autoriser les moteurs de recherche à accéder à de telles informations sur des sites où savoir qui possède un compte peut être considéré comme une information sensible.

Solutions possibles

Il y a quelques éléments communs pour essayer de résoudre le problème :

  • Ajouter un CAPTCHA
  • Ajouter une heure de nouvelle tentative
  • Verrouiller le compte
  • Verrouiller l'origine
  • Authentification à deux facteurs

Il est à noter que seul le verrouillage de l'adresse IP au niveau du pare-feu ou de la configuration du serveur Web aura un impact réel sur la charge du serveur. Pourtant, si vous ne verrouillez l'origine que lorsqu'il est associé au compte donné, la logique sera dans le code côté serveur. Il est également vrai pour le reste des solutions qu'elles nécessitent du code côté serveur.

Ces solutions reposent sur du code côté serveur et ne protégeront donc pas vraiment le serveur d'une attaque par inondation. Cela signifie que l'application principale de ces méthodes est comme dissuasive .


Vocabulaire:

Pour le contexte de cet article, ces mots ont la signification mentionnée ici:

  • "Verrouiller": "empêcher l'accès jusqu'à ce qu'une autre authentification soit fournie", pour fournir des moyens d'authentification supplémentaires pour suivre des étapes similaires - sinon les mêmes - que celles fournies aux utilisateurs qui ont oublié leur mot de passe.

  • "Origine": l'adresse IP, l'agent utilisateur ou d'autres techniques que le serveur peut utiliser pour identifier la source d'une connexion. S'il est utilisé, il doit être mentionné dans la politique de confidentialité que le serveur enregistrera ces informations.

  • "Troisième canal": e-mail, SMS, application dédiée ou autre support privé communication en dehors du contrôle du serveur.

Il convient également de noter que selon cette définition, le temps de nouvelle tentative n'est pas un verrou car il ne nécessite pas d'authentification supplémentaire de utilisateur mais attendez à la place.

Et, parce que cela ne peut pas être dit assez de fois , hachez et salez vos mots de passe.

CAPTCHA

Il est à noter que toutes les solutions CAPTCHA ne sont pas visuelles. Certains sont auditifs, et d'autres encore textuels (par exemple: "Combien de couleurs dans la liste violet, pingouin, bleu, blanc et rouge?").

Avantages

CAPTCHA est facile à mettre en œuvre à l'aide de solutions tierces. L'utilisation d'une solution tierce externalise également le problème pour rendre un CAPTCHA suffisamment puissant.

Inconvénients

L'utilisation d'un CAPTCHA peut devenir un inconvénient pour les utilisateurs légitimes qui peuvent avoir des difficultés à saisir le mot de passe. Le reCAPTCHA actuel atténue ce problème en utilisant l'analyse de comportement pour identifier les utilisateurs humains.

Un robot peut résoudre CAPTCHA par une IA intelligente, ou simplement en demandant à l'attaquant de le résoudre.

Temps de réessayer

Avantages

Le temps de réessai a l'avantage de gagner du temps. Ainsi, il peut être combiné avec une notification sur un troisième canal pour alerter le propriétaire du compte.

Quelle action l'utilisateur peut-il entreprendre? Vous pouvez suggérer d'utiliser un mot de passe plus fort, mais cela ne résoudra pas vraiment le problème.

Comme alternative, envisagez de donner à l'utilisateur la possibilité de refuser l'accès de la machine attaquante (c'est-à-dire de verrouiller la combinaison de origine et compte) ※. Voir "Verrouiller l'origine".

※: Cela devrait nécessiter une authentification et n'affecter que le compte actuel. Des précautions doivent être prises pour éviter tout défaut susceptible d'entraîner le verrouillage d'un autre compte par un compte.

Inconvénients

L'utilisation d'un délai de réessai réduit la convivialité du service, car cela devient un inconvénient pour utilisateurs légitimes qui peuvent avoir des problèmes pour saisir le mot de passe. C'est pire que CAPTCHA car il s'agit d'un temps d'arrêt cognitif.

Les attaques par force brute / dictionnaire sont toujours viables si l'attaquant effectue une tentative une fois par heure environ. Les alternatives pour résoudre ce problème incluent des politiques de sécurité pour changer fréquemment le mot de passe (que l'utilisateur peut rendre inefficace en choisissant des mots de passe similaires) et IDS ou d'autres analyses pour détecter les attaquants (qui pourraient être contournés en distribuant l'attaque à partir de plusieurs sources - espérons-le. assez cher pour être dissuasif en soi).

Verrouiller le compte

Avantages

Il résiste à la propagation d’une attaque dans le temps ou à plusieurs origines.

Inconvénients

Le verrouillage du compte peut entraîner le verrouillage d'un utilisateur légitime du compte en raison du nombre de tentatives infructueuses.

De plus, les tentatives infructueuses d'un attaquant dans un troisième emplacement verrouillent l'utilisateur légitime. La combinaison du verrouillage de l'origine avec le verrouillage du compte permettrait un contrôle plus granulaire. Dans ce cas, le compte ne serait verrouillé que pour l'origine à partir de laquelle l'accès est tenté.

Les attaques peuvent toujours affecter le système en obligeant les utilisateurs légitimes verrouillés à contacter l'assistance ou à trouver un autre service.

Verrouiller l'origine

Avantages

Verrouiller une origine, indépendamment du compte, a l'avantage de permettre d'arrêter les attaquants au lieu de punir les comptes.

Inconvénients

Dans, il faudrait que le serveur suive l'origine des requêtes et distingue les échecs des tentatives réussies.

L'origine d'une attaque peut être partagée entre de nombreux utilisateurs (par exemple, dans Les cafés Internet), et le verrouillage d'une origine peut signifier le verrouillage des utilisateurs légitimes.

La combinaison du verrouillage de l'origine avec le verrouillage du compte permettrait un contrôle plus granulaire. Dans ce cas, au début, l'origine ne serait verrouillée que pour le compte auquel elle tente d'accéder, mais une origine verrouillée pour de nombreux comptes peut être verrouillée globalement.

Authentification à deux facteurs

Toutes les variantes de l'authentification à deux facteurs sont de puissants moyens de dissuasion par force brute / dictionnaire. Il existe deux variantes principales:

  • Envoyez un code via un troisième canal pour permettre l'authentification. Il ne devrait pas nécessiter de mesures supplémentaires pour empêcher la force brute de ce code, car il est destiné à être à usage unique et de courte durée.

  • Exiger un code de matériel / logiciel dédié clé pour l'authentification. La clé doit fournir un code à usage unique qui autorise l'authentification.

Avantages

L'authentification à deux facteurs est la seule solution qui peut réellement rendre brute- attaque de force / dictionnaire inefficace. Ceci est accompli en exigeant un code à usage unique, qui étant à usage unique ne sera pas deviné en essayant plusieurs fois.

Inconvénients

L'authentification à deux facteurs est souvent plus coûteuse à implémenter.

Quoi utiliser?

Il est judicieux d'ajouter une protection supplémentaire pour dissuader les attaques par force brute / dictionnaire. Le besoin de ces mesures est accru dans les systèmes où l'espace de mot de passe est trop petit ※, ou si la force minimale des mots de passe est trop faible (par exemple les broches à quatre chiffres courantes dans les banques).

※: Il est bon de mettre un plafond supérieur à la taille du mot de passe. De cette façon, le serveur ne sera pas bloqué lors d'un hachage coûteux sur le mot de passe. Et vous devriez utiliser un hachage coûteux car il dissuadera les attaques de force bure contre les codes de hachage volés .

CAPTCHA devrait être la première option, car il est très facile et peu coûteux à mettre en œuvre ( en utilisant des solutions établies telles que reCAPTCHA).

Entre le temps de nouvelle tentative et les verrous, considérez que l'implémentation minimale viable est similaire: pour verrouiller un compte, vous ajoutez un champ à l'objet / enregistrement du compte le marquant comme verrouillé, puis vérifiez que lors de l'authentification ... pour mettre un temps de relance, vous faites la même chose, sauf que ce que vous stockez est l'heure à laquelle l'authentification est à nouveau valide.


Il est logique d'atténuer l'inconvénient d'ajouter ces mesures une fois que quelques tentatives ont échoué. Si tel est le cas, appliquez d'abord CAPTCHA car cela ne crée pas de temps d'arrêt cognitif pour l'utilisateur.


Entre les options de verrouillage, nous avons vu que combiner l'origine et le compte est une meilleure alternative (mais aussi plus complexe) que l'un ou l'autre seul. La mise en œuvre nécessitera des journaux et des analyses.

Enfin, les authentifications à deux facteurs présentent des avantages qui surpassent les solutions ci-dessus. Pourtant, c'est le plus coûteux à mettre en œuvre car il nécessite une connexion à un service tiers (serveur de messagerie, service SMS, application dédiée, matériel dédié, etc.).

Je suggérerais de mettre en œuvre la journalisation et l'analyse et en fonction d'eux, décidez si vous souhaitez implémenter le verrouillage ou si vous souhaitez implémenter l'authentification à deux facteurs.

Combien de tentatives?

Il y aura:

  • n 1 tentatives jusqu'à ce que catpcha apparaisse.
  • n 2 tentatives jusqu'à ce que l'heure de nouvelle tentative s'affiche.
  • n 3 tentatives jusqu'à ce que le verrouillage soit appliqué.

Remarque: si vous utilisez l'authentification à deux facteurs, vous l'utilisez dès la première tentative.

Les valeurs de ces variables peuvent être modifiées ultérieurement en fonction de vos analyses. Cependant, pour des valeurs par défaut raisonnables, considérez:

  • n 1 devrait être une estimation du nombre de tentatives qu'une personne peut faire si elle a des problèmes pour saisir le mot de passe . 2 tentatives serait le minimun n 1 car cela explique l'erreur de base des caps. Remarque: gmail me permet 20 tentatives avant d'utiliser CAPTCHA.

  • n 2 devrait être une estimation du nombre de tentatives qu'une personne ferait avant d'aller à mécanisme de récupération d'accès. Il n'y a pas de minimum dur, en fait, il peut être appliqué dès que vous appliquez CAPTCHA et que vous avez des intervalles de temps croissants à attendre. À mon avis, n 2 = 3 * n 1 est un bon point de départ.

  • n 3 sub> doit être une estimation du nombre de tentatives pour lesquelles il est plus probable qu'une attaque soit faite. Considérez que CATPCHA et le temps de relance devraient dissuader toute attaque manuelle, donc n 3 n'a pas besoin d'être beaucoup plus élevé. À mon avis, n 3 = 2 * n 2 est un bon point de départ.

Remarque sur le temps de nouvelle tentative : L'intervalle que l'utilisateur doit attendre peut être augmenté à chaque tentative. Cela vous permet d'utiliser un très petit intervalle initial (par exemple 1 seconde) et de construire à partir de là jusqu'à un plafond fixe (par exemple 1 jour).

Remarque sur le comptage des tentatives: Vous devez éviter un débordement dans le les tentatives comptent. Si vous stockez le nombre de tentatives dans l'objet / l'enregistrement de compte, gérez le débordement. Si vous effectuez une requête sur les journaux pour obtenir le nombre de tentatives infructueuses de la dernière réussite, pensez à ajouter un intervalle de temps (qui limitera également la durée de la requête).

"Il est bon de mettre une limite supérieure à la taille du mot de passe. De cette façon, le serveur ne sera pas étouffé en effectuant un hachage coûteux sur le mot de passe."Cela peut être vrai ou non.bcrypt lui-même a une longueur de clé d'entrée (mot de passe) de 72 octets (avec une recommandation de n'utiliser que 56).Si vous calculez le hachage SHA512 du mot de passe réel et le transmettez à bcrypt, le coût supplémentaire d'un mot de passe long est négligeable.
Un autre inconvénient pour "verrouiller l'origine" est que toute tentative de force brute vraiment significative est susceptible de provenir d'un botnet, ce qui rend cela irréalisable.
@MartinBonner [Django a eu ce problème] (https://www.djangoproject.com/weblog/2013/sep/15/security/)
Bonne réponse!Vous voudrez peut-être ajouter aux `` inconvénients '' pour les CAPTCHA qu'ils posent souvent un problème de confidentialité: le CAPTCHA de Google semble être le plus fréquemment utilisé, et ils encouragent les gens à les laisser être suivis sur le Web en rendant les CAPTCHA presque impossibles pour ceux qui ne le font pas.'t (je sais que mes paramètres de confidentialité fonctionnent parce que j'obtiens toujours le type de ReCAPTCHA le plus difficile, et parfois j'obtiens indéfiniment «veuillez réessayer», quel que soit le nombre que je résolve correctement).L'utilisateur doit également accepter la politique de confidentialité et les conditions d'utilisation de Google pour utiliser ReCAPTCHA, ce qui est très légal et envahissant la vie privée.
coteyr
2016-10-10 14:20:57 UTC
view on stackexchange narkive permalink

Ce que j'utilise généralement est une formule de temps X en Y. 3 essais une seconde est un verrouillage, mais 3 essais en 60 secondes, c'est bien. 60 essais en 60 secondes, c'est mauvais, mais 60 essais par jour, c'est bien.

Beaucoup dépendra de ce que vous essayez de protéger. De plus, s'il y a des règles externes qui doivent être suivies comme la politique de l'entreprise, la HIPAA, etc.

L'idée générale est que cela devrait rendre le processus suffisamment long pour que le "méchant" abandonne et passe. Cela étant dit, il est important de ne pas lier les tentatives à une connexion, mais également à une plage IP et IP.

Cela dépend aussi beaucoup de votre processus de "restauration d'accès". Disons que vous exécutez une API qui permet aux clients d'obtenir le statut d'expédition. En cas de verrouillage, ils doivent appeler l'assistance et vérifier. Dans ce cas, j'autoriserais probablement quelque chose comme 120 tentatives tous les deux minutes et quelque chose comme 400 tentatives sur une période de 24 heures. Cela peut sembler élevé, mais avec la politique de «restauration», votre activité client peut être en panne pendant des heures ou des jours, si l'un de leurs scripts se détraque.

L'idée générale est d'arrêter ou de prolonger les attaques par force brute, mais pas de gêner les utilisateurs normaux, même lorsque les utilisateurs normaux utilisent de mauvaises informations d'identification.

Pouvez-vous expliquer comment lier les tentatives aux plages IP et IP?
Dans le cadre d'une solution au problème total, vous souhaiterez peut-être bloquer une adresse IP qui essaie 700 tentatives de connexion par minute.Cela aide avec DOS, mais signifie également que quelqu'un échouerait en essayant de se connecter au compte 700 avec le même mot de passe.Par exemple, la tentative de noms d'utilisateurs aléatoires avec le mot de passe "qwerty1!"s'il était lié à l'utilisateur seulement, les 700 tentatives réussiraient.Le lier à une adresse IP signifie que seules quelques tentatives réussiront.Faire similaire à une plage d'adresses IP aide avec les botnets.
Il est très facile d'obtenir une liste de noms d'utilisateur ou d'e-mails pour un site Web.Normalement, c'est de notoriété publique, mais même si ce n'est pas le cas, d'autres listes de diffusion connexes le sont.Par exemple, la société A utilise Jira.La liste des utilisateurs Jira est privée, mais l'annuaire de l'entreprise ne l'est pas.Vous pouvez donc essayer toutes les personnes de l'annuaire de l'entreprise, avec les 10 mots de passe les plus populaires, et peut-être avoir de la chance.
digitallyhere
2016-10-11 15:18:44 UTC
view on stackexchange narkive permalink

J'aime la limite de 3 (par heure. et peut-être 6-9 échecs par jour, 12-18 par quinzaine), mais les tentatives en double avec le même mot de passe (dans 3 groupes) ne doivent pas être comptées. Si vous avez effectivement oublié votre mot de passe, vous ne vous connectez probablement pas souvent, donc cela peut attendre. Mieux vaut que quelqu'un fasse trop de tentatives par jour pour le deviner.

Mais dans ce cas, si vous êtes déjà verrouillé, vous saurez que quelqu'un a essayé de le deviner, et nous besoin d'une stratégie sur la façon de gérer cela, en particulier lorsque vous souhaitez vous connecter.

Cela ne prend pas en compte les attaques par déni de service.
_Si vous avez réellement oublié votre mot de passe, vous ne vous connectez probablement pas souvent, donc cela peut attendre._ ne suit pas nécessairement.C'est peut-être quelque chose de très important et qui ne doit être fait qu'une fois par an, et je l'ai oublié jusqu'à la dernière minute.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...