Pergunta

Eu posso entender que a imposição de um comprimento mínimo de senhas faz muito sentido (para poupar os usuários de si), mas a minha banco tem uma exigência de que as senhas são entre 6 e 8 caracteres, e eu comecei a pensar ...

  • Não seria esta apenas torná-lo mais fácil para ataques de força bruta? (Bad)
  • Será que isso significa que minha senha está sendo armazenado sem criptografia? (Bad)

Se alguém com (esperançosamente) alguns profissionais de segurança boa de TI que trabalham para eles estão impondo um comprimento senha max, devo pensar em fazer semelhante? Quais são os prós / contras deste?

Foi útil?

Solução

senhas são misturados a 32, 40, 128, qualquer comprimento. A única razão para um comprimento mínimo é impedir fácil de adivinhar senhas. Não há propósito para um comprimento máximo.

O obrigatória XKCD explicando por que você está fazendo o seu utilizador um desserviço se você impor um comprimento máximo:

O XKCD obrigatória

Outras dicas

Um comprimento máximo especificado em um campo de senha deve ser lido como um AVISO DE SEGURANÇA : Qualquer, o usuário consciente da segurança sensata deve assumir o pior e esperar que este site está armazenando sua senha literalmente (ou seja, não hash, como explicado por epochwolf).

Em que é esse o caso: (A) evitar o uso deste site, como a peste, se possível, [eles obviamente sabem nozes sobre a segurança] (B) se você deve usar o site, certifique-se sua senha é única - ao contrário de qualquer senha que você usa em outros lugares.

Se você está desenvolvendo um site que aceita senhas, não colocar um limite senha bobo, a menos que você quiser se asfaltada com o mesmo pincel.

[Internamente, é claro o seu código pode tratar apenas o primeiro 256/1028 / 2k / 4k (qualquer que seja) bytes como "significativa" para evitar esmaga em senhas de mamute.]

Permitindo a duração de senha completamente ilimitada tem um grande problema se você aceitar a senha de fontes não confiáveis.

O remetente pode tentar dar-lhe uma senha longa de tal forma que resulta em uma negação de serviço para outras pessoas. Por exemplo, se a senha é de 1GB de dados e você gasta todo o seu tempo aceito-o até ficar sem memória. Agora, suponha que esta pessoa lhe envia esta senha tantas vezes quanto você está disposto a aceitar. Se você não for cuidadoso sobre os outros parâmetros envolvidos isso poderia levar a um ataque de negação de serviço.

Definir o limite superior para algo como 256 caracteres parece excessivamente generoso pelos padrões de hoje.

Em primeiro lugar, não assuma que os bancos têm bons profissionais de segurança de TI que trabalham para eles. Plenty não .

Dito isto, o comprimento máximo da senha é inútil. É muitas vezes exige que os usuários para criar uma nova senha (argumentos sobre o valor de usar senhas diferentes em cada site de lado por enquanto), o que aumenta a probabilidade de eles vão apenas anotá-las. Ele também aumenta a susceptibilidade ao ataque, por qualquer vector de força bruta para engenharia social.

máxima limite de comprimento senha é agora desencorajado por folha OWASP Authentication fraude

https://www.owasp.org/index.php/Authentication_Cheat_Sheet

Citando o parágrafo inteiro:

Senhas mais longas fornecem uma combinação maior de caracteres e, consequentemente, tornar mais difícil para um atacante de adivinhar.

O comprimento mínimo das senhas devem ser aplicadas pelo aplicativo. Senhas mais curto do que 10 caracteres são considerados fracos ([1]). Enquanto a aplicação comprimento mínimo pode causar problemas com memorização de senhas entre alguns usuários, aplicações devem incentivá-los a passphrases set (frases ou combinação de palavras) que pode ser muito maior do que senhas típicas e ainda muito mais fácil de lembrar.

O comprimento máximo de senha não deve ser muito baixo, uma vez que irá impedir os utilizadores de criar frases secretas. comprimento máximo típica é de 128 caracteres. Passphrases mais curtas de 20 caracteres são geralmente considerados fracos se eles consistem apenas em casos Latina caracteres inferiores. Contagens de cada personagem !!

