J'ai lu de la littérature sur la sécurité, en particulier la sécurité / le cryptage des mots de passe, et il y a une chose que je me demandais: la règle des 3 temps est-elle une solution parfaite à la sécurité des mots de passe? Autrement dit, si le nombre de tentatives de mot de passe est limité à un petit nombre, après quoi toutes les demandes d'authentification ne seront pas honorées, cela ne protégera-t-il pas les utilisateurs contre les intrusions? Je me rends compte que l'accès ou le contrôle de quelque chose ne signifie pas toujours passer par le système d'authentification, mais cette fonctionnalité ne rend-elle pas les attaques par dictionnaire / force brute obsolètes? Y a-t-il quelque chose qui me manque?
10
Réponses:
Oui, cela rendra les attaques par dictionnaire impossibles via le mécanisme de connexion . (Cela ne signifie toutefois pas grand-chose s'ils obtiennent l'accès à la base de données. Pour des raisons de sécurité, vous devrez hacher et saler correctement les mots de passe.)
Il permet également la possibilité d'une attaque DOS contre un certain utilisateur. Imaginons que je veuille vous empêcher de vous connecter. Tout ce que je dois faire est d'exécuter trois tentatives de connexion bidon sur votre compte, puis de recommencer chaque fois que vous faites tout ce qui est nécessaire pour réinitialiser la connexion. Traiter ce problème est un peu plus délicat.
la source
Je conviens également que cela rend les attaques par dictionnaire moins efficaces comme moyen d'accéder à un compte sans l'autorité appropriée. Toutefois:
Cette approche pourrait transformer une attaque de dictionnaire en une attaque DOS contre le système empêchant l'accès si elle est mal mise en œuvre. Par exemple, un serveur peut être inondé de tentatives d'authentification. Une solution consiste à faire en sorte que le service d'authentification contrôle le flux des accès ultérieurs à un compte verrouillé. Par exemple, si un compte est verrouillé, présentez un délai avant chaque nouvelle tentative de connexion. On pourrait toutefois mettre un délai entre une tentative de connexion et un «accès refusé», ce qui maintient la porte ouverte à une attaque par déni de service distribué où un attaquant lance de nombreuses tentatives d'authentification simultanées.
Comme cela a été mentionné dans l'autre réponse, cela pourrait également transformer une attaque de dictionnaire en un DOS brut contre le propriétaire légitime du compte attaqué. Les moyens d'atténuer l'impact sur le propriétaire légitime incluent:
Si votre peur pénalise par inadvertance un utilisateur oublieux comme s'il était un attaquant, au lieu de contrôler le flux des tentatives de connexion infructueuses après un nombre fixe de tentatives infructueuses, vous pouvez utiliser la fréquence des tentatives de connexion comme preuve qu'un compte est attaqué. Par exemple, si vous voyez 10 tentatives d'authentification en l'espace d'une seconde, vous pouvez soit utiliser l'une des méthodes ci-dessus pour empêcher d'autres tentatives d'authentification similaires. Alternativement, vous pouvez utiliser ce flux rapide de tentatives de connexion comme signal pour commencer à contrôler le flux. Cette méthode devient de plus en plus populaire sur les forums, alors qu'après un certain nombre de tentatives de connexion infructueuses d'une adresse IP particulière, cette adresse IP ne peut pas s'authentifier pendant une courte période.
Enfin, un bon moyen d'empêcher un utilisateur d'être ciblé à plusieurs reprises par une attaque DOS est de lui permettre de réinitialiser à la fois son mot de passe et son nom d'utilisateur . En d'autres termes, traitez le nom d'utilisateur et le mot de passe comme des secrets. Lorsque le nom d'utilisateur est utilisé ailleurs (par exemple dans un forum, si le nom d'utilisateur est le nom d'affichage de l'utilisateur), il suffit de traiter ce nom d'affichage comme quelque chose de distinct. Cette approche est généralement utilisée par les réseaux sociaux où le nom d'utilisateur utilisé pour l'authentification est son adresse e-mail - quelque chose qui peut être changé, mais qui est rarement partagé - tandis que le nom d'affichage utilisé sur le site est quelque chose de défini par l'utilisateur qui peut ou non. être changé.
Quoi qu'il en soit, j'espère qu'une ou une combinaison de ces approches vous sera utile.
la source