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 sms ou 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.

Working on new project on Crumble’s Office in Prishtina, Kosovo.

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.

1
2
3
4

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!