Veja neste post como o passprotect pode ajudar seus usuários a escolherem senhas mais fortes.
Politica de senha
Parte da segurança de identidade do usuário começa na politica de senha. A politica deve ser balanceada.
Se for muito rigida, 12 digitos, maiusculo, minisculo etc. Os usuários irão trapacear. Anotar no postit e pregar no monitor. Anotar no bloco de notas. Eles irão esquecer e ter que recuperar toda vez que forem utilizar novamente. E dependendo do seu tipo de serviço você pode perder esse usuário.
Boas praticas
Abaixo um breve resumo de boas práticas de senha segundo o NIST 800-63
- 8 caracteres no mínimo
- Suportar pelo menos 64 caracteres de comprimento máximo
- Todos os caracteres ASCII (incluindo espaço) devem ser suportados
- Verifique a senha escolhida com dicionários de senha conhecidos
- Permitir pelo menos 10 tentativas de senha antes do bloqueio
- Sem requisitos de complexidade
- Sem período de expiração de senha
- Nenhuma dica de senha
- Nenhuma autenticação baseada em conhecimento (por exemplo, quem era seu melhor amigo no ensino médio?)
- Sem SMS para 2FA (use uma senha de uso único de um aplicativo como o Google Authenticator)
Muitas dessas novas diretrizes desafiam as práticas atuais de segurança de senha. Por exemplo, a idéia de não exigir complexidade da senha é radicalmente diferente da que estamos habituado. No entanto, o NIST sugere que diretrizes como maior complexidade e alterações freqüentes de senha, por exemplo, levam a um comportamento inadequado a longo prazo. Os usuários que geralmente lidam com senhas complexas e frequentemente alteradas, acabam armazenando de maneira insegura. Por exemplo, o postit no monitor do computador. Para atender ao requisitos criam senhas previsíveis, Senha123!@#, por exemplo.
As diretrizes de senha do NIST 800-63 trabalham para combater esse comportamento, propondo essencialmente o uso de uma senha simples longa e que só deve ser alterada quando comprometida. Se tu não concorda, tudo bem, leia mais sobre as razões do NIST aqui
Multifactor Authentication
Uma boa maneira de proteger o seu site de ataques. É implementar mais de um fator de identidade.
A autenticação multifactor combina duas ou mais credenciais de naturezas distintas.
- O que o usuário sabe (senha)
- O que o usuário possui (token de segurança)
- O que o usuário é (verificação biométrica)
O objetivo do MFA é criar uma defesa em camadas. Dificultando o ataque de uma pessoa não autorizada. Se um fator for comprometido ou quebrado, o atacante ainda terá pelo menos mais uma barreira a ser violada.
Os cenários típicos do MFA incluem:
- Inserindo um One Time Password (Senha descartável) que foi emitido por e-mail.
- Solicitando um OTP através de um app como o Google Authenticator.
- Uma VPN com um certificado digital válido
- Fornecer a digital
- Anexando um token fisico, plugado na USB.
Cada fator de autenticação é uma categoria de credencial usada para comprovar a identidade do usuário. Cada fator adicional visa aumentar a garantia da identidade do usuário. As três categorias mais comuns são frequentemente descritas como algo que você conhece (Conhecimento), algo que você tem (Posse) e algo que você é (Herança).
Password entropy
No contexto de senhas, entropia é usada como uma medida de quão aleatória é uma senha. Quanto maior a entropia de uma senha, mais difícil é a força bruta. É medido em bits, e existe uma fórmula matemática para calculá-lo.
Para entender mais sobre como calcular a entropia veja mais nesse link
Balanceado
O segredo é ter um processo balanceado. Uma senha com 30 bits de entropia, recomendado pelo NIST. No primeiro acesso do dispositivo solicitar mais um fator com algo que o usuário possui. Por exemplo, um OTP através do SMS ou Google Authenticator.
Passprotect
O passprotect é um projeto que ajuda o usuário a identificar se o password dele já foi vazado em algum banco do dados. É um projeto que utiliza informações do site Have I been Pwned?.
É um plugin muito fácil de utilizar.
Abra o Visual Studio e crie um novo projeto ASP.NET Core Web Application. Selecione o tipo Web Application (Model-View-Controller) e altere a autenticação para Individual User Accounts.
Assim que o projeto for criado, será necessário alterar duas páginas. Login e Register. Como o ASP.NET Identity agora utiliza Razor Components é necessário adicionar apenas estes dois componentes.
Vá com o botão direito no projeto e selecione a opção Add > New Scaffolded Item ... > Identity > Botão Add
. Selecione as páginas:
- Account\Login
- Account\Register
- Account\Manage\SetPassword
- Account\ResetPassword
Na opção Data Context Class selecione a unica opção disponível ApplicationDbContext (SecurePassword.Data).
Em cada um dos arquivos na pasta Areas\Identity\Pages\Account
e Manage
adicione o seguinte trecho de código ao final:
Demo
Veja o resultado final. Com apenas algumas linhas de código.
Download
O código do projeto está disponível no meu GitHub
Conclusão
Ao longo destes 5 posts. Exaustivamente falamos sobre Autenticação e senhas. Então pense duas vezes antes de começar a criar um sistema de autenticação. Utilize soluções especializadas. Como Auth0, Okta.
Há um projeto Open Source no Github que também entrega um OAuth2, OpenId Connect e um painel de administração de usuários e do OAuth2. Desenvolvido com IdentityServer4 e ASP.NET Identity. Você pode conferir aqui.
São projetos que foram pensados e levado em contas questões de segurança.
Espero que todo esse conteúdo te ajude a entender um pouco mais sobre segurança e tudo que envolve esse mundo de senha.
Feedabck
Feedbacks são sempre bem vindos, deixe teu comentário, ou suas duvidas e vamos bater um papo!
Comments