Certifique-se de que cada personagem o usuário digita é realmente incluídos na senha. Temos visto sistemas que cortar a senha em um comprimento mais curto do que o que o usuário fornecido (por exemplo, truncado no 15 caracteres quando entraram 20). Isso geralmente é tratado por definir o comprimento de campos de entrada de senha Tudo para ser exatamente o mesmo comprimento que a senha comprimento máximo. Isto é particularmente importante se a sua duração de senha máxima é curto, como 20-30 caracteres.

Uma das razões que eu posso imaginar por impor um comprimento máximo de senha é se o frontend deve fazer interface com muitos backends do sistema legado, um dos que se impõe um comprimento máximo de senha.

Outro processo de pensamento pode ser que se um usuário é forçado a ir com uma senha curta eles estão mais propensos a inventar rabiscos aleatórios do que um fácil de adivinhar (por seus amigos / família) catch-frase ou apelido. Esta abordagem é, naturalmente, só é eficaz se os Enforces frontend misturando números / letras e rejeita senhas que têm todas as palavras do dicionário, incluindo palavras escritas em l33t falar.

Uma das razões potencialmente válida para impor algum comprimento máximo de senha é que o processo de hash-lo (devido ao uso de uma função hash lento, como bcrypt) ocupa muito tempo; algo que poderia ser abusado para executar um ataque DoS contra o servidor.

Então, novamente, os servidores devem ser configurados para cair automaticamente solicitação manipuladores que levam muito tempo. Então, eu duvido que isso seria muito de um problema.

Eu acho que você está muito certo em ambos os pontos de bala. Se eles estão armazenando as senhas hash, como deveriam, então o comprimento da senha não afeta seu esquema DB qualquer. Ter uma duração de senha aberto lança em mais uma variável que um atacante de força bruta tem que conta para.

É difícil ver qualquer desculpa para limitar o tamanho da senha, além de design ruim.

A única vantagem que eu posso ver a um comprimento máximo de senha seria eliminar o risco de um ataque de buffer overflow causada por uma excessivamente longo senha, mas há muito melhores maneiras de lidar com essa situação.

O armazenamento é barato, por que limitar a duração de senha. Mesmo se você estiver criptografando a senha ao invés de apenas hashing que uma seqüência de 64 caracteres não vai demorar muito mais do que uma cadeia de 6 caracteres para criptografar.

As possibilidades são o sistema bancário está sobrepondo um sistema antigo para que eles só foram capazes de permitir que uma certa quantidade de espaço para a senha.

O meu banco faz isso também. É usado para permitir que qualquer senha, e eu tinha um de 20 caracteres. Um dia eu mudei, e eis que ele me deu um máximo de 8, e tinha cortar caracteres não alfanuméricos que estavam na minha senha antiga. não faz qualquer sentido para mim.

Todos os sistemas de back-end no banco trabalhou antes, quando eu estava usando minha senha 20 de char com não alfa-numéricos, de modo suporte legado não pode ter sido a razão. E mesmo que fosse, eles devem ainda permitir que você tenha senhas arbitrárias, e depois fazer um hash que se encaixa às exigências dos sistemas legados. Melhor ainda, eles devem corrigir os sistemas legados.

Uma solução de cartão inteligente não iria bem comigo. Já tenho muitos cartões como é ... Eu não preciso de outro chamariz.

Se você aceitar uma senha de tamanho arbitrário, então supõe-se que ele está ficando truncado para um comprimento cortina por motivos de desempenho antes que ele é hash. O problema com o truncamento é que, como seus aumentos de desempenho do servidor ao longo do tempo você não pode facilmente aumentar o comprimento antes truncagem como seu hash seria claramente diferente. Claro que você poderia ter um período de transição em que ambos os comprimentos são hash e marcada, mas isso usa mais recursos.

Ignorar as pessoas dizendo não para validar senhas longas. OWASP literalmente diz que 128 caracteres deve ser suficiente. Só para dar espaço fôlego suficiente você pode dar um pouco mais a dizer 300, 250, 500 se você sentir como ele.

https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Password_Length

