Validação de senha para variações do nome de usuário

Não diretamente relacionado, mas motivado por Pwned Passwords Validator, já que temos analisado validação de senhas mais forte ultimamente.

O Discourse não parece bloquear uma senha como myusername123 ou 4myusername para o nome de usuário myusername.

Não encontrei nenhuma discussão anterior sobre esse tipo específico de senha fraca. Isso já foi considerado antes?

5 curtidas

Estou de acordo em adicionar uma verificação quando as pessoas escolherem uma senha, para que “a senha não deve conter o nome de usuário em minúsculas”. Parece razoável para mim.

Já verificamos se password = username, mas não sou muito fã de testes de substring, especialmente para nomes de usuário mais curtos. E se seu nome de usuário for “Ed” e sua senha for uma string aleatória que, por acaso, contiver “ed”..

3 curtidas

Usando uma pontuação de similaridade como a distância de Levenshtein, rejeitar se levenshtein(username, password) < 6? Ou até mesmo algo para detectar permutações também, como isso:

levenshtein(sort_by_chars(username), sort_by_chars(password)) < 6

Parece que isso cobriria os piores abusos, sem impedir que “Ed” se cadastre com uma senha longa e boa, e é fácil explicar com precisão: “seu nome de usuário e sua senha são muito semelhantes”. Não procurei casos de borda indesejados, mas não consigo pensar em nenhum no momento.

3 curtidas

Tweet relacionado de hoje:

5 curtidas

O outro lado da moeda de regras “cada vez mais” é que se torna mais fácil forçar senhas por força bruta.

Claramente, nenhuma senha deve ter a letra z repetida 10 vezes se tiver 15 caracteres ou menos.

Claramente, nenhuma senha deve conter a palavra “senha”. Se for menor que 12 caracteres.

Duas palavras de dicionário seguidas, claramente errado…

E assim por diante. Assim, o espaço de busca por senhas diminui.

Essa é uma toca de coelho; mudei de ideia desde ontem, depois de pensar sobre isso. Concordo com @codinghorror: não acho que precisemos fazer nada aqui.

3 curtidas

“É difícil criar boas regras, então não devemos criar regras”?

Esta é a segunda vez em dois dias que vejo membros de alto nível da equipe do Discourse espalhando equívocos graves sobre segurança. Acredito que há algumas questões gerais que vocês precisam repensar e espero que levem isso como um feedback construtivo.

Além disso, essa sugestão específica não surgiu do nada: recentemente, uma conta de usuário foi comprometida porque o nome de usuário era myusername e a senha tinha o formato myusername46.

É verdade que se tratava de um site ClassicPress (mesma estrutura de login do WordPress), o que o torna muito mais “alvo fácil” em termos de bots, etc. No entanto, isso é algo que os bots procuram.

Regras de senha não podem prevenir todos os tipos de senhas ruins, mas podem fazer muita diferença.

Tecnicamente, estamos seguindo as diretrizes do NIST 800-63-B:

Ao processar solicitações para estabelecer e alterar segredos memorizados, os verificadores DEVERÃO comparar os segredos prospectivos com uma lista que contenha valores conhecidos por serem comumente usados, esperados ou comprometidos. Por exemplo, a lista PODE incluir, mas não se limita a:

  • Senhas obtidas de corpora de violações anteriores.
  • Palavras de dicionário.
  • Caracteres repetitivos ou sequenciais (por exemplo, ‘aaaaaa’, ‘1234abcd’).
  • Palavras específicas do contexto, como o nome do serviço, o nome de usuário e seus derivados.

Eles usam explicitamente a palavra PODE, e não DEVE. Portanto, isso fica a nosso critério. Não há nenhuma recomendação sobre a distância de Levenshtein aqui. Talvez se o nome de usuário tiver mais de 6 caracteres, ele não deve ser incluído na senha — talvez pudéssemos adicionar uma verificação de entropia além da lista de 1 milhão de senhas. Não sei.

Acho que, se você estiver muito interessado em ter suas próprias regras aqui, execute um SSO e estabeleça as regras que desejar do seu lado. Ou desenvolva um plugin.

3 curtidas

Provavelmente é isso que vamos fazer. Ainda há mais coisas faltando aqui, mas as respostas até agora não me fazem pensar que valha a pena levantar o assunto.

Por favor, compartilhe o plugin que você criou com a comunidade aqui na categoria #plugin. Nem todos concordam com todas as decisões que tomamos; respeito totalmente a diversidade e as opções. Talvez outros se interessem por regras de senha mais rigorosas.

1 curtida