Eu tenho lido alguma literatura sobre segurança, especificamente segurança / criptografia de senha, e há uma coisa que eu estou me perguntando: a regra dos 3 ataques é uma solução perfeita para a segurança de senhas? Ou seja, se o número de tentativas de senha for limitado a um número pequeno, após o qual todas as solicitações de autenticação não serão atendidas, isso não protegerá os usuários contra invasões? Sei que obter acesso ou controle sobre algo nem sempre significa passar pelo sistema de autenticação, mas esse recurso não torna obsoletos os ataques de dicionário / força bruta? Tem algo que estou perdendo?
10
Respostas:
Sim, isso tornará os ataques de dicionário impossíveis através do mecanismo de login . (Porém, isso não significa muito se eles obtiverem acesso ao banco de dados. Por segurança, você precisará hash e salgar as senhas corretamente.)
Também permite a possibilidade de um ataque do DOS contra um determinado usuário. Digamos que eu queira impedir que você faça o login. Tudo o que eu preciso fazer é executar três tentativas de login falsas na sua conta e fazê-lo novamente toda vez que você fizer o necessário para redefinir o login. Lidar com esse problema é um pouco mais complicado.
fonte
Também concordo que isso torna os ataques de dicionário menos eficazes como formas de obter acesso a uma conta sem a devida autoridade. Contudo:
Essa abordagem pode transformar um ataque de dicionário em um ataque do DOS contra o sistema, impedindo o acesso, se implementado mal. Por exemplo, um servidor pode ser inundado com tentativas de autenticação. Uma maneira de contornar isso é fazer com que o serviço de autenticação controle o fluxo de acessos subseqüentes a uma conta bloqueada. Por exemplo, se uma conta estiver bloqueada, apresente um atraso antes de cada tentativa de login subsequente. Pode-se colocar um atraso entre uma tentativa de login e um `acesso negado ', no entanto, que mantém a porta aberta para um ataque distribuído de negação de serviço, no qual um invasor lança muitas tentativas de autenticação simultâneas.
Como mencionado na outra resposta, isso também pode transformar um ataque de dicionário em um DOS bruto contra o proprietário legítimo da conta que está sendo atacada. As maneiras de mitigar o impacto para o legítimo proprietário incluem:
Se o seu medo está inadvertidamente penalizando um usuário esquecido como se fosse um invasor, em vez de controlar o fluxo de tentativas de login com falha após um número fixo de tentativas com falha, você pode usar a frequência de tentativas de login como evidência de que uma conta está sendo atacada. Por exemplo, se você vir 10 tentativas de autenticação no espaço de um segundo, poderá usar um dos métodos acima para impedir novas tentativas de autenticação semelhantes. Como alternativa, você pode usar essa enxurrada rápida de tentativas de login como um sinal para começar a controlar o fluxo. Esse método está se tornando cada vez mais popular nos fóruns, enquanto, após uma certa quantidade de tentativas de login com falha de um IP específico, esse IP é impedido de se autenticar por um curto período de tempo.
Finalmente, uma boa maneira de impedir que um usuário seja repetidamente alvo de um ataque do DOS é permitir que ele redefina sua senha e nome de usuário . Em outras palavras, trate o nome de usuário e a senha como segredos. Onde o nome de usuário for usado em outro lugar (por exemplo, em um fórum, se o nome de usuário for o nome de exibição do usuário), simplesmente trate esse nome de exibição como algo separado. Essa abordagem geralmente é usada pelas redes sociais em que o nome de usuário usado na autenticação é o endereço de e-mail de alguém - algo que pode ser alterado, mas raramente é compartilhado - enquanto o nome de exibição usado no site é algo definido pelo usuário que pode ou não ser alterado.
De qualquer forma, espero que uma ou alguma combinação dessas abordagens seja útil.
fonte