Senha Comprimento senhas mais longas fornecem uma combinação maior de caracteres e, consequentemente, tornar mais difícil para um atacante adivinhar.

...

O comprimento máximo de senha não deve ser muito baixo, uma vez que irá evitar os usuários de criar frases secretas. comprimento máximo típica é de 128 caracteres . Passphrases menor do que 20 caracteres são geralmente considerado fraco, se eles só consistem em minúsculas caracteres latinos.

Deve haver um comprimento máximo? Este é um tema curioso em TI que, senhas mais longas são tipicamente mais difíceis de lembrar, e, portanto, mais propensos a ficar escrito (um grande não-não por razões óbvias). Mais senhas também tendem a ficar esquecido mais, que embora não necessariamente um risco de segurança, pode levar a dificuldades administrativas, perda de produtividade, etc. Administradores que acreditam que estas questões estão pressionando estão propensos a impor comprimentos máximos de senhas.

Eu, pessoalmente, acredito que sobre esta questão específica, a cada usuário sua própria. Se você acha que pode lembrar de uma senha de 40 caracteres, então tudo o mais poder para você!

Dito isso, porém, senhas estão rapidamente se tornando um modo ultrapassado de segurança, Smart Cards e autenticação de certificado ser muito difícil ou impossível a força bruta como você disse é um problema, e apenas uma chave pública precisa ser armazenado na extremidade do servidor com a chave privada no seu cartão / computador em todos os momentos.

Senhas mais longas, ou passam frases, são mais difíceis de quebrar, simplesmente com base no comprimento, e mais fácil de lembrar do que exigindo uma senha complexa.
Provavelmente melhor para ir para um bastante longo (10+) comprimento mínimo, restringindo o comprimento inútil.

Os sistemas legados (já mencionado) ou interface de sistemas fora do fornecedor pode exigir a tampa 8 caracteres. Também poderia ser uma tentativa equivocada de salvar os usuários de si mesmos. Limitando-o em que a moda vai resultar em muitos pssw0rd1, pssw0rd2, etc. senhas no sistema.

Uma das razões senhas não podem ser hash é o algoritmo de autenticação utilizado. Por exemplo, alguns digerir algoritmos requerem uma versão de texto simples da senha no servidor como o mecanismo de autenticação envolve tanto o cliente e o servidor executa os mesmos matemáticas sobre a senha entrada (que geralmente não irá produzir a mesma saída de cada vez que a palavra-passe é combinada com um 'uso único' gerado aleatoriamente, o que é compartilhada entre as duas máquinas).

Muitas vezes isso pode ser reforçada como o resumo pode ser parte calculado em alguns casos, mas nem sempre. A melhor rota é a senha a ser armazenados com criptografia reversível -. Isso significa então que as fontes de aplicativos precisam ser protegidos como eles vão conter a chave de criptografia

Digst auth está lá para permitir a autenticação através de canais de outra forma não-criptografados. Se estiver usando SSL ou algum outro criptografia total do canal, então não há necessidade de usar digerir Mecanismos de autenticação, ou seja, as senhas podem ser armazenadas hash em vez (como senhas podem ser enviadas texto simples sobre o fio com segurança (para um dado valor de seguro).

Tente não impor qualquer limitação a menos que necessário. Esteja avisado: ele pode e vai ser necessária em muitos casos diferentes. Lidar com sistemas legados é uma dessas razões. Certifique-se de testar o caso de muito longo senhas bem (pode o seu negócio sistema com 10MB longas senhas?). Você pode correr para negação de serviço (DoS) problemas porque as funções chave Defivation (KDF) que será utilizado (geralmente PBKDF2, bcrypt, Scrypt) levará para muito tempo e recursos. exemplo da vida real: http://arstechnica.com/security/2013/09/long-passwords-are-good-but-too-much-length-can-be-bad-for-security/

Apenas 8 de char longas senhas soar simplesmente errado. Se deve haver um limite, então pelo menos 20 char é melhor idéia.

Eu acho que o único limite que deve ser aplicada é como um 2000 letra limite, ou qualquer outra coisa insainly alta, mas apenas para limitar o tamanho do banco de dados, se isso é um problema

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top